diff --git a/.gitignore b/.gitignore index 62521a9058163984cb806a7ac031befc59028961..03eee29b5246f495cff599b3b8756dffad6b00a6 100644 --- a/.gitignore +++ b/.gitignore @@ -29,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/connection-manager/.eslintrc.cjs b/apps/connection-manager/.eslintrc.cjs new file mode 100644 index 0000000000000000000000000000000000000000..e0c3a4cc340447911dc9ff5a109c3d97e5a33151 --- /dev/null +++ b/apps/connection-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/connection-manager/.eslintrc.js b/apps/connection-manager/.eslintrc.js deleted file mode 100644 index 45096635436d87471c78252f906f5e3f5a2aed9c..0000000000000000000000000000000000000000 --- a/apps/connection-manager/.eslintrc.js +++ /dev/null @@ -1,28 +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', - ], - parserOptions: { - project: './tsconfig.json', - }, - root: true, - env: { - node: true, - jest: true, - }, - ignorePatterns: ['.eslintrc.js'], - rules: { - '@typescript-eslint/interface-name-prefix': 'off', - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - }, -}; diff --git a/apps/connection-manager/.prettierignore b/apps/connection-manager/.prettierignore new file mode 100644 index 0000000000000000000000000000000000000000..487d8699d35d1b4e826aed4183db13d2816bf562 --- /dev/null +++ b/apps/connection-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/connection-manager/.swcrc b/apps/connection-manager/.swcrc new file mode 100644 index 0000000000000000000000000000000000000000..f0831e454c02bece75b8b8b60ac59891a48fe7f2 --- /dev/null +++ b/apps/connection-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/connection-manager/jest.config.js b/apps/connection-manager/jest.config.js new file mode 100644 index 0000000000000000000000000000000000000000..1b2ee91fa88cada4d31ad3c2528291214de4aebe --- /dev/null +++ b/apps/connection-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/connection-manager/nest-cli.json b/apps/connection-manager/nest-cli.json index 56167b36a14c2c69eb0db57302e2c44a1128b006..0a947a58e97e43e99b3e3464b02179459ac759c7 100644 --- a/apps/connection-manager/nest-cli.json +++ b/apps/connection-manager/nest-cli.json @@ -1,4 +1,8 @@ { "collection": "@nestjs/schematics", - "sourceRoot": "src" + "sourceRoot": "src", + "compilerOptions": { + "builder": "swc", + "typeCheck": true + } } diff --git a/apps/connection-manager/package.json b/apps/connection-manager/package.json index d86730dd43bf840c0cd849ecc1e0d651f2a9fa05..c4ac37011e65ef9f007297a2fbbbe88f51466954 100644 --- a/apps/connection-manager/package.json +++ b/apps/connection-manager/package.json @@ -5,115 +5,84 @@ "author": "Sagar", "private": true, "license": "Apache-2.0", + "type": "module", "scripts": { "clean": "rm -r 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:dev": "nest start --watch --preserveWatchOutput", "start:docker": "pnpm prisma:generate && pnpm dbSchema && pnpm start", "start:docker:prod": "pnpm prisma:migrate && node dist/src/main", - "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/cli": "^8.0.0", - "@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/schedule": "^1.0.2", - "@nestjs/schematics": "^8.0.0", - "@nestjs/swagger": "^5.2.0", - "@nestjs/terminus": "^8.0.4", - "@nestjs/testing": "^8.0.0", - "@prisma/client": "^3.15.2", - "@types/node": "^16.0.0", - "class-validator": "^0.13.2", - "express": "^4.17.3", - "joi": "^17.6.0", - "jsonwebtoken": "^8.5.1", - "jwks-rsa": "^3.0.0", - "moment": "^2.29.1", - "nats": "^2.6.0", - "prisma": "^3.15.2", + "@elastic/ecs-winston-format": "^1.5.0", + "@nestjs/axios": "^3.0.1", + "@nestjs/common": "^10.2.8", + "@nestjs/config": "^3.1.1", + "@nestjs/core": "^10.2.8", + "@nestjs/mapped-types": "^2.0.4", + "@nestjs/microservices": "^10.2.8", + "@nestjs/platform-express": "^10.2.8", + "@nestjs/schedule": "^4.0.0", + "@nestjs/swagger": "^7.1.16", + "@nestjs/terminus": "^10.1.1", + "@prisma/client": "^5.6.0", + "class-validator": "^0.14.0", + "joi": "^17.11.0", + "jsonwebtoken": "^9.0.2", + "jwks-rsa": "^3.1.0", + "moment": "^2.29.4", + "nats": "^2.18.0", "reflect-metadata": "^0.1.13", - "rxjs": "^7.2.0", - "simple-oauth2": "^5.0.0", - "winston": "^3.6.0", - "winston-elasticsearch": "^0.16.1" + "rxjs": "^7.8.1", + "winston": "^3.11.0", + "winston-elasticsearch": "^0.17.4" }, "devDependencies": { - "@types/express": "^4.17.13", + "@jest/globals": "^29.7.0", + "@nestjs/cli": "^10.2.1", + "@nestjs/schematics": "^10.0.3", + "@nestjs/testing": "^10.2.8", + "@swc/cli": "^0.1.62", + "@swc/core": "^1.3.96", + "@swc/jest": "^0.2.29", + "@types/express": "^4.17.21", "@types/jest": "27.0.2", - "@types/jsonwebtoken": "^8.5.9", - "@types/simple-oauth2": "^4.1.1", - "@types/supertest": "^2.0.11", - "@typescript-eslint/eslint-plugin": "^5.14.0", - "@typescript-eslint/parser": "^5.14.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.26.0", - "eslint-plugin-prettier": "^4.0.0", - "husky": "^7.0.4", - "jest": "^27.2.5", - "node-mocks-http": "^1.11.0", - "prettier": "^2.3.2", - "source-map-support": "^0.5.20", - "supertest": "^6.1.3", - "swagger-ui-express": "^4.3.0", - "ts-jest": "^27.0.3", - "ts-loader": "^9.2.3", - "ts-node": "^10.0.0", - "tsconfig-paths": "^3.10.1", - "typescript": "^4.3.5" - }, - "jest": { - "moduleFileExtensions": [ - "js", - "json", - "ts" - ], - "coveragePathIgnorePatterns": [ - "<rootDir>/main", - "<rootDir>/client" - ], - "setupFiles": [ - "<rootDir>/../setup.js" - ], - "moduleNameMapper": { - "^@connections/(.*)$": "<rootDir>/connections/$1", - "^@src/(.*)$": "<rootDir>/$1", - "^@DB/(.*)$": "<rootDir>/prisma/$1", - "^@common/(.*)$": "<rootDir>/common/$1", - "@config/(.*)": [ - "<rootDir>/../config/$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" + "@types/jsonwebtoken": "^9.0.5", + "@types/node": "^20.9.0", + "@types/simple-oauth2": "^5.0.7", + "@types/supertest": "^2.0.16", + "@typescript-eslint/eslint-plugin": "^6.11.0", + "@typescript-eslint/parser": "^6.11.0", + "dotenv-cli": "^7.3.0", + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-import": "^2.29.0", + "eslint-plugin-jest": "^27.6.0", + "eslint-plugin-prettier": "^5.0.1", + "eslint-plugin-workspaces": "^0.9.0", + "husky": "^8.0.3", + "jest": "^29.7.0", + "node-mocks-http": "^1.13.0", + "prettier": "^3.1.0", + "prisma": "^5.6.0", + "source-map-support": "^0.5.21", + "supertest": "^6.3.3", + "swagger-ui-express": "^5.0.0", + "ts-node": "^10.9.1", + "typescript": "^5.2.2" } } diff --git a/apps/connection-manager/src/app.module.spec.ts b/apps/connection-manager/src/app.module.spec.ts index 55541ed94a5e4ae949291bbd7e03382b7d2aaaaf..0298150668c95441ae21b87b2776c43742dc758a 100644 --- a/apps/connection-manager/src/app.module.spec.ts +++ b/apps/connection-manager/src/app.module.spec.ts @@ -1,6 +1,7 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { INestApplication } from '@nestjs/common'; -import AppModule from './app.module'; +import type { INestApplication } from '@nestjs/common'; +import type { TestingModule } from '@nestjs/testing'; +import { Test } from '@nestjs/testing'; +import AppModule from './app.module.js'; describe('App Module', () => { let app: INestApplication; diff --git a/apps/connection-manager/src/app.module.ts b/apps/connection-manager/src/app.module.ts index 12a698c14544974b593790fbc74da2fdac8ca87a..a5356b928a27e0cefd7328c2f90e849be6b3ba4b 100644 --- a/apps/connection-manager/src/app.module.ts +++ b/apps/connection-manager/src/app.module.ts @@ -1,22 +1,17 @@ -import PrismaService from '@src/prisma/prisma.service'; -import { APP_FILTER } from '@nestjs/core'; -import { - MiddlewareConsumer, - Module, - NestModule, - RequestMethod, -} from '@nestjs/common'; +import type { MiddlewareConsumer, NestModule } from '@nestjs/common'; +import { Module, RequestMethod } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; -import { TerminusModule } from '@nestjs/terminus'; -import validationSchema from '@config/validation'; - -import config from '@config/config'; -import HealthController from '@health/health.controller'; -import ExceptionHandler from '@common/exception.handler'; -import ConnectionsModule from '@connections/module'; +import { APP_FILTER } from '@nestjs/core'; import { ScheduleModule } from '@nestjs/schedule'; -import SchedulerService from './connections/scheduler/scheduler.service'; -import { AuthMiddleware } from './middleware/auth.middleware'; +import { TerminusModule } from '@nestjs/terminus'; +import ExceptionHandler from './common/exception.handler.js'; +import config from './config/config.js'; +import validationSchema from './config/validation.js'; +import ConnectionsModule from './connections/module.js'; +import SchedulerService from './connections/scheduler/scheduler.service.js'; +import HealthController from './health/health.controller.js'; +import { AuthMiddleware } from './middleware/auth.middleware.js'; +import PrismaModule from './prisma/prisma.module.js'; @Module({ imports: [ @@ -27,6 +22,7 @@ import { AuthMiddleware } from './middleware/auth.middleware'; load: [config], validationSchema, }), + PrismaModule, ConnectionsModule, ], controllers: [HealthController], @@ -36,7 +32,6 @@ import { AuthMiddleware } from './middleware/auth.middleware'; useClass: ExceptionHandler, }, SchedulerService, - PrismaService, ], }) export default class AppModule implements NestModule { diff --git a/apps/connection-manager/src/client/nats.client.ts b/apps/connection-manager/src/client/nats.client.ts index 316b5b6a8c271215bbe0739f2e57d6f1d983e1da..723c1fbe522bd524ef9d4866930554b64805c030 100644 --- a/apps/connection-manager/src/client/nats.client.ts +++ b/apps/connection-manager/src/client/nats.client.ts @@ -1,15 +1,15 @@ -import logger from '@src/utils/logger'; import { Inject, Injectable } from '@nestjs/common'; import { ClientProxy } from '@nestjs/microservices'; import { lastValueFrom } from 'rxjs'; import { + Attestation, NATSServices, Principal, - Attestation, ProofManager, -} from '@common/constants'; -import ResponseType from '@common/response'; -import ConnectionSubscriptionEndpointDto from '@connections/entities/connectionSubscribeEndPoint.entity'; +} from '../common/constants.js'; +import type ResponseType from '../common/response.js'; +import type ConnectionSubscriptionEndpointDto from '../connections/entities/connectionSubscribeEndPoint.entity.js'; +import logger from '../utils/logger.js'; @Injectable() export default class NatsClientService { diff --git a/apps/connection-manager/src/common/common.spec.ts b/apps/connection-manager/src/common/common.spec.ts deleted file mode 100644 index a42934af6f12fa745b1c96e989f726afc3252718..0000000000000000000000000000000000000000 --- a/apps/connection-manager/src/common/common.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import StatusCode from './status.codes'; - -describe('StatusCode', () => { - it('should be defined', () => { - expect(StatusCode).toBeDefined(); - }); -}); diff --git a/apps/connection-manager/src/common/date.utils.ts b/apps/connection-manager/src/common/date.utils.ts index f7276e5c4d3bab62d48addca3fac71f21ddd4df8..a6d0cac913ae0a54764db2914951e2432ad6a6ed 100644 --- a/apps/connection-manager/src/common/date.utils.ts +++ b/apps/connection-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/connection-manager/src/common/exception.handler.ts b/apps/connection-manager/src/common/exception.handler.ts index 1da5ca9155ab4de489adc1b5313fb66dd83b00a1..d54e5be4a64ac7aa291a3312b69a29e31274504b 100644 --- a/apps/connection-manager/src/common/exception.handler.ts +++ b/apps/connection-manager/src/common/exception.handler.ts @@ -1,17 +1,13 @@ -import { - ExceptionFilter, - Catch, - ArgumentsHost, - HttpException, - HttpStatus, -} from '@nestjs/common'; +import type { ArgumentsHost, ExceptionFilter } from '@nestjs/common'; +import { Catch, HttpException, HttpStatus } from '@nestjs/common'; import { HttpAdapterHost } from '@nestjs/core'; -import ResponseType from './response'; +import type 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 +21,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/connection-manager/src/common/response.ts b/apps/connection-manager/src/common/response.ts index e5b6296cf88bea1c13e38e1deba6ab0aca2be551..45f4ccb12e3724334b69a3bd7dbbc08f175d0f7f 100644 --- a/apps/connection-manager/src/common/response.ts +++ b/apps/connection-manager/src/common/response.ts @@ -1,6 +1,6 @@ export default interface ResponseType { statusCode: number; message: string; - data?: any; - error?: any; + data?: unknown; + error?: unknown; } diff --git a/apps/connection-manager/config/config.ts b/apps/connection-manager/src/config/config.ts similarity index 80% rename from apps/connection-manager/config/config.ts rename to apps/connection-manager/src/config/config.ts index 2e11fbb30721c860a15904a5a4ba8e525892cd40..b13ab0b2e4084522ef4a4b79eb8b381578af18da 100644 --- a/apps/connection-manager/config/config.ts +++ b/apps/connection-manager/src/config/config.ts @@ -1,3 +1,7 @@ +import { fileURLToPath } from 'node:url'; + +const parentDirectory = fileURLToPath(new URL('..', import.meta.url)); + const config = () => ({ PORT: Number(process.env.PORT), APP_URL: process.env.CONNECTION_MANAGER_URL, @@ -19,7 +23,7 @@ const config = () => ({ port: 5432, synchronize: false, logging: false, - entities: [`${__dirname}/../**/**.model{.ts,.js}`], + entities: [`${parentDirectory}/../**/**.model{.ts,.js}`], DATABASE_URL: process.env.DATABASE_URL, }, agent: { diff --git a/apps/connection-manager/config/validation.ts b/apps/connection-manager/src/config/validation.ts similarity index 93% rename from apps/connection-manager/config/validation.ts rename to apps/connection-manager/src/config/validation.ts index 30c678248d467872512196abc03a9b88bc7e77bd..5973fca87254b56b49de3e021efd39369c8489eb 100644 --- a/apps/connection-manager/config/validation.ts +++ b/apps/connection-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/connection-manager/src/connections/controller/controller.spec.ts b/apps/connection-manager/src/connections/controller/controller.spec.ts index b6600101d8ff78ad106c4852eaf91114be706dfa..403199ae7495f4a835c22463bba39213e885c826 100644 --- a/apps/connection-manager/src/connections/controller/controller.spec.ts +++ b/apps/connection-manager/src/connections/controller/controller.spec.ts @@ -1,16 +1,18 @@ +import { HttpModule } from '@nestjs/axios'; import { HttpStatus } from '@nestjs/common'; -import { Test, TestingModule } from '@nestjs/testing'; import { ConfigModule } from '@nestjs/config'; -import { HttpModule } from '@nestjs/axios'; -import NatsClientService from '@src/client/nats.client'; import { ClientsModule, Transport } from '@nestjs/microservices'; -import { NATSServices } from '@src/common/constants'; -import httpMocks = require('node-mocks-http'); -import RestClientService from '@src/client/rest.client'; -import ConnectionsController from '@src/connections/controller/controller'; -import ConnectionsService from '../services/service'; -import PrismaService from '../../prisma/prisma.service'; -import ConnectionStateDto from '../entities/connectionStateDto.entity'; +import type { TestingModule } from '@nestjs/testing'; +import { Test } from '@nestjs/testing'; +import httpMocks from 'node-mocks-http'; +import NatsClientService from '../../client/nats.client.js'; +import RestClientService from '../../client/rest.client.js'; +import { NATSServices } from '../../common/constants.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import type ConnectionStateDto from '../entities/connectionStateDto.entity.js'; +import ConnectionsService from '../services/service.js'; + +import ConnectionsController from './controller.js'; describe('ConnectionsController', () => { let connectionController: ConnectionsController; @@ -87,16 +89,18 @@ describe('ConnectionsController', () => { }; const response = httpMocks.createResponse(); + jest .spyOn(connectionService, 'findConnections') .mockResolvedValueOnce(serviceResult); + const res: any = await connectionController.getConnection( param, - query, response, ); - // eslint-disable-next-line no-underscore-dangle + const resData = res._getData(); + expect(res.statusCode).toBe(HttpStatus.OK); expect(JSON.parse(resData).data).toStrictEqual(result); }); @@ -124,16 +128,14 @@ describe('ConnectionsController', () => { ]; const response = httpMocks.createResponse(); + jest .spyOn(connectionService, 'findConnections') .mockResolvedValueOnce(serviceResult); - const res: any = await connectionController.getConnection( - param, - query, - response, - ); - // eslint-disable-next-line no-underscore-dangle + + const res = await connectionController.getConnection(param, response); const resData = res._getData(); + expect(res.statusCode).toBe(HttpStatus.BAD_REQUEST); expect(JSON.parse(resData).message).toStrictEqual( 'Participant ID/ connection ID / participant DID must be provided', @@ -191,7 +193,7 @@ describe('ConnectionsController', () => { expect(JSON.parse(resData)).toStrictEqual(result); }); - it('Not fount if data is not present against connection id ', async () => { + it('Not fount if data is not present against connection id', async () => { const param = { connectionId: '7b821264-2ae3-4459-b45f-19fa975d91f7', }; @@ -345,66 +347,6 @@ describe('ConnectionsController', () => { // expect(JSON.parse(resData).data).toStrictEqual(result); }); - it('Create connection webhook call', async () => { - const webHook: ConnectionStateDto = { - _tags: {}, - metadata: {}, - id: '7edc871d-9fa3-4f30-8763-59c80bf346f5', - createdAt: '2022-04-21T10:52:27.151Z', - did: 'DD8Aue5tuohjBaCLM9GMU7', - didDoc: { - '@context': 'https://w3id.org/did/v1', - publicKey: [ - [ - { - id: 'C1buxAXWiisjFpVVyUGM5D#1', - controller: 'C1buxAXWiisjFpVVyUGM5D', - type: 'Ed25519VerificationKey2018', - publicKeyBase58: '714U4GdQqyeqhCANgJmTrGqUPg4QTGuEhJcEGYAvEH1Y', - }, - ], - ], - service: [ - { - id: 'C1buxAXWiisjFpVVyUGM5D#IndyAgentService', - serviceEndpoint: 'http://localhost:4011', - type: 'IndyAgent', - priority: 0, - recipientKeys: ['714U4GdQqyeqhCANgJmTrGqUPg4QTGuEhJcEGYAvEH1Y'], - routingKeys: [], - }, - ], - authentication: [[Object]], - id: 'DD8Aue5tuohjBaCLM9GMU7', - }, - theirDid: '', - theirLabel: '', - verkey: '7exBgFhenY8hqBwBF56D8sp6akLstqXxS1MUUCpDErvX', - state: 'invited', - role: 'inviter', - alias: 'member', - invitation: { - '@type': 'https://didcomm.org/connections/1.0/invitation', - '@id': '8578735f-eef8-4748-b791-ba2f8f7002e2', - label: 'State_University', - recipientKeys: ['7exBgFhenY8hqBwBF56D8sp6akLstqXxS1MUUCpDErvX'], - serviceEndpoint: 'http://localhost:4017', - routingKeys: [], - }, - multiUseInvitation: false, - }; - const serviceResult: any = {}; - jest - .spyOn(connectionService, 'createConnections') - .mockResolvedValueOnce(serviceResult); - const res: any = await connectionController.createConnection({ - body: webHook, - }); - - expect(res.statusCode).toBe(HttpStatus.CREATED); - // expect(JSON.parse(resData).data).toStrictEqual(result); - }); - it('Update connection webhook call -> member flow', async () => { const webHook: ConnectionStateDto = { _tags: {}, @@ -608,7 +550,7 @@ describe('ConnectionsController', () => { multiUseInvitation: false, }; - const restConnection: any = { + const restConnection = { id: '29701e41-60e8-4fca-8504-ea3bcefa6486', connectionId: '72534911-9be0-4e3f-8539-2a8a09e4e409', participantId: '662dc769-a4de-4c95-934c-f6dab8cf432c', @@ -620,7 +562,8 @@ describe('ConnectionsController', () => { updatedDate: '2022-04-15T11:36:58.560Z', isActive: true, }; - const serviceResult: any = {}; + const serviceResult = {}; + jest .spyOn(connectionService, 'updateStatusByConnectionId') .mockResolvedValueOnce(serviceResult); @@ -628,7 +571,7 @@ describe('ConnectionsController', () => { jest .spyOn(connectionService, 'getConnectionByID') .mockResolvedValueOnce(restConnection); - const res: any = await connectionController.createConnection({ + const res = await connectionController.createConnection({ body: webHook, }); @@ -637,7 +580,7 @@ describe('ConnectionsController', () => { }); }); - describe('Get invitation URL ', () => { + describe('Get invitation URL', () => { it('Get Member invitation URL', async () => { const body = { autoAcceptConnection: true, diff --git a/apps/connection-manager/src/connections/controller/controller.ts b/apps/connection-manager/src/connections/controller/controller.ts index 90ebb31a365336deace56469245799664adb07ce..37e2e5409c5a9c1ff5e9239330c872696da03fad 100644 --- a/apps/connection-manager/src/connections/controller/controller.ts +++ b/apps/connection-manager/src/connections/controller/controller.ts @@ -1,3 +1,8 @@ +import type ResponseType from '../../common/response.js'; +import type ConnectionStateDto from '../entities/connectionStateDto.entity.js'; +import type ConnectionSubscriptionEndpointDto from '../entities/connectionSubscribeEndPoint.entity.js'; +import type ConnectionDto from '../entities/entity.js'; + import { Body, Controller, @@ -9,8 +14,7 @@ import { Res, Version, } from '@nestjs/common'; -import ResponseType from '@common/response'; -import ConnectionDto from '@connections/entities/entity'; +import { MessagePattern } from '@nestjs/microservices'; import { ApiBody, ApiExcludeEndpoint, @@ -19,19 +23,17 @@ import { ApiResponse, ApiTags, } from '@nestjs/swagger'; -import ConnectionsService from '@connections/services/service'; -import ConnectionStateDto from '@connections/entities/connectionStateDto.entity'; -import ConnectionCreateInvitationDto from '@connections/entities/connectionCreateInvitationDto.entity'; import { Response } from 'express'; -import logger from '@src/utils/logger'; -import { MessagePattern } from '@nestjs/microservices'; + import { Abstraction, NATSServices, RECEIVED_CONNECTION_ALIAS, -} from '@src/common/constants'; -import ConnectionSubscriptionEndpointDto from '../entities/connectionSubscribeEndPoint.entity'; -import AcceptConnectionInvitationBody from '../entities/AcceptConnectionInvitationBody'; +} from '../../common/constants.js'; +import logger from '../../utils/logger.js'; +import AcceptConnectionInvitationBody from '../entities/AcceptConnectionInvitationBody.js'; +import ConnectionCreateInvitationDto from '../entities/connectionCreateInvitationDto.entity.js'; +import ConnectionsService from '../services/service.js'; @ApiTags('Connections') @Controller() @@ -129,7 +131,8 @@ export default class ConnectionsController { @Post('invitation-url') @ApiOperation({ summary: 'Create new connection invitation', - description: 'This call provides the capability to create new connection invitation by providing alias parameter for taht connection in the body of request. Alias can be one of value: trust/subscriber/trust. This call returns an object contains three fields. invitationUrl, invitationUrlShort, invitation object and connection object. You can use invitationUrlShort or invitationUrl to create QR code which can be scanned by PCM. It\'s better to use invitationUrlShort because long string of invitationUrl replaced with short id and QR code can be displayed properly' + description: + "This call provides the capability to create new connection invitation by providing alias parameter for taht connection in the body of request. Alias can be one of value: trust/subscriber/trust. This call returns an object contains three fields. invitationUrl, invitationUrlShort, invitation object and connection object. You can use invitationUrlShort or invitationUrl to create QR code which can be scanned by PCM. It's better to use invitationUrlShort because long string of invitationUrl replaced with short id and QR code can be displayed properly", }) @ApiResponse({ status: HttpStatus.OK, @@ -250,7 +253,7 @@ export default class ConnectionsController { @ApiQuery({ name: 'alias', required: true }) async createConnectionInvitation( @Body() connectionCreate: ConnectionCreateInvitationDto, - @Query() query, + @Query() query: { alias: string }, @Res() response: Response, ) { logger.info(JSON.stringify(query)); @@ -298,10 +301,13 @@ export default class ConnectionsController { @Get('url/:id') @ApiOperation({ summary: 'Get full url from short url id', - description: 'Get full url from short url id' + description: 'Get full url from short url id', }) @ApiExcludeEndpoint() - async redirectToConnectionUrl(@Param() params, @Res() response: Response) { + async redirectToConnectionUrl( + @Param() params: { id: string }, + @Res() response: Response, + ) { const result = await this.connectionsService.findConnectionByShortUrlId( params.id, ); @@ -318,7 +324,8 @@ export default class ConnectionsController { @Get('connection-information') @ApiOperation({ summary: 'Fetch connection information by id or did', - description: 'This call provides the capability to get information about connection by connectionId or did. This call returns issued credentials and requested proof to that connection' + description: + 'This call provides the capability to get information about connection by connectionId or did. This call returns issued credentials and requested proof to that connection', }) @ApiQuery({ name: 'connectionId', required: false }) @ApiQuery({ name: 'did', required: false }) @@ -393,7 +400,7 @@ export default class ConnectionsController { }, }) async getConnectionInformationRequest( - @Query() query, + @Query() query: { connectionId: string; did: string }, @Res() response: Response, ) { let res: ResponseType; @@ -436,7 +443,8 @@ export default class ConnectionsController { @Get('connections') @ApiOperation({ summary: 'Fetch list of connections', - description: 'This call provides the capability to search connections by using pagination and filter parameters. This call returns a list of connections and overall count of records. This endpoint supports followinng query filter parameters: participantDID, status, pageSize, page' + description: + 'This call provides the capability to search connections by using pagination and filter parameters. This call returns a list of connections and overall count of records. This endpoint supports followinng query filter parameters: participantDID, status, pageSize, page', }) @ApiQuery({ name: 'page', required: false }) @ApiQuery({ name: 'pageSize', required: false }) @@ -494,8 +502,14 @@ export default class ConnectionsController { }, }) async getConnectionLists( - @Param() params, - @Query() query, + @Param() params: { connectionId: string }, + @Query() + query: { + participantDID?: string; + pageSize?: string; + page?: string; + status?: string; + }, @Res() response: Response, ) { let res: ResponseType; @@ -504,7 +518,7 @@ export default class ConnectionsController { query.pageSize ? parseInt(query.pageSize, 10) : 10, query.page ? parseInt(query.page, 10) : 0, query.status ? query.status : false, - params?.connectionId ? params.connectionId : null, + params?.connectionId ? params.connectionId : undefined, query.participantDID, ); @@ -539,12 +553,12 @@ export default class ConnectionsController { return response.json(res); } - @Version(['1']) @Get('connections/:connectionId') @ApiOperation({ summary: 'Fetch connection by id', - description: 'This call provides the capability to get connection data by providing connectionId. The connection data is the same which is returned from /v1/connections endpoint and contains generic information about connection like connectionId, status, dids and so on.' + description: + 'This call provides the capability to get connection data by providing connectionId. The connection data is the same which is returned from /v1/connections endpoint and contains generic information about connection like connectionId, status, dids and so on.', }) @ApiResponse({ status: HttpStatus.OK, @@ -598,14 +612,10 @@ export default class ConnectionsController { }, }) async getConnection( - @Param() params, + @Param() params: { connectionId: string }, @Res() response: Response, ) { - return this.getConnectionLists( - params, - {}, - response - ); + return this.getConnectionLists(params, {}, response); } @MessagePattern({ @@ -636,7 +646,8 @@ export default class ConnectionsController { @Post('accept-connection-invitation') @ApiOperation({ summary: 'Accept connection invitation', - description: 'This call provides the capability to receive connection invitation as invitee by invitationUrl and create connection. If auto accepting is enabled via either the config passed in the function or the global agent config, a connection request message will be send.' + description: + 'This call provides the capability to receive connection invitation as invitee by invitationUrl and create connection. If auto accepting is enabled via either the config passed in the function or the global agent config, a connection request message will be send.', }) @ApiResponse({ status: HttpStatus.ACCEPTED, diff --git a/apps/connection-manager/src/connections/entities/connectionStateDto.entity.ts b/apps/connection-manager/src/connections/entities/connectionStateDto.entity.ts index c982ca50c0fea66fd30a4ff6ce7e88846a2f45a1..86c89e65ce0e5640df4e76b1d44e99cf64c6e952 100644 --- a/apps/connection-manager/src/connections/entities/connectionStateDto.entity.ts +++ b/apps/connection-manager/src/connections/entities/connectionStateDto.entity.ts @@ -1,15 +1,16 @@ -import { IsString, IsNotEmpty } from 'class-validator'; -import InvitationDTO from './InvitationDto.entity'; +import { IsBooleanString, IsNotEmpty, IsString } from 'class-validator'; + +import InvitationDTO from './InvitationDto.entity.js'; export default class ConnectionStateDto { @IsString() - ['_tags']?: any; + _tags?: string; @IsString() - metadata?: any; + metadata?: string; @IsString() - didDoc?: any; + didDoc?: string; @IsString() verkey?: string; @@ -45,5 +46,6 @@ export default class ConnectionStateDto { @IsString() alias: string; + @IsBooleanString() multiUseInvitation?: boolean; } diff --git a/apps/connection-manager/src/connections/entities/entity.ts b/apps/connection-manager/src/connections/entities/entity.ts index 9f00bf8f277692f7d7a6c114d15217ea99320ba9..79e5674273bbb41019c71c670ae753c66d5932c0 100644 --- a/apps/connection-manager/src/connections/entities/entity.ts +++ b/apps/connection-manager/src/connections/entities/entity.ts @@ -1,5 +1,6 @@ import { IsString, IsNotEmpty, IsDate, IsBoolean } from 'class-validator'; -import InvitationDTO from './InvitationDto.entity'; + +import InvitationDTO from './InvitationDto.entity.js'; export default class ConnectionDto { @IsString() diff --git a/apps/connection-manager/src/connections/module.ts b/apps/connection-manager/src/connections/module.ts index 620d8ea5be9caa9d702447c42889fb7114ac3e96..21f11842c57d08c00806beb9e8d3a16959169bb9 100644 --- a/apps/connection-manager/src/connections/module.ts +++ b/apps/connection-manager/src/connections/module.ts @@ -1,13 +1,15 @@ -import { Module } from '@nestjs/common'; -import PrismaService from '@DB/prisma.service'; import { HttpModule } from '@nestjs/axios'; +import { Module } from '@nestjs/common'; import { ClientsModule, Transport } from '@nestjs/microservices'; -import { NATSServices } from '@common/constants'; -import ConnectionsController from '@connections/controller/controller'; -import ConnectionsService from '@connections/services/service'; -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 ConnectionsController from './controller/controller.js'; +import ConnectionsService from './services/service.js'; @Module({ imports: [ diff --git a/apps/connection-manager/src/connections/repository/connection.repository.ts b/apps/connection-manager/src/connections/repository/connection.repository.ts index eb04deef59d4eb7753153b064243a708817df566..d0fabcb7c3081259b603d49a7cb69b3a7ee7f546 100644 --- a/apps/connection-manager/src/connections/repository/connection.repository.ts +++ b/apps/connection-manager/src/connections/repository/connection.repository.ts @@ -1,30 +1,26 @@ +import type { Prisma } from '@prisma/client'; + import { Injectable } from '@nestjs/common'; -import { Prisma } from '@prisma/client'; -import PrismaService from '@DB/prisma.service'; + +import PrismaService from '../../prisma/prisma.service.js'; @Injectable() export default class ConnectionRepository { constructor(private readonly prismaService: PrismaService) {} async createConnection(data: Prisma.ConnectionCreateInput) { - return this.prismaService.connection.create({ - data, - }); + return this.prismaService.connection.create({ data }); } - async createShortUrl(invitationUrl: string) { + async createShortUrl(connectionUrl: string) { return this.prismaService.shortUrlConnection.create({ - data: { - connectionUrl: invitationUrl, - }, + data: { connectionUrl }, }); } async getShortUrl(id: string) { return this.prismaService.shortUrlConnection.findUnique({ - where: { - id, - }, + where: { id }, }); } @@ -33,6 +29,7 @@ export default class ConnectionRepository { data: Prisma.ConnectionUpdateInput; }) { const { where, data } = params; + return this.prismaService.connection.update({ data, where, @@ -44,6 +41,7 @@ export default class ConnectionRepository { data: Prisma.ConnectionUpdateInput; }) { const { where, data } = params; + return this.prismaService.connection.updateMany({ data, where, @@ -59,15 +57,13 @@ export default class ConnectionRepository { select?: Prisma.ConnectionSelect; }) { const { skip, take, cursor, where, orderBy, select } = params; + if (where) { where.isActive = true; } + return this.prismaService.$transaction([ - this.prismaService.connection.count({ - where: { - ...where, - }, - }), + this.prismaService.connection.count({ where }), this.prismaService.connection.findMany({ skip, take, @@ -83,6 +79,7 @@ export default class ConnectionRepository { where: Prisma.ConnectionWhereUniqueInput; }) { const { where } = params; + return this.prismaService.connection.findUnique({ where, }); diff --git a/apps/connection-manager/src/connections/scheduler/scheduler.service.ts b/apps/connection-manager/src/connections/scheduler/scheduler.service.ts index 5ba03f92fa415753cd57e0f99ea6299f2083dc30..465a1593821598bd23d0f5185994f8022d92ed32 100644 --- a/apps/connection-manager/src/connections/scheduler/scheduler.service.ts +++ b/apps/connection-manager/src/connections/scheduler/scheduler.service.ts @@ -1,14 +1,15 @@ -import logger from '@utils/logger'; import { Controller, Injectable, InternalServerErrorException, } from '@nestjs/common'; import { Cron, CronExpression } from '@nestjs/schedule'; -import PrismaService from '@DB/prisma.service'; -import ConnectionRepository from '@connections/repository/connection.repository'; -import ConnectionsService from '@connections/services/service'; -import ConfigClient from '@src/client/config.client'; + +import ConfigClient from '../../client/config.client.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import logger from '../../utils/logger.js'; +import ConnectionRepository from '../repository/connection.repository.js'; +import ConnectionsService from '../services/service.js'; @Injectable() @Controller() @@ -56,9 +57,8 @@ export default class SchedulerService { isActive: false, }, }; - const result = await this.connectionRepository.updateManyConnection( - query, - ); + const result = + await this.connectionRepository.updateManyConnection(query); logger.info(JSON.stringify(result)); } else { throw new InternalServerErrorException( @@ -94,9 +94,8 @@ export default class SchedulerService { isActive: false, }, }; - const result = await this.connectionRepository.updateManyConnection( - query, - ); + const result = + await this.connectionRepository.updateManyConnection(query); logger.info(JSON.stringify(result)); } else { throw new InternalServerErrorException( diff --git a/apps/connection-manager/src/connections/services/service.spec.ts b/apps/connection-manager/src/connections/services/service.spec.ts index b61de64755a3dc1a5f44796f4561bebf8979412b..fbfeea90b0c7616558661cd0d5e59875370ff903 100644 --- a/apps/connection-manager/src/connections/services/service.spec.ts +++ b/apps/connection-manager/src/connections/services/service.spec.ts @@ -1,19 +1,24 @@ +import type ConnectionDto from '../entities/entity.js'; +import type { TestingModule } from '@nestjs/testing'; + import { HttpModule } from '@nestjs/axios'; import { ConfigModule } from '@nestjs/config'; import { ClientsModule, Transport } from '@nestjs/microservices'; -import { Test, TestingModule } from '@nestjs/testing'; -import NatsClientService from '@src/client/nats.client'; -import { NATSServices } from '@common/constants'; -import PrismaService from '@DB/prisma.service'; -import ConnectionsService from '@connections/services/service'; -import RestClientService from '@src/client/rest.client'; -import ConnectionDto from '@connections/entities/entity'; +import { Test } from '@nestjs/testing'; + +import NatsClientService from '../../client/nats.client.js'; +import RestClientService from '../../client/rest.client.js'; +import { NATSServices } from '../../common/constants.js'; +import PrismaService from '../../prisma/prisma.service.js'; + +import ConnectionsService from './service.js'; describe('ConnectionsService', () => { let service: ConnectionsService; let prismaService: PrismaService; let restClientService: RestClientService; let natsClient: NatsClientService; + beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ imports: [ @@ -45,7 +50,7 @@ describe('ConnectionsService', () => { }); describe('find Connection function', () => { - it('find connection by connection Id ', async () => { + it('find connection by connection Id', async () => { const repositoryResult: any = { id: '1a7f0b09-b20e-4971-b9b1-7adde7256bbc', connectionId: '7b821264-2ae3-4459-b45f-19fa975d91f7', @@ -71,16 +76,19 @@ describe('ConnectionsService', () => { updatedDate: '2022-04-18T11:05:10.004Z', isActive: true, }; + jest .spyOn(prismaService.connection, 'findUnique') .mockResolvedValueOnce(repositoryResult); + const res: any = await service.findConnections( - '', - -1, + NaN, -1, false, + '', '7b821264-2ae3-4459-b45f-19fa975d91f7', ); + expect(res).toStrictEqual(result); }); @@ -110,14 +118,15 @@ describe('ConnectionsService', () => { updatedDate: '2022-04-18T11:05:10.004Z', isActive: true, }; + jest .spyOn(prismaService.connection, 'findUnique') .mockResolvedValueOnce(repositoryResult); + const res: any = await service.findConnections( - '', - -1, + NaN, -1, - false, + '', '', 'SU1SHqQiDcc6gDvqH8wwYF', ); @@ -209,23 +218,18 @@ describe('ConnectionsService', () => { }, ], ]; + jest .spyOn(prismaService, '$transaction') .mockResolvedValueOnce(repositoryResult); - const res: any = await service.findConnections( - '13f412e2-2749-462a-a10a-54f25e326641', - -1, - -1, - false, - '', - '', - ); + + const res: any = await service.findConnections(NaN, -1, '', '', ''); expect(res).toStrictEqual(result); }); it('find connections by participant Id and status', async () => { - const repositoryResult: any = [ + const repositoryResult = [ 3, [ { @@ -267,7 +271,7 @@ describe('ConnectionsService', () => { ], ]; - const result: any = [ + const result = [ 3, [ { @@ -308,17 +312,19 @@ describe('ConnectionsService', () => { }, ], ]; + jest .spyOn(prismaService, '$transaction') .mockResolvedValueOnce(repositoryResult); - const res: any = await service.findConnections( - '13f412e2-2749-462a-a10a-54f25e326641', + const res = await service.findConnections( -1, -1, 'trusted,complete,responded,invited', - '', + undefined, + '13f412e2-2749-462a-a10a-54f25e326641', ); + expect(res).toStrictEqual(result); }); }); @@ -387,6 +393,7 @@ describe('ConnectionsService', () => { multiUseInvitation: false, }, }; + const agent: any = { status: 200, message: 'Agent Data', @@ -394,17 +401,22 @@ describe('ConnectionsService', () => { service_endpoint: 'agent URL', }, }; + const result = serviceResult; + jest .spyOn(natsClient, 'getAgentByParticipantId') .mockResolvedValueOnce(agent); + jest .spyOn(restClientService, 'post') .mockResolvedValueOnce(serviceResult); + const res = await service.createInvitationURL( { autoAcceptConnection: true, alias: 'member' }, 'participantId', ); + expect(res).toStrictEqual(result); }); }); @@ -418,6 +430,7 @@ describe('ConnectionsService', () => { theirDid: 'Ax9xMqE89F9LStfGnTpDzg', theirLabel: 'sagar@getnada.com', }; + const agent: any = { status: 200, message: 'Agent Data', @@ -425,6 +438,7 @@ describe('ConnectionsService', () => { service_endpoint: 'agent URL', }, }; + const repositoryResult: any = { id: '52d499e0-f76a-4b25-9c2a-f357bf6b73be', connectionId: '7b821264-2ae3-4459-b45f-19fa975d91f7', @@ -439,12 +453,15 @@ describe('ConnectionsService', () => { }; const result = repositoryResult; + jest.spyOn(natsClient, 'getAgentByURL').mockResolvedValueOnce(agent); + jest .spyOn(prismaService.connection, 'create') .mockResolvedValueOnce(repositoryResult); const res = await service.createConnections(connectionObj); + expect(res).toStrictEqual(result); }); }); diff --git a/apps/connection-manager/src/connections/services/service.ts b/apps/connection-manager/src/connections/services/service.ts index 7c404f6a3a3edf9677a6bea136207260689958ff..57f09b5866fb0d97b44e68546048108f231747c6 100644 --- a/apps/connection-manager/src/connections/services/service.ts +++ b/apps/connection-manager/src/connections/services/service.ts @@ -1,16 +1,18 @@ +import type ConnectionCreateInvitationDto from '../entities/connectionCreateInvitationDto.entity.js'; +import type ConnectionSubscriptionEndpointDto from '../entities/connectionSubscribeEndPoint.entity.js'; +import type ConnectionDto from '../entities/entity.js'; +import type { Connection, Prisma } from '@prisma/client'; + import { Injectable } from '@nestjs/common'; -import ConnectionDto from '@connections/entities/entity'; -import ConnectionRepository from '@connections/repository/connection.repository'; -import PrismaService from '@DB/prisma.service'; -import ConnectionCreateInvitationDto from '@connections/entities/connectionCreateInvitationDto.entity'; -import { Connection, Prisma } from '@prisma/client'; -import NatsClientService from '@src/client/nats.client'; -import pagination from '@utils/pagination'; -import logger from '@src/utils/logger'; -import ConnectionSubscriptionEndpointDto from '@connections/entities/connectionSubscribeEndPoint.entity'; -import RestClientService from '@src/client/rest.client'; import { ConfigService } from '@nestjs/config'; +import NatsClientService from '../../client/nats.client.js'; +import RestClientService from '../../client/rest.client.js'; +import PrismaService from '../../prisma/prisma.service.js'; +import logger from '../../utils/logger.js'; +import pagination from '../../utils/pagination.js'; +import ConnectionRepository from '../repository/connection.repository.js'; + @Injectable() export default class ConnectionsService { private connectionRepository: ConnectionRepository; @@ -74,8 +76,8 @@ export default class ConnectionsService { theirDid, ); return response; - } catch (error) { - logger.error(error.toString()); + } catch (error: unknown) { + logger.error(String(error)); return error; } } @@ -87,8 +89,8 @@ export default class ConnectionsService { connectionId, ); return response; - } catch (error) { - logger.error(error.toString()); + } catch (error: unknown) { + logger.error(String(error)); return error; } } @@ -135,11 +137,13 @@ export default class ConnectionsService { if (connectionId) { return this.connectionRepository.findByConnectionId(connectionId); } + if (participantDid) { return this.connectionRepository.findByConnectionByParticipantDID( participantDid, ); } + if (status) { const statuses: string[] = status.split(','); query.where = { status: { in: statuses } }; @@ -174,9 +178,8 @@ export default class ConnectionsService { let connectionDetails: Connection | null = null; if (connectionId) { - connectionDetails = await this.connectionRepository.findByConnectionId( - connectionId, - ); + connectionDetails = + await this.connectionRepository.findByConnectionId(connectionId); } if (did && !connectionDetails) { diff --git a/apps/connection-manager/src/health/health.controller.ts b/apps/connection-manager/src/health/health.controller.ts index a2391f4721ec777e81853b54951d6e1a5bac3b8a..9c3454b10991f407d18c2a1c29422ad8d56157bc 100644 --- a/apps/connection-manager/src/health/health.controller.ts +++ b/apps/connection-manager/src/health/health.controller.ts @@ -1,7 +1,7 @@ -import { Controller, Get, Version, HttpStatus } from '@nestjs/common'; +import type ResponseType from '../common/response.js'; -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'; @Controller('health') export default class HealthController { @@ -11,7 +11,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/connection-manager/src/health/health.spec.ts b/apps/connection-manager/src/health/health.spec.ts index a7ecda97f48681fcbca95cb4086ed1a048c10176..05fa6793a33e70fdc56daf6d485ea6d1f02a0d64 100644 --- a/apps/connection-manager/src/health/health.spec.ts +++ b/apps/connection-manager/src/health/health.spec.ts @@ -1,5 +1,8 @@ +import type { TestingModule } from '@nestjs/testing'; + import { HttpStatus } from '@nestjs/common'; -import { Test, TestingModule } from '@nestjs/testing'; +import { Test } from '@nestjs/testing'; + import HealthController from './health.controller'; describe('Health', () => { diff --git a/apps/connection-manager/src/main.ts b/apps/connection-manager/src/main.ts index 232e2935f01a911f85dcb792bbc1adb2423594e3..26244996e75276a43413a5859691dad5f519e153 100644 --- a/apps/connection-manager/src/main.ts +++ b/apps/connection-manager/src/main.ts @@ -1,11 +1,12 @@ -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 type { MicroserviceOptions } from '@nestjs/microservices'; +import { Transport } from '@nestjs/microservices'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; -import { Transport, MicroserviceOptions } from '@nestjs/microservices'; -import AllExceptionsFilter from '@utils/exceptionsFilter'; -import AppModule from './app.module'; -import logger from './utils/logger'; +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); @@ -28,7 +29,7 @@ async function bootstrap() { .setTitle('Gaia-x Connection Manager API') .setDescription('API documentation for GAIA-X Connection Manager') .setVersion('1.0') - .addServer(`localhost:${configService.get('PORT')}`) + .addServer(`http://localhost:${configService.get('PORT')}`) .build(); const document = SwaggerModule.createDocument(app, swaggerConfig); diff --git a/apps/connection-manager/src/middleware/auth.middleware.ts b/apps/connection-manager/src/middleware/auth.middleware.ts index 66e0a50bfa92cfd37ac569d27f0c70be4e20cd0e..2e9f7887749934cc99253fcf21cfdc973a1bbc07 100644 --- a/apps/connection-manager/src/middleware/auth.middleware.ts +++ b/apps/connection-manager/src/middleware/auth.middleware.ts @@ -1,21 +1,12 @@ -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 type { NestMiddleware } from '@nestjs/common'; +import type { NextFunction, Request, Response } from 'express'; -import * as jwt from 'jsonwebtoken'; -import jwksClient = require('jwks-rsa'); +import { HttpStatus, Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import jwt from 'jsonwebtoken'; +import jwksClient from 'jwks-rsa'; -// interface IOAuthConfig { -// client: { -// id: string, -// secret: string -// }; -// auth: { -// tokenHost: string -// } -// } +import logger from '../utils/logger.js'; @Injectable() export class AuthMiddleware implements NestMiddleware { @@ -42,52 +33,10 @@ 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; - // } - - function getKey( + const getKey = ( header: jwt.JwtHeader, callback: jwt.SigningKeyCallback, - ): void { + ): void => { const jwksUri = this.configService.get('auth.tokenUrl') || ''; const client = jwksClient({ jwksUri, timeout: 30000 }); @@ -95,7 +44,7 @@ export class AuthMiddleware implements NestMiddleware { .getSigningKey(header.kid) .then((key) => callback(null, key.getPublicKey())) .catch(callback); - } + }; function verify(token: string): Promise<any> | undefined { return new Promise( diff --git a/apps/connection-manager/src/prisma/prisma.module.spec.ts b/apps/connection-manager/src/prisma/prisma.module.spec.ts index e557fe14e4a4d0a516b645ce88cfe11e613eb8f6..1f7b6e316cbe74f441a2b5328ec3e24f2edf5da1 100644 --- a/apps/connection-manager/src/prisma/prisma.module.spec.ts +++ b/apps/connection-manager/src/prisma/prisma.module.spec.ts @@ -1,4 +1,4 @@ -import PrismaModule from './prisma.module'; +import PrismaModule from './prisma.module.js'; describe('Check if the module is working', () => { it('should be defined', () => { diff --git a/apps/connection-manager/src/prisma/prisma.module.ts b/apps/connection-manager/src/prisma/prisma.module.ts index f3b6aae822b9713f36774df2efde0dc11b642a3d..c0d718cbaa670c814fbd4cb308450928e6146563 100644 --- a/apps/connection-manager/src/prisma/prisma.module.ts +++ b/apps/connection-manager/src/prisma/prisma.module.ts @@ -1,10 +1,8 @@ import { Module } from '@nestjs/common'; -import { ConfigModule } from '@nestjs/config'; -import PrismaService from './prisma.service'; + +import PrismaService from './prisma.service.js'; @Module({ - imports: [ConfigModule], - controllers: [], providers: [PrismaService], exports: [PrismaService], }) diff --git a/apps/connection-manager/src/prisma/prisma.service.ts b/apps/connection-manager/src/prisma/prisma.service.ts index 7d885d9af71da2594144d53712047afd50c53f05..8adb0ecae9a3050db33ecfbea4536f6f1df34a3a 100644 --- a/apps/connection-manager/src/prisma/prisma.service.ts +++ b/apps/connection-manager/src/prisma/prisma.service.ts @@ -1,4 +1,6 @@ -import { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common'; +import type { OnModuleDestroy, OnModuleInit } from '@nestjs/common'; + +import { Injectable } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { PrismaClient } from '@prisma/client'; @@ -8,18 +10,17 @@ export default class PrismaService implements OnModuleInit, OnModuleDestroy { constructor(private configService: ConfigService) { - super(); - } - - async onModuleInit() { - const prisma = new PrismaClient({ + super({ datasources: { db: { - url: this.configService.get('DATABASE_URL'), + url: configService.get('DATABASE_URL'), }, }, }); - await prisma.$connect(); + } + + async onModuleInit() { + await this.$connect(); } async onModuleDestroy() { diff --git a/apps/connection-manager/src/utils/exceptionsFilter.ts b/apps/connection-manager/src/utils/exceptionsFilter.ts index 647308cb01b41a9f0bc71c1dc1c9260ddd30b333..ce1289b1da711ef40d89862187fca3ff2203acb8 100644 --- a/apps/connection-manager/src/utils/exceptionsFilter.ts +++ b/apps/connection-manager/src/utils/exceptionsFilter.ts @@ -1,13 +1,8 @@ -import { - ExceptionFilter, - Catch, - ArgumentsHost, - HttpException, - HttpStatus, - Logger, -} from '@nestjs/common'; +import type { ArgumentsHost, ExceptionFilter } from '@nestjs/common'; +import type { Request } from 'express'; + +import { Catch, HttpException, HttpStatus, Logger } from '@nestjs/common'; import { HttpAdapterHost } from '@nestjs/core'; -import { Request } from 'express'; import { Prisma } from '@prisma/client'; const { PrismaClientKnownRequestError, PrismaClientValidationError } = Prisma; @@ -16,6 +11,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; @@ -71,7 +67,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/connection-manager/src/utils/logger.spec.ts b/apps/connection-manager/src/utils/logger.spec.ts index 35eefc43c4950ae0971a318cbda0332a9ca4dcca..04293dc347bbb729b0b3721359a41b14dd24fb5c 100644 --- a/apps/connection-manager/src/utils/logger.spec.ts +++ b/apps/connection-manager/src/utils/logger.spec.ts @@ -1,10 +1,10 @@ -import * as fs from 'fs'; +import fs from 'node:fs'; describe('Logger', () => { it('should create a directory if not exists', async () => { jest.spyOn(fs, 'existsSync').mockImplementation(() => false); jest.spyOn(fs, 'mkdirSync').mockImplementation(() => 'mocked'); - const logger = await import('./logger'); + const logger = await import('./logger.js'); expect(logger).toBeDefined(); expect(fs.existsSync).toHaveBeenCalled(); expect(fs.mkdirSync).toHaveBeenCalled(); diff --git a/apps/connection-manager/src/utils/logger.ts b/apps/connection-manager/src/utils/logger.ts index 7e23cd5092d0b0f561d5c5706bf7604f608ee3a4..8892609a95ba4be04717bbdec232d331ef1b83c6 100644 --- a/apps/connection-manager/src/utils/logger.ts +++ b/apps/connection-manager/src/utils/logger.ts @@ -1,35 +1,17 @@ -import { existsSync, mkdirSync } from 'fs'; -import winston, { Logger } from 'winston'; -import ecsFormat from '@elastic/ecs-winston-format'; -import { LoggerConfig } from '@common/constants'; +import type { Logger } from 'winston'; -if (!existsSync(LoggerConfig.lOG_DIR)) { - mkdirSync(LoggerConfig.lOG_DIR); -} +import { ecsFormat } from '@elastic/ecs-winston-format'; +import { mkdirSync } from 'node:fs'; +import winston from 'winston'; -// const esTransportOpts = { -// clientOpts: { node: process.env.ECSURL }, -// }; +import { LoggerConfig } from '../common/constants.js'; -// const esTransport = new ElasticsearchTransport(esTransportOpts); - -// esTransport.on('error', (error) => { -// console.error(error); -// }); +mkdirSync(LoggerConfig.lOG_DIR, { recursive: true }); const logger: Logger = winston.createLogger({ format: ecsFormat({ convertReqRes: true }), - transports: [ - new winston.transports.Console(), - - // new winston.transports.File({ - // // path to log file - // filename: LoggerConfig.FILE_PATH, - // }), - // // Path to Elasticsearch - // esTransport, - ], + transports: [new winston.transports.Console()], }); logger.on('error', (error) => { diff --git a/apps/connection-manager/src/utils/nats.ts b/apps/connection-manager/src/utils/nats.ts index af553d64a002d46156e706d8cf7a0282691f1461..1847a2345bfb3743f01aa625daf74c7c388b1f6c 100644 --- a/apps/connection-manager/src/utils/nats.ts +++ b/apps/connection-manager/src/utils/nats.ts @@ -1,4 +1,5 @@ -import { connect, NatsConnection, StringCodec } from 'nats'; +import type { NatsConnection } from 'nats'; +import { connect, StringCodec } from 'nats'; const sc = StringCodec(); @@ -22,7 +23,10 @@ export default class Nats { } } - public static async subscribe(subject: string, cb: (...args: any[]) => any) { + public static async subscribe( + subject: string, + cb: (...args: unknown[]) => unknown, + ) { if (this.nc) { const sub = this.nc.subscribe(subject); (async () => { diff --git a/apps/connection-manager/src/utils/pagination.spec.ts b/apps/connection-manager/src/utils/pagination.spec.ts index a75d3bbe936ea957448f53237a8d2dc2329ab038..e517f67bcaeeeae9aaa1b605fbbf8833ad1dbe22 100644 --- a/apps/connection-manager/src/utils/pagination.spec.ts +++ b/apps/connection-manager/src/utils/pagination.spec.ts @@ -1,4 +1,4 @@ -import pagination from './pagination'; +import pagination from './pagination.js'; describe('Check if the module is working', () => { it('should be defined', () => { @@ -6,7 +6,7 @@ describe('Check if the module is working', () => { }); it('should be return default value', () => { - const result = { skip: 0, take: 10 }; + const result = { skip: 0, take: 1000 }; expect(pagination(0, 0)).toStrictEqual(result); }); diff --git a/apps/connection-manager/test/app.e2e-spec.ts b/apps/connection-manager/test/app.e2e-spec.ts index c9f4c5628d02c59f0d1f10a3c5a41789d3b04fcc..762e16320004e34f9643ccdd947b153e43636623 100644 --- a/apps/connection-manager/test/app.e2e-spec.ts +++ b/apps/connection-manager/test/app.e2e-spec.ts @@ -1,7 +1,8 @@ -import { Test, TestingModule } from '@nestjs/testing'; +import { afterEach, beforeEach, describe, it } from '@jest/globals'; import { INestApplication } from '@nestjs/common'; -import * as request from 'supertest'; -import AppModule from '@src/app.module'; +import { Test, TestingModule } from '@nestjs/testing'; +import request from 'supertest'; +import AppModule from '../src/app.module.js'; describe('AppController (e2e)', () => { let app: INestApplication; @@ -15,6 +16,10 @@ describe('AppController (e2e)', () => { await app.init(); }); - it('/ (GET)', () => - request(app.getHttpServer()).get('/').expect(200).expect('Hello World!')); + afterEach(async () => { + await app.close(); + }); + + it('/v1/health (GET)', () => + request(app.getHttpServer()).get('/health').expect(200)); }); diff --git a/apps/connection-manager/test/jest-e2e.json b/apps/connection-manager/test/jest-e2e.json deleted file mode 100644 index e9d912f3e3cefc18505d3cd19b3a5a9f567f5de0..0000000000000000000000000000000000000000 --- a/apps/connection-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/connection-manager/test/jest.config.js b/apps/connection-manager/test/jest.config.js new file mode 100644 index 0000000000000000000000000000000000000000..c2b3ddf9bf2a2231e63f8b040213ce5ffcbb9412 --- /dev/null +++ b/apps/connection-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/connection-manager/tsconfig.json b/apps/connection-manager/tsconfig.json index eafedc36103f5368852ea3db1763b491bc1d451c..9329bd9f7e5faca59c9048a6c1c98edb266778f8 100644 --- a/apps/connection-manager/tsconfig.json +++ b/apps/connection-manager/tsconfig.json @@ -1,34 +1,18 @@ { + "extends": "../../tsconfig.json", + "compilerOptions": { - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - "skipLibCheck": true, - "strictPropertyInitialization": false, - "module": "commonjs", + "composite": true, + "removeComments": false, "declaration": true, - "removeComments": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "target": "es6", "sourceMap": true, + + "incremental": true, + "outDir": "./dist", "baseUrl": "./", - "incremental": true, - "strictNullChecks": true, - "paths": { - "@src/*": ["src/*"], - "@config/*":["config/*"], - "@utils/*" :["src/utils/*"], - "@common/*":["src/common/*"], - "@connections/*":["src/connections/*"], - "@health/*":["src/health/*"], - "@DB/*":["src/prisma/*"] - } + "rootDir": "./src" }, - "include": [ - "**/*.ts", - "src", - "config", - ], + "include": ["src"], "exclude": ["node_modules", "./dist/**/*"] -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e8912b54402857f0ab4b6c9956457b5634721d3..742ee922e532c0bcb73c8e6dd93d72a52d0ff790 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,7 +27,7 @@ importers: 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: ^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) + version: 2.0.4(@nestjs/common@10.2.8)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13) '@nestjs/microservices': specifier: ^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) @@ -36,7 +36,7 @@ importers: version: 10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8) '@nestjs/swagger': 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) + version: 7.1.16(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13) '@nestjs/terminus': specifier: ^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) @@ -174,168 +174,168 @@ importers: apps/connection-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) - '@nestjs/cli': - specifier: ^8.0.0 - version: 8.2.8 + 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.4 + version: 2.0.4(@nestjs/common@10.2.8)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13) '@nestjs/microservices': - specifier: ^8.2.6 - version: 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(nats@2.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/schedule': - specifier: ^1.0.2 - version: 1.1.0(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(reflect-metadata@0.1.13) - '@nestjs/schematics': - specifier: ^8.0.0 - version: 8.0.11(typescript@4.9.5) + specifier: ^4.0.0 + version: 4.0.0(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(reflect-metadata@0.1.13) '@nestjs/swagger': - specifier: ^5.2.0 - version: 5.2.1(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(swagger-ui-express@4.6.3) + specifier: ^7.1.16 + version: 7.1.16(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13) '@nestjs/terminus': - specifier: ^8.0.4 - version: 8.1.1(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@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.1.1 + version: 10.1.1(@nestjs/axios@3.0.1)(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(@nestjs/microservices@10.2.8)(@prisma/client@5.6.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) '@prisma/client': - specifier: ^3.15.2 - version: 3.15.2(prisma@3.15.2) - '@types/node': - specifier: ^16.0.0 - version: 16.18.57 + specifier: ^5.6.0 + version: 5.6.0(prisma@5.6.0) class-validator: - specifier: ^0.13.2 - version: 0.13.2 - express: - specifier: ^4.17.3 - version: 4.18.2 + specifier: ^0.14.0 + version: 0.14.0 joi: - specifier: ^17.6.0 + specifier: ^17.11.0 version: 17.11.0 jsonwebtoken: - specifier: ^8.5.1 - version: 8.5.1 + specifier: ^9.0.2 + version: 9.0.2 jwks-rsa: - specifier: ^3.0.0 + specifier: ^3.1.0 version: 3.1.0 moment: - specifier: ^2.29.1 + specifier: ^2.29.4 version: 2.29.4 nats: - specifier: ^2.6.0 - version: 2.17.0 - prisma: - specifier: ^3.15.2 - version: 3.15.2 + specifier: ^2.18.0 + version: 2.18.0 reflect-metadata: specifier: ^0.1.13 version: 0.1.13 rxjs: - specifier: ^7.2.0 + specifier: ^7.8.1 version: 7.8.1 - simple-oauth2: - specifier: ^5.0.0 - version: 5.0.0 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: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 + '@nestjs/cli': + specifier: ^10.2.1 + version: 10.2.1(@swc/cli@0.1.62)(@swc/core@1.3.96) + '@nestjs/schematics': + specifier: ^10.0.3 + version: 10.0.3(chokidar@3.5.3)(typescript@5.2.2) + '@nestjs/testing': + 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.13 - version: 4.17.18 + specifier: ^4.17.21 + version: 4.17.21 '@types/jest': specifier: 27.0.2 version: 27.0.2 '@types/jsonwebtoken': - specifier: ^8.5.9 - version: 8.5.9 + specifier: ^9.0.5 + version: 9.0.5 + '@types/node': + specifier: ^20.9.0 + version: 20.9.0 '@types/simple-oauth2': - specifier: ^4.1.1 - version: 4.1.3 + specifier: ^5.0.7 + version: 5.0.7 '@types/supertest': - specifier: ^2.0.11 - version: 2.0.14 + specifier: ^2.0.16 + version: 2.0.16 '@typescript-eslint/eslint-plugin': - specifier: ^5.14.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.14.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) + specifier: ^9.0.0 + version: 9.0.0(eslint@8.53.0) eslint-plugin-import: - specifier: ^2.26.0 - version: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.50.0) + specifier: ^2.29.0 + version: 2.29.0(@typescript-eslint/parser@6.11.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) + eslint-plugin-workspaces: + specifier: ^0.9.0 + version: 0.9.0 husky: - specifier: ^7.0.4 - version: 7.0.4 + specifier: ^8.0.3 + version: 8.0.3 jest: - specifier: ^27.2.5 - version: 27.5.1(ts-node@10.9.1) + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) node-mocks-http: - specifier: ^1.11.0 + specifier: ^1.13.0 version: 1.13.0 prettier: - specifier: ^2.3.2 - version: 2.8.8 + specifier: ^3.1.0 + version: 3.1.0 + prisma: + specifier: ^5.6.0 + version: 5.6.0 source-map-support: - specifier: ^0.5.20 + specifier: ^0.5.21 version: 0.5.21 supertest: - specifier: ^6.1.3 + specifier: ^6.3.3 version: 6.3.3 swagger-ui-express: - specifier: ^4.3.0 - version: 4.6.3(express@4.18.2) - ts-jest: - specifier: ^27.0.3 - version: 27.1.5(@babel/core@7.23.0)(@types/jest@27.0.2)(jest@27.5.1)(typescript@4.9.5) - ts-loader: - specifier: ^9.2.3 - version: 9.4.4(typescript@4.9.5)(webpack@5.89.0) + specifier: ^5.0.0 + version: 5.0.0(express@4.18.2) ts-node: - specifier: ^10.0.0 - version: 10.9.1(@types/node@16.18.57)(typescript@4.9.5) - tsconfig-paths: - specifier: ^3.10.1 - version: 3.14.2 + specifier: ^10.9.1 + version: 10.9.1(@swc/core@1.3.96)(@types/node@20.9.0)(typescript@5.2.2) typescript: - specifier: ^4.3.5 - version: 4.9.5 + specifier: ^5.2.2 + version: 5.2.2 apps/principal-manager: dependencies: @@ -510,7 +510,7 @@ importers: dependencies: '@elastic/ecs-winston-format': specifier: ^1.3.1 - version: 1.3.1 + 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) @@ -525,10 +525,10 @@ importers: 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) '@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) + version: 2.0.4(@nestjs/common@8.4.7)(class-validator@0.13.2)(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) + version: 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(nats@2.18.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) '@nestjs/platform-express': specifier: ^8.0.0 version: 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7) @@ -543,7 +543,7 @@ importers: version: 3.15.2(prisma@3.15.2) '@types/express': specifier: ^4.17.13 - version: 4.17.18 + version: 4.17.21 '@types/jest': specifier: 27.0.2 version: 27.0.2 @@ -576,7 +576,7 @@ importers: version: 2.29.4 nats: specifier: ^2.6.0 - version: 2.17.0 + version: 2.18.0 pg: specifier: ^8.7.3 version: 8.11.3 @@ -591,7 +591,7 @@ importers: version: 7.8.1 winston: specifier: ^3.6.0 - version: 3.10.0 + version: 3.11.0 winston-elasticsearch: specifier: ^0.16.1 version: 0.16.1 @@ -607,31 +607,31 @@ importers: 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) '@types/supertest': specifier: ^2.0.11 - version: 2.0.14 + 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) + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^5.0.0 - version: 5.62.0(eslint@8.50.0)(typescript@4.9.5) + version: 5.62.0(eslint@8.53.0)(typescript@4.9.5) dotenv-cli: specifier: ^4.1.1 version: 4.1.1 eslint: specifier: ^8.0.1 - version: 8.50.0 + version: 8.53.0 eslint-config-airbnb-typescript: specifier: ^16.1.0 - version: 16.2.0(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.28.1)(eslint@8.50.0) + version: 16.2.0(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.29.0)(eslint@8.53.0) eslint-config-prettier: specifier: ^8.3.0 - version: 8.10.0(eslint@8.50.0) + version: 8.10.0(eslint@8.53.0) eslint-plugin-import: specifier: ^2.25.4 - version: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.50.0) + version: 2.29.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0) 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) + version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.53.0)(prettier@2.8.8) husky: specifier: ^7.0.4 version: 7.0.4 @@ -869,6 +869,7 @@ packages: magic-string: 0.25.7 rxjs: 6.6.7 source-map: 0.7.3 + dev: true /@angular-devkit/core@13.3.6(chokidar@3.5.3): resolution: {integrity: sha512-ZmD586B+RnM2CG5+jbXh2NVfIydTc/yKSjppYDDOv4I530YBm6vpfZMwClpiNk6XLbMv7KqX4Tlr4wfxlPYYbA==} @@ -886,6 +887,7 @@ packages: magic-string: 0.25.7 rxjs: 6.6.7 source-map: 0.7.3 + dev: true /@angular-devkit/core@16.2.8(chokidar@3.5.3): resolution: {integrity: sha512-PTGozYvh1Bin5lB15PwcXa26Ayd17bWGLS3H8Rs0s+04mUDvfNofmweaX1LgumWWy3nCUTDuwHxX10M3G0wE2g==} @@ -918,6 +920,7 @@ packages: symbol-observable: 4.0.0 transitivePeerDependencies: - chokidar + dev: true /@angular-devkit/schematics-cli@16.2.8(chokidar@3.5.3): resolution: {integrity: sha512-EXURJCzWTVYCipiTT4vxQQOrF63asOUDbeOy3OtiSh7EwIUvxm3BPG6hquJqngEnI/N6bA75NJ1fBhU6Hrh7eA==} @@ -945,6 +948,7 @@ packages: rxjs: 6.6.7 transitivePeerDependencies: - chokidar + dev: true /@angular-devkit/schematics@13.3.6(chokidar@3.5.3): resolution: {integrity: sha512-yLh5xc92C/FiaAp27coPiKWpSUmwoXF7vMxbJYJTyOXlt0mUITAEAwtrZQNr4yAxW/yvgTdyg7PhXaveQNTUuQ==} @@ -957,6 +961,7 @@ packages: rxjs: 6.6.7 transitivePeerDependencies: - chokidar + dev: true /@angular-devkit/schematics@16.2.8(chokidar@3.5.3): resolution: {integrity: sha512-MBiKZOlR9/YMdflALr7/7w/BGAfo/BGTrlkqsIB6rDWV1dYiCgxI+033HsiNssLS6RQyCFx/e7JA2aBBzu9zEg==} @@ -1048,6 +1053,7 @@ packages: dependencies: '@babel/highlight': 7.22.20 chalk: 2.4.2 + dev: true /@babel/compat-data@7.22.20: resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} @@ -1166,6 +1172,7 @@ packages: /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-option@7.22.15: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} @@ -1190,6 +1197,7 @@ packages: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true /@babel/parser@7.23.0: resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} @@ -1543,24 +1551,6 @@ packages: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: false - /@hapi/boom@10.0.1: - resolution: {integrity: sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==} - dependencies: - '@hapi/hoek': 11.0.2 - dev: false - - /@hapi/bourne@3.0.0: - resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} - dev: false - - /@hapi/hoek@10.0.1: - resolution: {integrity: sha512-CvlW7jmOhWzuqOqiJQ3rQVLMcREh0eel4IBnxDx2FAcK8g7qoJRQK4L1CPBASoCY6y8e6zuCy3f2g+HWdkzcMw==} - dev: false - - /@hapi/hoek@11.0.2: - resolution: {integrity: sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==} - dev: false - /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} dev: false @@ -1571,14 +1561,6 @@ packages: '@hapi/hoek': 9.3.0 dev: false - /@hapi/wreck@18.0.1: - resolution: {integrity: sha512-OLHER70+rZxvDl75xq3xXOfd3e8XIvz8fWY0dqg92UvhZ29zo24vQgfqgHSYhB5ZiuFpSLeriOisAlxAo/1jWg==} - dependencies: - '@hapi/boom': 10.0.1 - '@hapi/bourne': 3.0.0 - '@hapi/hoek': 11.0.2 - dev: false - /@humanwhocodes/config-array@0.11.11: resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} @@ -1647,7 +1629,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -1680,7 +1662,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -1767,7 +1749,7 @@ packages: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 jest-mock: 27.5.1 dev: true @@ -1804,7 +1786,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 16.18.57 + '@types/node': 20.9.0 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -1857,7 +1839,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -2061,29 +2043,35 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.19 + dev: true /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/source-map@0.3.5: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 + dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true /@jridgewell/trace-mapping@0.3.19: resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -2235,6 +2223,7 @@ packages: - uglify-js - vue-template-compiler - webpack-cli + dev: true /@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==} @@ -2436,6 +2425,43 @@ packages: reflect-metadata: 0.1.13 dev: false + /@nestjs/mapped-types@2.0.4(@nestjs/common@10.2.8)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13): + resolution: {integrity: sha512-xl+gUSp0B+ln1VSNoUftlglk8dfpUes3DHGxKZ5knuBxS5g2H/8p9/DSBOYWUfO5f4u9s6ffBPZ71WO+tbe5SA==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + class-transformer: ^0.4.0 || ^0.5.0 + class-validator: ^0.13.0 || ^0.14.0 + reflect-metadata: ^0.1.12 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + '@nestjs/common': 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/mapped-types@2.0.4(@nestjs/common@8.4.7)(class-validator@0.13.2)(reflect-metadata@0.1.13): + resolution: {integrity: sha512-xl+gUSp0B+ln1VSNoUftlglk8dfpUes3DHGxKZ5knuBxS5g2H/8p9/DSBOYWUfO5f4u9s6ffBPZ71WO+tbe5SA==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + class-transformer: ^0.4.0 || ^0.5.0 + class-validator: ^0.13.0 || ^0.14.0 + reflect-metadata: ^0.1.12 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + '@nestjs/common': 8.4.7(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.1) + class-validator: 0.13.2 + reflect-metadata: 0.1.13 + dev: false + /@nestjs/microservices@10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(nats@2.18.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): resolution: {integrity: sha512-zfrD7hgN3ygrjicASQUVdnsh3V7vTmhZfttZ7ZNjihwqEoweJFgWmqKkpAfbCrIP7z19gT4JQ8hO4W0Alwdt0w==} peerDependencies: @@ -2478,9 +2504,53 @@ packages: nats: 2.18.0 reflect-metadata: 0.1.13 rxjs: 7.8.1 - tslib: 2.6.2 + 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: + '@grpc/grpc-js': '*' + '@nestjs/common': ^8.0.0 + '@nestjs/core': ^8.0.0 + '@nestjs/websockets': ^8.0.0 + amqp-connection-manager: '*' + amqplib: '*' + cache-manager: '*' + kafkajs: '*' + mqtt: '*' + nats: '*' + redis: '*' + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + '@grpc/grpc-js': + optional: true + '@nestjs/websockets': + optional: true + amqp-connection-manager: + optional: true + amqplib: + optional: true + cache-manager: + optional: true + kafkajs: + optional: true + mqtt: + optional: true + nats: + optional: true + redis: + optional: true + dependencies: + '@nestjs/common': 8.4.7(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 8.4.7(@nestjs/common@8.4.7)(@nestjs/microservices@8.4.7)(@nestjs/platform-express@8.4.7)(reflect-metadata@0.1.13)(rxjs@7.8.1) + iterare: 1.2.1 + nats: 2.17.0 + reflect-metadata: 0.1.13 + rxjs: 7.8.1 + tslib: 2.4.0 - /@nestjs/microservices@8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(nats@2.17.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): + /@nestjs/microservices@8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(nats@2.18.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): resolution: {integrity: sha512-JZX29tBWbbPa+Q06QcCbwKTyEsOFHAPrxgfEkRNwoaiEqqCsITT9w2n5bcz3vlUurdpy5dIgX3/almbitghbKg==} peerDependencies: '@grpc/grpc-js': '*' @@ -2519,10 +2589,11 @@ packages: '@nestjs/common': 8.4.7(class-transformer@0.5.1)(class-validator@0.13.2)(reflect-metadata@0.1.13)(rxjs@7.8.1) '@nestjs/core': 8.4.7(@nestjs/common@8.4.7)(@nestjs/microservices@8.4.7)(@nestjs/platform-express@8.4.7)(reflect-metadata@0.1.13)(rxjs@7.8.1) iterare: 1.2.1 - nats: 2.17.0 + nats: 2.18.0 reflect-metadata: 0.1.13 rxjs: 7.8.1 tslib: 2.4.0 + dev: false /@nestjs/platform-express@10.2.8(@nestjs/common@10.2.8)(@nestjs/core@10.2.8): resolution: {integrity: sha512-WoSSVtwIRc5AdGMHWVzWZK4JZLT0f4o2xW8P9gQvcX+omL8W1kXCfY8GQYXNBG84XmBNYH8r0FtC8oMe/lH5NQ==} @@ -2570,6 +2641,20 @@ packages: uuid: 8.3.2 dev: false + /@nestjs/schedule@4.0.0(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(reflect-metadata@0.1.13): + resolution: {integrity: sha512-zz4h54m/F/1qyQKvMJCRphmuwGqJltDAkFxUXCVqJBXEs5kbPt93Pza3heCQOcMH22MZNhGlc9DmDMLXVHmgVQ==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 + reflect-metadata: ^0.1.12 + 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) + cron: 3.1.3 + reflect-metadata: 0.1.13 + uuid: 9.0.1 + dev: false + /@nestjs/schematics@10.0.3(chokidar@3.5.3)(typescript@5.2.2): resolution: {integrity: sha512-2BRujK0GqGQ7j1Zpz+obVfskDnnOeVKt5aXoSaVngKo8Oczy8uYCY+R547TQB+Kf35epdfFER2pVnQrX3/It5A==} peerDependencies: @@ -2598,6 +2683,7 @@ packages: typescript: 4.7.4 transitivePeerDependencies: - chokidar + dev: true /@nestjs/schematics@8.0.11(typescript@4.9.5): resolution: {integrity: sha512-W/WzaxgH5aE01AiIErE9QrQJ73VR/M/8p8pq0LZmjmNcjZqU5kQyOWUxZg13WYfSpJdOa62t6TZRtFDmgZPoIg==} @@ -2612,6 +2698,7 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - chokidar + dev: true /@nestjs/swagger@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): resolution: {integrity: sha512-7dNa08WCnTsW/oAk3Ujde+z64JMfNm19DhpXasFR8oJp/9pggYAbYU927HpA+GJsSFJX6adjIRZsCKUqaGWznw==} @@ -2639,8 +2726,8 @@ 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==} + /@nestjs/swagger@7.1.16(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13): + resolution: {integrity: sha512-f9KBk/BX9MUKPTj7tQNYJ124wV/jP5W2lwWHLGwe/4qQXixuDOo39zP55HIJ44LE7S04B7BOeUOo9GBJD/vRcw==} peerDependencies: '@fastify/static': ^6.0.0 '@nestjs/common': ^9.0.0 || ^10.0.0 @@ -2780,6 +2867,7 @@ packages: '@nestjs/microservices': 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7)(nats@2.17.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) '@nestjs/platform-express': 8.4.7(@nestjs/common@8.4.7)(@nestjs/core@8.4.7) tslib: 2.4.0 + dev: true /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -3239,18 +3327,22 @@ packages: dependencies: '@types/eslint': 8.44.3 '@types/estree': 1.0.2 + dev: true /@types/eslint@8.44.3: resolution: {integrity: sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==} dependencies: - '@types/estree': 0.0.51 + '@types/estree': 1.0.2 '@types/json-schema': 7.0.13 + dev: true /@types/estree@0.0.51: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + dev: true /@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==} @@ -3280,13 +3372,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 16.18.57 + '@types/node': 20.9.0 dev: false /@types/graceful-fs@4.1.7: resolution: {integrity: sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==} dependencies: - '@types/node': 16.18.57 + '@types/node': 20.9.0 dev: true /@types/http-cache-semantics@4.0.4: @@ -3333,14 +3425,17 @@ packages: /@types/json-schema@7.0.13: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} + dev: true /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true /@types/jsonwebtoken@8.5.9: resolution: {integrity: sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==} dependencies: - '@types/node': 16.18.57 + '@types/node': 20.9.0 + dev: false /@types/jsonwebtoken@9.0.5: resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==} @@ -3353,6 +3448,10 @@ packages: '@types/node': 20.9.0 dev: true + /@types/luxon@3.3.4: + resolution: {integrity: sha512-H9OXxv4EzJwE75aTPKpiGXJq+y4LFxjpsdgKwSmr503P5DkWc3AG7VAFYrFNVvqemT5DfgZJV9itYhqBHSGujA==} + dev: false + /@types/mime@1.3.3: resolution: {integrity: sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==} @@ -3366,7 +3465,7 @@ packages: /@types/node-fetch@2.6.6: resolution: {integrity: sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==} dependencies: - '@types/node': 16.18.57 + '@types/node': 20.9.0 form-data: 4.0.0 dev: false @@ -3380,6 +3479,7 @@ packages: /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + dev: true /@types/prettier@2.7.3: resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} @@ -3418,11 +3518,11 @@ packages: resolution: {integrity: sha512-++uMLOQSLlse1kCfEOwhgmHuaABZwinkylmUKCpvcEGZUov3TtM+gJZloSkW/W+9pEAEg/VBOwiSR05oqJsa5A==} dependencies: '@types/glob': 7.2.0 - '@types/node': 16.18.57 + '@types/node': 20.9.0 dev: false - /@types/simple-oauth2@4.1.3: - resolution: {integrity: sha512-fj4Qxko32X75+pM/IUDIhWct/tAcV2s/5EY6oM9RcRmLGk23CBlxecdNaW/w87RAdo3rGnlK2t+A1JRYFqVWFw==} + /@types/simple-oauth2@5.0.7: + resolution: {integrity: sha512-8JbWVJbiTSBQP/7eiyGKyXWAqp3dKQZpaA+pdW16FCi32ujkzRMG8JfjoAzdWt6W8U591ZNdHcPtP2D7ILTKuA==} dev: true /@types/stack-utils@2.0.1: @@ -3456,7 +3556,7 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 16.18.57 + '@types/node': 20.9.0 dev: false /@types/yargs-parser@21.0.1: @@ -3503,6 +3603,34 @@ packages: - supports-color dev: true + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(typescript@4.9.5): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.53.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2): resolution: {integrity: sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==} engines: {node: ^16.0.0 || >=18.0.0} @@ -3552,6 +3680,26 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.53.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@6.11.0(eslint@8.53.0)(typescript@5.2.2): resolution: {integrity: sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -3609,6 +3757,26 @@ packages: - supports-color dev: true + /@typescript-eslint/type-utils@5.62.0(eslint@8.53.0)(typescript@4.9.5): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.53.0 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/type-utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): resolution: {integrity: sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -3722,6 +3890,26 @@ packages: - typescript dev: true + /@typescript-eslint/utils@5.62.0(eslint@8.53.0)(typescript@4.9.5): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + eslint: 8.53.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/utils@5.62.0(eslint@8.53.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3786,6 +3974,7 @@ packages: dependencies: '@webassemblyjs/helper-numbers': 1.11.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + dev: true /@webassemblyjs/ast@1.11.6: resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} @@ -3796,6 +3985,7 @@ packages: /@webassemblyjs/floating-point-hex-parser@1.11.1: resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} + dev: true /@webassemblyjs/floating-point-hex-parser@1.11.6: resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} @@ -3803,6 +3993,7 @@ packages: /@webassemblyjs/helper-api-error@1.11.1: resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} + dev: true /@webassemblyjs/helper-api-error@1.11.6: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} @@ -3810,6 +4001,7 @@ packages: /@webassemblyjs/helper-buffer@1.11.1: resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} + dev: true /@webassemblyjs/helper-buffer@1.11.6: resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} @@ -3821,6 +4013,7 @@ packages: '@webassemblyjs/floating-point-hex-parser': 1.11.1 '@webassemblyjs/helper-api-error': 1.11.1 '@xtuc/long': 4.2.2 + dev: true /@webassemblyjs/helper-numbers@1.11.6: resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} @@ -3832,6 +4025,7 @@ packages: /@webassemblyjs/helper-wasm-bytecode@1.11.1: resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} + dev: true /@webassemblyjs/helper-wasm-bytecode@1.11.6: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} @@ -3844,6 +4038,7 @@ packages: '@webassemblyjs/helper-buffer': 1.11.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.1 '@webassemblyjs/wasm-gen': 1.11.1 + dev: true /@webassemblyjs/helper-wasm-section@1.11.6: resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} @@ -3858,6 +4053,7 @@ packages: resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} dependencies: '@xtuc/ieee754': 1.2.0 + dev: true /@webassemblyjs/ieee754@1.11.6: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} @@ -3869,6 +4065,7 @@ packages: resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} dependencies: '@xtuc/long': 4.2.2 + dev: true /@webassemblyjs/leb128@1.11.6: resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} @@ -3878,6 +4075,7 @@ packages: /@webassemblyjs/utf8@1.11.1: resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} + dev: true /@webassemblyjs/utf8@1.11.6: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} @@ -3894,6 +4092,7 @@ packages: '@webassemblyjs/wasm-opt': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 '@webassemblyjs/wast-printer': 1.11.1 + dev: true /@webassemblyjs/wasm-edit@1.11.6: resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} @@ -3916,6 +4115,7 @@ packages: '@webassemblyjs/ieee754': 1.11.1 '@webassemblyjs/leb128': 1.11.1 '@webassemblyjs/utf8': 1.11.1 + dev: true /@webassemblyjs/wasm-gen@1.11.6: resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} @@ -3934,6 +4134,7 @@ packages: '@webassemblyjs/helper-buffer': 1.11.1 '@webassemblyjs/wasm-gen': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 + dev: true /@webassemblyjs/wasm-opt@1.11.6: resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} @@ -3953,6 +4154,7 @@ packages: '@webassemblyjs/ieee754': 1.11.1 '@webassemblyjs/leb128': 1.11.1 '@webassemblyjs/utf8': 1.11.1 + dev: true /@webassemblyjs/wasm-parser@1.11.6: resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} @@ -3970,6 +4172,7 @@ packages: dependencies: '@webassemblyjs/ast': 1.11.1 '@xtuc/long': 4.2.2 + dev: true /@webassemblyjs/wast-printer@1.11.6: resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} @@ -3980,9 +4183,11 @@ packages: /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} @@ -4098,6 +4303,7 @@ packages: optional: true dependencies: ajv: 8.9.0 + dev: true /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} @@ -4105,6 +4311,7 @@ packages: ajv: ^6.9.1 dependencies: ajv: 6.12.6 + dev: true /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -4130,6 +4337,7 @@ packages: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 + dev: true /ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -4140,6 +4348,7 @@ packages: /ansi-colors@4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} engines: {node: '>=6'} + dev: true /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} @@ -4151,6 +4360,7 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.21.3 + dev: true /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -4166,6 +4376,7 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -4194,6 +4405,7 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + dev: true /append-field@0.1.0: resolution: {integrity: sha512-8BgHoIwbQZaAQgDZLBu2vQoXHgUpSx4vQK1qv7e6R8YfbiSf4fCaBPJRtM1BaxVn1rIHc5ftv0cklsJ78BkouQ==} @@ -4539,6 +4751,7 @@ packages: /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + dev: true /binary-search@1.3.6: resolution: {integrity: sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==} @@ -4558,6 +4771,7 @@ packages: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 + dev: true /bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} @@ -4673,6 +4887,7 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 + dev: true /breadth-filter@2.0.0: resolution: {integrity: sha512-thQShDXnFWSk2oVBixRCyrWsFoV5tfOpWKHmxwafHQDNxCfDBk539utpvytNjmlFrTMqz41poLwJvA1MW3z0MQ==} @@ -4695,6 +4910,7 @@ packages: electron-to-chromium: 1.4.543 node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) + dev: true /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -4726,6 +4942,7 @@ packages: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + dev: true /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -4824,6 +5041,7 @@ packages: /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + dev: true /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} @@ -4836,6 +5054,7 @@ packages: /caniuse-lite@1.0.30001546: resolution: {integrity: sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==} + dev: true /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -4844,6 +5063,7 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true /chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} @@ -4851,6 +5071,7 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -4866,6 +5087,7 @@ packages: /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true /check-disk-space@3.3.0: resolution: {integrity: sha512-Hvr+Nr01xSSvuCpXvJ8oZ2iXjIu4XT3uHbw3g7F/Uiw6O5xk8c/Ot7ZGFDaTRDf2Bz8AdWA4DvpAgCJVKt8arw==} @@ -4890,6 +5112,7 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 + dev: true /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} @@ -4899,6 +5122,7 @@ packages: /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} + dev: true /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} @@ -4962,10 +5186,12 @@ packages: engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 + dev: true /cli-spinners@2.9.1: resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} engines: {node: '>=6'} + dev: true /cli-table3@0.6.2: resolution: {integrity: sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==} @@ -4974,6 +5200,7 @@ packages: string-width: 4.2.3 optionalDependencies: '@colors/colors': 1.5.0 + dev: true /cli-table3@0.6.3: resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} @@ -4987,6 +5214,7 @@ packages: /cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} + dev: true /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} @@ -5013,6 +5241,7 @@ packages: /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + dev: true /co-body@6.1.0: resolution: {integrity: sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==} @@ -5088,6 +5317,7 @@ packages: /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + dev: true /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} @@ -5207,6 +5437,7 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 + dev: true /cosmiconfig@8.3.6(typescript@5.2.2): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} @@ -5253,6 +5484,13 @@ packages: moment-timezone: 0.5.43 dev: false + /cron@3.1.3: + resolution: {integrity: sha512-KVxeKTKYj2eNzN4ElnT6nRSbjbfhyxR92O/Jdp6SH3pc05CDJws59jBrZWEMQlxevCiE6QUTrXy+Im3vC3oD3A==} + dependencies: + '@types/luxon': 3.3.4 + luxon: 3.4.4 + dev: false + /cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: @@ -5268,6 +5506,7 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + dev: true /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} @@ -5393,6 +5632,7 @@ packages: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 + dev: true /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} @@ -5608,6 +5848,7 @@ packages: /electron-to-chromium@1.4.543: resolution: {integrity: sha512-t2ZP4AcGE0iKCCQCBx/K2426crYdxD3YU6l0uK2EO3FZH0pbC4pFz/sZm2ruZsND6hQBTcDWWlo/MLpiOdif5g==} + dev: true /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -5653,6 +5894,7 @@ packages: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 + dev: true /env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} @@ -5674,6 +5916,7 @@ packages: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: true /error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} @@ -5729,6 +5972,7 @@ packages: /es-module-lexer@0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + dev: true /es-module-lexer@1.3.1: resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} @@ -5766,6 +6010,7 @@ packages: /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + dev: true /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} @@ -5808,6 +6053,21 @@ packages: semver: 6.3.1 dev: true + /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.0)(eslint@8.53.0): + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.53.0 + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0) + object.assign: 4.1.4 + object.entries: 1.1.7 + semver: 6.3.1 + dev: true + /eslint-config-airbnb-typescript@16.2.0(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.28.1)(eslint@8.50.0): resolution: {integrity: sha512-OUaMPZpTOZGKd5tXOjJ9PRU4iYNW/Z5DoHIynjsVK/FpkWdiY5+nxQW6TiJAlLwVI1l53xUOrnlZWtVBVQzuWA==} peerDependencies: @@ -5823,6 +6083,21 @@ packages: eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.50.0) dev: true + /eslint-config-airbnb-typescript@16.2.0(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.29.0)(eslint@8.53.0): + resolution: {integrity: sha512-OUaMPZpTOZGKd5tXOjJ9PRU4iYNW/Z5DoHIynjsVK/FpkWdiY5+nxQW6TiJAlLwVI1l53xUOrnlZWtVBVQzuWA==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + '@typescript-eslint/parser': ^5.0.0 + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + dependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5) + eslint: 8.53.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.0)(eslint@8.53.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0) + dev: true + /eslint-config-prettier@8.10.0(eslint@8.50.0): resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true @@ -5832,6 +6107,15 @@ packages: eslint: 8.50.0 dev: true + /eslint-config-prettier@8.10.0(eslint@8.53.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.53.0 + dev: true + /eslint-config-prettier@9.0.0(eslint@8.53.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true @@ -5845,13 +6129,71 @@ packages: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.13.0 - resolve: 1.22.6 + is-core-module: 2.13.1 + resolve: 1.22.6 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.50.0)(typescript@4.9.5) + debug: 3.2.7 + eslint: 8.50.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5) + debug: 3.2.7 + eslint: 8.53.0 + eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.11.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -5872,9 +6214,9 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.50.0)(typescript@4.9.5) + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.50.0 + eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color @@ -5915,6 +6257,76 @@ packages: - supports-color dev: true + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0): + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.53.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0): + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.53.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.11.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-plugin-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} @@ -5954,6 +6366,23 @@ packages: prettier-linter-helpers: 1.0.0 dev: true + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.53.0)(prettier@2.8.8): + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.53.0 + eslint-config-prettier: 8.10.0(eslint@8.53.0) + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + dev: true + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0): resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -5975,12 +6404,19 @@ packages: synckit: 0.8.5 dev: true + /eslint-plugin-workspaces@0.9.0: + resolution: {integrity: sha512-krMuZ+yZgzwv1oTBfz50oamNVPDIm7CDyot3i1GRKBqMD2oXAwnXHLQWH7ctpV8k6YVrkhcaZhuV9IJxD8OPAQ==} + dependencies: + find-workspaces: 0.2.0 + dev: true + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + dev: true /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} @@ -6115,14 +6551,17 @@ packages: engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 + dev: true /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} + dev: true /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + dev: true /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -6141,6 +6580,7 @@ packages: /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + dev: true /execa@0.7.0: resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} @@ -6168,6 +6608,7 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + dev: true /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} @@ -6346,6 +6787,7 @@ packages: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 + dev: true /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -6421,6 +6863,7 @@ packages: engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 + dev: true /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} @@ -6461,6 +6904,7 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 + dev: true /filter-obj@1.1.0: resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} @@ -6504,6 +6948,14 @@ packages: semver-regex: 4.0.5 dev: true + /find-workspaces@0.2.0: + resolution: {integrity: sha512-OTHryv88yjzwvbXHGi0+XRFu7Jqe5pFuIR2mhqdatDJQOBJd7MFJOPFJv4EbNo8n1BNM/13Y2KcyDpFQYf0ETw==} + dependencies: + fast-glob: 3.3.1 + pkg-types: 1.0.3 + yaml: 2.3.4 + dev: true + /flat-cache@3.1.0: resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} engines: {node: '>=12.0.0'} @@ -6573,6 +7025,7 @@ packages: tapable: 2.2.1 typescript: 4.7.4 webpack: 5.73.0 + dev: true /fork-ts-checker-webpack-plugin@9.0.2(typescript@5.2.2)(webpack@5.89.0): resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} @@ -6644,6 +7097,7 @@ packages: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 + dev: true /fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} @@ -6654,6 +7108,7 @@ packages: /fs-monkey@1.0.5: resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + dev: true /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -6663,11 +7118,16 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: true optional: true /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} @@ -6726,6 +7186,7 @@ packages: engines: {node: '>=8'} dependencies: pump: 3.0.0 + dev: true /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} @@ -6744,6 +7205,7 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + dev: true /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} @@ -6754,6 +7216,7 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true /glob@10.3.10: resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} @@ -6863,6 +7326,7 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + dev: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -6900,6 +7364,13 @@ packages: resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} engines: {node: '>= 0.4.0'} + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + /hexoid@1.0.0: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} engines: {node: '>=8'} @@ -6999,6 +7470,7 @@ packages: /human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} + dev: true /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} @@ -7058,6 +7530,7 @@ packages: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true /import-in-the-middle@1.4.2: resolution: {integrity: sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==} @@ -7138,6 +7611,7 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 + dev: true /inquirer@8.2.0: resolution: {integrity: sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==} @@ -7157,6 +7631,7 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 + dev: true /inquirer@8.2.4: resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} @@ -7229,6 +7704,7 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -7244,6 +7720,7 @@ packages: engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 + dev: true /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -7261,6 +7738,12 @@ packages: dependencies: has: 1.0.4 + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -7282,6 +7765,7 @@ packages: /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + dev: true /is-finite@1.1.0: resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} @@ -7313,6 +7797,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 + dev: true /is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} @@ -7333,6 +7818,7 @@ packages: /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} + dev: true /is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} @@ -7366,6 +7852,7 @@ packages: /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + dev: true /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} @@ -7432,6 +7919,7 @@ packages: /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} @@ -7562,7 +8050,7 @@ packages: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -7813,7 +8301,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -7831,7 +8319,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 jest-mock: 27.5.1 jest-util: 27.5.1 dev: true @@ -7863,7 +8351,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.7 - '@types/node': 16.18.57 + '@types/node': 20.9.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -7904,7 +8392,7 @@ packages: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -7992,7 +8480,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 dev: true /jest-mock@29.7.0: @@ -8099,7 +8587,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.11 @@ -8215,7 +8703,7 @@ packages: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 16.18.57 + '@types/node': 20.9.0 graceful-fs: 4.2.11 dev: true @@ -8282,7 +8770,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -8331,7 +8819,7 @@ packages: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.57 + '@types/node': 20.9.0 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -8359,6 +8847,7 @@ packages: '@types/node': 20.9.0 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: true /jest-worker@29.7.0: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} @@ -8436,6 +8925,7 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -8505,12 +8995,14 @@ packages: /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -8528,6 +9020,7 @@ packages: hasBin: true dependencies: minimist: 1.2.8 + dev: true /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} @@ -8537,6 +9030,7 @@ packages: /jsonc-parser@3.0.0: resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} + dev: true /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} @@ -8548,6 +9042,7 @@ packages: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.11 + dev: true /jsonwebtoken@8.5.1: resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} @@ -8751,6 +9246,7 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true /liquibase@4.4.0: resolution: {integrity: sha512-oD/ZJgxpoR43V5Vt7o3r9ftYl16PyFco5l1EpKI4VKDQLtm1acHsyqxjA96S6c+rP51PafC4xug1Z6IJLyyAXA==} @@ -8761,6 +9257,7 @@ packages: /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} + dev: true /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} @@ -8850,6 +9347,7 @@ packages: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 + dev: true /logform@2.5.1: resolution: {integrity: sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==} @@ -8919,14 +9417,21 @@ packages: resolution: {integrity: sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==} dev: false + /luxon@3.4.4: + resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} + engines: {node: '>=12'} + dev: false + /macos-release@2.5.1: resolution: {integrity: sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==} engines: {node: '>=6'} + dev: true /magic-string@0.25.7: resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} dependencies: sourcemap-codec: 1.4.8 + dev: true /magic-string@0.30.1: resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} @@ -9019,12 +9524,14 @@ packages: engines: {node: '>= 4.0.0'} dependencies: fs-monkey: 1.0.5 + dev: true /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -9067,6 +9574,7 @@ packages: /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + dev: true /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} @@ -9111,6 +9619,7 @@ packages: /minimist@1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + dev: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -9190,6 +9699,15 @@ packages: hasBin: true dev: false + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + dependencies: + acorn: 8.10.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.2 + dev: true + /module-details-from-path@1.0.3: resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} requiresBuild: true @@ -9290,6 +9808,7 @@ packages: /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true /nan@2.18.0: resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} @@ -9321,6 +9840,7 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true /next-line@1.1.0: resolution: {integrity: sha512-+I10J3wKNoKddNxn0CNpoZ3eTZuqxjNM3b1GImVx22+ePI+Y15P8g/j3WsbP0fhzzrFzrtjOAoq5NCCucswXOQ==} @@ -9342,6 +9862,7 @@ packages: resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} dependencies: lodash: 4.17.21 + dev: true /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} @@ -9396,6 +9917,7 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true /nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} @@ -9408,6 +9930,7 @@ packages: /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + dev: true /normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} @@ -9426,6 +9949,7 @@ packages: engines: {node: '>=8'} dependencies: path-key: 3.1.1 + dev: true /npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} @@ -9565,6 +10089,7 @@ packages: engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 + dev: true /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -9635,6 +10160,7 @@ packages: log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 + dev: true /original-url@1.2.3: resolution: {integrity: sha512-BYm+pKYLtS4mVe/mgT3YKGtWV5HzN/XKiaIu1aK4rsxyjuHeTW9N+xVBEpJcY1onB3nccfH0RbzUEoimMqFUHQ==} @@ -9657,10 +10183,12 @@ packages: dependencies: macos-release: 2.5.1 windows-release: 4.0.0 + dev: true /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + dev: true /p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} @@ -9721,6 +10249,7 @@ packages: engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} @@ -9730,6 +10259,7 @@ packages: error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -9756,6 +10286,7 @@ packages: /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + dev: true /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} @@ -9794,6 +10325,11 @@ packages: /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + dev: true + + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true /peek-readable@5.0.0: resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} @@ -9866,10 +10402,12 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + dev: true /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} @@ -9909,9 +10447,18 @@ packages: find-up: 4.1.0 dev: true + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 + dev: true + /pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} + dev: true /postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} @@ -10055,6 +10602,7 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 + dev: true /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} @@ -10120,6 +10668,7 @@ packages: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 + dev: true /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} @@ -10193,6 +10742,7 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + dev: true /rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} @@ -10229,6 +10779,7 @@ packages: /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + dev: true /require-in-the-middle@7.2.0: resolution: {integrity: sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==} @@ -10261,6 +10812,7 @@ packages: /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + dev: true /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} @@ -10297,6 +10849,7 @@ packages: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 + dev: true /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} @@ -10389,6 +10942,7 @@ packages: /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} + dev: true /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -10401,6 +10955,7 @@ packages: engines: {npm: '>=2.0.0'} dependencies: tslib: 1.14.1 + dev: true /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -10451,6 +11006,7 @@ packages: '@types/json-schema': 7.0.13 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} @@ -10508,6 +11064,7 @@ packages: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 + dev: true /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} @@ -10553,6 +11110,7 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + dev: true /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} @@ -10562,6 +11120,7 @@ packages: /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + dev: true /shelljs@0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} @@ -10595,17 +11154,6 @@ packages: engines: {node: '>=14'} dev: true - /simple-oauth2@5.0.0: - resolution: {integrity: sha512-8291lo/z5ZdpmiOFzOs1kF3cxn22bMj5FFH+DNUppLJrpoIlM1QnFiE7KpshHu3J3i21TVcx4yW+gXYjdCKDLQ==} - dependencies: - '@hapi/hoek': 10.0.1 - '@hapi/wreck': 18.0.1 - debug: 4.3.4 - joi: 17.11.0 - transitivePeerDependencies: - - supports-color - dev: false - /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: @@ -10688,6 +11236,7 @@ packages: /source-map@0.7.3: resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} engines: {node: '>= 8'} + dev: true /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} @@ -10706,6 +11255,7 @@ packages: /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead + dev: true /split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} @@ -10870,6 +11420,7 @@ packages: /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + dev: true /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} @@ -10884,6 +11435,7 @@ packages: /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + dev: true /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} @@ -10941,6 +11493,7 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -10953,6 +11506,7 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: true /supports-hyperlinks@2.3.0: resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} @@ -10971,7 +11525,6 @@ packages: /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==} @@ -10989,12 +11542,12 @@ packages: express: '>=4.0.0 || >=5.0.0-beta' dependencies: express: 4.18.2 - swagger-ui-dist: 5.9.0 - dev: false + swagger-ui-dist: 5.9.1 /symbol-observable@4.0.0: resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} engines: {node: '>=0.10'} + dev: true /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -11011,6 +11564,7 @@ packages: /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + dev: true /tar@6.2.0: resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} @@ -11083,6 +11637,7 @@ packages: serialize-javascript: 6.0.1 terser: 5.21.0 webpack: 5.73.0 + dev: true /terser-webpack-plugin@5.3.9(webpack@5.89.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} @@ -11117,6 +11672,7 @@ packages: acorn: 8.10.0 commander: 2.20.3 source-map-support: 0.5.21 + dev: true /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -11141,6 +11697,7 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true /titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} @@ -11152,6 +11709,7 @@ packages: engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 + dev: true /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -11167,6 +11725,7 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + dev: true /to-source-code@1.0.2: resolution: {integrity: sha512-YzWtjmNIf3E75eZYa7m1SCyl0vgOGoTzdpH3svfa8SUm5rqTgl9hnDolrAGOghCF9P2gsITXQoMrlujOoz+RPw==} @@ -11219,6 +11778,7 @@ packages: /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + dev: true /trim-repeated@2.0.0: resolution: {integrity: sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==} @@ -11360,6 +11920,7 @@ packages: chalk: 4.1.2 enhanced-resolve: 5.15.0 tsconfig-paths: 3.14.2 + dev: true /tsconfig-paths-webpack-plugin@4.1.0: resolution: {integrity: sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==} @@ -11377,6 +11938,7 @@ packages: json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + dev: true /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} @@ -11385,6 +11947,7 @@ packages: json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + dev: true /tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} @@ -11467,6 +12030,7 @@ packages: /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} + dev: true /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} @@ -11541,11 +12105,13 @@ packages: resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} engines: {node: '>=4.2.0'} hasBin: true + dev: true /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true + dev: true /typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} @@ -11553,6 +12119,10 @@ packages: hasBin: true dev: true + /ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + dev: true + /uid-safe@2.1.5: resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} engines: {node: '>= 0.8'} @@ -11625,6 +12195,7 @@ packages: /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + dev: true /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} @@ -11644,6 +12215,7 @@ packages: browserslist: 4.22.1 escalade: 3.1.1 picocolors: 1.0.0 + dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -11679,6 +12251,11 @@ packages: hasBin: true dev: false + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true @@ -11747,11 +12324,13 @@ packages: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + dev: true /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 + dev: true /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -11775,10 +12354,12 @@ packages: /webpack-node-externals@3.0.0: resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} engines: {node: '>=6'} + dev: true /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} + dev: true /webpack@5.73.0: resolution: {integrity: sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==} @@ -11818,6 +12399,7 @@ packages: - '@swc/core' - esbuild - uglify-js + dev: true /webpack@5.89.0: resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} @@ -11985,6 +12567,7 @@ packages: engines: {node: '>=10'} dependencies: execa: 4.1.0 + dev: true /winston-elasticsearch@0.16.1: resolution: {integrity: sha512-IZ7NWs+tBYSRf9CKYs0xmS42IIfyKnd+miWrGl58WLfDLBphIhqwol6im5dUcW2xjMCP4hSovaqipAgzC5MCYQ==} @@ -12155,6 +12738,11 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + dev: true + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'}