From 57cb83e503841b7f41ed881053b7f7a21652f1a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20Paz=20Rodr=C3=ADguez?= Date: Wed, 6 Mar 2024 23:29:44 +0100 Subject: [PATCH] feat(vsa): change folder structure to add vertical slice architecture closes #413 --- .eslintrc.js | 2 +- jest.config.js | 2 +- package-lock.json | 674 +++++++++--------- package.json | 42 +- .../rest/config/app.config.ts | 2 +- .../rest/config/index.ts | 0 .../authenticated-user.api-response.ts | 4 +- .../authentication.controller.ts | 34 +- ...successfully-authenticated.api-response.ts | 2 +- .../health/health-status.api-response.ts | 4 +- .../controllers/health/health.controller.ts | 8 +- .../controllers/users/user.api-response.ts | 4 +- .../rest/controllers/users/user.controller.ts | 14 +- .../rest/exceptions/api.exception.ts | 0 .../rest/exceptions/bad-request.exception.ts | 0 .../rest/exceptions/exception.api-response.ts | 2 +- .../rest/exceptions/forbidden.exception.ts | 0 .../rest/exceptions/index.ts | 0 .../internal-server-error.exception.ts | 0 .../no-credentials-provided.exception.ts | 0 .../exceptions/path-not-found.exception.ts | 0 .../resource-not-found.exception.ts | 0 .../rest/exceptions/unauthorized.exception.ts | 0 .../rest/filters/error-handler.filter.ts | 4 +- .../rest/filters/index.ts | 0 .../rest/filters/not-found.filter.ts | 2 +- .../middlewares/authentication.middleware.ts | 20 +- .../middlewares/error-handler.middleware.ts | 6 +- .../rest/middlewares/index.ts | 0 .../rest/middlewares/logger.middleware.ts | 4 +- .../rest/middlewares/metadata.middleware.ts | 14 +- .../rest/middlewares/not-found.middleware.ts | 2 +- src/{presentation => contract}/rest/server.ts | 16 +- .../rest/shared/request.utils.ts | 4 +- .../rest/shared/response.utils.ts | 8 +- .../rest/shared/rest-controller.decorator.ts | 0 .../rest/shared/with-auth.decorator.ts | 4 +- src/healthcheck.ts | 2 +- src/index.ts | 6 +- .../check-health-status.request.ts | 4 +- .../check-health-status.usecase.ts | 4 +- .../application}/health-status.response.ts | 2 +- .../health/application}/index.ts | 0 .../health/domain}/health-status.ts | 2 +- .../health => modules/health/domain}/index.ts | 0 src/modules/health/infrastructure/.gitkeep | 0 .../application}/end/end-session.request.ts | 6 +- .../application}/end/end-session.usecase.ts | 8 +- .../sessions/application}/end/index.ts | 0 .../sessions/application}/index.ts | 0 .../sessions/application}/refresh/index.ts | 0 .../refresh/refresh-session.request.ts | 6 +- .../refresh/refresh-session.usecase.ts | 10 +- .../sessions/application}/session.response.ts | 4 +- .../sessions/application}/start/index.ts | 0 .../start/start-session.request.ts | 6 +- .../start/start-session.usecase.ts | 12 +- .../sessions/application}/validate/index.ts | 0 .../validate/validate-session.request.ts | 6 +- .../validate/validate-session.usecase.ts | 8 +- .../validate/validated-session.response.ts | 6 +- .../sessions/domain}/index.ts | 0 .../domain}/invalid-session.exception.ts | 2 +- .../sessions/domain}/session-expires-at.ts | 2 +- .../sessions/domain}/session-id.ts | 2 +- .../domain}/session-refresh-token-hash.ts | 4 +- .../sessions/domain}/session-revoked-at.ts | 2 +- .../sessions/domain}/session-revoked-by.ts | 2 +- .../domain}/session-revoked-reason.ts | 2 +- .../sessions/domain}/session-user-data.ts | 2 +- .../sessions/domain}/session-user-uuid.ts | 2 +- .../sessions/domain}/session-uuid.ts | 2 +- .../sessions/domain}/session.repository.ts | 2 +- .../sessions/domain}/session.ts | 4 +- .../sessions/domain}/tokens/access-token.ts | 4 +- .../sessions/domain}/tokens/index.ts | 0 .../sessions/domain}/tokens/refresh-token.ts | 4 +- .../domain}/tokens/token-expires-at.ts | 2 +- .../tokens/token-provider.domain-service.ts | 6 +- .../sessions/domain}/tokens/token.ts | 4 +- .../sessions/infrastructure}/index.ts | 0 .../infrastructure}/prisma-session.mapper.ts | 12 +- .../prisma-session.repository.ts | 16 +- .../infrastructure}/redis-session.mapper.ts | 10 +- .../redis-session.repository.ts | 18 +- .../sessions/infrastructure}/redis-session.ts | 2 +- .../jwt-token-provider.domain-service.ts | 16 +- .../authenticate-user.request.ts | 6 +- .../authenticate-user.usecase.ts | 10 +- .../application}/authentication/index.ts | 0 .../application}/find/find-user.request.ts | 6 +- .../application}/find/find-user.usecase.ts | 8 +- .../users/application}/find/index.ts | 0 .../users/application}/index.ts | 0 .../users/application}/search-all/index.ts | 0 .../search-all/search-all-users.request.ts | 4 +- .../search-all/search-all-users.usecase.ts | 6 +- .../users/application}/user.response.ts | 2 +- .../users/domain}/authentication/index.ts | 0 ...id-authentication-credentials.exception.ts | 2 +- ...valid-authentication-username.exception.ts | 2 +- .../users => modules/users/domain}/index.ts | 0 .../users/domain}/user-address.ts | 2 +- .../users/domain}/user-birth-date.ts | 2 +- .../users/domain}/user-email.ts | 2 +- .../users/domain}/user-gender.ts | 4 +- .../users => modules/users/domain}/user-id.ts | 2 +- .../users/domain}/user-name.ts | 2 +- .../domain}/user-not-exists.exception.ts | 2 +- .../users/domain}/user-password-hash.ts | 4 +- .../users/domain}/user-phone-number.ts | 2 +- .../users/domain}/user-profile-picture.ts | 2 +- .../users/domain}/user-role.ts | 4 +- .../users/domain}/user-username.ts | 2 +- .../users/domain}/user-uuid.ts | 2 +- .../users/domain}/user.repository.ts | 4 +- .../users => modules/users/domain}/user.ts | 4 +- .../users/infrastructure}/index.ts | 0 .../infrastructure}/prisma-user.mapper.ts | 4 +- .../infrastructure}/prisma-user.repository.ts | 12 +- .../application}/base-usecase.ts | 2 +- .../shared => shared/application}/index.ts | 0 .../application}/usecase.decorator.ts | 4 +- .../application}/usecase.request.ts | 4 +- .../domain}/entities/domain-entity.ts | 0 .../domain}/entities/index.ts | 0 .../domain}/entities/triggered-by/index.ts | 0 .../triggered-by/triggered-by-anonymous.ts | 0 .../triggered-by/triggered-by-system.ts | 0 .../triggered-by/triggered-by-user.ts | 0 .../entities/triggered-by/triggered-by.ts | 2 +- .../domain}/exceptions/domain.exception.ts | 0 .../domain}/exceptions/index.ts | 0 .../exceptions/invalid-parameter.exception.ts | 0 src/{domain/shared => shared/domain}/index.ts | 0 .../shared => shared/domain}/logger.ts | 4 +- .../services/domain-service.decorator.ts | 2 +- .../domain}/services/hasher.domain-service.ts | 0 .../domain}/services/index.ts | 0 .../domain}/services/logger.domain-service.ts | 0 src/{domain/shared => shared/domain}/types.ts | 0 .../value-object/composite-value-object.ts | 0 .../domain}/value-object/date-value-object.ts | 0 .../domain}/value-object/enum-value-object.ts | 0 .../domain}/value-object/index.ts | 0 .../value-object/number-value-object.ts | 0 .../value-object/string-value-object.ts | 0 .../domain}/value-object/uuid.ts | 2 +- .../domain}/value-object/value-object.ts | 2 +- .../authentication/authentication-utils.ts | 2 +- .../authentication/authentication.ts | 2 +- .../infrastructure}/authentication/index.ts | 0 .../infrastructure}/bootstrap.ts | 2 +- .../infrastructure}/cache/cache.ts | 2 +- .../infrastructure}/config/environment.ts | 0 .../infrastructure}/config/index.ts | 0 .../config/infrastructure.config.ts | 0 .../di/dependency-injection.ts | 2 +- .../shared => shared/infrastructure}/index.ts | 0 .../infrastructure-service.decorator.ts | 2 +- .../infrastructure}/logger/pino-logger.ts | 6 +- .../logger/pino-rotate-file.transport.ts | 0 .../persistence/base-repository.ts | 2 +- .../infrastructure}/persistence/index.ts | 0 .../prisma/prisma-base-repository.ts | 2 +- .../persistence/prisma/schema.prisma | 0 .../persistence/prisma/seed.ts | 0 .../redis/redis-base-repository.ts | 2 +- .../persistence/repository.decorator.ts | 2 +- src/types/global.d.ts | 2 - test/e2e/shared/test-server.ts | 4 +- .../health/check-health-status.int.ts | 6 +- test/jest.setup.ts | 2 + .../health-status-response.unit.ts | 6 +- tsconfig.json | 12 +- 175 files changed, 637 insertions(+), 637 deletions(-) rename src/{presentation => contract}/rest/config/app.config.ts (91%) rename src/{presentation => contract}/rest/config/index.ts (100%) rename src/{presentation => contract}/rest/controllers/authentication/authenticated-user.api-response.ts (93%) rename src/{presentation => contract}/rest/controllers/authentication/authentication.controller.ts (84%) rename src/{presentation => contract}/rest/controllers/authentication/user-successfully-authenticated.api-response.ts (96%) rename src/{presentation => contract}/rest/controllers/health/health-status.api-response.ts (83%) rename src/{presentation => contract}/rest/controllers/health/health.controller.ts (83%) rename src/{presentation => contract}/rest/controllers/users/user.api-response.ts (94%) rename src/{presentation => contract}/rest/controllers/users/user.controller.ts (78%) rename src/{presentation => contract}/rest/exceptions/api.exception.ts (100%) rename src/{presentation => contract}/rest/exceptions/bad-request.exception.ts (100%) rename src/{presentation => contract}/rest/exceptions/exception.api-response.ts (95%) rename src/{presentation => contract}/rest/exceptions/forbidden.exception.ts (100%) rename src/{presentation => contract}/rest/exceptions/index.ts (100%) rename src/{presentation => contract}/rest/exceptions/internal-server-error.exception.ts (100%) rename src/{presentation => contract}/rest/exceptions/no-credentials-provided.exception.ts (100%) rename src/{presentation => contract}/rest/exceptions/path-not-found.exception.ts (100%) rename src/{presentation => contract}/rest/exceptions/resource-not-found.exception.ts (100%) rename src/{presentation => contract}/rest/exceptions/unauthorized.exception.ts (100%) rename src/{presentation => contract}/rest/filters/error-handler.filter.ts (97%) rename src/{presentation => contract}/rest/filters/index.ts (100%) rename src/{presentation => contract}/rest/filters/not-found.filter.ts (85%) rename src/{presentation => contract}/rest/middlewares/authentication.middleware.ts (82%) rename src/{presentation => contract}/rest/middlewares/error-handler.middleware.ts (94%) rename src/{presentation => contract}/rest/middlewares/index.ts (100%) rename src/{presentation => contract}/rest/middlewares/logger.middleware.ts (78%) rename src/{presentation => contract}/rest/middlewares/metadata.middleware.ts (77%) rename src/{presentation => contract}/rest/middlewares/not-found.middleware.ts (83%) rename src/{presentation => contract}/rest/server.ts (92%) rename src/{presentation => contract}/rest/shared/request.utils.ts (89%) rename src/{presentation => contract}/rest/shared/response.utils.ts (83%) rename src/{presentation => contract}/rest/shared/rest-controller.decorator.ts (100%) rename src/{presentation => contract}/rest/shared/with-auth.decorator.ts (79%) rename src/{application/health => modules/health/application}/check-health-status.request.ts (80%) rename src/{application/health => modules/health/application}/check-health-status.usecase.ts (83%) rename src/{application/health => modules/health/application}/health-status.response.ts (92%) rename src/{application/health => modules/health/application}/index.ts (100%) rename src/{domain/health => modules/health/domain}/health-status.ts (89%) rename src/{domain/health => modules/health/domain}/index.ts (100%) create mode 100644 src/modules/health/infrastructure/.gitkeep rename src/{application/sessions => modules/sessions/application}/end/end-session.request.ts (80%) rename src/{application/sessions => modules/sessions/application}/end/end-session.usecase.ts (88%) rename src/{application/sessions => modules/sessions/application}/end/index.ts (100%) rename src/{application/sessions => modules/sessions/application}/index.ts (100%) rename src/{application/sessions => modules/sessions/application}/refresh/index.ts (100%) rename src/{application/sessions => modules/sessions/application}/refresh/refresh-session.request.ts (76%) rename src/{application/sessions => modules/sessions/application}/refresh/refresh-session.usecase.ts (89%) rename src/{application/sessions => modules/sessions/application}/session.response.ts (79%) rename src/{application/sessions => modules/sessions/application}/start/index.ts (100%) rename src/{application/sessions => modules/sessions/application}/start/start-session.request.ts (75%) rename src/{application/sessions => modules/sessions/application}/start/start-session.usecase.ts (87%) rename src/{application/sessions => modules/sessions/application}/validate/index.ts (100%) rename src/{application/sessions => modules/sessions/application}/validate/validate-session.request.ts (81%) rename src/{application/sessions => modules/sessions/application}/validate/validate-session.usecase.ts (92%) rename src/{application/sessions => modules/sessions/application}/validate/validated-session.response.ts (85%) rename src/{domain/sessions => modules/sessions/domain}/index.ts (100%) rename src/{domain/sessions => modules/sessions/domain}/invalid-session.exception.ts (73%) rename src/{domain/sessions => modules/sessions/domain}/session-expires-at.ts (56%) rename src/{domain/sessions => modules/sessions/domain}/session-id.ts (52%) rename src/{domain/sessions => modules/sessions/domain}/session-refresh-token-hash.ts (80%) rename src/{domain/sessions => modules/sessions/domain}/session-revoked-at.ts (56%) rename src/{domain/sessions => modules/sessions/domain}/session-revoked-by.ts (56%) rename src/{domain/sessions => modules/sessions/domain}/session-revoked-reason.ts (60%) rename src/{domain/sessions => modules/sessions/domain}/session-user-data.ts (84%) rename src/{domain/sessions => modules/sessions/domain}/session-user-uuid.ts (56%) rename src/{domain/sessions => modules/sessions/domain}/session-uuid.ts (53%) rename src/{domain/sessions => modules/sessions/domain}/session.repository.ts (90%) rename src/{domain/sessions => modules/sessions/domain}/session.ts (96%) rename src/{domain/sessions => modules/sessions/domain}/tokens/access-token.ts (83%) rename src/{domain/sessions => modules/sessions/domain}/tokens/index.ts (100%) rename src/{domain/sessions => modules/sessions/domain}/tokens/refresh-token.ts (83%) rename src/{domain/sessions => modules/sessions/domain}/tokens/token-expires-at.ts (55%) rename src/{domain/sessions => modules/sessions/domain}/tokens/token-provider.domain-service.ts (78%) rename src/{domain/sessions => modules/sessions/domain}/tokens/token.ts (91%) rename src/{infrastructure/sessions => modules/sessions/infrastructure}/index.ts (100%) rename src/{infrastructure/sessions => modules/sessions/infrastructure}/prisma-session.mapper.ts (83%) rename src/{infrastructure/sessions => modules/sessions/infrastructure}/prisma-session.repository.ts (77%) rename src/{infrastructure/sessions => modules/sessions/infrastructure}/redis-session.mapper.ts (83%) rename src/{infrastructure/sessions => modules/sessions/infrastructure}/redis-session.repository.ts (74%) rename src/{infrastructure/sessions => modules/sessions/infrastructure}/redis-session.ts (85%) rename src/{infrastructure/sessions => modules/sessions/infrastructure}/tokens/jwt-token-provider.domain-service.ts (88%) rename src/{application/users => modules/users/application}/authentication/authenticate-user.request.ts (81%) rename src/{application/users => modules/users/application}/authentication/authenticate-user.usecase.ts (81%) rename src/{application/users => modules/users/application}/authentication/index.ts (100%) rename src/{application/users => modules/users/application}/find/find-user.request.ts (73%) rename src/{application/users => modules/users/application}/find/find-user.usecase.ts (80%) rename src/{application/users => modules/users/application}/find/index.ts (100%) rename src/{application/users => modules/users/application}/index.ts (100%) rename src/{application/users => modules/users/application}/search-all/index.ts (100%) rename src/{application/users => modules/users/application}/search-all/search-all-users.request.ts (71%) rename src/{application/users => modules/users/application}/search-all/search-all-users.usecase.ts (75%) rename src/{application/users => modules/users/application}/user.response.ts (97%) rename src/{domain/users => modules/users/domain}/authentication/index.ts (100%) rename src/{domain/users => modules/users/domain}/authentication/invalid-authentication-credentials.exception.ts (81%) rename src/{domain/users => modules/users/domain}/authentication/invalid-authentication-username.exception.ts (81%) rename src/{domain/users => modules/users/domain}/index.ts (100%) rename src/{domain/users => modules/users/domain}/user-address.ts (53%) rename src/{domain/users => modules/users/domain}/user-birth-date.ts (54%) rename src/{domain/users => modules/users/domain}/user-email.ts (52%) rename src/{domain/users => modules/users/domain}/user-gender.ts (87%) rename src/{domain/users => modules/users/domain}/user-id.ts (50%) rename src/{domain/users => modules/users/domain}/user-name.ts (80%) rename src/{domain/users => modules/users/domain}/user-not-exists.exception.ts (76%) rename src/{domain/users => modules/users/domain}/user-password-hash.ts (78%) rename src/{domain/users => modules/users/domain}/user-phone-number.ts (56%) rename src/{domain/users => modules/users/domain}/user-profile-picture.ts (57%) rename src/{domain/users => modules/users/domain}/user-role.ts (86%) rename src/{domain/users => modules/users/domain}/user-username.ts (54%) rename src/{domain/users => modules/users/domain}/user-uuid.ts (50%) rename src/{domain/users => modules/users/domain}/user.repository.ts (84%) rename src/{domain/users => modules/users/domain}/user.ts (97%) rename src/{infrastructure/users => modules/users/infrastructure}/index.ts (100%) rename src/{infrastructure/users => modules/users/infrastructure}/prisma-user.mapper.ts (95%) rename src/{infrastructure/users => modules/users/infrastructure}/prisma-user.repository.ts (84%) rename src/{application/shared => shared/application}/base-usecase.ts (95%) rename src/{application/shared => shared/application}/index.ts (100%) rename src/{application/shared => shared/application}/usecase.decorator.ts (91%) rename src/{application/shared => shared/application}/usecase.request.ts (82%) rename src/{domain/shared => shared/domain}/entities/domain-entity.ts (100%) rename src/{domain/shared => shared/domain}/entities/index.ts (100%) rename src/{domain/shared => shared/domain}/entities/triggered-by/index.ts (100%) rename src/{domain/shared => shared/domain}/entities/triggered-by/triggered-by-anonymous.ts (100%) rename src/{domain/shared => shared/domain}/entities/triggered-by/triggered-by-system.ts (100%) rename src/{domain/shared => shared/domain}/entities/triggered-by/triggered-by-user.ts (100%) rename src/{domain/shared => shared/domain}/entities/triggered-by/triggered-by.ts (86%) rename src/{domain/shared => shared/domain}/exceptions/domain.exception.ts (100%) rename src/{domain/shared => shared/domain}/exceptions/index.ts (100%) rename src/{domain/shared => shared/domain}/exceptions/invalid-parameter.exception.ts (100%) rename src/{domain/shared => shared/domain}/index.ts (100%) rename src/{domain/shared => shared/domain}/logger.ts (95%) rename src/{domain/shared => shared/domain}/services/domain-service.decorator.ts (96%) rename src/{domain/shared => shared/domain}/services/hasher.domain-service.ts (100%) rename src/{domain/shared => shared/domain}/services/index.ts (100%) rename src/{domain/shared => shared/domain}/services/logger.domain-service.ts (100%) rename src/{domain/shared => shared/domain}/types.ts (100%) rename src/{domain/shared => shared/domain}/value-object/composite-value-object.ts (100%) rename src/{domain/shared => shared/domain}/value-object/date-value-object.ts (100%) rename src/{domain/shared => shared/domain}/value-object/enum-value-object.ts (100%) rename src/{domain/shared => shared/domain}/value-object/index.ts (100%) rename src/{domain/shared => shared/domain}/value-object/number-value-object.ts (100%) rename src/{domain/shared => shared/domain}/value-object/string-value-object.ts (100%) rename src/{domain/shared => shared/domain}/value-object/uuid.ts (89%) rename src/{domain/shared => shared/domain}/value-object/value-object.ts (91%) rename src/{infrastructure/shared => shared/infrastructure}/authentication/authentication-utils.ts (91%) rename src/{infrastructure/shared => shared/infrastructure}/authentication/authentication.ts (94%) rename src/{infrastructure/shared => shared/infrastructure}/authentication/index.ts (100%) rename src/{infrastructure/shared => shared/infrastructure}/bootstrap.ts (96%) rename src/{infrastructure/shared => shared/infrastructure}/cache/cache.ts (93%) rename src/{infrastructure/shared => shared/infrastructure}/config/environment.ts (100%) rename src/{infrastructure/shared => shared/infrastructure}/config/index.ts (100%) rename src/{infrastructure/shared => shared/infrastructure}/config/infrastructure.config.ts (100%) rename src/{infrastructure/shared => shared/infrastructure}/di/dependency-injection.ts (97%) rename src/{infrastructure/shared => shared/infrastructure}/index.ts (100%) rename src/{infrastructure/shared => shared/infrastructure}/infrastructure-service.decorator.ts (95%) rename src/{infrastructure/shared => shared/infrastructure}/logger/pino-logger.ts (97%) rename src/{infrastructure/shared => shared/infrastructure}/logger/pino-rotate-file.transport.ts (100%) rename src/{infrastructure/shared => shared/infrastructure}/persistence/base-repository.ts (94%) rename src/{infrastructure/shared => shared/infrastructure}/persistence/index.ts (100%) rename src/{infrastructure/shared => shared/infrastructure}/persistence/prisma/prisma-base-repository.ts (62%) rename src/{infrastructure/shared => shared/infrastructure}/persistence/prisma/schema.prisma (100%) rename src/{infrastructure/shared => shared/infrastructure}/persistence/prisma/seed.ts (100%) rename src/{infrastructure/shared => shared/infrastructure}/persistence/redis/redis-base-repository.ts (80%) rename src/{infrastructure/shared => shared/infrastructure}/persistence/repository.decorator.ts (94%) delete mode 100644 src/types/global.d.ts diff --git a/.eslintrc.js b/.eslintrc.js index 1dda0c6..2bfa370 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -246,7 +246,7 @@ module.exports = { }, overrides: [ { - files: ['src/!(presentation|types)/**/*.ts'], + files: ['src/!(contract|types)/**/*.ts'], rules: { 'hexagonal-architecture/enforce': ['error'] } diff --git a/jest.config.js b/jest.config.js index e0bacf3..b031030 100644 --- a/jest.config.js +++ b/jest.config.js @@ -30,7 +30,7 @@ module.exports = { /* Bootstrap settings */ // Set initial config and enable jest-extended features - setupFilesAfterEnv: ['/test/jest.setup.ts', 'jest-extended/all'], + setupFilesAfterEnv: ['/test/jest.setup.ts'], /* Global test settings */ // Automatically clear mock calls and instances between every test diff --git a/package-lock.json b/package-lock.json index 1eb8614..94da3e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,20 +11,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", @@ -81,18 +81,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", @@ -106,7 +106,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", @@ -145,7 +145,7 @@ "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": { @@ -1500,9 +1500,9 @@ } }, "node_modules/@cspell/cspell-bundled-dicts": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.5.0.tgz", - "integrity": "sha512-bwiu+D3UZlLn4buaehtkn8BuVEMtJcmfudci5/NmbuSwS1ayzl17T76D4R2e1kalad0cR+yYMrd+eshMx3loaw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.6.0.tgz", + "integrity": "sha512-hRVvir4G4276Kz/Cru34AJg1FObIw5MrzezAwHkD3obNMwZkof8aX3MEN6AzWusJSVG2ZxZxZAEnYbgqvGr2Fg==", "dev": true, "dependencies": { "@cspell/dict-ada": "^4.0.2", @@ -1559,30 +1559,30 @@ } }, "node_modules/@cspell/cspell-json-reporter": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.5.0.tgz", - "integrity": "sha512-9oQWdQYZP+z3GHyKj0yrfDEOd3oVAkPLxfBrELdk1+igFl63jSYz3TyH0/x07yhEQtjdb2K7Vem58mP1mXQlUg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.6.0.tgz", + "integrity": "sha512-fPpE4a3zpdfwgTyfLgCmxZn4owkZ4IP6A/oL4XLW22IxW5xBIbXEveOSY+uiWAnVfEnqfrMNRLAGj7JoXnJ1Vg==", "dev": true, "dependencies": { - "@cspell/cspell-types": "8.5.0" + "@cspell/cspell-types": "8.6.0" }, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-pipe": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.5.0.tgz", - "integrity": "sha512-PDg6TgH4COs/v5dq+Isfxzk8omuJ86bZBR9UCuK2zwn5EsGouAPsdcFoNLcEdDkjKLObGzM0o9XSj0/TdaOmIQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.6.0.tgz", + "integrity": "sha512-gbAZksz38OHaN8s4fOmmgtgQfie1K8dRGlo9z/uxSx5FIELV48GWTbHn9t1TY2yBXBwJ7+4NF2+r624rtlPoHQ==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-resolver": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.5.0.tgz", - "integrity": "sha512-zv1lk21OneXuAF4wWe1eEw9zTMJCRUQifslM3IuzfcpahttgjLSfCiFv0x58YqCwtY7hD4M+vwXHmxV5p1Q/5g==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.6.0.tgz", + "integrity": "sha512-ARwO6TWKy8fLHNhC/ls5Wo/AK86E1oLVChwWtHdq7eVyEUIykQaXGLqoRThkIT2jyLfGDrhSvaU+yqcXVLE48Q==", "dev": true, "dependencies": { "global-directory": "^4.0.1" @@ -1592,18 +1592,18 @@ } }, "node_modules/@cspell/cspell-service-bus": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.5.0.tgz", - "integrity": "sha512-GnCK2jSWflvvHUurwCxVxJpupr3G1xAUeUNG1R3+sFRF51/kZ2ZtjJxUOby1a3lyHLBte4o6N3GbqxFFvh27nw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.6.0.tgz", + "integrity": "sha512-veCGlhlNGmYMgzX/rMiDp8j7ndLxFHIZq3h6DNlIsIoSjP1v5Rk6UcCwEoWYexwKmNXo7c2VooB0GM9LSBcPAQ==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-types": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.5.0.tgz", - "integrity": "sha512-2C7BFF9TzQsA0972/TriDRtwD5X1UUuSNWZ/NCpWzgZAw9JXmTIXj6D5QQWq2fcQ2KzcKaEeL6TanOl2iZfxlA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.6.0.tgz", + "integrity": "sha512-+CU/nuFOpswJAA3IS2TcKGskfM/o/4aNG1IMUVaOEQi1Sc5qZQ4Wj1qDIWJArSHFYW1Q4XFa4U8K1jnVHkAhZQ==", "dev": true, "engines": { "node": ">=18" @@ -1913,9 +1913,9 @@ "dev": true }, "node_modules/@cspell/dynamic-import": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.5.0.tgz", - "integrity": "sha512-IBrPx+Eo1yZF43oY4Iy5ESGsVkhHrfbYNcOAwfE3IJm2lbuWkR1aWIuWA/b69O88e/G0dEOFAlPfztrZVDG/Qw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.6.0.tgz", + "integrity": "sha512-yDJZ/uXCpZcAkXwaWa0JcCZHZFxnF3qtiFiq2WG5cEw8tiJiNdawjSCd8/D35dT3QFNaInMP+H3sOf68dNueew==", "dev": true, "dependencies": { "import-meta-resolve": "^4.0.0" @@ -1925,9 +1925,9 @@ } }, "node_modules/@cspell/strong-weak-map": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.5.0.tgz", - "integrity": "sha512-9pmhmYJVOUtO4G3mtSI0qjgxGQsz6rbFjm5dewolIEK+8rha3rcrlBqXy/h6RDgLVuBfA7kEcBZQ70wzEwETwA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.6.0.tgz", + "integrity": "sha512-QenBOdIT1zRa0kF3Z1mwObcvmdhxn+rzQDdmkxwSyRB/9KsNnib6XXTUo8P+Z/ZKXOYbP9Wmf4FX+vKd3yVX0Q==", "dev": true, "engines": { "node": ">=18" @@ -3597,19 +3597,19 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" }, "node_modules/@tsed/ajv": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/ajv/-/ajv-7.62.2.tgz", - "integrity": "sha512-vhcVxrrl/C3u705WBERAY2l0t+blTYJHNtk55kwJAB9yCTH1r0Nb8I9G0twSxaeuCte6df5FwM48tXkCIJiT+g==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/ajv/-/ajv-7.62.3.tgz", + "integrity": "sha512-pWE47ZjeSFQouyhsxr1m2HqPQ0eu3o9TPloX5sCcV1Q96yjeZhJGOJu+PztRbZc+tnUl45ZLXIN0b+C8Rp95Hg==", "dependencies": { "ajv-errors": "3.0.0", "ajv-formats": "2.1.1", "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2", - "@tsed/di": "7.62.2", - "@tsed/exceptions": "7.62.2", - "@tsed/schema": "7.62.2", + "@tsed/core": "7.62.3", + "@tsed/di": "7.62.3", + "@tsed/exceptions": "7.62.3", + "@tsed/schema": "7.62.3", "ajv": ">=8.9.0", "ajv-errors": ">=3.0.0" }, @@ -3645,9 +3645,9 @@ "dev": true }, "node_modules/@tsed/common": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/common/-/common-7.62.2.tgz", - "integrity": "sha512-zS3Wj8z2qV6msugEsrANmvIP9eLOhBSCCb5kjHsUMaVWJIWAoyQtMDQKpcUzr4IE1KXo8M+3yTcGD9qtEfTk7w==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/common/-/common-7.62.3.tgz", + "integrity": "sha512-R1LzawkoajnoMGI/tyTfWQqIsKW+eIm5X3V3BuWjdnMi11xOul+4jDEwS/k6zTYN+5PfjJ541W2Z08wwmE9kEQ==", "funding": [ { "type": "github", @@ -3659,20 +3659,20 @@ } ], "dependencies": { - "@tsed/core": "7.62.2", - "@tsed/di": "7.62.2", - "@tsed/exceptions": "7.62.2", - "@tsed/json-mapper": "7.62.2", + "@tsed/core": "7.62.3", + "@tsed/di": "7.62.3", + "@tsed/exceptions": "7.62.3", + "@tsed/json-mapper": "7.62.3", "@tsed/logger": ">=6.2.2", "@tsed/logger-file": ">=6.2.2", - "@tsed/platform-exceptions": "7.62.2", - "@tsed/platform-log-middleware": "7.62.2", - "@tsed/platform-middlewares": "7.62.2", - "@tsed/platform-params": "7.62.2", - "@tsed/platform-response-filter": "7.62.2", - "@tsed/platform-router": "7.62.2", - "@tsed/platform-views": "7.62.2", - "@tsed/schema": "7.62.2", + "@tsed/platform-exceptions": "7.62.3", + "@tsed/platform-log-middleware": "7.62.3", + "@tsed/platform-middlewares": "7.62.3", + "@tsed/platform-params": "7.62.3", + "@tsed/platform-response-filter": "7.62.3", + "@tsed/platform-router": "7.62.3", + "@tsed/platform-views": "7.62.3", + "@tsed/schema": "7.62.3", "@types/json-schema": "7.0.11", "accepts": "^1.3.8", "tslib": "2.6.1", @@ -3700,16 +3700,16 @@ } }, "node_modules/@tsed/components-scan": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/components-scan/-/components-scan-7.62.2.tgz", - "integrity": "sha512-mNRTWF2NQhozs12x/MMS32cOnqqF+c9nJOwgpi6toycS1uxnNctRQ81tvNaJibP7YTMIAtAqU9j3Za3VVxa7qA==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/components-scan/-/components-scan-7.62.3.tgz", + "integrity": "sha512-gfbyQpv9RbCEbcEDQ0H2D3ZQ9MKlbIYSB4cNomYxvlHSWQGMSW7lEoT13wKKtY3/JUB3ooWyI7OI8cQPpSjllw==", "dependencies": { - "@tsed/normalize-path": "7.62.2", + "@tsed/normalize-path": "7.62.3", "globby": "11.0.3", "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2" + "@tsed/core": "7.62.3" }, "peerDependenciesMeta": { "@tsed/core": { @@ -3718,9 +3718,9 @@ } }, "node_modules/@tsed/core": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/core/-/core-7.62.2.tgz", - "integrity": "sha512-S4KersN4jBBLV/T2aGAuaVXUT96GiXv8dgeJuBArroXbV0wDtUrjKEQWfw8h+F9tieRlRGhr5c9bJuRzmiZBfA==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/core/-/core-7.62.3.tgz", + "integrity": "sha512-ZhuPpT7lwr9xdGnbOevcbth6a3vuTnsVWuuIc7vOPrQvrqMOGu6ke3SL//as5gSJ9rLKxll/52bdqMJPqCYZZA==", "dependencies": { "reflect-metadata": "^0.1.13", "tslib": "2.6.1" @@ -3732,16 +3732,16 @@ "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==" }, "node_modules/@tsed/di": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/di/-/di-7.62.2.tgz", - "integrity": "sha512-xfLomnG8Fmf5EUA/a/5yEiWidpHOOIvbTCU42pbL5f+n4eUCAb1pGGdIgKxAy+EkwpBaq2wOumGIFR6pgTEahw==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/di/-/di-7.62.3.tgz", + "integrity": "sha512-IMP9egjtAU0VWSjfbBeLZBwmjfwHvrA2dZqb/0LvU4wfGKoIqf3s2t/YuOmQZvDRMytNFLGHNkUclrPz2XKfsg==", "dependencies": { "tslib": "2.6.2" }, "peerDependencies": { - "@tsed/core": "7.62.2", + "@tsed/core": "7.62.3", "@tsed/logger": ">=6.2.2", - "@tsed/schema": "7.62.2" + "@tsed/schema": "7.62.3" }, "peerDependenciesMeta": { "@tsed/core": { @@ -3761,50 +3761,50 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@tsed/engines": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/engines/-/engines-7.62.2.tgz", - "integrity": "sha512-PN2Is7RFeYWQdF/qIKJ7bQw99U4RXKR4/hLPrX/e13pt58TNVE3Y2NF3qOvzjY8PMQGGZDQFISCuQSvDwMCDYA==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/engines/-/engines-7.62.3.tgz", + "integrity": "sha512-IJ0FMmx/acLveUrSTmIJxrwbvN1LT/XUm6VHkrwJjB4G1zdb0vaOrgzZM1oNvOtInWdDPMuEkqdKNO56JJAzqQ==", "dependencies": { "tslib": "2.6.1" } }, "node_modules/@tsed/exceptions": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/exceptions/-/exceptions-7.62.2.tgz", - "integrity": "sha512-+6ygNndp4hiDXvLPH760VtVrlfIHUZnBOcJX8lo+IOBHzVMXe2Tueu8PQ3mMc4187uik2HBXvRJWJKH95L2/xA==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/exceptions/-/exceptions-7.62.3.tgz", + "integrity": "sha512-tFdRY+bH0Ctuk9mleu7073nSSUUUQ3Rp5iNd/guErBOIrq8zUR0Lq7gpKgqcYBxGtuW5hRIBh15eksNVqu3cnA==", "dependencies": { "change-case": "4.1.2", "statuses": ">=2.0.1", "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2" + "@tsed/core": "7.62.3" } }, "node_modules/@tsed/ioredis": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/ioredis/-/ioredis-7.62.2.tgz", - "integrity": "sha512-fBT5zN58PXfCmU4L4zLkhKyJplCQ57rHKl9yLWJ1ycmvGWdG2ttK0WBsJPQTZwDDNkqacMii3HiNw5w9myTczg==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/ioredis/-/ioredis-7.62.3.tgz", + "integrity": "sha512-BK33GJGBGwtsnhd/QoHrv6fMUIRnUajhB+ivh6sr8gNTvER2r2TGG7V6VyS98hibJ8aKLm4zGPk/IWvmRKUXSg==", "dependencies": { "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2", - "@tsed/di": "7.62.2", + "@tsed/core": "7.62.3", + "@tsed/di": "7.62.3", "ioredis": ">=5.2.3", "ioredis-mock": ">=8.2.2" } }, "node_modules/@tsed/json-mapper": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/json-mapper/-/json-mapper-7.62.2.tgz", - "integrity": "sha512-4AXvd2q7Wjadwi+B8eC+MNzsqT/ye/3U+wgv7iPX/v1unA+IcLLIbCXyvBQ/h2KxxdbBQ4Rl035oIS4KtPolFQ==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/json-mapper/-/json-mapper-7.62.3.tgz", + "integrity": "sha512-t/uWkkzmEu8yuUlN5NwjqGfkjUAFij54WCEou+2Jc2rUPeIpxXjmwo+NZ/mKVsGLb9K+M6PQfpuEndJBVpcu6A==", "dependencies": { "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2", - "@tsed/schema": "7.62.2" + "@tsed/core": "7.62.3", + "@tsed/schema": "7.62.3" }, "peerDependenciesMeta": { "@tsed/core": { @@ -3849,31 +3849,31 @@ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, "node_modules/@tsed/normalize-path": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/normalize-path/-/normalize-path-7.62.2.tgz", - "integrity": "sha512-47Rr9duDCd2ZLKbneRzCi9qir0UNe13EfYLbJ9pfFVKk/4Weu2ovfzeTFm0jG2MkP4192H3Meq77E9pUYNjyvQ==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/normalize-path/-/normalize-path-7.62.3.tgz", + "integrity": "sha512-4JDiUY/tTH0kxzrGwZnbU0n6Vp5DRaeUJ/X/BdZysMSajuUAl+thdQrAlZZm9qj/YeZovU3NiPfZuOZSqI/IMQ==", "dependencies": { "normalize-path": "3.0.0", "tslib": "2.6.1" } }, "node_modules/@tsed/openspec": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/openspec/-/openspec-7.62.2.tgz", - "integrity": "sha512-DyX6Y2mtBf05Rd9d4O7NY5DS/pK0wrFypGfR9Ky2ZpBPbgGSaI7SA44/k+oF0Jcl3F7zLfDGoXD1ofcaGg23rA==" + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/openspec/-/openspec-7.62.3.tgz", + "integrity": "sha512-/He0IvFND+FA2imqKLn0uI7QbVaMNPvZBezOM84tuErldsRayOw1vkJWjzbrk6yidZaKlk02k4IrlRkTRiof5Q==" }, "node_modules/@tsed/platform-exceptions": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/platform-exceptions/-/platform-exceptions-7.62.2.tgz", - "integrity": "sha512-uEm6suswozVsY3Xj/h4AeO6EWQCtVqGKCHqWBuzqK9BjsYG5rHbSdvjojGEzu+Wi7DAJACmfmtUIjE8fORTRQw==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/platform-exceptions/-/platform-exceptions-7.62.3.tgz", + "integrity": "sha512-mhtJ/pSAFr13aTMn9BZCElD3rcaIpyUYr58mXGhZO+49gJHNLSbfboRTGDV2Ohu/XWcy5isBwKeCWKXO5kogPA==", "dependencies": { "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2", - "@tsed/di": "7.62.2", - "@tsed/exceptions": "7.62.2", - "@tsed/schema": "7.62.2" + "@tsed/core": "7.62.3", + "@tsed/di": "7.62.3", + "@tsed/exceptions": "7.62.3", + "@tsed/schema": "7.62.3" }, "peerDependenciesMeta": { "@tsed/core": { @@ -3891,23 +3891,23 @@ } }, "node_modules/@tsed/platform-express": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/platform-express/-/platform-express-7.62.2.tgz", - "integrity": "sha512-7r/7FMvc4jY5lc41TqnJPq08SNHjOWhVBgLGlalaS9ET683iJfKZVtavsowpoTFMz28OnaLU9wiu7LN9Ne66zQ==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/platform-express/-/platform-express-7.62.3.tgz", + "integrity": "sha512-jMqTmcZ7BnF+aTB3Z3EaicNpEYmK9SO9vzyGU1SCzciPx0mAcjGRrNbtKNckGk8Pntp0QPW9fndocYdtqU4aFg==", "dependencies": { "express": "^4.18.2", "multer": "^1.4.5-lts.1", "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/common": "7.62.2", - "@tsed/core": "7.62.2", - "@tsed/di": "7.62.2", - "@tsed/json-mapper": "7.62.2", + "@tsed/common": "7.62.3", + "@tsed/core": "7.62.3", + "@tsed/di": "7.62.3", + "@tsed/json-mapper": "7.62.3", "@tsed/logger": ">=6.2.2", - "@tsed/openspec": "7.62.2", - "@tsed/platform-views": "7.62.2", - "@tsed/schema": "7.62.2", + "@tsed/openspec": "7.62.3", + "@tsed/platform-views": "7.62.3", + "@tsed/schema": "7.62.3", "@types/multer": "^1.4.5", "body-parser": "^1.19.0", "cross-env": "7.0.3", @@ -3941,16 +3941,16 @@ } }, "node_modules/@tsed/platform-log-middleware": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/platform-log-middleware/-/platform-log-middleware-7.62.2.tgz", - "integrity": "sha512-iNMCNB/9JosXy1noyr9CEz06XWoXizukwj3wxSpXmuOouKKQj8+Ep0A+JmIHzrEeFtGjEprBkPq38U0Ba0O1cw==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/platform-log-middleware/-/platform-log-middleware-7.62.3.tgz", + "integrity": "sha512-R7TJ3EIha9qXYHL8wEs7gqVxLviNe4SU7BhnbTHwuMCgo93Dv77QkH/ZDydgnuwAaoL+Mc+OiK8UZxVfazqdgA==", "dependencies": { "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/di": "7.62.2", - "@tsed/platform-middlewares": "7.62.2", - "@tsed/platform-params": "7.62.2" + "@tsed/di": "7.62.3", + "@tsed/platform-middlewares": "7.62.3", + "@tsed/platform-params": "7.62.3" }, "peerDependenciesMeta": { "@tsed/di": { @@ -3965,16 +3965,16 @@ } }, "node_modules/@tsed/platform-middlewares": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/platform-middlewares/-/platform-middlewares-7.62.2.tgz", - "integrity": "sha512-KnSv3zWnxFx6gXEg2my6v29W+iuC5k7GEkptKbgWJ68UeA1kAmTNlMZN9DoizfNcs5DYd30/XKaRQAAtoy3k5g==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/platform-middlewares/-/platform-middlewares-7.62.3.tgz", + "integrity": "sha512-CfV3NfyKIj8MMPVkyWaRJc21yIJUrz9Zrdc6XJk3tlHN2DP+aql9Wc6WcdqdvrNs5pHn/pM5Lc0MBZhFEp32LQ==", "dependencies": { "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2", - "@tsed/di": "7.62.2", - "@tsed/schema": "7.62.2" + "@tsed/core": "7.62.3", + "@tsed/di": "7.62.3", + "@tsed/schema": "7.62.3" }, "peerDependenciesMeta": { "@tsed/core": { @@ -3989,18 +3989,18 @@ } }, "node_modules/@tsed/platform-params": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/platform-params/-/platform-params-7.62.2.tgz", - "integrity": "sha512-STnAZqFElnX5jC4pWR5pClmH2ap1Niyz72DbSVJ9AVUHpmWZ1EI2/bI125iUDmN+s9qWMSAE7pe3uCff1CvQGA==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/platform-params/-/platform-params-7.62.3.tgz", + "integrity": "sha512-+cesDFwY1atUA8ZF3xSNKec6zOXjy2kCKpxbKr1To4QF3AKKi4cx910ItdiCN5ess94qhWGRjXqT417GJm3O5A==", "dependencies": { "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2", - "@tsed/di": "7.62.2", - "@tsed/exceptions": "7.62.2", - "@tsed/json-mapper": "7.62.2", - "@tsed/schema": "7.62.2" + "@tsed/core": "7.62.3", + "@tsed/di": "7.62.3", + "@tsed/exceptions": "7.62.3", + "@tsed/json-mapper": "7.62.3", + "@tsed/schema": "7.62.3" }, "peerDependenciesMeta": { "@tsed/core": { @@ -4021,18 +4021,18 @@ } }, "node_modules/@tsed/platform-response-filter": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/platform-response-filter/-/platform-response-filter-7.62.2.tgz", - "integrity": "sha512-zRRnwNpGeASbXfrhS2KnpKyuiW2PWR46/6moFEZ0RtUeVOmRi2Zf3e8EApdkv0zizbV3gT/LC6p4EWHtUqomiA==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/platform-response-filter/-/platform-response-filter-7.62.3.tgz", + "integrity": "sha512-DW17HS8SOUQ2V3bO2qpqZ8GIdsfE6RMTZeqQWDAWbP+Eye+L386Ba4HwSWw7sFpkhVDpsiBBV3N8UqgTAc5xUQ==", "dependencies": { "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2", - "@tsed/di": "7.62.2", - "@tsed/exceptions": "7.62.2", - "@tsed/json-mapper": "7.62.2", - "@tsed/schema": "7.62.2" + "@tsed/core": "7.62.3", + "@tsed/di": "7.62.3", + "@tsed/exceptions": "7.62.3", + "@tsed/json-mapper": "7.62.3", + "@tsed/schema": "7.62.3" }, "peerDependenciesMeta": { "@tsed/core": { @@ -4053,19 +4053,19 @@ } }, "node_modules/@tsed/platform-router": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/platform-router/-/platform-router-7.62.2.tgz", - "integrity": "sha512-v7wIb+ytSCmn5FyTGEt5z6Uynktg73Ui3bBnZa9L4W09Y5SbWCa4kQCr3FnlZCgIdbVGq2fAsyn+3wEcHjRA8w==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/platform-router/-/platform-router-7.62.3.tgz", + "integrity": "sha512-wJzsR6WvaGqSvkXbet1e7IORjRxtvsvGTgwO9/wVoQHzpo0fT/bgaszo3204yU3ZitILpv+nQlUhbpPrtEva8A==", "dependencies": { "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2", - "@tsed/di": "7.62.2", - "@tsed/exceptions": "7.62.2", - "@tsed/json-mapper": "7.62.2", - "@tsed/platform-params": "7.62.2", - "@tsed/schema": "7.62.2" + "@tsed/core": "7.62.3", + "@tsed/di": "7.62.3", + "@tsed/exceptions": "7.62.3", + "@tsed/json-mapper": "7.62.3", + "@tsed/platform-params": "7.62.3", + "@tsed/schema": "7.62.3" }, "peerDependenciesMeta": { "@tsed/core": { @@ -4089,20 +4089,20 @@ } }, "node_modules/@tsed/platform-views": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/platform-views/-/platform-views-7.62.2.tgz", - "integrity": "sha512-ZPmN1kZrzqwKUOv3CKtAkgkF102Rnu5CxI/NdZFg9ibuJvibdKCV+XxGT8nuO7AzJ1xhyaJEJBFtPrA6Kj11AQ==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/platform-views/-/platform-views-7.62.3.tgz", + "integrity": "sha512-DrvIcnw3Hve0mr1Ahjcm23IT8tiKknsVpVbS68PQd5vxaY52NGPdPKC1d9j0VikF+4H6lbmgxg32szx/607Fcg==", "dependencies": { - "@tsed/engines": "7.62.2", + "@tsed/engines": "7.62.3", "ejs": "^3.1.5", "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2", - "@tsed/di": "7.62.2", - "@tsed/engines": "7.62.2", - "@tsed/exceptions": "7.62.2", - "@tsed/schema": "7.62.2" + "@tsed/core": "7.62.3", + "@tsed/di": "7.62.3", + "@tsed/engines": "7.62.3", + "@tsed/exceptions": "7.62.3", + "@tsed/schema": "7.62.3" }, "peerDependenciesMeta": { "@tsed/core": { @@ -4120,9 +4120,9 @@ } }, "node_modules/@tsed/prisma": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/prisma/-/prisma-7.62.2.tgz", - "integrity": "sha512-wjeTnr0usPXX/KjxpD0+TfJNCYEZ0cAeC9lgOYxMAUqqZBfpWqn9BHTdTxoWqaP6o02XMhL6g85+WmPkRRhFhA==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/prisma/-/prisma-7.62.3.tgz", + "integrity": "sha512-vW0XsonNpnxFIKbNHzqrjcNgH7PhB/kDxlQvwM48BphpCl2M7NtM7QszIJ54X7JYoE4JBSxIYBv0jhoMUX+UEg==", "dependencies": { "@prisma/generator-helper": "^4.0.0", "@prisma/internals": "^4.0.0", @@ -4137,18 +4137,18 @@ }, "peerDependencies": { "@prisma/client": ">=4.0.0", - "@tsed/core": "7.62.2", - "@tsed/di": "7.62.2", - "@tsed/json-mapper": "7.62.2", - "@tsed/schema": "7.62.2" + "@tsed/core": "7.62.3", + "@tsed/di": "7.62.3", + "@tsed/json-mapper": "7.62.3", + "@tsed/schema": "7.62.3" } }, "node_modules/@tsed/schema": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/schema/-/schema-7.62.2.tgz", - "integrity": "sha512-tOiAYX6SDbKvQ2uU+OiWbxpMbl4hrxAFu+3FFvIPGManpaAITEfDgqfZjpIXqUxRfJsQgdYmdLVvfeumEjv/bA==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/schema/-/schema-7.62.3.tgz", + "integrity": "sha512-5Z0ZGXtwoHaHd6wzBggZm87eLG3bmocxRqMgYVzH7LZlQLa0E8a9CtgPgQ94h/tgZTRIWQov/g+BP0/IGe6xJw==", "dependencies": { - "@tsed/openspec": "7.62.2", + "@tsed/openspec": "7.62.3", "change-case": "^4.1.2", "fs-extra": "^11.1.1", "json-schema": "0.4.0", @@ -4157,8 +4157,8 @@ "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/core": "7.62.2", - "@tsed/openspec": "7.62.2" + "@tsed/core": "7.62.3", + "@tsed/openspec": "7.62.3" }, "peerDependenciesMeta": { "@tsed/core": { @@ -4170,12 +4170,12 @@ } }, "node_modules/@tsed/swagger": { - "version": "7.62.2", - "resolved": "https://registry.npmjs.org/@tsed/swagger/-/swagger-7.62.2.tgz", - "integrity": "sha512-Ca49X6MoNHetlO5f6eRsGfwkQhaLtlmnFHHPciiUv9s6VIF/Y7Jgj2EmaMrxCG7wkMRMmRR+wEBWX/n2sywtIw==", + "version": "7.62.3", + "resolved": "https://registry.npmjs.org/@tsed/swagger/-/swagger-7.62.3.tgz", + "integrity": "sha512-2e9Qsu7ugGaR1fzHzLAiBoLqOks9++HUkIBM/SYBteK9nLpsQHA4wXJuvRuqguZm0rg3ql/ixrqLTdUIa2Sm4g==", "dependencies": { - "@tsed/normalize-path": "7.62.2", - "@tsed/openspec": "7.62.2", + "@tsed/normalize-path": "7.62.3", + "@tsed/openspec": "7.62.3", "filedirname": "^2.7.0", "fs-extra": "11.1.1", "micromatch": "4.0.5", @@ -4183,7 +4183,7 @@ "tslib": "2.6.1" }, "peerDependencies": { - "@tsed/common": "7.62.2" + "@tsed/common": "7.62.3" }, "peerDependenciesMeta": { "@tsed/common": { @@ -4539,9 +4539,9 @@ } }, "node_modules/@types/node": { - "version": "20.11.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", - "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", + "version": "20.11.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz", + "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==", "dependencies": { "undici-types": "~5.26.4" } @@ -4667,16 +4667,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.0.tgz", - "integrity": "sha512-j6vT/kCulhG5wBmGtstKeiVr1rdXE4nk+DT1k6trYkwlrvW9eOF5ZbgKnd/YR6PcM4uTEXa0h6Fcvf6X7Dxl0w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz", + "integrity": "sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.1.0", - "@typescript-eslint/type-utils": "7.1.0", - "@typescript-eslint/utils": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/type-utils": "7.1.1", + "@typescript-eslint/utils": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -4708,13 +4708,13 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.0.tgz", - "integrity": "sha512-6TmN4OJiohHfoOdGZ3huuLhpiUgOGTpgXNUPJgeZOZR3DnIpdSgtt83RS35OYNNXxM4TScVlpVKC9jyQSETR1A==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", + "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0" + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4725,9 +4725,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.0.tgz", - "integrity": "sha512-qTWjWieJ1tRJkxgZYXx6WUYtWlBc48YRxgY2JN1aGeVpkhmnopq+SUC8UEVGNXIvWH7XyuTjwALfG6bFEgCkQA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", + "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4738,13 +4738,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.0.tgz", - "integrity": "sha512-k7MyrbD6E463CBbSpcOnwa8oXRdHzH1WiVzOipK3L5KSML92ZKgUBrTlehdi7PEIMT8k0bQixHUGXggPAlKnOQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", + "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4766,17 +4766,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.0.tgz", - "integrity": "sha512-WUFba6PZC5OCGEmbweGpnNJytJiLG7ZvDBJJoUcX4qZYf1mGZ97mO2Mps6O2efxJcJdRNpqweCistDbZMwIVHw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz", + "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.1.0", - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/typescript-estree": "7.1.0", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", "semver": "^7.5.4" }, "engines": { @@ -4791,12 +4791,12 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.0.tgz", - "integrity": "sha512-FhUqNWluiGNzlvnDZiXad4mZRhtghdoKW6e98GoEOYSu5cND+E39rG5KwJMUzeENwm1ztYBRqof8wMLP+wNPIA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", + "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", + "@typescript-eslint/types": "7.1.1", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -4852,15 +4852,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.0.tgz", - "integrity": "sha512-V1EknKUubZ1gWFjiOZhDSNToOjs63/9O0puCgGS8aDOgpZY326fzFu15QAUjwaXzRZjf/qdsdBrckYdv9YxB8w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.1.tgz", + "integrity": "sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.1.0", - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/typescript-estree": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4" }, "engines": { @@ -4880,13 +4880,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.0.tgz", - "integrity": "sha512-6TmN4OJiohHfoOdGZ3huuLhpiUgOGTpgXNUPJgeZOZR3DnIpdSgtt83RS35OYNNXxM4TScVlpVKC9jyQSETR1A==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", + "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0" + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4897,9 +4897,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.0.tgz", - "integrity": "sha512-qTWjWieJ1tRJkxgZYXx6WUYtWlBc48YRxgY2JN1aGeVpkhmnopq+SUC8UEVGNXIvWH7XyuTjwALfG6bFEgCkQA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", + "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4910,13 +4910,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.0.tgz", - "integrity": "sha512-k7MyrbD6E463CBbSpcOnwa8oXRdHzH1WiVzOipK3L5KSML92ZKgUBrTlehdi7PEIMT8k0bQixHUGXggPAlKnOQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", + "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4938,12 +4938,12 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.0.tgz", - "integrity": "sha512-FhUqNWluiGNzlvnDZiXad4mZRhtghdoKW6e98GoEOYSu5cND+E39rG5KwJMUzeENwm1ztYBRqof8wMLP+wNPIA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", + "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", + "@typescript-eslint/types": "7.1.1", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -5016,13 +5016,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.0.tgz", - "integrity": "sha512-UZIhv8G+5b5skkcuhgvxYWHjk7FW7/JP5lPASMEUoliAPwIH/rxoUSQPia2cuOj9AmDZmwUl1usKm85t5VUMew==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.1.tgz", + "integrity": "sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.1.0", - "@typescript-eslint/utils": "7.1.0", + "@typescript-eslint/typescript-estree": "7.1.1", + "@typescript-eslint/utils": "7.1.1", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -5049,13 +5049,13 @@ "dev": true }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.0.tgz", - "integrity": "sha512-6TmN4OJiohHfoOdGZ3huuLhpiUgOGTpgXNUPJgeZOZR3DnIpdSgtt83RS35OYNNXxM4TScVlpVKC9jyQSETR1A==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", + "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0" + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -5066,9 +5066,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.0.tgz", - "integrity": "sha512-qTWjWieJ1tRJkxgZYXx6WUYtWlBc48YRxgY2JN1aGeVpkhmnopq+SUC8UEVGNXIvWH7XyuTjwALfG6bFEgCkQA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", + "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -5079,13 +5079,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.0.tgz", - "integrity": "sha512-k7MyrbD6E463CBbSpcOnwa8oXRdHzH1WiVzOipK3L5KSML92ZKgUBrTlehdi7PEIMT8k0bQixHUGXggPAlKnOQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", + "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5107,17 +5107,17 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.0.tgz", - "integrity": "sha512-WUFba6PZC5OCGEmbweGpnNJytJiLG7ZvDBJJoUcX4qZYf1mGZ97mO2Mps6O2efxJcJdRNpqweCistDbZMwIVHw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz", + "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.1.0", - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/typescript-estree": "7.1.0", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", "semver": "^7.5.4" }, "engines": { @@ -5132,12 +5132,12 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.0.tgz", - "integrity": "sha512-FhUqNWluiGNzlvnDZiXad4mZRhtghdoKW6e98GoEOYSu5cND+E39rG5KwJMUzeENwm1ztYBRqof8wMLP+wNPIA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", + "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", + "@typescript-eslint/types": "7.1.1", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -8595,22 +8595,22 @@ } }, "node_modules/cspell": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.5.0.tgz", - "integrity": "sha512-Kg10itkOZKoIcKE2KSQWVVt0Yo2pssvd66kuzo5S3x7lc25yggz8W+piHzUH99E2aNQ7CTzH7H78ReI53pt4tA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.6.0.tgz", + "integrity": "sha512-aAaVD3v1105OQePCpcdYkHnHxxkxKxxQzFcfJ4tKsH06dlW04Sp1oQLlsjgWDa3y6cdYTpSYj1eSenavBvfOFg==", "dev": true, "dependencies": { - "@cspell/cspell-json-reporter": "8.5.0", - "@cspell/cspell-pipe": "8.5.0", - "@cspell/cspell-types": "8.5.0", - "@cspell/dynamic-import": "8.5.0", + "@cspell/cspell-json-reporter": "8.6.0", + "@cspell/cspell-pipe": "8.6.0", + "@cspell/cspell-types": "8.6.0", + "@cspell/dynamic-import": "8.6.0", "chalk": "^5.3.0", "chalk-template": "^1.1.0", "commander": "^12.0.0", - "cspell-gitignore": "8.5.0", - "cspell-glob": "8.5.0", - "cspell-io": "8.5.0", - "cspell-lib": "8.5.0", + "cspell-gitignore": "8.6.0", + "cspell-glob": "8.6.0", + "cspell-io": "8.6.0", + "cspell-lib": "8.6.0", "fast-glob": "^3.3.2", "fast-json-stable-stringify": "^2.1.0", "file-entry-cache": "^8.0.0", @@ -8631,12 +8631,12 @@ } }, "node_modules/cspell-config-lib": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.5.0.tgz", - "integrity": "sha512-J89uUFPANN4R+uwRh2WP4PYe9sVYbtKVzyJ53nPehv0RlJ+6XiQyqu6dnsT9rAjqHaAwf57iPBkMJiDir103eA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.6.0.tgz", + "integrity": "sha512-Q1rvQFUDJTu4hUtxwL6+q83Hjx/a5grEjMS5axxFJzjJuFRbRsXCagncdSCx/YBqLkNM5noBbRP/0rVh7ufqxw==", "dev": true, "dependencies": { - "@cspell/cspell-types": "8.5.0", + "@cspell/cspell-types": "8.6.0", "comment-json": "^4.2.3", "yaml": "^2.4.0" }, @@ -8645,9 +8645,9 @@ } }, "node_modules/cspell-config-lib/node_modules/yaml": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.0.tgz", - "integrity": "sha512-j9iR8g+/t0lArF4V6NE/QCfT+CO7iLqrXAHZbJdo+LfjqP1vR8Fg5bSiaq6Q2lOD1AUEVrEVIgABvBFYojJVYQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", + "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", "dev": true, "bin": { "yaml": "bin.mjs" @@ -8657,14 +8657,14 @@ } }, "node_modules/cspell-dictionary": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.5.0.tgz", - "integrity": "sha512-cr8wnSdfkNWtWsstZgTtvMNBns+pVHYMXwLWQ05VC6KyXfNW5zWNThrvzmaL9bLLXIUUOUkC2WWVa8bD20RcmQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.6.0.tgz", + "integrity": "sha512-ohToeOQznIrb2/z7RfKxX3NID0WiO4sXK3IxKdnbn2viGgdn17tQ8Z2f4Xuy9egjSGRKyr6N25Z5AOes1C8R3w==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.5.0", - "@cspell/cspell-types": "8.5.0", - "cspell-trie-lib": "8.5.0", + "@cspell/cspell-pipe": "8.6.0", + "@cspell/cspell-types": "8.6.0", + "cspell-trie-lib": "8.6.0", "fast-equals": "^5.0.1", "gensequence": "^7.0.0" }, @@ -8673,12 +8673,12 @@ } }, "node_modules/cspell-gitignore": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.5.0.tgz", - "integrity": "sha512-dWZp915edBaDImGmUhqFC1fqn4dmadGBefarcwFPCfowC3HX06Ac2/mfQ6SsdKzGif6Hahf44i3cupyJCCgagg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.6.0.tgz", + "integrity": "sha512-6INRlNb17iKtQH7NmDM/EsX5OZOD2TzIwHiJnnWci0Y5l10V/zN9WGLDegTjMh9HU3TS6uUuN4I/ffkCs9m+LA==", "dev": true, "dependencies": { - "cspell-glob": "8.5.0", + "cspell-glob": "8.6.0", "find-up-simple": "^1.0.0" }, "bin": { @@ -8689,9 +8689,9 @@ } }, "node_modules/cspell-glob": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.5.0.tgz", - "integrity": "sha512-jvEGCwToql//WAAyoaOP+GtYAMyfjTkqOMSxZ0tMbj2T4TEC/xUH2/tTI8Xug3PDOr5a3J75inSzl9tC8ZVtWQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.6.0.tgz", + "integrity": "sha512-AyuExc34F8JsEYNl4inx1m1v5VoSRA/cTptREq/AoNTcMTyG5s+wt5J+VWBfvJjEDEEpd9Cb2it0j8TMo/Tpjw==", "dev": true, "dependencies": { "micromatch": "^4.0.5" @@ -8701,13 +8701,13 @@ } }, "node_modules/cspell-grammar": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.5.0.tgz", - "integrity": "sha512-29U4KFThztK9LBPrcdLJLld3uWIEAg8M5umfwrkDoGQA0jtdBe+4895rGuth4QcPxMT1jxn7cInv199Hx2R4XQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.6.0.tgz", + "integrity": "sha512-wVpZ4pPOqRoOmzLUc34wyOQnBi/6RsV3Y1KiPn8BNSkObb9XSohb1xJJMJ69unEmgE0snQDMHIeUaLTQH414MA==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.5.0", - "@cspell/cspell-types": "8.5.0" + "@cspell/cspell-pipe": "8.6.0", + "@cspell/cspell-types": "8.6.0" }, "bin": { "cspell-grammar": "bin.mjs" @@ -8717,38 +8717,38 @@ } }, "node_modules/cspell-io": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.5.0.tgz", - "integrity": "sha512-XiAhF/nX2M8xUX9OqXoGixePTmy7s0+Bfg07+nGTDKhLj0Ydpg/asxWVkd//YAX9kkpU3YukDon4Q4km95WgiA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.6.0.tgz", + "integrity": "sha512-jx7ccRpcshqxN6xnOiGnX4VycaqTpmatRjHITn4vLoDmQNfxQeU69YT62bhyjogCBuJsZS9ksjo7GQIsrYBekA==", "dev": true, "dependencies": { - "@cspell/cspell-service-bus": "8.5.0" + "@cspell/cspell-service-bus": "8.6.0" }, "engines": { "node": ">=18" } }, "node_modules/cspell-lib": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.5.0.tgz", - "integrity": "sha512-TSi2K8Xf7Ptti6EtSeG6A9kTaleMNwcayjXTBxsiCoVnW/bSTQ7cSzuO2JqT3wUK54XUu4HullTgoUv/tvqjCg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.6.0.tgz", + "integrity": "sha512-l1bBxBz8noPOxEIIu1Ahvd4e/j6Re1PNDD9FwZgaRmvMyIPZbupTxzCM0MZWvYz1VymBmrrVEKRwtZ34VocaCw==", "dev": true, "dependencies": { - "@cspell/cspell-bundled-dicts": "8.5.0", - "@cspell/cspell-pipe": "8.5.0", - "@cspell/cspell-resolver": "8.5.0", - "@cspell/cspell-types": "8.5.0", - "@cspell/dynamic-import": "8.5.0", - "@cspell/strong-weak-map": "8.5.0", + "@cspell/cspell-bundled-dicts": "8.6.0", + "@cspell/cspell-pipe": "8.6.0", + "@cspell/cspell-resolver": "8.6.0", + "@cspell/cspell-types": "8.6.0", + "@cspell/dynamic-import": "8.6.0", + "@cspell/strong-weak-map": "8.6.0", "clear-module": "^4.1.2", "comment-json": "^4.2.3", "configstore": "^6.0.0", - "cspell-config-lib": "8.5.0", - "cspell-dictionary": "8.5.0", - "cspell-glob": "8.5.0", - "cspell-grammar": "8.5.0", - "cspell-io": "8.5.0", - "cspell-trie-lib": "8.5.0", + "cspell-config-lib": "8.6.0", + "cspell-dictionary": "8.6.0", + "cspell-glob": "8.6.0", + "cspell-grammar": "8.6.0", + "cspell-io": "8.6.0", + "cspell-trie-lib": "8.6.0", "fast-equals": "^5.0.1", "gensequence": "^7.0.0", "import-fresh": "^3.3.0", @@ -8761,13 +8761,13 @@ } }, "node_modules/cspell-trie-lib": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.5.0.tgz", - "integrity": "sha512-RPKhJowuGpUc21GpREE9fdpds5JqdUmF1A/GXeFFzo1rwDiWA0Ojt60A72R90t2vygkAnD+kKtQkWX3LSoT3pQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.6.0.tgz", + "integrity": "sha512-S8nGCnEJBL1maiKPd3FhI54QG+OgtOkcJ/yUDXGXGrokSruWFdNocioPirlFAHf959ax1GBUVEYNIgnu/EIWNg==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.5.0", - "@cspell/cspell-types": "8.5.0", + "@cspell/cspell-pipe": "8.6.0", + "@cspell/cspell-types": "8.6.0", "gensequence": "^7.0.0" }, "engines": { @@ -10616,18 +10616,18 @@ } }, "node_modules/eslint-plugin-markdown": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz", - "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-4.0.1.tgz", + "integrity": "sha512-5/MnGvYU0i8MbHH5cg8S+Vl3DL+bqRNYshk1xUO86DilNBaxtTkhH+5FD0/yO03AmlI6+lfNFdk2yOw72EPzpA==", "dev": true, "dependencies": { "mdast-util-from-markdown": "^0.8.5" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": ">=8" } }, "node_modules/eslint-plugin-n": { @@ -21332,9 +21332,9 @@ } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/package.json b/package.json index 9a1dd2f..c606498 100644 --- a/package.json +++ b/package.json @@ -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", @@ -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", @@ -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", @@ -198,7 +198,7 @@ "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": { @@ -206,7 +206,7 @@ "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" } } diff --git a/src/presentation/rest/config/app.config.ts b/src/contract/rest/config/app.config.ts similarity index 91% rename from src/presentation/rest/config/app.config.ts rename to src/contract/rest/config/app.config.ts index 053b29d..d7e50a2 100644 --- a/src/presentation/rest/config/app.config.ts +++ b/src/contract/rest/config/app.config.ts @@ -1,6 +1,6 @@ import { sync as readPackageJsonSync } from 'read-pkg'; -import { getEnvironmentNumber, getEnvironmentString } from '@infrastructure/shared/config/environment'; +import { getEnvironmentNumber, getEnvironmentString } from '@shared/infrastructure/config/environment'; const AppInfo = Object.freeze({ APP_VERSION: getEnvironmentString('APP_VERSION', readPackageJsonSync().version), diff --git a/src/presentation/rest/config/index.ts b/src/contract/rest/config/index.ts similarity index 100% rename from src/presentation/rest/config/index.ts rename to src/contract/rest/config/index.ts diff --git a/src/presentation/rest/controllers/authentication/authenticated-user.api-response.ts b/src/contract/rest/controllers/authentication/authenticated-user.api-response.ts similarity index 93% rename from src/presentation/rest/controllers/authentication/authenticated-user.api-response.ts rename to src/contract/rest/controllers/authentication/authenticated-user.api-response.ts index 61e2b31..46598df 100644 --- a/src/presentation/rest/controllers/authentication/authenticated-user.api-response.ts +++ b/src/contract/rest/controllers/authentication/authenticated-user.api-response.ts @@ -1,7 +1,7 @@ import { Default, Email, Enum, Format, Property } from '@tsed/schema'; -import { UserResponse } from '@application/users'; -import { UserGenders, UserRoles } from '@domain/users'; +import { UserResponse } from '@modules/users/application'; +import { UserGenders, UserRoles } from '@modules/users/domain'; class AuthenticatedUserApiResponse { @Property() diff --git a/src/presentation/rest/controllers/authentication/authentication.controller.ts b/src/contract/rest/controllers/authentication/authentication.controller.ts similarity index 84% rename from src/presentation/rest/controllers/authentication/authentication.controller.ts rename to src/contract/rest/controllers/authentication/authentication.controller.ts index 89ad2d7..9d1d961 100644 --- a/src/presentation/rest/controllers/authentication/authentication.controller.ts +++ b/src/contract/rest/controllers/authentication/authentication.controller.ts @@ -2,23 +2,23 @@ import { BodyParams, Context, Req, Res } from '@tsed/common'; import { Delete, Description, Example, Get, Post, Returns, Status, Summary, Tags, Title } from '@tsed/schema'; import { StatusCodes } from 'http-status-codes'; -import { SessionResponse } from '@application/sessions'; -import { EndSessionRequest, EndSessionUseCase } from '@application/sessions/end'; -import { RefreshSessionRequest, RefreshSessionUseCase } from '@application/sessions/refresh'; -import { StartSessionRequest, StartSessionUseCase } from '@application/sessions/start'; -import { UserResponse } from '@application/users'; -import { AuthenticateUserRequest, AuthenticateUserUseCase } from '@application/users/authentication'; -import { FindUserRequest, FindUserUseCase } from '@application/users/find'; -import { Logger } from '@domain/shared'; -import { TriggeredBy, TriggeredByUser } from '@domain/shared/entities/triggered-by'; -import { Authentication } from '@infrastructure/shared/authentication'; -import { AuthenticationUtils } from '@infrastructure/shared/authentication/authentication-utils'; -import { AppConfig } from '@presentation/rest/config'; -import { NoCredentialsProvidedException } from '@presentation/rest/exceptions'; -import { RequestUtils } from '@presentation/rest/shared/request.utils'; -import { ResponseUtils } from '@presentation/rest/shared/response.utils'; -import { RestController } from '@presentation/rest/shared/rest-controller.decorator'; -import { WithAuth } from '@presentation/rest/shared/with-auth.decorator'; +import { AppConfig } from '@contract/rest/config'; +import { NoCredentialsProvidedException } from '@contract/rest/exceptions'; +import { RequestUtils } from '@contract/rest/shared/request.utils'; +import { ResponseUtils } from '@contract/rest/shared/response.utils'; +import { RestController } from '@contract/rest/shared/rest-controller.decorator'; +import { WithAuth } from '@contract/rest/shared/with-auth.decorator'; +import { SessionResponse } from '@modules/sessions/application'; +import { EndSessionRequest, EndSessionUseCase } from '@modules/sessions/application/end'; +import { RefreshSessionRequest, RefreshSessionUseCase } from '@modules/sessions/application/refresh'; +import { StartSessionRequest, StartSessionUseCase } from '@modules/sessions/application/start'; +import { UserResponse } from '@modules/users/application'; +import { AuthenticateUserRequest, AuthenticateUserUseCase } from '@modules/users/application/authentication'; +import { FindUserRequest, FindUserUseCase } from '@modules/users/application/find'; +import { Logger } from '@shared/domain'; +import { TriggeredBy, TriggeredByUser } from '@shared/domain/entities/triggered-by'; +import { Authentication } from '@shared/infrastructure/authentication'; +import { AuthenticationUtils } from '@shared/infrastructure/authentication/authentication-utils'; import { AuthenticatedUserApiResponse } from './authenticated-user.api-response'; import { UserSuccessfullyAuthenticatedApiResponse } from './user-successfully-authenticated.api-response'; diff --git a/src/presentation/rest/controllers/authentication/user-successfully-authenticated.api-response.ts b/src/contract/rest/controllers/authentication/user-successfully-authenticated.api-response.ts similarity index 96% rename from src/presentation/rest/controllers/authentication/user-successfully-authenticated.api-response.ts rename to src/contract/rest/controllers/authentication/user-successfully-authenticated.api-response.ts index 08e6250..6c1272a 100644 --- a/src/presentation/rest/controllers/authentication/user-successfully-authenticated.api-response.ts +++ b/src/contract/rest/controllers/authentication/user-successfully-authenticated.api-response.ts @@ -1,6 +1,6 @@ import { CollectionOf, Email, Property } from '@tsed/schema'; -import { SessionResponse } from '@application/sessions'; +import { SessionResponse } from '@modules/sessions/application'; class UserSuccessfullyAuthenticatedApiResponse { @Property() diff --git a/src/presentation/rest/controllers/health/health-status.api-response.ts b/src/contract/rest/controllers/health/health-status.api-response.ts similarity index 83% rename from src/presentation/rest/controllers/health/health-status.api-response.ts rename to src/contract/rest/controllers/health/health-status.api-response.ts index c86eccd..0472e23 100644 --- a/src/presentation/rest/controllers/health/health-status.api-response.ts +++ b/src/contract/rest/controllers/health/health-status.api-response.ts @@ -1,7 +1,7 @@ import { Default, Property } from '@tsed/schema'; -import { HealthStatusResponse } from '@application/health'; -import { AppInfo } from '@presentation/rest/config'; +import { AppInfo } from '@contract/rest/config'; +import { HealthStatusResponse } from '@modules/health/application'; class HealthStatusApiResponse { @Property() diff --git a/src/presentation/rest/controllers/health/health.controller.ts b/src/contract/rest/controllers/health/health.controller.ts similarity index 83% rename from src/presentation/rest/controllers/health/health.controller.ts rename to src/contract/rest/controllers/health/health.controller.ts index a08fa70..94fd3fe 100644 --- a/src/presentation/rest/controllers/health/health.controller.ts +++ b/src/contract/rest/controllers/health/health.controller.ts @@ -2,10 +2,10 @@ import { Context, Get } from '@tsed/common'; import { Description, Returns, Status, Summary, Tags, Title } from '@tsed/schema'; import { StatusCodes } from 'http-status-codes'; -import { CheckHealthStatusRequest, CheckHealthStatusUseCase } from '@application/health'; -import { TriggeredBy } from '@domain/shared/entities/triggered-by'; -import { AppConfig, AppInfo } from '@presentation/rest/config'; -import { RestController } from '@presentation/rest/shared/rest-controller.decorator'; +import { AppConfig, AppInfo } from '@contract/rest/config'; +import { RestController } from '@contract/rest/shared/rest-controller.decorator'; +import { CheckHealthStatusRequest, CheckHealthStatusUseCase } from '@modules/health/application'; +import { TriggeredBy } from '@shared/domain/entities/triggered-by'; import { HealthStatusApiResponse } from './health-status.api-response'; diff --git a/src/presentation/rest/controllers/users/user.api-response.ts b/src/contract/rest/controllers/users/user.api-response.ts similarity index 94% rename from src/presentation/rest/controllers/users/user.api-response.ts rename to src/contract/rest/controllers/users/user.api-response.ts index 1a7ea60..5aa80a4 100644 --- a/src/presentation/rest/controllers/users/user.api-response.ts +++ b/src/contract/rest/controllers/users/user.api-response.ts @@ -1,7 +1,7 @@ import { Default, Email, Enum, Format, Property } from '@tsed/schema'; -import { UserResponse } from '@application/users'; -import { UserGenders, UserRoles } from '@domain/users'; +import { UserResponse } from '@modules/users/application'; +import { UserGenders, UserRoles } from '@modules/users/domain'; class UserApiResponse { @Property() diff --git a/src/presentation/rest/controllers/users/user.controller.ts b/src/contract/rest/controllers/users/user.controller.ts similarity index 78% rename from src/presentation/rest/controllers/users/user.controller.ts rename to src/contract/rest/controllers/users/user.controller.ts index b10353e..6e99771 100644 --- a/src/presentation/rest/controllers/users/user.controller.ts +++ b/src/contract/rest/controllers/users/user.controller.ts @@ -2,13 +2,13 @@ import { Context, Get, PathParams } from '@tsed/common'; import { Description, Returns, Status, Summary, Tags, Title } from '@tsed/schema'; import { StatusCodes } from 'http-status-codes'; -import { FindUserRequest, FindUserUseCase } from '@application/users/find'; -import { SearchAllUsersRequest, SearchAllUsersUseCase } from '@application/users/search-all'; -import { TriggeredBy } from '@domain/shared/entities/triggered-by'; -import { UserRoles } from '@domain/users'; -import { AppConfig } from '@presentation/rest/config'; -import { RestController } from '@presentation/rest/shared/rest-controller.decorator'; -import { WithAuth } from '@presentation/rest/shared/with-auth.decorator'; +import { AppConfig } from '@contract/rest/config'; +import { RestController } from '@contract/rest/shared/rest-controller.decorator'; +import { WithAuth } from '@contract/rest/shared/with-auth.decorator'; +import { FindUserRequest, FindUserUseCase } from '@modules/users/application/find'; +import { SearchAllUsersRequest, SearchAllUsersUseCase } from '@modules/users/application/search-all'; +import { UserRoles } from '@modules/users/domain'; +import { TriggeredBy } from '@shared/domain/entities/triggered-by'; import { UserApiResponse } from './user.api-response'; diff --git a/src/presentation/rest/exceptions/api.exception.ts b/src/contract/rest/exceptions/api.exception.ts similarity index 100% rename from src/presentation/rest/exceptions/api.exception.ts rename to src/contract/rest/exceptions/api.exception.ts diff --git a/src/presentation/rest/exceptions/bad-request.exception.ts b/src/contract/rest/exceptions/bad-request.exception.ts similarity index 100% rename from src/presentation/rest/exceptions/bad-request.exception.ts rename to src/contract/rest/exceptions/bad-request.exception.ts diff --git a/src/presentation/rest/exceptions/exception.api-response.ts b/src/contract/rest/exceptions/exception.api-response.ts similarity index 95% rename from src/presentation/rest/exceptions/exception.api-response.ts rename to src/contract/rest/exceptions/exception.api-response.ts index 5e64849..85e5170 100644 --- a/src/presentation/rest/exceptions/exception.api-response.ts +++ b/src/contract/rest/exceptions/exception.api-response.ts @@ -3,7 +3,7 @@ import { Default, Enum, Integer, Property } from '@tsed/schema'; import { ReasonPhrases, StatusCodes } from 'http-status-codes'; import * as emoji from 'node-emoji'; -import { AppInfo } from '@presentation/rest/config'; +import { AppInfo } from '@contract/rest/config'; import { ApiException } from './api.exception'; diff --git a/src/presentation/rest/exceptions/forbidden.exception.ts b/src/contract/rest/exceptions/forbidden.exception.ts similarity index 100% rename from src/presentation/rest/exceptions/forbidden.exception.ts rename to src/contract/rest/exceptions/forbidden.exception.ts diff --git a/src/presentation/rest/exceptions/index.ts b/src/contract/rest/exceptions/index.ts similarity index 100% rename from src/presentation/rest/exceptions/index.ts rename to src/contract/rest/exceptions/index.ts diff --git a/src/presentation/rest/exceptions/internal-server-error.exception.ts b/src/contract/rest/exceptions/internal-server-error.exception.ts similarity index 100% rename from src/presentation/rest/exceptions/internal-server-error.exception.ts rename to src/contract/rest/exceptions/internal-server-error.exception.ts diff --git a/src/presentation/rest/exceptions/no-credentials-provided.exception.ts b/src/contract/rest/exceptions/no-credentials-provided.exception.ts similarity index 100% rename from src/presentation/rest/exceptions/no-credentials-provided.exception.ts rename to src/contract/rest/exceptions/no-credentials-provided.exception.ts diff --git a/src/presentation/rest/exceptions/path-not-found.exception.ts b/src/contract/rest/exceptions/path-not-found.exception.ts similarity index 100% rename from src/presentation/rest/exceptions/path-not-found.exception.ts rename to src/contract/rest/exceptions/path-not-found.exception.ts diff --git a/src/presentation/rest/exceptions/resource-not-found.exception.ts b/src/contract/rest/exceptions/resource-not-found.exception.ts similarity index 100% rename from src/presentation/rest/exceptions/resource-not-found.exception.ts rename to src/contract/rest/exceptions/resource-not-found.exception.ts diff --git a/src/presentation/rest/exceptions/unauthorized.exception.ts b/src/contract/rest/exceptions/unauthorized.exception.ts similarity index 100% rename from src/presentation/rest/exceptions/unauthorized.exception.ts rename to src/contract/rest/exceptions/unauthorized.exception.ts diff --git a/src/presentation/rest/filters/error-handler.filter.ts b/src/contract/rest/filters/error-handler.filter.ts similarity index 97% rename from src/presentation/rest/filters/error-handler.filter.ts rename to src/contract/rest/filters/error-handler.filter.ts index 72a1c69..4938659 100644 --- a/src/presentation/rest/filters/error-handler.filter.ts +++ b/src/contract/rest/filters/error-handler.filter.ts @@ -1,7 +1,6 @@ import { Catch, ExceptionFilterMethods, PlatformContext, Res } from '@tsed/common'; import { Exception, Exception as TsEdException } from '@tsed/exceptions'; -import { Logger } from '@domain/shared'; import { ApiException, BadRequestException, @@ -9,7 +8,8 @@ import { InternalServerErrorException, ResourceNotFoundException, UnauthorizedException -} from '@presentation/rest/exceptions'; +} from '@contract/rest/exceptions'; +import { Logger } from '@shared/domain'; @Catch(Exception) @Catch(Error) diff --git a/src/presentation/rest/filters/index.ts b/src/contract/rest/filters/index.ts similarity index 100% rename from src/presentation/rest/filters/index.ts rename to src/contract/rest/filters/index.ts diff --git a/src/presentation/rest/filters/not-found.filter.ts b/src/contract/rest/filters/not-found.filter.ts similarity index 85% rename from src/presentation/rest/filters/not-found.filter.ts rename to src/contract/rest/filters/not-found.filter.ts index c20747e..20ef9f9 100644 --- a/src/presentation/rest/filters/not-found.filter.ts +++ b/src/contract/rest/filters/not-found.filter.ts @@ -1,6 +1,6 @@ import { Catch, ExceptionFilterMethods, PlatformContext, ResourceNotFound } from '@tsed/common'; -import { PathNotFoundException } from '@presentation/rest/exceptions'; +import { PathNotFoundException } from '@contract/rest/exceptions'; @Catch(ResourceNotFound) class ResourceNotFoundFilter implements ExceptionFilterMethods { diff --git a/src/presentation/rest/middlewares/authentication.middleware.ts b/src/contract/rest/middlewares/authentication.middleware.ts similarity index 82% rename from src/presentation/rest/middlewares/authentication.middleware.ts rename to src/contract/rest/middlewares/authentication.middleware.ts index b562e6e..c2a9163 100644 --- a/src/presentation/rest/middlewares/authentication.middleware.ts +++ b/src/contract/rest/middlewares/authentication.middleware.ts @@ -1,15 +1,15 @@ import { Context, Middleware, MiddlewareMethods, Req, Res } from '@tsed/common'; -import { ValidateSessionRequest, ValidateSessionUseCase } from '@application/sessions/validate'; -import { ValidatedSessionResponse } from '@application/sessions/validate/validated-session.response'; -import { TriggeredByUser } from '@domain/shared/entities/triggered-by'; -import { UserRoles } from '@domain/users'; -import { Authentication } from '@infrastructure/shared/authentication/authentication'; -import { AuthenticationUtils } from '@infrastructure/shared/authentication/authentication-utils'; -import { AppConfig } from '@presentation/rest/config'; -import { ForbiddenException } from '@presentation/rest/exceptions'; -import { RequestUtils } from '@presentation/rest/shared/request.utils'; -import { ResponseUtils } from '@presentation/rest/shared/response.utils'; +import { AppConfig } from '@contract/rest/config'; +import { ForbiddenException } from '@contract/rest/exceptions'; +import { RequestUtils } from '@contract/rest/shared/request.utils'; +import { ResponseUtils } from '@contract/rest/shared/response.utils'; +import { ValidateSessionRequest, ValidateSessionUseCase } from '@modules/sessions/application/validate'; +import { ValidatedSessionResponse } from '@modules/sessions/application/validate/validated-session.response'; +import { UserRoles } from '@modules/users/domain'; +import { TriggeredByUser } from '@shared/domain/entities/triggered-by'; +import { Authentication } from '@shared/infrastructure/authentication/authentication'; +import { AuthenticationUtils } from '@shared/infrastructure/authentication/authentication-utils'; @Middleware() class AuthenticationMiddleware implements MiddlewareMethods { diff --git a/src/presentation/rest/middlewares/error-handler.middleware.ts b/src/contract/rest/middlewares/error-handler.middleware.ts similarity index 94% rename from src/presentation/rest/middlewares/error-handler.middleware.ts rename to src/contract/rest/middlewares/error-handler.middleware.ts index 9c0d2c9..42c1456 100644 --- a/src/presentation/rest/middlewares/error-handler.middleware.ts +++ b/src/contract/rest/middlewares/error-handler.middleware.ts @@ -1,15 +1,15 @@ import { Err, Middleware, MiddlewareMethods, Next, Req, Res } from '@tsed/common'; import { Exception as TsEdException } from '@tsed/exceptions'; -import { Logger } from '@domain/shared'; import { ApiException, BadRequestException, ExceptionApiResponse, ResourceNotFoundException, UnauthorizedException -} from '@presentation/rest/exceptions'; -import { InternalServerErrorException } from '@presentation/rest/exceptions/internal-server-error.exception'; +} from '@contract/rest/exceptions'; +import { InternalServerErrorException } from '@contract/rest/exceptions/internal-server-error.exception'; +import { Logger } from '@shared/domain'; @Middleware() class ErrorHandlerMiddleware implements MiddlewareMethods { diff --git a/src/presentation/rest/middlewares/index.ts b/src/contract/rest/middlewares/index.ts similarity index 100% rename from src/presentation/rest/middlewares/index.ts rename to src/contract/rest/middlewares/index.ts diff --git a/src/presentation/rest/middlewares/logger.middleware.ts b/src/contract/rest/middlewares/logger.middleware.ts similarity index 78% rename from src/presentation/rest/middlewares/logger.middleware.ts rename to src/contract/rest/middlewares/logger.middleware.ts index 9d7db8f..caabf17 100644 --- a/src/presentation/rest/middlewares/logger.middleware.ts +++ b/src/contract/rest/middlewares/logger.middleware.ts @@ -1,7 +1,7 @@ import { Context, Middleware, MiddlewareMethods, Req, Res } from '@tsed/common'; -import { GlobalConfig } from '@infrastructure/shared/config'; -import { PINO_LOGGER } from '@infrastructure/shared/logger/pino-logger'; +import { GlobalConfig } from '@shared/infrastructure/config'; +import { PINO_LOGGER } from '@shared/infrastructure/logger/pino-logger'; @Middleware() class LoggerMiddleware implements MiddlewareMethods { diff --git a/src/presentation/rest/middlewares/metadata.middleware.ts b/src/contract/rest/middlewares/metadata.middleware.ts similarity index 77% rename from src/presentation/rest/middlewares/metadata.middleware.ts rename to src/contract/rest/middlewares/metadata.middleware.ts index 4310a69..ec0eefe 100644 --- a/src/presentation/rest/middlewares/metadata.middleware.ts +++ b/src/contract/rest/middlewares/metadata.middleware.ts @@ -1,12 +1,12 @@ import { Context, Middleware, MiddlewareMethods, OnResponse, Req } from '@tsed/common'; -import { Token, TokenProviderDomainService } from '@domain/sessions/tokens'; -import { Nullable } from '@domain/shared'; -import { TriggeredByAnonymous, TriggeredByUser } from '@domain/shared/entities/triggered-by'; -import { Authentication } from '@infrastructure/shared/authentication'; -import { AuthenticationUtils } from '@infrastructure/shared/authentication/authentication-utils'; -import { AppConfig } from '@presentation/rest/config'; -import { RequestUtils } from '@presentation/rest/shared/request.utils'; +import { AppConfig } from '@contract/rest/config'; +import { RequestUtils } from '@contract/rest/shared/request.utils'; +import { Token, TokenProviderDomainService } from '@modules/sessions/domain/tokens'; +import { Nullable } from '@shared/domain'; +import { TriggeredByAnonymous, TriggeredByUser } from '@shared/domain/entities/triggered-by'; +import { Authentication } from '@shared/infrastructure/authentication'; +import { AuthenticationUtils } from '@shared/infrastructure/authentication/authentication-utils'; @Middleware() class MetadataMiddleware implements MiddlewareMethods, OnResponse { diff --git a/src/presentation/rest/middlewares/not-found.middleware.ts b/src/contract/rest/middlewares/not-found.middleware.ts similarity index 83% rename from src/presentation/rest/middlewares/not-found.middleware.ts rename to src/contract/rest/middlewares/not-found.middleware.ts index b5ffed9..dc5731c 100644 --- a/src/presentation/rest/middlewares/not-found.middleware.ts +++ b/src/contract/rest/middlewares/not-found.middleware.ts @@ -1,6 +1,6 @@ import { Middleware, MiddlewareMethods, Next, Req, Res } from '@tsed/common'; -import { PathNotFoundException } from '@presentation/rest/exceptions'; +import { PathNotFoundException } from '@contract/rest/exceptions'; @Middleware() class NotFoundMiddleware implements MiddlewareMethods { diff --git a/src/presentation/rest/server.ts b/src/contract/rest/server.ts similarity index 92% rename from src/presentation/rest/server.ts rename to src/contract/rest/server.ts index 2cdbfc5..5d67879 100644 --- a/src/presentation/rest/server.ts +++ b/src/contract/rest/server.ts @@ -1,6 +1,6 @@ +import '@tsed/ajv'; import '@tsed/platform-express'; import '@tsed/swagger'; -import '@tsed/ajv'; import './filters'; import { PlatformApplication } from '@tsed/common'; @@ -15,19 +15,21 @@ import figlet from 'figlet'; import methodOverride from 'method-override'; import * as emoji from 'node-emoji'; -import { Logger } from '@domain/shared'; -import { CacheConfig, GlobalConfig } from '@infrastructure/shared/config'; +import { Logger } from '@shared/domain'; +import { CacheConfig, GlobalConfig } from '@shared/infrastructure/config'; import { AppConfig, AppInfo } from './config'; import { ErrorHandlerMiddleware, LoggerMiddleware, MetadataMiddleware, NotFoundMiddleware } from './middlewares'; +const ROOT_DIRECTORY = __dirname; + class Server { @Inject() private app: PlatformApplication; public static async getConfiguration(): Promise> { const baseConfiguration: Partial = { - rootDir: __dirname, + rootDir: ROOT_DIRECTORY, acceptMimes: ['application/json'], httpPort: AppConfig.PORT, httpsPort: false @@ -35,11 +37,11 @@ class Server { const providersConfiguration: Partial = await importProviders({ mount: { - [AppConfig.BASE_PATH]: [`${__dirname}/controllers/**/*.controller.ts`] + [AppConfig.BASE_PATH]: [`${ROOT_DIRECTORY}/controllers/**/*.controller.ts`] }, imports: [ - `${__dirname}/../../infrastructure/**/*.domain-service.ts`, - `${__dirname}/../../infrastructure/**/*.repository.ts` + `${ROOT_DIRECTORY}/../../modules/**/infrastructure/**/*.domain-service.ts`, + `${ROOT_DIRECTORY}/../../modules/**/infrastructure/**/*.repository.ts` ] }); diff --git a/src/presentation/rest/shared/request.utils.ts b/src/contract/rest/shared/request.utils.ts similarity index 89% rename from src/presentation/rest/shared/request.utils.ts rename to src/contract/rest/shared/request.utils.ts index 674da88..3e453b1 100644 --- a/src/presentation/rest/shared/request.utils.ts +++ b/src/contract/rest/shared/request.utils.ts @@ -1,7 +1,7 @@ import { Req } from '@tsed/common'; -import { Nullable } from '@domain/shared'; -import { AppConfig } from '@presentation/rest/config'; +import { AppConfig } from '@contract/rest/config'; +import { Nullable } from '@shared/domain'; const RequestUtils = { getAccessToken: (request: Req): Nullable => { diff --git a/src/presentation/rest/shared/response.utils.ts b/src/contract/rest/shared/response.utils.ts similarity index 83% rename from src/presentation/rest/shared/response.utils.ts rename to src/contract/rest/shared/response.utils.ts index c182ab3..d7ccb32 100644 --- a/src/presentation/rest/shared/response.utils.ts +++ b/src/contract/rest/shared/response.utils.ts @@ -1,9 +1,9 @@ import { Res } from '@tsed/common'; -import { AccessToken, RefreshToken } from '@domain/sessions/tokens'; -import { Nullable } from '@domain/shared'; -import { GlobalConfig } from '@infrastructure/shared/config'; -import { AppConfig } from '@presentation/rest/config'; +import { AppConfig } from '@contract/rest/config'; +import { AccessToken, RefreshToken } from '@modules/sessions/domain/tokens'; +import { Nullable } from '@shared/domain'; +import { GlobalConfig } from '@shared/infrastructure/config'; const ResponseUtils = { attachAccessAndRefreshTokens: ( diff --git a/src/presentation/rest/shared/rest-controller.decorator.ts b/src/contract/rest/shared/rest-controller.decorator.ts similarity index 100% rename from src/presentation/rest/shared/rest-controller.decorator.ts rename to src/contract/rest/shared/rest-controller.decorator.ts diff --git a/src/presentation/rest/shared/with-auth.decorator.ts b/src/contract/rest/shared/with-auth.decorator.ts similarity index 79% rename from src/presentation/rest/shared/with-auth.decorator.ts rename to src/contract/rest/shared/with-auth.decorator.ts index d52cd15..c2aef07 100644 --- a/src/presentation/rest/shared/with-auth.decorator.ts +++ b/src/contract/rest/shared/with-auth.decorator.ts @@ -3,8 +3,8 @@ import { useDecorators } from '@tsed/core'; import { Returns, Security } from '@tsed/schema'; import { StatusCodes } from 'http-status-codes'; -import { ExceptionApiResponse } from '@presentation/rest/exceptions'; -import { AuthenticationMiddleware } from '@presentation/rest/middlewares'; +import { ExceptionApiResponse } from '@contract/rest/exceptions'; +import { AuthenticationMiddleware } from '@contract/rest/middlewares'; interface AuthOptions extends Record { roles?: string[]; diff --git a/src/healthcheck.ts b/src/healthcheck.ts index 64fc4ae..048734c 100644 --- a/src/healthcheck.ts +++ b/src/healthcheck.ts @@ -4,7 +4,7 @@ import * as http from 'node:http'; -import { AppConfig } from '@presentation/rest/config'; +import { AppConfig } from '@contract/rest/config'; const options = { host: 'localhost', diff --git a/src/index.ts b/src/index.ts index 6849cd5..72e9af6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -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 { Server } from '@contract/rest/server'; +import { Logger } from '@shared/domain'; +import { bootstrap } from '@shared/infrastructure'; const start = async (): Promise => { await bootstrap(); diff --git a/src/application/health/check-health-status.request.ts b/src/modules/health/application/check-health-status.request.ts similarity index 80% rename from src/application/health/check-health-status.request.ts rename to src/modules/health/application/check-health-status.request.ts index a515c24..2a4c355 100644 --- a/src/application/health/check-health-status.request.ts +++ b/src/modules/health/application/check-health-status.request.ts @@ -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; diff --git a/src/application/health/check-health-status.usecase.ts b/src/modules/health/application/check-health-status.usecase.ts similarity index 83% rename from src/application/health/check-health-status.usecase.ts rename to src/modules/health/application/check-health-status.usecase.ts index 519744c..05195c3 100644 --- a/src/application/health/check-health-status.usecase.ts +++ b/src/modules/health/application/check-health-status.usecase.ts @@ -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'; diff --git a/src/application/health/health-status.response.ts b/src/modules/health/application/health-status.response.ts similarity index 92% rename from src/application/health/health-status.response.ts rename to src/modules/health/application/health-status.response.ts index 77c8e6e..cf63771 100644 --- a/src/application/health/health-status.response.ts +++ b/src/modules/health/application/health-status.response.ts @@ -1,4 +1,4 @@ -import { HealthStatus } from '@domain/health'; +import { HealthStatus } from '@modules/health/domain'; class HealthStatusResponse { readonly status: string; diff --git a/src/application/health/index.ts b/src/modules/health/application/index.ts similarity index 100% rename from src/application/health/index.ts rename to src/modules/health/application/index.ts diff --git a/src/domain/health/health-status.ts b/src/modules/health/domain/health-status.ts similarity index 89% rename from src/domain/health/health-status.ts rename to src/modules/health/domain/health-status.ts index 3ff13ef..013b13f 100644 --- a/src/domain/health/health-status.ts +++ b/src/modules/health/domain/health-status.ts @@ -1,4 +1,4 @@ -import { DomainEntity } from '@domain/shared/entities'; +import { DomainEntity } from '@shared/domain/entities'; class HealthStatus extends DomainEntity { readonly status: string; diff --git a/src/domain/health/index.ts b/src/modules/health/domain/index.ts similarity index 100% rename from src/domain/health/index.ts rename to src/modules/health/domain/index.ts diff --git a/src/modules/health/infrastructure/.gitkeep b/src/modules/health/infrastructure/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/application/sessions/end/end-session.request.ts b/src/modules/sessions/application/end/end-session.request.ts similarity index 80% rename from src/application/sessions/end/end-session.request.ts rename to src/modules/sessions/application/end/end-session.request.ts index 1d57c5c..e00361a 100644 --- a/src/application/sessions/end/end-session.request.ts +++ b/src/modules/sessions/application/end/end-session.request.ts @@ -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; diff --git a/src/application/sessions/end/end-session.usecase.ts b/src/modules/sessions/application/end/end-session.usecase.ts similarity index 88% rename from src/application/sessions/end/end-session.usecase.ts rename to src/modules/sessions/application/end/end-session.usecase.ts index 795e9be..5da4fa6 100644 --- a/src/application/sessions/end/end-session.usecase.ts +++ b/src/modules/sessions/application/end/end-session.usecase.ts @@ -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'; diff --git a/src/application/sessions/end/index.ts b/src/modules/sessions/application/end/index.ts similarity index 100% rename from src/application/sessions/end/index.ts rename to src/modules/sessions/application/end/index.ts diff --git a/src/application/sessions/index.ts b/src/modules/sessions/application/index.ts similarity index 100% rename from src/application/sessions/index.ts rename to src/modules/sessions/application/index.ts diff --git a/src/application/sessions/refresh/index.ts b/src/modules/sessions/application/refresh/index.ts similarity index 100% rename from src/application/sessions/refresh/index.ts rename to src/modules/sessions/application/refresh/index.ts diff --git a/src/application/sessions/refresh/refresh-session.request.ts b/src/modules/sessions/application/refresh/refresh-session.request.ts similarity index 76% rename from src/application/sessions/refresh/refresh-session.request.ts rename to src/modules/sessions/application/refresh/refresh-session.request.ts index f0aac79..0ec2c68 100644 --- a/src/application/sessions/refresh/refresh-session.request.ts +++ b/src/modules/sessions/application/refresh/refresh-session.request.ts @@ -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; diff --git a/src/application/sessions/refresh/refresh-session.usecase.ts b/src/modules/sessions/application/refresh/refresh-session.usecase.ts similarity index 89% rename from src/application/sessions/refresh/refresh-session.usecase.ts rename to src/modules/sessions/application/refresh/refresh-session.usecase.ts index 76308cc..dc45b96 100644 --- a/src/application/sessions/refresh/refresh-session.usecase.ts +++ b/src/modules/sessions/application/refresh/refresh-session.usecase.ts @@ -1,5 +1,4 @@ -import { SessionResponse } from '@application/sessions'; -import { BaseUseCase, UseCase } from '@application/shared'; +import { SessionResponse } from '@modules/sessions/application'; import { InvalidSessionException, Session, @@ -7,9 +6,10 @@ import { 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'; diff --git a/src/application/sessions/session.response.ts b/src/modules/sessions/application/session.response.ts similarity index 79% rename from src/application/sessions/session.response.ts rename to src/modules/sessions/application/session.response.ts index d85656f..e012f56 100644 --- a/src/application/sessions/session.response.ts +++ b/src/modules/sessions/application/session.response.ts @@ -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; diff --git a/src/application/sessions/start/index.ts b/src/modules/sessions/application/start/index.ts similarity index 100% rename from src/application/sessions/start/index.ts rename to src/modules/sessions/application/start/index.ts diff --git a/src/application/sessions/start/start-session.request.ts b/src/modules/sessions/application/start/start-session.request.ts similarity index 75% rename from src/application/sessions/start/start-session.request.ts rename to src/modules/sessions/application/start/start-session.request.ts index d3a1c08..1ef92b7 100644 --- a/src/application/sessions/start/start-session.request.ts +++ b/src/modules/sessions/application/start/start-session.request.ts @@ -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; diff --git a/src/application/sessions/start/start-session.usecase.ts b/src/modules/sessions/application/start/start-session.usecase.ts similarity index 87% rename from src/application/sessions/start/start-session.usecase.ts rename to src/modules/sessions/application/start/start-session.usecase.ts index e290aad..cc933f9 100644 --- a/src/application/sessions/start/start-session.usecase.ts +++ b/src/modules/sessions/application/start/start-session.usecase.ts @@ -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'; diff --git a/src/application/sessions/validate/index.ts b/src/modules/sessions/application/validate/index.ts similarity index 100% rename from src/application/sessions/validate/index.ts rename to src/modules/sessions/application/validate/index.ts diff --git a/src/application/sessions/validate/validate-session.request.ts b/src/modules/sessions/application/validate/validate-session.request.ts similarity index 81% rename from src/application/sessions/validate/validate-session.request.ts rename to src/modules/sessions/application/validate/validate-session.request.ts index 8c75700..a00b513 100644 --- a/src/application/sessions/validate/validate-session.request.ts +++ b/src/modules/sessions/application/validate/validate-session.request.ts @@ -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; diff --git a/src/application/sessions/validate/validate-session.usecase.ts b/src/modules/sessions/application/validate/validate-session.usecase.ts similarity index 92% rename from src/application/sessions/validate/validate-session.usecase.ts rename to src/modules/sessions/application/validate/validate-session.usecase.ts index 390e4dc..b6d6ac3 100644 --- a/src/application/sessions/validate/validate-session.usecase.ts +++ b/src/modules/sessions/application/validate/validate-session.usecase.ts @@ -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'; diff --git a/src/application/sessions/validate/validated-session.response.ts b/src/modules/sessions/application/validate/validated-session.response.ts similarity index 85% rename from src/application/sessions/validate/validated-session.response.ts rename to src/modules/sessions/application/validate/validated-session.response.ts index a25d2a8..8facc6f 100644 --- a/src/application/sessions/validate/validated-session.response.ts +++ b/src/modules/sessions/application/validate/validated-session.response.ts @@ -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; diff --git a/src/domain/sessions/index.ts b/src/modules/sessions/domain/index.ts similarity index 100% rename from src/domain/sessions/index.ts rename to src/modules/sessions/domain/index.ts diff --git a/src/domain/sessions/invalid-session.exception.ts b/src/modules/sessions/domain/invalid-session.exception.ts similarity index 73% rename from src/domain/sessions/invalid-session.exception.ts rename to src/modules/sessions/domain/invalid-session.exception.ts index 3792366..2bf9b6d 100644 --- a/src/domain/sessions/invalid-session.exception.ts +++ b/src/modules/sessions/domain/invalid-session.exception.ts @@ -1,4 +1,4 @@ -import { DomainException } from '@domain/shared/exceptions'; +import { DomainException } from '@shared/domain/exceptions'; class InvalidSessionException extends DomainException { constructor() { diff --git a/src/domain/sessions/session-expires-at.ts b/src/modules/sessions/domain/session-expires-at.ts similarity index 56% rename from src/domain/sessions/session-expires-at.ts rename to src/modules/sessions/domain/session-expires-at.ts index a813569..a1dba19 100644 --- a/src/domain/sessions/session-expires-at.ts +++ b/src/modules/sessions/domain/session-expires-at.ts @@ -1,4 +1,4 @@ -import { DateValueObject } from '@domain/shared/value-object'; +import { DateValueObject } from '@shared/domain/value-object'; class SessionExpiresAt extends DateValueObject {} diff --git a/src/domain/sessions/session-id.ts b/src/modules/sessions/domain/session-id.ts similarity index 52% rename from src/domain/sessions/session-id.ts rename to src/modules/sessions/domain/session-id.ts index 880cab2..95348a3 100644 --- a/src/domain/sessions/session-id.ts +++ b/src/modules/sessions/domain/session-id.ts @@ -1,4 +1,4 @@ -import { NumberValueObject } from '@domain/shared/value-object'; +import { NumberValueObject } from '@shared/domain/value-object'; class SessionId extends NumberValueObject {} diff --git a/src/domain/sessions/session-refresh-token-hash.ts b/src/modules/sessions/domain/session-refresh-token-hash.ts similarity index 80% rename from src/domain/sessions/session-refresh-token-hash.ts rename to src/modules/sessions/domain/session-refresh-token-hash.ts index 86ccf83..b92d8bf 100644 --- a/src/domain/sessions/session-refresh-token-hash.ts +++ b/src/modules/sessions/domain/session-refresh-token-hash.ts @@ -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 { diff --git a/src/domain/sessions/session-revoked-at.ts b/src/modules/sessions/domain/session-revoked-at.ts similarity index 56% rename from src/domain/sessions/session-revoked-at.ts rename to src/modules/sessions/domain/session-revoked-at.ts index 97c80d8..910befb 100644 --- a/src/domain/sessions/session-revoked-at.ts +++ b/src/modules/sessions/domain/session-revoked-at.ts @@ -1,4 +1,4 @@ -import { DateValueObject } from '@domain/shared/value-object'; +import { DateValueObject } from '@shared/domain/value-object'; class SessionRevokedAt extends DateValueObject {} diff --git a/src/domain/sessions/session-revoked-by.ts b/src/modules/sessions/domain/session-revoked-by.ts similarity index 56% rename from src/domain/sessions/session-revoked-by.ts rename to src/modules/sessions/domain/session-revoked-by.ts index 3b78055..41b5f3b 100644 --- a/src/domain/sessions/session-revoked-by.ts +++ b/src/modules/sessions/domain/session-revoked-by.ts @@ -1,4 +1,4 @@ -import { StringValueObject } from '@domain/shared/value-object'; +import { StringValueObject } from '@shared/domain/value-object'; class SessionRevokedBy extends StringValueObject {} diff --git a/src/domain/sessions/session-revoked-reason.ts b/src/modules/sessions/domain/session-revoked-reason.ts similarity index 60% rename from src/domain/sessions/session-revoked-reason.ts rename to src/modules/sessions/domain/session-revoked-reason.ts index 8dd0eac..1e1e866 100644 --- a/src/domain/sessions/session-revoked-reason.ts +++ b/src/modules/sessions/domain/session-revoked-reason.ts @@ -1,4 +1,4 @@ -import { StringValueObject } from '@domain/shared/value-object'; +import { StringValueObject } from '@shared/domain/value-object'; class SessionRevocationReason extends StringValueObject {} diff --git a/src/domain/sessions/session-user-data.ts b/src/modules/sessions/domain/session-user-data.ts similarity index 84% rename from src/domain/sessions/session-user-data.ts rename to src/modules/sessions/domain/session-user-data.ts index a400623..d69b891 100644 --- a/src/domain/sessions/session-user-data.ts +++ b/src/modules/sessions/domain/session-user-data.ts @@ -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; diff --git a/src/domain/sessions/session-user-uuid.ts b/src/modules/sessions/domain/session-user-uuid.ts similarity index 56% rename from src/domain/sessions/session-user-uuid.ts rename to src/modules/sessions/domain/session-user-uuid.ts index 8fc96c5..928587d 100644 --- a/src/domain/sessions/session-user-uuid.ts +++ b/src/modules/sessions/domain/session-user-uuid.ts @@ -1,4 +1,4 @@ -import { Uuid } from '@domain/shared/value-object'; +import { Uuid } from '@shared/domain/value-object'; class SessionUserUuid extends Uuid {} diff --git a/src/domain/sessions/session-uuid.ts b/src/modules/sessions/domain/session-uuid.ts similarity index 53% rename from src/domain/sessions/session-uuid.ts rename to src/modules/sessions/domain/session-uuid.ts index ac52afc..9071e45 100644 --- a/src/domain/sessions/session-uuid.ts +++ b/src/modules/sessions/domain/session-uuid.ts @@ -1,4 +1,4 @@ -import { Uuid } from '@domain/shared/value-object'; +import { Uuid } from '@shared/domain/value-object'; class SessionUuid extends Uuid {} diff --git a/src/domain/sessions/session.repository.ts b/src/modules/sessions/domain/session.repository.ts similarity index 90% rename from src/domain/sessions/session.repository.ts rename to src/modules/sessions/domain/session.repository.ts index 5161f37..c67c156 100644 --- a/src/domain/sessions/session.repository.ts +++ b/src/modules/sessions/domain/session.repository.ts @@ -1,4 +1,4 @@ -import { Nullable } from '@domain/shared'; +import { Nullable } from '@shared/domain'; import { Session } from './session'; import { SessionUuid } from './session-uuid'; diff --git a/src/domain/sessions/session.ts b/src/modules/sessions/domain/session.ts similarity index 96% rename from src/domain/sessions/session.ts rename to src/modules/sessions/domain/session.ts index ffc4d6d..ab42cf9 100644 --- a/src/domain/sessions/session.ts +++ b/src/modules/sessions/domain/session.ts @@ -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'; diff --git a/src/domain/sessions/tokens/access-token.ts b/src/modules/sessions/domain/tokens/access-token.ts similarity index 83% rename from src/domain/sessions/tokens/access-token.ts rename to src/modules/sessions/domain/tokens/access-token.ts index 23044e0..3bfda84 100644 --- a/src/domain/sessions/tokens/access-token.ts +++ b/src/modules/sessions/domain/tokens/access-token.ts @@ -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'; diff --git a/src/domain/sessions/tokens/index.ts b/src/modules/sessions/domain/tokens/index.ts similarity index 100% rename from src/domain/sessions/tokens/index.ts rename to src/modules/sessions/domain/tokens/index.ts diff --git a/src/domain/sessions/tokens/refresh-token.ts b/src/modules/sessions/domain/tokens/refresh-token.ts similarity index 83% rename from src/domain/sessions/tokens/refresh-token.ts rename to src/modules/sessions/domain/tokens/refresh-token.ts index 6656c30..12dae50 100644 --- a/src/domain/sessions/tokens/refresh-token.ts +++ b/src/modules/sessions/domain/tokens/refresh-token.ts @@ -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'; diff --git a/src/domain/sessions/tokens/token-expires-at.ts b/src/modules/sessions/domain/tokens/token-expires-at.ts similarity index 55% rename from src/domain/sessions/tokens/token-expires-at.ts rename to src/modules/sessions/domain/tokens/token-expires-at.ts index 75687e3..de48cc2 100644 --- a/src/domain/sessions/tokens/token-expires-at.ts +++ b/src/modules/sessions/domain/tokens/token-expires-at.ts @@ -1,4 +1,4 @@ -import { DateValueObject } from '@domain/shared/value-object'; +import { DateValueObject } from '@shared/domain/value-object'; class TokenExpiresAt extends DateValueObject {} diff --git a/src/domain/sessions/tokens/token-provider.domain-service.ts b/src/modules/sessions/domain/tokens/token-provider.domain-service.ts similarity index 78% rename from src/domain/sessions/tokens/token-provider.domain-service.ts rename to src/modules/sessions/domain/tokens/token-provider.domain-service.ts index dce2860..981cbe8 100644 --- a/src/domain/sessions/tokens/token-provider.domain-service.ts +++ b/src/modules/sessions/domain/tokens/token-provider.domain-service.ts @@ -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'; diff --git a/src/domain/sessions/tokens/token.ts b/src/modules/sessions/domain/tokens/token.ts similarity index 91% rename from src/domain/sessions/tokens/token.ts rename to src/modules/sessions/domain/tokens/token.ts index 15eb23d..9bd4f06 100644 --- a/src/domain/sessions/tokens/token.ts +++ b/src/modules/sessions/domain/tokens/token.ts @@ -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'; diff --git a/src/infrastructure/sessions/index.ts b/src/modules/sessions/infrastructure/index.ts similarity index 100% rename from src/infrastructure/sessions/index.ts rename to src/modules/sessions/infrastructure/index.ts diff --git a/src/infrastructure/sessions/prisma-session.mapper.ts b/src/modules/sessions/infrastructure/prisma-session.mapper.ts similarity index 83% rename from src/infrastructure/sessions/prisma-session.mapper.ts rename to src/modules/sessions/infrastructure/prisma-session.mapper.ts index bdcb53b..da6f258 100644 --- a/src/infrastructure/sessions/prisma-session.mapper.ts +++ b/src/modules/sessions/infrastructure/prisma-session.mapper.ts @@ -5,12 +5,12 @@ import { SessionRevocationReason, SessionRevokedAt, SessionRevokedBy -} from '@domain/sessions/'; -import { Session } from '@domain/sessions/session'; -import { SessionExpiresAt } from '@domain/sessions/session-expires-at'; -import { SessionId } from '@domain/sessions/session-id'; -import { SessionUserData } from '@domain/sessions/session-user-data'; -import { SessionUuid } from '@domain/sessions/session-uuid'; +} from '@modules/sessions/domain/'; +import { Session } from '@modules/sessions/domain/session'; +import { SessionExpiresAt } from '@modules/sessions/domain/session-expires-at'; +import { SessionId } from '@modules/sessions/domain/session-id'; +import { SessionUserData } from '@modules/sessions/domain/session-user-data'; +import { SessionUuid } from '@modules/sessions/domain/session-uuid'; class PrismaSessionMapper { public static toDomainModel(sessionPersistenceModel: SessionModel): Session { diff --git a/src/infrastructure/sessions/prisma-session.repository.ts b/src/modules/sessions/infrastructure/prisma-session.repository.ts similarity index 77% rename from src/infrastructure/sessions/prisma-session.repository.ts rename to src/modules/sessions/infrastructure/prisma-session.repository.ts index 2cc6f79..d919580 100644 --- a/src/infrastructure/sessions/prisma-session.repository.ts +++ b/src/modules/sessions/infrastructure/prisma-session.repository.ts @@ -1,13 +1,13 @@ import { SessionModel, SessionsRepository } from '@tsed/prisma'; -import { Session } from '@domain/sessions/session'; -import { SessionRepository } from '@domain/sessions/session.repository'; -import { SessionUuid } from '@domain/sessions/session-uuid'; -import { Nullable } from '@domain/shared'; -import { GlobalConfig } from '@infrastructure/shared/config'; -import { Repository } from '@infrastructure/shared/persistence'; -import { RepositoryAction } from '@infrastructure/shared/persistence/base-repository'; -import { PrismaBaseRepository } from '@infrastructure/shared/persistence/prisma/prisma-base-repository'; +import { Session } from '@modules/sessions/domain/session'; +import { SessionRepository } from '@modules/sessions/domain/session.repository'; +import { SessionUuid } from '@modules/sessions/domain/session-uuid'; +import { Nullable } from '@shared/domain'; +import { GlobalConfig } from '@shared/infrastructure/config'; +import { Repository } from '@shared/infrastructure/persistence'; +import { RepositoryAction } from '@shared/infrastructure/persistence/base-repository'; +import { PrismaBaseRepository } from '@shared/infrastructure/persistence/prisma/prisma-base-repository'; import { PrismaSessionMapper } from './prisma-session.mapper'; diff --git a/src/infrastructure/sessions/redis-session.mapper.ts b/src/modules/sessions/infrastructure/redis-session.mapper.ts similarity index 83% rename from src/infrastructure/sessions/redis-session.mapper.ts rename to src/modules/sessions/infrastructure/redis-session.mapper.ts index a149edd..a7ba82a 100644 --- a/src/infrastructure/sessions/redis-session.mapper.ts +++ b/src/modules/sessions/infrastructure/redis-session.mapper.ts @@ -3,11 +3,11 @@ import { SessionRevocationReason, SessionRevokedAt, SessionRevokedBy -} from '@domain/sessions/'; -import { Session } from '@domain/sessions/session'; -import { SessionExpiresAt } from '@domain/sessions/session-expires-at'; -import { SessionUserData } from '@domain/sessions/session-user-data'; -import { SessionUuid } from '@domain/sessions/session-uuid'; +} from '@modules/sessions/domain/'; +import { Session } from '@modules/sessions/domain/session'; +import { SessionExpiresAt } from '@modules/sessions/domain/session-expires-at'; +import { SessionUserData } from '@modules/sessions/domain/session-user-data'; +import { SessionUuid } from '@modules/sessions/domain/session-uuid'; import { RedisSession } from './redis-session'; diff --git a/src/infrastructure/sessions/redis-session.repository.ts b/src/modules/sessions/infrastructure/redis-session.repository.ts similarity index 74% rename from src/infrastructure/sessions/redis-session.repository.ts rename to src/modules/sessions/infrastructure/redis-session.repository.ts index 2aa0188..bf0851f 100644 --- a/src/infrastructure/sessions/redis-session.repository.ts +++ b/src/modules/sessions/infrastructure/redis-session.repository.ts @@ -1,15 +1,15 @@ import { Inject } from '@tsed/di'; import isEmpty from 'just-is-empty'; -import { Session } from '@domain/sessions/session'; -import { SessionRepository } from '@domain/sessions/session.repository'; -import { SessionUuid } from '@domain/sessions/session-uuid'; -import { Nullable } from '@domain/shared'; -import { REDIS_CONNECTION, RedisConnection } from '@infrastructure/shared/cache/cache'; -import { GlobalConfig } from '@infrastructure/shared/config'; -import { Repository } from '@infrastructure/shared/persistence'; -import { RepositoryAction } from '@infrastructure/shared/persistence/base-repository'; -import { RedisBaseRepository } from '@infrastructure/shared/persistence/redis/redis-base-repository'; +import { Session } from '@modules/sessions/domain/session'; +import { SessionRepository } from '@modules/sessions/domain/session.repository'; +import { SessionUuid } from '@modules/sessions/domain/session-uuid'; +import { Nullable } from '@shared/domain'; +import { REDIS_CONNECTION, RedisConnection } from '@shared/infrastructure/cache/cache'; +import { GlobalConfig } from '@shared/infrastructure/config'; +import { Repository } from '@shared/infrastructure/persistence'; +import { RepositoryAction } from '@shared/infrastructure/persistence/base-repository'; +import { RedisBaseRepository } from '@shared/infrastructure/persistence/redis/redis-base-repository'; import { RedisSession } from './redis-session'; import { RedisSessionMapper } from './redis-session.mapper'; diff --git a/src/infrastructure/sessions/redis-session.ts b/src/modules/sessions/infrastructure/redis-session.ts similarity index 85% rename from src/infrastructure/sessions/redis-session.ts rename to src/modules/sessions/infrastructure/redis-session.ts index 921eda1..ee8d315 100644 --- a/src/infrastructure/sessions/redis-session.ts +++ b/src/modules/sessions/infrastructure/redis-session.ts @@ -1,4 +1,4 @@ -import { Nullable } from '@domain/shared'; +import { Nullable } from '@shared/domain'; interface RedisSession { uuid: string; diff --git a/src/infrastructure/sessions/tokens/jwt-token-provider.domain-service.ts b/src/modules/sessions/infrastructure/tokens/jwt-token-provider.domain-service.ts similarity index 88% rename from src/infrastructure/sessions/tokens/jwt-token-provider.domain-service.ts rename to src/modules/sessions/infrastructure/tokens/jwt-token-provider.domain-service.ts index c2fbb33..2720831 100644 --- a/src/infrastructure/sessions/tokens/jwt-token-provider.domain-service.ts +++ b/src/modules/sessions/infrastructure/tokens/jwt-token-provider.domain-service.ts @@ -1,14 +1,14 @@ import jwt from 'jsonwebtoken'; import { DateTime } from 'luxon'; -import { SessionUuid } from '@domain/sessions/session-uuid'; -import { AccessToken, RefreshToken, TokenProviderDomainService } from '@domain/sessions/tokens'; -import { TokenType } from '@domain/sessions/tokens/token'; -import { TokenExpiresAt } from '@domain/sessions/tokens/token-expires-at'; -import { Nullable } from '@domain/shared'; -import { DomainService } from '@domain/shared/services'; -import { UserEmail, UserRole, UserUsername, UserUuid } from '@domain/users'; -import { GlobalConfig } from '@infrastructure/shared/config'; +import { SessionUuid } from '@modules/sessions/domain/session-uuid'; +import { AccessToken, RefreshToken, TokenProviderDomainService } from '@modules/sessions/domain/tokens'; +import { TokenType } from '@modules/sessions/domain/tokens/token'; +import { TokenExpiresAt } from '@modules/sessions/domain/tokens/token-expires-at'; +import { UserEmail, UserRole, UserUsername, UserUuid } from '@modules/users/domain'; +import { Nullable } from '@shared/domain'; +import { DomainService } from '@shared/domain/services'; +import { GlobalConfig } from '@shared/infrastructure/config'; @DomainService({ type: TokenProviderDomainService }) class JwtTokenProvider extends TokenProviderDomainService { diff --git a/src/application/users/authentication/authenticate-user.request.ts b/src/modules/users/application/authentication/authenticate-user.request.ts similarity index 81% rename from src/application/users/authentication/authenticate-user.request.ts rename to src/modules/users/application/authentication/authenticate-user.request.ts index aa38bc4..e013dbf 100644 --- a/src/application/users/authentication/authenticate-user.request.ts +++ b/src/modules/users/application/authentication/authenticate-user.request.ts @@ -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 AuthenticateUserRequest extends UseCaseRequest { readonly username: string; diff --git a/src/application/users/authentication/authenticate-user.usecase.ts b/src/modules/users/application/authentication/authenticate-user.usecase.ts similarity index 81% rename from src/application/users/authentication/authenticate-user.usecase.ts rename to src/modules/users/application/authentication/authenticate-user.usecase.ts index 9ab29d9..0eade7d 100644 --- a/src/application/users/authentication/authenticate-user.usecase.ts +++ b/src/modules/users/application/authentication/authenticate-user.usecase.ts @@ -1,11 +1,11 @@ -import { BaseUseCase, UseCase } from '@application/shared'; -import { UserResponse } from '@application/users'; -import { Nullable } from '@domain/shared'; -import { User, UserRepository, UserUsername } from '@domain/users'; +import { UserResponse } from '@modules/users/application'; +import { User, UserRepository, UserUsername } from '@modules/users/domain'; import { InvalidAuthenticationCredentialsException, InvalidAuthenticationUsernameException -} from '@domain/users/authentication'; +} from '@modules/users/domain/authentication'; +import { BaseUseCase, UseCase } from '@shared/application'; +import { Nullable } from '@shared/domain'; import { AuthenticateUserRequest } from './authenticate-user.request'; diff --git a/src/application/users/authentication/index.ts b/src/modules/users/application/authentication/index.ts similarity index 100% rename from src/application/users/authentication/index.ts rename to src/modules/users/application/authentication/index.ts diff --git a/src/application/users/find/find-user.request.ts b/src/modules/users/application/find/find-user.request.ts similarity index 73% rename from src/application/users/find/find-user.request.ts rename to src/modules/users/application/find/find-user.request.ts index e4f2369..7936c92 100644 --- a/src/application/users/find/find-user.request.ts +++ b/src/modules/users/application/find/find-user.request.ts @@ -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 FindUserRequest extends UseCaseRequest { readonly uuid: string; diff --git a/src/application/users/find/find-user.usecase.ts b/src/modules/users/application/find/find-user.usecase.ts similarity index 80% rename from src/application/users/find/find-user.usecase.ts rename to src/modules/users/application/find/find-user.usecase.ts index 5b86437..4ff94bc 100644 --- a/src/application/users/find/find-user.usecase.ts +++ b/src/modules/users/application/find/find-user.usecase.ts @@ -1,7 +1,7 @@ -import { BaseUseCase, UseCase } from '@application/shared'; -import { UserResponse } from '@application/users'; -import { Nullable } from '@domain/shared'; -import { User, UserNotExistsException, UserRepository, UserUuid } from '@domain/users'; +import { UserResponse } from '@modules/users/application'; +import { User, UserNotExistsException, UserRepository, UserUuid } from '@modules/users/domain'; +import { BaseUseCase, UseCase } from '@shared/application'; +import { Nullable } from '@shared/domain'; import { FindUserRequest } from './find-user.request'; diff --git a/src/application/users/find/index.ts b/src/modules/users/application/find/index.ts similarity index 100% rename from src/application/users/find/index.ts rename to src/modules/users/application/find/index.ts diff --git a/src/application/users/index.ts b/src/modules/users/application/index.ts similarity index 100% rename from src/application/users/index.ts rename to src/modules/users/application/index.ts diff --git a/src/application/users/search-all/index.ts b/src/modules/users/application/search-all/index.ts similarity index 100% rename from src/application/users/search-all/index.ts rename to src/modules/users/application/search-all/index.ts diff --git a/src/application/users/search-all/search-all-users.request.ts b/src/modules/users/application/search-all/search-all-users.request.ts similarity index 71% rename from src/application/users/search-all/search-all-users.request.ts rename to src/modules/users/application/search-all/search-all-users.request.ts index 99f45b6..5106e15 100644 --- a/src/application/users/search-all/search-all-users.request.ts +++ b/src/modules/users/application/search-all/search-all-users.request.ts @@ -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 SearchAllUsersRequest extends UseCaseRequest { public static create(triggeredBy: TriggeredBy): SearchAllUsersRequest { diff --git a/src/application/users/search-all/search-all-users.usecase.ts b/src/modules/users/application/search-all/search-all-users.usecase.ts similarity index 75% rename from src/application/users/search-all/search-all-users.usecase.ts rename to src/modules/users/application/search-all/search-all-users.usecase.ts index fb3767d..9321848 100644 --- a/src/application/users/search-all/search-all-users.usecase.ts +++ b/src/modules/users/application/search-all/search-all-users.usecase.ts @@ -1,6 +1,6 @@ -import { BaseUseCase, UseCase } from '@application/shared'; -import { UserResponse } from '@application/users'; -import { UserRepository } from '@domain/users'; +import { UserResponse } from '@modules/users/application'; +import { UserRepository } from '@modules/users/domain'; +import { BaseUseCase, UseCase } from '@shared/application'; import { SearchAllUsersRequest } from './search-all-users.request'; diff --git a/src/application/users/user.response.ts b/src/modules/users/application/user.response.ts similarity index 97% rename from src/application/users/user.response.ts rename to src/modules/users/application/user.response.ts index 64321e4..a5f46aa 100644 --- a/src/application/users/user.response.ts +++ b/src/modules/users/application/user.response.ts @@ -1,4 +1,4 @@ -import { User } from '@domain/users'; +import { User } from '@modules/users/domain'; class UserResponse { readonly uuid: string; diff --git a/src/domain/users/authentication/index.ts b/src/modules/users/domain/authentication/index.ts similarity index 100% rename from src/domain/users/authentication/index.ts rename to src/modules/users/domain/authentication/index.ts diff --git a/src/domain/users/authentication/invalid-authentication-credentials.exception.ts b/src/modules/users/domain/authentication/invalid-authentication-credentials.exception.ts similarity index 81% rename from src/domain/users/authentication/invalid-authentication-credentials.exception.ts rename to src/modules/users/domain/authentication/invalid-authentication-credentials.exception.ts index 391e3d3..8113fd7 100644 --- a/src/domain/users/authentication/invalid-authentication-credentials.exception.ts +++ b/src/modules/users/domain/authentication/invalid-authentication-credentials.exception.ts @@ -1,4 +1,4 @@ -import { DomainException } from '@domain/shared/exceptions'; +import { DomainException } from '@shared/domain/exceptions'; class InvalidAuthenticationCredentialsException extends DomainException { constructor(username: string) { diff --git a/src/domain/users/authentication/invalid-authentication-username.exception.ts b/src/modules/users/domain/authentication/invalid-authentication-username.exception.ts similarity index 81% rename from src/domain/users/authentication/invalid-authentication-username.exception.ts rename to src/modules/users/domain/authentication/invalid-authentication-username.exception.ts index 04cfc00..ade4133 100644 --- a/src/domain/users/authentication/invalid-authentication-username.exception.ts +++ b/src/modules/users/domain/authentication/invalid-authentication-username.exception.ts @@ -1,4 +1,4 @@ -import { DomainException } from '@domain/shared/exceptions'; +import { DomainException } from '@shared/domain/exceptions'; class InvalidAuthenticationUsernameException extends DomainException { constructor(username: string) { diff --git a/src/domain/users/index.ts b/src/modules/users/domain/index.ts similarity index 100% rename from src/domain/users/index.ts rename to src/modules/users/domain/index.ts diff --git a/src/domain/users/user-address.ts b/src/modules/users/domain/user-address.ts similarity index 53% rename from src/domain/users/user-address.ts rename to src/modules/users/domain/user-address.ts index 81643ed..7b86138 100644 --- a/src/domain/users/user-address.ts +++ b/src/modules/users/domain/user-address.ts @@ -1,4 +1,4 @@ -import { StringValueObject } from '@domain/shared/value-object'; +import { StringValueObject } from '@shared/domain/value-object'; class UserAddress extends StringValueObject {} diff --git a/src/domain/users/user-birth-date.ts b/src/modules/users/domain/user-birth-date.ts similarity index 54% rename from src/domain/users/user-birth-date.ts rename to src/modules/users/domain/user-birth-date.ts index 8d4b815..5b976a0 100644 --- a/src/domain/users/user-birth-date.ts +++ b/src/modules/users/domain/user-birth-date.ts @@ -1,4 +1,4 @@ -import { DateValueObject } from '@domain/shared/value-object'; +import { DateValueObject } from '@shared/domain/value-object'; class UserBirthDate extends DateValueObject {} diff --git a/src/domain/users/user-email.ts b/src/modules/users/domain/user-email.ts similarity index 52% rename from src/domain/users/user-email.ts rename to src/modules/users/domain/user-email.ts index 3e95cbb..f97cca7 100644 --- a/src/domain/users/user-email.ts +++ b/src/modules/users/domain/user-email.ts @@ -1,4 +1,4 @@ -import { StringValueObject } from '@domain/shared/value-object'; +import { StringValueObject } from '@shared/domain/value-object'; class UserEmail extends StringValueObject {} diff --git a/src/domain/users/user-gender.ts b/src/modules/users/domain/user-gender.ts similarity index 87% rename from src/domain/users/user-gender.ts rename to src/modules/users/domain/user-gender.ts index 06ec45d..cba46aa 100644 --- a/src/domain/users/user-gender.ts +++ b/src/modules/users/domain/user-gender.ts @@ -1,5 +1,5 @@ -import { InvalidParameterException } from '@domain/shared/exceptions'; -import { EnumValueObject } from '@domain/shared/value-object/enum-value-object'; +import { InvalidParameterException } from '@shared/domain/exceptions'; +import { EnumValueObject } from '@shared/domain/value-object/enum-value-object'; enum UserGenders { UNDEFINED = 'undefined', diff --git a/src/domain/users/user-id.ts b/src/modules/users/domain/user-id.ts similarity index 50% rename from src/domain/users/user-id.ts rename to src/modules/users/domain/user-id.ts index 0fd6ef7..6d9ca65 100644 --- a/src/domain/users/user-id.ts +++ b/src/modules/users/domain/user-id.ts @@ -1,4 +1,4 @@ -import { NumberValueObject } from '@domain/shared/value-object'; +import { NumberValueObject } from '@shared/domain/value-object'; class UserId extends NumberValueObject {} diff --git a/src/domain/users/user-name.ts b/src/modules/users/domain/user-name.ts similarity index 80% rename from src/domain/users/user-name.ts rename to src/modules/users/domain/user-name.ts index a46c322..8bb4a10 100644 --- a/src/domain/users/user-name.ts +++ b/src/modules/users/domain/user-name.ts @@ -1,4 +1,4 @@ -import { CompositeValueObject } from '@domain/shared/value-object'; +import { CompositeValueObject } from '@shared/domain/value-object'; class UserName extends CompositeValueObject { readonly firstName: string; diff --git a/src/domain/users/user-not-exists.exception.ts b/src/modules/users/domain/user-not-exists.exception.ts similarity index 76% rename from src/domain/users/user-not-exists.exception.ts rename to src/modules/users/domain/user-not-exists.exception.ts index 565e78f..f1ee967 100644 --- a/src/domain/users/user-not-exists.exception.ts +++ b/src/modules/users/domain/user-not-exists.exception.ts @@ -1,4 +1,4 @@ -import { DomainException } from '@domain/shared/exceptions'; +import { DomainException } from '@shared/domain/exceptions'; class UserNotExistsException extends DomainException { constructor(uuid: string) { diff --git a/src/domain/users/user-password-hash.ts b/src/modules/users/domain/user-password-hash.ts similarity index 78% rename from src/domain/users/user-password-hash.ts rename to src/modules/users/domain/user-password-hash.ts index 6ea44fd..c6e4f63 100644 --- a/src/domain/users/user-password-hash.ts +++ b/src/modules/users/domain/user-password-hash.ts @@ -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 UserPasswordHash extends StringValueObject { public static async createFromPlainPassword(userPassword: string): Promise { diff --git a/src/domain/users/user-phone-number.ts b/src/modules/users/domain/user-phone-number.ts similarity index 56% rename from src/domain/users/user-phone-number.ts rename to src/modules/users/domain/user-phone-number.ts index 50599d8..b760cab 100644 --- a/src/domain/users/user-phone-number.ts +++ b/src/modules/users/domain/user-phone-number.ts @@ -1,4 +1,4 @@ -import { StringValueObject } from '@domain/shared/value-object'; +import { StringValueObject } from '@shared/domain/value-object'; class UserPhoneNumber extends StringValueObject {} diff --git a/src/domain/users/user-profile-picture.ts b/src/modules/users/domain/user-profile-picture.ts similarity index 57% rename from src/domain/users/user-profile-picture.ts rename to src/modules/users/domain/user-profile-picture.ts index 47d9035..b1562d8 100644 --- a/src/domain/users/user-profile-picture.ts +++ b/src/modules/users/domain/user-profile-picture.ts @@ -1,4 +1,4 @@ -import { StringValueObject } from '@domain/shared/value-object'; +import { StringValueObject } from '@shared/domain/value-object'; class UserProfilePicture extends StringValueObject {} diff --git a/src/domain/users/user-role.ts b/src/modules/users/domain/user-role.ts similarity index 86% rename from src/domain/users/user-role.ts rename to src/modules/users/domain/user-role.ts index e799be5..ec9658f 100644 --- a/src/domain/users/user-role.ts +++ b/src/modules/users/domain/user-role.ts @@ -1,5 +1,5 @@ -import { InvalidParameterException } from '@domain/shared/exceptions'; -import { EnumValueObject } from '@domain/shared/value-object/enum-value-object'; +import { InvalidParameterException } from '@shared/domain/exceptions'; +import { EnumValueObject } from '@shared/domain/value-object/enum-value-object'; enum UserRoles { ADMIN = 'admin', diff --git a/src/domain/users/user-username.ts b/src/modules/users/domain/user-username.ts similarity index 54% rename from src/domain/users/user-username.ts rename to src/modules/users/domain/user-username.ts index d8ceb62..aa0685c 100644 --- a/src/domain/users/user-username.ts +++ b/src/modules/users/domain/user-username.ts @@ -1,4 +1,4 @@ -import { StringValueObject } from '@domain/shared/value-object'; +import { StringValueObject } from '@shared/domain/value-object'; class UserUsername extends StringValueObject {} diff --git a/src/domain/users/user-uuid.ts b/src/modules/users/domain/user-uuid.ts similarity index 50% rename from src/domain/users/user-uuid.ts rename to src/modules/users/domain/user-uuid.ts index b7f2b12..da89694 100644 --- a/src/domain/users/user-uuid.ts +++ b/src/modules/users/domain/user-uuid.ts @@ -1,4 +1,4 @@ -import { Uuid } from '@domain/shared/value-object'; +import { Uuid } from '@shared/domain/value-object'; class UserUuid extends Uuid {} diff --git a/src/domain/users/user.repository.ts b/src/modules/users/domain/user.repository.ts similarity index 84% rename from src/domain/users/user.repository.ts rename to src/modules/users/domain/user.repository.ts index fc68e57..08dfd44 100644 --- a/src/domain/users/user.repository.ts +++ b/src/modules/users/domain/user.repository.ts @@ -1,5 +1,5 @@ -import { Nullable } from '@domain/shared'; -import { UserUsername } from '@domain/users/user-username'; +import { UserUsername } from '@modules/users/domain/user-username'; +import { Nullable } from '@shared/domain'; import { User } from './user'; import { UserEmail } from './user-email'; diff --git a/src/domain/users/user.ts b/src/modules/users/domain/user.ts similarity index 97% rename from src/domain/users/user.ts rename to src/modules/users/domain/user.ts index c1c67a6..26afbca 100644 --- a/src/domain/users/user.ts +++ b/src/modules/users/domain/user.ts @@ -1,5 +1,5 @@ -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 { UserAddress } from './user-address'; import { UserBirthDate } from './user-birth-date'; diff --git a/src/infrastructure/users/index.ts b/src/modules/users/infrastructure/index.ts similarity index 100% rename from src/infrastructure/users/index.ts rename to src/modules/users/infrastructure/index.ts diff --git a/src/infrastructure/users/prisma-user.mapper.ts b/src/modules/users/infrastructure/prisma-user.mapper.ts similarity index 95% rename from src/infrastructure/users/prisma-user.mapper.ts rename to src/modules/users/infrastructure/prisma-user.mapper.ts index 268f1e2..887ee1a 100644 --- a/src/infrastructure/users/prisma-user.mapper.ts +++ b/src/modules/users/infrastructure/prisma-user.mapper.ts @@ -13,8 +13,8 @@ import { UserProfilePicture, UserRole, UserUuid -} from '@domain/users'; -import { UserUsername } from '@domain/users/user-username'; +} from '@modules/users/domain'; +import { UserUsername } from '@modules/users/domain/user-username'; class PrismaUserMapper { public static toDomainModel(userPersistenceModel: UserModel): User { diff --git a/src/infrastructure/users/prisma-user.repository.ts b/src/modules/users/infrastructure/prisma-user.repository.ts similarity index 84% rename from src/infrastructure/users/prisma-user.repository.ts rename to src/modules/users/infrastructure/prisma-user.repository.ts index 34ab23d..01b2729 100644 --- a/src/infrastructure/users/prisma-user.repository.ts +++ b/src/modules/users/infrastructure/prisma-user.repository.ts @@ -1,11 +1,11 @@ import { UserModel, UsersRepository } from '@tsed/prisma'; -import { Nullable } from '@domain/shared'; -import { UserEmail, UserRepository, UserUuid } from '@domain/users'; -import { User } from '@domain/users/user'; -import { UserUsername } from '@domain/users/user-username'; -import { BaseRepository, RepositoryAction } from '@infrastructure/shared/persistence/base-repository'; -import { Repository } from '@infrastructure/shared/persistence/repository.decorator'; +import { UserEmail, UserRepository, UserUuid } from '@modules/users/domain'; +import { User } from '@modules/users/domain/user'; +import { UserUsername } from '@modules/users/domain/user-username'; +import { Nullable } from '@shared/domain'; +import { BaseRepository, RepositoryAction } from '@shared/infrastructure/persistence/base-repository'; +import { Repository } from '@shared/infrastructure/persistence/repository.decorator'; import { PrismaUserMapper } from './prisma-user.mapper'; diff --git a/src/application/shared/base-usecase.ts b/src/shared/application/base-usecase.ts similarity index 95% rename from src/application/shared/base-usecase.ts rename to src/shared/application/base-usecase.ts index 1f5b8f3..8b8dd79 100644 --- a/src/application/shared/base-usecase.ts +++ b/src/shared/application/base-usecase.ts @@ -1,6 +1,6 @@ import { performance } from 'node:perf_hooks'; -import { Logger } from '@domain/shared'; +import { Logger } from '@shared/domain'; import { UseCaseRequest } from './usecase.request'; diff --git a/src/application/shared/index.ts b/src/shared/application/index.ts similarity index 100% rename from src/application/shared/index.ts rename to src/shared/application/index.ts diff --git a/src/application/shared/usecase.decorator.ts b/src/shared/application/usecase.decorator.ts similarity index 91% rename from src/application/shared/usecase.decorator.ts rename to src/shared/application/usecase.decorator.ts index f30d543..ac75e72 100644 --- a/src/application/shared/usecase.decorator.ts +++ b/src/shared/application/usecase.decorator.ts @@ -2,8 +2,8 @@ import { useDecorators } from '@tsed/core'; import { registerProvider } from '@tsed/di'; import * as emoji from 'node-emoji'; -import { BaseUseCase } from '@application/shared/base-usecase'; -import { Logger } from '@domain/shared'; +import { BaseUseCase } from '@shared/application/base-usecase'; +import { Logger } from '@shared/domain'; const USE_CASES: BaseUseCase[] = []; diff --git a/src/application/shared/usecase.request.ts b/src/shared/application/usecase.request.ts similarity index 82% rename from src/application/shared/usecase.request.ts rename to src/shared/application/usecase.request.ts index 1891b50..3bfb779 100644 --- a/src/application/shared/usecase.request.ts +++ b/src/shared/application/usecase.request.ts @@ -1,7 +1,7 @@ import { deepEqual } from 'fast-equals'; -import { TriggeredBy } from '@domain/shared/entities/triggered-by'; -import { InvalidParameterException } from '@domain/shared/exceptions'; +import { TriggeredBy } from '@shared/domain/entities/triggered-by'; +import { InvalidParameterException } from '@shared/domain/exceptions'; abstract class UseCaseRequest { readonly triggeredBy: TriggeredBy; diff --git a/src/domain/shared/entities/domain-entity.ts b/src/shared/domain/entities/domain-entity.ts similarity index 100% rename from src/domain/shared/entities/domain-entity.ts rename to src/shared/domain/entities/domain-entity.ts diff --git a/src/domain/shared/entities/index.ts b/src/shared/domain/entities/index.ts similarity index 100% rename from src/domain/shared/entities/index.ts rename to src/shared/domain/entities/index.ts diff --git a/src/domain/shared/entities/triggered-by/index.ts b/src/shared/domain/entities/triggered-by/index.ts similarity index 100% rename from src/domain/shared/entities/triggered-by/index.ts rename to src/shared/domain/entities/triggered-by/index.ts diff --git a/src/domain/shared/entities/triggered-by/triggered-by-anonymous.ts b/src/shared/domain/entities/triggered-by/triggered-by-anonymous.ts similarity index 100% rename from src/domain/shared/entities/triggered-by/triggered-by-anonymous.ts rename to src/shared/domain/entities/triggered-by/triggered-by-anonymous.ts diff --git a/src/domain/shared/entities/triggered-by/triggered-by-system.ts b/src/shared/domain/entities/triggered-by/triggered-by-system.ts similarity index 100% rename from src/domain/shared/entities/triggered-by/triggered-by-system.ts rename to src/shared/domain/entities/triggered-by/triggered-by-system.ts diff --git a/src/domain/shared/entities/triggered-by/triggered-by-user.ts b/src/shared/domain/entities/triggered-by/triggered-by-user.ts similarity index 100% rename from src/domain/shared/entities/triggered-by/triggered-by-user.ts rename to src/shared/domain/entities/triggered-by/triggered-by-user.ts diff --git a/src/domain/shared/entities/triggered-by/triggered-by.ts b/src/shared/domain/entities/triggered-by/triggered-by.ts similarity index 86% rename from src/domain/shared/entities/triggered-by/triggered-by.ts rename to src/shared/domain/entities/triggered-by/triggered-by.ts index f3b4534..32d2dc7 100644 --- a/src/domain/shared/entities/triggered-by/triggered-by.ts +++ b/src/shared/domain/entities/triggered-by/triggered-by.ts @@ -1,4 +1,4 @@ -import { InvalidParameterException } from '@domain/shared/exceptions/invalid-parameter.exception'; +import { InvalidParameterException } from '@shared/domain/exceptions/invalid-parameter.exception'; abstract class TriggeredBy { who: string; diff --git a/src/domain/shared/exceptions/domain.exception.ts b/src/shared/domain/exceptions/domain.exception.ts similarity index 100% rename from src/domain/shared/exceptions/domain.exception.ts rename to src/shared/domain/exceptions/domain.exception.ts diff --git a/src/domain/shared/exceptions/index.ts b/src/shared/domain/exceptions/index.ts similarity index 100% rename from src/domain/shared/exceptions/index.ts rename to src/shared/domain/exceptions/index.ts diff --git a/src/domain/shared/exceptions/invalid-parameter.exception.ts b/src/shared/domain/exceptions/invalid-parameter.exception.ts similarity index 100% rename from src/domain/shared/exceptions/invalid-parameter.exception.ts rename to src/shared/domain/exceptions/invalid-parameter.exception.ts diff --git a/src/domain/shared/index.ts b/src/shared/domain/index.ts similarity index 100% rename from src/domain/shared/index.ts rename to src/shared/domain/index.ts diff --git a/src/domain/shared/logger.ts b/src/shared/domain/logger.ts similarity index 95% rename from src/domain/shared/logger.ts rename to src/shared/domain/logger.ts index c44e3d6..9020edd 100644 --- a/src/domain/shared/logger.ts +++ b/src/shared/domain/logger.ts @@ -1,6 +1,6 @@ /* eslint-disable hexagonal-architecture/enforce */ -import { Nullable } from '@domain/shared/types'; -import { PINO_LOGGER } from '@infrastructure/shared/logger/pino-logger'; +import { Nullable } from '@shared/domain/types'; +import { PINO_LOGGER } from '@shared/infrastructure/logger/pino-logger'; import { LoggerDomainService } from './services'; diff --git a/src/domain/shared/services/domain-service.decorator.ts b/src/shared/domain/services/domain-service.decorator.ts similarity index 96% rename from src/domain/shared/services/domain-service.decorator.ts rename to src/shared/domain/services/domain-service.decorator.ts index 9a805f7..8f16f93 100644 --- a/src/domain/shared/services/domain-service.decorator.ts +++ b/src/shared/domain/services/domain-service.decorator.ts @@ -2,7 +2,7 @@ import { useDecorators } from '@tsed/core'; import { registerProvider } from '@tsed/di'; import * as emoji from 'node-emoji'; -import { Logger } from '@domain/shared'; +import { Logger } from '@shared/domain'; const DOMAIN_SERVICES: any[] = []; diff --git a/src/domain/shared/services/hasher.domain-service.ts b/src/shared/domain/services/hasher.domain-service.ts similarity index 100% rename from src/domain/shared/services/hasher.domain-service.ts rename to src/shared/domain/services/hasher.domain-service.ts diff --git a/src/domain/shared/services/index.ts b/src/shared/domain/services/index.ts similarity index 100% rename from src/domain/shared/services/index.ts rename to src/shared/domain/services/index.ts diff --git a/src/domain/shared/services/logger.domain-service.ts b/src/shared/domain/services/logger.domain-service.ts similarity index 100% rename from src/domain/shared/services/logger.domain-service.ts rename to src/shared/domain/services/logger.domain-service.ts diff --git a/src/domain/shared/types.ts b/src/shared/domain/types.ts similarity index 100% rename from src/domain/shared/types.ts rename to src/shared/domain/types.ts diff --git a/src/domain/shared/value-object/composite-value-object.ts b/src/shared/domain/value-object/composite-value-object.ts similarity index 100% rename from src/domain/shared/value-object/composite-value-object.ts rename to src/shared/domain/value-object/composite-value-object.ts diff --git a/src/domain/shared/value-object/date-value-object.ts b/src/shared/domain/value-object/date-value-object.ts similarity index 100% rename from src/domain/shared/value-object/date-value-object.ts rename to src/shared/domain/value-object/date-value-object.ts diff --git a/src/domain/shared/value-object/enum-value-object.ts b/src/shared/domain/value-object/enum-value-object.ts similarity index 100% rename from src/domain/shared/value-object/enum-value-object.ts rename to src/shared/domain/value-object/enum-value-object.ts diff --git a/src/domain/shared/value-object/index.ts b/src/shared/domain/value-object/index.ts similarity index 100% rename from src/domain/shared/value-object/index.ts rename to src/shared/domain/value-object/index.ts diff --git a/src/domain/shared/value-object/number-value-object.ts b/src/shared/domain/value-object/number-value-object.ts similarity index 100% rename from src/domain/shared/value-object/number-value-object.ts rename to src/shared/domain/value-object/number-value-object.ts diff --git a/src/domain/shared/value-object/string-value-object.ts b/src/shared/domain/value-object/string-value-object.ts similarity index 100% rename from src/domain/shared/value-object/string-value-object.ts rename to src/shared/domain/value-object/string-value-object.ts diff --git a/src/domain/shared/value-object/uuid.ts b/src/shared/domain/value-object/uuid.ts similarity index 89% rename from src/domain/shared/value-object/uuid.ts rename to src/shared/domain/value-object/uuid.ts index 0a3b3fd..86ffac3 100644 --- a/src/domain/shared/value-object/uuid.ts +++ b/src/shared/domain/value-object/uuid.ts @@ -1,6 +1,6 @@ import { v4, validate } from 'uuid'; -import { InvalidParameterException } from '@domain/shared/exceptions'; +import { InvalidParameterException } from '@shared/domain/exceptions'; import { StringValueObject } from './string-value-object'; diff --git a/src/domain/shared/value-object/value-object.ts b/src/shared/domain/value-object/value-object.ts similarity index 91% rename from src/domain/shared/value-object/value-object.ts rename to src/shared/domain/value-object/value-object.ts index a5a311e..a356eba 100644 --- a/src/domain/shared/value-object/value-object.ts +++ b/src/shared/domain/value-object/value-object.ts @@ -1,6 +1,6 @@ import { deepEqual } from 'fast-equals'; -import { InvalidParameterException } from '@domain/shared/exceptions'; +import { InvalidParameterException } from '@shared/domain/exceptions'; type Primitive = bigint | number | boolean | string | Date | symbol; diff --git a/src/infrastructure/shared/authentication/authentication-utils.ts b/src/shared/infrastructure/authentication/authentication-utils.ts similarity index 91% rename from src/infrastructure/shared/authentication/authentication-utils.ts rename to src/shared/infrastructure/authentication/authentication-utils.ts index 34a98b9..c4c4869 100644 --- a/src/infrastructure/shared/authentication/authentication-utils.ts +++ b/src/shared/infrastructure/authentication/authentication-utils.ts @@ -1,4 +1,4 @@ -import { Nullable } from '@domain/shared'; +import { Nullable } from '@shared/domain'; import { Authentication } from './authentication'; diff --git a/src/infrastructure/shared/authentication/authentication.ts b/src/shared/infrastructure/authentication/authentication.ts similarity index 94% rename from src/infrastructure/shared/authentication/authentication.ts rename to src/shared/infrastructure/authentication/authentication.ts index 5e762dc..8579f46 100644 --- a/src/infrastructure/shared/authentication/authentication.ts +++ b/src/shared/infrastructure/authentication/authentication.ts @@ -1,4 +1,4 @@ -import { Nullable } from '@domain/shared'; +import { Nullable } from '@shared/domain'; class Authentication { readonly uuid: Nullable; diff --git a/src/infrastructure/shared/authentication/index.ts b/src/shared/infrastructure/authentication/index.ts similarity index 100% rename from src/infrastructure/shared/authentication/index.ts rename to src/shared/infrastructure/authentication/index.ts diff --git a/src/infrastructure/shared/bootstrap.ts b/src/shared/infrastructure/bootstrap.ts similarity index 96% rename from src/infrastructure/shared/bootstrap.ts rename to src/shared/infrastructure/bootstrap.ts index f069d8f..4d707e6 100644 --- a/src/infrastructure/shared/bootstrap.ts +++ b/src/shared/infrastructure/bootstrap.ts @@ -2,7 +2,7 @@ import { performance } from 'node:perf_hooks'; import * as emoji from 'node-emoji'; -import { Logger } from '@domain/shared'; +import { Logger } from '@shared/domain'; import { Cache } from './cache/cache'; import { DependencyInjection } from './di/dependency-injection'; diff --git a/src/infrastructure/shared/cache/cache.ts b/src/shared/infrastructure/cache/cache.ts similarity index 93% rename from src/infrastructure/shared/cache/cache.ts rename to src/shared/infrastructure/cache/cache.ts index 2a4071a..cc720cc 100644 --- a/src/infrastructure/shared/cache/cache.ts +++ b/src/shared/infrastructure/cache/cache.ts @@ -1,7 +1,7 @@ import { registerConnectionProvider } from '@tsed/ioredis'; import Redis from 'ioredis'; -import { Logger } from '@domain/shared'; +import { Logger } from '@shared/domain'; const REDIS_CONNECTION = Symbol.for('REDIS_CONNECTION'); type RedisConnection = Redis; diff --git a/src/infrastructure/shared/config/environment.ts b/src/shared/infrastructure/config/environment.ts similarity index 100% rename from src/infrastructure/shared/config/environment.ts rename to src/shared/infrastructure/config/environment.ts diff --git a/src/infrastructure/shared/config/index.ts b/src/shared/infrastructure/config/index.ts similarity index 100% rename from src/infrastructure/shared/config/index.ts rename to src/shared/infrastructure/config/index.ts diff --git a/src/infrastructure/shared/config/infrastructure.config.ts b/src/shared/infrastructure/config/infrastructure.config.ts similarity index 100% rename from src/infrastructure/shared/config/infrastructure.config.ts rename to src/shared/infrastructure/config/infrastructure.config.ts diff --git a/src/infrastructure/shared/di/dependency-injection.ts b/src/shared/infrastructure/di/dependency-injection.ts similarity index 97% rename from src/infrastructure/shared/di/dependency-injection.ts rename to src/shared/infrastructure/di/dependency-injection.ts index 29d9879..72899dc 100644 --- a/src/infrastructure/shared/di/dependency-injection.ts +++ b/src/shared/infrastructure/di/dependency-injection.ts @@ -1,7 +1,7 @@ import { registerProvider } from '@tsed/di'; import * as emoji from 'node-emoji'; -import { Logger } from '@domain/shared'; +import { Logger } from '@shared/domain'; class DependencyInjection { public static initialize = async (): Promise => { diff --git a/src/infrastructure/shared/index.ts b/src/shared/infrastructure/index.ts similarity index 100% rename from src/infrastructure/shared/index.ts rename to src/shared/infrastructure/index.ts diff --git a/src/infrastructure/shared/infrastructure-service.decorator.ts b/src/shared/infrastructure/infrastructure-service.decorator.ts similarity index 95% rename from src/infrastructure/shared/infrastructure-service.decorator.ts rename to src/shared/infrastructure/infrastructure-service.decorator.ts index 952a069..fa373f3 100644 --- a/src/infrastructure/shared/infrastructure-service.decorator.ts +++ b/src/shared/infrastructure/infrastructure-service.decorator.ts @@ -2,7 +2,7 @@ import { useDecorators } from '@tsed/core'; import { registerProvider } from '@tsed/di'; import * as emoji from 'node-emoji'; -import { Logger } from '@domain/shared'; +import { Logger } from '@shared/domain'; type InfrastructureServiceOptions = { enabled?: boolean; diff --git a/src/infrastructure/shared/logger/pino-logger.ts b/src/shared/infrastructure/logger/pino-logger.ts similarity index 97% rename from src/infrastructure/shared/logger/pino-logger.ts rename to src/shared/infrastructure/logger/pino-logger.ts index 16a59fe..2a83e42 100644 --- a/src/infrastructure/shared/logger/pino-logger.ts +++ b/src/shared/infrastructure/logger/pino-logger.ts @@ -3,8 +3,8 @@ import { NextFunction, Request, Response } from 'express'; import pino, { Level, Logger as PinoLoggerType, TransportTargetOptions } from 'pino'; import pinoHttp from 'pino-http'; -import { LoggerDomainService } from '@domain/shared/services'; -import { GlobalConfig } from '@infrastructure/shared/config'; +import { LoggerDomainService } from '@shared/domain/services'; +import { GlobalConfig } from '@shared/infrastructure/config'; enum LogLevel { DEBUG = 'debug', @@ -161,5 +161,5 @@ class PinoLogger implements LoggerDomainService { const PINO_LOGGER = new PinoLogger(); -export type { PinoLogger }; export { PINO_LOGGER }; +export type { PinoLogger }; diff --git a/src/infrastructure/shared/logger/pino-rotate-file.transport.ts b/src/shared/infrastructure/logger/pino-rotate-file.transport.ts similarity index 100% rename from src/infrastructure/shared/logger/pino-rotate-file.transport.ts rename to src/shared/infrastructure/logger/pino-rotate-file.transport.ts diff --git a/src/infrastructure/shared/persistence/base-repository.ts b/src/shared/infrastructure/persistence/base-repository.ts similarity index 94% rename from src/infrastructure/shared/persistence/base-repository.ts rename to src/shared/infrastructure/persistence/base-repository.ts index 690d662..61dcd5f 100644 --- a/src/infrastructure/shared/persistence/base-repository.ts +++ b/src/shared/infrastructure/persistence/base-repository.ts @@ -1,6 +1,6 @@ import { DateTime } from 'luxon'; -import { AuthenticationUtils } from '@infrastructure/shared/authentication/authentication-utils'; +import { AuthenticationUtils } from '@shared/infrastructure/authentication/authentication-utils'; enum RepositoryAction { CREATE = 'create', diff --git a/src/infrastructure/shared/persistence/index.ts b/src/shared/infrastructure/persistence/index.ts similarity index 100% rename from src/infrastructure/shared/persistence/index.ts rename to src/shared/infrastructure/persistence/index.ts diff --git a/src/infrastructure/shared/persistence/prisma/prisma-base-repository.ts b/src/shared/infrastructure/persistence/prisma/prisma-base-repository.ts similarity index 62% rename from src/infrastructure/shared/persistence/prisma/prisma-base-repository.ts rename to src/shared/infrastructure/persistence/prisma/prisma-base-repository.ts index fa5d7a8..d5cda32 100644 --- a/src/infrastructure/shared/persistence/prisma/prisma-base-repository.ts +++ b/src/shared/infrastructure/persistence/prisma/prisma-base-repository.ts @@ -1,4 +1,4 @@ -import { BaseRepository } from '@infrastructure/shared/persistence'; +import { BaseRepository } from '@shared/infrastructure/persistence'; abstract class PrismaBaseRepository extends BaseRepository {} diff --git a/src/infrastructure/shared/persistence/prisma/schema.prisma b/src/shared/infrastructure/persistence/prisma/schema.prisma similarity index 100% rename from src/infrastructure/shared/persistence/prisma/schema.prisma rename to src/shared/infrastructure/persistence/prisma/schema.prisma diff --git a/src/infrastructure/shared/persistence/prisma/seed.ts b/src/shared/infrastructure/persistence/prisma/seed.ts similarity index 100% rename from src/infrastructure/shared/persistence/prisma/seed.ts rename to src/shared/infrastructure/persistence/prisma/seed.ts diff --git a/src/infrastructure/shared/persistence/redis/redis-base-repository.ts b/src/shared/infrastructure/persistence/redis/redis-base-repository.ts similarity index 80% rename from src/infrastructure/shared/persistence/redis/redis-base-repository.ts rename to src/shared/infrastructure/persistence/redis/redis-base-repository.ts index b9e19ea..1f2f6b6 100644 --- a/src/infrastructure/shared/persistence/redis/redis-base-repository.ts +++ b/src/shared/infrastructure/persistence/redis/redis-base-repository.ts @@ -1,4 +1,4 @@ -import { BaseRepository } from '@infrastructure/shared/persistence'; +import { BaseRepository } from '@shared/infrastructure/persistence'; abstract class RedisBaseRepository extends BaseRepository { protected abstract readonly repositoryKey: string; diff --git a/src/infrastructure/shared/persistence/repository.decorator.ts b/src/shared/infrastructure/persistence/repository.decorator.ts similarity index 94% rename from src/infrastructure/shared/persistence/repository.decorator.ts rename to src/shared/infrastructure/persistence/repository.decorator.ts index ed114f6..aace189 100644 --- a/src/infrastructure/shared/persistence/repository.decorator.ts +++ b/src/shared/infrastructure/persistence/repository.decorator.ts @@ -2,7 +2,7 @@ import { useDecorators } from '@tsed/core'; import { registerProvider } from '@tsed/di'; import * as emoji from 'node-emoji'; -import { Logger } from '@domain/shared'; +import { Logger } from '@shared/domain'; type RepositoryOptions = { enabled?: boolean; diff --git a/src/types/global.d.ts b/src/types/global.d.ts deleted file mode 100644 index 95a1465..0000000 --- a/src/types/global.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import 'jest-extended'; diff --git a/test/e2e/shared/test-server.ts b/test/e2e/shared/test-server.ts index 3125812..ed1ec1b 100644 --- a/test/e2e/shared/test-server.ts +++ b/test/e2e/shared/test-server.ts @@ -4,8 +4,8 @@ import { IORedisTest } from '@tsed/ioredis'; import IORedis from 'ioredis'; import SuperTest from 'supertest'; -import { bootstrap } from '@infrastructure/shared'; -import { Server } from '@presentation/rest/server'; +import { Server } from '@contract/rest/server'; +import { bootstrap } from '@shared/infrastructure'; type SuperTestRequest = SuperTest.SuperTest | any; diff --git a/test/integration/health/check-health-status.int.ts b/test/integration/health/check-health-status.int.ts index b0dd8cc..8aa3d87 100644 --- a/test/integration/health/check-health-status.int.ts +++ b/test/integration/health/check-health-status.int.ts @@ -1,6 +1,6 @@ -import { CheckHealthStatusRequest, CheckHealthStatusUseCase, HealthStatusResponse } from '@application/health'; -import { TriggeredByAnonymous } from '@domain/shared/entities/triggered-by'; -import { AppInfo } from '@presentation/rest/config'; +import { AppInfo } from '@contract/rest/config'; +import { CheckHealthStatusRequest, CheckHealthStatusUseCase, HealthStatusResponse } from '@modules/health/application'; +import { TriggeredByAnonymous } from '@shared/domain/entities/triggered-by'; describe('Testing health check use case', () => { it('should return ALIVE health status', () => { diff --git a/test/jest.setup.ts b/test/jest.setup.ts index 3241698..ea79e29 100644 --- a/test/jest.setup.ts +++ b/test/jest.setup.ts @@ -1,2 +1,4 @@ import 'reflect-metadata'; +import 'jest-extended'; +import 'jest-extended/all'; import './jest.mocks'; diff --git a/test/unit/healthcheck/health-status-response.unit.ts b/test/unit/healthcheck/health-status-response.unit.ts index 48cd5c2..130e139 100644 --- a/test/unit/healthcheck/health-status-response.unit.ts +++ b/test/unit/healthcheck/health-status-response.unit.ts @@ -1,6 +1,6 @@ -import { HealthStatusResponse } from '@application/health'; -import { HealthStatus } from '@domain/health'; -import { AppInfo } from '@presentation/rest/config'; +import { AppInfo } from '@contract/rest/config'; +import { HealthStatusResponse } from '@modules/health/application'; +import { HealthStatus } from '@modules/health/domain'; describe('Testing HealthStatusResponse generation', () => { it('should return a valid HealthStatusResponse from domain model', () => { diff --git a/tsconfig.json b/tsconfig.json index 1ec2e1c..0765744 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,14 +15,12 @@ "esModuleInterop": true, // fixes some issues TS originally had with the ES6 spec where TypeScript treats CommonJS/AMD/UMD modules similar to ES6 module "moduleResolution": "node", // Pretty much always node for modern JS. Other option is "classic" "paths": { - "@application/*": ["src/application/*"], - "@domain/*": ["src/domain/*"], - "@infrastructure/*": ["src/infrastructure/*"], - "@presentation/*": ["src/presentation/*"], - "@test/*": ["test/*"], - "@/*": ["src/*"] + "@modules/*": ["src/modules/*"], + "@shared/*": ["src/shared/*"], + "@contract/*": ["src/contract/*"], + "@test/*": ["test/*"] }, // A series of entries which re-map imports to lookup locations relative to the baseUrl - "typeRoots": ["../node_modules/@types", "node_modules/@types", "src/types"], + "typeRoots": ["../node_modules/@types", "node_modules/@types"], // Advanced "forceConsistentCasingInFileNames": true, // TypeScript will issue an error if a program tries to include a file by a casing different from the casing on disk