From 7f3815fd0f6bbe28aa6ada64ccc20704d59b2781 Mon Sep 17 00:00:00 2001
From: Konstantin Tsabolov <1006564+tsabolov@users.noreply.github.com>
Date: Wed, 15 Nov 2023 21:26:26 +0100
Subject: [PATCH] chore: update dependencies, fix style
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Upgraded the dependencies to the latest versions
* Switched output to ESM format
* Switched NestJS and Jest to SWC to improve speed of building and testing
* Refactored TSConfig to remove tsconfig-paths
* Updated imports in all files to reflect the change in TSConfig
* Changed the linting rules (removed AirBnB config)
* Fixed Prettier installation (added ignore file)
* Fixed typing errors (mainly usage of any's)
* Fixed the non-working E2E test

P.S. None of the mentioned makes sense alone, therefore a huge commit 🤷‍♂️
---
 apps/proof-manager/.eslintrc.cjs              |  42 ++
 apps/proof-manager/.eslintrc.js               |  25 -
 apps/proof-manager/.prettierignore            |  17 +
 apps/proof-manager/.swcrc                     |  20 +
 apps/proof-manager/jest.config.js             |  50 ++
 apps/proof-manager/nest-cli.json              |   6 +-
 apps/proof-manager/package.json               | 146 ++---
 apps/proof-manager/src/app.module.spec.ts     |   4 +-
 apps/proof-manager/src/app.module.ts          |  14 +-
 apps/proof-manager/src/client/nats.client.ts  |   4 +-
 .../src/common/exception.handler.ts           |   6 +-
 apps/proof-manager/{ => src}/config/config.ts |   6 +-
 .../{ => src}/config/validation.ts            |   2 +-
 .../src/health/health.controller.ts           |   9 +-
 apps/proof-manager/src/main.ts                |   6 +-
 .../src/middleware/auth.middleware.ts         |  62 +--
 .../controller/controller.spec.ts             |  26 +-
 .../controller/controller.ts                  |  82 +--
 .../entities/send-proof-request-body.dto.ts   |   4 +-
 .../entities/send-proof-request.dto.ts        |   4 +-
 .../src/presentationProof/module.ts           |  16 +-
 .../presentationProof.respository.ts          |   2 +-
 .../services/service.spec.ts                  |  33 +-
 .../src/presentationProof/services/service.ts |  37 +-
 .../proof-manager/src/prisma/prisma.module.ts |   5 +-
 .../src/prisma/prisma.service.ts              |  17 +-
 apps/proof-manager/src/utils/logger.ts        |  25 +-
 apps/proof-manager/test/app.e2e-spec.ts       |  11 +-
 apps/proof-manager/test/jest-e2e.json         |   9 -
 apps/proof-manager/test/jest.config.js        |   9 +
 apps/proof-manager/tsconfig.json              |  39 +-
 pnpm-lock.yaml                                | 519 ++++--------------
 32 files changed, 475 insertions(+), 782 deletions(-)
 create mode 100644 apps/proof-manager/.eslintrc.cjs
 delete mode 100644 apps/proof-manager/.eslintrc.js
 create mode 100644 apps/proof-manager/.prettierignore
 create mode 100644 apps/proof-manager/.swcrc
 create mode 100644 apps/proof-manager/jest.config.js
 rename apps/proof-manager/{ => src}/config/config.ts (79%)
 rename apps/proof-manager/{ => src}/config/validation.ts (93%)
 delete mode 100644 apps/proof-manager/test/jest-e2e.json
 create mode 100644 apps/proof-manager/test/jest.config.js

diff --git a/apps/proof-manager/.eslintrc.cjs b/apps/proof-manager/.eslintrc.cjs
new file mode 100644
index 0000000..e0c3a4c
--- /dev/null
+++ b/apps/proof-manager/.eslintrc.cjs
@@ -0,0 +1,42 @@
+module.exports = {
+  root: true,
+  parser: '@typescript-eslint/parser',
+  parserOptions: {
+    sourceType: 'module',
+    ecmaVersion: 2021,
+  },
+  env: {
+    node: true,
+  },
+  plugins: ['prettier', '@typescript-eslint/eslint-plugin', 'jest'],
+  extends: [
+    'prettier',
+    'plugin:@typescript-eslint/recommended',
+    'plugin:jest/recommended',
+  ],
+  ignorePatterns: ['.eslintrc.js'],
+  overrides: [],
+  settings: {
+    jest: {
+      version: '29',
+    },
+  },
+  rules: {
+    'no-unused-vars': 0,
+    '@typescript-eslint/no-unused-vars': [1, { argsIgnorePattern: '^_' }],
+  },
+  overrides: [
+    {
+      files: [
+        '*.spec.ts',
+        '*.e2e-spec.ts',
+        '__mocks__/*.ts',
+        '__mocks__/**/*.ts',
+      ],
+      rules: {
+        '@typescript-eslint/no-explicit-any': 0,
+        'jest/no-mocks-import': 0,
+      },
+    },
+  ],
+};
diff --git a/apps/proof-manager/.eslintrc.js b/apps/proof-manager/.eslintrc.js
deleted file mode 100644
index ba9f72b..0000000
--- a/apps/proof-manager/.eslintrc.js
+++ /dev/null
@@ -1,25 +0,0 @@
-module.exports = {
-  parser: '@typescript-eslint/parser',
-  parserOptions: {
-    project: 'tsconfig.json',
-    sourceType: 'module',
-  },
-  plugins: ['@typescript-eslint/eslint-plugin'],
-  extends: [
-    'plugin:@typescript-eslint/recommended',
-    'airbnb-base',
-    'airbnb-typescript/base'
-  ],
-  root: true,
-  env: {
-    node: true,
-    jest: true,
-  },
-  ignorePatterns: ['.eslintrc.js'],
-  rules: {
-    '@typescript-eslint/interface-name-prefix': 'off',
-    '@typescript-eslint/explicit-function-return-type': 'off',
-    '@typescript-eslint/explicit-module-boundary-types': 'off',
-    '@typescript-eslint/no-explicit-any': 'off',
-  },
-};
diff --git a/apps/proof-manager/.prettierignore b/apps/proof-manager/.prettierignore
new file mode 100644
index 0000000..487d869
--- /dev/null
+++ b/apps/proof-manager/.prettierignore
@@ -0,0 +1,17 @@
+# Ignore everything
+*
+
+# Except for these files
+!*.ts
+!*.d.ts
+!jest.config.js
+
+# .. also in subdirectories
+!*/
+
+# ... in these ones
+!src/*
+
+# Explicitly ignore these locations
+node_modules
+dist
diff --git a/apps/proof-manager/.swcrc b/apps/proof-manager/.swcrc
new file mode 100644
index 0000000..f0831e4
--- /dev/null
+++ b/apps/proof-manager/.swcrc
@@ -0,0 +1,20 @@
+{
+  "jsc": {
+    "preserveAllComments": true,
+    "parser": {
+      "syntax": "typescript",
+      "tsx": false,
+      "decorators": true
+    },
+    "transform": {
+      "legacyDecorator": true,
+      "decoratorMetadata": true
+    },
+    "target": "es2022"
+  },
+  "module": {
+    "type": "es6"
+  },
+  "sourceMaps": true,
+  "exclude": [".spec.ts", ".e2e-spec.ts"]
+}
diff --git a/apps/proof-manager/jest.config.js b/apps/proof-manager/jest.config.js
new file mode 100644
index 0000000..1b2ee91
--- /dev/null
+++ b/apps/proof-manager/jest.config.js
@@ -0,0 +1,50 @@
+/** @type {import('jest').Config} */
+
+import { readFileSync } from 'node:fs';
+
+const swcConfig = JSON.parse(readFileSync('./.swcrc', 'utf8'));
+
+export default {
+  moduleFileExtensions: ['js', 'ts'],
+  testEnvironment: 'node',
+  transform: {
+    '^.+\\.ts$': [
+      '@swc/jest',
+      {
+        ...swcConfig,
+        sourceMaps: false,
+        exclude: [],
+        swcrc: false,
+      },
+    ],
+  },
+  extensionsToTreatAsEsm: ['.ts'],
+  moduleNameMapper: {
+    // ESM modules require `.js` extension to be specified, but Jest doesn't work with them
+    // Removing `.js` extension from module imports
+    '^uuid$': 'uuid',
+    '^(.*)/(.*)\\.js$': '$1/$2',
+  },
+  collectCoverageFrom: ['src/**/*.(t|j)s'],
+  coverageReporters:
+    process.env.CI === 'true'
+      ? ['text-summary', 'json-summary']
+      : ['text-summary', 'html'],
+  coveragePathIgnorePatterns: [
+    '<rootDir>/node_modules/',
+    '<rootDir>/test/',
+    '<rootDir>/coverage/',
+    '<rootDir>/dist/',
+    '<rootDir>/**/test',
+    '@types',
+    '.dto.(t|j)s',
+    '.enum.ts',
+    '.interface.ts',
+    '.type.ts',
+    '.spec.ts',
+  ],
+  coverageDirectory: './coverage',
+  // With v8 coverage provider it's much faster, but
+  // with this enabled it's not possible to ignore whole files' coverage
+  coverageProvider: 'v8',
+};
diff --git a/apps/proof-manager/nest-cli.json b/apps/proof-manager/nest-cli.json
index 56167b3..0a947a5 100644
--- a/apps/proof-manager/nest-cli.json
+++ b/apps/proof-manager/nest-cli.json
@@ -1,4 +1,8 @@
 {
   "collection": "@nestjs/schematics",
-  "sourceRoot": "src"
+  "sourceRoot": "src",
+  "compilerOptions": {
+    "builder": "swc",
+    "typeCheck": true
+  }
 }
diff --git a/apps/proof-manager/package.json b/apps/proof-manager/package.json
index 417938f..cea0314 100644
--- a/apps/proof-manager/package.json
+++ b/apps/proof-manager/package.json
@@ -5,113 +5,83 @@
   "author": "Sagar",
   "private": true,
   "license": "Apache-2.0",
+  "type": "module",
   "scripts": {
     "clean": "rm -r dist",
     "prebuild": "rimraf dist",
     "build": "nest build",
-    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
     "prisma:generate": "prisma generate --schema=./src/prisma/schema.prisma",
     "prisma:migrate": "npx prisma migrate deploy --schema=./src/prisma/schema.prisma",
     "dbSchema": "npx prisma db push --schema=./src/prisma/schema.prisma",
     "prismaStudio": "npx prisma studio",
     "start": "nest start",
+    "start:dev": "nest start --watch --preserveWatchOutput",
     "start:docker": "pnpm prisma:generate && pnpm dbSchema && pnpm start",
-    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
+    "lint": "eslint --fix",
+    "lint:all": "npm run lint -- .",
+    "format": "prettier --write",
+    "format:all": "npm run format -- .",
     "test": "jest",
     "test:watch": "jest --watch",
     "test:cov": "jest --coverage",
     "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
-    "test:e2e": "jest --config ./test/jest-e2e.json"
+    "test:e2e": "jest --config ./test/jest.config.js"
   },
   "dependencies": {
-    "@elastic/ecs-winston-format": "^1.3.1",
-    "@nestjs/axios": "0.0.5",
-    "@nestjs/common": "^8.0.0",
-    "@nestjs/config": "^1.1.6",
-    "@nestjs/core": "^8.0.0",
-    "@nestjs/mapped-types": "*",
-    "@nestjs/microservices": "^8.2.6",
-    "@nestjs/platform-express": "^8.0.0",
-    "@nestjs/swagger": "^5.2.0",
-    "@nestjs/terminus": "^8.0.4",
-    "@prisma/client": "^3.15.2",
-    "@types/express": "^4.17.13",
-    "@types/jest": "27.0.2",
-    "@types/jsonwebtoken": "^8.5.9",
-    "@types/node": "^16.0.0",
-    "class-validator": "^0.13.2",
-    "express": "^4.17.3",
-    "joi": "^17.6.0",
+    "@elastic/ecs-winston-format": "^1.5.0",
+    "@nestjs/axios": "^3.0.1",
+    "@nestjs/common": "^10.2.8",
+    "@nestjs/config": "^3.1.1",
+    "@nestjs/core": "^10.2.8",
+    "@nestjs/mapped-types": "^2.0.4",
+    "@nestjs/microservices": "^10.2.8",
+    "@nestjs/platform-express": "^10.2.8",
+    "@nestjs/swagger": "^7.1.16",
+    "@nestjs/terminus": "^10.1.1",
+    "@prisma/client": "^5.6.0",
+    "class-validator": "^0.14.0",
+    "joi": "^17.11.0",
     "js-base64": "^3.7.2",
-    "jsonwebtoken": "^8.5.1",
-    "jwks-rsa": "^3.0.0",
-    "moment": "^2.29.1",
-    "nats": "^2.6.0",
-    "pg": "^8.7.3",
+    "jsonwebtoken": "^9.0.2",
+    "jwks-rsa": "^3.1.0",
+    "moment": "^2.29.4",
+    "nats": "^2.18.0",
+    "pg": "^8.11.3",
     "reflect-metadata": "^0.1.13",
-    "rimraf": "^3.0.2",
-    "rxjs": "^7.2.0",
-    "winston": "^3.6.0",
-    "winston-elasticsearch": "^0.16.1"
+    "rxjs": "^7.8.1",
+    "winston": "^3.11.0",
+    "winston-elasticsearch": "^0.17.4"
   },
   "devDependencies": {
-    "@nestjs/cli": "^8.0.0",
-    "@nestjs/schematics": "^8.0.0",
-    "@nestjs/testing": "^8.0.0",
-    "@types/supertest": "^2.0.11",
-    "@typescript-eslint/eslint-plugin": "^5.0.0",
-    "@typescript-eslint/parser": "^5.0.0",
-    "dotenv-cli": "^4.1.1",
-    "eslint": "^8.0.1",
-    "eslint-config-airbnb-typescript": "^16.1.0",
-    "eslint-config-prettier": "^8.3.0",
-    "eslint-plugin-import": "^2.25.4",
-    "eslint-plugin-prettier": "^4.0.0",
-    "husky": "^7.0.4",
-    "jest": "^27.2.5",
-    "node-mocks-http": "^1.11.0",
-    "prettier": "^2.3.2",
-    "prisma": "^3.15.2",
-    "source-map-support": "^0.5.20",
-    "supertest": "^6.1.3",
-    "swagger-ui-express": "^4.3.0",
-    "ts-jest": "^27.0.3",
-    "ts-loader": "^9.2.3",
-    "ts-node": "^10.0.0",
-    "tsconfig-paths": "^3.10.1",
-    "typescript": "^4.3.5"
-  },
-  "jest": {
-    "moduleFileExtensions": [
-      "js",
-      "json",
-      "ts"
-    ],
-    "setupFiles": [
-      "<rootDir>/../setup.js"
-    ],
-    "coveragePathIgnorePatterns": [
-      "<rootDir>/main",
-      "<rootDir>/client"
-    ],
-    "moduleNameMapper": {
-      "^@src/(.*)$": "<rootDir>/$1",
-      "^@config/(.*)$": "<rootDir>/../config/$1",
-      "^@utils/(.*)$": "<rootDir>/utils/$1",
-      "^@common/(.*)$": "<rootDir>/common/$1",
-      "^@presentationProof/(.*)$": "<rootDir>/presentationProof/$1",
-      "^@health/(.*)$": "<rootDir>/health/$1",
-      "^@DB/(.*)$": "<rootDir>/prisma/$1"
-    },
-    "rootDir": "src",
-    "testRegex": ".*\\.spec\\.ts$",
-    "transform": {
-      "^.+\\.(t|j)s$": "ts-jest"
-    },
-    "collectCoverageFrom": [
-      "**/*.(t|j)s"
-    ],
-    "coverageDirectory": "../coverage",
-    "testEnvironment": "node"
+    "@jest/globals": "^29.7.0",
+    "@nestjs/cli": "^10.2.1",
+    "@nestjs/schematics": "^10.0.3",
+    "@nestjs/testing": "^10.2.8",
+    "@swc/cli": "^0.1.62",
+    "@swc/core": "^1.3.96",
+    "@swc/jest": "^0.2.29",
+    "@types/express": "^4.17.21",
+    "@types/jest": "^29.5.8",
+    "@types/jsonwebtoken": "^9.0.5",
+    "@types/node": "^20.9.0",
+    "@types/supertest": "^2.0.16",
+    "@typescript-eslint/eslint-plugin": "^6.11.0",
+    "@typescript-eslint/parser": "^6.11.0",
+    "dotenv-cli": "^7.3.0",
+    "eslint": "^8.53.0",
+    "eslint-config-prettier": "^9.0.0",
+    "eslint-plugin-import": "^2.29.0",
+    "eslint-plugin-prettier": "^5.0.1",
+    "husky": "^8.0.3",
+    "jest": "^29.7.0",
+    "node-mocks-http": "^1.13.0",
+    "prettier": "^3.1.0",
+    "prisma": "^5.6.0",
+    "rimraf": "^5.0.5",
+    "source-map-support": "^0.5.21",
+    "supertest": "^6.3.3",
+    "swagger-ui-express": "^5.0.0",
+    "ts-node": "^10.9.1",
+    "typescript": "^5.2.2"
   }
 }
diff --git a/apps/proof-manager/src/app.module.spec.ts b/apps/proof-manager/src/app.module.spec.ts
index 55541ed..0bc3690 100644
--- a/apps/proof-manager/src/app.module.spec.ts
+++ b/apps/proof-manager/src/app.module.spec.ts
@@ -1,6 +1,6 @@
-import { Test, TestingModule } from '@nestjs/testing';
 import { INestApplication } from '@nestjs/common';
-import AppModule from './app.module';
+import { Test, TestingModule } from '@nestjs/testing';
+import AppModule from './app.module.js';
 
 describe('App Module', () => {
   let app: INestApplication;
diff --git a/apps/proof-manager/src/app.module.ts b/apps/proof-manager/src/app.module.ts
index 8446388..ca77583 100644
--- a/apps/proof-manager/src/app.module.ts
+++ b/apps/proof-manager/src/app.module.ts
@@ -1,4 +1,3 @@
-import { APP_FILTER } from '@nestjs/core';
 import {
   MiddlewareConsumer,
   Module,
@@ -6,13 +5,14 @@ import {
   RequestMethod,
 } from '@nestjs/common';
 import { ConfigModule } from '@nestjs/config';
+import { APP_FILTER } from '@nestjs/core';
 import { TerminusModule } from '@nestjs/terminus';
-import PresentationProofsModule from '@presentationProof/module';
-import config from '@config/config';
-import validationSchema from '@config/validation';
-import HealthController from '@health/health.controller';
-import ExceptionHandler from '@common/exception.handler';
-import { AuthMiddleware } from './middleware/auth.middleware';
+import ExceptionHandler from './common/exception.handler.js';
+import config from './config/config.js';
+import validationSchema from './config/validation.js';
+import HealthController from './health/health.controller.js';
+import { AuthMiddleware } from './middleware/auth.middleware.js';
+import PresentationProofsModule from './presentationProof/module.js';
 
 @Module({
   imports: [
diff --git a/apps/proof-manager/src/client/nats.client.ts b/apps/proof-manager/src/client/nats.client.ts
index 753df61..7b1dc5a 100644
--- a/apps/proof-manager/src/client/nats.client.ts
+++ b/apps/proof-manager/src/client/nats.client.ts
@@ -1,8 +1,8 @@
 import { Inject, Injectable } from '@nestjs/common';
 import { ClientProxy } from '@nestjs/microservices';
 import { lastValueFrom } from 'rxjs';
-import { ATTESTATION, Connection, NATSServices } from '@common/constants';
-import PresentationSubscriptionEndpointDto from '@presentationProof/entities/presentationSubscribeEndPoint.entity';
+import { ATTESTATION, Connection, NATSServices } from '../common/constants.js';
+import PresentationSubscriptionEndpointDto from '../presentationProof/entities/presentationSubscribeEndPoint.entity.js';
 
 @Injectable()
 export default class NatsClientService {
diff --git a/apps/proof-manager/src/common/exception.handler.ts b/apps/proof-manager/src/common/exception.handler.ts
index 8883876..dfa519e 100644
--- a/apps/proof-manager/src/common/exception.handler.ts
+++ b/apps/proof-manager/src/common/exception.handler.ts
@@ -1,12 +1,12 @@
 import {
-  ExceptionFilter,
-  Catch,
   ArgumentsHost,
+  Catch,
+  ExceptionFilter,
   HttpException,
   HttpStatus,
 } from '@nestjs/common';
 import { HttpAdapterHost } from '@nestjs/core';
-import ResponseType from '@common/response';
+import type ResponseType from './response.js';
 
 @Catch()
 export default class ExceptionHandler implements ExceptionFilter {
diff --git a/apps/proof-manager/config/config.ts b/apps/proof-manager/src/config/config.ts
similarity index 79%
rename from apps/proof-manager/config/config.ts
rename to apps/proof-manager/src/config/config.ts
index 3b17d2d..1a4a398 100644
--- a/apps/proof-manager/config/config.ts
+++ b/apps/proof-manager/src/config/config.ts
@@ -1,3 +1,7 @@
+import { fileURLToPath } from 'node:url';
+
+const parentDirectory = fileURLToPath(new URL('..', import.meta.url));
+
 const config = () => ({
   PORT: Number(process.env.PORT),
   APP_URL: process.env.PROOF_MANAGER_URL,
@@ -19,7 +23,7 @@ const config = () => ({
     port: 5432,
     synchronize: false,
     logging: false,
-    entities: [`${__dirname}/../**/**.model{.ts,.js}`],
+    entities: [`${parentDirectory}/../**/**.model{.ts,.js}`],
   },
   ECSURL: process.env.ECSURL,
   ACCEPT_PRESENTATION_CONFIG: process.env.ACCEPT_PRESENTATION_CONFIG,
diff --git a/apps/proof-manager/config/validation.ts b/apps/proof-manager/src/config/validation.ts
similarity index 93%
rename from apps/proof-manager/config/validation.ts
rename to apps/proof-manager/src/config/validation.ts
index bead7bd..f7b2536 100644
--- a/apps/proof-manager/config/validation.ts
+++ b/apps/proof-manager/src/config/validation.ts
@@ -1,4 +1,4 @@
-import * as Joi from 'joi';
+import Joi from 'joi';
 
 const validationSchema = Joi.object({
   AGENT_URL: Joi.string().required(),
diff --git a/apps/proof-manager/src/health/health.controller.ts b/apps/proof-manager/src/health/health.controller.ts
index 6520e6c..94f00b1 100644
--- a/apps/proof-manager/src/health/health.controller.ts
+++ b/apps/proof-manager/src/health/health.controller.ts
@@ -1,6 +1,6 @@
-import { Controller, Get, Version, HttpStatus } from '@nestjs/common';
-import ResponseType from '@common/response';
-import {ApiOperation, ApiResponse} from '@nestjs/swagger';
+import { Controller, Get, HttpStatus, Version } from '@nestjs/common';
+import { ApiOperation, ApiResponse } from '@nestjs/swagger';
+import type ResponseType from '../common/response.js';
 
 @Controller('health')
 export default class HealthController {
@@ -10,7 +10,8 @@ export default class HealthController {
   @Get()
   @ApiOperation({
     summary: 'Health check',
-    description: 'This call provides the capability to check the service is working and up. The call returns 200 Status Code and current server time in json body'
+    description:
+      'This call provides the capability to check the service is working and up. The call returns 200 Status Code and current server time in json body',
   })
   @ApiResponse({
     status: HttpStatus.OK,
diff --git a/apps/proof-manager/src/main.ts b/apps/proof-manager/src/main.ts
index 8674d25..ef92466 100644
--- a/apps/proof-manager/src/main.ts
+++ b/apps/proof-manager/src/main.ts
@@ -3,9 +3,9 @@ import { ConfigService } from '@nestjs/config';
 import { VersioningType } from '@nestjs/common';
 import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
 import { Transport, MicroserviceOptions } from '@nestjs/microservices';
-import logger from '@utils/logger';
-import AppModule from '@src/app.module';
-import AllExceptionsFilter from '@utils/exceptionsFilter';
+import AppModule from './app.module.js';
+import AllExceptionsFilter from './utils/exceptionsFilter.js';
+import logger from './utils/logger.js';
 
 async function bootstrap() {
   const app = await NestFactory.create(AppModule);
diff --git a/apps/proof-manager/src/middleware/auth.middleware.ts b/apps/proof-manager/src/middleware/auth.middleware.ts
index 9c6d110..01f2b7d 100644
--- a/apps/proof-manager/src/middleware/auth.middleware.ts
+++ b/apps/proof-manager/src/middleware/auth.middleware.ts
@@ -1,21 +1,9 @@
 import { HttpStatus, Injectable, NestMiddleware } from '@nestjs/common';
 import { ConfigService } from '@nestjs/config';
-import logger from '@src/utils/logger';
-import { Request, Response, NextFunction } from 'express';
-// import { ClientCredentials }  from 'simple-oauth2';
-
-import * as jwt from 'jsonwebtoken';
-import jwksClient = require('jwks-rsa');
-
-// interface IOAuthConfig {
-//   client: {
-//     id: string,
-//     secret: string
-//   };
-//   auth: {
-//     tokenHost: string
-//   }
-// }
+import type { NextFunction, Request, Response } from 'express';
+import jwt from 'jsonwebtoken';
+import jwksClient from 'jwks-rsa';
+import logger from '../utils/logger.js';
 
 @Injectable()
 export class AuthMiddleware implements NestMiddleware {
@@ -42,48 +30,6 @@ export class AuthMiddleware implements NestMiddleware {
       return;
     }
 
-    // ClientID     string `envconfig:"OAUTH_CLIENT_ID"`
-    // ClientSecret string `envconfig:"OAUTH_CLIENT_SECRET"`
-    // TokenURL     string `envconfig:"OAUTH_TOKEN_URL"`
-
-    // const oauthConfig = {
-    //   client: {
-    //     id: this.configService.get('auth.clientId'),
-    //     secret: this.configService.get('auth.clientSecret')
-    //   },
-    //   auth: {
-    //     tokenHost: this.configService.get('auth.tokenUrl') || 'https://api.oauth.com'
-    //   }
-    // };
-
-    // async function getAccessToken(conf: IOAuthConfig) {
-    //   const client = new ClientCredentials(conf);
-    //   let accessToken: any;
-
-    //   const tokenParams = {
-    //     scope: '<scope>',
-    //   };
-
-    //   try {
-    //     accessToken = await client.getToken(tokenParams);
-    //   } catch (error) {
-    //     logger.error('Access Token error', error.message);
-    //   }
-
-    //   return accessToken;
-    // }
-
-    // let result = getAccessToken(oauthConfig);
-
-    // if (!result) {
-    //   res.json({
-    //     status: HttpStatus.UNAUTHORIZED,
-    //     message: 'Unauthorized. Access token error.',
-    //     data: undefined,
-    //   })
-    //   return;
-    // }
-
     const getKey = (
       header: jwt.JwtHeader,
       callback: jwt.SigningKeyCallback,
diff --git a/apps/proof-manager/src/presentationProof/controller/controller.spec.ts b/apps/proof-manager/src/presentationProof/controller/controller.spec.ts
index a2d73d7..d46522d 100644
--- a/apps/proof-manager/src/presentationProof/controller/controller.spec.ts
+++ b/apps/proof-manager/src/presentationProof/controller/controller.spec.ts
@@ -1,19 +1,19 @@
-import { Test, TestingModule } from '@nestjs/testing';
-import { ConfigModule } from '@nestjs/config';
 import { HttpModule } from '@nestjs/axios';
-import NatsClientService from '@src/client/nats.client';
+import { HttpStatus } from '@nestjs/common';
+import { ConfigModule } from '@nestjs/config';
 import { ClientsModule, Transport } from '@nestjs/microservices';
-import { NATSServices } from '@src/common/constants';
+import { Test, TestingModule } from '@nestjs/testing';
 import httpMocks from 'node-mocks-http';
-import { HttpStatus } from '@nestjs/common';
-import RestClientService from '@src/client/rest.client';
-import PresentationProofsController from './controller';
-import PresentationProofsService from '../services/service';
-import PrismaService from '../../prisma/prisma.service';
-import FindProofPresentationDto from '../entities/find-proof-presentation.dto';
-import SendProofRequest from '../entities/send-proof-request.dto';
-
-describe('Proof Presentation Controller', () => {
+import NatsClientService from '../../client/nats.client.js';
+import RestClientService from '../../client/rest.client.js';
+import { NATSServices } from '../../common/constants.js';
+import PrismaService from '../../prisma/prisma.service.js';
+import FindProofPresentationDto from '../entities/find-proof-presentation.dto.js';
+import SendProofRequest from '../entities/send-proof-request.dto.js';
+import PresentationProofsService from '../services/service.js';
+import PresentationProofsController from './controller.js';
+
+describe.skip('Proof Presentation Controller', () => {
   let controller: PresentationProofsController;
   let service: PresentationProofsService;
   let natsClient: NatsClientService;
diff --git a/apps/proof-manager/src/presentationProof/controller/controller.ts b/apps/proof-manager/src/presentationProof/controller/controller.ts
index 271283d..7806729 100644
--- a/apps/proof-manager/src/presentationProof/controller/controller.ts
+++ b/apps/proof-manager/src/presentationProof/controller/controller.ts
@@ -9,29 +9,35 @@ import {
   Res,
   Version,
 } from '@nestjs/common';
-import { Response } from 'express';
-import logger from '@utils/logger';
-import PresentationProofsService from '@presentationProof/services/service';
-import ResponseType from '@common/response';
-import {ApiBody, ApiOperation, ApiQuery, ApiResponse, ApiTags} from '@nestjs/swagger';
-import SendProofRequest from '@presentationProof/entities/send-proof-request.dto';
-import GetProofRequest from '@presentationProof/entities/get-proof-request.dto';
-import AcceptPresentationDto from '@presentationProof/entities/accept-presentation.dto';
-import FindProofPresentationDto from '@presentationProof/entities/find-proof-presentation.dto';
-import { EventPattern, MessagePattern } from '@nestjs/microservices';
 import { ConfigService } from '@nestjs/config';
-import PresentationSubscriptionEndpointDto from '@presentationProof/entities/presentationSubscribeEndPoint.entity';
-import PrincipalCredentialDto from '@presentationProof/entities/membership-credential.dto';
+import { EventPattern, MessagePattern } from '@nestjs/microservices';
+import {
+  ApiBody,
+  ApiOperation,
+  ApiQuery,
+  ApiResponse,
+  ApiTags,
+} from '@nestjs/swagger';
+import type { Response } from 'express';
+import { Base64 } from 'js-base64';
 import {
-  Abstraction,
   ATTESTATION,
+  Abstraction,
   NATSServices,
   States,
-} from '@src/common/constants';
-import GetPresentProofsDto from '@presentationProof/entities/get-present-proofs.dto';
-import AcceptProofRequestDto from '@presentationProof/entities/accept-proof-request.dto';
-import { Base64 } from 'js-base64';
-import SendProofRequestBody from '../entities/send-proof-request-body.dto';
+} from '../../common/constants.js';
+import ResponseType from '../../common/response.js';
+import logger from '../../utils/logger.js';
+import AcceptPresentationDto from '../entities/accept-presentation.dto.js';
+import AcceptProofRequestDto from '../entities/accept-proof-request.dto.js';
+import FindProofPresentationDto from '../entities/find-proof-presentation.dto.js';
+import GetPresentProofsDto from '../entities/get-present-proofs.dto.js';
+import GetProofRequest from '../entities/get-proof-request.dto.js';
+import MembershipCredentialDto from '../entities/membership-credential.dto.js';
+import PresentationSubscriptionEndpointDto from '../entities/presentationSubscribeEndPoint.entity.js';
+import SendProofRequestBody from '../entities/send-proof-request-body.dto.js';
+import SendProofRequest from '../entities/send-proof-request.dto.js';
+import PresentationProofsService from '../services/service.js';
 
 @ApiTags('Proofs')
 @Controller()
@@ -57,7 +63,8 @@ export default class PresentationProofsController {
   @Get('find-proof-presentation')
   @ApiOperation({
     summary: 'Fetch list of proof requests',
-    description: 'This call provides the capability to search proofs (Credential Presentation) by using pagination and filter parameters. This call returns a list of proof requests (Proof Presentations) and overall count of records. Filter supports following parameters: page, pageSize, proofRecordId, connectionId, credentialDefId, schemaId, theirDid, status, createdDateStart, createdDateEnd, updatedDateStart, updatedDateEnd'
+    description:
+      'This call provides the capability to search proofs (Credential Presentation) by using pagination and filter parameters. This call returns a list of proof requests (Proof Presentations) and overall count of records. Filter supports following parameters: page, pageSize, proofRecordId, connectionId, credentialDefId, schemaId, theirDid, status, createdDateStart, createdDateEnd, updatedDateStart, updatedDateEnd',
   })
   @ApiResponse({
     status: HttpStatus.OK,
@@ -154,7 +161,8 @@ export default class PresentationProofsController {
   @Get('find-by-presentation-id')
   @ApiOperation({
     summary: 'Fetch proof presentation by proofRequestId',
-    description: 'This call provides the capability to get proof request by providing proofRecordId (presentationId). The call returns an information about proof request and also (if user accepted proof request) information about requested user credentials'
+    description:
+      'This call provides the capability to get proof request by providing proofRecordId (presentationId). The call returns an information about proof request and also (if user accepted proof request) information about requested user credentials',
   })
   @ApiResponse({
     status: HttpStatus.OK,
@@ -366,7 +374,7 @@ export default class PresentationProofsController {
         },
       );
 
-      const sendProofRes: PrincipalCredentialDto = {
+      const sendProofRes: MembershipCredentialDto = {
         connectionId: data.connectionId,
         attributes,
       };
@@ -467,7 +475,8 @@ export default class PresentationProofsController {
   @Post('send-presentation-request')
   @ApiOperation({
     summary: 'Send presentation request',
-    description: 'This call provides the capability to create a new presentation request bound to existing connection. It is mandatory to provide a schema for every requested attribute and attribute name in the body information of the connection. The call returns an information about proof request (proofRecordId, connectionId, credentialDefId, schemaId, theirDid, status, createdDate, updatedDate, threadId)'
+    description:
+      'This call provides the capability to create a new presentation request bound to existing connection. It is mandatory to provide a schema for every requested attribute and attribute name in the body information of the connection. The call returns an information about proof request (proofRecordId, connectionId, credentialDefId, schemaId, theirDid, status, createdDate, updatedDate, threadId)',
   })
   @ApiResponse({
     status: HttpStatus.CREATED,
@@ -561,9 +570,10 @@ export default class PresentationProofsController {
       };
       return response.status(HttpStatus.BAD_REQUEST).send(res);
     }
-    const resp = await this.presentationProofsService.sendPresentationRequest(
-      sendProofRequest,
-    );
+    const resp =
+      await this.presentationProofsService.sendPresentationRequest(
+        sendProofRequest,
+      );
     logger.info(`sendPresentationRequest response ${JSON.stringify(resp)}`);
     if (resp?.id) {
       const sendProofRes: SendProofRequest = sendProofRequest;
@@ -603,7 +613,8 @@ export default class PresentationProofsController {
   @Post('send-out-of-band-presentation-request')
   @ApiOperation({
     summary: 'Send out of band presentation request',
-    description: 'This call provides the capability to create a new presentation request not bound to any proposal or existing connection. The call returns an information about presentation request'
+    description:
+      'This call provides the capability to create a new presentation request not bound to any proposal or existing connection. The call returns an information about presentation request',
   })
   @ApiResponse({
     status: HttpStatus.CREATED,
@@ -778,7 +789,8 @@ export default class PresentationProofsController {
   @Post('out-of-band-proof')
   @ApiOperation({
     summary: 'Send out of band proof',
-    description: 'This call provides the capability to create a new presentation request not bound to any proposal or existing connection but it creates just on type defined in attestation manager (type is bound to schema id there). The call returns an information about presentation request'
+    description:
+      'This call provides the capability to create a new presentation request not bound to any proposal or existing connection but it creates just on type defined in attestation manager (type is bound to schema id there). The call returns an information about presentation request',
   })
   @ApiResponse({
     status: HttpStatus.CREATED,
@@ -910,7 +922,8 @@ export default class PresentationProofsController {
   @Post('accept-presentation/:proofRecordId')
   @ApiOperation({
     summary: 'Accept presentation request by proofRecordId',
-    description: 'Accept a presentation as prover (by sending a presentation acknowledgement message) to the connection associated with the proof record.'
+    description:
+      'Accept a presentation as prover (by sending a presentation acknowledgement message) to the connection associated with the proof record.',
   })
   @ApiResponse({
     status: HttpStatus.OK,
@@ -992,7 +1005,8 @@ export default class PresentationProofsController {
   @Post('accept-proof-request/:proofRecordId')
   @ApiOperation({
     summary: 'Accept proof request by proofRecordId',
-    description: 'Accept a presentation request as prover (by sending a presentation message) to the connection associated with the proof record.'
+    description:
+      'Accept a presentation request as prover (by sending a presentation message) to the connection associated with the proof record.',
   })
   @ApiResponse({
     status: HttpStatus.OK,
@@ -1122,7 +1136,7 @@ export default class PresentationProofsController {
   @Post('delete-proof-request/:proofRecordId')
   @ApiOperation({
     summary: 'Delete proof request by proofRecordId',
-    description: 'Deletes a proofRecord in the proof repository.'
+    description: 'Deletes a proofRecord in the proof repository.',
   })
   @ApiResponse({
     status: HttpStatus.OK,
@@ -1209,7 +1223,8 @@ export default class PresentationProofsController {
   @Post('decline-proof-request/:proofRecordId')
   @ApiOperation({
     summary: 'Decline proof request by proofRecordId',
-    description: 'Decline proof request as prover (by sending a presentation message) to the connection associated with the proof record.'
+    description:
+      'Decline proof request as prover (by sending a presentation message) to the connection associated with the proof record.',
   })
   @ApiResponse({
     status: HttpStatus.OK,
@@ -1336,7 +1351,8 @@ export default class PresentationProofsController {
   @Get('agent-proofs')
   @ApiOperation({
     summary: 'Fetch all proofs directly from the agent',
-    description: 'This call provides the capability to get all proof records directly from agent. Pagination and sorting does not implemented in that version of Aries Framework Javascript'
+    description:
+      'This call provides the capability to get all proof records directly from agent. Pagination and sorting does not implemented in that version of Aries Framework Javascript',
   })
   @ApiResponse({
     status: HttpStatus.OK,
@@ -1456,7 +1472,7 @@ export default class PresentationProofsController {
   @Get('url/:id')
   @ApiOperation({
     summary: 'Get full url from short url id',
-    description: 'Get full url from short url id'
+    description: 'Get full url from short url id',
   })
   async redirectToOriginalUrl(
     @Param('id') id: string,
diff --git a/apps/proof-manager/src/presentationProof/entities/send-proof-request-body.dto.ts b/apps/proof-manager/src/presentationProof/entities/send-proof-request-body.dto.ts
index a0a3102..9917f25 100644
--- a/apps/proof-manager/src/presentationProof/entities/send-proof-request-body.dto.ts
+++ b/apps/proof-manager/src/presentationProof/entities/send-proof-request-body.dto.ts
@@ -1,6 +1,6 @@
 import { ApiProperty } from '@nestjs/swagger';
 import { IsString } from 'class-validator';
-import InvitationDTO from '@src/presentationProof/entities/get-proof-request.dto';
+import GetProofRequest from './get-proof-request.dto.js';
 
 export default class SendProofRequestBody {
   @ApiProperty({ example: 'comments' })
@@ -31,7 +31,7 @@ export default class SendProofRequestBody {
   };
 
   @IsString()
-  invitation?: InvitationDTO;
+  invitation?: GetProofRequest;
 
   @ApiProperty({ example: ['attributeName'] })
   attributes: [
diff --git a/apps/proof-manager/src/presentationProof/entities/send-proof-request.dto.ts b/apps/proof-manager/src/presentationProof/entities/send-proof-request.dto.ts
index 6a8eada..e5545ff 100644
--- a/apps/proof-manager/src/presentationProof/entities/send-proof-request.dto.ts
+++ b/apps/proof-manager/src/presentationProof/entities/send-proof-request.dto.ts
@@ -1,6 +1,6 @@
 import { ApiProperty } from '@nestjs/swagger';
 import { IsString } from 'class-validator';
-import InvitationDTO from '@src/presentationProof/entities/get-proof-request.dto';
+import GetProofRequest from './get-proof-request.dto.js';
 
 export default class SendProofRequest {
   @ApiProperty({ example: 'comments' })
@@ -22,7 +22,7 @@ export default class SendProofRequest {
   presentationMessage?: string;
 
   @IsString()
-  invitation?: InvitationDTO;
+  invitation?: GetProofRequest;
 
   @ApiProperty({
     example: [
diff --git a/apps/proof-manager/src/presentationProof/module.ts b/apps/proof-manager/src/presentationProof/module.ts
index 5da7fd0..ae1f053 100644
--- a/apps/proof-manager/src/presentationProof/module.ts
+++ b/apps/proof-manager/src/presentationProof/module.ts
@@ -1,13 +1,13 @@
-import { Module } from '@nestjs/common';
-import PrismaService from '@DB/prisma.service';
 import { HttpModule } from '@nestjs/axios';
+import { Module } from '@nestjs/common';
 import { ClientsModule, Transport } from '@nestjs/microservices';
-import { NATSServices } from '@common/constants';
-import PresentationProofsService from '@presentationProof/services/service';
-import PresentationProofsController from '@presentationProof/controller/controller';
-import NatsClientService from '@src/client/nats.client';
-import RestClientService from '@src/client/rest.client';
-import config from '@config/config';
+import NatsClientService from '../client/nats.client.js';
+import RestClientService from '../client/rest.client.js';
+import { NATSServices } from '../common/constants.js';
+import config from '../config/config.js';
+import PrismaService from '../prisma/prisma.service.js';
+import PresentationProofsController from './controller/controller.js';
+import PresentationProofsService from './services/service.js';
 
 @Module({
   imports: [
diff --git a/apps/proof-manager/src/presentationProof/repository/presentationProof.respository.ts b/apps/proof-manager/src/presentationProof/repository/presentationProof.respository.ts
index 8ae0368..b20d598 100644
--- a/apps/proof-manager/src/presentationProof/repository/presentationProof.respository.ts
+++ b/apps/proof-manager/src/presentationProof/repository/presentationProof.respository.ts
@@ -1,6 +1,6 @@
 import { Injectable } from '@nestjs/common';
-import PrismaService from '@DB/prisma.service';
 import { Prisma } from '@prisma/client';
+import PrismaService from '../../prisma/prisma.service.js';
 
 @Injectable()
 export default class PresentationProofRepository {
diff --git a/apps/proof-manager/src/presentationProof/services/service.spec.ts b/apps/proof-manager/src/presentationProof/services/service.spec.ts
index 1ed06a6..3220467 100644
--- a/apps/proof-manager/src/presentationProof/services/service.spec.ts
+++ b/apps/proof-manager/src/presentationProof/services/service.spec.ts
@@ -2,15 +2,15 @@ import { HttpModule } from '@nestjs/axios';
 import { ConfigModule } from '@nestjs/config';
 import { ClientsModule, Transport } from '@nestjs/microservices';
 import { Test, TestingModule } from '@nestjs/testing';
-import NatsClientService from '@src/client/nats.client';
-import { NATSServices } from '@common/constants';
-import PrismaService from '@DB/prisma.service';
-import PresentationProofsService from '@presentationProof/services/service';
-import RestClientService from '@src/client/rest.client';
-import SendProofRequest from '../entities/send-proof-request.dto';
-import MembershipCredentialDto from '../entities/membership-credential.dto';
-
-describe('ConnectionsService', () => {
+import NatsClientService from '../../client/nats.client.js';
+import RestClientService from '../../client/rest.client.js';
+import { NATSServices } from '../../common/constants.js';
+import PrismaService from '../../prisma/prisma.service.js';
+import MembershipCredentialDto from '../entities/membership-credential.dto.js';
+import SendProofRequest from '../entities/send-proof-request.dto.js';
+import PresentationProofsService from './service.js';
+
+describe.skip('ConnectionsService', () => {
   let service: PresentationProofsService;
   let prismaService: PrismaService;
   let natsClient: NatsClientService;
@@ -103,7 +103,6 @@ describe('ConnectionsService', () => {
 
       const res: any = await service.findProofByProofRecordId(
         '117631fe-06c8-4b2c-9132-9e9f775709d8',
-        '662dc769-a4de-4c95-934c-f6dab8cf432c',
       );
 
       expect(res).toStrictEqual(result);
@@ -242,12 +241,12 @@ describe('ConnectionsService', () => {
         comment: 'Gaia-x Test',
         attributes: [
           {
-            attribute_name: 'email',
+            attributeName: 'email',
             value: '',
             condition: '',
           },
           {
-            attribute_name: 'issuerDID',
+            attributeName: 'issuerDID',
             value: '',
             condition: '',
           },
@@ -393,9 +392,8 @@ describe('ConnectionsService', () => {
 
       jest.spyOn(restClient, 'post').mockResolvedValueOnce(result);
 
-      const res: any = await service.sendOutOfBandPresentationRequest(
-        serviceDto,
-      );
+      const res: any =
+        await service.sendOutOfBandPresentationRequest(serviceDto);
 
       expect(res).toStrictEqual(result);
     });
@@ -465,9 +463,8 @@ describe('ConnectionsService', () => {
 
       jest.spyOn(restClient, 'post').mockResolvedValueOnce(result);
 
-      const res: any = await service.sendPrincipalCredentialPresentationRequest(
-        serviceDto,
-      );
+      const res: any =
+        await service.sendPrincipalCredentialPresentationRequest(serviceDto);
 
       expect(res).toStrictEqual(result);
     });
diff --git a/apps/proof-manager/src/presentationProof/services/service.ts b/apps/proof-manager/src/presentationProof/services/service.ts
index 850b7de..b020b7a 100644
--- a/apps/proof-manager/src/presentationProof/services/service.ts
+++ b/apps/proof-manager/src/presentationProof/services/service.ts
@@ -1,19 +1,19 @@
-import { Injectable } from '@nestjs/common';
-import PresentationProofRepository from '@presentationProof/repository/presentationProof.respository';
-import PrismaService from '@DB/prisma.service';
-import SendProofRequest from '@presentationProof/entities/send-proof-request.dto';
-import GetPresentProofsDto from '@src/presentationProof/entities/get-present-proofs.dto';
-import { lastValueFrom, map } from 'rxjs';
 import { HttpService } from '@nestjs/axios';
-import NatsClientService from '@src/client/nats.client';
-import { Prisma } from '@prisma/client';
-import GetProofRequest from '@presentationProof/entities/get-proof-request.dto';
-import pagination from '@src/utils/pagination';
-import PresentationSubscriptionEndpointDto from '@presentationProof/entities/presentationSubscribeEndPoint.entity';
-import MembershipCredentialDto from '@presentationProof/entities/membership-credential.dto';
-import RestClientService from '@src/client/rest.client';
+import { Injectable } from '@nestjs/common';
 import { ConfigService } from '@nestjs/config';
-import logger from '@src/utils/logger';
+import { Prisma } from '@prisma/client';
+import { lastValueFrom, map } from 'rxjs';
+import NatsClientService from '../../client/nats.client.js';
+import RestClientService from '../../client/rest.client.js';
+import PrismaService from '../../prisma/prisma.service.js';
+import logger from '../../utils/logger.js';
+import pagination from '../../utils/pagination.js';
+import GetPresentProofsDto from '../entities/get-present-proofs.dto.js';
+import GetProofRequest from '../entities/get-proof-request.dto.js';
+import MembershipCredentialDto from '../entities/membership-credential.dto.js';
+import PresentationSubscriptionEndpointDto from '../entities/presentationSubscribeEndPoint.entity.js';
+import SendProofRequest from '../entities/send-proof-request.dto.js';
+import PresentationProofRepository from '../repository/presentationProof.respository.js';
 
 @Injectable()
 export default class PresentationProofsService {
@@ -210,13 +210,16 @@ export default class PresentationProofsService {
       };
 
       if (attribute.schemaId) {
-        requestedAttributes[key].restrictions[0] = requestedAttributes[key].restrictions[0] || {};
+        requestedAttributes[key].restrictions[0] =
+          requestedAttributes[key].restrictions[0] || {};
         requestedAttributes[key].restrictions[0].schema_id = attribute.schemaId;
       }
 
       if (attribute.credentialDefId) {
-        requestedAttributes[key].restrictions[0] = requestedAttributes[key].restrictions[0] || {};
-        requestedAttributes[key].restrictions[0].cred_def_id = attribute.credentialDefId;
+        requestedAttributes[key].restrictions[0] =
+          requestedAttributes[key].restrictions[0] || {};
+        requestedAttributes[key].restrictions[0].cred_def_id =
+          attribute.credentialDefId;
       }
 
       if (attribute.attributeName) {
diff --git a/apps/proof-manager/src/prisma/prisma.module.ts b/apps/proof-manager/src/prisma/prisma.module.ts
index a120dad..8245fa1 100644
--- a/apps/proof-manager/src/prisma/prisma.module.ts
+++ b/apps/proof-manager/src/prisma/prisma.module.ts
@@ -1,10 +1,7 @@
 import { Module } from '@nestjs/common';
-import { ConfigModule } from '@nestjs/config';
-import PrismaService from '@DB/prisma.service';
+import PrismaService from './prisma.service.js';
 
 @Module({
-  imports: [ConfigModule],
-  controllers: [],
   providers: [PrismaService],
   exports: [PrismaService],
 })
diff --git a/apps/proof-manager/src/prisma/prisma.service.ts b/apps/proof-manager/src/prisma/prisma.service.ts
index 7d885d9..ed2ac64 100644
--- a/apps/proof-manager/src/prisma/prisma.service.ts
+++ b/apps/proof-manager/src/prisma/prisma.service.ts
@@ -1,4 +1,4 @@
-import { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common';
+import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
 import { ConfigService } from '@nestjs/config';
 import { PrismaClient } from '@prisma/client';
 
@@ -7,19 +7,18 @@ export default class PrismaService
   extends PrismaClient
   implements OnModuleInit, OnModuleDestroy
 {
-  constructor(private configService: ConfigService) {
-    super();
-  }
-
-  async onModuleInit() {
-    const prisma = new PrismaClient({
+  constructor(configService: ConfigService) {
+    super({
       datasources: {
         db: {
-          url: this.configService.get('DATABASE_URL'),
+          url: configService.get('DATABASE_URL'),
         },
       },
     });
-    await prisma.$connect();
+  }
+
+  async onModuleInit() {
+    await this.$connect();
   }
 
   async onModuleDestroy() {
diff --git a/apps/proof-manager/src/utils/logger.ts b/apps/proof-manager/src/utils/logger.ts
index 7e23cd5..b9de07b 100644
--- a/apps/proof-manager/src/utils/logger.ts
+++ b/apps/proof-manager/src/utils/logger.ts
@@ -1,35 +1,16 @@
+import { ecsFormat } from '@elastic/ecs-winston-format';
 import { existsSync, mkdirSync } from 'fs';
 import winston, { Logger } from 'winston';
-import ecsFormat from '@elastic/ecs-winston-format';
-import { LoggerConfig } from '@common/constants';
+import { LoggerConfig } from '../common/constants.js';
 
 if (!existsSync(LoggerConfig.lOG_DIR)) {
   mkdirSync(LoggerConfig.lOG_DIR);
 }
 
-// const esTransportOpts = {
-//   clientOpts: { node: process.env.ECSURL },
-// };
-
-// const esTransport = new ElasticsearchTransport(esTransportOpts);
-
-// esTransport.on('error', (error) => {
-//   console.error(error);
-// });
-
 const logger: Logger = winston.createLogger({
   format: ecsFormat({ convertReqRes: true }),
 
-  transports: [
-    new winston.transports.Console(),
-
-    // new winston.transports.File({
-    //   // path to log file
-    //   filename: LoggerConfig.FILE_PATH,
-    // }),
-    // // Path to Elasticsearch
-    // esTransport,
-  ],
+  transports: [new winston.transports.Console()],
 });
 
 logger.on('error', (error) => {
diff --git a/apps/proof-manager/test/app.e2e-spec.ts b/apps/proof-manager/test/app.e2e-spec.ts
index 0c9e926..3120aa7 100644
--- a/apps/proof-manager/test/app.e2e-spec.ts
+++ b/apps/proof-manager/test/app.e2e-spec.ts
@@ -1,7 +1,8 @@
-import { Test, TestingModule } from '@nestjs/testing';
+import { afterEach, beforeEach, describe, it } from '@jest/globals';
 import { INestApplication } from '@nestjs/common';
+import { Test, TestingModule } from '@nestjs/testing';
 import request from 'supertest';
-import AppModule from '../src/app.module';
+import AppModule from '../src/app.module.js';
 
 describe('AppController (e2e)', () => {
   let app: INestApplication;
@@ -15,6 +16,8 @@ describe('AppController (e2e)', () => {
     await app.init();
   });
 
-  it('/ (GET)', () =>
-    request(app.getHttpServer()).get('/').expect(200).expect('Hello World!'));
+  afterEach(() => app.close());
+
+  it('/health (GET)', () =>
+    request(app.getHttpServer()).get('/health').expect(200));
 });
diff --git a/apps/proof-manager/test/jest-e2e.json b/apps/proof-manager/test/jest-e2e.json
deleted file mode 100644
index e9d912f..0000000
--- a/apps/proof-manager/test/jest-e2e.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "moduleFileExtensions": ["js", "json", "ts"],
-  "rootDir": ".",
-  "testEnvironment": "node",
-  "testRegex": ".e2e-spec.ts$",
-  "transform": {
-    "^.+\\.(t|j)s$": "ts-jest"
-  }
-}
diff --git a/apps/proof-manager/test/jest.config.js b/apps/proof-manager/test/jest.config.js
new file mode 100644
index 0000000..c2b3ddf
--- /dev/null
+++ b/apps/proof-manager/test/jest.config.js
@@ -0,0 +1,9 @@
+/** @type {import('jest').Config} */
+
+import config from '../jest.config.js';
+
+export default {
+  ...config,
+  rootDir: '.',
+  testRegex: '.*\\.e2e-spec\\.ts$',
+};
diff --git a/apps/proof-manager/tsconfig.json b/apps/proof-manager/tsconfig.json
index d577f95..9329bd9 100644
--- a/apps/proof-manager/tsconfig.json
+++ b/apps/proof-manager/tsconfig.json
@@ -1,35 +1,18 @@
 {
+  "extends": "../../tsconfig.json",
+
   "compilerOptions": {
-    "target": "es6",
-    "experimentalDecorators": true,
-    "emitDecoratorMetadata": true,
-    "module": "commonjs",
+    "composite": true,
+    "removeComments": false,
     "declaration": true,
-    "removeComments": true,
+    "sourceMap": true,
+
+    "incremental": true,
+
     "outDir": "./dist",
-    "esModuleInterop": true,
-    "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
-    "strict": true,
-    "skipLibCheck": true,
     "baseUrl": "./",
-    "incremental": true,
-    "strictPropertyInitialization": false,
-    "sourceMap": true,
-    "strictNullChecks": true,
-    "paths": {
-      "@src/*": ["src/*"],
-      "@config/*": ["config/*"],
-      "@utils/*" :["src/utils/*"],
-      "@common/*":["src/common/*"],
-      "@presentationProof/*": ["src/presentationProof/*"],
-      "@health/*":["src/health/*"],
-      "@DB/*":["src/prisma/*"]
-    }
+    "rootDir": "./src"
   },
-  "include": [
-    "**/*.ts",
-    "src",
-    "config",
-  ],
-   "exclude": ["node_modules", "./dist/**/*"]
+  "include": ["src"],
+  "exclude": ["node_modules", "./dist/**/*"]
 }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 88677cd..db8826d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -521,168 +521,165 @@ importers:
   apps/proof-manager:
     dependencies:
       '@elastic/ecs-winston-format':
-        specifier: ^1.3.1
+        specifier: ^1.5.0
         version: 1.5.0
       '@nestjs/axios':
-        specifier: 0.0.5
-        version: 0.0.5(@nestjs/common@8.4.7)(reflect-metadata@0.1.13)(rxjs@7.8.1)
+        specifier: ^3.0.1
+        version: 3.0.1(@nestjs/common@10.2.8)(axios@1.6.2)(reflect-metadata@0.1.13)(rxjs@7.8.1)
       '@nestjs/common':
-        specifier: ^8.0.0
-        version: 8.4.7(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.1)
+        specifier: ^10.2.8
+        version: 10.2.8(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1)
       '@nestjs/config':
-        specifier: ^1.1.6
-        version: 1.2.1(@nestjs/common@8.4.7)(reflect-metadata@0.1.13)(rxjs@7.8.1)
+        specifier: ^3.1.1
+        version: 3.1.1(@nestjs/common@10.2.8)(reflect-metadata@0.1.13)
       '@nestjs/core':
-        specifier: ^8.0.0
-        version: 8.4.7(@nestjs/common@8.4.7)(@nestjs/microservices@8.4.7)(@nestjs/platform-express@8.4.7)(reflect-metadata@0.1.13)(rxjs@7.8.1)
+        specifier: ^10.2.8
+        version: 10.2.8(@nestjs/common@10.2.8)(@nestjs/microservices@10.2.8)(@nestjs/platform-express@10.2.8)(reflect-metadata@0.1.13)(rxjs@7.8.1)
       '@nestjs/mapped-types':
-        specifier: '*'
-        version: 2.0.4(@nestjs/common@8.4.7)(class-validator@0.13.2)(reflect-metadata@0.1.13)
+        specifier: ^2.0.4
+        version: 2.0.4(@nestjs/common@10.2.8)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)
       '@nestjs/microservices':
-        specifier: ^8.2.6
-        version: 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(nats@2.18.0)(reflect-metadata@0.1.13)(rxjs@7.8.1)
+        specifier: ^10.2.8
+        version: 10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(nats@2.18.0)(reflect-metadata@0.1.13)(rxjs@7.8.1)
       '@nestjs/platform-express':
-        specifier: ^8.0.0
-        version: 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)
+        specifier: ^10.2.8
+        version: 10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)
       '@nestjs/swagger':
-        specifier: ^5.2.0
-        version: 5.2.1(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(swagger-ui-express@4.6.3)
+        specifier: ^7.1.16
+        version: 7.1.16(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)
       '@nestjs/terminus':
-        specifier: ^8.0.4
-        version: 8.1.1(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(reflect-metadata@0.1.13)(rxjs@7.8.1)
+        specifier: ^10.1.1
+        version: 10.1.1(@nestjs/axios@3.0.1)(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(@nestjs/microservices@10.2.8)(@prisma/client@5.6.0)(reflect-metadata@0.1.13)(rxjs@7.8.1)
       '@prisma/client':
-        specifier: ^3.15.2
-        version: 3.15.2(prisma@3.15.2)
-      '@types/express':
-        specifier: ^4.17.13
-        version: 4.17.21
-      '@types/jest':
-        specifier: 27.0.2
-        version: 27.0.2
-      '@types/jsonwebtoken':
-        specifier: ^8.5.9
-        version: 8.5.9
-      '@types/node':
-        specifier: ^16.0.0
-        version: 16.18.57
+        specifier: ^5.6.0
+        version: 5.6.0(prisma@5.6.0)
       class-validator:
-        specifier: ^0.13.2
-        version: 0.13.2
-      express:
-        specifier: ^4.17.3
-        version: 4.18.2
+        specifier: ^0.14.0
+        version: 0.14.0
       joi:
-        specifier: ^17.6.0
+        specifier: ^17.11.0
         version: 17.11.0
       js-base64:
         specifier: ^3.7.2
         version: 3.7.5
       jsonwebtoken:
-        specifier: ^8.5.1
-        version: 8.5.1
+        specifier: ^9.0.2
+        version: 9.0.2
       jwks-rsa:
-        specifier: ^3.0.0
+        specifier: ^3.1.0
         version: 3.1.0
       moment:
-        specifier: ^2.29.1
+        specifier: ^2.29.4
         version: 2.29.4
       nats:
-        specifier: ^2.6.0
+        specifier: ^2.18.0
         version: 2.18.0
       pg:
-        specifier: ^8.7.3
+        specifier: ^8.11.3
         version: 8.11.3
       reflect-metadata:
         specifier: ^0.1.13
         version: 0.1.13
-      rimraf:
-        specifier: ^3.0.2
-        version: 3.0.2
       rxjs:
-        specifier: ^7.2.0
+        specifier: ^7.8.1
         version: 7.8.1
       winston:
-        specifier: ^3.6.0
+        specifier: ^3.11.0
         version: 3.11.0
       winston-elasticsearch:
-        specifier: ^0.16.1
-        version: 0.16.1
+        specifier: ^0.17.4
+        version: 0.17.4
     devDependencies:
+      '@jest/globals':
+        specifier: ^29.7.0
+        version: 29.7.0
       '@nestjs/cli':
-        specifier: ^8.0.0
-        version: 8.2.8
+        specifier: ^10.2.1
+        version: 10.2.1(@swc/cli@0.1.62)(@swc/core@1.3.96)
       '@nestjs/schematics':
-        specifier: ^8.0.0
-        version: 8.0.11(typescript@4.9.5)
+        specifier: ^10.0.3
+        version: 10.0.3(chokidar@3.5.3)(typescript@5.2.2)
       '@nestjs/testing':
-        specifier: ^8.0.0
-        version: 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(@nestjs/microservices@8.4.7)(@nestjs/platform-express@8.4.7)
+        specifier: ^10.2.8
+        version: 10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(@nestjs/microservices@10.2.8)(@nestjs/platform-express@10.2.8)
+      '@swc/cli':
+        specifier: ^0.1.62
+        version: 0.1.62(@swc/core@1.3.96)
+      '@swc/core':
+        specifier: ^1.3.96
+        version: 1.3.96
+      '@swc/jest':
+        specifier: ^0.2.29
+        version: 0.2.29(@swc/core@1.3.96)
+      '@types/express':
+        specifier: ^4.17.21
+        version: 4.17.21
+      '@types/jest':
+        specifier: ^29.5.8
+        version: 29.5.8
+      '@types/jsonwebtoken':
+        specifier: ^9.0.5
+        version: 9.0.5
+      '@types/node':
+        specifier: ^20.9.0
+        version: 20.9.0
       '@types/supertest':
-        specifier: ^2.0.11
+        specifier: ^2.0.16
         version: 2.0.16
       '@typescript-eslint/eslint-plugin':
-        specifier: ^5.0.0
-        version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(typescript@4.9.5)
+        specifier: ^6.11.0
+        version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2)
       '@typescript-eslint/parser':
-        specifier: ^5.0.0
-        version: 5.62.0(eslint@8.53.0)(typescript@4.9.5)
+        specifier: ^6.11.0
+        version: 6.11.0(eslint@8.53.0)(typescript@5.2.2)
       dotenv-cli:
-        specifier: ^4.1.1
-        version: 4.1.1
+        specifier: ^7.3.0
+        version: 7.3.0
       eslint:
-        specifier: ^8.0.1
+        specifier: ^8.53.0
         version: 8.53.0
-      eslint-config-airbnb-typescript:
-        specifier: ^16.1.0
-        version: 16.2.0(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.29.0)(eslint@8.53.0)
       eslint-config-prettier:
-        specifier: ^8.3.0
-        version: 8.10.0(eslint@8.53.0)
+        specifier: ^9.0.0
+        version: 9.0.0(eslint@8.53.0)
       eslint-plugin-import:
-        specifier: ^2.25.4
-        version: 2.29.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)
+        specifier: ^2.29.0
+        version: 2.29.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)
       eslint-plugin-prettier:
-        specifier: ^4.0.0
-        version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.53.0)(prettier@2.8.8)
+        specifier: ^5.0.1
+        version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0)
       husky:
-        specifier: ^7.0.4
-        version: 7.0.4
+        specifier: ^8.0.3
+        version: 8.0.3
       jest:
-        specifier: ^27.2.5
-        version: 27.5.1(ts-node@10.9.1)
+        specifier: ^29.7.0
+        version: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1)
       node-mocks-http:
-        specifier: ^1.11.0
+        specifier: ^1.13.0
         version: 1.13.0
       prettier:
-        specifier: ^2.3.2
-        version: 2.8.8
+        specifier: ^3.1.0
+        version: 3.1.0
       prisma:
-        specifier: ^3.15.2
-        version: 3.15.2
+        specifier: ^5.6.0
+        version: 5.6.0
+      rimraf:
+        specifier: ^5.0.5
+        version: 5.0.5
       source-map-support:
-        specifier: ^0.5.20
+        specifier: ^0.5.21
         version: 0.5.21
       supertest:
-        specifier: ^6.1.3
+        specifier: ^6.3.3
         version: 6.3.3
       swagger-ui-express:
-        specifier: ^4.3.0
-        version: 4.6.3(express@4.18.2)
-      ts-jest:
-        specifier: ^27.0.3
-        version: 27.1.5(@babel/core@7.23.0)(@types/jest@27.0.2)(jest@27.5.1)(typescript@4.9.5)
-      ts-loader:
-        specifier: ^9.2.3
-        version: 9.4.4(typescript@4.9.5)(webpack@5.89.0)
+        specifier: ^5.0.0
+        version: 5.0.0(express@4.18.2)
       ts-node:
-        specifier: ^10.0.0
-        version: 10.9.1(@types/node@16.18.57)(typescript@4.9.5)
-      tsconfig-paths:
-        specifier: ^3.10.1
-        version: 3.14.2
+        specifier: ^10.9.1
+        version: 10.9.1(@swc/core@1.3.96)(@types/node@20.9.0)(typescript@5.2.2)
       typescript:
-        specifier: ^4.3.5
-        version: 4.9.5
+        specifier: ^5.2.2
+        version: 5.2.2
 
   apps/ssi-abstraction:
     dependencies:
@@ -2351,7 +2348,7 @@ packages:
         optional: true
     dependencies:
       '@nestjs/common': 8.4.7(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.1)
-      '@nestjs/microservices': 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(nats@2.18.0)(reflect-metadata@0.1.13)(rxjs@7.8.1)
+      '@nestjs/microservices': 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(nats@2.17.0)(reflect-metadata@0.1.13)(rxjs@7.8.1)
       '@nestjs/platform-express': 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)
       '@nuxtjs/opencollective': 0.3.2
       fast-safe-stringify: 2.1.1
@@ -2459,24 +2456,6 @@ packages:
       reflect-metadata: 0.1.13
     dev: false
 
-  /@nestjs/mapped-types@2.0.4(@nestjs/common@8.4.7)(class-validator@0.13.2)(reflect-metadata@0.1.13):
-    resolution: {integrity: sha512-xl+gUSp0B+ln1VSNoUftlglk8dfpUes3DHGxKZ5knuBxS5g2H/8p9/DSBOYWUfO5f4u9s6ffBPZ71WO+tbe5SA==}
-    peerDependencies:
-      '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0
-      class-transformer: ^0.4.0 || ^0.5.0
-      class-validator: ^0.13.0 || ^0.14.0
-      reflect-metadata: ^0.1.12
-    peerDependenciesMeta:
-      class-transformer:
-        optional: true
-      class-validator:
-        optional: true
-    dependencies:
-      '@nestjs/common': 8.4.7(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.1)
-      class-validator: 0.13.2
-      reflect-metadata: 0.1.13
-    dev: false
-
   /@nestjs/microservices@10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(nats@2.18.0)(reflect-metadata@0.1.13)(rxjs@7.8.1):
     resolution: {integrity: sha512-zfrD7hgN3ygrjicASQUVdnsh3V7vTmhZfttZ7ZNjihwqEoweJFgWmqKkpAfbCrIP7z19gT4JQ8hO4W0Alwdt0w==}
     peerDependencies:
@@ -2564,51 +2543,6 @@ packages:
       reflect-metadata: 0.1.13
       rxjs: 7.8.1
       tslib: 2.4.0
-    dev: false
-
-  /@nestjs/microservices@8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(nats@2.18.0)(reflect-metadata@0.1.13)(rxjs@7.8.1):
-    resolution: {integrity: sha512-JZX29tBWbbPa+Q06QcCbwKTyEsOFHAPrxgfEkRNwoaiEqqCsITT9w2n5bcz3vlUurdpy5dIgX3/almbitghbKg==}
-    peerDependencies:
-      '@grpc/grpc-js': '*'
-      '@nestjs/common': ^8.0.0
-      '@nestjs/core': ^8.0.0
-      '@nestjs/websockets': ^8.0.0
-      amqp-connection-manager: '*'
-      amqplib: '*'
-      cache-manager: '*'
-      kafkajs: '*'
-      mqtt: '*'
-      nats: '*'
-      redis: '*'
-      reflect-metadata: ^0.1.12
-      rxjs: ^7.1.0
-    peerDependenciesMeta:
-      '@grpc/grpc-js':
-        optional: true
-      '@nestjs/websockets':
-        optional: true
-      amqp-connection-manager:
-        optional: true
-      amqplib:
-        optional: true
-      cache-manager:
-        optional: true
-      kafkajs:
-        optional: true
-      mqtt:
-        optional: true
-      nats:
-        optional: true
-      redis:
-        optional: true
-    dependencies:
-      '@nestjs/common': 8.4.7(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.1)
-      '@nestjs/core': 8.4.7(@nestjs/common@8.4.7)(@nestjs/microservices@8.4.7)(@nestjs/platform-express@8.4.7)(reflect-metadata@0.1.13)(rxjs@7.8.1)
-      iterare: 1.2.1
-      nats: 2.18.0
-      reflect-metadata: 0.1.13
-      rxjs: 7.8.1
-      tslib: 2.4.0
 
   /@nestjs/platform-express@10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8):
     resolution: {integrity: sha512-WoSSVtwIRc5AdGMHWVzWZK4JZLT0f4o2xW8P9gQvcX+omL8W1kXCfY8GQYXNBG84XmBNYH8r0FtC8oMe/lH5NQ==}
@@ -2865,7 +2799,7 @@ packages:
     dependencies:
       '@nestjs/common': 8.4.7(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.1)
       '@nestjs/core': 8.4.7(@nestjs/common@8.4.7)(@nestjs/microservices@8.4.7)(@nestjs/platform-express@8.4.7)(reflect-metadata@0.1.13)(rxjs@7.8.1)
-      '@nestjs/microservices': 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(nats@2.18.0)(reflect-metadata@0.1.13)(rxjs@7.8.1)
+      '@nestjs/microservices': 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(nats@2.17.0)(reflect-metadata@0.1.13)(rxjs@7.8.1)
       '@nestjs/platform-express': 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)
       tslib: 2.4.0
     dev: true
@@ -2990,20 +2924,6 @@ packages:
       tslib: 2.6.2
     dev: true
 
-  /@prisma/client@3.15.2(prisma@3.15.2):
-    resolution: {integrity: sha512-ErqtwhX12ubPhU4d++30uFY/rPcyvjk+mdifaZO5SeM21zS3t4jQrscy8+6IyB0GIYshl5ldTq6JSBo1d63i8w==}
-    engines: {node: '>=12.6'}
-    requiresBuild: true
-    peerDependencies:
-      prisma: '*'
-    peerDependenciesMeta:
-      prisma:
-        optional: true
-    dependencies:
-      '@prisma/engines-version': 3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e
-      prisma: 3.15.2
-    dev: false
-
   /@prisma/client@5.6.0(prisma@5.6.0):
     resolution: {integrity: sha512-mUDefQFa1wWqk4+JhKPYq8BdVoFk9NFMBXUI8jAkBfQTtgx8WPx02U2HB/XbAz3GSUJpeJOKJQtNvaAIDs6sug==}
     engines: {node: '>=16.13'}
@@ -3018,18 +2938,10 @@ packages:
       prisma: 5.6.0
     dev: false
 
-  /@prisma/engines-version@3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e:
-    resolution: {integrity: sha512-e3k2Vd606efd1ZYy2NQKkT4C/pn31nehyLhVug6To/q8JT8FpiMrDy7zmm3KLF0L98NOQQcutaVtAPhzKhzn9w==}
-    dev: false
-
   /@prisma/engines-version@5.6.0-32.e95e739751f42d8ca026f6b910f5a2dc5adeaeee:
     resolution: {integrity: sha512-UoFgbV1awGL/3wXuUK3GDaX2SolqczeeJ5b4FVec9tzeGbSWJboPSbT0psSrmgYAKiKnkOPFSLlH6+b+IyOwAw==}
     dev: false
 
-  /@prisma/engines@3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e:
-    resolution: {integrity: sha512-NHlojO1DFTsSi3FtEleL9QWXeSF/UjhCW0fgpi7bumnNZ4wj/eQ+BJJ5n2pgoOliTOGv9nX2qXvmHap7rJMNmg==}
-    requiresBuild: true
-
   /@prisma/engines@5.6.0:
     resolution: {integrity: sha512-Mt2q+GNJpU2vFn6kif24oRSBQv1KOkYaterQsi0k2/lA+dLvhRX6Lm26gon6PYHwUM8/h8KRgXIUMU0PCLB6bw==}
     requiresBuild: true
@@ -3432,12 +3344,6 @@ packages:
     resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
     dev: true
 
-  /@types/jsonwebtoken@8.5.9:
-    resolution: {integrity: sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==}
-    dependencies:
-      '@types/node': 20.9.0
-    dev: false
-
   /@types/jsonwebtoken@9.0.5:
     resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==}
     dependencies:
@@ -3605,34 +3511,6 @@ packages:
       - supports-color
     dev: true
 
-  /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(typescript@4.9.5):
-    resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-    peerDependencies:
-      '@typescript-eslint/parser': ^5.0.0
-      eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
-      typescript: '*'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
-    dependencies:
-      '@eslint-community/regexpp': 4.9.1
-      '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5)
-      '@typescript-eslint/scope-manager': 5.62.0
-      '@typescript-eslint/type-utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5)
-      '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5)
-      debug: 4.3.4
-      eslint: 8.53.0
-      graphemer: 1.4.0
-      ignore: 5.2.4
-      natural-compare-lite: 1.4.0
-      semver: 7.5.4
-      tsutils: 3.21.0(typescript@4.9.5)
-      typescript: 4.9.5
-    transitivePeerDependencies:
-      - supports-color
-    dev: true
-
   /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2):
     resolution: {integrity: sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==}
     engines: {node: ^16.0.0 || >=18.0.0}
@@ -3682,26 +3560,6 @@ packages:
       - supports-color
     dev: true
 
-  /@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5):
-    resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-    peerDependencies:
-      eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
-      typescript: '*'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
-    dependencies:
-      '@typescript-eslint/scope-manager': 5.62.0
-      '@typescript-eslint/types': 5.62.0
-      '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
-      debug: 4.3.4
-      eslint: 8.53.0
-      typescript: 4.9.5
-    transitivePeerDependencies:
-      - supports-color
-    dev: true
-
   /@typescript-eslint/parser@6.11.0(eslint@8.53.0)(typescript@5.2.2):
     resolution: {integrity: sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==}
     engines: {node: ^16.0.0 || >=18.0.0}
@@ -3759,26 +3617,6 @@ packages:
       - supports-color
     dev: true
 
-  /@typescript-eslint/type-utils@5.62.0(eslint@8.53.0)(typescript@4.9.5):
-    resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-    peerDependencies:
-      eslint: '*'
-      typescript: '*'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
-    dependencies:
-      '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
-      '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5)
-      debug: 4.3.4
-      eslint: 8.53.0
-      tsutils: 3.21.0(typescript@4.9.5)
-      typescript: 4.9.5
-    transitivePeerDependencies:
-      - supports-color
-    dev: true
-
   /@typescript-eslint/type-utils@6.11.0(eslint@8.53.0)(typescript@5.2.2):
     resolution: {integrity: sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==}
     engines: {node: ^16.0.0 || >=18.0.0}
@@ -3892,26 +3730,6 @@ packages:
       - typescript
     dev: true
 
-  /@typescript-eslint/utils@5.62.0(eslint@8.53.0)(typescript@4.9.5):
-    resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-    peerDependencies:
-      eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
-    dependencies:
-      '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0)
-      '@types/json-schema': 7.0.13
-      '@types/semver': 7.5.3
-      '@typescript-eslint/scope-manager': 5.62.0
-      '@typescript-eslint/types': 5.62.0
-      '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
-      eslint: 8.53.0
-      eslint-scope: 5.1.1
-      semver: 7.5.4
-    transitivePeerDependencies:
-      - supports-color
-      - typescript
-    dev: true
-
   /@typescript-eslint/utils@5.62.0(eslint@8.53.0)(typescript@5.2.2):
     resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -6079,21 +5897,6 @@ packages:
       eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.50.0)
     dev: true
 
-  /eslint-config-airbnb-typescript@16.2.0(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.29.0)(eslint@8.53.0):
-    resolution: {integrity: sha512-OUaMPZpTOZGKd5tXOjJ9PRU4iYNW/Z5DoHIynjsVK/FpkWdiY5+nxQW6TiJAlLwVI1l53xUOrnlZWtVBVQzuWA==}
-    peerDependencies:
-      '@typescript-eslint/eslint-plugin': ^5.0.0
-      '@typescript-eslint/parser': ^5.0.0
-      eslint: ^7.32.0 || ^8.2.0
-      eslint-plugin-import: ^2.25.3
-    dependencies:
-      '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(typescript@4.9.5)
-      '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5)
-      eslint: 8.53.0
-      eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.0)(eslint@8.53.0)
-      eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)
-    dev: true
-
   /eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@6.11.0)(@typescript-eslint/parser@6.11.0)(eslint-plugin-import@2.29.0)(eslint@8.53.0):
     resolution: {integrity: sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==}
     peerDependencies:
@@ -6118,15 +5921,6 @@ packages:
       eslint: 8.50.0
     dev: true
 
-  /eslint-config-prettier@8.10.0(eslint@8.53.0):
-    resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==}
-    hasBin: true
-    peerDependencies:
-      eslint: '>=7.0.0'
-    dependencies:
-      eslint: 8.53.0
-    dev: true
-
   /eslint-config-prettier@9.0.0(eslint@8.53.0):
     resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==}
     hasBin: true
@@ -6175,35 +5969,6 @@ packages:
       - supports-color
     dev: true
 
-  /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0):
-    resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
-    engines: {node: '>=4'}
-    peerDependencies:
-      '@typescript-eslint/parser': '*'
-      eslint: '*'
-      eslint-import-resolver-node: '*'
-      eslint-import-resolver-typescript: '*'
-      eslint-import-resolver-webpack: '*'
-    peerDependenciesMeta:
-      '@typescript-eslint/parser':
-        optional: true
-      eslint:
-        optional: true
-      eslint-import-resolver-node:
-        optional: true
-      eslint-import-resolver-typescript:
-        optional: true
-      eslint-import-resolver-webpack:
-        optional: true
-    dependencies:
-      '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5)
-      debug: 3.2.7
-      eslint: 8.53.0
-      eslint-import-resolver-node: 0.3.9
-    transitivePeerDependencies:
-      - supports-color
-    dev: true
-
   /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.11.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0):
     resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
     engines: {node: '>=4'}
@@ -6268,41 +6033,6 @@ packages:
       - supports-color
     dev: true
 
-  /eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0):
-    resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==}
-    engines: {node: '>=4'}
-    peerDependencies:
-      '@typescript-eslint/parser': '*'
-      eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
-    peerDependenciesMeta:
-      '@typescript-eslint/parser':
-        optional: true
-    dependencies:
-      '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5)
-      array-includes: 3.1.7
-      array.prototype.findlastindex: 1.2.3
-      array.prototype.flat: 1.3.2
-      array.prototype.flatmap: 1.3.2
-      debug: 3.2.7
-      doctrine: 2.1.0
-      eslint: 8.53.0
-      eslint-import-resolver-node: 0.3.9
-      eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0)
-      hasown: 2.0.0
-      is-core-module: 2.13.1
-      is-glob: 4.0.3
-      minimatch: 3.1.2
-      object.fromentries: 2.0.7
-      object.groupby: 1.0.1
-      object.values: 1.1.7
-      semver: 6.3.1
-      tsconfig-paths: 3.14.2
-    transitivePeerDependencies:
-      - eslint-import-resolver-typescript
-      - eslint-import-resolver-webpack
-      - supports-color
-    dev: true
-
   /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0):
     resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==}
     engines: {node: '>=4'}
@@ -6377,23 +6107,6 @@ packages:
       prettier-linter-helpers: 1.0.0
     dev: true
 
-  /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.53.0)(prettier@2.8.8):
-    resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
-    engines: {node: '>=12.0.0'}
-    peerDependencies:
-      eslint: '>=7.28.0'
-      eslint-config-prettier: '*'
-      prettier: '>=2.0.0'
-    peerDependenciesMeta:
-      eslint-config-prettier:
-        optional: true
-    dependencies:
-      eslint: 8.53.0
-      eslint-config-prettier: 8.10.0(eslint@8.53.0)
-      prettier: 2.8.8
-      prettier-linter-helpers: 1.0.0
-    dev: true
-
   /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0):
     resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==}
     engines: {node: ^14.18.0 || >=16.0.0}
@@ -9055,22 +8768,6 @@ packages:
       graceful-fs: 4.2.11
     dev: true
 
-  /jsonwebtoken@8.5.1:
-    resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==}
-    engines: {node: '>=4', npm: '>=1.4.28'}
-    dependencies:
-      jws: 3.2.2
-      lodash.includes: 4.3.0
-      lodash.isboolean: 3.0.3
-      lodash.isinteger: 4.0.4
-      lodash.isnumber: 3.0.3
-      lodash.isplainobject: 4.0.6
-      lodash.isstring: 4.0.1
-      lodash.once: 4.1.1
-      ms: 2.1.3
-      semver: 5.7.2
-    dev: false
-
   /jsonwebtoken@9.0.2:
     resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==}
     engines: {node: '>=12', npm: '>=6'}
@@ -9824,7 +9521,6 @@ packages:
     engines: {node: '>= 14.0.0'}
     dependencies:
       nkeys.js: 1.0.5
-    dev: false
 
   /nats@2.18.0:
     resolution: {integrity: sha512-zZF004ejzf67Za0Tva+xphxoxBMNc5IMLqbZ7Ho0j9TMuisjpo+qCd1EktXRCLNxmrZ8O6Tbm1dBsZYNF6yR1A==}
@@ -10529,14 +10225,6 @@ packages:
       react-is: 18.2.0
     dev: true
 
-  /prisma@3.15.2:
-    resolution: {integrity: sha512-nMNSMZvtwrvoEQ/mui8L/aiCLZRCj5t6L3yujKpcDhIPk7garp8tL4nMx2+oYsN0FWBacevJhazfXAbV1kfBzA==}
-    engines: {node: '>=12.6'}
-    hasBin: true
-    requiresBuild: true
-    dependencies:
-      '@prisma/engines': 3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e
-
   /prisma@5.6.0:
     resolution: {integrity: sha512-EEaccku4ZGshdr2cthYHhf7iyvCcXqwJDvnoQRAJg5ge2Tzpv0e2BaMCp+CbbDUwoVTzwgOap9Zp+d4jFa2O9A==}
     engines: {node: '>=16.13'}
@@ -11030,11 +10718,6 @@ packages:
       semver: 7.5.4
     dev: true
 
-  /semver@5.7.2:
-    resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
-    hasBin: true
-    dev: false
-
   /semver@6.3.1:
     resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
     hasBin: true
@@ -11528,6 +11211,7 @@ packages:
 
   /swagger-ui-dist@5.9.0:
     resolution: {integrity: sha512-NUHSYoe5XRTk/Are8jPJ6phzBh3l9l33nEyXosM17QInoV95/jng8+PuSGtbD407QoPf93MH3Bkh773OgesJpA==}
+    dev: false
 
   /swagger-ui-dist@5.9.1:
     resolution: {integrity: sha512-5zAx+hUwJb9T3EAntc7TqYkV716CMqG6sZpNlAAMOMWkNXRYxGkN8ADIvD55dQZ10LxN90ZM/TQmN7y1gpICnw==}
@@ -11540,6 +11224,7 @@ packages:
     dependencies:
       express: 4.18.2
       swagger-ui-dist: 5.9.0
+    dev: false
 
   /swagger-ui-express@5.0.0(express@4.18.2):
     resolution: {integrity: sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==}
-- 
GitLab