diff --git a/.gitignore b/.gitignore index ecfe0b3024594782f20e11ad082008d9bc2cad4c..62521a9058163984cb806a7ac031befc59028961 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ node_modules/ apps/*/node_modules /dist /apps/**/dist/ +*.tsbuildinfo # Logs /logs diff --git a/apps/attestation-manager/.eslintrc.cjs b/apps/attestation-manager/.eslintrc.cjs new file mode 100644 index 0000000000000000000000000000000000000000..e0c3a4cc340447911dc9ff5a109c3d97e5a33151 --- /dev/null +++ b/apps/attestation-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/attestation-manager/.eslintrc.js b/apps/attestation-manager/.eslintrc.js deleted file mode 100644 index 1d3be26ba9f605df5486ce040d8a15fb06ba2e8e..0000000000000000000000000000000000000000 --- a/apps/attestation-manager/.eslintrc.js +++ /dev/null @@ -1,27 +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', - "@typescript-eslint/ban-ts-comment": "off", - "prefer-spread": "off" - }, -}; diff --git a/apps/attestation-manager/.prettierignore b/apps/attestation-manager/.prettierignore new file mode 100644 index 0000000000000000000000000000000000000000..487d8699d35d1b4e826aed4183db13d2816bf562 --- /dev/null +++ b/apps/attestation-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/attestation-manager/.prettierrc b/apps/attestation-manager/.prettierrc index dcb72794f5300a3e0ccd2ad0669d802b62f3d370..a20502b7f06d848452da0d93ce8830c1d86b05dd 100644 --- a/apps/attestation-manager/.prettierrc +++ b/apps/attestation-manager/.prettierrc @@ -1,4 +1,4 @@ { "singleQuote": true, "trailingComma": "all" -} \ No newline at end of file +} diff --git a/apps/attestation-manager/.swcrc b/apps/attestation-manager/.swcrc new file mode 100644 index 0000000000000000000000000000000000000000..f0831e454c02bece75b8b8b60ac59891a48fe7f2 --- /dev/null +++ b/apps/attestation-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/attestation-manager/jest.config.js b/apps/attestation-manager/jest.config.js new file mode 100644 index 0000000000000000000000000000000000000000..1b2ee91fa88cada4d31ad3c2528291214de4aebe --- /dev/null +++ b/apps/attestation-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/attestation-manager/nest-cli.json b/apps/attestation-manager/nest-cli.json index 56167b36a14c2c69eb0db57302e2c44a1128b006..0a947a58e97e43e99b3e3464b02179459ac759c7 100644 --- a/apps/attestation-manager/nest-cli.json +++ b/apps/attestation-manager/nest-cli.json @@ -1,4 +1,8 @@ { "collection": "@nestjs/schematics", - "sourceRoot": "src" + "sourceRoot": "src", + "compilerOptions": { + "builder": "swc", + "typeCheck": true + } } diff --git a/apps/attestation-manager/package.json b/apps/attestation-manager/package.json index 28b83e66a591e262325db10dfa509d7abdbc14d3..a3c8ddfe2126b1a385d7943d4abd153e2dc1b004 100644 --- a/apps/attestation-manager/package.json +++ b/apps/attestation-manager/package.json @@ -5,120 +5,82 @@ "author": "Shirdhar", "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\"", "dbSchema": "npx prisma db push --schema=./src/prisma/schema.prisma", "prisma:generate": "prisma generate --schema=./src/prisma/schema.prisma", "prisma:migrate": "npx prisma migrate deploy --schema=./src/prisma/schema.prisma", "prismaStudio": "npx prisma studio", "start": "nest start", - "start:docker": "pnpm prisma:generate && pnpm dbSchema && pnpm start", - "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "start:docker": "yarn prisma:generate && yarn dbSchema && yarn start", + "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.9.2", - "@types/express": "^4.17.13", - "@types/jest": "27.0.2", - "@types/jsonwebtoken": "^8.5.9", - "@types/node": "^16.0.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.3", + "@nestjs/microservices": "^10.2.8", + "@nestjs/platform-express": "^10.2.8", + "@nestjs/swagger": "^7.1.15", + "@nestjs/terminus": "^10.1.1", + "@prisma/client": "^5.6.0", "class-transformer": "^0.5.1", - "class-validator": "^0.13.2", - "express": "^4.17.3", - "husky": "^7.0.4", - "joi": "^17.6.0", - "jsonwebtoken": "^8.5.1", - "jwks-rsa": "^3.0.0", + "class-validator": "^0.14.0", + "joi": "^17.11.0", + "jsonwebtoken": "^9.0.2", + "jwks-rsa": "^3.1.0", "liquibase": "^4.4.0", - "moment": "^2.29.1", - "nats": "^2.6.0", - "pg": "^8.7.3", - "prisma": "^3.9.2", + "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", - "swagger-ui-express": "^4.3.0", - "winston": "^3.6.0", - "winston-elasticsearch": "^0.16.1" + "rxjs": "^7.8.1", + "swagger-ui-express": "^5.0.0", + "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", - "jest": "^27.2.5", - "node-mocks-http": "^1.11.0", - "prettier": "^2.3.2", - "source-map-support": "^0.5.20", - "supertest": "^6.1.3", - "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/", - "<rootDir>/common/" - ], - "moduleNameMapper": { - "^@config/(.*)$": [ - "<rootDir>/../config/$1" - ], - "^@credentialDef/(.*)$": "<rootDir>/credentialDef/$1", - "^@issueCredential/(.*)$": "<rootDir>/issue-credential/$1", - "^@schemas/(.*)$": "<rootDir>/schemas/$1", - "^@userInfo/(.*)$": "<rootDir>/userInfo/$1", - "^@src/(.*)$": "<rootDir>/$1", - "^@DB/(.*)$": "<rootDir>/prisma/$1", - "^@common/(.*)$": "<rootDir>/common/$1", - "^@utils/(.*)$": "<rootDir>/utils/$1", - "^@health/(.*)$": "<rootDir>/health/$1" - }, - "rootDir": "src", - "testRegex": ".*\\.spec\\.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - }, - "collectCoverageFrom": [ - "**/*.(t|j)s" - ], - "coverageDirectory": "../coverage", - "testEnvironment": "node" + "@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-jest": "^27.6.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", + "ts-node": "^10.9.1", + "typescript": "^5.2.2" } } diff --git a/apps/attestation-manager/src/app.module.ts b/apps/attestation-manager/src/app.module.ts index f117f1901ae263c1f422120be346071d282e50aa..d7551e83007624a0d89cf2fb48cab791956a6fc6 100644 --- a/apps/attestation-manager/src/app.module.ts +++ b/apps/attestation-manager/src/app.module.ts @@ -1,4 +1,3 @@ -import { APP_FILTER } from '@nestjs/core'; import { MiddlewareConsumer, Module, @@ -6,16 +5,17 @@ import { RequestMethod, } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; +import { APP_FILTER } from '@nestjs/core'; import { TerminusModule } from '@nestjs/terminus'; -import config from '@config/config'; -import validationSchema from '@config/validation'; -import HealthController from '@src/health/health.controller'; -import ExceptionHandler from '@src/common/exception.handler'; -import SchemasModule from '@src/schemas/module'; -import CredentialDefModule from '@src/credentialDef/module'; -import UserInfoModule from '@userInfo/module'; -import AttestationModule from './issue-credential/module'; -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 CredentialDefModule from './credentialDef/module.js'; +import HealthController from './health/health.controller.js'; +import AttestationModule from './issue-credential/module.js'; +import { AuthMiddleware } from './middleware/auth.middleware.js'; +import SchemasModule from './schemas/module.js'; +import UserInfoModule from './userInfo/module.js'; @Module({ imports: [ @@ -39,7 +39,6 @@ import { AuthMiddleware } from './middleware/auth.middleware'; ], }) export default class AppModule implements NestModule { - // eslint-disable-next-line class-methods-use-this configure(consumer: MiddlewareConsumer) { // eslint-disable-line consumer diff --git a/apps/attestation-manager/src/client/nats.client.ts b/apps/attestation-manager/src/client/nats.client.ts index e2189c89cd8e2e495c7bf6f3f3f6e6e75991af30..c232a1b2dcf576c9a77980f21678a0910505e570 100644 --- a/apps/attestation-manager/src/client/nats.client.ts +++ b/apps/attestation-manager/src/client/nats.client.ts @@ -1,7 +1,7 @@ import { Inject, Injectable } from '@nestjs/common'; import { ClientProxy } from '@nestjs/microservices'; import { lastValueFrom } from 'rxjs'; -import { Connection, NATSServices } from '@common/constants'; +import { Connection, NATSServices } from '../common/constants.js'; @Injectable() export default class NatsClientService { diff --git a/apps/attestation-manager/src/client/rest.client.ts b/apps/attestation-manager/src/client/rest.client.ts index a31574143daf2365741d318341b99ffc3c0b9bde..edd52e1edc16e0cc797a2c4e49ba7a6d67e1a639 100644 --- a/apps/attestation-manager/src/client/rest.client.ts +++ b/apps/attestation-manager/src/client/rest.client.ts @@ -1,6 +1,6 @@ +import { HttpService } from '@nestjs/axios'; import { Injectable } from '@nestjs/common'; import { lastValueFrom, map } from 'rxjs'; -import { HttpService } from '@nestjs/axios'; @Injectable() export default class RestClientService { diff --git a/apps/attestation-manager/src/client/tests/__mocks__/nats.client.ts b/apps/attestation-manager/src/client/tests/__mocks__/nats.client.ts index 2c172e125955a53821167a20d2467e5438b4cab6..1e1c7b9310b217a33e3bacbfb99a99de2ed79f1d 100644 --- a/apps/attestation-manager/src/client/tests/__mocks__/nats.client.ts +++ b/apps/attestation-manager/src/client/tests/__mocks__/nats.client.ts @@ -1,7 +1,7 @@ import { natsAgentResponse, natsConnectionResponse, -} from '../stubs/nats-response'; +} from '../stubs/nats-response.js'; const NatsClientServiceMock = jest.fn().mockReturnValue({ getAgentByParticipantId: jest.fn().mockReturnValue(natsAgentResponse), diff --git a/apps/attestation-manager/src/client/tests/__mocks__/rest.client.ts b/apps/attestation-manager/src/client/tests/__mocks__/rest.client.ts index 3244e2f31b5e2cbbf4858c1e82d85d85c5a9e8f6..d7e68ae4dcbce84a760bcfe0c23c87bf24af592f 100644 --- a/apps/attestation-manager/src/client/tests/__mocks__/rest.client.ts +++ b/apps/attestation-manager/src/client/tests/__mocks__/rest.client.ts @@ -1,4 +1,4 @@ -import schemaAgentDto from '@src/schemas/tests/stubs/schema-from-agent-dto'; +import schemaAgentDto from '../../../schemas/tests/stubs/schema-from-agent-dto.js'; const RestClientServiceMock = jest.fn().mockReturnValue({ post: jest.fn().mockReturnValue({ agent: 'response' }), diff --git a/apps/attestation-manager/src/client/tests/__mocks__/tsa.client.ts b/apps/attestation-manager/src/client/tests/__mocks__/tsa.client.ts index b2ceaf94690b2a078db3d08689e55d2b643219f6..7368ee8a72c34b4afbf9b8c3f02f5edad0eefb22 100644 --- a/apps/attestation-manager/src/client/tests/__mocks__/tsa.client.ts +++ b/apps/attestation-manager/src/client/tests/__mocks__/tsa.client.ts @@ -1,5 +1,5 @@ -import { PolicyReturnType } from '@src/client/tsa.client'; -import { TSAService } from '@src/common/constants'; +import { TSAService } from '../../../common/constants.js'; +import { PolicyReturnType } from '../../tsa.client.js'; const TSAClientServiceMock = jest.fn().mockReturnValue({ getPolicy: jest.fn().mockImplementation((url: string) => { diff --git a/apps/attestation-manager/src/client/tests/rest.client.spec.ts b/apps/attestation-manager/src/client/tests/rest.client.spec.ts index b7984fe1cd7574d10cded265c229aca273b618cc..6a38cdc38ed80d03e67f056166232040c35727e9 100644 --- a/apps/attestation-manager/src/client/tests/rest.client.spec.ts +++ b/apps/attestation-manager/src/client/tests/rest.client.spec.ts @@ -1,7 +1,7 @@ import { HttpModule, HttpService } from '@nestjs/axios'; import { Test, TestingModule } from '@nestjs/testing'; -import HttpServiceMock from '@src/tests/__mocks__/http-service'; -import RestClientService from '../rest.client'; +import HttpServiceMock from '../../tests/__mocks__/http-service.js'; +import RestClientService from '../rest.client.js'; describe('RestClientService', () => { let restClient: RestClientService; diff --git a/apps/attestation-manager/src/client/tests/stubs/nats-response.ts b/apps/attestation-manager/src/client/tests/stubs/nats-response.ts index 9abad304eaccd062778ff7c41ebb132dfc1c9523..776bf54d87df9a0492b6c950331ff915c103dbf6 100644 --- a/apps/attestation-manager/src/client/tests/stubs/nats-response.ts +++ b/apps/attestation-manager/src/client/tests/stubs/nats-response.ts @@ -1,5 +1,5 @@ -import { ResponseType } from '@src/common/response'; -import AttestationService from '@src/issue-credential/services/service'; +import type { ResponseType } from '../../../common/response.js'; +import AttestationService from '../../../issue-credential/services/service.js'; const natsAgentResponse: ResponseType = { statusCode: 200, diff --git a/apps/attestation-manager/src/client/tsa.client.ts b/apps/attestation-manager/src/client/tsa.client.ts index 541a695a01a666453c1751c75a4e15c18e5ad573..b0476f3a1a31e1ef062115bbd61851a2526c7950 100644 --- a/apps/attestation-manager/src/client/tsa.client.ts +++ b/apps/attestation-manager/src/client/tsa.client.ts @@ -1,14 +1,14 @@ import { Injectable } from '@nestjs/common'; -import RestClientService from '@src/client/rest.client'; +import RestClientService from './rest.client.js'; export interface PolicyReturnType { success: boolean; - returnData?: any; // replace with actual structure when ready + returnData?: unknown; // replace with actual structure when ready } export interface PolicyResult { allow: boolean; - data?: any; + data?: unknown; } @Injectable() @@ -35,7 +35,7 @@ export default class TSAClientService { success: false, returnData: 'Unable to fetch policy data.', } as PolicyReturnType; - } catch (error: any) { + } catch (error: any /* eslint-disable-line @typescript-eslint/no-explicit-any */) { let returnData = 'Something went wrong!'; if (error?.isAxiosError) { diff --git a/apps/attestation-manager/src/common/date.utils.ts b/apps/attestation-manager/src/common/date.utils.ts index f7276e5c4d3bab62d48addca3fac71f21ddd4df8..a6d0cac913ae0a54764db2914951e2432ad6a6ed 100644 --- a/apps/attestation-manager/src/common/date.utils.ts +++ b/apps/attestation-manager/src/common/date.utils.ts @@ -1,4 +1,4 @@ -import moment = require('moment'); +import moment from 'moment'; const getDate = () => moment().format('MM-DD-YYYY, h:mm:ss a'); diff --git a/apps/attestation-manager/src/common/exception.handler.ts b/apps/attestation-manager/src/common/exception.handler.ts index 9495ebd23c60a0a3fa9372f0ffc3b730eeaf68c6..4064f2374d81bec4c6cf2c3df4c118f92ab64993 100644 --- a/apps/attestation-manager/src/common/exception.handler.ts +++ b/apps/attestation-manager/src/common/exception.handler.ts @@ -1,17 +1,18 @@ import { - ExceptionFilter, - Catch, ArgumentsHost, + Catch, + ExceptionFilter, HttpException, HttpStatus, } from '@nestjs/common'; import { HttpAdapterHost } from '@nestjs/core'; -import { ResponseType } from './response'; +import { ResponseType } from './response.js'; @Catch() export default class ExceptionHandler implements ExceptionFilter { constructor(private readonly httpAdapterHost: HttpAdapterHost) {} + // eslint-disable-next-line @typescript-eslint/no-explicit-any catch(exception: any, host: ArgumentsHost): void { // In certain situations `httpAdapter` might not be available in the // constructor method, thus we should resolve it here. @@ -25,10 +26,13 @@ export default class ExceptionHandler implements ExceptionFilter { exception.message.error || exception.message || 'Something went wrong!'; if (exception instanceof HttpException) { - const errorResponse: any = exception.getResponse(); + const errorResponse: string | object = exception.getResponse(); statusCode = exception.getStatus(); - message = errorResponse.error || message; + message = + (typeof errorResponse === 'object' && + Reflect.get(errorResponse, 'error')) || + message; } const responseBody: ResponseType = { diff --git a/apps/attestation-manager/src/common/response.ts b/apps/attestation-manager/src/common/response.ts index 0bbcc92e4d925953b397eef308a732f34e36c7ef..6fe63e566ee537d340d7372754536b85dda0dd74 100644 --- a/apps/attestation-manager/src/common/response.ts +++ b/apps/attestation-manager/src/common/response.ts @@ -1,6 +1,6 @@ export interface ResponseType { statusCode: number; message: string; - data?: any; - error?: any; + data?: unknown; + error?: unknown; } diff --git a/apps/attestation-manager/config/config.ts b/apps/attestation-manager/src/config/config.ts similarity index 67% rename from apps/attestation-manager/config/config.ts rename to apps/attestation-manager/src/config/config.ts index bd708761c4f016f42c150dc47179cd0734492a41..8919c2141fe265e0c20be11209b489cc4d1a098d 100644 --- a/apps/attestation-manager/config/config.ts +++ b/apps/attestation-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), nats: { @@ -17,10 +21,11 @@ const config = () => ({ port: 5432, synchronize: false, logging: false, - entities: [`${__dirname}/../**/**.model{.ts,.js}`], + entities: [`${parentDirectory}/**/**.model{.ts,.js}`], }, ECSURL: process.env.ECSURL, - ACCEPT_MEMBERSHIP_CREDENTIALS_CONFIG: process.env.ACCEPT_MEMBERSHIP_CREDENTIALS_CONFIG, + ACCEPT_MEMBERSHIP_CREDENTIALS_CONFIG: + process.env.ACCEPT_MEMBERSHIP_CREDENTIALS_CONFIG, TSA_URL: process.env.TSA_URL, }); export default config; diff --git a/apps/attestation-manager/config/validation.ts b/apps/attestation-manager/src/config/validation.ts similarity index 93% rename from apps/attestation-manager/config/validation.ts rename to apps/attestation-manager/src/config/validation.ts index 323486bad55684b10f17bed7617e2d27d6b76c1b..728b26f9be1b2e304f3eff8ac7ffacbb76a656a6 100644 --- a/apps/attestation-manager/config/validation.ts +++ b/apps/attestation-manager/src/config/validation.ts @@ -1,4 +1,4 @@ -import * as Joi from 'joi'; +import Joi from 'joi'; const validationSchema = Joi.object({ DATABASE_URL: Joi.string().required(), diff --git a/apps/attestation-manager/src/credentialDef/controller/controller.ts b/apps/attestation-manager/src/credentialDef/controller/controller.ts index 1b6f4baa9a54d88f7d24b501e6d360ff7ba07288..efb4adc81cc8bdf24c7b2395e16de94a1e977cfd 100644 --- a/apps/attestation-manager/src/credentialDef/controller/controller.ts +++ b/apps/attestation-manager/src/credentialDef/controller/controller.ts @@ -10,21 +10,21 @@ import { Res, Version, } from '@nestjs/common'; -import { Response } from 'express'; -import logger from '@utils/logger'; -import CredentialDefService from '@src/credentialDef/services/service'; -import { ResponseType } from '@src/common/response'; -import CredentialDefDto from '@src/credentialDef/entities/credentialDef-entity'; import { ApiBody, + ApiOperation, ApiParam, ApiQuery, - ApiOperation, ApiResponse, ApiTags, } from '@nestjs/swagger'; -import { PrismaClientUnknownRequestError } from '@prisma/client/runtime'; -import CredentialDefLedgerDto from '@src/credentialDef/entities/credentialDefLedger-entity'; +import { Prisma } from '@prisma/client'; +import type { Response } from 'express'; +import { ResponseType } from '../../common/response.js'; +import logger from '../../utils/logger.js'; +import CredentialDefDto from '../entities/credentialDef-entity.js'; +import CredentialDefLedgerDto from '../entities/credentialDefLedger-entity.js'; +import CredentialDefService from '../services/service.js'; @ApiTags('Credential Definitions') @Controller('credentialDef') @@ -38,7 +38,8 @@ export default class CredentialDefController { @Get('') @ApiOperation({ summary: 'Fetch a list of credential definitions', - description: 'This call provides the capability to search created credential definitions by using pagination and filter parameter (schemaID) to select credential definitions. This call returns a list of credential definitions and overall count of records. Using a credential definition from that list you can issue credential so some connection' + description: + 'This call provides the capability to search created credential definitions by using pagination and filter parameter (schemaID) to select credential definitions. This call returns a list of credential definitions and overall count of records. Using a credential definition from that list you can issue credential so some connection', }) @ApiResponse({ status: HttpStatus.OK, @@ -157,9 +158,11 @@ export default class CredentialDefController { }; } return response.send(res); - } catch (error: any) { - logger.error(error && error.message); - throw new InternalServerErrorException(`Error: ${error.message}`); + } catch (error: unknown) { + logger.error(error instanceof Error && error.message); + throw new InternalServerErrorException( + `Error: ${error instanceof Error ? error.message : error}`, + ); } } @@ -168,7 +171,8 @@ export default class CredentialDefController { @Get('/:id') @ApiOperation({ summary: 'Fetch credential definition by id', - description: 'This call provides the capability to get credential definition data by providing id of credential definition. The credential definition data is the same which is returned from /v1/connections endpoint and contains generic information about credential definition like schemaID, name, credDefId, isAutoIssue, isRevokable, expiryHours, createdBy, createdDate, updatedBy, updatedDate' + description: + 'This call provides the capability to get credential definition data by providing id of credential definition. The credential definition data is the same which is returned from /v1/connections endpoint and contains generic information about credential definition like schemaID, name, credDefId, isAutoIssue, isRevokable, expiryHours, createdBy, createdDate, updatedBy, updatedDate', }) @ApiResponse({ status: HttpStatus.OK, @@ -266,7 +270,7 @@ export default class CredentialDefController { } return response.send(res); } catch (error) { - if (error instanceof PrismaClientUnknownRequestError) { + if (error instanceof Prisma.PrismaClientUnknownRequestError) { throw new InternalServerErrorException(error.message); } else { throw new InternalServerErrorException(error); @@ -279,7 +283,8 @@ export default class CredentialDefController { @Post('') @ApiOperation({ summary: 'Create a new credential definition', - description: 'This call provides the capability to create new credential definition by providing schema id, name, createdBy, auto-issue and other information required by this method. This call returns an object contains information abut this credential definition (type CredentialDefDto). You can use this credential definition to issue credentials to some connection' + description: + 'This call provides the capability to create new credential definition by providing schema id, name, createdBy, auto-issue and other information required by this method. This call returns an object contains information abut this credential definition (type CredentialDefDto). You can use this credential definition to issue credentials to some connection', }) @ApiResponse({ status: HttpStatus.CREATED, @@ -462,7 +467,7 @@ export default class CredentialDefController { } return response.send(res); } catch (error) { - if (error instanceof PrismaClientUnknownRequestError) { + if (error instanceof Prisma.PrismaClientUnknownRequestError) { throw new InternalServerErrorException(error.message); } else { throw new InternalServerErrorException(error); diff --git a/apps/attestation-manager/src/credentialDef/module.ts b/apps/attestation-manager/src/credentialDef/module.ts index 0ef0b3afe4ebbcc5a80348bd7e46c27085b9c74c..2d5834f1684a461d7159ad3e4585fb0beadd5ff0 100644 --- a/apps/attestation-manager/src/credentialDef/module.ts +++ b/apps/attestation-manager/src/credentialDef/module.ts @@ -1,14 +1,14 @@ -import SchemasService from '@schemas/services/service'; -import { Module } from '@nestjs/common'; -import PrismaService from '@DB/prisma.service'; import { HttpModule } from '@nestjs/axios'; -import CredentialDefService from '@src/credentialDef/services/service'; -import CredentialDefController from '@src/credentialDef/controller/controller'; -import NatsClientService from '@src/client/nats.client'; +import { Module } from '@nestjs/common'; import { ClientsModule, Transport } from '@nestjs/microservices'; -import { NATSServices } from '@common/constants'; -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 SchemasService from '../schemas/services/service.js'; +import CredentialDefController from './controller/controller.js'; +import CredentialDefService from './services/service.js'; @Module({ imports: [ diff --git a/apps/attestation-manager/src/credentialDef/repository/credentialDef.respository.ts b/apps/attestation-manager/src/credentialDef/repository/credentialDef.respository.ts index b09641801190f0514a9b87f3bbbdbae251bc7a39..c1af9e33e0492033f14910f4fae9b22c79e7f094 100644 --- a/apps/attestation-manager/src/credentialDef/repository/credentialDef.respository.ts +++ b/apps/attestation-manager/src/credentialDef/repository/credentialDef.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 CredentialDefRepository { diff --git a/apps/attestation-manager/src/credentialDef/services/service.ts b/apps/attestation-manager/src/credentialDef/services/service.ts index 392e57106af8863420a6d99e29f330139557afb4..5dd5622876204e4f82cc8e2541fad03efdef978f 100644 --- a/apps/attestation-manager/src/credentialDef/services/service.ts +++ b/apps/attestation-manager/src/credentialDef/services/service.ts @@ -1,16 +1,16 @@ -import logger from '@utils/logger'; import { Injectable } from '@nestjs/common'; -import CredentialDefDto from '@src/credentialDef/entities/credentialDef-entity'; -import CredentialDefRepository from '@src/credentialDef/repository/credentialDef.respository'; -import PrismaService from '@DB/prisma.service'; -import CredentialDefLedgerDto from '@src/credentialDef/entities/credentialDefLedger-entity'; -import { Prisma } from '@prisma/client'; -import pagination from '@utils/pagination'; -import RestClientService from '@src/client/rest.client'; import { ConfigService } from '@nestjs/config'; -import SchemasService from '@schemas/services/service'; -import SchemaDto from '@src/schemas/entities/schema-entity'; -import CredentialTypeRepository from '@src/issue-credential/repository/credentialType.repository'; +import { Prisma } from '@prisma/client'; +import RestClientService from '../../client/rest.client.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import SchemaDto from '../../schemas/entities/schema-entity.js'; +import SchemasService from '../../schemas/services/service.js'; +import logger from '../../utils/logger.js'; +import pagination from '../../utils/pagination.js'; +import CredentialDefDto from '../entities/credentialDef-entity.js'; +import CredentialDefLedgerDto from '../entities/credentialDefLedger-entity.js'; +import CredentialDefRepository from '../repository/credentialDef.respository.js'; +import CredentialTypeRepository from '../../issue-credential/repository/credentialType.repository.js'; @Injectable() export default class CredentialDefService { diff --git a/apps/attestation-manager/src/credentialDef/tests/__mocks__/service.ts b/apps/attestation-manager/src/credentialDef/tests/__mocks__/service.ts index 09ff612eb0d07c063551741a9f9e699a31ed2eeb..ad4a0298055ccf4650aa8f1beec112a543b78076 100644 --- a/apps/attestation-manager/src/credentialDef/tests/__mocks__/service.ts +++ b/apps/attestation-manager/src/credentialDef/tests/__mocks__/service.ts @@ -1,4 +1,4 @@ -import credDefStub from '@src/credentialDef/tests/stubs/credDef.stub'; +import credDefStub from '../stubs/credDef.stub.js'; const CredentialDefServiceMock = jest.fn().mockReturnValue({ createCredDef: jest.fn().mockReturnValue(credDefStub()), diff --git a/apps/attestation-manager/src/credentialDef/tests/controller.spec.ts b/apps/attestation-manager/src/credentialDef/tests/controller.spec.ts index 719d388197d6a4ece52225e80366cd9c5850c18c..a24aed4cfa618955a9f5dfd9e4541832776057c0 100644 --- a/apps/attestation-manager/src/credentialDef/tests/controller.spec.ts +++ b/apps/attestation-manager/src/credentialDef/tests/controller.spec.ts @@ -1,13 +1,12 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import httpMocks from 'node-mocks-http'; - -import CredentialDefController from '@credentialDef/controller/controller'; -import CredentialDefService from '@credentialDef/services/service'; -import CredentialDefServiceMock from '@credentialDef/tests/__mocks__/service'; -import credDefStub from '@credentialDef/tests/stubs/credDef.stub'; import { HttpStatus } from '@nestjs/common'; -import { Response } from 'express'; import { ConfigService } from '@nestjs/config'; +import { Test, TestingModule } from '@nestjs/testing'; +import { Response } from 'express'; +import httpMocks from 'node-mocks-http'; +import CredentialDefController from '../controller/controller.js'; +import CredentialDefService from '../services/service.js'; +import CredentialDefServiceMock from './__mocks__/service.js'; +import credDefStub from './stubs/credDef.stub.js'; describe('CredentialDefController', () => { let credentialDefController: CredentialDefController; diff --git a/apps/attestation-manager/src/credentialDef/tests/module.spec.ts b/apps/attestation-manager/src/credentialDef/tests/module.spec.ts index 07f6c53ebac481fe8c58a58f2a95a616d3dd2c95..9b152dfcc73517e17d404dbdcc354221e358b19a 100644 --- a/apps/attestation-manager/src/credentialDef/tests/module.spec.ts +++ b/apps/attestation-manager/src/credentialDef/tests/module.spec.ts @@ -1,14 +1,14 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import PrismaService from '@DB/prisma.service'; import { HttpModule } from '@nestjs/axios'; -import NatsClientService from '@src/client/nats.client'; -import PrismaServiceMock from '@src/prisma/tests/__mocks__/prisma.service'; -import NatsClientServiceMock from '@src/client/tests/__mocks__/nats.client'; -import RestClientService from '@src/client/rest.client'; -import RestClientServiceMock from '@src/client/tests/__mocks__/rest.client'; -import CredentialDefModule from '../module'; -import CredentialDefService from '../services/service'; -import CredentialDefServiceMock from './__mocks__/service'; +import { Test, TestingModule } from '@nestjs/testing'; +import NatsClientService from '../../client/nats.client.js'; +import RestClientService from '../../client/rest.client.js'; +import NatsClientServiceMock from '../../client/tests/__mocks__/nats.client.js'; +import RestClientServiceMock from '../../client/tests/__mocks__/rest.client.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import PrismaServiceMock from '../../prisma/tests/__mocks__/prisma.service.js'; +import CredentialDefModule from '../module.js'; +import CredentialDefService from '../services/service.js'; +import CredentialDefServiceMock from './__mocks__/service.js'; describe('CredentialDefModule', () => { let credentialDefModule: CredentialDefModule; diff --git a/apps/attestation-manager/src/credentialDef/tests/service.spec.ts b/apps/attestation-manager/src/credentialDef/tests/service.spec.ts index acf24978ce053f354992efe3386a4246a9300360..ab1ea927176ab4887358f3e9603f57140b793353 100644 --- a/apps/attestation-manager/src/credentialDef/tests/service.spec.ts +++ b/apps/attestation-manager/src/credentialDef/tests/service.spec.ts @@ -1,17 +1,17 @@ -import CredentialDefService from '@credentialDef/services/service'; import { HttpModule } from '@nestjs/axios'; +import { ConfigService } from '@nestjs/config'; import { Test, TestingModule } from '@nestjs/testing'; import { CredentialDef } from '@prisma/client'; -import NatsClientService from '@src/client/nats.client'; -import NatsClientServiceMock from '@src/client/tests/__mocks__/nats.client'; -import PrismaService from '@src/prisma/prisma.service'; -import PrismaServiceMock from '@src/prisma/tests/__mocks__/prisma.service'; -import RestClientService from '@src/client/rest.client'; -import RestClientServiceMock from '@src/client/tests/__mocks__/rest.client'; -import { ConfigService } from '@nestjs/config'; -import SchemasService from '@src/schemas/services/service'; -import SchemasServiceMock from '@src/schemas/tests/__mocks__/service'; -import credDefStub from './stubs/credDef.stub'; +import NatsClientService from '../../client/nats.client.js'; +import RestClientService from '../../client/rest.client.js'; +import NatsClientServiceMock from '../../client/tests/__mocks__/nats.client.js'; +import RestClientServiceMock from '../../client/tests/__mocks__/rest.client.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import PrismaServiceMock from '../../prisma/tests/__mocks__/prisma.service.js'; +import SchemasService from '../../schemas/services/service.js'; +import SchemasServiceMock from '../../schemas/tests/__mocks__/service.js'; +import CredentialDefService from '../services/service.js'; +import credDefStub from './stubs/credDef.stub.js'; describe('CredentialDefService', () => { let credDefService: CredentialDefService; @@ -136,9 +136,8 @@ describe('CredentialDefService', () => { let credDefResponse: Array<number | CredentialDef[]>; beforeEach(async () => { - credDefResponse = await credDefService.checkCredDefByNameAndSchemaID( - credDefStub(), - ); + credDefResponse = + await credDefService.checkCredDefByNameAndSchemaID(credDefStub()); }); it('should call findMany() from PrismaService.credentialDef', async () => { diff --git a/apps/attestation-manager/src/credentialDef/tests/stubs/credDef.stub.ts b/apps/attestation-manager/src/credentialDef/tests/stubs/credDef.stub.ts index 8b50a312ed0a09703c99795d72d81b4e08a3c2dc..47de0794a29b085ed2e24cf066b761ef4d190562 100644 --- a/apps/attestation-manager/src/credentialDef/tests/stubs/credDef.stub.ts +++ b/apps/attestation-manager/src/credentialDef/tests/stubs/credDef.stub.ts @@ -1,4 +1,4 @@ -import CredentialDefDto from '@credentialDef/entities/credentialDef-entity'; +import CredentialDefDto from '../../entities/credentialDef-entity.js'; const credDefStub = (): CredentialDefDto => ({ @@ -15,6 +15,6 @@ const credDefStub = (): CredentialDefDto => updatedBy: 'cred-def-stub-updated-by-id', updatedDate: new Date(2022), tag: 'cred-def-stub-tag', - } as CredentialDefDto); + }) as CredentialDefDto; export default credDefStub; diff --git a/apps/attestation-manager/src/health/health.controller.ts b/apps/attestation-manager/src/health/health.controller.ts index 3c581d13d170074a8cc0ef886a0d5e2ebd5b5399..e8deabce205f35d74602a7513559b7b1dbeb099a 100644 --- a/apps/attestation-manager/src/health/health.controller.ts +++ b/apps/attestation-manager/src/health/health.controller.ts @@ -1,7 +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 { ResponseType } from '../common/response.js'; @Controller('health') export default class HealthController { @@ -11,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/attestation-manager/src/health/tests/health.controller.spec.ts b/apps/attestation-manager/src/health/tests/health.controller.spec.ts index 1bc3d0eae744799a793a12855b6a2b15bac82455..1d7863aac93a3919813f6a21ba8e922b2ad0bf46 100644 --- a/apps/attestation-manager/src/health/tests/health.controller.spec.ts +++ b/apps/attestation-manager/src/health/tests/health.controller.spec.ts @@ -1,8 +1,7 @@ import { HttpStatus } from '@nestjs/common'; import { Test, TestingModule } from '@nestjs/testing'; -import { ResponseType } from '@src/common/response'; - -import HealthController from '../health.controller'; +import { ResponseType } from '../../common/response.js'; +import HealthController from '../health.controller.js'; describe('HealthController', () => { let healthController: HealthController; diff --git a/apps/attestation-manager/src/issue-credential/controller/controller.ts b/apps/attestation-manager/src/issue-credential/controller/controller.ts index 1285cae3d435bb6c41bcc1289856b5567d9eb271..1939b269c438b370c723e63cf3499038dd583c8f 100644 --- a/apps/attestation-manager/src/issue-credential/controller/controller.ts +++ b/apps/attestation-manager/src/issue-credential/controller/controller.ts @@ -1,46 +1,52 @@ -import OfferCredentialDto from '@issueCredential/entities/entity'; -import logger from '@utils/logger'; -import CredentialDto from '@issueCredential/entities/credential.entity'; import { + BadRequestException, Body, Controller, + Delete, Get, + HttpException, HttpStatus, InternalServerErrorException, + NotFoundException, Param, + Patch, Post, + PreconditionFailedException, Query, Res, Version, - Patch, - NotFoundException, - BadRequestException, - HttpException, - PreconditionFailedException, - Delete, } from '@nestjs/common'; -import AttestationService from '@src/issue-credential/services/service'; -import { ResponseType } from '@src/common/response'; -import {ApiBody, ApiOperation, ApiQuery, ApiResponse, ApiTags} from '@nestjs/swagger'; -import CredentialStateDto from '@issueCredential/entities/credential.state.entity'; -import GetIssueCredentialsDto from '@src/issue-credential/entities/get-issue-credentials.dto'; -import GetCredentialParams from '@issueCredential/entities/get.credential.params'; -import GetCredentialQuery from '@issueCredential/entities/get.credential.query'; -import { PrismaClientUnknownRequestError } from '@prisma/client/runtime'; -import { Response } from 'express'; +import { ConfigService } from '@nestjs/config'; +import { EventPattern, MessagePattern } from '@nestjs/microservices'; +import { + ApiBody, + ApiOperation, + ApiQuery, + ApiResponse, + ApiTags, +} from '@nestjs/swagger'; +import { Prisma } from '@prisma/client'; +import type { Response } from 'express'; import { Abstraction, NATSServices, PrismaErrorCode, -} from '@src/common/constants'; -import { EventPattern, MessagePattern } from '@nestjs/microservices'; -import { ConfigService } from '@nestjs/config'; -import UpdateSchemaIdByTypeDto from '@issueCredential/entities/updatecredDefIdByType.entity'; -import CredentialDefService from '@credentialDef/services/service'; -import CredentialTypeDto from '@issueCredential/entities/credentialType.entity'; -import ProposeCredentialDto from '@issueCredential/entities/propose-credential.dto'; -import UserInfoService from '@userInfo/services/service'; -import SchemasService from '@src/schemas/services/service'; +} from '../../common/constants.js'; +import { ResponseType } from '../../common/response.js'; +import CredentialDefService from '../../credentialDef/services/service.js'; +import SchemasService from '../../schemas/services/service.js'; +import UserInfoService from '../../userInfo/services/service.js'; +import logger from '../../utils/logger.js'; +import CredentialDto from '../entities/credential.entity.js'; +import CredentialStateDto from '../entities/credential.state.entity.js'; +import CredentialTypeDto from '../entities/credentialType.entity.js'; +import OfferCredentialDto from '../entities/entity.js'; +import GetIssueCredentialsDto from '../entities/get-issue-credentials.dto.js'; +import GetCredentialParams from '../entities/get.credential.params.js'; +import GetCredentialQuery from '../entities/get.credential.query.js'; +import ProposeCredentialDto from '../entities/propose-credential.dto.js'; +import UpdateSchemaIdByTypeDto from '../entities/updatecredDefIdByType.entity.js'; +import AttestationService from '../services/service.js'; @ApiTags('Credentials') @Controller() @@ -60,7 +66,8 @@ export default class AttestationController { @Post('create-offer-credential') @ApiOperation({ summary: 'Send credential offer to a connection', - description: 'This call provides the capability to offer credentials to a connection. You need to provide information about credential definition, connection and attributes which will be send to connection. Initial state of this is offer-sent (workflow is here https://github.com/hyperledger/aries-rfcs/tree/main/features/0036-issue-credential). This call returns information about this credential offer. From user perspective this call means that as organization (e.g. Faber university) I want to start issuing crendentials to student (Alice, holder)' + description: + 'This call provides the capability to offer credentials to a connection. You need to provide information about credential definition, connection and attributes which will be send to connection. Initial state of this is offer-sent (workflow is here https://github.com/hyperledger/aries-rfcs/tree/main/features/0036-issue-credential). This call returns information about this credential offer. From user perspective this call means that as organization (e.g. Faber university) I want to start issuing crendentials to student (Alice, holder)', }) @ApiResponse({ status: HttpStatus.CREATED, @@ -276,7 +283,8 @@ export default class AttestationController { @Post('create-propose-credential') @ApiOperation({ summary: 'Send credential proposal to a connection', - description: 'This call provides the capability to send propose crendential request to a connection. You need to provide information about credential definition, connection and attributes which you want to use for creating credentials. Initial state of this is proposal-sent (workflow is here https://github.com/hyperledger/aries-rfcs/tree/main/features/0036-issue-credential). This call returns information about this credential proposal. From user perspective this call means that as user (e.g. student) I want to ask organization (e.g. Faber university) to initiate issuing credentials for me using provided data' + description: + 'This call provides the capability to send propose crendential request to a connection. You need to provide information about credential definition, connection and attributes which you want to use for creating credentials. Initial state of this is proposal-sent (workflow is here https://github.com/hyperledger/aries-rfcs/tree/main/features/0036-issue-credential). This call returns information about this credential proposal. From user perspective this call means that as user (e.g. student) I want to ask organization (e.g. Faber university) to initiate issuing credentials for me using provided data', }) @ApiResponse({ status: HttpStatus.CREATED, @@ -390,9 +398,8 @@ export default class AttestationController { ) { try { let res: ResponseType; - const proposeCredential = await this.attestationService.proposeCredential( - connectionCreate, - ); + const proposeCredential = + await this.attestationService.proposeCredential(connectionCreate); if (proposeCredential) { res = { @@ -418,7 +425,8 @@ export default class AttestationController { @Post('accept-request/:credentialId') @ApiOperation({ summary: 'Accept credential request by credential id', - description: 'Accept a credential request as issuer (by sending a credential message) to the connection associated with the credential record.' + description: + 'Accept a credential request as issuer (by sending a credential message) to the connection associated with the credential record.', }) async acceptOfferCredential(@Param() params: { credentialId: string }) { try { @@ -439,7 +447,8 @@ export default class AttestationController { @Post('accept-proposal/:credentialId') @ApiOperation({ summary: 'Accept credential proposal by credential id', - description: 'Accept a credential proposal as issuer (by sending a credential offer message) to the connection associated with the credential record.' + description: + 'Accept a credential proposal as issuer (by sending a credential offer message) to the connection associated with the credential record.', }) async acceptProposeCredential(@Param() params: { credentialId: string }) { try { @@ -455,10 +464,10 @@ export default class AttestationController { ), }; return res; - } catch (error: any) { + } catch (error: unknown) { throw new HttpException( - error?.message || 'Internal server error', - error?.status || 500, + Reflect.get(error || {}, 'message') || 'Internal server error', + Reflect.get(error || {}, 'status') || 500, ); } } @@ -467,7 +476,8 @@ export default class AttestationController { @Post('accept-offer/:credentialId') @ApiOperation({ summary: 'Accept credential offer by credential id', - description: 'Accept a credential offer as holder (by sending a credential request message) to the connection associated with the credential record.' + description: + 'Accept a credential offer as holder (by sending a credential request message) to the connection associated with the credential record.', }) async acceptCredentialOffer(@Param() params: { credentialId: string }) { try { @@ -483,10 +493,10 @@ export default class AttestationController { ), }; return res; - } catch (error: any) { + } catch (error: unknown) { throw new HttpException( - error?.message || 'Internal server error', - error?.status || 500, + Reflect.get(error || {}, 'message') || 'Internal server error', + Reflect.get(error || {}, 'status') || 500, ); } } @@ -495,7 +505,8 @@ export default class AttestationController { @Post('accept-credential/:credentialId') @ApiOperation({ summary: 'Accept credentials by credential id', - description: 'Accept a credential as holder (by sending a credential acknowledgement message) to the connection associated with the credential record.' + description: + 'Accept a credential as holder (by sending a credential acknowledgement message) to the connection associated with the credential record.', }) async acceptCredential(@Param() params: { credentialId: string }) { try { @@ -511,10 +522,10 @@ export default class AttestationController { ), }; return res; - } catch (error: any) { + } catch (error: unknown) { throw new HttpException( - error?.message || 'Internal server error', - error?.status || 500, + Reflect.get(error || {}, 'message') || 'Internal server error', + Reflect.get(error || {}, 'status') || 500, ); } } @@ -592,7 +603,8 @@ export default class AttestationController { @Get('credential-info/:id') @ApiOperation({ summary: 'Fetch credential information by credential id', - description: 'This call provides the capability to get credential information by credential id. This call returns a credential record (CredentialRecord type with fields connectionId, threadId, credentialId, state, autoAcceptCredential, errorMessage, proposalMessage, offerMessage, requestMessage, credentialMessage, credentialAttributes, linkedAttachments and others). This request get credential data directly from agent, so you can use this endpoint to get some additional info which is not presented in /v1/credential/{id}' + description: + 'This call provides the capability to get credential information by credential id. This call returns a credential record (CredentialRecord type with fields connectionId, threadId, credentialId, state, autoAcceptCredential, errorMessage, proposalMessage, offerMessage, requestMessage, credentialMessage, credentialAttributes, linkedAttachments and others). This request get credential data directly from agent, so you can use this endpoint to get some additional info which is not presented in /v1/credential/{id}', }) @ApiResponse({ status: HttpStatus.OK, @@ -669,7 +681,7 @@ export default class AttestationController { // } return response.send(res); } catch (error) { - if (error instanceof PrismaClientUnknownRequestError) { + if (error instanceof Prisma.PrismaClientUnknownRequestError) { throw new InternalServerErrorException(error.message); } else { throw new InternalServerErrorException(error); @@ -681,7 +693,8 @@ export default class AttestationController { @Delete('delete-credential/:id') @ApiOperation({ summary: 'Delete credential by id', - description: 'This call provides the capability to delete credential (request/offer/proposal) by provided credential id' + description: + 'This call provides the capability to delete credential (request/offer/proposal) by provided credential id', }) @ApiResponse({ status: HttpStatus.OK, @@ -741,7 +754,7 @@ export default class AttestationController { return response.send(res); } catch (error) { - if (error instanceof PrismaClientUnknownRequestError) { + if (error instanceof Prisma.PrismaClientUnknownRequestError) { throw new InternalServerErrorException(error.message); } else { throw new InternalServerErrorException(error); @@ -753,7 +766,8 @@ export default class AttestationController { @Get('credential') @ApiOperation({ summary: 'Fetch a list of credentials', - description: 'This call provides the capability to search credentials by using pagination and filter parameters to select credentials. This call returns a list of credentials and overall count of records. Filter supports following parameters: page, pageSize, isReceived, threadId, state, credDefId, createdDateStart, createdDateEnd, updatedDateStart, updatedDateEnd, expirationDateStart, expirationDateEnd, connectionId, principalDid' + description: + 'This call provides the capability to search credentials by using pagination and filter parameters to select credentials. This call returns a list of credentials and overall count of records. Filter supports following parameters: page, pageSize, isReceived, threadId, state, credDefId, createdDateStart, createdDateEnd, updatedDateStart, updatedDateEnd, expirationDateStart, expirationDateEnd, connectionId, principalDid', }) @ApiQuery({ name: 'page', required: false }) @ApiQuery({ name: 'pageSize', required: false }) @@ -794,8 +808,8 @@ export default class AttestationController { createdDate: '1970-01-01T00:00:09.761Z', updatedDate: '1970-01-01T00:00:09.761Z', expirationDate: '2070-01-01T00:00:09.756Z', - } - ] + }, + ], }, }, }, @@ -909,7 +923,7 @@ export default class AttestationController { } return response.send(res); } catch (error) { - if (error instanceof PrismaClientUnknownRequestError) { + if (error instanceof Prisma.PrismaClientUnknownRequestError) { throw new InternalServerErrorException(error.message); } else { throw new InternalServerErrorException(error); @@ -921,7 +935,8 @@ export default class AttestationController { @Get('credential/:id') @ApiOperation({ summary: 'Fetch credential by id', - description: 'This call provides the capability to get credential data by providing credential id. The credential definition data is the same which is returned from /v1/credential endpoint and contains generic information about credential like credentialId, credDefId, threadId, state, principalDid, connectionId, createdDate, updatedDate, expirationDate' + description: + 'This call provides the capability to get credential data by providing credential id. The credential definition data is the same which is returned from /v1/credential endpoint and contains generic information about credential like credentialId, credDefId, threadId, state, principalDid, connectionId, createdDate, updatedDate, expirationDate', }) @ApiResponse({ status: HttpStatus.OK, @@ -1013,7 +1028,7 @@ export default class AttestationController { } return response.send(res); } catch (error) { - if (error instanceof PrismaClientUnknownRequestError) { + if (error instanceof Prisma.PrismaClientUnknownRequestError) { throw new InternalServerErrorException(error.message); } else { throw new InternalServerErrorException(error); @@ -1043,7 +1058,6 @@ export default class AttestationController { and lint does not allow more then 100 characters on same line. */ - // eslint-disable-next-line max-len const [, [credentialDef]] = await this.credentialDefService.findCredentialDefBySchemaIdDesc({ schemaID: credentialsType?.schemaId, @@ -1075,7 +1089,7 @@ export default class AttestationController { userInfo.subjectDID = data.theirDid; for (let i = 0; i < schemaAttributes.length; i += 1) { - const attribute: any = schemaAttributes[i]; + const attribute: Record<string, string> = schemaAttributes[i]; if (attribute.name in userInfo) { attributes.push({ @@ -1140,7 +1154,8 @@ export default class AttestationController { @ApiBody({ type: UpdateSchemaIdByTypeDto }) @ApiOperation({ summary: 'Update schemaId in CredentialsType', - description: 'This call provides the capability to update mapping between schema and type.' + description: + 'This call provides the capability to update mapping between schema and type.', }) @ApiResponse({ status: HttpStatus.OK, @@ -1213,8 +1228,11 @@ export default class AttestationController { ), }; return res; - } catch (error: any) { - if (error.code === PrismaErrorCode.RECORD_NOT_FOUND) { + } catch (error: unknown) { + if ( + error instanceof Prisma.PrismaClientKnownRequestError && + error.code === PrismaErrorCode.RECORD_NOT_FOUND + ) { throw new NotFoundException(error.message); } throw new InternalServerErrorException(error); @@ -1224,7 +1242,8 @@ export default class AttestationController { @Post('credentialType') @ApiOperation({ summary: 'Create new CredentialType', - description: 'This call provides the capability to create mapping between schema and type.' + description: + 'This call provides the capability to create mapping between schema and type.', }) @ApiBody({ type: CredentialTypeDto }) @ApiResponse({ @@ -1320,7 +1339,8 @@ export default class AttestationController { @Get('credentialType') @ApiOperation({ summary: 'Fetch CredentialType contains schemaId and attributes by type', - description: 'This call provides the capability to get schema id and its attributes by provided type' + description: + 'This call provides the capability to get schema id and its attributes by provided type', }) @ApiQuery({ name: 'type', required: true }) @ApiResponse({ @@ -1400,9 +1420,10 @@ export default class AttestationController { version: string; attrNames: string[]; seqNo: number; - } = await this.attestationService.getSchemaAndAttributesBySchemaIDFromLedger( - credentialsType.schemaId, - ); + } = + await this.attestationService.getSchemaAndAttributesBySchemaIDFromLedger( + credentialsType.schemaId, + ); res = { schema: { schemaID: credentialsType?.schemaId, diff --git a/apps/attestation-manager/src/issue-credential/entities/credentialType.entity.ts b/apps/attestation-manager/src/issue-credential/entities/credentialType.entity.ts index 59d79ffac3645c19e2ee1839fa8732e9ba36c658..f5734f175596adffabb34b2921ba6472943dd7b0 100644 --- a/apps/attestation-manager/src/issue-credential/entities/credentialType.entity.ts +++ b/apps/attestation-manager/src/issue-credential/entities/credentialType.entity.ts @@ -1,5 +1,5 @@ import { ApiProperty } from '@nestjs/swagger'; -import { IsString, IsNotEmpty } from 'class-validator'; +import { IsNotEmpty, IsString } from 'class-validator'; export default class CredentialTypeDto { @IsString() diff --git a/apps/attestation-manager/src/issue-credential/entities/entity.ts b/apps/attestation-manager/src/issue-credential/entities/entity.ts index 72cdea6be0b82ee339a75eb2a013392064b6e97d..81666116c07a126e8561d8059b1c995dbef5248a 100644 --- a/apps/attestation-manager/src/issue-credential/entities/entity.ts +++ b/apps/attestation-manager/src/issue-credential/entities/entity.ts @@ -1,4 +1,3 @@ -// eslint-disable-next-line max-classes-per-file import { ApiProperty } from '@nestjs/swagger'; import { IsString, IsNotEmpty } from 'class-validator'; diff --git a/apps/attestation-manager/src/issue-credential/module.ts b/apps/attestation-manager/src/issue-credential/module.ts index cec3e78ffb61a1c927cc2c9ef0e13f23ec96b278..31d05fec6c75514c5e13d17ea717fd7b75dd477f 100644 --- a/apps/attestation-manager/src/issue-credential/module.ts +++ b/apps/attestation-manager/src/issue-credential/module.ts @@ -1,17 +1,17 @@ -import SchemasService from '@src/schemas/services/service'; -import CredentialDefService from '@src/credentialDef/services/service'; -import { Module } from '@nestjs/common'; -import PrismaService from '@DB/prisma.service'; import { HttpModule } from '@nestjs/axios'; -import AttestationService from '@src/issue-credential/services/service'; -import AttestationController from '@src/issue-credential/controller/controller'; +import { Module } from '@nestjs/common'; import { ClientsModule, Transport } from '@nestjs/microservices'; -import { NATSServices } from '@common/constants'; -import NatsClientService from '@src/client/nats.client'; -import RestClientService from '@src/client/rest.client'; -import config from '@config/config'; -import TSAClientService from '@src/client/tsa.client'; -import UserInfoService from '@userInfo/services/service'; +import NatsClientService from '../client/nats.client.js'; +import RestClientService from '../client/rest.client.js'; +import TSAClientService from '../client/tsa.client.js'; +import { NATSServices } from '../common/constants.js'; +import config from '../config/config.js'; +import CredentialDefService from '../credentialDef/services/service.js'; +import PrismaService from '../prisma/prisma.service.js'; +import SchemasService from '../schemas/services/service.js'; +import UserInfoService from '../userInfo/services/service.js'; +import AttestationController from './controller/controller.js'; +import AttestationService from './services/service.js'; @Module({ imports: [ diff --git a/apps/attestation-manager/src/issue-credential/repository/credential.repository.ts b/apps/attestation-manager/src/issue-credential/repository/credential.repository.ts index 3ba8644ce11ea1b76b9f6fccff2b8e9482b125c0..7d8183ae595d16391a7b814da050b5c13ca58ca8 100644 --- a/apps/attestation-manager/src/issue-credential/repository/credential.repository.ts +++ b/apps/attestation-manager/src/issue-credential/repository/credential.repository.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 CredentialRepository { diff --git a/apps/attestation-manager/src/issue-credential/repository/credentialType.repository.ts b/apps/attestation-manager/src/issue-credential/repository/credentialType.repository.ts index 3f6161db90ead63936f93dc69aca0bea6dd3c7cd..8f9438ad075d2b677038ae3f835b952e9f6b4456 100644 --- a/apps/attestation-manager/src/issue-credential/repository/credentialType.repository.ts +++ b/apps/attestation-manager/src/issue-credential/repository/credentialType.repository.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 CredentialsTypeRepository { diff --git a/apps/attestation-manager/src/issue-credential/services/service.ts b/apps/attestation-manager/src/issue-credential/services/service.ts index 1994ac4252c3bf72b3158c34a5da5901f9cd7508..9a73e1353971592f5bff6de52aa79f8e42acd4ca 100644 --- a/apps/attestation-manager/src/issue-credential/services/service.ts +++ b/apps/attestation-manager/src/issue-credential/services/service.ts @@ -3,24 +3,24 @@ import { Injectable, PreconditionFailedException, } from '@nestjs/common'; -import PrismaService from '@DB/prisma.service'; -import logger from '@utils/logger'; -import CredentialRepository from '@issueCredential/repository/credential.repository'; -import CredentialDto from '@issueCredential/entities/credential.entity'; -import { Credential, Prisma } from '@prisma/client'; -import NatsClientService from '@src/client/nats.client'; -import OfferCredentialDto from '@issueCredential/entities/entity'; -import GetIssueCredentialsDto from '@src/issue-credential/entities/get-issue-credentials.dto'; -import CredentialsTypeRepository from '@issueCredential/repository/credentialType.repository'; -import pagination from '@utils/pagination'; -import Utils from '@utils/common'; -import CredentialDefService from '@src/credentialDef/services/service'; -import RestClientService from '@src/client/rest.client'; import { ConfigService } from '@nestjs/config'; -import CredentialTypeDto from '@issueCredential/entities/credentialType.entity'; -import ProposeCredentialDto from '@issueCredential/entities/propose-credential.dto'; -import TSAClientService from '@src/client/tsa.client'; -import { TSAService } from '@src/common/constants'; +import { Credential, Prisma } from '@prisma/client'; +import NatsClientService from '../../client/nats.client.js'; +import RestClientService from '../../client/rest.client.js'; +import TSAClientService from '../../client/tsa.client.js'; +import { TSAService } from '../../common/constants.js'; +import CredentialDefService from '../../credentialDef/services/service.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import Utils from '../../utils/common.js'; +import logger from '../../utils/logger.js'; +import pagination from '../../utils/pagination.js'; +import CredentialDto from '../entities/credential.entity.js'; +import CredentialTypeDto from '../entities/credentialType.entity.js'; +import OfferCredentialDto from '../entities/entity.js'; +import GetIssueCredentialsDto from '../entities/get-issue-credentials.dto.js'; +import ProposeCredentialDto from '../entities/propose-credential.dto.js'; +import CredentialRepository from '../repository/credential.repository.js'; +import CredentialsTypeRepository from '../repository/credentialType.repository.js'; @Injectable() export default class AttestationService { @@ -274,7 +274,6 @@ export default class AttestationService { query.where.createdDate = { gte: createdDateStart }; } if (createdDateEnd) { - // eslint-disable-next-line prefer-object-spread query.where.createdDate = Object.assign({}, query.where.createdDate, { lte: createdDateEnd, }); @@ -283,7 +282,6 @@ export default class AttestationService { query.where.updatedDate = { gte: updatedDateStart }; } if (updatedDateEnd) { - // eslint-disable-next-line prefer-object-spread query.where.updatedDate = Object.assign({}, query.where.updatedDate, { lte: updatedDateEnd, }); @@ -292,7 +290,6 @@ export default class AttestationService { query.where.expirationDate = { gte: expirationDateStart }; } if (expirationDateEnd) { - // eslint-disable-next-line prefer-object-spread query.where.expirationDate = Object.assign( {}, query.where.expirationDate, diff --git a/apps/attestation-manager/src/issue-credential/tests/__mocks__/service.ts b/apps/attestation-manager/src/issue-credential/tests/__mocks__/service.ts index 74ec7e0fc166d4134975ae9485aa5d655bbd94c4..c843d44cd2ba405799f1993e14c6130d8bf06307 100644 --- a/apps/attestation-manager/src/issue-credential/tests/__mocks__/service.ts +++ b/apps/attestation-manager/src/issue-credential/tests/__mocks__/service.ts @@ -1,6 +1,6 @@ -import credentialDto from '@issueCredential/tests/stubs/credential-dto'; -import schemaAgentDto from '@src/schemas/tests/stubs/schema-from-agent-dto'; -import credentialTypeDto from '../stubs/credential-type-dto'; +import schemaAgentDto from '../../../schemas/tests/stubs/schema-from-agent-dto.js'; +import credentialDto from '../stubs/credential-dto.js'; +import credentialTypeDto from '../stubs/credential-type-dto.js'; const AttestationServiceMock = jest.fn().mockReturnValue({ createOfferCredential: jest.fn().mockReturnValue({}), diff --git a/apps/attestation-manager/src/issue-credential/tests/controller.spec.ts b/apps/attestation-manager/src/issue-credential/tests/controller.spec.ts index a8ad32bc9edc34a41ef77fe4d1725906512ff28c..460fe18188e5ba1b8b414128ef2c218ab857503a 100644 --- a/apps/attestation-manager/src/issue-credential/tests/controller.spec.ts +++ b/apps/attestation-manager/src/issue-credential/tests/controller.spec.ts @@ -1,28 +1,28 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import httpMocks from 'node-mocks-http'; -import AttestationController from '@issueCredential/controller/controller'; -import AttestationService from '@issueCredential/services/service'; -import AttestationServiceMock from '@issueCredential/tests/__mocks__/service'; -import { ClientsModule, Transport } from '@nestjs/microservices'; -import { NATSServices } from '@src/common/constants'; +import { HttpStatus } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; +import { ClientsModule, Transport } from '@nestjs/microservices'; +import { Test, TestingModule } from '@nestjs/testing'; import { Response } from 'express'; -import { HttpStatus } from '@nestjs/common'; -import { ResponseType } from '@src/common/response'; -import CredentialDefService from '@src/credentialDef/services/service'; -import CredentialDefServiceMock from '@src/credentialDef/tests/__mocks__/service'; -import UserInfoService from '@userInfo/services/service'; -import UserInfoServiceMock from '@userInfo/tests/__mocks__/service'; -import SchemasService from '@src/schemas/services/service'; -import SchemasServiceMock from '@src/schemas/tests/__mocks__/service'; -import credentialDto from './stubs/credential-dto'; -import GetCredentialParams from '../entities/get.credential.params'; -import GetCredentialQuery from '../entities/get.credential.query'; -import credentialTypeDto from './stubs/credential-type-dto'; -import CredentialTypeDto from '../entities/credentialType.entity'; -import CredentialStateDto from '../entities/credential.state.entity'; -import credentialStateDto from './stubs/credential-state-dto'; -import CredentialDto from '../entities/credential.entity'; +import httpMocks from 'node-mocks-http'; +import { NATSServices } from '../../common/constants.js'; +import { ResponseType } from '../../common/response.js'; +import CredentialDefService from '../../credentialDef/services/service.js'; +import CredentialDefServiceMock from '../../credentialDef/tests/__mocks__/service.js'; +import SchemasService from '../../schemas/services/service.js'; +import SchemasServiceMock from '../../schemas/tests/__mocks__/service.js'; +import UserInfoService from '../../userInfo/services/service.js'; +import UserInfoServiceMock from '../../userInfo/tests/__mocks__/service.js'; +import AttestationController from '../controller/controller.js'; +import CredentialDto from '../entities/credential.entity.js'; +import CredentialStateDto from '../entities/credential.state.entity.js'; +import CredentialTypeDto from '../entities/credentialType.entity.js'; +import GetCredentialParams from '../entities/get.credential.params.js'; +import GetCredentialQuery from '../entities/get.credential.query.js'; +import AttestationService from '../services/service.js'; +import AttestationServiceMock from './__mocks__/service.js'; +import credentialDto from './stubs/credential-dto.js'; +import credentialStateDto from './stubs/credential-state-dto.js'; +import credentialTypeDto from './stubs/credential-type-dto.js'; describe('AttestationController', () => { let attestationController: AttestationController; @@ -114,9 +114,8 @@ describe('AttestationController', () => { credentialId: credentialDto().credentialId, }; - attestationResponse = await attestationController.acceptOfferCredential( - query, - ); + attestationResponse = + await attestationController.acceptOfferCredential(query); }); it('should call acceptRequestCredential() from service', async () => { @@ -153,9 +152,8 @@ describe('AttestationController', () => { threadId: body.credentialRecord.threadId, }; - attestationResponse = await attestationController.webHookCredentials( - body, - ); + attestationResponse = + await attestationController.webHookCredentials(body); }); it('should call createCredential() from service', async () => { @@ -257,9 +255,8 @@ describe('AttestationController', () => { beforeEach(async () => { body = credentialTypeDto(); - attestationResponse = await attestationController.createCredentialType( - body, - ); + attestationResponse = + await attestationController.createCredentialType(body); }); it('should call createCredentialsType() from service', async () => { diff --git a/apps/attestation-manager/src/issue-credential/tests/module.spec.ts b/apps/attestation-manager/src/issue-credential/tests/module.spec.ts index 100101b7771b83b3766aed499aada2572a3c63d7..5ba9aaf3166d019b31596e03644d9676946a5d96 100644 --- a/apps/attestation-manager/src/issue-credential/tests/module.spec.ts +++ b/apps/attestation-manager/src/issue-credential/tests/module.spec.ts @@ -1,16 +1,16 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import PrismaService from '@DB/prisma.service'; import { HttpModule } from '@nestjs/axios'; -import NatsClientService from '@src/client/nats.client'; -import PrismaServiceMock from '@src/prisma/tests/__mocks__/prisma.service'; -import NatsClientServiceMock from '@src/client/tests/__mocks__/nats.client'; -import RestClientService from '@src/client/rest.client'; -import RestClientServiceMock from '@src/client/tests/__mocks__/rest.client'; -import CredentialDefService from '@src/credentialDef/services/service'; -import CredentialDefServiceMock from '@src/credentialDef/tests/__mocks__/service'; -import AttestationModule from '../module'; -import AttestationService from '../services/service'; -import AttestationServiceMock from './__mocks__/service'; +import { Test, TestingModule } from '@nestjs/testing'; +import NatsClientService from '../../client/nats.client.js'; +import RestClientService from '../../client/rest.client.js'; +import NatsClientServiceMock from '../../client/tests/__mocks__/nats.client.js'; +import RestClientServiceMock from '../../client/tests/__mocks__/rest.client.js'; +import CredentialDefService from '../../credentialDef/services/service.js'; +import CredentialDefServiceMock from '../../credentialDef/tests/__mocks__/service.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import PrismaServiceMock from '../../prisma/tests/__mocks__/prisma.service.js'; +import AttestationModule from '../module.js'; +import AttestationService from '../services/service.js'; +import AttestationServiceMock from './__mocks__/service.js'; describe('AttestationModule', () => { let attestationModule: AttestationModule; diff --git a/apps/attestation-manager/src/issue-credential/tests/service.spec.ts b/apps/attestation-manager/src/issue-credential/tests/service.spec.ts index efc83c9871bdaec15a732dc3a0a1da5aa318852e..51f36e3f50e43fb345e5212420661110458be2cf 100644 --- a/apps/attestation-manager/src/issue-credential/tests/service.spec.ts +++ b/apps/attestation-manager/src/issue-credential/tests/service.spec.ts @@ -1,22 +1,22 @@ import { HttpModule } from '@nestjs/axios'; +import { ConfigService } from '@nestjs/config'; import { Test, TestingModule } from '@nestjs/testing'; -import NatsClientService from '@src/client/nats.client'; -import NatsClientServiceMock from '@src/client/tests/__mocks__/nats.client'; -import PrismaService from '@src/prisma/prisma.service'; -import PrismaServiceMock from '@src/prisma/tests/__mocks__/prisma.service'; -import AttestationService from '@issueCredential/services/service'; -import { natsConnectionResponse } from '@src/client/tests/stubs/nats-response'; -import { ResponseType } from '@src/common/response'; import { Credential, CredentialsType } from '@prisma/client'; -import RestClientService from '@src/client/rest.client'; -import RestClientServiceMock from '@src/client/tests/__mocks__/rest.client'; -import TSAClientServiceMock from '@src/client/tests/__mocks__/tsa.client'; -import { ConfigService } from '@nestjs/config'; -import CredentialDefService from '@src/credentialDef/services/service'; -import CredentialDefServiceMock from '@src/credentialDef/tests/__mocks__/service'; -import TSAClientService from '@src/client/tsa.client'; -import credentialDto from './stubs/credential-dto'; -import credentialsTypeDto from './stubs/credential-type-dto'; +import NatsClientService from '../../client/nats.client.js'; +import RestClientService from '../../client/rest.client.js'; +import NatsClientServiceMock from '../../client/tests/__mocks__/nats.client.js'; +import RestClientServiceMock from '../../client/tests/__mocks__/rest.client.js'; +import TSAClientServiceMock from '../../client/tests/__mocks__/tsa.client.js'; +import { natsConnectionResponse } from '../../client/tests/stubs/nats-response.js'; +import TSAClientService from '../../client/tsa.client.js'; +import { ResponseType } from '../../common/response.js'; +import CredentialDefService from '../../credentialDef/services/service.js'; +import CredentialDefServiceMock from '../../credentialDef/tests/__mocks__/service.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import PrismaServiceMock from '../../prisma/tests/__mocks__/prisma.service.js'; +import AttestationService from '../services/service.js'; +import credentialDto from './stubs/credential-dto.js'; +import credentialsTypeDto from './stubs/credential-type-dto.js'; describe('AttestationService', () => { let attestationService: AttestationService; @@ -153,9 +153,8 @@ describe('AttestationService', () => { let attestationResponse: Credential; beforeEach(async () => { - attestationResponse = await attestationService.updateCredential( - credentialDto(), - ); + attestationResponse = + await attestationService.updateCredential(credentialDto()); }); it('should call update() from PrismaService.credential', async () => { @@ -269,7 +268,7 @@ describe('AttestationService', () => { }); it('should call findUnique() from PrismaService.credentialsType', async () => { - expect(PrismaServiceMock().credentialsType.findUnique).toHaveBeenCalled(); + expect(PrismaServiceMock().credentialsType.findFirst).toHaveBeenCalled(); }); it('should get principal member credentials type', async () => { @@ -281,9 +280,8 @@ describe('AttestationService', () => { let attestationResponse: CredentialsType; beforeEach(async () => { - attestationResponse = await attestationService.createCredentialsType( - credentialsTypeDto(), - ); + attestationResponse = + await attestationService.createCredentialsType(credentialsTypeDto()); }); it('should call create() from PrismaService.credentialsType', async () => { diff --git a/apps/attestation-manager/src/issue-credential/tests/stubs/credential-dto.ts b/apps/attestation-manager/src/issue-credential/tests/stubs/credential-dto.ts index 3e995edd9f82b91bc03277ba7cd6e69ceca2ec6e..6776e5d8abee325349b84eb2f5c6128125bf9a22 100644 --- a/apps/attestation-manager/src/issue-credential/tests/stubs/credential-dto.ts +++ b/apps/attestation-manager/src/issue-credential/tests/stubs/credential-dto.ts @@ -1,6 +1,6 @@ -import CredentialDto from '@issueCredential/entities/credential.entity'; -import credDefStub from '@src/credentialDef/tests/stubs/credDef.stub'; -import AttestationService from '@src/issue-credential/services/service'; +import credDefStub from '../../../credentialDef/tests/stubs/credDef.stub.js'; +import CredentialDto from '../../entities/credential.entity.js'; +import AttestationService from '../../services/service.js'; const credentialDto = (): CredentialDto => ({ credentialId: 'credential-id', diff --git a/apps/attestation-manager/src/issue-credential/tests/stubs/credential-state-dto.ts b/apps/attestation-manager/src/issue-credential/tests/stubs/credential-state-dto.ts index 22f6e4114b3682e1120531960e988aafbfd36cb8..945c1e9d9bf43b51b403a1731154dc5674c43700 100644 --- a/apps/attestation-manager/src/issue-credential/tests/stubs/credential-state-dto.ts +++ b/apps/attestation-manager/src/issue-credential/tests/stubs/credential-state-dto.ts @@ -1,6 +1,6 @@ -import CredentialStateDto from '@issueCredential/entities/credential.state.entity'; -import credDefStub from '@src/credentialDef/tests/stubs/credDef.stub'; -import credentialDto from './credential-dto'; +import credDefStub from '../../../credentialDef/tests/stubs/credDef.stub.js'; +import CredentialStateDto from '../../entities/credential.state.entity.js'; +import credentialDto from './credential-dto.js'; const credentialStateDto = (): CredentialStateDto => ({ id: 'credential-state-id', diff --git a/apps/attestation-manager/src/issue-credential/tests/stubs/credential-type-dto.ts b/apps/attestation-manager/src/issue-credential/tests/stubs/credential-type-dto.ts index cae4ae6ff4e21f70c2f58ee6fee7d88aa95dd203..67a9a04bfd20c75cee138d7a3966092c955773da 100644 --- a/apps/attestation-manager/src/issue-credential/tests/stubs/credential-type-dto.ts +++ b/apps/attestation-manager/src/issue-credential/tests/stubs/credential-type-dto.ts @@ -1,5 +1,5 @@ -import CredentialTypeDto from '@issueCredential/entities/credentialType.entity'; -import schemaDto from '@src/schemas/tests/stubs/schema-dto'; +import schemaDto from '../../../schemas/tests/stubs/schema-dto.js'; +import CredentialTypeDto from '../../entities/credentialType.entity.js'; const credentialsTypeDto = (): CredentialTypeDto => ({ id: 'credential-type-id', diff --git a/apps/attestation-manager/src/issue-credential/tests/stubs/offer-credential-dto.ts b/apps/attestation-manager/src/issue-credential/tests/stubs/offer-credential-dto.ts index cb8b17a6efc1805c7fec541a578bb51d3e47f41c..0847f65b966f3c47f7dfd6db6ad78aa0ecccff8b 100644 --- a/apps/attestation-manager/src/issue-credential/tests/stubs/offer-credential-dto.ts +++ b/apps/attestation-manager/src/issue-credential/tests/stubs/offer-credential-dto.ts @@ -1,6 +1,6 @@ -import OfferCredentialDto from '@src/issue-credential/entities/entity'; -import schemaDto from '@src/schemas/tests/stubs/schema-dto'; -import credentialDto from './credential-dto'; +import schemaDto from '../../../schemas/tests/stubs/schema-dto.js'; +import OfferCredentialDto from '../../entities/entity.js'; +import credentialDto from './credential-dto.js'; const offerCredentialDto = (): OfferCredentialDto => ({ connectionId: credentialDto().connectionId, diff --git a/apps/attestation-manager/src/main.ts b/apps/attestation-manager/src/main.ts index 0a746e1812cc42cb29875c50ffed775237b8481d..acc553d1285bd8f46cb775dcaa32f444e927d177 100644 --- a/apps/attestation-manager/src/main.ts +++ b/apps/attestation-manager/src/main.ts @@ -1,11 +1,11 @@ -import { HttpAdapterHost, NestFactory } from '@nestjs/core'; -import { ConfigService } from '@nestjs/config'; import { VersioningType } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { HttpAdapterHost, NestFactory } from '@nestjs/core'; +import { MicroserviceOptions, Transport } from '@nestjs/microservices'; 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/attestation-manager/src/middleware/auth.middleware.ts b/apps/attestation-manager/src/middleware/auth.middleware.ts index aa8ea00ac24920459ab0ea9fea50c4f79faed750..9532e939b299d99b2e3cecc97d9b92719569451a 100644 --- a/apps/attestation-manager/src/middleware/auth.middleware.ts +++ b/apps/attestation-manager/src/middleware/auth.middleware.ts @@ -1,21 +1,10 @@ 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 { NextFunction, Request, Response } from 'express'; import * as jwt from 'jsonwebtoken'; -import jwksClient = require('jwks-rsa'); - -// interface IOAuthConfig { -// client: { -// id: string, -// secret: string -// }; -// auth: { -// tokenHost: string -// } -// } +import jwksClient from 'jwks-rsa'; +import logger from '../utils/logger.js'; @Injectable() export class AuthMiddleware implements NestMiddleware { @@ -42,48 +31,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/attestation-manager/src/prisma/prisma.module.ts b/apps/attestation-manager/src/prisma/prisma.module.ts index a120dadd2a18fbdeb7cfc5d8706c9447bdc66c8d..fe4708239676182cfcf87da1e4aa26ab9d85efb5 100644 --- a/apps/attestation-manager/src/prisma/prisma.module.ts +++ b/apps/attestation-manager/src/prisma/prisma.module.ts @@ -1,6 +1,6 @@ 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], diff --git a/apps/attestation-manager/src/prisma/prisma.service.ts b/apps/attestation-manager/src/prisma/prisma.service.ts index 7d885d9af71da2594144d53712047afd50c53f05..187a829da0b28d1d10a30d8f1256a972cf83c24b 100644 --- a/apps/attestation-manager/src/prisma/prisma.service.ts +++ b/apps/attestation-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'; diff --git a/apps/attestation-manager/src/prisma/tests/__mocks__/prisma.service.ts b/apps/attestation-manager/src/prisma/tests/__mocks__/prisma.service.ts index bf72e7dc30653f7514bc21fde192b08bd0508d66..08077a3ecca083c2254550f60e3bdfcb9cabfa3b 100644 --- a/apps/attestation-manager/src/prisma/tests/__mocks__/prisma.service.ts +++ b/apps/attestation-manager/src/prisma/tests/__mocks__/prisma.service.ts @@ -1,10 +1,10 @@ -import schemaDto from '@schemas/tests/stubs/schema-dto'; -import credDefStub from '@src/credentialDef/tests/stubs/credDef.stub'; -import credentialDto from '@src/issue-credential/tests/stubs/credential-dto'; -import credentialTypeDto from '@src/issue-credential/tests/stubs/credential-type-dto'; +import credDefStub from '../../../credentialDef/tests/stubs/credDef.stub.js'; +import credentialDto from '../../../issue-credential/tests/stubs/credential-dto.js'; +import credentialTypeDto from '../../../issue-credential/tests/stubs/credential-type-dto.js'; +import schemaDto from '../../../schemas/tests/stubs/schema-dto.js'; const PrismaServiceMock = jest.fn().mockReturnValue({ - $transaction: jest.fn().mockImplementation((args: any) => [...args]), + $transaction: jest.fn().mockImplementation((args: unknown[]) => [...args]), schema: { create: jest.fn().mockReturnValue([schemaDto()]), update: jest.fn().mockReturnValue([schemaDto()]), @@ -29,6 +29,7 @@ const PrismaServiceMock = jest.fn().mockReturnValue({ update: jest.fn().mockReturnValue(credentialTypeDto()), create: jest.fn().mockReturnValue(credentialTypeDto()), findUnique: jest.fn().mockReturnValue(credentialTypeDto()), + findFirst: jest.fn().mockReturnValue(credentialTypeDto()), }, }); diff --git a/apps/attestation-manager/src/prisma/tests/prisma.service.spec.ts b/apps/attestation-manager/src/prisma/tests/prisma.service.spec.ts index 8ed21eba0bdc7289a7d08b5ffb466b58ff0154d2..eb3f05f1dad90f6c88e7eeea9dca58fcef63f965 100644 --- a/apps/attestation-manager/src/prisma/tests/prisma.service.spec.ts +++ b/apps/attestation-manager/src/prisma/tests/prisma.service.spec.ts @@ -1,6 +1,6 @@ import { ConfigService } from '@nestjs/config'; import { Test, TestingModule } from '@nestjs/testing'; -import PrismaService from '../prisma.service'; +import PrismaService from '../prisma.service.js'; describe('PrismaService', () => { let prismaService: PrismaService; diff --git a/apps/attestation-manager/src/schemas/controller/controller.ts b/apps/attestation-manager/src/schemas/controller/controller.ts index b91699143c77493ff5a60061104ff8d70847830c..066dd8d7b27f985e3872a181865dd3a6dff8991b 100644 --- a/apps/attestation-manager/src/schemas/controller/controller.ts +++ b/apps/attestation-manager/src/schemas/controller/controller.ts @@ -10,20 +10,21 @@ import { Res, Version, } from '@nestjs/common'; -import { Response } from 'express'; -import logger from '@utils/logger'; -import SchemasService from '@src/schemas/services/service'; -import { ResponseType } from '@src/common/response'; -import SchemaDto from '@src/schemas/entities/schema-entity'; import { - ApiBody, ApiOperation, + ApiBody, + ApiOperation, ApiParam, ApiQuery, ApiResponse, ApiTags, } from '@nestjs/swagger'; -import { PrismaClientUnknownRequestError } from '@prisma/client/runtime'; -import { VersionRegex } from '@src/common/constants'; +import { Prisma } from '@prisma/client'; +import type { Response } from 'express'; +import { VersionRegex } from '../../common/constants.js'; +import { ResponseType } from '../../common/response.js'; +import logger from '../../utils/logger.js'; +import SchemaDto from '../entities/schema-entity.js'; +import SchemasService from '../services/service.js'; @ApiTags('Schemas') @Controller('schemas') @@ -36,7 +37,8 @@ export default class SchemasController { @Get('') @ApiOperation({ summary: 'Fetch a list of schemas', - description: 'This call provides capabilities to search schemas (which have been created by this OCM) by using pagination. This call returns a list of schemas and overall count of records. Every record contains schemaId, name, attributes' + description: + 'This call provides capabilities to search schemas (which have been created by this OCM) by using pagination. This call returns a list of schemas and overall count of records. Every record contains schemaId, name, attributes', }) @ApiResponse({ status: HttpStatus.OK, @@ -163,9 +165,9 @@ export default class SchemasController { }; } return response.send(res); - } catch (error: any) { + } catch (error: unknown) { throw new InternalServerErrorException( - `Internal Server Error: ${error?.message}`, + `Internal Server Error: ${Reflect.get(error || {}, 'message')}`, ); } } @@ -175,7 +177,9 @@ export default class SchemasController { @Get('/:id') @ApiOperation({ summary: 'Fetch schema by id', - description: 'This call provides the capability to get schema data by providing schemaId. The schema data is the same which is returned from /v1/schemas endpoint and contains generic information about schema like schemaID, name, createdBy, createdDate, updatedBy, updatedDate, attribute' }) + description: + 'This call provides the capability to get schema data by providing schemaId. The schema data is the same which is returned from /v1/schemas endpoint and contains generic information about schema like schemaID, name, createdBy, createdDate, updatedBy, updatedDate, attribute', + }) @ApiResponse({ status: HttpStatus.OK, description: 'Schema fetched successfully', @@ -276,7 +280,7 @@ export default class SchemasController { } return response.send(res); } catch (error) { - if (error instanceof PrismaClientUnknownRequestError) { + if (error instanceof Prisma.PrismaClientUnknownRequestError) { throw new InternalServerErrorException(error.message); } else { throw new InternalServerErrorException(error); @@ -289,7 +293,8 @@ export default class SchemasController { @Post('') @ApiOperation({ summary: 'Create a new schema', - description: 'This call provides the capability to create new schema on ledger by name, author, version, schema attributes and type. Later this schema can be used to issue new credential definition. This call returns an information about created schema.' + description: + 'This call provides the capability to create new schema on ledger by name, author, version, schema attributes and type. Later this schema can be used to issue new credential definition. This call returns an information about created schema.', }) @ApiResponse({ status: HttpStatus.CREATED, @@ -436,9 +441,8 @@ export default class SchemasController { const schemaResponse = await this.schemasService.checkSchemasByNameAndVersion(createSchema); if (schemaResponse[0] === 0) { - const resp = await this.schemasService.createSchemaOnLedger( - createSchema, - ); + const resp = + await this.schemasService.createSchemaOnLedger(createSchema); if (resp?.id) { const schemaRes: SchemaDto = createSchema; schemaRes.schemaID = resp.id; @@ -465,7 +469,7 @@ export default class SchemasController { } return response.send(res); } catch (error) { - if (error instanceof PrismaClientUnknownRequestError) { + if (error instanceof Prisma.PrismaClientUnknownRequestError) { throw new InternalServerErrorException(error.message); } else { throw new InternalServerErrorException(error); @@ -477,7 +481,8 @@ export default class SchemasController { @Get('/get-dids-for-schema/:id') @ApiOperation({ summary: 'Fetch list of dids for schema id', - description: 'This call provides the capability to get principal dids. The format of the response is shown in the example. To issue credentials, you need to have a credential definition. This is a basic principle of this process. This credential definition is created by using the schema. Using this endpoint gives you all dids of participants to whom OCM issued credentials using specified schema.' + description: + 'This call provides the capability to get principal dids. The format of the response is shown in the example. To issue credentials, you need to have a credential definition. This is a basic principle of this process. This credential definition is created by using the schema. Using this endpoint gives you all dids of participants to whom OCM issued credentials using specified schema.', }) @ApiResponse({ status: HttpStatus.OK, @@ -571,7 +576,7 @@ export default class SchemasController { } return response.send(res); } catch (error) { - if (error instanceof PrismaClientUnknownRequestError) { + if (error instanceof Prisma.PrismaClientUnknownRequestError) { throw new InternalServerErrorException(error.message); } else { throw new InternalServerErrorException(error); diff --git a/apps/attestation-manager/src/schemas/module.ts b/apps/attestation-manager/src/schemas/module.ts index ac79d4dba674fed183833111597693c1e7567258..c29245934a9cfd3b705a5e0125e1e2722b7ee101 100644 --- a/apps/attestation-manager/src/schemas/module.ts +++ b/apps/attestation-manager/src/schemas/module.ts @@ -1,13 +1,13 @@ -import { Module } from '@nestjs/common'; -import PrismaService from '@DB/prisma.service'; import { HttpModule } from '@nestjs/axios'; -import SchemasService from '@src/schemas/services/service'; -import SchemasController from '@src/schemas/controller/controller'; +import { Module } from '@nestjs/common'; import { ClientsModule, Transport } from '@nestjs/microservices'; -import { NATSServices } from '@common/constants'; -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 SchemasController from './controller/controller.js'; +import SchemasService from './services/service.js'; @Module({ imports: [ diff --git a/apps/attestation-manager/src/schemas/repository/schema.respository.ts b/apps/attestation-manager/src/schemas/repository/schema.respository.ts index 0596ee1a9a057c9a9f05bcaf49c479cf84ffc9f9..cb11b4895d16c0d5a1b045f2b5e2a1a74c7dff99 100644 --- a/apps/attestation-manager/src/schemas/repository/schema.respository.ts +++ b/apps/attestation-manager/src/schemas/repository/schema.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 SchemaRepository { diff --git a/apps/attestation-manager/src/schemas/services/service.ts b/apps/attestation-manager/src/schemas/services/service.ts index dec187a7e5945f066ee7d57ca7cb58e104645b6b..c2b18d49b777f9034bf02dc18a3d9101a2a01e5d 100644 --- a/apps/attestation-manager/src/schemas/services/service.ts +++ b/apps/attestation-manager/src/schemas/services/service.ts @@ -1,13 +1,13 @@ import { BadRequestException, Injectable } from '@nestjs/common'; -import SchemaDto from '@src/schemas/entities/schema-entity'; -import SchemaRepository from '@src/schemas/repository/schema.respository'; -import CredentialTypeRepository from '@src/issue-credential/repository/credentialType.repository'; -import PrismaService from '@DB/prisma.service'; -import NatsClientService from '@src/client/nats.client'; -import { Prisma } from '@prisma/client'; -import pagination from '@utils/pagination'; -import RestClientService from '@src/client/rest.client'; import { ConfigService } from '@nestjs/config'; +import { Prisma } from '@prisma/client'; +import NatsClientService from '../../client/nats.client.js'; +import RestClientService from '../../client/rest.client.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import pagination from '../../utils/pagination.js'; +import SchemaDto from '../entities/schema-entity.js'; +import SchemaRepository from '../repository/schema.respository.js'; +import CredentialTypeRepository from '../../issue-credential/repository/credentialType.repository.js'; @Injectable() export default class SchemasService { diff --git a/apps/attestation-manager/src/schemas/tests/__mocks__/service.ts b/apps/attestation-manager/src/schemas/tests/__mocks__/service.ts index 96d1010384296bf398d2a4fbabf10a6e17bdb779..2f05a0896616bbb9d6c3e70489233e44ee4079d0 100644 --- a/apps/attestation-manager/src/schemas/tests/__mocks__/service.ts +++ b/apps/attestation-manager/src/schemas/tests/__mocks__/service.ts @@ -1,4 +1,4 @@ -import schemaDto from '../stubs/schema-dto'; +import schemaDto from '../stubs/schema-dto.js'; const SchemasServiceMock = jest.fn().mockReturnValue({ findSchemas: jest.fn().mockReturnValue([1, [schemaDto()]]), diff --git a/apps/attestation-manager/src/schemas/tests/controller.spec.ts b/apps/attestation-manager/src/schemas/tests/controller.spec.ts index 73c73f94aad1776096166646a1ecdf8e0f365a19..35a629e0aec2506c65227b560355556f1f537b97 100644 --- a/apps/attestation-manager/src/schemas/tests/controller.spec.ts +++ b/apps/attestation-manager/src/schemas/tests/controller.spec.ts @@ -1,12 +1,11 @@ +import { HttpStatus } from '@nestjs/common'; import { Test, TestingModule } from '@nestjs/testing'; import httpMocks from 'node-mocks-http'; -import SchemasController from '@schemas/controller/controller'; -import SchemasService from '@schemas/services/service'; -import SchemasServiceMock from '@schemas/tests/__mocks__/service'; -import { Response } from 'express'; -import { HttpStatus } from '@nestjs/common'; -import SchemaDto from '../entities/schema-entity'; -import schemaDto from './stubs/schema-dto'; +import SchemasController from '../controller/controller.js'; +import SchemaDto from '../entities/schema-entity.js'; +import SchemasService from '../services/service.js'; +import SchemasServiceMock from './__mocks__/service.js'; +import schemaDto from './stubs/schema-dto.js'; describe('SchemasController', () => { let schemasController: SchemasController; diff --git a/apps/attestation-manager/src/schemas/tests/module.spec.ts b/apps/attestation-manager/src/schemas/tests/module.spec.ts index 3cae9de60b9aa3c3e218ae27b6c6304a2da8e0e1..844ce26218550f9753995843ecd2ac4372af8698 100644 --- a/apps/attestation-manager/src/schemas/tests/module.spec.ts +++ b/apps/attestation-manager/src/schemas/tests/module.spec.ts @@ -1,15 +1,15 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import SchemasService from '@schemas/services/service'; -import PrismaService from '@DB/prisma.service'; import { HttpModule } from '@nestjs/axios'; -import NatsClientService from '@src/client/nats.client'; -import PrismaServiceMock from '@src/prisma/tests/__mocks__/prisma.service'; -import NatsClientServiceMock from '@src/client/tests/__mocks__/nats.client'; -import RestClientService from '@src/client/rest.client'; -import RestClientServiceMock from '@src/client/tests/__mocks__/rest.client'; import { ConfigService } from '@nestjs/config'; -import SchemasModule from '../module'; -import SchemasServiceMock from './__mocks__/service'; +import { Test, TestingModule } from '@nestjs/testing'; +import NatsClientService from '../../client/nats.client.js'; +import RestClientService from '../../client/rest.client.js'; +import NatsClientServiceMock from '../../client/tests/__mocks__/nats.client.js'; +import RestClientServiceMock from '../../client/tests/__mocks__/rest.client.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import PrismaServiceMock from '../../prisma/tests/__mocks__/prisma.service.js'; +import SchemasModule from '../module.js'; +import SchemasService from '../services/service.js'; +import SchemasServiceMock from './__mocks__/service.js'; describe('SchemasModule', () => { let schemasModule: SchemasModule; diff --git a/apps/attestation-manager/src/schemas/tests/service.spec.ts b/apps/attestation-manager/src/schemas/tests/service.spec.ts index 4e237513a7e51a7f39a05382166773fc141bcf00..1e986215d23a41fd729f2bcf312e432e5d83a309 100644 --- a/apps/attestation-manager/src/schemas/tests/service.spec.ts +++ b/apps/attestation-manager/src/schemas/tests/service.spec.ts @@ -1,16 +1,16 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import SchemasService from '@schemas/services/service'; -import PrismaService from '@DB/prisma.service'; import { HttpModule } from '@nestjs/axios'; -import NatsClientService from '@src/client/nats.client'; -import { Schema } from '@prisma/client'; -import { ResponseType } from '@src/common/response'; -import PrismaServiceMock from '@src/prisma/tests/__mocks__/prisma.service'; -import NatsClientServiceMock from '@src/client/tests/__mocks__/nats.client'; -import RestClientService from '@src/client/rest.client'; -import RestClientServiceMock from '@src/client/tests/__mocks__/rest.client'; import { ConfigService } from '@nestjs/config'; -import schemaDto from './stubs/schema-dto'; +import { Test, TestingModule } from '@nestjs/testing'; +import { Schema } from 'joi'; +import NatsClientService from '../../client/nats.client.js'; +import RestClientService from '../../client/rest.client.js'; +import NatsClientServiceMock from '../../client/tests/__mocks__/nats.client.js'; +import RestClientServiceMock from '../../client/tests/__mocks__/rest.client.js'; +import { ResponseType } from '../../common/response.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import PrismaServiceMock from '../../prisma/tests/__mocks__/prisma.service.js'; +import SchemasService from '../services/service.js'; +import schemaDto from './stubs/schema-dto.js'; describe('SchemasService', () => { let schemasService: SchemasService; @@ -123,9 +123,8 @@ describe('SchemasService', () => { let schemasResponse: Array<number | Schema[]>; beforeEach(async () => { - schemasResponse = await schemasService.checkSchemasByNameAndVersion( - schemaDto(), - ); + schemasResponse = + await schemasService.checkSchemasByNameAndVersion(schemaDto()); }); it('should call findMany() from PrismaService.schema', async () => { diff --git a/apps/attestation-manager/src/schemas/tests/stubs/schema-dto.ts b/apps/attestation-manager/src/schemas/tests/stubs/schema-dto.ts index f503d3fda27ea25412b45e373c9719a5ee6e1c50..a869a4f0e42d070e7bf66d108fbd4ed917786d42 100644 --- a/apps/attestation-manager/src/schemas/tests/stubs/schema-dto.ts +++ b/apps/attestation-manager/src/schemas/tests/stubs/schema-dto.ts @@ -1,4 +1,4 @@ -import SchemaDto from '@src/schemas/entities/schema-entity'; +import SchemaDto from '../../entities/schema-entity.js'; const schemaDto = (): SchemaDto => ({ id: 'schema-db-id', diff --git a/apps/attestation-manager/src/schemas/tests/stubs/schema-from-agent-dto.ts b/apps/attestation-manager/src/schemas/tests/stubs/schema-from-agent-dto.ts index 2b4743f3418d345e194ed3933a6715516e788acd..450727eee5397967e27e33879c9bbe9a6f755a34 100644 --- a/apps/attestation-manager/src/schemas/tests/stubs/schema-from-agent-dto.ts +++ b/apps/attestation-manager/src/schemas/tests/stubs/schema-from-agent-dto.ts @@ -1,4 +1,4 @@ -import schemaDto from './schema-dto'; +import schemaDto from './schema-dto.js'; const schemaAgentDto = { ver: '1.0', diff --git a/apps/attestation-manager/src/tests/app.module.spec.ts b/apps/attestation-manager/src/tests/app.module.spec.ts index a453e582ff5143228778cd0fa60d3b565fa92298..3bde7fe255423a931d66d3cd50dba76a35f18ba1 100644 --- a/apps/attestation-manager/src/tests/app.module.spec.ts +++ b/apps/attestation-manager/src/tests/app.module.spec.ts @@ -1,13 +1,6 @@ import { Test, TestingModule } from '@nestjs/testing'; import { INestApplication } from '@nestjs/common'; -import AppModule from '@src/app.module'; - -// import config from '@config/config'; - -// jest.mock('@config/config', jest.fn().mockReturnValue({ -// PORT: 3005, -// ACCEPT_MEMBERSHIP_CREDENTIALS_CONFIG: process.env.ACCEPT_MEMBERSHIP_CREDENTIALS_CONFIG, -// })); +import AppModule from '../app.module.js'; describe('App Module', () => { let app: INestApplication; diff --git a/apps/attestation-manager/src/userInfo/controller/controller.ts b/apps/attestation-manager/src/userInfo/controller/controller.ts index 9ba1fe4a13cc8b5611e6d41f240f7ae429414d39..25c381e7d9d5fe73e15a0ee94fb8a59a1ac7af56 100644 --- a/apps/attestation-manager/src/userInfo/controller/controller.ts +++ b/apps/attestation-manager/src/userInfo/controller/controller.ts @@ -9,15 +9,14 @@ import { Res, Version, } from '@nestjs/common'; -import { Response } from 'express'; -import {ApiBody, ApiOperation, ApiTags} from '@nestjs/swagger'; - -import logger from '@utils/logger'; -import UserInfoService from '@userInfo/services/service'; -import UserInfoDto from '@userInfo/entities/userInfo.entity'; -import { PrismaClientUnknownRequestError } from '@prisma/client/runtime'; +import { ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger'; +import { Prisma } from '@prisma/client'; import { isUUID } from 'class-validator'; -import { AutoAcceptCredential } from '@src/common/constants'; +import type { Response } from 'express'; +import { AutoAcceptCredential } from '../../common/constants.js'; +import logger from '../../utils/logger.js'; +import UserInfoDto from '../entities/userInfo.entity.js'; +import UserInfoService from '../services/service.js'; @ApiTags('userInfo (to be deprecated)') @Controller('userInfo') @@ -29,7 +28,8 @@ export default class UserInfoController { @Post('') @ApiOperation({ summary: 'Add user information to a connection', - description: 'This call provides the capability to add any additional information to connection. The format of added data is just a simple json' + description: + 'This call provides the capability to add any additional information to connection. The format of added data is just a simple json', }) async createUserInfo( @Body() userInfoDto: UserInfoDto, @@ -61,13 +61,13 @@ export default class UserInfoController { data: await this.userInfoService.createUserInfo(userInfoDto), }; return response.send(res); - } catch (error: any) { - if (error instanceof PrismaClientUnknownRequestError) { + } catch (error: unknown) { + if (error instanceof Prisma.PrismaClientUnknownRequestError) { throw new InternalServerErrorException(error.message); } else { throw new HttpException( - error?.message || 'Internal server error', - error?.status || 500, + Reflect.get(error || {}, 'message') || 'Internal server error', + Reflect.get(error || {}, 'status') || 500, ); } } diff --git a/apps/attestation-manager/src/userInfo/entities/update-unserInfo.dto.ts b/apps/attestation-manager/src/userInfo/entities/update-unserInfo.dto.ts index 4bd5f1a9aad047c91192a6fbe5507470a20ed143..f19ab0e8a39ec44b2a47c3fb8ba5cfa28256b1c1 100644 --- a/apps/attestation-manager/src/userInfo/entities/update-unserInfo.dto.ts +++ b/apps/attestation-manager/src/userInfo/entities/update-unserInfo.dto.ts @@ -1,5 +1,5 @@ type UserInfo = { - [key: string]: any; + [key: string]: unknown; }; export default class UpdateUserInfoDto { diff --git a/apps/attestation-manager/src/userInfo/entities/userInfo.entity.ts b/apps/attestation-manager/src/userInfo/entities/userInfo.entity.ts index 021c8debf818d3e614e12cf2ff34b1372e71a9ce..f4dd7d5912c4b727fbc5134f8d1331a54f056c45 100644 --- a/apps/attestation-manager/src/userInfo/entities/userInfo.entity.ts +++ b/apps/attestation-manager/src/userInfo/entities/userInfo.entity.ts @@ -1,8 +1,8 @@ import { ApiProperty } from '@nestjs/swagger'; -import { IsString, IsNotEmpty, IsEnum } from 'class-validator'; +import { IsEnum, IsNotEmpty, IsString } from 'class-validator'; type UserInfo = { - [key: string]: any; + [key: string]: unknown; }; export default class UserInfoDto { @IsString() diff --git a/apps/attestation-manager/src/userInfo/module.ts b/apps/attestation-manager/src/userInfo/module.ts index 10e03e39ab22667abde4504a79852b8e650d5e8d..1c7287fb4cdf49652ce3de079f96b3906a8117ef 100644 --- a/apps/attestation-manager/src/userInfo/module.ts +++ b/apps/attestation-manager/src/userInfo/module.ts @@ -1,14 +1,14 @@ -import SchemasService from '@schemas/services/service'; -import { Module } from '@nestjs/common'; -import PrismaService from '@DB/prisma.service'; import { HttpModule } from '@nestjs/axios'; -import UserInfoService from '@userInfo/services/service'; -import UserInfoController from '@userInfo/controller/controller'; -import NatsClientService from '@src/client/nats.client'; +import { Module } from '@nestjs/common'; import { ClientsModule, Transport } from '@nestjs/microservices'; -import { NATSServices } from '@common/constants'; -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 SchemasService from '../schemas/services/service.js'; +import UserInfoController from './controller/controller.js'; +import UserInfoService from './services/service.js'; @Module({ imports: [ diff --git a/apps/attestation-manager/src/userInfo/repository/userInfo.respository.ts b/apps/attestation-manager/src/userInfo/repository/userInfo.respository.ts index 591b1fc1bf86e6b023f23a4cc908827fb696466f..9bd974a9c20451b01da6f97a82e300b849f85a8d 100644 --- a/apps/attestation-manager/src/userInfo/repository/userInfo.respository.ts +++ b/apps/attestation-manager/src/userInfo/repository/userInfo.respository.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; -import PrismaService from '@DB/prisma.service'; -import { Prisma } from '@prisma/client'; +import type { Prisma } from '@prisma/client'; +import PrismaService from '../../prisma/prisma.service.js'; @Injectable() export default class UserInfoRepository { diff --git a/apps/attestation-manager/src/userInfo/services/service.ts b/apps/attestation-manager/src/userInfo/services/service.ts index d87e1a652cda50d9a940ba9133f7f36638497d51..42364739f633e7ca0551dc1eddcc8597dd2c119a 100644 --- a/apps/attestation-manager/src/userInfo/services/service.ts +++ b/apps/attestation-manager/src/userInfo/services/service.ts @@ -1,9 +1,9 @@ -import logger from '@utils/logger'; import { Injectable } from '@nestjs/common'; -import UserInfoDto from '@userInfo/entities/userInfo.entity'; -import UpdateUserInfoDto from '@userInfo/entities/update-unserInfo.dto'; -import UserInfoRepository from '@userInfo/repository/userInfo.respository'; -import PrismaService from '@DB/prisma.service'; +import PrismaService from '../../prisma/prisma.service.js'; +import logger from '../../utils/logger.js'; +import UpdateUserInfoDto from '../entities/update-unserInfo.dto.js'; +import UserInfoDto from '../entities/userInfo.entity.js'; +import UserInfoRepository from '../repository/userInfo.respository.js'; @Injectable() export default class UserInfoService { diff --git a/apps/attestation-manager/src/userInfo/tests/__mocks__/service.ts b/apps/attestation-manager/src/userInfo/tests/__mocks__/service.ts index f40e506e5daa17fbb22b86ae902e6fd26764a76d..ee3bb212360039cd5a4e7f8302f6b2a90f298e13 100644 --- a/apps/attestation-manager/src/userInfo/tests/__mocks__/service.ts +++ b/apps/attestation-manager/src/userInfo/tests/__mocks__/service.ts @@ -1,4 +1,4 @@ -import userInfo from '@userInfo/tests/stubs/user-info-dto.stub'; +import userInfo from '../stubs/user-info-dto.stub.js'; const UserInfoServiceMock = jest.fn().mockReturnValue({ createUserInfo: jest.fn().mockReturnValue(userInfo), diff --git a/apps/attestation-manager/src/userInfo/tests/stubs/user-info-dto.stub.ts b/apps/attestation-manager/src/userInfo/tests/stubs/user-info-dto.stub.ts index a178765c599a17034da540f5af444f2d08537724..4725dfc30d58853ef16ce7e1e3eece8f1507548e 100644 --- a/apps/attestation-manager/src/userInfo/tests/stubs/user-info-dto.stub.ts +++ b/apps/attestation-manager/src/userInfo/tests/stubs/user-info-dto.stub.ts @@ -1,13 +1,15 @@ -import credentialDto from '@issueCredential/tests/stubs/credential-dto'; -import offerCredentialDto from '@issueCredential/tests/stubs/offer-credential-dto'; -import schemaDto from '@schemas/tests/stubs/schema-dto'; -import UserInfoDto from '@userInfo/entities/userInfo.entity'; +import credentialDto from '../../../issue-credential/tests/stubs/credential-dto.js'; +import offerCredentialDto from '../../../issue-credential/tests/stubs/offer-credential-dto.js'; +import schemaDto from '../../../schemas/tests/stubs/schema-dto.js'; +import UserInfoDto from '../../entities/userInfo.entity.js'; const userInfo = (): UserInfoDto => ({ autoAcceptCredential: offerCredentialDto().autoAcceptCredential, connectionId: credentialDto().connectionId, userInfo: { - ...schemaDto().attributes.map((attr) => ({ [attr]: attr })), + ...schemaDto().attributes.map((attr: string | symbol | number) => ({ + [attr]: attr, + })), }, }); diff --git a/apps/attestation-manager/src/utils/exceptionsFilter.ts b/apps/attestation-manager/src/utils/exceptionsFilter.ts index 388304be68a2e6638478db9de0e2feefcfe914a6..711d55c2c98f85f6376fde1edaf3947dc1305064 100644 --- a/apps/attestation-manager/src/utils/exceptionsFilter.ts +++ b/apps/attestation-manager/src/utils/exceptionsFilter.ts @@ -1,14 +1,14 @@ import { - ExceptionFilter, - Catch, ArgumentsHost, + Catch, + ExceptionFilter, HttpException, HttpStatus, Logger, } from '@nestjs/common'; import { HttpAdapterHost } from '@nestjs/core'; -import { Request } from 'express'; import { Prisma } from '@prisma/client'; +import { Request } from 'express'; const { PrismaClientKnownRequestError, PrismaClientValidationError } = Prisma; @@ -16,6 +16,7 @@ const { PrismaClientKnownRequestError, PrismaClientValidationError } = Prisma; export default class AllExceptionsFilter implements ExceptionFilter { constructor(private readonly httpAdapterHost: HttpAdapterHost) {} + // eslint-disable-next-line @typescript-eslint/no-explicit-any catch(exception: any, host: ArgumentsHost): void { const { httpAdapter } = this.httpAdapterHost; @@ -46,7 +47,7 @@ export default class AllExceptionsFilter implements ExceptionFilter { Logger.error( 'Exception Filter :', message, - (exception as any).stack, + (exception as Error).stack, `${request.method} ${request.url}`, ); diff --git a/apps/attestation-manager/src/utils/logger.ts b/apps/attestation-manager/src/utils/logger.ts index 3aa770396151e83fd8615b7edef1211eb6fafd0c..89b325001839a3ddeee9aaced118c0586d74f76d 100644 --- a/apps/attestation-manager/src/utils/logger.ts +++ b/apps/attestation-manager/src/utils/logger.ts @@ -1,25 +1,9 @@ -import { existsSync, mkdirSync } from 'fs'; +import { ecsFormat } from '@elastic/ecs-winston-format'; +import { 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 esTransportOpts = { -// clientOpts: { node: 'http://localhost:9200' }, -// }; - -// const esTransport = new ElasticsearchTransport(esTransportOpts); - -// esTransport.on('error', (error: any) => { -// console.error('Error in logger caught', error); -// }); +mkdirSync(LoggerConfig.lOG_DIR, { recursive: true }); const logger: Logger = winston.createLogger({ format: ecsFormat({ convertReqRes: true }), diff --git a/apps/attestation-manager/src/utils/tests/logger.spec.ts b/apps/attestation-manager/src/utils/tests/logger.spec.ts index a775b98a0a200705e63b19e06178f808e7f212b9..8428ba0beb39a65284b603c6b95c986d3e62be4f 100644 --- a/apps/attestation-manager/src/utils/tests/logger.spec.ts +++ b/apps/attestation-manager/src/utils/tests/logger.spec.ts @@ -1,13 +1,13 @@ import fs from 'fs'; describe('Logger', () => { - let logger: any; + let logger: unknown; jest.spyOn(fs, 'existsSync').mockImplementation(() => false); jest.spyOn(fs, 'mkdirSync').mockImplementation(() => 'mocked'); beforeEach(async () => { - logger = await import('../logger'); + logger = await import('../logger.js'); }); it('should call logger', async () => { diff --git a/apps/attestation-manager/test/app.e2e-spec.ts b/apps/attestation-manager/test/app.e2e-spec.ts index 5052f6bc31bbc1141f0909d2a0104525f49796ef..9bb5cc36e530615432e966cf4954f120c9e974e3 100644 --- a/apps/attestation-manager/test/app.e2e-spec.ts +++ b/apps/attestation-manager/test/app.e2e-spec.ts @@ -1,7 +1,7 @@ -import { Test, TestingModule } from '@nestjs/testing'; 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 +15,6 @@ describe('AppController (e2e)', () => { await app.init(); }); - it('/ (GET)', () => - request(app.getHttpServer()).get('/').expect(200).expect('Hello World!')); + it('/v1/health (GET)', () => + request(app.getHttpServer()).get('/health').expect(200)); }); diff --git a/apps/attestation-manager/test/jest-e2e.json b/apps/attestation-manager/test/jest-e2e.json deleted file mode 100644 index e9d912f3e3cefc18505d3cd19b3a5a9f567f5de0..0000000000000000000000000000000000000000 --- a/apps/attestation-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/attestation-manager/test/jest.config.js b/apps/attestation-manager/test/jest.config.js new file mode 100644 index 0000000000000000000000000000000000000000..c2b3ddf9bf2a2231e63f8b040213ce5ffcbb9412 --- /dev/null +++ b/apps/attestation-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/attestation-manager/tsconfig.json b/apps/attestation-manager/tsconfig.json index 3bd0cdcd53eb247acbf78c2d2d64492445c477bf..a5a4ed09cb2d828b439000a619de763dbc0351af 100644 --- a/apps/attestation-manager/tsconfig.json +++ b/apps/attestation-manager/tsconfig.json @@ -1,40 +1,18 @@ { + "extends": "../../tsconfig.json", + "compilerOptions": { - "target": "es6", - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "module": "commonjs", + "composite": true, + "removeComments": false, + "declaration": true, + "sourceMap": true, + + "incremental": true, + "outDir": "./dist", - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - "strict": true, - "skipLibCheck": true, "baseUrl": "./", - "strictPropertyInitialization": false, - "sourceMap": true, - "strictNullChecks": true, - "paths": { - "@src/*": ["src/*"], - "@config/*": ["config/*"], - "@utils/*" :["src/utils/*"], - "@common/*":["src/common/*"], - "@schemas/*":["src/schemas/*"], - "@credentialDef/*": ["src/credentialDef/*"], - "@issueCredential/*": ["src/issue-credential/*"], - "@userInfo/*": ["src/userInfo/*"], - "@health/*":["src/health/*"], - "@DB/*":["src/prisma/*"] - }, - "types": [ - "node", - "jest", - "express" - ] + "rootDir": "./src" }, - "include": [ - "**/*.ts", - "src", - "config", - ], - "exclude": ["node_modules", "./dist/**/*"] + "include": ["src", "test"], + "exclude": ["node_modules", "./dist/**/*"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 541db2056e1e11e442f2beadd1a34ffbf846d3c1..6e8912b54402857f0ab4b6c9956457b5634721d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,171 +11,165 @@ importers: apps/attestation-manager: dependencies: '@elastic/ecs-winston-format': - specifier: ^1.3.1 - version: 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.2(@nestjs/common@8.4.7)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13) + specifier: ^2.0.3 + version: 2.0.3(@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.17.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.15 + version: 7.1.15(@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.9.2 - version: 3.15.2(prisma@3.15.2) - '@types/express': - specifier: ^4.17.13 - version: 4.17.18 - '@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-transformer: specifier: ^0.5.1 version: 0.5.1 class-validator: - specifier: ^0.13.2 - version: 0.13.2 - express: - specifier: ^4.17.3 - version: 4.18.2 - husky: - specifier: ^7.0.4 - version: 7.0.4 + specifier: ^0.14.0 + version: 0.14.0 joi: - specifier: ^17.6.0 + specifier: ^17.11.0 version: 17.11.0 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 liquibase: specifier: ^4.4.0 version: 4.4.0 moment: - specifier: ^2.29.1 + specifier: ^2.29.4 version: 2.29.4 nats: - specifier: ^2.6.0 - version: 2.17.0 + specifier: ^2.18.0 + version: 2.18.0 pg: - specifier: ^8.7.3 + specifier: ^8.11.3 version: 8.11.3 - prisma: - specifier: ^3.9.2 - version: 3.15.2 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 swagger-ui-express: - specifier: ^4.3.0 - version: 4.6.3(express@4.18.2) + specifier: ^5.0.0 + version: 5.0.0(express@4.18.2) winston: - specifier: ^3.6.0 - version: 3.10.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: '@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 - version: 2.0.14 + 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.50.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.50.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 - version: 8.50.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.28.1)(eslint@8.50.0) + specifier: ^8.53.0 + version: 8.53.0 eslint-config-prettier: - specifier: ^8.3.0 - version: 8.10.0(eslint@8.50.0) - eslint-plugin-import: - specifier: ^2.25.4 - version: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.50.0) + specifier: ^9.0.0 + version: 9.0.0(eslint@8.53.0) + eslint-plugin-jest: + specifier: ^27.6.0 + version: 27.6.0(@typescript-eslint/eslint-plugin@6.11.0)(eslint@8.53.0)(jest@29.7.0)(typescript@5.2.2) eslint-plugin-prettier: - specifier: ^4.0.0 - version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.50.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: ^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: ^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 - 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.88.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/connection-manager: dependencies: @@ -332,7 +326,7 @@ importers: 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.88.2) + version: 9.4.4(typescript@4.9.5)(webpack@5.89.0) ts-node: specifier: ^10.0.0 version: 10.9.1(@types/node@16.18.57)(typescript@4.9.5) @@ -501,7 +495,7 @@ importers: 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.88.2) + version: 9.4.4(typescript@4.9.5)(webpack@5.89.0) ts-node: specifier: ^10.0.0 version: 10.9.1(@types/node@16.18.57)(typescript@4.9.5) @@ -667,7 +661,7 @@ importers: 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.88.2) + version: 9.4.4(typescript@4.9.5)(webpack@5.89.0) ts-node: specifier: ^10.0.0 version: 10.9.1(@types/node@16.18.57)(typescript@4.9.5) @@ -830,7 +824,7 @@ importers: 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.88.2) + version: 9.4.4(typescript@4.9.5)(webpack@5.89.0) ts-node: specifier: ^10.0.0 version: 10.9.1(@types/node@16.18.57)(typescript@4.9.5) @@ -893,6 +887,24 @@ packages: rxjs: 6.6.7 source-map: 0.7.3 + /@angular-devkit/core@16.2.8(chokidar@3.5.3): + resolution: {integrity: sha512-PTGozYvh1Bin5lB15PwcXa26Ayd17bWGLS3H8Rs0s+04mUDvfNofmweaX1LgumWWy3nCUTDuwHxX10M3G0wE2g==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + chokidar: 3.5.3 + jsonc-parser: 3.2.0 + picomatch: 2.3.1 + rxjs: 7.8.1 + source-map: 0.7.4 + dev: true + /@angular-devkit/schematics-cli@13.3.6(chokidar@3.5.3): resolution: {integrity: sha512-5tTuu9gbXM0bMk0sin4phmWA3U1Qz53zT/rpEfzQ/+c/s8CoqZ5N1qOnYtemRct3Jxsz1kn4TBpHeriR4r5hHg==} engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -907,6 +919,21 @@ packages: transitivePeerDependencies: - chokidar + /@angular-devkit/schematics-cli@16.2.8(chokidar@3.5.3): + resolution: {integrity: sha512-EXURJCzWTVYCipiTT4vxQQOrF63asOUDbeOy3OtiSh7EwIUvxm3BPG6hquJqngEnI/N6bA75NJ1fBhU6Hrh7eA==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + hasBin: true + dependencies: + '@angular-devkit/core': 16.2.8(chokidar@3.5.3) + '@angular-devkit/schematics': 16.2.8(chokidar@3.5.3) + ansi-colors: 4.1.3 + inquirer: 8.2.4 + symbol-observable: 4.0.0 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - chokidar + dev: true + /@angular-devkit/schematics@13.3.5(chokidar@3.5.3): resolution: {integrity: sha512-0N/kL/Vfx0yVAEwa3HYxNx9wYb+G9r1JrLjJQQzDp+z9LtcojNf7j3oey6NXrDUs1WjVZOa/AIdRl3/DuaoG5w==} engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -931,6 +958,19 @@ packages: transitivePeerDependencies: - chokidar + /@angular-devkit/schematics@16.2.8(chokidar@3.5.3): + resolution: {integrity: sha512-MBiKZOlR9/YMdflALr7/7w/BGAfo/BGTrlkqsIB6rDWV1dYiCgxI+033HsiNssLS6RQyCFx/e7JA2aBBzu9zEg==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 16.2.8(chokidar@3.5.3) + jsonc-parser: 3.2.0 + magic-string: 0.30.1 + ora: 5.4.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + /@aries-framework/core@0.1.0: resolution: {integrity: sha512-NwlPgDKh7f6N0wVB6SvDh7Vr2nZJKGR4+v+8OJCB/Wx7sIAfL8MyLCMEhxkdRF+uIB1QjTzHQ2k9ID0K/NNQQQ==} dependencies: @@ -1204,6 +1244,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.0): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.0): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -1322,6 +1372,11 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} + /@colors/colors@1.6.0: + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + dev: false + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -1344,6 +1399,11 @@ packages: fast-json-stringify: 2.7.13 dev: false + /@elastic/ecs-helpers@2.1.1: + resolution: {integrity: sha512-ItoNazMnYdlUCmkBYTXc3SG6PF7UlVTbvMdHPvXkfTMPdwGv2G1Xtp5CjDHaGHGOZSwaDrW4RSCXvA/lMSU+rg==} + engines: {node: '>=10'} + dev: false + /@elastic/ecs-pino-format@1.3.0: resolution: {integrity: sha512-U8D57gPECYoRCcwREsrXKBtqeyFFF/KAwHi4rG1u/oQhAg91Kzw8ZtUQJXD/DMDieLOqtbItFr2FRBWI3t3wog==} engines: {node: '>=10'} @@ -1360,6 +1420,15 @@ packages: '@elastic/ecs-helpers': 1.1.0 dev: false + /@elastic/ecs-winston-format@1.5.0: + resolution: {integrity: sha512-Ud84xQdAy0yM42jZ7QcXt/iA7mLHy71+eSxPdYfZccPo3irDSR9VOXdBTtRu+JyzdtEc0xD6QiBuavolp9KrsQ==} + engines: {node: '>=10'} + dependencies: + '@elastic/ecs-helpers': 2.1.1 + safe-stable-stringify: 2.4.3 + triple-beam: 1.4.1 + dev: false + /@elastic/elasticsearch@7.17.13: resolution: {integrity: sha512-GMXtFVqd3FgUlTtPL/GDc+3GhwvfZ0kSuegCvVVqb58kd+0I6U6u7PL8QFRLHtwzqLEBmYLdwr4PRkBAWKGlzA==} engines: {node: '>=12'} @@ -1372,6 +1441,30 @@ packages: - supports-color dev: false + /@elastic/elasticsearch@8.10.0: + resolution: {integrity: sha512-RIEyqz0D18bz/dK+wJltaak+7wKaxDELxuiwOJhuMrvbrBsYDFnEoTdP/TZ0YszHBgnRPGqBDBgH/FHNgHObiQ==} + engines: {node: '>=14'} + dependencies: + '@elastic/transport': 8.3.4 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@elastic/transport@8.3.4: + resolution: {integrity: sha512-+0o8o74sbzu3BO7oOZiP9ycjzzdOt4QwmMEjFc1zfO7M0Fh7QX1xrpKqZbSd8vBwihXNlSq/EnMPfgD2uFEmFg==} + engines: {node: '>=14'} + dependencies: + debug: 4.3.4 + hpagent: 1.2.0 + ms: 2.1.3 + secure-json-parse: 2.7.0 + tslib: 2.6.2 + undici: 5.27.2 + transitivePeerDependencies: + - supports-color + dev: false + /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1382,6 +1475,16 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.53.0 + eslint-visitor-keys: 3.4.3 + dev: true + /@eslint-community/regexpp@4.9.1: resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -1404,11 +1507,38 @@ packages: - supports-color dev: true + /@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /@eslint/js@8.50.0: resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@eslint/js@8.53.0: + resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} + dev: false + /@gar/promisify@1.1.3: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: false @@ -1460,6 +1590,17 @@ packages: - supports-color dev: true + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -1469,6 +1610,22 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -1497,6 +1654,18 @@ packages: slash: 3.0.0 dev: true + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + /@jest/core@27.5.1(ts-node@10.9.1): resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -1542,6 +1711,56 @@ packages: - utf-8-validate dev: true + /@jest/core@29.7.0(ts-node@10.9.1): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/create-cache-key-function@27.5.1: + resolution: {integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + dev: true + /@jest/environment@27.5.1: resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -1552,6 +1771,33 @@ packages: jest-mock: 27.5.1 dev: true + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + /@jest/fake-timers@27.5.1: resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -1564,6 +1810,18 @@ packages: jest-util: 27.5.1 dev: true + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.9.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + /@jest/globals@27.5.1: resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -1573,6 +1831,18 @@ packages: expect: 27.5.1 dev: true + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + /@jest/reporters@27.5.1: resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -1611,6 +1881,50 @@ packages: - supports-color dev: true + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.19 + '@types/node': 20.9.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 6.0.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.1.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + /@jest/source-map@27.5.1: resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -1620,6 +1934,15 @@ packages: source-map: 0.6.1 dev: true + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + /@jest/test-result@27.5.1: resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -1630,6 +1953,16 @@ packages: collect-v8-coverage: 1.0.2 dev: true + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.2 + dev: true + /@jest/test-sequencer@27.5.1: resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -1642,6 +1975,16 @@ packages: - supports-color dev: true + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + /@jest/transform@27.5.1: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -1665,17 +2008,52 @@ packages: - supports-color dev: true + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.19 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + /@jest/types@27.5.1: resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.2 - '@types/node': 16.18.57 + '@types/node': 20.9.0 '@types/yargs': 16.0.6 chalk: 4.1.2 dev: true + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.2 + '@types/node': 20.9.0 + '@types/yargs': 17.0.31 + chalk: 4.1.2 + dev: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -1714,6 +2092,24 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /@lukeed/csprng@1.1.0: + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} + engines: {node: '>=8'} + + /@mole-inc/bin-wrapper@8.0.1: + resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + bin-check: 4.1.0 + bin-version-check: 5.1.0 + content-disposition: 0.5.4 + ext-name: 5.0.0 + file-type: 17.1.6 + filenamify: 5.1.1 + got: 11.8.6 + os-filter-obj: 2.0.0 + dev: true + /@multiformats/base-x@4.0.1: resolution: {integrity: sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==} dev: false @@ -1748,6 +2144,64 @@ packages: - debug dev: false + /@nestjs/axios@3.0.1(@nestjs/common@10.2.8)(axios@1.6.2)(reflect-metadata@0.1.13)(rxjs@7.8.1): + resolution: {integrity: sha512-VlOZhAGDmOoFdsmewn8AyClAdGpKXQQaY1+3PGB+g6ceurGIdTxZgRX3VXc1T6Zs60PedWjg3A82TDOB05mrzQ==} + peerDependencies: + '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + axios: ^1.3.1 + reflect-metadata: ^0.1.12 + rxjs: ^6.0.0 || ^7.0.0 + dependencies: + '@nestjs/common': 10.2.8(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + axios: 1.6.2 + reflect-metadata: 0.1.13 + rxjs: 7.8.1 + dev: false + + /@nestjs/cli@10.2.1(@swc/cli@0.1.62)(@swc/core@1.3.96): + resolution: {integrity: sha512-CAJAQwmxFZfB3RTvqz/eaXXWpyU+mZ4QSqfBYzjneTsPgF+uyOAW3yQpaLNn9Dfcv39R9UxSuAhayv6yuFd+Jg==} + engines: {node: '>= 16.14'} + hasBin: true + peerDependencies: + '@swc/cli': ^0.1.62 + '@swc/core': ^1.3.62 + peerDependenciesMeta: + '@swc/cli': + optional: true + '@swc/core': + optional: true + dependencies: + '@angular-devkit/core': 16.2.8(chokidar@3.5.3) + '@angular-devkit/schematics': 16.2.8(chokidar@3.5.3) + '@angular-devkit/schematics-cli': 16.2.8(chokidar@3.5.3) + '@nestjs/schematics': 10.0.3(chokidar@3.5.3)(typescript@5.2.2) + '@swc/cli': 0.1.62(@swc/core@1.3.96) + '@swc/core': 1.3.96 + chalk: 4.1.2 + chokidar: 3.5.3 + cli-table3: 0.6.3 + commander: 4.1.1 + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.2.2)(webpack@5.89.0) + glob: 10.3.10 + inquirer: 8.2.6 + node-emoji: 1.11.0 + ora: 5.4.1 + os-name: 4.0.1 + rimraf: 4.4.1 + shelljs: 0.8.5 + source-map-support: 0.5.21 + tree-kill: 1.2.2 + tsconfig-paths: 4.2.0 + tsconfig-paths-webpack-plugin: 4.1.0 + typescript: 5.2.2 + webpack: 5.89.0(@swc/core@1.3.96) + webpack-node-externals: 3.0.0 + transitivePeerDependencies: + - esbuild + - uglify-js + - webpack-cli + dev: true + /@nestjs/cli@8.2.8: resolution: {integrity: sha512-y5Imcw1EY0OxD3POAM7SLUB1rFdn5FjbfSsyJrokjKmXY+i6KcBdbRrv3Ox7aeJ4W7wXuckIXZEUlK6lC52dnA==} engines: {node: '>= 10.13.0', npm: '>= 6.11.0'} @@ -1782,6 +2236,27 @@ packages: - vue-template-compiler - webpack-cli + /@nestjs/common@10.2.8(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): + resolution: {integrity: sha512-rmpwcdvq2IWMmsUVP8rsdKub6uDWk7dwCYo0aif50JTwcvcxzaP3iKVFKoSgvp0RKYu8h15+/AEOfaInmPpl0Q==} + peerDependencies: + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + class-transformer: 0.5.1 + class-validator: 0.14.0 + iterare: 1.2.1 + reflect-metadata: 0.1.13 + rxjs: 7.8.1 + tslib: 2.6.2 + uid: 2.0.2 + /@nestjs/common@8.4.7(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.1): resolution: {integrity: sha512-m/YsbcBal+gA5CFrDpqXqsSfylo+DIQrkFY3qhVIltsYRfu8ct8J9pqsTO6OPf3mvqdOpFGrV5sBjoyAzOBvsw==} peerDependencies: @@ -1825,6 +2300,52 @@ packages: uuid: 8.3.2 dev: false + /@nestjs/config@3.1.1(@nestjs/common@10.2.8)(reflect-metadata@0.1.13): + resolution: {integrity: sha512-qu5QlNiJdqQtOsnB6lx4JCXPQ96jkKUsOGd+JXfXwqJqZcOSAq6heNFg0opW4pq4J/VZoNwoo87TNnx9wthnqQ==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + reflect-metadata: ^0.1.13 + dependencies: + '@nestjs/common': 10.2.8(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + dotenv: 16.3.1 + dotenv-expand: 10.0.0 + lodash: 4.17.21 + reflect-metadata: 0.1.13 + uuid: 9.0.0 + dev: false + + /@nestjs/core@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): + resolution: {integrity: sha512-9+MZ2s8ixfY9Bl/M9ofChiyYymcwdK9ZWNH4GDMF7Am7XRAQ1oqde6MYGG05rhQwiVXuTwaYLlXciJKfsrg5qg==} + requiresBuild: true + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/microservices': ^10.0.0 + '@nestjs/platform-express': ^10.0.0 + '@nestjs/websockets': ^10.0.0 + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + '@nestjs/websockets': + optional: true + dependencies: + '@nestjs/common': 10.2.8(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@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) + '@nestjs/platform-express': 10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8) + '@nuxtjs/opencollective': 0.3.2 + fast-safe-stringify: 2.1.1 + iterare: 1.2.1 + path-to-regexp: 3.2.0 + reflect-metadata: 0.1.13 + rxjs: 7.8.1 + tslib: 2.6.2 + uid: 2.0.2 + transitivePeerDependencies: + - encoding + /@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): resolution: {integrity: sha512-XB9uexHqzr2xkPo6QSiQWJJttyYYLmvQ5My64cFvWFi7Wk2NIus0/xUNInwX3kmFWB6pF1ab5Y2ZBvWdPwGBhw==} requiresBuild: true @@ -1896,6 +2417,69 @@ packages: reflect-metadata: 0.1.13 dev: false + /@nestjs/mapped-types@2.0.3(@nestjs/common@10.2.8)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13): + resolution: {integrity: sha512-40Zdqg98lqoF0+7ThWIZFStxgzisK6GG22+1ABO4kZiGF/Tu2FE+DYLw+Q9D94vcFWizJ+MSjNN4ns9r6hIGxw==} + 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': 10.2.8(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + class-transformer: 0.5.1 + class-validator: 0.14.0 + 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: + '@grpc/grpc-js': '*' + '@nestjs/common': ^10.0.0 + '@nestjs/core': ^10.0.0 + '@nestjs/websockets': ^10.0.0 + amqp-connection-manager: '*' + amqplib: '*' + cache-manager: '*' + ioredis: '*' + kafkajs: '*' + mqtt: '*' + nats: '*' + 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 + ioredis: + optional: true + kafkajs: + optional: true + mqtt: + optional: true + nats: + optional: true + dependencies: + '@nestjs/common': 10.2.8(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 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) + iterare: 1.2.1 + nats: 2.18.0 + reflect-metadata: 0.1.13 + rxjs: 7.8.1 + tslib: 2.6.2 + /@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): resolution: {integrity: sha512-JZX29tBWbbPa+Q06QcCbwKTyEsOFHAPrxgfEkRNwoaiEqqCsITT9w2n5bcz3vlUurdpy5dIgX3/almbitghbKg==} peerDependencies: @@ -1940,6 +2524,22 @@ packages: 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==} + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/core': ^10.0.0 + dependencies: + '@nestjs/common': 10.2.8(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 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) + body-parser: 1.20.2 + cors: 2.8.5 + express: 4.18.2 + multer: 1.4.4-lts.1 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + /@nestjs/platform-express@8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7): resolution: {integrity: sha512-lPE5Ltg2NbQGRQIwXWY+4cNrXhJdycbxFDQ8mNxSIuv+LbrJBIdEB/NONk+LLn9N/8d2+I2LsIETGQrPvsejBg==} peerDependencies: @@ -1970,6 +2570,21 @@ packages: uuid: 8.3.2 dev: false + /@nestjs/schematics@10.0.3(chokidar@3.5.3)(typescript@5.2.2): + resolution: {integrity: sha512-2BRujK0GqGQ7j1Zpz+obVfskDnnOeVKt5aXoSaVngKo8Oczy8uYCY+R547TQB+Kf35epdfFER2pVnQrX3/It5A==} + peerDependencies: + typescript: '>=4.8.2' + dependencies: + '@angular-devkit/core': 16.2.8(chokidar@3.5.3) + '@angular-devkit/schematics': 16.2.8(chokidar@3.5.3) + comment-json: 4.2.3 + jsonc-parser: 3.2.0 + pluralize: 8.0.0 + typescript: 5.2.2 + transitivePeerDependencies: + - chokidar + dev: true + /@nestjs/schematics@8.0.11(chokidar@3.5.3)(typescript@4.7.4): resolution: {integrity: sha512-W/WzaxgH5aE01AiIErE9QrQJ73VR/M/8p8pq0LZmjmNcjZqU5kQyOWUxZg13WYfSpJdOa62t6TZRtFDmgZPoIg==} peerDependencies: @@ -2024,6 +2639,94 @@ packages: - class-validator dev: false + /@nestjs/swagger@7.1.15(@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): + resolution: {integrity: sha512-ZaAO90R9MQXk4iLQLijIH6jrsllkUSYoh0Su6DECGgu8Y4Q/9LfdESwsZ9nmzr/48aLOu+wrv+cdI5Wr6fLKJw==} + peerDependencies: + '@fastify/static': ^6.0.0 + '@nestjs/common': ^9.0.0 || ^10.0.0 + '@nestjs/core': ^9.0.0 || ^10.0.0 + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 + peerDependenciesMeta: + '@fastify/static': + optional: true + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + '@nestjs/common': 10.2.8(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 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': 2.0.3(@nestjs/common@10.2.8)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13) + class-transformer: 0.5.1 + class-validator: 0.14.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + path-to-regexp: 3.2.0 + reflect-metadata: 0.1.13 + swagger-ui-dist: 5.9.1 + dev: false + + /@nestjs/terminus@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): + resolution: {integrity: sha512-aDoPK/uaR9PHn56xzand6zqpp+S3Ibm+y/OrG3M01F1WnScLfo29hbS6MdnIMqmVRAS11r/8X3xWTSo8TT/Lig==} + peerDependencies: + '@grpc/grpc-js': '*' + '@grpc/proto-loader': '*' + '@mikro-orm/core': '*' + '@mikro-orm/nestjs': '*' + '@nestjs/axios': ^1.0.0 || ^2.0.0 || ^3.0.0 + '@nestjs/common': ^9.0.0 || ^10.0.0 + '@nestjs/core': ^9.0.0 || ^10.0.0 + '@nestjs/microservices': ^9.0.0 || ^10.0.0 + '@nestjs/mongoose': ^9.0.0 || ^10.0.0 + '@nestjs/sequelize': ^9.0.0 || ^10.0.0 + '@nestjs/typeorm': ^9.0.0 || ^10.0.0 + '@prisma/client': '*' + mongoose: '*' + reflect-metadata: 0.1.x + rxjs: 7.x + sequelize: '*' + typeorm: '*' + peerDependenciesMeta: + '@grpc/grpc-js': + optional: true + '@grpc/proto-loader': + optional: true + '@mikro-orm/core': + optional: true + '@mikro-orm/nestjs': + optional: true + '@nestjs/axios': + optional: true + '@nestjs/microservices': + optional: true + '@nestjs/mongoose': + optional: true + '@nestjs/sequelize': + optional: true + '@nestjs/typeorm': + optional: true + '@prisma/client': + optional: true + mongoose: + optional: true + sequelize: + optional: true + typeorm: + optional: true + dependencies: + '@nestjs/axios': 3.0.1(@nestjs/common@10.2.8)(axios@1.6.2)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/common': 10.2.8(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 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/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) + '@prisma/client': 5.6.0(prisma@5.6.0) + boxen: 5.1.2 + check-disk-space: 3.4.0 + reflect-metadata: 0.1.13 + rxjs: 7.8.1 + dev: false + /@nestjs/terminus@8.1.1(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(reflect-metadata@0.1.13)(rxjs@7.8.1): resolution: {integrity: sha512-C+Pm1LZse8ZSfXeZXMTmUIGAmDpov1WRury/cyWj50ceCCCWz7csACNouGBEvjDmBklzfbkxgDH9mOSbm1r54A==} peerDependencies: @@ -2039,6 +2742,26 @@ packages: rxjs: 7.8.1 dev: false + /@nestjs/testing@10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(@nestjs/microservices@10.2.8)(@nestjs/platform-express@10.2.8): + resolution: {integrity: sha512-9Kj5IQhM67/nj/MT6Wi2OmWr5YQnCMptwKVFrX1TDaikpY12196v7frk0jVjdT7wms7rV07GZle9I2z0aSjqtQ==} + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/core': ^10.0.0 + '@nestjs/microservices': ^10.0.0 + '@nestjs/platform-express': ^10.0.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + dependencies: + '@nestjs/common': 10.2.8(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 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/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) + '@nestjs/platform-express': 10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8) + tslib: 2.6.2 + dev: true + /@nestjs/testing@8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(@nestjs/microservices@8.4.7)(@nestjs/platform-express@8.4.7): resolution: {integrity: sha512-aedpeJFicTBeiTCvJWUG45WMMS53f5eu8t2fXsfjsU1t+WdDJqYcZyrlCzA4dL1B7MfbqaTURdvuVVHTmJO8ag==} peerDependencies: @@ -2156,61 +2879,288 @@ packages: resolution: {integrity: sha512-+fguCd2d8d2qruk0H0DsCEy2CTK3t0Tugg7MhZ/UQMvmewbZLNnJ6heSYyzIZWG5IPfAXzoj4f4F/qpM7l4VBA==} engines: {node: '>=14'} requiresBuild: true - dev: false + dev: false + optional: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.1 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + 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'} + requiresBuild: true + peerDependencies: + prisma: '*' + peerDependenciesMeta: + prisma: + optional: true + dependencies: + '@prisma/engines-version': 5.6.0-32.e95e739751f42d8ca026f6b910f5a2dc5adeaeee + 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 + + /@sideway/address@4.1.4: + resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: false + + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + dev: false + + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: false + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: true + + /@sinonjs/commons@1.8.6: + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + + /@sinonjs/fake-timers@8.1.0: + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + dependencies: + '@sinonjs/commons': 1.8.6 + dev: true + + /@sovpro/delimited-stream@1.1.0: + resolution: {integrity: sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw==} + engines: {node: '>= 8'} + dev: false + + /@swc/cli@0.1.62(@swc/core@1.3.96): + resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} + engines: {node: '>= 12.13'} + hasBin: true + peerDependencies: + '@swc/core': ^1.2.66 + chokidar: ^3.5.1 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + '@mole-inc/bin-wrapper': 8.0.1 + '@swc/core': 1.3.96 + commander: 7.2.0 + fast-glob: 3.3.1 + semver: 7.5.4 + slash: 3.0.0 + source-map: 0.7.4 + dev: true + + /@swc/core-darwin-arm64@1.3.96: + resolution: {integrity: sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-darwin-x64@1.3.96: + resolution: {integrity: sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm-gnueabihf@1.3.96: + resolution: {integrity: sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-gnu@1.3.96: + resolution: {integrity: sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-musl@1.3.96: + resolution: {integrity: sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-gnu@1.3.96: + resolution: {integrity: sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-musl@1.3.96: + resolution: {integrity: sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-arm64-msvc@1.3.96: + resolution: {integrity: sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-ia32-msvc@1.3.96: + resolution: {integrity: sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-x64-msvc@1.3.96: + resolution: {integrity: sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - /@prisma/client@3.15.2(prisma@3.15.2): - resolution: {integrity: sha512-ErqtwhX12ubPhU4d++30uFY/rPcyvjk+mdifaZO5SeM21zS3t4jQrscy8+6IyB0GIYshl5ldTq6JSBo1d63i8w==} - engines: {node: '>=12.6'} + /@swc/core@1.3.96: + resolution: {integrity: sha512-zwE3TLgoZwJfQygdv2SdCK9mRLYluwDOM53I+dT6Z5ZvrgVENmY3txvWDvduzkV+/8IuvrRbVezMpxcojadRdQ==} + engines: {node: '>=10'} requiresBuild: true peerDependencies: - prisma: '*' + '@swc/helpers': ^0.5.0 peerDependenciesMeta: - prisma: + '@swc/helpers': optional: true dependencies: - '@prisma/engines-version': 3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e - prisma: 3.15.2 - dev: false - - /@prisma/engines-version@3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e: - resolution: {integrity: sha512-e3k2Vd606efd1ZYy2NQKkT4C/pn31nehyLhVug6To/q8JT8FpiMrDy7zmm3KLF0L98NOQQcutaVtAPhzKhzn9w==} - dev: false + '@swc/counter': 0.1.2 + '@swc/types': 0.1.5 + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.96 + '@swc/core-darwin-x64': 1.3.96 + '@swc/core-linux-arm-gnueabihf': 1.3.96 + '@swc/core-linux-arm64-gnu': 1.3.96 + '@swc/core-linux-arm64-musl': 1.3.96 + '@swc/core-linux-x64-gnu': 1.3.96 + '@swc/core-linux-x64-musl': 1.3.96 + '@swc/core-win32-arm64-msvc': 1.3.96 + '@swc/core-win32-ia32-msvc': 1.3.96 + '@swc/core-win32-x64-msvc': 1.3.96 + dev: true - /@prisma/engines@3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e: - resolution: {integrity: sha512-NHlojO1DFTsSi3FtEleL9QWXeSF/UjhCW0fgpi7bumnNZ4wj/eQ+BJJ5n2pgoOliTOGv9nX2qXvmHap7rJMNmg==} - requiresBuild: true + /@swc/counter@0.1.2: + resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} + dev: true - /@sideway/address@4.1.4: - resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} + /@swc/jest@0.2.29(@swc/core@1.3.96): + resolution: {integrity: sha512-8reh5RvHBsSikDC3WGCd5ZTd2BXKkyOdK7QwynrCH58jk2cQFhhHhFBg/jvnWZehUQe/EoOImLENc9/DwbBFow==} + engines: {npm: '>= 7.0.0'} + peerDependencies: + '@swc/core': '*' dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@sideway/formula@3.0.1: - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - dev: false - - /@sideway/pinpoint@2.0.0: - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - dev: false + '@jest/create-cache-key-function': 27.5.1 + '@swc/core': 1.3.96 + jsonc-parser: 3.2.0 + dev: true - /@sinonjs/commons@1.8.6: - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} - dependencies: - type-detect: 4.0.8 + /@swc/types@0.1.5: + resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} dev: true - /@sinonjs/fake-timers@8.1.0: - resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + /@szmarczak/http-timer@4.0.6: + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} dependencies: - '@sinonjs/commons': 1.8.6 + defer-to-connect: 2.0.1 dev: true - /@sovpro/delimited-stream@1.1.0: - resolution: {integrity: sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw==} - engines: {node: '>= 8'} - dev: false + /@tokenizer/token@0.3.0: + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + dev: true /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} @@ -2265,12 +3215,21 @@ packages: resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: '@types/connect': 3.4.36 - '@types/node': 16.18.57 + '@types/node': 20.9.0 + + /@types/cacheable-request@6.0.3: + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 20.9.0 + '@types/responselike': 1.0.3 + dev: true /@types/connect@3.4.36: resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} dependencies: - '@types/node': 16.18.57 + '@types/node': 20.9.0 /@types/cookiejar@2.1.2: resolution: {integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==} @@ -2279,7 +3238,7 @@ packages: resolution: {integrity: sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==} dependencies: '@types/eslint': 8.44.3 - '@types/estree': 0.0.51 + '@types/estree': 1.0.2 /@types/eslint@8.44.3: resolution: {integrity: sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==} @@ -2292,12 +3251,11 @@ packages: /@types/estree@1.0.2: resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} - dev: true /@types/express-serve-static-core@4.17.37: resolution: {integrity: sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==} dependencies: - '@types/node': 16.18.57 + '@types/node': 20.9.0 '@types/qs': 6.9.8 '@types/range-parser': 1.2.5 '@types/send': 0.17.2 @@ -2310,6 +3268,14 @@ packages: '@types/qs': 6.9.8 '@types/serve-static': 1.15.3 + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + dependencies: + '@types/body-parser': 1.19.3 + '@types/express-serve-static-core': 4.17.37 + '@types/qs': 6.9.8 + '@types/serve-static': 1.15.3 + /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: @@ -2323,6 +3289,10 @@ packages: '@types/node': 16.18.57 dev: true + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + dev: true + /@types/http-errors@2.0.2: resolution: {integrity: sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==} @@ -2354,6 +3324,13 @@ packages: jest-diff: 27.5.1 pretty-format: 27.5.1 + /@types/jest@29.5.8: + resolution: {integrity: sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + dev: true + /@types/json-schema@7.0.13: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} @@ -2365,11 +3342,16 @@ packages: dependencies: '@types/node': 16.18.57 - /@types/jsonwebtoken@9.0.3: - resolution: {integrity: sha512-b0jGiOgHtZ2jqdPgPnP6WLCXZk1T8p06A/vPGzUvxpFGgKMbjXJDjC5m52ErqBnIuWZFgGoIJyRdeG5AyreJjA==} + /@types/jsonwebtoken@9.0.5: + resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==} dependencies: - '@types/node': 16.18.57 - dev: false + '@types/node': 20.9.0 + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 20.9.0 + dev: true /@types/mime@1.3.3: resolution: {integrity: sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==} @@ -2391,6 +3373,11 @@ packages: /@types/node@16.18.57: resolution: {integrity: sha512-piPoDozdPaX1hNWFJQzzgWqE40gh986VvVx/QO9RU4qYRE55ld7iepDVgZ3ccGUw0R4wge0Oy1dd+3xOQNkkUQ==} + /@types/node@20.9.0: + resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} + dependencies: + undici-types: 5.26.5 + /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} @@ -2404,6 +3391,12 @@ packages: /@types/range-parser@1.2.5: resolution: {integrity: sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==} + /@types/responselike@1.0.3: + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + dependencies: + '@types/node': 20.9.0 + dev: true + /@types/semver@7.5.3: resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} dev: true @@ -2412,14 +3405,14 @@ packages: resolution: {integrity: sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==} dependencies: '@types/mime': 1.3.3 - '@types/node': 16.18.57 + '@types/node': 20.9.0 /@types/serve-static@1.15.3: resolution: {integrity: sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==} dependencies: '@types/http-errors': 2.0.2 '@types/mime': 3.0.2 - '@types/node': 16.18.57 + '@types/node': 20.9.0 /@types/shelljs@0.8.13: resolution: {integrity: sha512-++uMLOQSLlse1kCfEOwhgmHuaABZwinkylmUKCpvcEGZUov3TtM+gJZloSkW/W+9pEAEg/VBOwiSR05oqJsa5A==} @@ -2440,20 +3433,25 @@ packages: resolution: {integrity: sha512-McM1mlc7PBZpCaw0fw/36uFqo0YeA6m8JqoyE4OfqXsZCIg0hPP2xdE6FM7r6fdprDZHlJwDpydUj1R++93hCA==} dependencies: '@types/cookiejar': 2.1.2 - '@types/node': 16.18.57 + '@types/node': 20.9.0 /@types/supertest@2.0.14: resolution: {integrity: sha512-Q900DeeHNFF3ZYYepf/EyJfZDA2JrnWLaSQ0YNV7+2GTo8IlJzauEnDGhya+hauncpBYTYGpVHwGdssJeAQ7eA==} dependencies: '@types/superagent': 4.1.19 + /@types/supertest@2.0.16: + resolution: {integrity: sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==} + dependencies: + '@types/superagent': 4.1.19 + dev: true + /@types/triple-beam@1.3.3: resolution: {integrity: sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g==} dev: false /@types/validator@13.11.2: resolution: {integrity: sha512-nIKVVQKT6kGKysnNt+xLobr+pFJNssJRi2s034wgWeFBUx01fI8BeHTW2TcRp7VcFu9QCYG8IlChTuovcm0oKQ==} - dev: false /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} @@ -2471,6 +3469,12 @@ packages: '@types/yargs-parser': 21.0.1 dev: true + /@types/yargs@17.0.31: + resolution: {integrity: sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==} + dependencies: + '@types/yargs-parser': 21.0.1 + dev: true + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.50.0)(typescript@4.9.5): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2499,6 +3503,35 @@ packages: - 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} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/type-utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 + debug: 4.3.4 + eslint: 8.53.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@5.62.0(eslint@8.50.0)(typescript@4.9.5): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2519,6 +3552,27 @@ packages: - 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} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 + debug: 4.3.4 + eslint: 8.53.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/scope-manager@5.62.0: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2527,6 +3581,14 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true + /@typescript-eslint/scope-manager@6.11.0: + resolution: {integrity: sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 + dev: true + /@typescript-eslint/type-utils@5.62.0(eslint@8.50.0)(typescript@4.9.5): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2547,11 +3609,36 @@ packages: - 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} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.53.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/types@5.62.0: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/types@6.11.0: + resolution: {integrity: sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2573,6 +3660,48 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.11.0(typescript@5.2.2): + resolution: {integrity: sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.62.0(eslint@8.50.0)(typescript@4.9.5): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2593,6 +3722,45 @@ packages: - 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} + 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@5.2.2) + eslint: 8.53.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^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': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + eslint: 8.53.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys@5.62.0: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2601,6 +3769,18 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@typescript-eslint/visitor-keys@6.11.0: + resolution: {integrity: sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.11.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /@webassemblyjs/ast@1.11.1: resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: @@ -2898,6 +4078,17 @@ packages: indent-string: 4.0.0 dev: false + /ajv-formats@2.1.1(ajv@8.12.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.12.0 + dev: true + /ajv-formats@2.1.1(ajv@8.9.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -2923,6 +4114,15 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + /ajv@8.9.0: resolution: {integrity: sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==} dependencies: @@ -2931,10 +4131,21 @@ packages: require-from-string: 2.0.2 uri-js: 4.4.1 + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: false + /ansi-colors@4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} engines: {node: '>=6'} + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -2945,6 +4156,11 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -2961,6 +4177,11 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} requiresBuild: true @@ -2987,6 +4208,10 @@ packages: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} dev: false + /arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: true + /are-we-there-yet@3.0.1: resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -3007,7 +4232,6 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -3029,6 +4253,10 @@ packages: is-string: 1.0.7 dev: true + /array-timsort@1.0.3: + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + dev: true + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -3137,6 +4365,16 @@ packages: transitivePeerDependencies: - debug + /axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + dependencies: + follow-redirects: 1.15.3 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + /babel-jest@27.5.1(@babel/core@7.23.0): resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3148,7 +4386,25 @@ packages: '@jest/types': 27.5.1 '@types/babel__core': 7.20.2 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.23.0) + babel-preset-jest: 27.5.1(@babel/core@7.23.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-jest@29.7.0(@babel/core@7.23.0): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.23.0 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.2 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.23.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -3179,6 +4435,16 @@ packages: '@types/babel__traverse': 7.20.2 dev: true + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + '@types/babel__core': 7.20.2 + '@types/babel__traverse': 7.20.2 + dev: true + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.0): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -3210,6 +4476,17 @@ packages: babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.0) dev: true + /babel-preset-jest@29.6.3(@babel/core@7.23.0): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.0 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.0) + dev: true + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -3225,10 +4502,40 @@ packages: dev: false optional: true + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: true + /bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} dev: false + /bin-check@4.1.0: + resolution: {integrity: sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==} + engines: {node: '>=4'} + dependencies: + execa: 0.7.0 + executable: 4.1.1 + dev: true + + /bin-version-check@5.1.0: + resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==} + engines: {node: '>=12'} + dependencies: + bin-version: 6.0.0 + semver: 7.5.4 + semver-truncate: 3.0.0 + dev: true + + /bin-version@6.0.0: + resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + find-versions: 5.1.0 + dev: true + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -3313,8 +4620,6 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: false - optional: true /borc@3.0.0: resolution: {integrity: sha512-ec4JmVC46kE0+layfnwM3l15O70MlFiEbmQHY/vpqIKiUtPVntv4BY4NVnz3N4vb21edV3mY97XVckFvYHWF9g==} @@ -3330,6 +4635,27 @@ packages: readable-stream: 3.6.2 dev: false + /boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + dev: false + + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.51 + dev: true + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -3408,6 +4734,13 @@ packages: ieee754: 1.2.1 dev: false + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true + /busboy@0.2.14: resolution: {integrity: sha512-InWFDomvlkEj+xWLBfU3AvnbVYqeTWmQopiW0tWWEy5yehYm2YkGEc59sUmw/4ty5Zj/b0WHGs1LgecuBSBGrg==} engines: {node: '>=0.8.0'} @@ -3464,6 +4797,24 @@ packages: dev: false optional: true + /cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + dev: true + + /cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.3 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + dev: true + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -3482,7 +4833,6 @@ packages: /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - dev: true /caniuse-lite@1.0.30001546: resolution: {integrity: sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==} @@ -3522,6 +4872,11 @@ packages: engines: {node: '>=12'} dev: false + /check-disk-space@3.4.0: + resolution: {integrity: sha512-drVkSqfwA+TvuEhFipiR1OC9boEGZL5RrWvVsOthdcvQNXyCCuKkEiTOTXZ7qxSf/GLwq4GvzfrQD/Wz325hgw==} + engines: {node: '>=16'} + dev: false + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -3585,11 +4940,23 @@ packages: libphonenumber-js: 1.10.47 validator: 13.11.0 + /class-validator@0.14.0: + resolution: {integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==} + dependencies: + '@types/validator': 13.11.2 + libphonenumber-js: 1.10.47 + validator: 13.11.0 + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} dev: false + /cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + dev: false + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -3608,6 +4975,15 @@ packages: optionalDependencies: '@colors/colors': 1.5.0 + /cli-table3@0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + engines: {node: 10.* || >= 12.*} + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + dev: true + /cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} @@ -3627,7 +5003,12 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: false + + /clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + dependencies: + mimic-response: 1.0.1 + dev: true /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} @@ -3708,6 +5089,22 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + + /comment-json@4.2.3: + resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} + engines: {node: '>= 6'} + dependencies: + array-timsort: 1.0.3 + core-util-is: 1.0.3 + esprima: 4.0.1 + has-own-prop: 2.0.0 + repeat-string: 1.6.1 + dev: true + /component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} dev: true @@ -3811,6 +5208,41 @@ packages: path-type: 4.0.0 yaml: 1.10.2 + /cosmiconfig@8.3.6(typescript@5.2.2): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.2.2 + dev: true + + /create-jest@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -3821,6 +5253,14 @@ packages: moment-timezone: 0.5.43 dev: false + /cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -3897,10 +5337,26 @@ packages: engines: {node: '>=0.10'} dev: false + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: true + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + /deep-equal@1.0.1: resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} requiresBuild: true @@ -3915,11 +5371,34 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + dev: true + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: true + /define-data-property@1.1.0: resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} engines: {node: '>= 0.4'} @@ -3928,6 +5407,11 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.0 + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -3982,6 +5466,11 @@ packages: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -4025,6 +5514,20 @@ packages: minimist: 1.2.8 dev: true + /dotenv-cli@7.3.0: + resolution: {integrity: sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw==} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + dotenv: 16.3.1 + dotenv-expand: 10.0.0 + minimist: 1.2.8 + dev: true + + /dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + /dotenv-expand@5.1.0: resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} @@ -4033,11 +5536,19 @@ packages: engines: {node: '>=12'} dev: false + /dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} + /dotenv@8.6.0: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} dev: true + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + /ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: @@ -4098,6 +5609,11 @@ packages: /electron-to-chromium@1.4.543: resolution: {integrity: sha512-t2ZP4AcGE0iKCCQCBx/K2426crYdxD3YU6l0uK2EO3FZH0pbC4pFz/sZm2ruZsND6hQBTcDWWlo/MLpiOdif5g==} + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + /emittery@0.8.1: resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} engines: {node: '>=10'} @@ -4106,6 +5622,10 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + /enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} dev: false @@ -4256,6 +5776,11 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: true + /escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} @@ -4307,6 +5832,15 @@ packages: eslint: 8.50.0 dev: true + /eslint-config-prettier@9.0.0(eslint@8.53.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.53.0 + dev: true + /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: @@ -4381,6 +5915,28 @@ packages: - supports-color dev: true + /eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.11.0)(eslint@8.53.0)(jest@29.7.0)(typescript@5.2.2): + resolution: {integrity: sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 + eslint: ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) + eslint: 8.53.0 + jest: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.50.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} @@ -4398,6 +5954,27 @@ packages: 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} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.53.0 + eslint-config-prettier: 9.0.0(eslint@8.53.0) + prettier: 3.1.0 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 + dev: true + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -4464,6 +6041,53 @@ packages: - supports-color dev: true + /eslint@8.53.0: + resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@eslint-community/regexpp': 4.9.1 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.53.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4518,6 +6142,19 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + /execa@0.7.0: + resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} + engines: {node: '>=4'} + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: true + /execa@4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} @@ -4547,6 +6184,28 @@ packages: strip-final-newline: 2.0.0 dev: true + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + + /executable@4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + dependencies: + pify: 2.3.0 + dev: true + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -4562,6 +6221,17 @@ packages: jest-message-util: 27.5.1 dev: true + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + /express-session@1.17.3: resolution: {integrity: sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==} engines: {node: '>= 0.8.0'} @@ -4654,6 +6324,21 @@ packages: transitivePeerDependencies: - supports-color + /ext-list@2.2.2: + resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} + engines: {node: '>=0.10.0'} + dependencies: + mime-db: 1.52.0 + dev: true + + /ext-name@5.0.0: + resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} + engines: {node: '>=4'} + dependencies: + ext-list: 2.2.2 + sort-keys-length: 1.0.1 + dev: true + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -4744,10 +6429,33 @@ packages: flat-cache: 3.1.0 dev: true + /file-type@17.1.6: + resolution: {integrity: sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 7.0.0 + token-types: 5.0.1 + dev: true + /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} dev: false + /filename-reserved-regex@3.0.0: + resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /filenamify@5.1.1: + resolution: {integrity: sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==} + engines: {node: '>=12.20'} + dependencies: + filename-reserved-regex: 3.0.0 + strip-outer: 2.0.0 + trim-repeated: 2.0.0 + dev: true + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -4789,6 +6497,13 @@ packages: path-exists: 4.0.0 dev: true + /find-versions@5.1.0: + resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==} + engines: {node: '>=12'} + dependencies: + semver-regex: 4.0.5 + dev: true + /flat-cache@3.1.0: resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} engines: {node: '>=12.0.0'} @@ -4826,6 +6541,14 @@ packages: dependencies: is-callable: 1.2.7 + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + /fork-ts-checker-webpack-plugin@7.2.11(typescript@4.7.4)(webpack@5.73.0): resolution: {integrity: sha512-2e5+NyTUTE1Xq4fWo7KFEQblCaIvvINQwUX3jRmEGlgCTc1Ecqw/975EfQrQ0GEraxJTnp8KB9d/c8hlCHUMJA==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} @@ -4851,6 +6574,29 @@ packages: typescript: 4.7.4 webpack: 5.73.0 + /fork-ts-checker-webpack-plugin@9.0.2(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + dependencies: + '@babel/code-frame': 7.22.13 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 8.3.6(typescript@5.2.2) + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.5.4 + tapable: 2.2.1 + typescript: 5.2.2 + webpack: 5.89.0(@swc/core@1.3.96) + dev: true + /form-data@3.0.1: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} engines: {node: '>= 6'} @@ -4970,6 +6716,11 @@ packages: engines: {node: '>=8.0.0'} dev: true + /get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + dev: true + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -5004,6 +6755,18 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 5.0.0 + path-scurry: 1.10.1 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -5025,6 +6788,16 @@ packages: once: 1.4.0 dev: true + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.10.1 + dev: true + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -5060,6 +6833,23 @@ packages: dependencies: get-intrinsic: 1.2.1 + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + dev: true + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -5078,6 +6868,11 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + /has-own-prop@2.0.0: + resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} + engines: {node: '>=8'} + dev: true + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: @@ -5114,6 +6909,11 @@ packages: resolution: {integrity: sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==} dev: false + /hpagent@1.2.0: + resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==} + engines: {node: '>=14'} + dev: false + /html-encoding-sniffer@2.0.1: resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} engines: {node: '>=10'} @@ -5137,7 +6937,6 @@ packages: /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: false /http-errors@1.8.1: resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} @@ -5180,6 +6979,14 @@ packages: transitivePeerDependencies: - supports-color + /http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: true + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -5198,6 +7005,11 @@ packages: engines: {node: '>=10.17.0'} dev: true + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} requiresBuild: true @@ -5209,6 +7021,13 @@ packages: resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} engines: {node: '>=12'} hasBin: true + dev: true + + /husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + dev: true /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} @@ -5339,6 +7158,48 @@ packages: strip-ansi: 6.0.1 through: 2.3.8 + /inquirer@8.2.4: + resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + dev: true + /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} @@ -5406,6 +7267,18 @@ packages: dependencies: has-tostringtag: 1.0.0 + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -5441,6 +7314,14 @@ packages: dependencies: is-extglob: 2.1.1 + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + /is-integer@1.0.7: resolution: {integrity: sha512-RPQc/s9yBHSvpi+hs9dYiJ2cuFeU6x3TyyIp8O2H6SKEltIvJOzRj9ToyvcStDvPR/pS4rxgr1oBFajQjZ2Szg==} requiresBuild: true @@ -5491,6 +7372,11 @@ packages: engines: {node: '>=8'} dev: true + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true @@ -5507,10 +7393,20 @@ packages: dependencies: call-bind: 1.0.2 + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: true + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -5542,6 +7438,13 @@ packages: dependencies: call-bind: 1.0.2 + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} requiresBuild: true @@ -5580,6 +7483,19 @@ packages: - supports-color dev: true + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.23.0 + '@babel/parser': 7.23.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} @@ -5612,6 +7528,15 @@ packages: resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} engines: {node: '>=6'} + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + /jest-changed-files@27.5.1: resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5621,6 +7546,15 @@ packages: throat: 6.0.2 dev: true + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + /jest-circus@27.5.1: resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5648,6 +7582,35 @@ packages: - supports-color dev: true + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.0.4 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + /jest-cli@27.5.1(ts-node@10.9.1): resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5678,6 +7641,34 @@ packages: - utf-8-validate dev: true + /jest-cli@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /jest-config@27.5.1(ts-node@10.9.1): resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5719,6 +7710,47 @@ packages: - utf-8-validate dev: true + /jest-config@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.0 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + babel-jest: 29.7.0(@babel/core@7.23.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@swc/core@1.3.96)(@types/node@20.9.0)(typescript@5.2.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + /jest-diff@27.5.1: resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5728,6 +7760,16 @@ packages: jest-get-type: 27.5.1 pretty-format: 27.5.1 + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + /jest-docblock@27.5.1: resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5735,6 +7777,13 @@ packages: detect-newline: 3.1.0 dev: true + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + /jest-each@27.5.1: resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5746,6 +7795,17 @@ packages: pretty-format: 27.5.1 dev: true + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + dev: true + /jest-environment-jsdom@27.5.1: resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5776,10 +7836,27 @@ packages: jest-util: 27.5.1 dev: true + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + /jest-get-type@27.5.1: resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /jest-haste-map@27.5.1: resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5800,6 +7877,25 @@ packages: fsevents: 2.3.3 dev: true + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.7 + '@types/node': 20.9.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /jest-jasmine2@27.5.1: resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5833,6 +7929,14 @@ packages: pretty-format: 27.5.1 dev: true + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + /jest-matcher-utils@27.5.1: resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5843,6 +7947,16 @@ packages: pretty-format: 27.5.1 dev: true + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + /jest-message-util@27.5.1: resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5858,6 +7972,21 @@ packages: stack-utils: 2.0.6 dev: true + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.22.13 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + /jest-mock@27.5.1: resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5866,7 +7995,28 @@ packages: '@types/node': 16.18.57 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + jest-util: 29.7.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 27.5.1 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -5875,7 +8025,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 27.5.1 + jest-resolve: 29.7.0 dev: true /jest-regex-util@27.5.1: @@ -5883,6 +8033,11 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /jest-resolve-dependencies@27.5.1: resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5894,6 +8049,16 @@ packages: - supports-color dev: true + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + /jest-resolve@27.5.1: resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5910,6 +8075,21 @@ packages: slash: 3.0.0 dev: true + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.6 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + /jest-runner@27.5.1: resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5942,6 +8122,35 @@ packages: - utf-8-validate dev: true + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + /jest-runtime@27.5.1: resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5972,6 +8181,36 @@ packages: - supports-color dev: true + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /jest-serializer@27.5.1: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -6010,6 +8249,34 @@ packages: - supports-color dev: true + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.0 + '@babel/generator': 7.23.0 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.0) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.0) + '@babel/types': 7.23.0 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.0) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /jest-util@27.5.1: resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -6022,6 +8289,18 @@ packages: picomatch: 2.3.1 dev: true + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + /jest-validate@27.5.1: resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -6034,6 +8313,18 @@ packages: pretty-format: 27.5.1 dev: true + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: true + /jest-watcher@27.5.1: resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -6047,14 +8338,38 @@ packages: string-length: 4.0.2 dev: true + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + dev: true + /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 16.18.57 + '@types/node': 20.9.0 merge-stream: 2.0.0 supports-color: 8.1.1 + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 20.9.0 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + /jest@27.5.1(ts-node@10.9.1): resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -6076,6 +8391,27 @@ packages: - utf-8-validate dev: true + /jest@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /joi@17.11.0: resolution: {integrity: sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==} dependencies: @@ -6114,7 +8450,6 @@ packages: hasBin: true dependencies: argparse: 2.0.1 - dev: true /jsdom@16.7.0: resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} @@ -6230,6 +8565,22 @@ packages: semver: 5.7.2 dev: false + /jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + 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: 7.5.4 + dev: false + /jwa@1.4.1: resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} dependencies: @@ -6242,8 +8593,8 @@ packages: resolution: {integrity: sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==} engines: {node: '>=14'} dependencies: - '@types/express': 4.17.18 - '@types/jsonwebtoken': 9.0.3 + '@types/express': 4.17.21 + '@types/jsonwebtoken': 9.0.5 debug: 4.3.4 jose: 4.15.2 limiter: 1.1.5 @@ -6511,6 +8862,18 @@ packages: triple-beam: 1.4.1 dev: false + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: true + + /lru-cache@10.0.2: + resolution: {integrity: sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==} + engines: {node: 14 || >=16.14} + dependencies: + semver: 7.5.4 + dev: true + /lru-cache@4.0.2: resolution: {integrity: sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw==} dependencies: @@ -6524,8 +8887,6 @@ packages: dependencies: pseudomap: 1.0.2 yallist: 2.1.2 - dev: false - optional: true /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -6567,6 +8928,13 @@ packages: dependencies: sourcemap-codec: 1.4.8 + /magic-string@0.30.1: + resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -6700,6 +9068,21 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: true + + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -6712,6 +9095,20 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist@1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} @@ -6764,10 +9161,14 @@ packages: yallist: 4.0.0 dev: false + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true + /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} - dev: false /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} @@ -6900,6 +9301,12 @@ packages: dependencies: nkeys.js: 1.0.5 + /nats@2.18.0: + resolution: {integrity: sha512-zZF004ejzf67Za0Tva+xphxoxBMNc5IMLqbZ7Ho0j9TMuisjpo+qCd1EktXRCLNxmrZ8O6Tbm1dBsZYNF6yR1A==} + engines: {node: '>= 14.0.0'} + dependencies: + nkeys.js: 1.0.5 + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true @@ -6927,6 +9334,10 @@ packages: dependencies: tweetnacl: 1.0.3 + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + dev: true + /node-emoji@1.11.0: resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} dependencies: @@ -6998,12 +9409,31 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true + + /npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + dependencies: + path-key: 2.0.1 + dev: true + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + /npmlog@6.0.2: resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -7136,12 +9566,29 @@ packages: dependencies: mimic-fn: 2.1.0 + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + /only@0.0.2: resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} requiresBuild: true dev: false optional: true + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + /openapi3-ts@2.0.2: resolution: {integrity: sha512-TxhYBMoqx9frXyOgnRHufjQfPXomTIHYKhSKJ6jHfj13kS8OEIhvmE8CTuQyKtjjWttAjX5DPxM1vmalEpo8Qw==} dependencies: @@ -7197,6 +9644,13 @@ packages: dev: false optional: true + /os-filter-obj@2.0.0: + resolution: {integrity: sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==} + engines: {node: '>=4'} + dependencies: + arch: 2.2.0 + dev: true + /os-name@4.0.1: resolution: {integrity: sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==} engines: {node: '>=10'} @@ -7208,6 +9662,16 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + /p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + dev: true + + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: true + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -7284,13 +9748,31 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: true + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.0.2 + minipass: 5.0.0 + dev: true + /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} @@ -7313,6 +9795,11 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + /peek-readable@5.0.0: + resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} + engines: {node: '>=14.16'} + dev: true + /pg-cloudflare@1.1.1: resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} requiresBuild: true @@ -7384,6 +9871,11 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + /pino-std-serializers@3.2.0: resolution: {integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==} requiresBuild: true @@ -7461,6 +9953,12 @@ packages: hasBin: true dev: true + /prettier@3.1.0: + resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} + engines: {node: '>=14'} + hasBin: true + dev: true + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -7469,6 +9967,15 @@ packages: ansi-styles: 5.2.0 react-is: 17.0.2 + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + /prisma@3.15.2: resolution: {integrity: sha512-nMNSMZvtwrvoEQ/mui8L/aiCLZRCj5t6L3yujKpcDhIPk7garp8tL4nMx2+oYsN0FWBacevJhazfXAbV1kfBzA==} engines: {node: '>=12.6'} @@ -7477,6 +9984,14 @@ packages: dependencies: '@prisma/engines': 3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e + /prisma@5.6.0: + resolution: {integrity: sha512-EEaccku4ZGshdr2cthYHhf7iyvCcXqwJDvnoQRAJg5ge2Tzpv0e2BaMCp+CbbDUwoVTzwgOap9Zp+d4jFa2O9A==} + engines: {node: '>=16.13'} + hasBin: true + requiresBuild: true + dependencies: + '@prisma/engines': 5.6.0 + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -7524,9 +10039,12 @@ packages: forwarded: 0.2.0 ipaddr.js: 1.9.1 + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: false /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} @@ -7542,6 +10060,10 @@ packages: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + dev: true + /qs@6.10.3: resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} engines: {node: '>=0.6'} @@ -7584,6 +10106,11 @@ packages: dev: false optional: true + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true + /random-bytes@1.0.0: resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} engines: {node: '>= 0.8'} @@ -7616,12 +10143,14 @@ packages: http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - dev: false - optional: true /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + /readable-stream@1.1.14: resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} requiresBuild: true @@ -7652,6 +10181,13 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 + /readable-web-to-node-stream@3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} + dependencies: + readable-stream: 3.6.2 + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -7681,6 +10217,11 @@ packages: dev: false optional: true + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: true + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -7706,6 +10247,10 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -7727,6 +10272,11 @@ packages: engines: {node: '>=10'} dev: true + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + /resolve@1.22.6: resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} hasBin: true @@ -7735,6 +10285,12 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + dependencies: + lowercase-keys: 2.0.0 + dev: true + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -7767,6 +10323,22 @@ packages: dependencies: glob: 7.2.3 + /rimraf@4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 9.3.5 + dev: true + + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.10 + dev: true + /routing-controllers-openapi@3.1.0(routing-controllers@0.9.0): resolution: {integrity: sha512-FnTYnbNfsCN+vTDAc7rhCm5u0nLAH+p+UpbJXZT10cgo2t7xiZ23BrrzsR5nnqMGwe/iwsDUEEr8lxs6KarscQ==} peerDependencies: @@ -7807,6 +10379,13 @@ packages: - supports-color dev: false + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -7877,6 +10456,18 @@ packages: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} dev: false + /semver-regex@4.0.5: + resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} + engines: {node: '>=12'} + dev: true + + /semver-truncate@3.0.0: + resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==} + engines: {node: '>=12'} + dependencies: + semver: 7.5.4 + dev: true + /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -7950,12 +10541,24 @@ packages: dev: false optional: true + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: true + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: true + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -7987,6 +10590,11 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + /simple-oauth2@5.0.0: resolution: {integrity: sha512-8291lo/z5ZdpmiOFzOs1kF3cxn22bMj5FFH+DNUppLJrpoIlM1QnFiE7KpshHu3J3i21TVcx4yW+gXYjdCKDLQ==} dependencies: @@ -8046,6 +10654,27 @@ packages: dev: false optional: true + /sort-keys-length@1.0.1: + resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} + engines: {node: '>=0.10.0'} + dependencies: + sort-keys: 1.1.2 + dev: true + + /sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -8178,6 +10807,15 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + /string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} @@ -8222,6 +10860,13 @@ packages: dependencies: ansi-regex: 5.0.1 + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -8231,15 +10876,38 @@ packages: engines: {node: '>=8'} dev: true + /strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + dev: true + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true + /strip-outer@2.0.0: + resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /strtok3@7.0.0: + resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} + engines: {node: '>=14.16'} + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 5.0.0 + dev: true + /superagent@8.1.2: resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} engines: {node: '>=6.4.0 <13 || >=14'} @@ -8301,6 +10969,10 @@ packages: /swagger-ui-dist@5.9.0: resolution: {integrity: sha512-NUHSYoe5XRTk/Are8jPJ6phzBh3l9l33nEyXosM17QInoV95/jng8+PuSGtbD407QoPf93MH3Bkh773OgesJpA==} + /swagger-ui-dist@5.9.1: + resolution: {integrity: sha512-5zAx+hUwJb9T3EAntc7TqYkV716CMqG6sZpNlAAMOMWkNXRYxGkN8ADIvD55dQZ10LxN90ZM/TQmN7y1gpICnw==} + dev: false + /swagger-ui-express@4.6.3(express@4.18.2): resolution: {integrity: sha512-CDje4PndhTD2HkgyKH3pab+LKspDeB/NhPN2OF1j+piYIamQqBYwAXWESOT1Yju2xFg51bRW9sUng2WxDjzArw==} engines: {node: '>= v0.10.32'} @@ -8310,6 +10982,16 @@ packages: express: 4.18.2 swagger-ui-dist: 5.9.0 + /swagger-ui-express@5.0.0(express@4.18.2): + resolution: {integrity: sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==} + engines: {node: '>= v0.10.32'} + peerDependencies: + express: '>=4.0.0 || >=5.0.0-beta' + dependencies: + express: 4.18.2 + swagger-ui-dist: 5.9.0 + dev: false + /symbol-observable@4.0.0: resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} engines: {node: '>=0.10'} @@ -8318,6 +11000,14 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 + dev: true + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -8346,6 +11036,31 @@ packages: supports-hyperlinks: 2.3.0 dev: true + /terser-webpack-plugin@5.3.9(@swc/core@1.3.96)(webpack@5.89.0): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + '@swc/core': 1.3.96 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.21.0 + webpack: 5.89.0(@swc/core@1.3.96) + dev: true + /terser-webpack-plugin@5.3.9(webpack@5.73.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} @@ -8369,7 +11084,7 @@ packages: terser: 5.21.0 webpack: 5.73.0 - /terser-webpack-plugin@5.3.9(webpack@5.88.2): + /terser-webpack-plugin@5.3.9(webpack@5.89.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -8390,7 +11105,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.21.0 - webpack: 5.88.2 + webpack: 5.89.0 dev: true /terser@5.21.0: @@ -8427,6 +11142,11 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -8460,6 +11180,14 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + /token-types@5.0.1: + resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} + engines: {node: '>=14.16'} + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + dev: true + /tough-cookie@4.1.3: resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} engines: {node: '>=6'} @@ -8492,11 +11220,27 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + /trim-repeated@2.0.0: + resolution: {integrity: sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==} + engines: {node: '>=12'} + dependencies: + escape-string-regexp: 5.0.0 + dev: true + /triple-beam@1.4.1: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} dev: false + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + /ts-jest@27.1.5(@babel/core@7.23.0)(@types/jest@27.0.2)(jest@27.5.1)(typescript@4.9.5): resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -8532,7 +11276,7 @@ packages: yargs-parser: 20.2.9 dev: true - /ts-loader@9.4.4(typescript@4.9.5)(webpack@5.88.2): + /ts-loader@9.4.4(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==} engines: {node: '>=12.0.0'} peerDependencies: @@ -8544,7 +11288,39 @@ packages: micromatch: 4.0.5 semver: 7.5.4 typescript: 4.9.5 - webpack: 5.88.2 + webpack: 5.89.0 + dev: true + + /ts-node@10.9.1(@swc/core@1.3.96)(@types/node@20.9.0)(typescript@5.2.2): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@swc/core': 1.3.96 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.9.0 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 dev: true /ts-node@10.9.1(@types/node@16.18.57)(typescript@4.9.5): @@ -8585,6 +11361,15 @@ packages: enhanced-resolve: 5.15.0 tsconfig-paths: 3.14.2 + /tsconfig-paths-webpack-plugin@4.1.0: + resolution: {integrity: sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==} + engines: {node: '>=10.13.0'} + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.15.0 + tsconfig-paths: 4.2.0 + dev: true + /tsconfig-paths@3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: @@ -8601,6 +11386,15 @@ packages: minimist: 1.2.8 strip-bom: 3.0.0 + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -8634,6 +11428,16 @@ packages: typescript: 4.9.5 dev: true + /tsutils@3.21.0(typescript@5.2.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.2.2 + dev: true + /tsyringe@4.8.0: resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} engines: {node: '>= 6.0.0'} @@ -8659,7 +11463,6 @@ packages: /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - dev: true /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -8744,6 +11547,12 @@ packages: engines: {node: '>=4.2.0'} hasBin: true + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /uid-safe@2.1.5: resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} engines: {node: '>= 0.8'} @@ -8751,6 +11560,12 @@ packages: random-bytes: 1.0.0 dev: false + /uid@2.0.2: + resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} + engines: {node: '>=8'} + dependencies: + '@lukeed/csprng': 1.1.0 + /uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} dependencies: @@ -8765,6 +11580,16 @@ packages: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + /undici@5.27.2: + resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.0 + dev: false + /unicode-byte-truncate@1.0.0: resolution: {integrity: sha512-GQgHk6DodEoKddKQdjnv7xKS9G09XCfHWX0R4RKht+EbUMSiVEmtWHGFO8HUm+6NvWik3E2/DG4MxTitOLL64A==} requiresBuild: true @@ -8805,6 +11630,11 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + /update-browserslist-db@1.0.13(browserslist@4.22.1): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -8844,6 +11674,11 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + /uuid@9.0.0: + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + hasBin: true + dev: false + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true @@ -8857,6 +11692,15 @@ packages: source-map: 0.7.4 dev: true + /v8-to-istanbul@9.1.3: + resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 2.0.0 + dev: true + /validator@13.11.0: resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} engines: {node: '>= 0.10'} @@ -8975,8 +11819,48 @@ packages: - esbuild - uglify-js - /webpack@5.88.2: - resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} + /webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.5 + '@types/estree': 1.0.2 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.22.1 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.3.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.9(webpack@5.89.0) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /webpack@5.89.0(@swc/core@1.3.96): + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -9006,7 +11890,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(@swc/core@1.3.96)(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -9069,6 +11953,13 @@ packages: gopd: 1.0.1 has-tostringtag: 1.0.0 + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -9082,6 +11973,13 @@ packages: string-width: 4.2.3 dev: false + /widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + dependencies: + string-width: 4.2.3 + dev: false + /windows-release@4.0.0: resolution: {integrity: sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==} engines: {node: '>=10'} @@ -9099,7 +11997,26 @@ packages: lodash.omit: 4.5.0 promise: 8.3.0 retry: 0.13.1 - winston: 3.10.0 + winston: 3.11.0 + winston-transport: 4.5.0 + optionalDependencies: + elastic-apm-node: 3.50.0 + transitivePeerDependencies: + - supports-color + dev: false + + /winston-elasticsearch@0.17.4: + resolution: {integrity: sha512-smPDzR2gtAAQ2LibjoJF5aKOeH2sj8KPK7KKVsAncQRUFWjKpih5B6aAelCMc8svBKeCX+QQjE7DXG8B0VgN2A==} + engines: {node: '>= 8.0.0'} + dependencies: + '@elastic/elasticsearch': 8.10.0 + dayjs: 1.11.10 + debug: 4.3.4 + lodash.defaults: 4.2.0 + lodash.omit: 4.5.0 + promise: 8.3.0 + retry: 0.13.1 + winston: 3.11.0 winston-transport: 4.5.0 optionalDependencies: elastic-apm-node: 3.50.0 @@ -9133,6 +12050,32 @@ packages: winston-transport: 4.5.0 dev: false + /winston@3.11.0: + resolution: {integrity: sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.4 + is-stream: 2.0.1 + logform: 2.5.1 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.4.3 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.5.0 + dev: false + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -9141,6 +12084,15 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -9153,6 +12105,14 @@ packages: typedarray-to-buffer: 3.1.5 dev: true + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + /ws@7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} @@ -9183,7 +12143,6 @@ packages: /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: false /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -9204,7 +12163,6 @@ packages: /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - dev: false /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} @@ -9230,7 +12188,6 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: false /ylru@1.3.2: resolution: {integrity: sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..7ab2dfa3544d7c3ff06a13e51b8871ab5f87a9d4 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + + "compilerOptions": { + "lib": ["esnext"], + "module": "nodenext", + "target": "esnext", + "moduleResolution": "nodenext", + + "strict": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "strictPropertyInitialization": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "noImplicitAny": true + }, + "exclude": ["node_modules"] +}