From 67a6c1f191a92b2481c6b3a12edaf4994b3c4f50 Mon Sep 17 00:00:00 2001 From: Konstantin Tsabolov <1006564+tsabolov@users.noreply.github.com> Date: Wed, 15 Nov 2023 00:43:10 +0100 Subject: [PATCH] chore: reorganize attestation-manager * Upgraded the dependencies to the latest versions * Switched output to ESM format * Switched NestJS and Jest to SWC to improve speed of building and testing * Refactored TSConfig to remove tsconfig-paths * Updated imports in all files to reflect the change in TSConfig * Changed the linting rules (removed AirBnB config) * Fixed Prettier installation (added ignore file) * Fixed typing errors (mainly usage of any's) * Fixed the non-working E2E test P.S. None of the mentioned doesn't make sense alone, therefore a huge commit :shrug: --- .gitignore | 3 +- apps/attestation-manager/.eslintrc.cjs | 42 + apps/attestation-manager/.eslintrc.js | 27 - apps/attestation-manager/.prettierignore | 17 + apps/attestation-manager/.prettierrc | 2 +- apps/attestation-manager/.swcrc | 20 + apps/attestation-manager/jest.config.js | 50 + apps/attestation-manager/nest-cli.json | 6 +- apps/attestation-manager/package.json | 150 +- apps/attestation-manager/src/app.module.ts | 21 +- .../src/client/nats.client.ts | 2 +- .../src/client/rest.client.ts | 2 +- .../src/client/tests/__mocks__/nats.client.ts | 2 +- .../src/client/tests/__mocks__/rest.client.ts | 2 +- .../src/client/tests/__mocks__/tsa.client.ts | 4 +- .../src/client/tests/rest.client.spec.ts | 4 +- .../src/client/tests/stubs/nats-response.ts | 4 +- .../src/client/tsa.client.ts | 8 +- .../src/common/date.utils.ts | 2 +- .../src/common/exception.handler.ts | 14 +- .../src/common/response.ts | 4 +- .../{ => src}/config/config.ts | 9 +- .../{ => src}/config/validation.ts | 2 +- .../credentialDef/controller/controller.ts | 37 +- .../src/credentialDef/module.ts | 18 +- .../repository/credentialDef.respository.ts | 2 +- .../src/credentialDef/services/service.ts | 22 +- .../credentialDef/tests/__mocks__/service.ts | 2 +- .../credentialDef/tests/controller.spec.ts | 15 +- .../src/credentialDef/tests/module.spec.ts | 20 +- .../src/credentialDef/tests/service.spec.ts | 27 +- .../credentialDef/tests/stubs/credDef.stub.ts | 4 +- .../src/health/health.controller.ts | 10 +- .../health/tests/health.controller.spec.ts | 5 +- .../issue-credential/controller/controller.ts | 151 +- .../entities/credentialType.entity.ts | 2 +- .../src/issue-credential/entities/entity.ts | 1 - .../src/issue-credential/module.ts | 24 +- .../repository/credential.repository.ts | 2 +- .../repository/credentialType.repository.ts | 2 +- .../src/issue-credential/services/service.ts | 37 +- .../tests/__mocks__/service.ts | 6 +- .../issue-credential/tests/controller.spec.ts | 61 +- .../src/issue-credential/tests/module.spec.ts | 24 +- .../issue-credential/tests/service.spec.ts | 44 +- .../tests/stubs/credential-dto.ts | 6 +- .../tests/stubs/credential-state-dto.ts | 6 +- .../tests/stubs/credential-type-dto.ts | 4 +- .../tests/stubs/offer-credential-dto.ts | 6 +- apps/attestation-manager/src/main.ts | 12 +- .../src/middleware/auth.middleware.ts | 59 +- .../src/prisma/prisma.module.ts | 2 +- .../src/prisma/prisma.service.ts | 2 +- .../prisma/tests/__mocks__/prisma.service.ts | 11 +- .../src/prisma/tests/prisma.service.spec.ts | 2 +- .../src/schemas/controller/controller.ts | 45 +- .../attestation-manager/src/schemas/module.ts | 16 +- .../schemas/repository/schema.respository.ts | 2 +- .../src/schemas/services/service.ts | 16 +- .../src/schemas/tests/__mocks__/service.ts | 2 +- .../src/schemas/tests/controller.spec.ts | 13 +- .../src/schemas/tests/module.spec.ts | 20 +- .../src/schemas/tests/service.spec.ts | 27 +- .../src/schemas/tests/stubs/schema-dto.ts | 2 +- .../tests/stubs/schema-from-agent-dto.ts | 2 +- .../src/tests/app.module.spec.ts | 9 +- .../src/userInfo/controller/controller.ts | 26 +- .../userInfo/entities/update-unserInfo.dto.ts | 2 +- .../src/userInfo/entities/userInfo.entity.ts | 4 +- .../src/userInfo/module.ts | 18 +- .../repository/userInfo.respository.ts | 4 +- .../src/userInfo/services/service.ts | 10 +- .../src/userInfo/tests/__mocks__/service.ts | 2 +- .../tests/stubs/user-info-dto.stub.ts | 12 +- .../src/utils/exceptionsFilter.ts | 9 +- apps/attestation-manager/src/utils/logger.ts | 28 +- .../src/utils/tests/logger.spec.ts | 4 +- apps/attestation-manager/test/app.e2e-spec.ts | 8 +- apps/attestation-manager/test/jest-e2e.json | 9 - apps/attestation-manager/test/jest.config.js | 9 + apps/attestation-manager/tsconfig.json | 46 +- pnpm-lock.yaml | 3351 ++++++++++++++++- tsconfig.json | 21 + 83 files changed, 3858 insertions(+), 882 deletions(-) create mode 100644 apps/attestation-manager/.eslintrc.cjs delete mode 100644 apps/attestation-manager/.eslintrc.js create mode 100644 apps/attestation-manager/.prettierignore create mode 100644 apps/attestation-manager/.swcrc create mode 100644 apps/attestation-manager/jest.config.js rename apps/attestation-manager/{ => src}/config/config.ts (67%) rename apps/attestation-manager/{ => src}/config/validation.ts (93%) delete mode 100644 apps/attestation-manager/test/jest-e2e.json create mode 100644 apps/attestation-manager/test/jest.config.js create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index fa86b29..03eee29 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ node_modules/ apps/*/node_modules /dist /apps/**/dist/ +*.tsbuildinfo # Logs /logs @@ -28,7 +29,7 @@ pnpm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* -logs/log.json +apps/**/logs/log.json # OS .DS_Store diff --git a/apps/attestation-manager/.eslintrc.cjs b/apps/attestation-manager/.eslintrc.cjs new file mode 100644 index 0000000..e0c3a4c --- /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 1d3be26..0000000 --- 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 0000000..487d869 --- /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 dcb7279..a20502b 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 0000000..f0831e4 --- /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 0000000..1b2ee91 --- /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 56167b3..0a947a5 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 76d1483..a3c8ddf 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": "yarn prisma:generate && yarn dbSchema && yarn start", - "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "lint": "eslint --fix", + "lint:all": "npm run lint -- .", + "format": "prettier --write", + "format:all": "npm run format -- .", "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" + "test:e2e": "jest --config ./test/jest.config.js" }, "dependencies": { - "@elastic/ecs-winston-format": "^1.3.1", - "@nestjs/axios": "0.0.5", - "@nestjs/common": "^8.0.0", - "@nestjs/config": "^1.1.6", - "@nestjs/core": "^8.0.0", - "@nestjs/mapped-types": "*", - "@nestjs/microservices": "^8.2.6", - "@nestjs/platform-express": "^8.0.0", - "@nestjs/swagger": "^5.2.0", - "@nestjs/terminus": "^8.0.4", - "@prisma/client": "^3.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 f117f19..d7551e8 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 e2189c8..c232a1b 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 a315741..edd52e1 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 2c172e1..1e1c7b9 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 3244e2f..d7e68ae 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 b2ceaf9..7368ee8 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 b7984fe..6a38cdc 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 9abad30..776bf54 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 541a695..b0476f3 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 f7276e5..a6d0cac 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 9495ebd..4064f23 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 0bbcc92..6fe63e5 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 bd70876..8919c21 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 323486b..728b26f 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 1b6f4ba..efb4adc 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 0ef0b3a..2d5834f 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 b096418..c1af9e3 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 392e571..5dd5622 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 09ff612..ad4a029 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 719d388..a24aed4 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 07f6c53..9b152df 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 acf2497..ab1ea92 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 8b50a31..47de079 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 3c581d1..e8deabc 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 1bc3d0e..1d7863a 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 1285cae..1939b26 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 59d79ff..f5734f1 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 72cdea6..8166611 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 cec3e78..31d05fe 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 3ba8644..7d8183a 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 3f6161d..8f9438a 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 1994ac4..9a73e13 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 74ec7e0..c843d44 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 a8ad32b..460fe18 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 100101b..5ba9aaf 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 efc83c9..51f36e3 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 3e995ed..6776e5d 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 22f6e41..945c1e9 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 cae4ae6..67a9a04 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 cb8b17a..0847f65 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 0a746e1..acc553d 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 aa8ea00..9532e93 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 a120dad..fe47082 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 7d885d9..187a829 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 bf72e7d..08077a3 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 8ed21eb..eb3f05f 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 b916991..066dd8d 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 ac79d4d..c292459 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 0596ee1..cb11b48 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 dec187a..c2b18d4 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 96d1010..2f05a08 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 73c73f9..35a629e 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 3cae9de..844ce26 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 4e23751..1e98621 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 f503d3f..a869a4f 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 2b4743f..450727e 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 a453e58..3bde7fe 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 9ba1fe4..25c381e 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 4bd5f1a..f19ab0e 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 021c8de..f4dd7d5 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 10e03e3..1c7287f 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 591b1fc..9bd974a 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 d87e1a6..4236473 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 f40e506..ee3bb21 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 a178765..4725dfc 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 388304b..711d55c 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 a486e32..89b3250 100644 --- a/apps/attestation-manager/src/utils/logger.ts +++ b/apps/attestation-manager/src/utils/logger.ts @@ -1,27 +1,9 @@ -import { existsSync, mkdirSync } from 'fs'; -import { Logger } from 'winston'; -import ecsFormat from '@elastic/ecs-winston-format'; -// import { ElasticsearchTransport } from 'winston-elasticsearch'; -import winston = require('winston'); -import { LoggerConfig } from '@common/constants'; +import { ecsFormat } from '@elastic/ecs-winston-format'; +import { mkdirSync } from 'fs'; +import winston, { Logger } from 'winston'; +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 a775b98..8428ba0 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 5052f6b..9bb5cc3 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 e9d912f..0000000 --- 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 0000000..c2b3ddf --- /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 3bd0cdc..a5a4ed0 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 541db20..6e8912b 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 0000000..7ab2dfa --- /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"] +} -- GitLab