From 9daa28ae1230e76907e10cd33b43845060da2a39 Mon Sep 17 00:00:00 2001 From: nrusso Date: Sat, 10 Feb 2024 12:57:09 -0300 Subject: [PATCH 1/4] feat: add rabbitmq message broker service --- .env.dev | 6 + Dockerfile | 10 +- config/custom-environment-variables.json | 7 + config/default.json | 7 + docker-compose.yml | 44 +- package.json | 74 +- pnpm-lock.yaml | 2570 +++++------------ src/Config/Locales/en.json | 13 - src/Config/MainConfig.ts | 9 + src/Config/validateEnv.ts | 6 + .../Database/CreateMikroORMConnection.ts | 3 +- .../Factories/EntityMikroORMManagerFactory.ts | 3 +- src/Main/Infrastructure/Jobs/IJob.ts | 7 + .../Infrastructure/Orm/MongoosePaginator.ts | 4 +- .../Repositories/BaseMikroORMRepository.ts | 6 +- .../Domain/Enum/TypeNotificationEnum.ts | 3 +- .../Domain/Services/SendEmailService.ts | 12 +- .../UseCases/CreateSubscriptionUseCase.ts | 4 +- .../UseCases/NotificationEmailUseCase.ts | 18 + .../UseCases/SendMessageBrokerUseCase.ts | 25 + .../UseCases/SendPushNotificationUseCase.ts | 4 +- .../Jobs/NotificationEmailJob.ts | 15 + .../NotificationFastifyController.ts | 9 + .../Handlers/NotificationFastifyHandler.ts | 1 + src/Shared/DI/container.ts | 5 + src/Shared/Infrastructure/IMessageBroker.ts | 55 + .../Infrastructure/RabbitMQMessageBroker.ts | 73 + .../emails/auth/notificationExample.hbs | 14 + src/closed.ts | 41 +- src/index.ts | 13 +- src/worker.ts | 74 + 31 files changed, 1140 insertions(+), 1995 deletions(-) delete mode 100644 src/Config/Locales/en.json create mode 100644 src/Main/Infrastructure/Jobs/IJob.ts create mode 100644 src/Notification/Domain/UseCases/NotificationEmailUseCase.ts create mode 100644 src/Notification/Domain/UseCases/SendMessageBrokerUseCase.ts create mode 100644 src/Notification/Infrastructure/Jobs/NotificationEmailJob.ts create mode 100644 src/Shared/Infrastructure/IMessageBroker.ts create mode 100644 src/Shared/Infrastructure/RabbitMQMessageBroker.ts create mode 100644 src/Shared/Infrastructure/templates/emails/auth/notificationExample.hbs create mode 100644 src/worker.ts diff --git a/.env.dev b/.env.dev index 7da26b36..a7fd4e8c 100644 --- a/.env.dev +++ b/.env.dev @@ -30,6 +30,12 @@ CACHE_USER=experience CACHE_PASSWORD=ewsua132435 CACHE_ENABLE=false +MESSAGE_BROKER_PROTOCOL=amqp +MESSAGE_BROKER_HOST=rabbitmq +MESSAGE_BROKER_PORT=5672 +MESSAGE_BROKER_USER=user +MESSAGE_BROKER_PASSWORD=password + # MinIO config MINIO_HOST=minio MINIO_ACCESS_KEY=minio diff --git a/Dockerfile b/Dockerfile index 510189ba..07035e89 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,8 @@ -FROM digichanges/nexp:1.2 AS dev +FROM node:20-alpine AS dev + +RUN apk add dumb-init + +RUN corepack enable && corepack install --global pnpm@8.15.1 WORKDIR /home/node @@ -32,7 +36,9 @@ RUN pnpm install --production --ignore-scripts \ && cd node_modules/bcrypt \ && npm rebuild bcrypt --build-from-source -FROM digichanges/nexp:1.2 AS prod +FROM node:20-alpine AS prod + +RUN corepack enable && corepack install --global pnpm@8.15.1 ENV NODE_ENV production diff --git a/config/custom-environment-variables.json b/config/custom-environment-variables.json index 797c6ec5..9193f0a4 100644 --- a/config/custom-environment-variables.json +++ b/config/custom-environment-variables.json @@ -37,6 +37,13 @@ }, "enable": "CACHE_ENABLE" }, + "messageBroker": { + "protocol": "MESSAGE_BROKER_PROTOCOL", + "hostname": "MESSAGE_BROKER_HOST", + "port": "MESSAGE_BROKER_PORT", + "username": "MESSAGE_BROKER_USER", + "password": "MESSAGE_BROKER_PASSWORD" + }, "filesystem": { "minio": { "endPoint": "MINIO_HOST", diff --git a/config/default.json b/config/default.json index 8e6c123c..a1525b50 100644 --- a/config/default.json +++ b/config/default.json @@ -37,6 +37,13 @@ }, "enable": true }, + "messageBroker": { + "protocol": "amqp", + "hostname": "rabbitmq", + "port": 5672, + "username": "user", + "password": "password" + }, "filesystem": { "minio": { "endPoint": "minio", diff --git a/docker-compose.yml b/docker-compose.yml index 53e8a1ab..0168c284 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,11 +13,24 @@ services: ports: - "8089:8089" - "9229:9229" - labels: - - traefik.http.routers.api.rule=Host(`api.domain.com`) - - traefik.http.routers.api.tls=true - - traefik.http.routers.api.tls.certresolver=lets-encrypt - - traefik.port=80 + volumes: + - ./dist:/home/node/dist + - ./src:/home/node/src + - ./config:/home/node/config + - ./.env:/home/node/.env + networks: + - experiencenet + + worker: + container_name: experience_worker_1 + restart: always + tty: false + stdin_open: false + entrypoint: ["dumb-init", "pnpm", "worker-dev"] + build: + context: . + dockerfile: Dockerfile + target: dev volumes: - ./dist:/home/node/dist - ./src:/home/node/src @@ -34,8 +47,6 @@ services: dockerfile: Dockerfile ports: - "27018:27017" - networks: - - experiencenet environment: MONGODB_ROOT_PASSWORD: 123456 MONGODB_USERNAME: experience @@ -43,6 +54,21 @@ services: MONGODB_DATABASE: experience volumes: - data:/bitnami/mongodb + networks: + - experiencenet + + rabbitmq: + image: rabbitmq:3.9-management-alpine + restart: always + container_name: experience_rabbitmq_1 + ports: + - "15672:15672" + - "5672:5672" + environment: + RABBITMQ_DEFAULT_USER: user + RABBITMQ_DEFAULT_PASS: password + networks: + - experiencenet mail: container_name: experience_mail_1 @@ -59,12 +85,12 @@ services: ulimits: memlock: -1 container_name: experience_cache_1 + ports: + - "6379:6379" environment: - DRAGONFLY_USER=experience - DRAGONFLY_PASSWORD=ewsua132435 - DISABLE_COMMANDS=FLUSHDB,FLUSHALL,CONFIG - ports: - - "6379:6379" networks: - experiencenet volumes: diff --git a/package.json b/package.json index 5dc76f5a..40bc5bf9 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "test-watch": "jest --watch --silent --coverage=false", "tsc": "tsc", "ts-check": "tsc -p tsconfig.json --noEmit", + "worker-dev": "node dist/src/worker.js", "sync:db": "ts-node src/Main/Presentation/Commands/SynchronizeDbCommand.ts" }, "keywords": [], @@ -33,39 +34,39 @@ "license": "MIT", "dependencies": { "@digichanges/shared-experience": "^1.4.1", - "@faker-js/faker": "^8.3.1", - "@fastify/compress": "^6.5.0", - "@fastify/cors": "^8.5.0", + "@faker-js/faker": "^8.4.0", + "@fastify/compress": "^7.0.0", + "@fastify/cors": "^9.0.1", "@fastify/helmet": "^11.1.1", "@godaddy/terminus": "^4.12.1", - "@mikro-orm/core": "^5.9.6", - "@mikro-orm/postgresql": "^5.9.6", - "@supabase/supabase-js": "^2.39.1", - "axios": "^1.6.2", + "@mikro-orm/core": "^6.0.7", + "@mikro-orm/postgresql": "^6.0.7", + "@supabase/supabase-js": "^2.39.3", + "amqplib": "^0.10.3", + "axios": "^1.6.7", "bcrypt": "^5.1.1", "commander": "^10.0.1", - "config": "^3.3.9", + "config": "^3.3.11", "dayjs": "^1.11.10", - "dependency-cruiser": "^16.0.0", - "dotenv": "^16.3.1", + "dependency-cruiser": "^16.1.0", + "dotenv": "^16.4.1", "envalid": "^8.0.0", - "fastify": "^4.25.2", + "fastify": "^4.26.0", "handlebars": "^4.7.8", "helmet": "^7.1.0", - "infisical": "^1.0.46", "jwt-simple": "^0.5.6", "md5": "^2.3.0", "minio": "^7.1.3", "mongodb": "^6.3.0", - "mongoose": "^7.6.7", - "multer": "^1.4.5-lts.1", + "mongoose": "^8.1.1", + "multer": "^2.0.0-rc.4", "nanoid": "^3.3.7", "node-cron": "^3.0.3", "nodemailer": "6.9.9", - "pg-mem": "^2.7.4", + "pg-mem": "^2.8.1", "pg-promise": "^11.5.4", - "pino": "^8.17.1", - "pino-pretty": "^10.3.0", + "pino": "^8.18.0", + "pino-pretty": "^10.3.1", "qs": "^6.11.2", "reflect-metadata": "^0.2.1", "rxjs": "^7.8.1", @@ -73,45 +74,46 @@ "tedis": "^0.1.12", "tslib": "^2.6.2", "tsyringe": "^4.8.0", - "web-push": "^3.6.6", + "web-push": "^3.6.7", "zod": "^3.22.4" }, "devDependencies": { - "@commitlint/cli": "^18.4.3", - "@commitlint/config-conventional": "^18.4.3", + "@commitlint/cli": "^18.6.0", + "@commitlint/config-conventional": "^18.6.0", "@shelf/jest-mongodb": "^4.2.0", + "@types/amqplib": "^0.10.4", "@types/bcrypt": "^5.0.2", "@types/config": "^0.0.41", - "@types/jest": "^29.5.6", + "@types/jest": "^29.5.12", "@types/jwt-simple": "^0.5.36", "@types/md5": "^2.3.5", - "@types/node": "^18.19.3", - "@types/node-cron": "^3.0.10", - "@types/nodemailer": "^6.4.13", - "@types/pg": "^8.10.7", - "@types/qs": "^6.9.9", - "@types/shelljs": "^0.8.14", + "@types/node": "^20.11.16", + "@types/node-cron": "^3.0.11", + "@types/nodemailer": "^6.4.14", + "@types/pg": "^8.11.0", + "@types/qs": "^6.9.11", + "@types/shelljs": "^0.8.15", "@types/supertest": "^2.0.16", - "@types/web-push": "^3.6.2", - "@typescript-eslint/eslint-plugin": "^6.16.0", - "@typescript-eslint/parser": "^6.16.0", + "@types/web-push": "^3.6.3", + "@typescript-eslint/eslint-plugin": "^6.20.0", + "@typescript-eslint/parser": "^6.20.0", "cpy": "^9.0.1", "eslint": "^8.56.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-prefer-arrow": "^1.2.3", - "husky": "^8.0.3", + "husky": "^9.0.10", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-environment-node": "^29.7.0", - "lint-staged": "^15.0.2", + "lint-staged": "^15.2.1", "madge": "^6.1.0", - "nodemon": "^3.0.2", + "nodemon": "^3.0.3", "rimraf": "^3.0.2", - "supertest": "^6.3.3", + "supertest": "^6.3.4", "ts-node": "^10.9.2", - "typescript": "^5.2.2" + "typescript": "^5.3.3" }, "engines": { - "node": ">=18.*" + "node": ">=20.*" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f71ac899..74b2e56d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,14 +9,14 @@ dependencies: specifier: ^1.4.1 version: 1.4.1 '@faker-js/faker': - specifier: ^8.3.1 - version: 8.3.1 + specifier: ^8.4.0 + version: 8.4.0 '@fastify/compress': - specifier: ^6.5.0 - version: 6.5.0 + specifier: ^7.0.0 + version: 7.0.0 '@fastify/cors': - specifier: ^8.5.0 - version: 8.5.0 + specifier: ^9.0.1 + version: 9.0.1 '@fastify/helmet': specifier: ^11.1.1 version: 11.1.1 @@ -24,17 +24,20 @@ dependencies: specifier: ^4.12.1 version: 4.12.1 '@mikro-orm/core': - specifier: ^5.9.6 - version: 5.9.6(@mikro-orm/postgresql@5.9.6) + specifier: ^6.0.7 + version: 6.0.7 '@mikro-orm/postgresql': - specifier: ^5.9.6 - version: 5.9.6(@mikro-orm/core@5.9.6) + specifier: ^6.0.7 + version: 6.0.7(@mikro-orm/core@6.0.7) '@supabase/supabase-js': - specifier: ^2.39.1 - version: 2.39.1 + specifier: ^2.39.3 + version: 2.39.3 + amqplib: + specifier: ^0.10.3 + version: 0.10.3 axios: - specifier: ^1.6.2 - version: 1.6.2 + specifier: ^1.6.7 + version: 1.6.7 bcrypt: specifier: ^5.1.1 version: 5.1.1 @@ -42,32 +45,29 @@ dependencies: specifier: ^10.0.1 version: 10.0.1 config: - specifier: ^3.3.9 - version: 3.3.9 + specifier: ^3.3.11 + version: 3.3.11 dayjs: specifier: ^1.11.10 version: 1.11.10 dependency-cruiser: - specifier: ^16.0.0 - version: 16.0.0 + specifier: ^16.1.0 + version: 16.1.0 dotenv: - specifier: ^16.3.1 - version: 16.3.1 + specifier: ^16.4.1 + version: 16.4.1 envalid: specifier: ^8.0.0 version: 8.0.0 fastify: - specifier: ^4.25.2 - version: 4.25.2 + specifier: ^4.26.0 + version: 4.26.0 handlebars: specifier: ^4.7.8 version: 4.7.8 helmet: specifier: ^7.1.0 version: 7.1.0 - infisical: - specifier: ^1.0.46 - version: 1.0.46 jwt-simple: specifier: ^0.5.6 version: 0.5.6 @@ -81,11 +81,11 @@ dependencies: specifier: ^6.3.0 version: 6.3.0 mongoose: - specifier: ^7.6.7 - version: 7.6.7 + specifier: ^8.1.1 + version: 8.1.1 multer: - specifier: ^1.4.5-lts.1 - version: 1.4.5-lts.1 + specifier: ^2.0.0-rc.4 + version: 2.0.0-rc.4 nanoid: specifier: ^3.3.7 version: 3.3.7 @@ -96,17 +96,17 @@ dependencies: specifier: 6.9.9 version: 6.9.9 pg-mem: - specifier: ^2.7.4 - version: 2.7.4(pg-promise@11.5.4) + specifier: ^2.8.1 + version: 2.8.1(@mikro-orm/core@6.0.7)(@mikro-orm/postgresql@6.0.7)(pg-promise@11.5.4) pg-promise: specifier: ^11.5.4 version: 11.5.4 pino: - specifier: ^8.17.1 - version: 8.17.1 + specifier: ^8.18.0 + version: 8.18.0 pino-pretty: - specifier: ^10.3.0 - version: 10.3.0 + specifier: ^10.3.1 + version: 10.3.1 qs: specifier: ^6.11.2 version: 6.11.2 @@ -129,22 +129,25 @@ dependencies: specifier: ^4.8.0 version: 4.8.0 web-push: - specifier: ^3.6.6 - version: 3.6.6 + specifier: ^3.6.7 + version: 3.6.7 zod: specifier: ^3.22.4 version: 3.22.4 devDependencies: '@commitlint/cli': - specifier: ^18.4.3 - version: 18.4.3(typescript@5.2.2) + specifier: ^18.6.0 + version: 18.6.0(@types/node@20.11.16)(typescript@5.3.3) '@commitlint/config-conventional': - specifier: ^18.4.3 - version: 18.4.3 + specifier: ^18.6.0 + version: 18.6.0 '@shelf/jest-mongodb': specifier: ^4.2.0 version: 4.2.0(jest-environment-node@29.7.0)(mongodb@6.3.0) + '@types/amqplib': + specifier: ^0.10.4 + version: 0.10.4 '@types/bcrypt': specifier: ^5.0.2 version: 5.0.2 @@ -152,8 +155,8 @@ devDependencies: specifier: ^0.0.41 version: 0.0.41 '@types/jest': - specifier: ^29.5.6 - version: 29.5.6 + specifier: ^29.5.12 + version: 29.5.12 '@types/jwt-simple': specifier: ^0.5.36 version: 0.5.36 @@ -161,35 +164,35 @@ devDependencies: specifier: ^2.3.5 version: 2.3.5 '@types/node': - specifier: ^18.19.3 - version: 18.19.3 + specifier: ^20.11.16 + version: 20.11.16 '@types/node-cron': - specifier: ^3.0.10 - version: 3.0.10 + specifier: ^3.0.11 + version: 3.0.11 '@types/nodemailer': - specifier: ^6.4.13 - version: 6.4.13 + specifier: ^6.4.14 + version: 6.4.14 '@types/pg': - specifier: ^8.10.7 - version: 8.10.7 + specifier: ^8.11.0 + version: 8.11.0 '@types/qs': - specifier: ^6.9.9 - version: 6.9.9 + specifier: ^6.9.11 + version: 6.9.11 '@types/shelljs': - specifier: ^0.8.14 - version: 0.8.14 + specifier: ^0.8.15 + version: 0.8.15 '@types/supertest': specifier: ^2.0.16 version: 2.0.16 '@types/web-push': - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.6.3 + version: 3.6.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.16.0 - version: 6.16.0(@typescript-eslint/parser@6.16.0)(eslint@8.56.0)(typescript@5.2.2) + specifier: ^6.20.0 + version: 6.20.0(@typescript-eslint/parser@6.20.0)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^6.16.0 - version: 6.16.0(eslint@8.56.0)(typescript@5.2.2) + specifier: ^6.20.0 + version: 6.20.0(eslint@8.56.0)(typescript@5.3.3) cpy: specifier: ^9.0.1 version: 9.0.1 @@ -198,16 +201,16 @@ devDependencies: version: 8.56.0 eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@6.16.0)(eslint@8.56.0) + version: 2.29.1(@typescript-eslint/parser@6.20.0)(eslint@8.56.0) eslint-plugin-prefer-arrow: specifier: ^1.2.3 version: 1.2.3(eslint@8.56.0) husky: - specifier: ^8.0.3 - version: 8.0.3 + specifier: ^9.0.10 + version: 9.0.10 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@18.19.3)(ts-node@10.9.2) + version: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -215,26 +218,26 @@ devDependencies: specifier: ^29.7.0 version: 29.7.0 lint-staged: - specifier: ^15.0.2 - version: 15.0.2 + specifier: ^15.2.1 + version: 15.2.1 madge: specifier: ^6.1.0 - version: 6.1.0(typescript@5.2.2) + version: 6.1.0(typescript@5.3.3) nodemon: - specifier: ^3.0.2 - version: 3.0.2 + specifier: ^3.0.3 + version: 3.0.3 rimraf: specifier: ^3.0.2 version: 3.0.2 supertest: - specifier: ^6.3.3 - version: 6.3.3 + specifier: ^6.3.4 + version: 6.3.4 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@18.19.3)(typescript@5.2.2) + version: 10.9.2(@types/node@20.11.16)(typescript@5.3.3) typescript: - specifier: ^5.2.2 - version: 5.2.2 + specifier: ^5.3.3 + version: 5.3.3 packages: @@ -243,6 +246,17 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@acuminous/bitsyntax@0.1.2: + resolution: {integrity: sha512-29lUK80d1muEQqiUsSo+3A0yP6CdspgC95EnKBMi22Xlwt79i/En4Vr67+cXhU+cZjbti3TgGGC5wy1stIywVQ==} + engines: {node: '>=0.8'} + dependencies: + buffer-more-ints: 1.0.0 + debug: 4.3.4(supports-color@5.5.0) + safe-buffer: 5.1.2 + transitivePeerDependencies: + - supports-color + dev: false + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} @@ -589,45 +603,46 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@commitlint/cli@18.4.3(typescript@5.2.2): - resolution: {integrity: sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww==} + /@commitlint/cli@18.6.0(@types/node@20.11.16)(typescript@5.3.3): + resolution: {integrity: sha512-FiH23cr9QG8VdfbmvJJZmdfHGVMCouOOAzoXZ3Cd7czGC52RbycwNt8YCI7SA69pAl+t30vh8LMaO/N+kcel6w==} engines: {node: '>=v18'} hasBin: true dependencies: - '@commitlint/format': 18.4.3 - '@commitlint/lint': 18.4.3 - '@commitlint/load': 18.4.3(typescript@5.2.2) - '@commitlint/read': 18.4.3 - '@commitlint/types': 18.4.3 + '@commitlint/format': 18.6.0 + '@commitlint/lint': 18.6.0 + '@commitlint/load': 18.6.0(@types/node@20.11.16)(typescript@5.3.3) + '@commitlint/read': 18.6.0 + '@commitlint/types': 18.6.0 execa: 5.1.1 lodash.isfunction: 3.0.9 resolve-from: 5.0.0 resolve-global: 1.0.0 yargs: 17.6.2 transitivePeerDependencies: + - '@types/node' - typescript dev: true - /@commitlint/config-conventional@18.4.3: - resolution: {integrity: sha512-729eRRaNta7JZF07qf6SAGSghoDEp9mH7yHU0m7ff0q89W97wDrWCyZ3yoV3mcQJwbhlmVmZPTkPcm7qiAu8WA==} + /@commitlint/config-conventional@18.6.0: + resolution: {integrity: sha512-CDCOf2eJz9D/TL44IBks0stM9TmdLCNE2B48owIU3YCadwzts/bobXPScagIgPQF6hhKYMEdj5zpUDlmbwuqwQ==} engines: {node: '>=v18'} dependencies: conventional-changelog-conventionalcommits: 7.0.2 dev: true - /@commitlint/config-validator@18.4.3: - resolution: {integrity: sha512-FPZZmTJBARPCyef9ohRC9EANiQEKSWIdatx5OlgeHKu878dWwpyeFauVkhzuBRJFcCA4Uvz/FDtlDKs008IHcA==} + /@commitlint/config-validator@18.6.0: + resolution: {integrity: sha512-Ptfa865arNozlkjxrYG3qt6wT9AlhNUHeuDyKEZiTL/l0ftncFhK/KN0t/EAMV2tec+0Mwxo0FmhbESj/bI+1g==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 18.4.3 + '@commitlint/types': 18.6.0 ajv: 8.12.0 dev: true - /@commitlint/ensure@18.4.3: - resolution: {integrity: sha512-MI4fwD9TWDVn4plF5+7JUyLLbkOdzIRBmVeNlk4dcGlkrVA+/l5GLcpN66q9LkFsFv6G2X31y89ApA3hqnqIFg==} + /@commitlint/ensure@18.6.0: + resolution: {integrity: sha512-xY07NmOBJ7JuhX3tic021PaeLepZARIQyqpAQoNQZoml1keBFfB6MbA7XlWZv0ebbarUFE4yhKxOPw+WFv7/qw==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 18.4.3 + '@commitlint/types': 18.6.0 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 @@ -635,119 +650,118 @@ packages: lodash.upperfirst: 4.3.1 dev: true - /@commitlint/execute-rule@18.4.3: - resolution: {integrity: sha512-t7FM4c+BdX9WWZCPrrbV5+0SWLgT3kCq7e7/GhHCreYifg3V8qyvO127HF796vyFql75n4TFF+5v1asOOWkV1Q==} + /@commitlint/execute-rule@18.4.4: + resolution: {integrity: sha512-a37Nd3bDQydtg9PCLLWM9ZC+GO7X5i4zJvrggJv5jBhaHsXeQ9ZWdO6ODYR+f0LxBXXNYK3geYXJrCWUCP8JEg==} engines: {node: '>=v18'} dev: true - /@commitlint/format@18.4.3: - resolution: {integrity: sha512-8b+ItXYHxAhRAXFfYki5PpbuMMOmXYuzLxib65z2XTqki59YDQJGpJ/wB1kEE5MQDgSTQWtKUrA8n9zS/1uIDQ==} + /@commitlint/format@18.6.0: + resolution: {integrity: sha512-8UNWfs2slPPSQiiVpLGJTnPHv7Jkd5KYxfbNXbmLL583bjom4RrylvyrCVnmZReA8nNad7pPXq6mDH4FNVj6xg==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 18.4.3 + '@commitlint/types': 18.6.0 chalk: 4.1.2 dev: true - /@commitlint/is-ignored@18.4.3: - resolution: {integrity: sha512-ZseOY9UfuAI32h9w342Km4AIaTieeFskm2ZKdrG7r31+c6zGBzuny9KQhwI9puc0J3GkUquEgKJblCl7pMnjwg==} + /@commitlint/is-ignored@18.6.0: + resolution: {integrity: sha512-Xjx/ZyyJ4FdLuz0FcOvqiqSFgiO2yYj3QN9XlvyrxqbXTxPVC7QFEXJYBVPulUSN/gR7WXH1Udw+HYYfD17xog==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 18.4.3 + '@commitlint/types': 18.6.0 semver: 7.5.4 dev: true - /@commitlint/lint@18.4.3: - resolution: {integrity: sha512-18u3MRgEXNbnYkMOWoncvq6QB8/90m9TbERKgdPqVvS+zQ/MsuRhdvHYCIXGXZxUb0YI4DV2PC4bPneBV/fYuA==} + /@commitlint/lint@18.6.0: + resolution: {integrity: sha512-ycbuDWfyykPmslgiHzhz8dL6F0BJYltXLVfc+M49z0c+FNITM0v+r0Vd2+Tdtq06VTc894p2+YSmZhulY8Jn3Q==} engines: {node: '>=v18'} dependencies: - '@commitlint/is-ignored': 18.4.3 - '@commitlint/parse': 18.4.3 - '@commitlint/rules': 18.4.3 - '@commitlint/types': 18.4.3 + '@commitlint/is-ignored': 18.6.0 + '@commitlint/parse': 18.6.0 + '@commitlint/rules': 18.6.0 + '@commitlint/types': 18.6.0 dev: true - /@commitlint/load@18.4.3(typescript@5.2.2): - resolution: {integrity: sha512-v6j2WhvRQJrcJaj5D+EyES2WKTxPpxENmNpNG3Ww8MZGik3jWRXtph0QTzia5ZJyPh2ib5aC/6BIDymkUUM58Q==} + /@commitlint/load@18.6.0(@types/node@20.11.16)(typescript@5.3.3): + resolution: {integrity: sha512-RRssj7TmzT0bowoEKlgwg8uQ7ORXWkw7lYLsZZBMi9aInsJuGNLNWcMxJxRZbwxG3jkCidGUg85WmqJvRjsaDA==} engines: {node: '>=v18'} dependencies: - '@commitlint/config-validator': 18.4.3 - '@commitlint/execute-rule': 18.4.3 - '@commitlint/resolve-extends': 18.4.3 - '@commitlint/types': 18.4.3 - '@types/node': 18.19.3 + '@commitlint/config-validator': 18.6.0 + '@commitlint/execute-rule': 18.4.4 + '@commitlint/resolve-extends': 18.6.0 + '@commitlint/types': 18.6.0 chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.2.2) - cosmiconfig-typescript-loader: 5.0.0(@types/node@18.19.3)(cosmiconfig@8.3.6)(typescript@5.2.2) + cosmiconfig: 8.3.6(typescript@5.3.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.11.16)(cosmiconfig@8.3.6)(typescript@5.3.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 transitivePeerDependencies: + - '@types/node' - typescript dev: true - /@commitlint/message@18.4.3: - resolution: {integrity: sha512-ddJ7AztWUIoEMAXoewx45lKEYEOeOlBVWjk8hDMUGpprkuvWULpaXczqdjwVtjrKT3JhhN+gMs8pm5G3vB2how==} + /@commitlint/message@18.4.4: + resolution: {integrity: sha512-lHF95mMDYgAI1LBXveJUyg4eLaMXyOqJccCK3v55ZOEUsMPrDi8upqDjd/NmzWmESYihaOMBTAnxm+6oD1WoDQ==} engines: {node: '>=v18'} dev: true - /@commitlint/parse@18.4.3: - resolution: {integrity: sha512-eoH7CXM9L+/Me96KVcfJ27EIIbA5P9sqw3DqjJhRYuhaULIsPHFs5S5GBDCqT0vKZQDx0DgxhMpW6AQbnKrFtA==} + /@commitlint/parse@18.6.0: + resolution: {integrity: sha512-Y/G++GJpATFw54O0jikc/h2ibyGHgghtPnwsOk3O/aU092ydJ5XEHYcd7xGNQYuLweLzQis2uEwRNk9AVIPbQQ==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 18.4.3 + '@commitlint/types': 18.6.0 conventional-changelog-angular: 7.0.0 conventional-commits-parser: 5.0.0 dev: true - /@commitlint/read@18.4.3: - resolution: {integrity: sha512-H4HGxaYA6OBCimZAtghL+B+SWu8ep4X7BwgmedmqWZRHxRLcX2q0bWBtUm5FsMbluxbOfrJwOs/Z0ah4roP/GQ==} + /@commitlint/read@18.6.0: + resolution: {integrity: sha512-w39ji8VfWhPKRquPhRHB3Yd8XIHwaNHgOh28YI1QEmZ59qVpuVUQo6h/NsVb+uoC6LbXZiofTZv2iFR084jKEA==} engines: {node: '>=v18'} dependencies: - '@commitlint/top-level': 18.4.3 - '@commitlint/types': 18.4.3 - fs-extra: 11.2.0 + '@commitlint/top-level': 18.4.4 + '@commitlint/types': 18.6.0 git-raw-commits: 2.0.11 minimist: 1.2.7 dev: true - /@commitlint/resolve-extends@18.4.3: - resolution: {integrity: sha512-30sk04LZWf8+SDgJrbJCjM90gTg2LxsD9cykCFeFu+JFHvBFq5ugzp2eO/DJGylAdVaqxej3c7eTSE64hR/lnw==} + /@commitlint/resolve-extends@18.6.0: + resolution: {integrity: sha512-k2Xp+Fxeggki2i90vGrbiLDMefPius3zGSTFFlRAPKce/SWLbZtI+uqE9Mne23mHO5lmcSV8z5m6ziiJwGpOcg==} engines: {node: '>=v18'} dependencies: - '@commitlint/config-validator': 18.4.3 - '@commitlint/types': 18.4.3 + '@commitlint/config-validator': 18.6.0 + '@commitlint/types': 18.6.0 import-fresh: 3.3.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 resolve-global: 1.0.0 dev: true - /@commitlint/rules@18.4.3: - resolution: {integrity: sha512-8KIeukDf45BiY+Lul1T0imSNXF0sMrlLG6JpLLKolkmYVQ6PxxoNOriwyZ3UTFFpaVbPy0rcITaV7U9JCAfDTA==} + /@commitlint/rules@18.6.0: + resolution: {integrity: sha512-pTalvCEvuCWrBWZA/YqO/3B3nZnY3Ncc+TmQsRajBdC1tkQIm5Iovdo4Ec7f2Dw1tVvpYMUUNAgcWqsY0WckWg==} engines: {node: '>=v18'} dependencies: - '@commitlint/ensure': 18.4.3 - '@commitlint/message': 18.4.3 - '@commitlint/to-lines': 18.4.3 - '@commitlint/types': 18.4.3 + '@commitlint/ensure': 18.6.0 + '@commitlint/message': 18.4.4 + '@commitlint/to-lines': 18.4.4 + '@commitlint/types': 18.6.0 execa: 5.1.1 dev: true - /@commitlint/to-lines@18.4.3: - resolution: {integrity: sha512-fy1TAleik4Zfru1RJ8ZU6cOSvgSVhUellxd3WZV1D5RwHZETt1sZdcA4mQN2y3VcIZsUNKkW0Mq8CM9/L9harQ==} + /@commitlint/to-lines@18.4.4: + resolution: {integrity: sha512-mwe2Roa59NCz/krniAdCygFabg7+fQCkIhXqBHw00XQ8Y7lw4poZLLxeGI3p3bLpcEOXdqIDrEGLwHmG5lBdwQ==} engines: {node: '>=v18'} dev: true - /@commitlint/top-level@18.4.3: - resolution: {integrity: sha512-E6fJPBLPFL5R8+XUNSYkj4HekIOuGMyJo3mIx2PkYc3clel+pcWQ7TConqXxNWW4x1ugigiIY2RGot55qUq1hw==} + /@commitlint/top-level@18.4.4: + resolution: {integrity: sha512-PBwW1drgeavl9CadB7IPRUk6rkUP/O8jEkxjlC+ofuh3pw0bzJdAT+Kw7M1Yc9KtTb9xTaqUB8uvRtaybHa/tQ==} engines: {node: '>=v18'} dependencies: find-up: 5.0.0 dev: true - /@commitlint/types@18.4.3: - resolution: {integrity: sha512-cvzx+vtY/I2hVBZHCLrpoh+sA0hfuzHwDc+BAFPimYLjJkpHnghQM+z8W/KyLGkygJh3BtI3xXXq+dKjnSWEmA==} + /@commitlint/types@18.6.0: + resolution: {integrity: sha512-oavoKLML/eJa2rJeyYSbyGAYzTxQ6voG5oeX3OrxpfrkRWhJfm4ACnhoRf5tgiybx2MZ+EVFqC1Lw3W8/uwpZA==} engines: {node: '>=v18'} dependencies: chalk: 4.1.2 @@ -814,8 +828,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@faker-js/faker@8.3.1: - resolution: {integrity: sha512-FdgpFxY6V6rLZE9mmIBb9hM0xpfvQOSNOLnzolzKwsE1DH+gC7lEKV1p1IbR0lAYyvYd5a4u3qWJzowUkw1bIw==} + /@faker-js/faker@8.4.0: + resolution: {integrity: sha512-htW87352wzUCdX1jyUQocUcmAaFqcR/w082EC8iP/gtkF0K+aKcBp0hR5Arb7dzR8tQ1TrhE9DNa5EbJELm84w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} dev: false @@ -832,8 +846,15 @@ packages: fast-uri: 2.3.0 dev: false - /@fastify/compress@6.5.0: - resolution: {integrity: sha512-AqUOK714jY7qkzbQbS4zyI4yNFgnRoOJ3eH/oV1T9f5fFdPDRdrFxm5de1ya5n+as4bvitjwU9EY7zvtT9pI2A==} + /@fastify/busboy@1.2.1: + resolution: {integrity: sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==} + engines: {node: '>=14'} + dependencies: + text-decoding: 1.0.0 + dev: false + + /@fastify/compress@7.0.0: + resolution: {integrity: sha512-jo/NaBVHP1OXIf8Kmr3bZyYQB0gAIgcy5c8rRKTPjhklHO7lRs/6ZFckUVT0NtbKSvrTuIcmSkxYpjyv3FNHXA==} dependencies: '@fastify/accept-negotiator': 1.1.0 fastify-plugin: 4.5.1 @@ -845,8 +866,8 @@ packages: pumpify: 2.0.1 dev: false - /@fastify/cors@8.5.0: - resolution: {integrity: sha512-/oZ1QSb02XjP0IK1U0IXktEsw/dUBTxJOW7IpIeO8c/tNalw/KjoNSJv1Sf6eqoBPO+TDGkifq6ynFK3v68HFQ==} + /@fastify/cors@9.0.1: + resolution: {integrity: sha512-YY9Ho3ovI+QHIL2hW+9X4XqQjXLjJqsU+sMV/xFsxZkE8p3GNnYVFpoOxF7SsP5ZL76gwvbo3V9L+FIekBGU4Q==} dependencies: fastify-plugin: 4.5.1 mnemonist: 0.39.6 @@ -920,7 +941,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -941,14 +962,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.7.0 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.19.3)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -976,7 +997,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 jest-mock: 29.7.0 dev: true @@ -1003,7 +1024,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 18.19.3 + '@types/node': 20.11.16 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -1036,7 +1057,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.20 - '@types/node': 18.19.3 + '@types/node': 20.11.16 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -1124,7 +1145,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.19.3 + '@types/node': 20.11.16 '@types/yargs': 17.0.15 chalk: 4.1.2 dev: true @@ -1199,211 +1220,53 @@ packages: - supports-color dev: false - /@mikro-orm/core@4.5.10(@mikro-orm/postgresql@4.5.10): - resolution: {integrity: sha512-vnSSFGSR/JoGINJlci5fafGSqvLgHx+3Nt3XjnCTNLOjQ0WL7LsdUVwM9FE/W5FipcJRaQfWmY/iLXBqnaarGQ==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@mikro-orm/entity-generator': ^4.0.0 - '@mikro-orm/mariadb': ^4.0.0 - '@mikro-orm/migrations': ^4.0.0 - '@mikro-orm/mongodb': ^4.0.0 - '@mikro-orm/mysql': ^4.0.0 - '@mikro-orm/postgresql': ^4.0.0 - '@mikro-orm/sqlite': ^4.0.0 - peerDependenciesMeta: - '@mikro-orm/entity-generator': - optional: true - '@mikro-orm/mariadb': - optional: true - '@mikro-orm/migrations': - optional: true - '@mikro-orm/mongodb': - optional: true - '@mikro-orm/mysql': - optional: true - '@mikro-orm/postgresql': - optional: true - '@mikro-orm/sqlite': - optional: true - dependencies: - '@mikro-orm/postgresql': 4.5.10(@mikro-orm/core@4.5.10) - ansi-colors: 4.1.1 - clone: 2.1.2 - dotenv: 8.2.0 - escaya: 0.0.61 - fs-extra: 9.1.0 - globby: 11.0.3 - reflect-metadata: 0.1.13 - strip-json-comments: 3.1.1 - dev: false - - /@mikro-orm/core@5.9.6(@mikro-orm/postgresql@5.9.6): - resolution: {integrity: sha512-lUEjkxfRHHX4RgScOBwuxYWl81zMW3nK+0ovmUUKxGecxl09Uxulwm3d0hmmKoot/jhX1I62/DVtRxq5p2apVA==} - engines: {node: '>= 14.0.0'} - peerDependencies: - '@mikro-orm/better-sqlite': ^5.0.0 - '@mikro-orm/entity-generator': ^5.0.0 - '@mikro-orm/mariadb': ^5.0.0 - '@mikro-orm/migrations': ^5.0.0 - '@mikro-orm/migrations-mongodb': ^5.0.0 - '@mikro-orm/mongodb': ^5.0.0 - '@mikro-orm/mysql': ^5.0.0 - '@mikro-orm/postgresql': ^5.0.0 - '@mikro-orm/seeder': ^5.0.0 - '@mikro-orm/sqlite': ^5.0.0 - peerDependenciesMeta: - '@mikro-orm/better-sqlite': - optional: true - '@mikro-orm/entity-generator': - optional: true - '@mikro-orm/mariadb': - optional: true - '@mikro-orm/migrations': - optional: true - '@mikro-orm/migrations-mongodb': - optional: true - '@mikro-orm/mongodb': - optional: true - '@mikro-orm/mysql': - optional: true - '@mikro-orm/postgresql': - optional: true - '@mikro-orm/seeder': - optional: true - '@mikro-orm/sqlite': - optional: true + /@mikro-orm/core@6.0.7: + resolution: {integrity: sha512-YKBS2apwK9vALBA/mK+6u/Xa8At4mQ/McdwoqjMcAA3s5SaFlNLZmb2TIaZYBCJA0FKUlkIvzW7MuFYkJud9tA==} + engines: {node: '>= 18.12.0'} dependencies: - '@mikro-orm/postgresql': 5.9.6(@mikro-orm/core@5.9.6) - acorn-loose: 8.3.0 - acorn-walk: 8.2.0 - dotenv: 16.3.1 - fs-extra: 11.1.1 + dataloader: 2.2.2 + dotenv: 16.4.1 + esprima: 4.0.1 + fs-extra: 11.2.0 globby: 11.1.0 - mikro-orm: 5.9.6 - reflect-metadata: 0.1.13 - dev: false - - /@mikro-orm/knex@4.5.10(@mikro-orm/core@4.5.10)(pg@8.6.0): - resolution: {integrity: sha512-iYSsAlHVNC7m+yz7dDA3JwjBHxyNuGNwQijUpJ6n2Vt55PyorcW4I3wTnHHALUS30Fvjm4TnfZRdio+aQhynsA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@mikro-orm/core': ^4.0.0 - '@mikro-orm/entity-generator': ^4.0.0 - '@mikro-orm/migrations': ^4.0.0 - mssql: ^7.0.0 - mysql: ^2.18.1 - mysql2: ^2.1.0 - pg: ^8.0.3 - sqlite3: ^5.0.0 - peerDependenciesMeta: - '@mikro-orm/entity-generator': - optional: true - '@mikro-orm/migrations': - optional: true - mssql: - optional: true - mysql: - optional: true - mysql2: - optional: true - pg: - optional: true - sqlite3: - optional: true - dependencies: - '@mikro-orm/core': 4.5.10(@mikro-orm/postgresql@4.5.10) - fs-extra: 9.1.0 - knex: 0.21.19(pg@8.6.0) - pg: 8.6.0 - sqlstring: 2.3.2 - transitivePeerDependencies: - - supports-color + mikro-orm: 6.0.7 + reflect-metadata: 0.2.1 dev: false - /@mikro-orm/knex@5.9.6(@mikro-orm/core@5.9.6)(pg@8.11.3): - resolution: {integrity: sha512-hG3X7qtcC2bi2fY/Z6ueuFbcav3Docp9bUS8t7Z/ZZgfScnsTDchDcqN8aCHiccGJ3VeRpS5NIqTqsy2ilKF4g==} - engines: {node: '>= 14.0.0'} + /@mikro-orm/knex@6.0.7(@mikro-orm/core@6.0.7)(pg@8.11.3): + resolution: {integrity: sha512-dTHQ8FuDum+u/N2jonX+L6wTwUfkjow1n95xez9Dys6wkdq4LUBx5QXJt/4pBIEB9t2MbR2G5+XkAXz+DPIw2Q==} + engines: {node: '>= 18.12.0'} peerDependencies: - '@mikro-orm/core': ^5.0.0 - '@mikro-orm/entity-generator': ^5.0.0 - '@mikro-orm/migrations': ^5.0.0 - better-sqlite3: '*' - mssql: '*' - mysql: '*' - mysql2: '*' - pg: '*' - sqlite3: '*' - peerDependenciesMeta: - '@mikro-orm/entity-generator': - optional: true - '@mikro-orm/migrations': - optional: true - better-sqlite3: - optional: true - mssql: - optional: true - mysql: - optional: true - mysql2: - optional: true - pg: - optional: true - sqlite3: - optional: true + '@mikro-orm/core': ^6.0.0 dependencies: - '@mikro-orm/core': 5.9.6(@mikro-orm/postgresql@5.9.6) - fs-extra: 11.1.1 - knex: 2.5.1(pg@8.11.3) - pg: 8.11.3 + '@mikro-orm/core': 6.0.7 + fs-extra: 11.2.0 + knex: 3.1.0(pg@8.11.3) sqlstring: 2.3.3 transitivePeerDependencies: - - pg-native - - supports-color - - tedious - dev: false - - /@mikro-orm/postgresql@4.5.10(@mikro-orm/core@4.5.10): - resolution: {integrity: sha512-hVTW5rO43T3k4AN3e1tu2rUZIAN0VuBrizdf+sGYpKZ7xtLAOFXY10TCmLdv/B6euAwrXRSsCraOOT7JnOQyBg==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@mikro-orm/core': ^4.0.0 - dependencies: - '@mikro-orm/core': 4.5.10(@mikro-orm/postgresql@4.5.10) - '@mikro-orm/knex': 4.5.10(@mikro-orm/core@4.5.10)(pg@8.6.0) - pg: 8.6.0 - transitivePeerDependencies: - - '@mikro-orm/entity-generator' - - '@mikro-orm/migrations' - - mssql + - better-sqlite3 - mysql - mysql2 + - pg - pg-native - sqlite3 - supports-color + - tedious dev: false - /@mikro-orm/postgresql@5.9.6(@mikro-orm/core@5.9.6): - resolution: {integrity: sha512-QoZI3wYN8FrGFs3MEkv9X8XyICmYLp7vlhwyEYQXc5XevKMLDEgqZA3qps99/3EsrbQLSaXssEytetFaCMm8wA==} - engines: {node: '>= 14.0.0'} + /@mikro-orm/postgresql@6.0.7(@mikro-orm/core@6.0.7): + resolution: {integrity: sha512-K6LiC7nsWC4Dvzb9srC29ZyJgQF9J+bg5Kr89jy5h347akBZIZrBRYOe92PdlJzW+4XsAFYtkyIHicP03vc1RA==} + engines: {node: '>= 18.12.0'} peerDependencies: - '@mikro-orm/core': ^5.0.0 - '@mikro-orm/entity-generator': ^5.0.0 - '@mikro-orm/migrations': ^5.0.0 - '@mikro-orm/seeder': ^5.0.0 - peerDependenciesMeta: - '@mikro-orm/entity-generator': - optional: true - '@mikro-orm/migrations': - optional: true - '@mikro-orm/seeder': - optional: true + '@mikro-orm/core': ^6.0.0 dependencies: - '@mikro-orm/core': 5.9.6(@mikro-orm/postgresql@5.9.6) - '@mikro-orm/knex': 5.9.6(@mikro-orm/core@5.9.6)(pg@8.11.3) + '@mikro-orm/core': 6.0.7 + '@mikro-orm/knex': 6.0.7(@mikro-orm/core@6.0.7)(pg@8.11.3) pg: 8.11.3 + postgres-date: 2.1.0 + postgres-interval: 4.0.2 transitivePeerDependencies: - better-sqlite3 - - mssql - mysql - mysql2 - pg-native @@ -1496,15 +1359,16 @@ packages: '@supabase/node-fetch': 2.6.14 dev: false - /@supabase/realtime-js@2.8.4: - resolution: {integrity: sha512-5C9slLTGikHnYmAnIBOaPogAgbcNY68vnIyE6GpqIKjHElVb6LIi4clwNcjHSj4z6szuvvzj8T/+ePEgGEGekw==} + /@supabase/realtime-js@2.9.3: + resolution: {integrity: sha512-lAp50s2n3FhGJFq+wTSXLNIDPw5Y0Wxrgt44eM5nLSA3jZNUUP3Oq2Ccd1CbZdVntPCWLZvJaU//pAd2NE+QnQ==} dependencies: '@supabase/node-fetch': 2.6.14 '@types/phoenix': 1.6.4 - '@types/websocket': 1.0.8 - websocket: 1.0.34 + '@types/ws': 8.5.10 + ws: 8.16.0 transitivePeerDependencies: - - supports-color + - bufferutil + - utf-8-validate dev: false /@supabase/storage-js@2.5.4: @@ -1513,17 +1377,22 @@ packages: '@supabase/node-fetch': 2.6.14 dev: false - /@supabase/supabase-js@2.39.1: - resolution: {integrity: sha512-nz0aQPButJWjChX+bLXqvhHutfiOuiJwzibyJs0uhFrQ6JRDZZsl9+nX2jgyox2v2V+e4PEwbn/eaEOFVUr8iA==} + /@supabase/supabase-js@2.39.3: + resolution: {integrity: sha512-NoltJSaJNKDJNutO5sJPAAi5RIWrn1z2XH+ig1+cHDojT6BTN7TvZPNa3Kq3gFQWfO5H1N9El/bCTZJ3iFW2kQ==} dependencies: '@supabase/functions-js': 2.1.5 '@supabase/gotrue-js': 2.62.0 '@supabase/node-fetch': 2.6.14 '@supabase/postgrest-js': 1.9.0 - '@supabase/realtime-js': 2.8.4 + '@supabase/realtime-js': 2.9.3 '@supabase/storage-js': 2.5.4 transitivePeerDependencies: - - supports-color + - bufferutil + - utf-8-validate + dev: false + + /@tokenizer/token@0.3.0: + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} dev: false /@tootallnate/once@2.0.0: @@ -1547,6 +1416,12 @@ packages: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true + /@types/amqplib@0.10.4: + resolution: {integrity: sha512-Y5Sqquh/LqDxSgxYaAAFNM0M7GyONtSDCcFMJk+DQwYEjibPyW6y+Yu9H9omdkKc3epyXULmFN3GTaeBHhn2Hg==} + dependencies: + '@types/node': 20.11.16 + dev: true + /@types/babel__core@7.1.20: resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} dependencies: @@ -1579,7 +1454,7 @@ packages: /@types/bcrypt@5.0.2: resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==} dependencies: - '@types/node': 18.19.3 + '@types/node': 20.11.16 dev: true /@types/config@0.0.41: @@ -1594,13 +1469,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.19.3 + '@types/node': 20.11.16 dev: true /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.19.3 + '@types/node': 20.11.16 dev: true /@types/istanbul-lib-coverage@2.0.4: @@ -1619,8 +1494,8 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest@29.5.6: - resolution: {integrity: sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w==} + /@types/jest@29.5.12: + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 @@ -1629,7 +1504,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 18.19.3 + '@types/node': 20.11.16 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: true @@ -1658,29 +1533,29 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node-cron@3.0.10: - resolution: {integrity: sha512-8thdLSpV7na8+bsmiyMH/KKQWOBg4WmoLInlGxWz7JJn8Mie+53QWaygSlc7f/AsMsCB5bBTVjoueAU6tRutTw==} + /@types/node-cron@3.0.11: + resolution: {integrity: sha512-0ikrnug3/IyneSHqCBeslAhlK2aBfYek1fGo4bP4QnZPmiqSGRK+Oy7ZMisLWkesffJvQ1cqAcBnJC+8+nxIAg==} dev: true - /@types/node@18.19.3: - resolution: {integrity: sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==} + /@types/node@20.11.16: + resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} dependencies: undici-types: 5.26.5 - /@types/nodemailer@6.4.13: - resolution: {integrity: sha512-889Vq/77eEpidCwh52sVWpbnqQmIwL8yVBekNbrztVEaWKOCRH3Eq6hjIJh1jwsGDEAJEH0RR+YhpH9mfELLKA==} + /@types/nodemailer@6.4.14: + resolution: {integrity: sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==} dependencies: - '@types/node': 18.19.3 + '@types/node': 20.11.16 dev: true /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/pg@8.10.7: - resolution: {integrity: sha512-ksJqHipwYaSEHz9e1fr6H6erjoEdNNaOxwyJgPx9bNeaqOW3iWBQgVHfpwiSAoqGzchfc+ZyRLwEfeCcyYD3uQ==} + /@types/pg@8.11.0: + resolution: {integrity: sha512-sDAlRiBNthGjNFfvt0k6mtotoVYVQ63pA8R4EMWka7crawSR60waVYR0HAgmPRs/e2YaeJTD/43OoZ3PFw80pw==} dependencies: - '@types/node': 18.19.3 + '@types/node': 20.11.16 pg-protocol: 1.6.0 pg-types: 4.0.1 dev: true @@ -1689,19 +1564,19 @@ packages: resolution: {integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==} dev: false - /@types/qs@6.9.9: - resolution: {integrity: sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==} + /@types/qs@6.9.11: + resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} dev: true /@types/semver@7.5.4: resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} dev: true - /@types/shelljs@0.8.14: - resolution: {integrity: sha512-eqKaGPi60riuxI9pUVeCT02EGo94Y6HT119h7w5bXSELsis6+JqzdEy6H/w2xXl881wcN3VDnb/D0WlgSety5w==} + /@types/shelljs@0.8.15: + resolution: {integrity: sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==} dependencies: '@types/glob': 7.2.0 - '@types/node': 18.19.3 + '@types/node': 20.11.16 dev: true /@types/stack-utils@2.0.1: @@ -1712,7 +1587,7 @@ packages: resolution: {integrity: sha512-tLfnlJf6A5mB6ddqF159GqcDizfzbMUB1/DeT59/wBNqzRTNNKsaw79A/1TZ84X+f/EwWH8FeuSkjlCLyqS/zQ==} dependencies: '@types/cookiejar': 2.1.2 - '@types/node': 18.19.3 + '@types/node': 20.11.16 dev: true /@types/supertest@2.0.16: @@ -1725,21 +1600,15 @@ packages: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true - /@types/web-push@3.6.2: - resolution: {integrity: sha512-v6Wdk1eIVbAJQjEAa1ZxuG3cfOYTd6nSv55BVJMtLQUvQ07v80MPt2Voq/z71WKhy4CORu4L3aH+8SXKX4BD5g==} + /@types/web-push@3.6.3: + resolution: {integrity: sha512-v3oT4mMJsHeJ/rraliZ+7TbZtr5bQQuxcgD7C3/1q/zkAj29c8RE0F9lVZVu3hiQe5Z9fYcBreV7TLnfKR+4mg==} dependencies: - '@types/node': 18.19.3 + '@types/node': 20.11.16 dev: true /@types/webidl-conversions@7.0.0: resolution: {integrity: sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==} - /@types/websocket@1.0.8: - resolution: {integrity: sha512-wvkOpWApbuxVfHhSQ1XrjVN4363vsfLJwEo4AboIZk0g1vJA5nmLp8GXUHuIdf4/Fe7+/V0Efe2HvWiLqHtlqw==} - dependencies: - '@types/node': 18.19.3 - dev: false - /@types/whatwg-url@11.0.3: resolution: {integrity: sha512-z1ELvMijRL1QmU7QuzDkeYXSF2+dXI0ITKoQsIoVKcNBOiK5RMmWy+pYYxJTHFt8vkpZe7UsvRErQwcxZkjoUw==} dependencies: @@ -1748,8 +1617,15 @@ packages: /@types/whatwg-url@8.2.2: resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} dependencies: - '@types/node': 18.19.3 + '@types/node': 20.11.16 '@types/webidl-conversions': 7.0.0 + dev: true + + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 20.11.16 + dev: false /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} @@ -1761,8 +1637,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@6.16.0(@typescript-eslint/parser@6.16.0)(eslint@8.56.0)(typescript@5.2.2): - resolution: {integrity: sha512-O5f7Kv5o4dLWQtPX4ywPPa+v9G+1q1x8mz0Kr0pXUtKsevo+gIJHLkGc8RxaZWtP8RrhwhSNIWThnW42K9/0rQ==} + /@typescript-eslint/eslint-plugin@6.20.0(@typescript-eslint/parser@6.20.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -1773,25 +1649,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.16.0(eslint@8.56.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.16.0 - '@typescript-eslint/type-utils': 6.16.0(eslint@8.56.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.16.0(eslint@8.56.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.16.0 + '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.20.0 + '@typescript-eslint/type-utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.20.0 debug: 4.3.4(supports-color@5.5.0) eslint: 8.56.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.16.0(eslint@8.56.0)(typescript@5.2.2): - resolution: {integrity: sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==} + /@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1800,27 +1676,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.16.0 - '@typescript-eslint/types': 6.16.0 - '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.16.0 + '@typescript-eslint/scope-manager': 6.20.0 + '@typescript-eslint/types': 6.20.0 + '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.20.0 debug: 4.3.4(supports-color@5.5.0) eslint: 8.56.0 - typescript: 5.2.2 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.16.0: - resolution: {integrity: sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==} + /@typescript-eslint/scope-manager@6.20.0: + resolution: {integrity: sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.16.0 - '@typescript-eslint/visitor-keys': 6.16.0 + '@typescript-eslint/types': 6.20.0 + '@typescript-eslint/visitor-keys': 6.20.0 dev: true - /@typescript-eslint/type-utils@6.16.0(eslint@8.56.0)(typescript@5.2.2): - resolution: {integrity: sha512-ThmrEOcARmOnoyQfYkHw/DX2SEYBalVECmoldVuH6qagKROp/jMnfXpAU/pAIWub9c4YTxga+XwgAkoA0pxfmg==} + /@typescript-eslint/type-utils@6.20.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1829,12 +1705,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.16.0(eslint@8.56.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4(supports-color@5.5.0) eslint: 8.56.0 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true @@ -1849,8 +1725,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.16.0: - resolution: {integrity: sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==} + /@typescript-eslint/types@6.20.0: + resolution: {integrity: sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -1868,7 +1744,7 @@ packages: debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 + semver: 7.5.4 tsutils: 3.21.0(typescript@3.9.10) typescript: 3.9.10 transitivePeerDependencies: @@ -1889,15 +1765,15 @@ packages: debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 + semver: 7.5.4 tsutils: 3.21.0(typescript@4.9.4) typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.16.0(typescript@5.2.2): - resolution: {integrity: sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==} + /@typescript-eslint/typescript-estree@6.20.0(typescript@5.3.3): + resolution: {integrity: sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1905,21 +1781,21 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.16.0 - '@typescript-eslint/visitor-keys': 6.16.0 + '@typescript-eslint/types': 6.20.0 + '@typescript-eslint/visitor-keys': 6.20.0 debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.16.0(eslint@8.56.0)(typescript@5.2.2): - resolution: {integrity: sha512-T83QPKrBm6n//q9mv7oiSvy/Xq/7Hyw9SzSEhMHJwznEmQayfBM87+oAlkNAMEO7/MjIwKyOHgBJbxB0s7gx2A==} + /@typescript-eslint/utils@6.20.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1927,9 +1803,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.14 '@types/semver': 7.5.4 - '@typescript-eslint/scope-manager': 6.16.0 - '@typescript-eslint/types': 6.16.0 - '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.20.0 + '@typescript-eslint/types': 6.20.0 + '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: @@ -1953,11 +1829,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys@6.16.0: - resolution: {integrity: sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==} + /@typescript-eslint/visitor-keys@6.20.0: + resolution: {integrity: sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.16.0 + '@typescript-eslint/types': 6.20.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2008,8 +1884,8 @@ packages: /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.8.1 - acorn-walk: 8.2.0 + acorn: 8.11.2 + acorn-walk: 8.3.1 dev: true /acorn-jsx-walk@2.0.0: @@ -2022,40 +1898,49 @@ packages: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.11.2 + dev: true - /acorn-loose@8.3.0: - resolution: {integrity: sha512-75lAs9H19ldmW+fAbyqHdjgdCrz0pWGXKmnqFoh8PyVd1L2RIb4RzYrSjmopeqv3E1G3/Pimu6GgLlrGbrkF7w==} - engines: {node: '>=0.4.0'} + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 dev: false /acorn-loose@8.4.0: resolution: {integrity: sha512-M0EUka6rb+QC4l9Z3T0nJEzNOO7JcoJlYMrBlyBCiFSXRyxjLKayd4TbQs2FDRWQU1h9FR7QVNHt+PEaoNL5rQ==} engines: {node: '>=0.4.0'} dependencies: - acorn: 8.11.2 + acorn: 8.11.3 dev: false /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} + dev: true /acorn-walk@8.3.1: resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} engines: {node: '>=0.4.0'} + dev: true + + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} dev: false /acorn@8.11.2: resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true + dev: true - /acorn@8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true - dev: true + dev: false /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} @@ -2109,9 +1994,16 @@ packages: require-from-string: 2.0.2 uri-js: 4.4.1 - /ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} + /amqplib@0.10.3: + resolution: {integrity: sha512-UHmuSa7n8vVW/a5HGh2nFPqAEr8+cD4dEZ6u9GjP91nHfr1a54RyAKyra7Sb5NH7NBKOUlyQSMXIp0qAixKexw==} + engines: {node: '>=10'} + dependencies: + '@acuminous/bitsyntax': 0.1.2 + buffer-more-ints: 1.0.0 + readable-stream: 1.1.14 + url-parse: 1.5.10 + transitivePeerDependencies: + - supports-color dev: false /ansi-escapes@4.3.2: @@ -2121,18 +2013,13 @@ packages: type-fest: 0.21.3 dev: true - /ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} + /ansi-escapes@6.2.0: + resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} + engines: {node: '>=14.16'} dependencies: - type-fest: 1.4.0 + type-fest: 3.13.1 dev: true - /ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: false - /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2179,8 +2066,9 @@ packages: resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==} dev: true - /append-field@1.0.0: - resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} + /append-field@2.0.0: + resolution: {integrity: sha512-yUPXgerKgcuwakzrRyklfhX+Ma2aYYMjb+BO2RPUwq+tk928V/i5DFWcCUS3hQhj468N+Ktmwb0tfbEtmfC6WA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false /aproba@2.0.0: @@ -2213,21 +2101,6 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - dev: false - - /arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - dev: false - - /arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - dev: false - /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: @@ -2235,11 +2108,6 @@ packages: is-array-buffer: 3.0.2 dev: true - /array-each@1.0.1: - resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} - engines: {node: '>=0.10.0'} - dev: false - /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true @@ -2255,20 +2123,10 @@ packages: is-string: 1.0.7 dev: true - /array-slice@1.1.0: - resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} - engines: {node: '>=0.10.0'} - dev: false - /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - /array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - dev: false - /array.prototype.findlastindex@1.2.3: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} @@ -2341,11 +2199,6 @@ packages: engines: {node: '>=10.0.0'} dev: false - /assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - dev: false - /ast-module-types@2.7.1: resolution: {integrity: sha512-Rnnx/4Dus6fn7fTqdeLEAn5vUll5w7/vts0RN608yFa6si/rDOUonlIIiwugHBFWjylHjxm9owoSZn71KwG4gw==} dev: true @@ -2368,17 +2221,6 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - /at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - dev: false - - /atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: false - /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} @@ -2398,17 +2240,8 @@ packages: - supports-color dev: false - /axios@0.27.2: - resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} - dependencies: - follow-redirects: 1.15.4(debug@4.3.4) - form-data: 4.0.0 - transitivePeerDependencies: - - debug - dev: false - - /axios@1.6.2: - resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + /axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} dependencies: follow-redirects: 1.15.4(debug@4.3.4) form-data: 4.0.0 @@ -2496,22 +2329,16 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - /base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} + /base32-encode@2.0.0: + resolution: {integrity: sha512-mlmkfc2WqdDtMl/id4qm3A7RjW6jxcbAoMjdRmsPiwQP0ufD4oXItYMnPgVHe80lnAIy+1xwzhHE1s4FoIceSw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.0 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 + to-data-view: 2.0.0 dev: false + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + /bcrypt@5.1.1: resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==} engines: {node: '>= 10.0.0'} @@ -2559,24 +2386,6 @@ packages: balanced-match: 1.0.2 dev: true - /braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -2607,6 +2416,7 @@ packages: /bson@5.5.1: resolution: {integrity: sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==} engines: {node: '>=14.20.1'} + dev: true /bson@6.2.0: resolution: {integrity: sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==} @@ -2622,6 +2432,10 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /buffer-more-ints@1.0.0: + resolution: {integrity: sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==} + dev: false + /buffer-writer@2.0.0: resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} engines: {node: '>=4'} @@ -2641,34 +2455,9 @@ packages: ieee754: 1.2.1 dev: false - /bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - requiresBuild: true - dependencies: - node-gyp-build: 4.6.1 - dev: false - - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - dependencies: - streamsearch: 1.1.0 - dev: false - - /cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.0 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} dev: false /cache-content-type@1.0.1: @@ -2775,27 +2564,10 @@ packages: engines: {node: '>=8'} dev: true - /cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: false - /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - dev: false - /clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} @@ -2822,12 +2594,12 @@ packages: engines: {node: '>=6'} dev: true - /cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} dependencies: slice-ansi: 5.0.0 - string-width: 5.1.2 + string-width: 7.0.0 dev: true /cliui@8.0.1: @@ -2844,11 +2616,6 @@ packages: engines: {node: '>=0.8'} dev: true - /clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - dev: false - /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -2857,14 +2624,6 @@ packages: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true - /collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - dev: false - /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -2889,10 +2648,6 @@ packages: hasBin: true dev: false - /colorette@1.2.1: - resolution: {integrity: sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==} - dev: false - /colorette@2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: false @@ -2918,11 +2673,6 @@ packages: /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - /commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - dev: false - /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -2946,22 +2696,13 @@ packages: /component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + dev: true /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.7 - typedarray: 0.0.6 - dev: false - - /config@3.3.9: - resolution: {integrity: sha512-G17nfe+cY7kR0wVpc49NCYvNtelm/pPy8czHoFkAgtV1lkmcp7DHtWCdDu+C9Z7gb2WVqa9Tm3uF9aKaPbCfhg==} + /config@3.3.11: + resolution: {integrity: sha512-Dhn63ZoWCW5EMg4P0Sl/XNsj/7RLiUIA1x1npCy+m2cRwRHzLnt3UtYtxRDMZW/6oOMdWhCzaGYkOcajGgrAOA==} engines: {node: '>= 10.0.0'} dependencies: json5: 2.2.3 @@ -3021,8 +2762,8 @@ packages: engines: {node: '>= 0.6'} dev: false - /cookiejar@2.1.3: - resolution: {integrity: sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==} + /cookiejar@2.1.4: + resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} dev: true /cookies@0.8.0: @@ -3033,16 +2774,11 @@ packages: keygrip: 1.1.0 dev: false - /copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - dev: false - /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: false - /cosmiconfig-typescript-loader@5.0.0(@types/node@18.19.3)(cosmiconfig@8.3.6)(typescript@5.2.2): + /cosmiconfig-typescript-loader@5.0.0(@types/node@20.11.16)(cosmiconfig@8.3.6)(typescript@5.3.3): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} peerDependencies: @@ -3050,13 +2786,13 @@ packages: cosmiconfig: '>=8.2' typescript: '>=4' dependencies: - '@types/node': 18.19.3 - cosmiconfig: 8.3.6(typescript@5.2.2) + '@types/node': 20.11.16 + cosmiconfig: 8.3.6(typescript@5.3.3) jiti: 1.20.0 - typescript: 5.2.2 + typescript: 5.3.3 dev: true - /cosmiconfig@8.3.6(typescript@5.2.2): + /cosmiconfig@8.3.6(typescript@5.3.3): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -3069,7 +2805,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.2.2 + typescript: 5.3.3 dev: true /cp-file@9.1.0: @@ -3096,17 +2832,7 @@ packages: p-map: 5.5.0 dev: true - /create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - dev: false - - /create-jest@29.7.0(@types/node@18.19.3)(ts-node@10.9.2): + /create-jest@29.7.0(@types/node@20.11.16)(ts-node@10.9.2): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3115,7 +2841,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 - jest-config: 29.7.0(@types/node@18.19.3)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -3157,13 +2883,6 @@ packages: cssom: 0.3.8 dev: true - /d@1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} - dependencies: - es5-ext: 0.10.62 - type: 1.2.0 - dev: false - /dargs@7.0.0: resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} engines: {node: '>=8'} @@ -3178,6 +2897,10 @@ packages: whatwg-url: 11.0.0 dev: true + /dataloader@2.2.2: + resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + dev: false + /dateformat@4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} dev: false @@ -3186,17 +2909,6 @@ packages: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} dev: false - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: false - /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -3208,18 +2920,6 @@ packages: ms: 2.1.3 dev: true - /debug@4.3.1: - resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: false - /debug@4.3.4(supports-color@5.5.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -3305,28 +3005,6 @@ packages: object-keys: 1.1.1 dev: true - /define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 0.1.6 - dev: false - - /define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - dev: false - - /define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - isobject: 3.0.1 - dev: false - /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -3345,16 +3023,16 @@ packages: engines: {node: '>= 0.8'} dev: false - /dependency-cruiser@16.0.0: - resolution: {integrity: sha512-piS5nFmjz/SOOBjpTHGJAJ2sWFKs7y56wfpPSi47Y44TwVhmRntnXd3aIHb8iPB7tWLk+xf2EjmVUbkCh910bw==} + /dependency-cruiser@16.1.0: + resolution: {integrity: sha512-gmuLNIi4ygkf9KLKZzCWc+og7uwFTkTPauT2ma764NtHQt3r4GoWqCR/lZK/kCfOpNOPU9mB0EM/7RmRL6BFXA==} engines: {node: ^18.17||>=20} hasBin: true dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) acorn-jsx-walk: 2.0.0 acorn-loose: 8.4.0 - acorn-walk: 8.3.1 + acorn-walk: 8.3.2 ajv: 8.12.0 chalk: 5.3.0 commander: 11.1.0 @@ -3374,7 +3052,7 @@ packages: semver-try-require: 6.2.3 teamcity-service-messages: 0.1.14 tsconfig-paths-webpack-plugin: 4.1.0 - watskeburt: 2.0.4 + watskeburt: 2.0.5 wrap-ansi: 9.0.0 dev: false @@ -3397,11 +3075,6 @@ packages: engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: false - /detect-file@1.0.0: - resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} - engines: {node: '>=0.10.0'} - dev: false - /detect-libc@2.0.1: resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} @@ -3616,16 +3289,11 @@ packages: is-obj: 2.0.0 dev: true - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + /dotenv@16.4.1: + resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} engines: {node: '>=12'} dev: false - /dotenv@8.2.0: - resolution: {integrity: sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==} - engines: {node: '>=8'} - dev: false - /duplexify@3.7.1: resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} dependencies: @@ -3644,10 +3312,6 @@ packages: stream-shift: 1.0.1 dev: false - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true - /ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: @@ -3669,14 +3333,14 @@ packages: /emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} - dev: false /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true + /encode-utf8@2.0.0: + resolution: {integrity: sha512-3EyMFxZj1/7oMotElDQUEQcP7N4TIe1aJ0m1uBDoyQ8I2LBHhBsXx8P3KsPbqNlGzG+NYxFwEauUwMPHZg3YDQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -3689,21 +3353,12 @@ packages: once: 1.4.0 dev: false - /enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.10 - tapable: 2.2.1 - dev: true - /enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.10 tapable: 2.2.1 - dev: false /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} @@ -3792,31 +3447,6 @@ packages: is-symbol: 1.0.4 dev: true - /es5-ext@0.10.62: - resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} - engines: {node: '>=0.10'} - requiresBuild: true - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.3 - next-tick: 1.1.0 - dev: false - - /es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-symbol: 3.1.3 - dev: false - - /es6-symbol@3.1.3: - resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} - dependencies: - d: 1.0.1 - ext: 1.7.0 - dev: false - /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -3845,11 +3475,6 @@ packages: engines: {node: '>=12'} dev: true - /escaya@0.0.61: - resolution: {integrity: sha512-WLLmvdG72Z0pCq8XUBd03GEJlAiMceXFanjdQeEzeSiuV1ZgrJqbkU7ZEe/hu0OsBlg5wLlySEeOvfzcGoO8mg==} - engines: {node: '>=6.0.0'} - dev: false - /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} @@ -3873,7 +3498,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3894,7 +3519,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.16.0(eslint@8.56.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) debug: 3.2.7 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 @@ -3902,7 +3527,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.16.0)(eslint@8.56.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.20.0)(eslint@8.56.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -3912,7 +3537,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.16.0(eslint@8.56.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -3921,7 +3546,7 @@ packages: doctrine: 2.1.0 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -4033,7 +3658,6 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} @@ -4108,28 +3732,6 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - dependencies: - homedir-polyfill: 1.0.3 - dev: false - /expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4141,47 +3743,6 @@ packages: jest-util: 29.7.0 dev: true - /ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - dependencies: - type: 2.7.2 - dev: false - - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: false - - /extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: false - - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false - - /extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /fast-content-type-parse@1.1.0: resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==} dev: false @@ -4260,8 +3821,8 @@ packages: resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} dev: false - /fastify@4.25.2: - resolution: {integrity: sha512-SywRouGleDHvRh054onj+lEZnbC1sBCLkR0UY3oyJwjD4BdZJUrxBqfkfCaqn74pVCwBaRHGuL3nEWeHbHzAfw==} + /fastify@4.26.0: + resolution: {integrity: sha512-Fq/7ziWKc6pYLYLIlCRaqJqEVTIZ5tZYfcW/mDK2AQ9v/sqjGFpj0On0/7hU50kbPVjLO4de+larPA1WwPZSfw==} dependencies: '@fastify/ajv-compiler': 3.5.0 '@fastify/error': 3.4.1 @@ -4270,9 +3831,9 @@ packages: avvio: 8.2.1 fast-content-type-parse: 1.1.0 fast-json-stringify: 5.9.1 - find-my-way: 7.7.0 + find-my-way: 8.1.0 light-my-request: 5.11.0 - pino: 8.17.1 + pino: 8.18.0 process-warning: 3.0.0 proxy-addr: 2.0.7 rfdc: 1.3.0 @@ -4314,6 +3875,15 @@ packages: flat-cache: 3.0.4 dev: true + /file-type@16.5.4: + resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} + engines: {node: '>=10'} + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 6.3.0 + token-types: 4.2.1 + dev: false + /filing-cabinet@3.3.0: resolution: {integrity: sha512-Tnbpbme1ONaHXV5DGcw0OFpcfP3p2itRf5VXO1bguBXdIewDbK6ZFBK//DGKM0BuCzaQLQNY4f5gljzxY1VCUw==} engines: {node: '>=10.13.0'} @@ -4322,7 +3892,7 @@ packages: app-module-path: 2.2.0 commander: 2.20.3 debug: 4.3.4(supports-color@5.5.0) - enhanced-resolve: 5.12.0 + enhanced-resolve: 5.15.0 is-relative-path: 1.0.2 module-definition: 3.4.0 module-lookup-amd: 7.0.1 @@ -4336,16 +3906,6 @@ packages: - supports-color dev: true - /fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - dev: false - /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -4366,8 +3926,8 @@ packages: pkg-dir: 4.2.0 dev: true - /find-my-way@7.7.0: - resolution: {integrity: sha512-+SrHpvQ52Q6W9f3wJoJBbAQULJuNEEQwBvlvYwACDhBTLOTMiQ0HYWh4+vC3OivGP2ENcTI1oKlFA2OepJNjhQ==} + /find-my-way@8.1.0: + resolution: {integrity: sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==} engines: {node: '>=14'} dependencies: fast-deep-equal: 3.1.3 @@ -4391,34 +3951,6 @@ packages: path-exists: 4.0.0 dev: true - /findup-sync@3.0.0: - resolution: {integrity: sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==} - engines: {node: '>= 0.10'} - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 3.1.10 - resolve-dir: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /fined@1.2.0: - resolution: {integrity: sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==} - engines: {node: '>= 0.10'} - dependencies: - expand-tilde: 2.0.2 - is-plain-object: 2.0.4 - object.defaults: 1.1.0 - object.pick: 1.3.0 - parse-filepath: 1.0.2 - dev: false - - /flagged-respawn@1.0.1: - resolution: {integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==} - engines: {node: '>= 0.10'} - dev: false - /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -4436,6 +3968,11 @@ packages: deprecated: flatten is deprecated in favor of utility frameworks such as lodash. dev: true + /fmix@1.0.0: + resolution: {integrity: sha512-PIaqOGvVH5P+R92Ywy5PumsNEHvondVQh42SGOmkA9A0ZTFbfguzZpjZ/Gy3WVRUqT9Ia8k5tWlJeiZQzRHA7g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + /follow-redirects@1.15.4(debug@4.3.4): resolution: {integrity: sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==} engines: {node: '>=4.0'} @@ -4452,18 +3989,6 @@ packages: dependencies: is-callable: 1.2.7 - /for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - dev: false - - /for-own@1.0.0: - resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - dev: false - /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -4472,8 +3997,8 @@ packages: combined-stream: 1.0.8 mime-types: 2.1.35 - /formidable@2.1.1: - resolution: {integrity: sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==} + /formidable@2.1.2: + resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} dependencies: dezalgo: 1.0.4 hexoid: 1.0.0 @@ -4486,13 +4011,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - dependencies: - map-cache: 0.2.2 - dev: false - /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -4505,15 +4023,6 @@ packages: readable-stream: 2.3.7 dev: false - /fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: false - /fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} @@ -4521,16 +4030,6 @@ packages: graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 - dev: true - - /fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 dev: false /fs-minipass@2.1.0: @@ -4540,6 +4039,13 @@ packages: minipass: 3.3.6 dev: false + /fs-temp@2.0.1: + resolution: {integrity: sha512-WYE7cUGOA0xRKsiYxNf/+WDuj0T20OtX85bVhsXpY+wJmjrRIUQftTI6JF9PVpo2RpGkh0l8lZsV8zszisYQ0Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + random-path: 1.0.0 + dev: false + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -4619,7 +4125,6 @@ packages: /get-east-asian-width@1.2.0: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} - dev: false /get-intrinsic@1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} @@ -4662,15 +4167,6 @@ packages: get-intrinsic: 1.2.2 dev: true - /get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - dev: false - - /getopts@2.2.5: - resolution: {integrity: sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==} - dev: false - /getopts@2.3.0: resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==} dev: false @@ -4724,26 +4220,6 @@ packages: ini: 1.3.8 dev: true - /global-modules@1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} - dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - dev: false - - /global-prefix@1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - dev: false - /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -4763,18 +4239,6 @@ packages: define-properties: 1.2.1 dev: true - /globby@11.0.3: - resolution: {integrity: sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - dev: false - /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -4782,7 +4246,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.12 - ignore: 5.2.4 + ignore: 5.3.0 merge2: 1.4.1 slash: 3.0.0 @@ -4847,6 +4311,11 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + /has-own-property@2.0.0: + resolution: {integrity: sha512-oupojxEPq/nfAshi0hOFDjpmYO4JXtymFyPC9YSBmFqGamZ2zUgrCkYInt5tf7f1j6iumlzJBpfLNRxZIQCM0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: @@ -4871,52 +4340,12 @@ packages: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} dev: false - /has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: false - - /has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - dev: false - - /has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - dev: false - - /has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - dev: false - /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - /hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: false - /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} @@ -4937,13 +4366,6 @@ packages: engines: {node: '>=8'} dev: true - /homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - dependencies: - parse-passwd: 1.0.0 - dev: false - /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -5007,11 +4429,9 @@ packages: - supports-color dev: true - /http_ece@1.1.0: - resolution: {integrity: sha512-bptAfCDdPJxOs5zYSe7Y3lpr772s1G346R4Td5LgRUeCwIGpCGDUTJxRrhTNcAXbx37spge0kWEIH7QAYWNTlA==} - engines: {node: '>=4'} - dependencies: - urlsafe-base64: 1.0.0 + /http_ece@1.2.0: + resolution: {integrity: sha512-JrF8SSLVmcvc5NducxgyOrKXe3EsyHMgBFgSaIUGmArKe+rwr0uphRkRXvwiom3I+fpIfoItveHrfudL8/rxuA==} + engines: {node: '>=16'} dev: false /https-proxy-agent@5.0.1: @@ -5042,9 +4462,9 @@ packages: engines: {node: '>=16.17.0'} dev: true - /husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} + /husky@9.0.10: + resolution: {integrity: sha512-TQGNknoiy6bURzIO77pPRu+XHi6zI7T93rX+QnJsoYFf3xdjKOur+IlfqzJGMHIK/wXrLg+GsvMs8Op7vI2jVA==} + engines: {node: '>=18'} hasBin: true dev: true @@ -5070,14 +4490,14 @@ packages: /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} + dev: true /ignore@5.3.0: resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} engines: {node: '>= 4'} - dev: false - /immutable@4.1.0: - resolution: {integrity: sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==} + /immutable@4.3.5: + resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} dev: false /import-fresh@3.3.0: @@ -5115,21 +4535,6 @@ packages: resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} dev: true - /infisical@1.0.46: - resolution: {integrity: sha512-DW2uEk4r8lImI7wjeckScOy1EWURJ9kT6vWtdaSciuZtV+hDvt0L9hFcA0plBtUz5dLGpPi5H5pY0j/Kxjbq0A==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - hasBin: true - dependencies: - axios: 0.27.2 - jsrp: 0.2.4 - netrc-rw: 1.0.0 - prompt-sync: 4.2.0 - tweetnacl: 1.0.3 - tweetnacl-util: 0.15.1 - transitivePeerDependencies: - - debug - dev: false - /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -5141,6 +4546,7 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true /ini@4.1.1: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} @@ -5181,6 +4587,7 @@ packages: /ip@2.0.0: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + dev: true /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} @@ -5192,28 +4599,6 @@ packages: engines: {node: '>= 10'} dev: false - /is-absolute@1.0.0: - resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} - engines: {node: '>=0.10.0'} - dependencies: - is-relative: 1.0.0 - is-windows: 1.0.2 - dev: false - - /is-accessor-descriptor@0.1.6: - resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /is-accessor-descriptor@1.0.0: - resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: false - /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -5273,20 +4658,6 @@ packages: dependencies: hasown: 2.0.0 - /is-data-descriptor@0.1.4: - resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /is-data-descriptor@1.0.0: - resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: false - /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -5294,36 +4665,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-descriptor@0.1.6: - resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 0.1.6 - is-data-descriptor: 0.1.4 - kind-of: 5.1.0 - dev: false - - /is-descriptor@1.0.2: - resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 1.0.0 - is-data-descriptor: 1.0.0 - kind-of: 6.0.3 - dev: false - - /is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: false - - /is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 - dev: false - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -5337,6 +4678,13 @@ packages: engines: {node: '>=12'} dev: true + /is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + dependencies: + get-east-asian-width: 1.2.0 + dev: true + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} @@ -5380,13 +4728,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -5416,13 +4757,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true @@ -5444,13 +4778,6 @@ packages: resolution: {integrity: sha512-i1h+y50g+0hRbBD+dbnInl3JlJ702aar58snAeX+MxBAPvzXGej7sYoPMhlnykabt0ZzCJNBEyzMlekuQZN7fA==} dev: true - /is-relative@1.0.0: - resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} - engines: {node: '>=0.10.0'} - dependencies: - is-unc-path: 1.0.0 - dev: false - /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: @@ -5506,17 +4833,6 @@ packages: which-typed-array: 1.1.13 dev: true - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: false - - /is-unc-path@1.0.0: - resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} - engines: {node: '>=0.10.0'} - dependencies: - unc-path-regex: 0.1.2 - dev: false - /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -5542,9 +4858,8 @@ packages: call-bind: 1.0.5 dev: true - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} + /isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: false /isarray@1.0.0: @@ -5557,18 +4872,7 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - /isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: false - - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: false + dev: true /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} @@ -5646,7 +4950,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -5667,7 +4971,7 @@ packages: - supports-color dev: true - /jest-cli@29.7.0(@types/node@18.19.3)(ts-node@10.9.2): + /jest-cli@29.7.0(@types/node@20.11.16)(ts-node@10.9.2): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5681,10 +4985,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.19.3)(ts-node@10.9.2) + create-jest: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@18.19.3)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.6.2 @@ -5695,7 +4999,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@18.19.3)(ts-node@10.9.2): + /jest-config@29.7.0(@types/node@20.11.16)(ts-node@10.9.2): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -5710,7 +5014,7 @@ packages: '@babel/core': 7.20.5 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 babel-jest: 29.7.0(@babel/core@7.20.5) chalk: 4.1.2 ci-info: 3.7.0 @@ -5730,7 +5034,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.2(@types/node@18.19.3)(typescript@5.2.2) + ts-node: 10.9.2(@types/node@20.11.16)(typescript@5.3.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -5777,7 +5081,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 18.19.3 + '@types/node': 20.11.16 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -5794,7 +5098,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -5810,7 +5114,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.5 - '@types/node': 18.19.3 + '@types/node': 20.11.16 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.10 @@ -5861,7 +5165,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 jest-util: 29.7.0 dev: true @@ -5916,7 +5220,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -5947,7 +5251,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -5999,7 +5303,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 chalk: 4.1.2 ci-info: 3.7.0 graceful-fs: 4.2.10 @@ -6024,7 +5328,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -6036,13 +5340,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.19.3 + '@types/node': 20.11.16 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.7.0(@types/node@18.19.3)(ts-node@10.9.2): + /jest@29.7.0(@types/node@20.11.16)(ts-node@10.9.2): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6055,7 +5359,7 @@ packages: '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@18.19.3)(ts-node@10.9.2) + jest-cli: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -6092,10 +5396,6 @@ packages: argparse: 2.0.1 dev: true - /jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - dev: false - /jsdom@20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} @@ -6106,7 +5406,7 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.8.1 + acorn: 8.11.2 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -6192,6 +5492,7 @@ packages: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.10 + dev: false /jsonify@0.0.1: resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} @@ -6202,14 +5503,6 @@ packages: engines: {'0': node >= 0.2.0} dev: true - /jsrp@0.2.4: - resolution: {integrity: sha512-+CjGAhZaj3k2MMXEy+xWYv7xJGnise/SlL1IIvnRuJ1ZiLtNPJJln/dMDCgORQCq1ouXDnW1FBxW5bkBFhK/8g==} - dependencies: - create-hash: 1.2.0 - jsbn: 1.1.0 - randombytes: 2.1.0 - dev: false - /junk@4.0.0: resolution: {integrity: sha512-ojtSU++zLJ3jQG9bAYjg94w+/DOJtRyD7nPaerMFrBhmdVmiV5/exYH5t4uHga4G/95nT6hr1OJoKIFbYbrW5w==} engines: {node: '>=12.20'} @@ -6247,75 +5540,18 @@ packages: tsscmp: 1.0.6 dev: false - /kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: false - - /kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: false - - /kind-of@5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} - dev: false - /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + dev: true /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - /knex@0.21.19(pg@8.6.0): - resolution: {integrity: sha512-6etvrq9XI1Ck6mEc/XiXFGVpD1Lmj6v9XWojqZgEbOvyMbW7XRvgZ99yIhN/kaBH+43FEy3xv/AcbRaH+1pJtw==} - engines: {node: '>=10'} - hasBin: true - peerDependencies: - mssql: ^6.2.1 - mysql: ^2.18.1 - mysql2: ^2.1.0 - pg: ^8.3.0 - sqlite3: ^5.0.0 - peerDependenciesMeta: - mssql: - optional: true - mysql: - optional: true - mysql2: - optional: true - pg: - optional: true - sqlite3: - optional: true - dependencies: - colorette: 1.2.1 - commander: 6.2.1 - debug: 4.3.1 - esm: 3.2.25 - getopts: 2.2.5 - interpret: 2.2.0 - liftoff: 3.1.0 - lodash: 4.17.21 - pg: 8.6.0 - pg-connection-string: 2.4.0 - tarn: 3.0.2 - tildify: 2.0.0 - v8flags: 3.2.0 - transitivePeerDependencies: - - supports-color - dev: false - - /knex@2.5.1(pg@8.11.3): - resolution: {integrity: sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA==} - engines: {node: '>=12'} + /knex@3.1.0(pg@8.11.3): + resolution: {integrity: sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw==} + engines: {node: '>=16'} hasBin: true peerDependencies: better-sqlite3: '*' @@ -6351,7 +5587,7 @@ packages: interpret: 2.2.0 lodash: 4.17.21 pg: 8.11.3 - pg-connection-string: 2.6.1 + pg-connection-string: 2.6.2 rechoir: 0.8.0 resolve-from: 5.0.0 tarn: 3.0.2 @@ -6445,22 +5681,6 @@ packages: type-check: 0.4.0 dev: true - /liftoff@3.1.0: - resolution: {integrity: sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==} - engines: {node: '>= 0.8'} - dependencies: - extend: 3.0.2 - findup-sync: 3.0.0 - fined: 1.2.0 - flagged-respawn: 1.0.1 - is-plain-object: 2.0.4 - object.map: 1.0.1 - rechoir: 0.6.2 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: false - /light-my-request@5.11.0: resolution: {integrity: sha512-qkFCeloXCOMpmEdZ/MV91P8AT4fjwFXWaAFz3lUeStM8RcoM1ks4J/F8r1b3r6y/H4u3ACEJ1T+Gv5bopj7oDA==} dependencies: @@ -6469,17 +5689,17 @@ packages: set-cookie-parser: 2.6.0 dev: false - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + /lilconfig@3.0.0: + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} dev: true /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /lint-staged@15.0.2: - resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==} + /lint-staged@15.2.1: + resolution: {integrity: sha512-dhwAPnM85VdshybV9FWI/9ghTvMLoQLEXgVMx+ua2DN7mdfzd/tRfoU2yhMcBac0RHkofoxdnnJUokr8s4zKmQ==} engines: {node: '>=18.12.0'} hasBin: true dependencies: @@ -6487,26 +5707,26 @@ packages: commander: 11.1.0 debug: 4.3.4(supports-color@5.5.0) execa: 8.0.1 - lilconfig: 2.1.0 - listr2: 7.0.2 + lilconfig: 3.0.0 + listr2: 8.0.1 micromatch: 4.0.5 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.3.3 + yaml: 2.3.4 transitivePeerDependencies: - supports-color dev: true - /listr2@7.0.2: - resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} - engines: {node: '>=16.0.0'} + /listr2@8.0.1: + resolution: {integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==} + engines: {node: '>=18.0.0'} dependencies: - cli-truncate: 3.1.0 + cli-truncate: 4.0.0 colorette: 2.0.20 eventemitter3: 5.0.1 - log-update: 5.0.1 + log-update: 6.0.0 rfdc: 1.3.0 - wrap-ansi: 8.1.0 + wrap-ansi: 9.0.0 dev: true /locate-path@5.0.0: @@ -6574,15 +5794,15 @@ packages: is-unicode-supported: 0.1.0 dev: true - /log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /log-update@6.0.0: + resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} + engines: {node: '>=18'} dependencies: - ansi-escapes: 5.0.0 + ansi-escapes: 6.2.0 cli-cursor: 4.0.0 - slice-ansi: 5.0.0 - strip-ansi: 7.0.1 - wrap-ansi: 8.1.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 dev: true /lru-cache@6.0.0: @@ -6591,7 +5811,7 @@ packages: dependencies: yallist: 4.0.0 - /madge@6.1.0(typescript@5.2.2): + /madge@6.1.0(typescript@5.3.3): resolution: {integrity: sha512-irWhT5RpFOc6lkzGHKLihonCVgM0YtfNUh4IrFeW3EqHpnt/JHUG3z26j8PeJEktCGB4tmGOOOJi1Rl/ACWucQ==} engines: {node: '>=14'} hasBin: true @@ -6622,7 +5842,7 @@ packages: rc: 1.2.8 stream-to-array: 2.3.0 ts-graphviz: 1.5.3 - typescript: 5.2.2 + typescript: 5.3.3 walkdir: 0.4.1 transitivePeerDependencies: - supports-color @@ -6638,24 +5858,12 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /make-iterator@1.0.1: - resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: false - /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true - /map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - dev: false - /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -6666,21 +5874,6 @@ packages: engines: {node: '>=8'} dev: true - /map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - dependencies: - object-visit: 1.0.1 - dev: false - - /md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: false - /md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} dependencies: @@ -6736,27 +5929,6 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - /micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -6764,9 +5936,9 @@ packages: braces: 3.0.2 picomatch: 2.3.1 - /mikro-orm@5.9.6: - resolution: {integrity: sha512-nmEnx2r/1dD58hbUVHbOhlhNPb/8yoiNPaRBOCalwQ56f29E/rlB3aIUsIEsUqzKZ8PP7z0uAPtuRABUHFDW9Q==} - engines: {node: '>= 14.0.0'} + /mikro-orm@6.0.7: + resolution: {integrity: sha512-xroA0FDu6EndAj3e5HayA2pFyJ1Fnn63X5jxjcK+cPM0/0p81YELkIACeNmg3+S1A2JDm5eLVvkMrmwi73DvjA==} + engines: {node: '>= 18.12.0'} dev: false /mime-db@1.52.0: @@ -6868,21 +6040,6 @@ packages: yallist: 4.0.0 dev: false - /mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - dev: false - - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.7 - dev: false - /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -6936,6 +6093,7 @@ packages: dependencies: '@types/whatwg-url': 8.2.2 whatwg-url: 11.0.0 + dev: true /mongodb-connection-string-url@3.0.0: resolution: {integrity: sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==} @@ -6984,34 +6142,6 @@ packages: - supports-color dev: true - /mongodb@5.9.1: - resolution: {integrity: sha512-NBGA8AfJxGPeB12F73xXwozt8ZpeIPmCUeWRwl9xejozTXFes/3zaep9zhzs1B/nKKsw4P3I4iPfXl3K7s6g+Q==} - engines: {node: '>=14.20.1'} - peerDependencies: - '@aws-sdk/credential-providers': ^3.188.0 - '@mongodb-js/zstd': ^1.0.0 - kerberos: ^1.0.0 || ^2.0.0 - mongodb-client-encryption: '>=2.3.0 <3' - snappy: ^7.2.2 - peerDependenciesMeta: - '@aws-sdk/credential-providers': - optional: true - '@mongodb-js/zstd': - optional: true - kerberos: - optional: true - mongodb-client-encryption: - optional: true - snappy: - optional: true - dependencies: - bson: 5.5.1 - mongodb-connection-string-url: 2.6.0 - socks: 2.7.1 - optionalDependencies: - '@mongodb-js/saslprep': 1.1.0 - dev: false - /mongodb@5.9.2: resolution: {integrity: sha512-H60HecKO4Bc+7dhOv4sJlgvenK4fQNqqUIlXxZYQNbfEWSALGAwGoyJd/0Qwk4TttFXUOHJ2ZJQe/52ScaUwtQ==} engines: {node: '>=14.20.1'} @@ -7071,13 +6201,13 @@ packages: bson: 6.2.0 mongodb-connection-string-url: 3.0.0 - /mongoose@7.6.7: - resolution: {integrity: sha512-6Ihl7Y7OlSEMiwyjar3N8sMKRZa3LNGcayES8I+Hluo0sV6j1SVOo8MXXnwi+z3+Hcyk4zO47+xL87fBTNlWVw==} - engines: {node: '>=14.20.1'} + /mongoose@8.1.1: + resolution: {integrity: sha512-DbLb0NsiEXmaqLOpEz+AtAsgwhRw6f25gwa1dF5R7jj6lS1D8X6uTdhBSC8GDVtOwe5Tfw2EL7nTn6hiJT3Bgg==} + engines: {node: '>=16.20.1'} dependencies: - bson: 5.5.1 + bson: 6.2.0 kareem: 2.5.1 - mongodb: 5.9.1 + mongodb: 6.3.0 mpath: 0.9.0 mquery: 5.0.0 ms: 2.1.3 @@ -7085,9 +6215,11 @@ packages: transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' + - gcp-metadata - kerberos - mongodb-client-encryption - snappy + - socks - supports-color dev: false @@ -7109,27 +6241,32 @@ packages: - supports-color dev: false - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false - /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /multer@1.4.5-lts.1: - resolution: {integrity: sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==} - engines: {node: '>= 6.0.0'} + /multer@2.0.0-rc.4: + resolution: {integrity: sha512-YkjV/rOzngEBxtZV8s6BcBcB/z2v/dfDcIpWagmMsKBq0QnQCu/NpCUDd2ElExfnxRXMVXKrFh94/UKe4NdxBQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - append-field: 1.0.0 - busboy: 1.6.0 - concat-stream: 1.6.2 - mkdirp: 0.5.6 - object-assign: 4.1.1 + '@fastify/busboy': 1.2.1 + append-field: 2.0.0 + bytes: 3.1.2 + fs-temp: 2.0.1 + has-own-property: 2.0.0 + on-finished: 2.4.1 + stream-file-type: 0.6.1 type-is: 1.6.18 - xtend: 4.0.2 + dev: false + + /murmur-32@1.0.0: + resolution: {integrity: sha512-l6QKUGWXzZWHash7lmZzycpIifOrnc3PeMaoFrMv90c+xqOyOSzJU0q2T/1d15MzAdEWTpCh1paC855APqt1Gw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + encode-utf8: 2.0.0 + fmix: 1.0.0 dev: false /nanoid@3.3.7: @@ -7137,25 +6274,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -7183,10 +6301,6 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /netrc-rw@1.0.0: - resolution: {integrity: sha512-Zt4XH3mXjZ6V20Ohckk+xQ6aKVajdfL2Mo07TIWORx77IFux36JacBPeOh/Tdc11Iqg8rAC+5huiO+AmmIg2fg==} - dev: false - /new-find-package-json@2.0.0: resolution: {integrity: sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew==} engines: {node: '>=12.22.0'} @@ -7196,10 +6310,6 @@ packages: - supports-color dev: true - /next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - dev: false - /node-addon-api@5.0.0: resolution: {integrity: sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==} dev: false @@ -7223,11 +6333,6 @@ packages: whatwg-url: 5.0.0 dev: false - /node-gyp-build@4.6.1: - resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} - hasBin: true - dev: false - /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true @@ -7255,8 +6360,8 @@ packages: engines: {node: '>=6.0.0'} dev: false - /nodemon@3.0.2: - resolution: {integrity: sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==} + /nodemon@3.0.3: + resolution: {integrity: sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ==} engines: {node: '>=10'} hasBin: true dependencies: @@ -7343,15 +6448,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - dev: false - /object-hash@2.2.0: resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} engines: {node: '>= 6'} @@ -7369,13 +6465,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} @@ -7386,16 +6475,6 @@ packages: object-keys: 1.1.1 dev: true - /object.defaults@1.1.0: - resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} - engines: {node: '>=0.10.0'} - dependencies: - array-each: 1.0.1 - array-slice: 1.1.0 - for-own: 1.0.0 - isobject: 3.0.1 - dev: false - /object.fromentries@2.0.7: resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} @@ -7414,21 +6493,6 @@ packages: get-intrinsic: 1.2.2 dev: true - /object.map@1.0.1: - resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} - engines: {node: '>=0.10.0'} - dependencies: - for-own: 1.0.0 - make-iterator: 1.0.1 - dev: false - - /object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - /object.values@1.1.7: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} @@ -7601,15 +6665,6 @@ packages: callsites: 3.1.0 dev: true - /parse-filepath@1.0.2: - resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} - engines: {node: '>=0.8'} - dependencies: - is-absolute: 1.0.0 - map-cache: 0.2.2 - path-root: 0.1.1 - dev: false - /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -7625,11 +6680,6 @@ packages: engines: {node: '>=6'} dev: true - /parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - dev: false - /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: @@ -7641,11 +6691,6 @@ packages: engines: {node: '>= 0.8'} dev: false - /pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - dev: false - /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -7668,18 +6713,6 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-root-regex@0.1.2: - resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} - engines: {node: '>=0.10.0'} - dev: false - - /path-root@0.1.1: - resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} - engines: {node: '>=0.10.0'} - dependencies: - path-root-regex: 0.1.2 - dev: false - /path-to-regexp@6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} dev: false @@ -7688,6 +6721,11 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + /peek-readable@4.1.0: + resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} + engines: {node: '>=8'} + dev: false + /peek-stream@1.1.3: resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} dependencies: @@ -7706,14 +6744,6 @@ packages: dev: false optional: true - /pg-connection-string@2.4.0: - resolution: {integrity: sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ==} - dev: false - - /pg-connection-string@2.6.1: - resolution: {integrity: sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==} - dev: false - /pg-connection-string@2.6.2: resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} dev: false @@ -7722,9 +6752,11 @@ packages: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - /pg-mem@2.7.4(pg-promise@11.5.4): - resolution: {integrity: sha512-gMYPlVDTKPgYyLkbfzkY6EDqljhOE/sarKiCwx9oPzvuPIR4G1AzMGSby0k3HYsR/y6kynr2cb8NkzHY0qattA==} + /pg-mem@2.8.1(@mikro-orm/core@6.0.7)(@mikro-orm/postgresql@6.0.7)(pg-promise@11.5.4): + resolution: {integrity: sha512-6akyFsbVnChtZT5QUMsyh8w2qp+Ym0+IZrWNojoVU+v38JFHjF5KQX+rKz2IHDR5Rpx+7Bsin+XCicox5ms9VA==} peerDependencies: + '@mikro-orm/core': '>=4.5.3' + '@mikro-orm/postgresql': '>=4.5.3' knex: '>=0.20' kysely: '>=0.26' mikro-orm: '*' @@ -7732,6 +6764,10 @@ packages: slonik: '>=23.0.1' typeorm: '>=0.2.29' peerDependenciesMeta: + '@mikro-orm/core': + optional: true + '@mikro-orm/postgresql': + optional: true knex: optional: true kysely: @@ -7745,29 +6781,16 @@ packages: typeorm: optional: true dependencies: - '@mikro-orm/core': 4.5.10(@mikro-orm/postgresql@4.5.10) - '@mikro-orm/postgresql': 4.5.10(@mikro-orm/core@4.5.10) + '@mikro-orm/core': 6.0.7 + '@mikro-orm/postgresql': 6.0.7(@mikro-orm/core@6.0.7) functional-red-black-tree: 1.0.1 - immutable: 4.1.0 + immutable: 4.3.5 json-stable-stringify: 1.0.2 lru-cache: 6.0.0 moment: 2.29.4 object-hash: 2.2.0 pg-promise: 11.5.4 - pgsql-ast-parser: 11.1.0 - transitivePeerDependencies: - - '@mikro-orm/entity-generator' - - '@mikro-orm/mariadb' - - '@mikro-orm/migrations' - - '@mikro-orm/mongodb' - - '@mikro-orm/mysql' - - '@mikro-orm/sqlite' - - mssql - - mysql - - mysql2 - - pg-native - - sqlite3 - - supports-color + pgsql-ast-parser: 12.0.1 dev: false /pg-minify@1.6.3: @@ -7788,14 +6811,6 @@ packages: pg: 8.11.3 dev: false - /pg-pool@3.6.1(pg@8.6.0): - resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} - peerDependencies: - pg: '>=8.0' - dependencies: - pg: 8.6.0 - dev: false - /pg-promise@11.5.4: resolution: {integrity: sha512-esYSkDt2h6NQOkfotGAm1Ld5OjoITJLpB88Z1PIlcAU/RQ0XQE2PxW0bLJEOMHPGV5iaRnj1Y7ARznXbgN4FNw==} engines: {node: '>=14.0'} @@ -7855,32 +6870,14 @@ packages: pg-cloudflare: 1.1.1 dev: false - /pg@8.6.0: - resolution: {integrity: sha512-qNS9u61lqljTDFvmk/N66EeGq3n6Ujzj0FFyNMGQr6XuEv4tgNTXvJQTfJdcvGit5p5/DWPu+wj920hAJFI+QQ==} - engines: {node: '>= 8.0.0'} - peerDependencies: - pg-native: '>=2.0.0' - peerDependenciesMeta: - pg-native: - optional: true - dependencies: - buffer-writer: 2.0.0 - packet-reader: 1.0.0 - pg-connection-string: 2.6.2 - pg-pool: 3.6.1(pg@8.6.0) - pg-protocol: 1.6.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - dev: false - /pgpass@1.0.5: resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} dependencies: split2: 4.1.0 dev: false - /pgsql-ast-parser@11.1.0: - resolution: {integrity: sha512-c0XnjHzUyg2Z/3iB2Akk6+jDtsza4Jqw4bC5SSt9pQ3b+K4aQC75gJQDvsNYvFqQNaPHLCUunDLPc5SZsQQLIA==} + /pgsql-ast-parser@12.0.1: + resolution: {integrity: sha512-pe8C6Zh5MsS+o38WlSu18NhrTjAv1UNMeDTs2/Km2ZReZdYBYtwtbWGZKK2BM2izv5CrQpbmP0oI10wvHOwv4A==} dependencies: moo: 0.5.2 nearley: 2.20.1 @@ -7912,8 +6909,8 @@ packages: split2: 4.1.0 dev: false - /pino-pretty@10.3.0: - resolution: {integrity: sha512-JthvQW289q3454mhM3/38wFYGWPiBMR28T3CpDNABzoTQOje9UKS7XCJQSnjWF9LQGQkGd8D7h0oq+qwiM3jFA==} + /pino-pretty@10.3.1: + resolution: {integrity: sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==} hasBin: true dependencies: colorette: 2.0.20 @@ -7936,8 +6933,8 @@ packages: resolution: {integrity: sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==} dev: false - /pino@8.17.1: - resolution: {integrity: sha512-YoN7/NJgnsJ+fkADZqjhRt96iepWBndQHeClmSBH0sQWCb8zGD74t00SK4eOtKFi/f8TUmQnfmgglEhd2kI1RQ==} + /pino@8.18.0: + resolution: {integrity: sha512-Mz/gKiRyuXu4HnpHgi1YWdHQCoWMufapzooisvFn78zl4dZciAxS+YeRkUxXl1ee/SzU80YCz1zpECCh4oC6Aw==} hasBin: true dependencies: atomic-sleep: 1.0.0 @@ -7945,7 +6942,7 @@ packages: on-exit-leak-free: 2.1.0 pino-abstract-transport: 1.1.0 pino-std-serializers: 6.1.0 - process-warning: 2.3.0 + process-warning: 3.0.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.4.2 @@ -7970,11 +6967,6 @@ packages: engines: {node: '>=4'} dev: true - /posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - dev: false - /postcss-values-parser@2.0.1: resolution: {integrity: sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==} engines: {node: '>=6.14.4'} @@ -8037,6 +7029,11 @@ packages: engines: {node: '>=12'} dev: true + /postgres-date@2.1.0: + resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} + engines: {node: '>=12'} + dev: false + /postgres-interval@1.2.0: resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} engines: {node: '>=0.10.0'} @@ -8049,6 +7046,11 @@ packages: engines: {node: '>=12'} dev: true + /postgres-interval@4.0.2: + resolution: {integrity: sha512-EMsphSQ1YkQqKZL2cuG0zHkmjCCzQqQ71l2GXITqRwjhRleCdv00bDk/ktaSi0LnlaPzAc3535KTrjXsTdtx7A==} + engines: {node: '>=12'} + dev: false + /postgres-range@1.1.3: resolution: {integrity: sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==} dev: true @@ -8139,12 +7141,6 @@ packages: engines: {node: '>= 0.6.0'} dev: false - /prompt-sync@4.2.0: - resolution: {integrity: sha512-BuEzzc5zptP5LsgV5MZETjDaKSWfchl5U9Luiu8SKp7iZWD5tZalOxvNcZRwv+d2phNFr8xlbxmFNcRKfJOzJw==} - dependencies: - strip-ansi: 5.2.0 - dev: false - /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -8217,7 +7213,6 @@ packages: /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -8251,10 +7246,12 @@ packages: ret: 0.1.15 dev: false - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + /random-path@1.0.0: + resolution: {integrity: sha512-I6FGG7uFR3tZqHP7TzcP3Ikt5IyVEG59u7KTjIIjizcdPY6MDjD9CbbKqE+znIv4mrDF6HMlBshoemk0oRRwsQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - safe-buffer: 5.2.1 + base32-encode: 2.0.0 + murmur-32: 1.0.0 dev: false /rc@1.2.8: @@ -8290,6 +7287,15 @@ packages: type-fest: 0.6.0 dev: true + /readable-stream@1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: false + /readable-stream@2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: @@ -8320,6 +7326,13 @@ packages: process: 0.11.10 dev: false + /readable-web-to-node-stream@3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} + dependencies: + readable-stream: 3.6.2 + dev: false + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -8354,22 +7367,10 @@ packages: strip-indent: 3.0.0 dev: true - /reflect-metadata@0.1.13: - resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} - dev: false - /reflect-metadata@0.2.1: resolution: {integrity: sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==} dev: false - /regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - dev: false - /regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -8384,16 +7385,6 @@ packages: set-function-name: 2.0.1 dev: true - /repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: false - - /repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: false - /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -8419,7 +7410,6 @@ packages: /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} @@ -8433,14 +7423,6 @@ packages: engines: {node: '>=6.0.0'} dev: true - /resolve-dir@1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - dev: false - /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -8457,11 +7439,6 @@ packages: global-dirs: 0.1.1 dev: true - /resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - dev: false - /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} @@ -8522,13 +7499,6 @@ packages: dependencies: glob: 7.2.3 - /ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - dev: false - /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -8571,12 +7541,6 @@ packages: ret: 0.2.2 dev: false - /safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - dependencies: - ret: 0.1.15 - dev: false - /safe-regex@2.1.1: resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} dependencies: @@ -8641,6 +7605,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: false /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -8676,28 +7641,10 @@ packages: has-property-descriptors: 1.0.0 dev: true - /set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: false - /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false - /sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: false - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -8766,41 +7713,18 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true + /slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + dev: true + /smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - - /snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - dev: false - - /snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: false + dev: true /socks@2.7.1: resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} @@ -8808,6 +7732,7 @@ packages: dependencies: ip: 2.0.0 smart-buffer: 4.2.0 + dev: true /sonic-boom@3.7.0: resolution: {integrity: sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==} @@ -8820,17 +7745,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - dev: false - /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: @@ -8838,16 +7752,6 @@ packages: source-map: 0.6.1 dev: true - /source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - dev: false - - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false - /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -8890,13 +7794,6 @@ packages: engines: {node: '>=6'} dev: false - /split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - dev: false - /split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: @@ -8911,11 +7808,6 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /sqlstring@2.3.2: - resolution: {integrity: sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg==} - engines: {node: '>= 0.6'} - dev: false - /sqlstring@2.3.3: resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==} engines: {node: '>= 0.6'} @@ -8928,14 +7820,6 @@ packages: escape-string-regexp: 2.0.0 dev: true - /static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - dev: false - /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -8951,6 +7835,13 @@ packages: engines: {node: '>=4', npm: '>=6'} dev: false + /stream-file-type@0.6.1: + resolution: {integrity: sha512-//KIXMQan4ow4gD//dfPu15nhH/sFdt41PzAOpD9EBFUBy/MtFjocTPO8v1dTOJnyi47TlPo6Qj+67sSE1lJKA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + file-type: 16.5.4 + dev: false + /stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} dev: false @@ -8961,11 +7852,6 @@ packages: any-promise: 1.3.0 dev: true - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - dev: false - /streamx@2.15.6: resolution: {integrity: sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==} dependencies: @@ -8999,15 +7885,6 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.0.1 - dev: true - /string-width@7.0.0: resolution: {integrity: sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==} engines: {node: '>=18'} @@ -9015,7 +7892,6 @@ packages: emoji-regex: 10.3.0 get-east-asian-width: 1.2.0 strip-ansi: 7.1.0 - dev: false /string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} @@ -9042,6 +7918,10 @@ packages: es-abstract: 1.22.3 dev: true + /string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + dev: false + /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: @@ -9062,32 +7942,17 @@ packages: is-regexp: 1.0.0 dev: true - /strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - dependencies: - ansi-regex: 4.1.1 - dev: false - /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.0.1: - resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: true - /strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - dev: false /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} @@ -9128,6 +7993,14 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false + /strtok3@6.3.0: + resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} + engines: {node: '>=10'} + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 4.1.0 + dev: false + /stylus-lookup@3.0.2: resolution: {integrity: sha512-oEQGHSjg/AMaWlKe7gqsnYzan8DLcGIHe0dUaFkucZZ14z4zjENRlQMCHT4FNsiWnJf17YN9OvrCfCoi7VvOyg==} engines: {node: '>=6.0.0'} @@ -9139,30 +8012,30 @@ packages: - supports-color dev: true - /superagent@8.0.5: - resolution: {integrity: sha512-lQVE0Praz7nHiSaJLKBM/cZyi7J0E4io8tWnGSBdBrqAzhzrjQ/F5iGP9Zr29CJC8N5zYdhG2kKaNcB6dKxp7g==} + /superagent@8.1.2: + resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} engines: {node: '>=6.4.0 <13 || >=14'} dependencies: component-emitter: 1.3.0 - cookiejar: 2.1.3 + cookiejar: 2.1.4 debug: 4.3.4(supports-color@5.5.0) fast-safe-stringify: 2.1.1 form-data: 4.0.0 - formidable: 2.1.1 + formidable: 2.1.2 methods: 1.1.2 mime: 2.6.0 qs: 6.11.2 - semver: 7.3.8 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true - /supertest@6.3.3: - resolution: {integrity: sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==} + /supertest@6.3.4: + resolution: {integrity: sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==} engines: {node: '>=6.4.0'} dependencies: methods: 1.1.2 - superagent: 8.0.5 + superagent: 8.1.2 transitivePeerDependencies: - supports-color dev: true @@ -9242,6 +8115,10 @@ packages: minimatch: 3.1.2 dev: true + /text-decoding@1.0.0: + resolution: {integrity: sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA==} + dev: false + /text-extensions@2.4.0: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} engines: {node: '>=8'} @@ -9282,42 +8159,22 @@ packages: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true + /to-data-view@2.0.0: + resolution: {integrity: sha512-RGEM5KqlPHr+WVTPmGNAXNeFEmsBnlkxXaIfEpUYV0AST2Z5W1EGq9L/MENFrMMmL2WQr1wjkmZy/M92eKhjYA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: true - /to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - dev: false - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - dev: false - /toad-cache@3.3.0: resolution: {integrity: sha512-3oDzcogWGHZdkwrHyvJVpPjA7oNzY6ENOV3PsWJY9XYPZ6INo94Yd47s5may1U+nleBPwDhrRiTPMIvKaa3MQg==} engines: {node: '>=12'} @@ -9328,6 +8185,14 @@ packages: engines: {node: '>=0.6'} dev: false + /token-types@4.2.1: + resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} + engines: {node: '>=10'} + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + dev: false + /touch@3.1.0: resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} hasBin: true @@ -9354,6 +8219,7 @@ packages: engines: {node: '>=12'} dependencies: punycode: 2.1.1 + dev: true /tr46@4.1.1: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} @@ -9366,13 +8232,13 @@ packages: engines: {node: '>=8'} dev: true - /ts-api-utils@1.0.3(typescript@5.2.2): + /ts-api-utils@1.0.3(typescript@5.3.3): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.2.2 + typescript: 5.3.3 dev: true /ts-graphviz@1.5.3: @@ -9380,7 +8246,7 @@ packages: engines: {node: '>=14.16'} dev: true - /ts-node@10.9.2(@types/node@18.19.3)(typescript@5.2.2): + /ts-node@10.9.2(@types/node@20.11.16)(typescript@5.3.3): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -9399,14 +8265,14 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.19.3 + '@types/node': 20.11.16 acorn: 8.11.2 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.2.2 + typescript: 5.3.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -9485,14 +8351,6 @@ packages: tslib: 1.14.1 dev: false - /tweetnacl-util@0.15.1: - resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} - dev: false - - /tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - dev: false - /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} @@ -9537,9 +8395,9 @@ packages: engines: {node: '>=8'} dev: true - /type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} + /type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} dev: true /type-is@1.6.18: @@ -9550,14 +8408,6 @@ packages: mime-types: 2.1.35 dev: false - /type@1.2.0: - resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - dev: false - - /type@2.7.2: - resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - dev: false - /typed-array-buffer@1.0.0: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} @@ -9596,16 +8446,6 @@ packages: is-typed-array: 1.1.12 dev: true - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: false - - /typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: false - /typescript@3.9.10: resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} engines: {node: '>=4.2.0'} @@ -9618,8 +8458,8 @@ packages: hasBin: true dev: true - /typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -9641,11 +8481,6 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /unc-path-regex@0.1.2: - resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} - engines: {node: '>=0.10.0'} - dev: false - /undefsafe@2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} dev: true @@ -9653,16 +8488,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - dev: false - /uniq@1.0.1: resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} dev: true @@ -9675,13 +8500,6 @@ packages: /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - - /unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 dev: false /update-browserslist-db@1.0.10(browserslist@4.21.4): @@ -9700,34 +8518,11 @@ packages: dependencies: punycode: 2.1.1 - /urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: false - /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - dev: true - - /urlsafe-base64@1.0.0: - resolution: {integrity: sha512-RtuPeMy7c1UrHwproMZN9gN6kiZ0SvJwRaEzwZY0j9MypEkFqyBaKv176jvlPtg58Zh36bOkS0NFABXMHvvGCA==} - dev: false - - /use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - dev: false - - /utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - requiresBuild: true - dependencies: - node-gyp-build: 4.6.1 - dev: false /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -9766,13 +8561,6 @@ packages: convert-source-map: 1.9.0 dev: true - /v8flags@3.2.0: - resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==} - engines: {node: '>= 0.10'} - dependencies: - homedir-polyfill: 1.0.3 - dev: false - /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: @@ -9803,8 +8591,8 @@ packages: makeerror: 1.0.12 dev: true - /watskeburt@2.0.4: - resolution: {integrity: sha512-9xAL/S6WQocWEa/Ud5hoPWGp3nknBsXgtGansjEmyu3ZBjZwPKGRn/151qiE9Jvp1VHniDlnivQCesTfUnwekw==} + /watskeburt@2.0.5: + resolution: {integrity: sha512-mCxVT4o/U+nNxmYJ+Oei3qre4F28IBWR9c7RGS8aeAR7a7UY1y4ikTWcv+kaaybf1QXUANmB7XBHawHBcmg+kw==} engines: {node: ^18||>=20} hasBin: true dev: false @@ -9823,13 +8611,13 @@ packages: '@zxing/text-encoding': 0.9.0 dev: false - /web-push@3.6.6: - resolution: {integrity: sha512-SyteEck9fiCskNmPxs/GFhJsZrIyLfRvjWNmcUwULLJyCU0f1oxo2sWTokXA1mDAq9vxk4e4gVcb/8agq73NkQ==} + /web-push@3.6.7: + resolution: {integrity: sha512-OpiIUe8cuGjrj3mMBFWY+e4MMIkW3SVT+7vEIjvD9kejGUypv8GPDf84JdPWskK8zMRIJ6xYGm+Kxr8YkPyA0A==} engines: {node: '>= 16'} hasBin: true dependencies: asn1.js: 5.4.1 - http_ece: 1.1.0 + http_ece: 1.2.0 https-proxy-agent: 7.0.2 jws: 4.0.0 minimist: 1.2.7 @@ -9845,20 +8633,6 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - /websocket@1.0.34: - resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} - engines: {node: '>=4.0.0'} - dependencies: - bufferutil: 4.0.8 - debug: 2.6.9 - es5-ext: 0.10.62 - typedarray-to-buffer: 3.1.5 - utf-8-validate: 5.0.10 - yaeti: 0.0.6 - transitivePeerDependencies: - - supports-color - dev: false - /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} @@ -9877,6 +8651,7 @@ packages: dependencies: tr46: 3.0.0 webidl-conversions: 7.0.0 + dev: true /whatwg-url@13.0.0: resolution: {integrity: sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==} @@ -9925,13 +8700,6 @@ packages: is-typed-array: 1.1.10 dev: false - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -9964,15 +8732,6 @@ packages: strip-ansi: 6.0.1 dev: true - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.0.1 - dev: true - /wrap-ansi@9.0.0: resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} engines: {node: '>=18'} @@ -9980,7 +8739,6 @@ packages: ansi-styles: 6.2.1 string-width: 7.0.0 strip-ansi: 7.1.0 - dev: false /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -10006,6 +8764,19 @@ packages: optional: true dev: true + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -10042,16 +8813,11 @@ packages: engines: {node: '>=10'} dev: true - /yaeti@0.0.6: - resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} - engines: {node: '>=0.10.32'} - dev: false - /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml@2.3.3: - resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} dev: true diff --git a/src/Config/Locales/en.json b/src/Config/Locales/en.json deleted file mode 100644 index 3c21d943..00000000 --- a/src/Config/Locales/en.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "greetings": "Welcome to Node Experience", - "auth": { - "domain": { - "messages": { - "logout": "You have logged out successfully.", - "forgotPassword": "We've sent you an email.", - "changeForgotPassword": "You have change your password successfully.", - "register": "You have sign up successfully." - } - } - } -} diff --git a/src/Config/MainConfig.ts b/src/Config/MainConfig.ts index 836374a8..ae2f4257 100644 --- a/src/Config/MainConfig.ts +++ b/src/Config/MainConfig.ts @@ -94,11 +94,20 @@ export type ValidateSettingsType = { }; }; +export type MessageBrokerConfig = { + protocol: string, + hostname: string, + username: string, + password: string, + port: number +} + export type ConfigType = { env: string, auth: AuthConfig; app: AppConfig, dbConfig: DbConfigType, + messageBroker: MessageBrokerConfig, cache: { redis: CacheConfig, enable: boolean diff --git a/src/Config/validateEnv.ts b/src/Config/validateEnv.ts index 26710c4c..1d3789ed 100644 --- a/src/Config/validateEnv.ts +++ b/src/Config/validateEnv.ts @@ -24,6 +24,12 @@ export function validateEnv() CACHE_PASSWORD: str({ default: '12345678' }), CACHE_ENABLE: bool({ default: false }), + MESSAGE_BROKER_PROTOCOL: str(), + MESSAGE_BROKER_HOST: str(), + MESSAGE_BROKER_PORT: port(), + MESSAGE_BROKER_USER: str(), + MESSAGE_BROKER_PASSWORD: str(), + DB_URI: str(), DB_ORM_DEFAULT: str(), DB_TYPE: str(), diff --git a/src/Main/Infrastructure/Database/CreateMikroORMConnection.ts b/src/Main/Infrastructure/Database/CreateMikroORMConnection.ts index 9e03ac6c..b969de13 100644 --- a/src/Main/Infrastructure/Database/CreateMikroORMConnection.ts +++ b/src/Main/Infrastructure/Database/CreateMikroORMConnection.ts @@ -1,4 +1,4 @@ -import { MikroORM } from '@mikro-orm/core'; +import { MikroORM } from '@mikro-orm/postgresql'; import { newDb } from 'pg-mem'; import Item from '../../../Item/Infrastructure/Schemas/ItemMikroORM'; import ICreateConnection from './ICreateConnection'; @@ -27,7 +27,6 @@ class CreateMikroORMConnection implements ICreateConnection entities: this.entities, clientUrl: '', dbName: this.config.dbName, - type: this.config.type, host: this.config.host, port: this.config.port, user: this.config.user, diff --git a/src/Main/Infrastructure/Factories/EntityMikroORMManagerFactory.ts b/src/Main/Infrastructure/Factories/EntityMikroORMManagerFactory.ts index ac0431fe..d0b9d439 100644 --- a/src/Main/Infrastructure/Factories/EntityMikroORMManagerFactory.ts +++ b/src/Main/Infrastructure/Factories/EntityMikroORMManagerFactory.ts @@ -6,12 +6,11 @@ class EntityMikroORMManagerFactory { public static getEntityFactory(): EntityManager { - // @ts-ignore let rem = RequestContext.getEntityManager() as EntityManager; if (!rem) { - rem = orm.em as EntityManager; + rem = orm.em; } return rem; diff --git a/src/Main/Infrastructure/Jobs/IJob.ts b/src/Main/Infrastructure/Jobs/IJob.ts new file mode 100644 index 00000000..4614dea4 --- /dev/null +++ b/src/Main/Infrastructure/Jobs/IJob.ts @@ -0,0 +1,7 @@ + +interface IJob +{ + execute(content: T): Promise; +} + +export default IJob; diff --git a/src/Main/Infrastructure/Orm/MongoosePaginator.ts b/src/Main/Infrastructure/Orm/MongoosePaginator.ts index 200a1440..52b8b04a 100644 --- a/src/Main/Infrastructure/Orm/MongoosePaginator.ts +++ b/src/Main/Infrastructure/Orm/MongoosePaginator.ts @@ -13,12 +13,11 @@ class MongoosePaginator extends BasePaginator implements IPaginator public async paginate(): Promise { - this.total = await ((this.#documentQuery).clone()).count(); + this.total = await ((this.#documentQuery).clone()).countDocuments(); this.addOrderBy(); this.addPagination(); - this._perPage = await ((this.#documentQuery).clone()).count(); this.setPerPage(this._perPage); this.setCurrentPage(); this.setLasPage(); @@ -26,6 +25,7 @@ class MongoosePaginator extends BasePaginator implements IPaginator this.setTo(); let data = await this.#documentQuery.find().exec(); + this._perPage = data.length; if (this.helper) { diff --git a/src/Main/Infrastructure/Repositories/BaseMikroORMRepository.ts b/src/Main/Infrastructure/Repositories/BaseMikroORMRepository.ts index 863a10ae..58c300b8 100644 --- a/src/Main/Infrastructure/Repositories/BaseMikroORMRepository.ts +++ b/src/Main/Infrastructure/Repositories/BaseMikroORMRepository.ts @@ -1,4 +1,4 @@ -import { EntityRepository, EntitySchema, FindOneOptions } from '@mikro-orm/core'; +import { EntityRepository, EntitySchema, FindOneOptions } from '@mikro-orm/postgresql'; import { ICriteria, IPaginator, NotFoundException } from '@digichanges/shared-experience'; import IByOptions from '../../Domain/Repositories/IByOptions'; import IBaseRepository from '../../Domain/Repositories/IBaseRepository'; @@ -11,7 +11,7 @@ abstract class BaseMikroORMRepository implements IBaseReposito protected em = EntityMikroORMManagerFactory.getEntityFactory(); protected populate: string[]; - constructor(entityName: string, entitySchema: EntitySchema, populate: string[] = []) + protected constructor(entityName: string, entitySchema: EntitySchema, populate: string[] = []) { this.entityName = entityName; this.repository = this.em.getRepository(entitySchema); @@ -99,7 +99,7 @@ abstract class BaseMikroORMRepository implements IBaseReposito async exist(condition: Record | Record[], select: string[], initThrow = false): Promise { - const exist = await this.repository.findOne(condition, { fields: select }); + const exist = await this.repository.findOne(condition); if (initThrow && !exist) { diff --git a/src/Notification/Domain/Enum/TypeNotificationEnum.ts b/src/Notification/Domain/Enum/TypeNotificationEnum.ts index fc4d8fc5..a74bb1d3 100644 --- a/src/Notification/Domain/Enum/TypeNotificationEnum.ts +++ b/src/Notification/Domain/Enum/TypeNotificationEnum.ts @@ -3,7 +3,8 @@ enum TypeNotificationEnum { VERIFY_ACCOUNT = 'verifyAccount', VERIFIED_ACCOUNT = 'verifiedAccount', - FORGOT_PASSWORD = 'forgotPassword' + FORGOT_PASSWORD = 'forgotPassword', + NOTIFICATION_EXAMPLE = 'notificationExample' } export default TypeNotificationEnum; diff --git a/src/Notification/Domain/Services/SendEmailService.ts b/src/Notification/Domain/Services/SendEmailService.ts index 69ef292a..9f4266fd 100644 --- a/src/Notification/Domain/Services/SendEmailService.ts +++ b/src/Notification/Domain/Services/SendEmailService.ts @@ -1,10 +1,10 @@ -import { EventHandler } from '@digichanges/shared-experience'; import ISendEmailParams from '../Entities/ISendEmailParams'; import EmailNotification from '../Entities/EmailNotification'; +import NotifierFactory from '../../Shared/NotifierFactory'; +import { FACTORIES } from '../../../Shared/DI/Injects'; class SendEmailService { - private static emailEvent = 'EmailEvent'; public static async handle(params: ISendEmailParams): Promise { const { type, args, name, files, @@ -23,9 +23,13 @@ class SendEmailService emailNotification.external = external ?? false; args.templatePathNameFile = templatePathNameFile; - const eventHandler = EventHandler.getInstance(); + const emailNotificator: any = NotifierFactory.create(FACTORIES.EmailStrategy); - eventHandler.execute(this.emailEvent, { emailNotification, args }); + emailNotificator.emailNotification = emailNotification; + emailNotificator.templatePathNameFile = args.templatePathNameFile; + emailNotificator.data = args; + + await emailNotificator.send(emailNotificator.templatePathNameFile); } } diff --git a/src/Notification/Domain/UseCases/CreateSubscriptionUseCase.ts b/src/Notification/Domain/UseCases/CreateSubscriptionUseCase.ts index c1a6ac3c..34b2ad50 100644 --- a/src/Notification/Domain/UseCases/CreateSubscriptionUseCase.ts +++ b/src/Notification/Domain/UseCases/CreateSubscriptionUseCase.ts @@ -4,11 +4,11 @@ import NotificationService from '../Services/NotificationService'; class CreateSubscriptionUseCase { - private notificationService = new NotificationService(); + #notificationService = new NotificationService(); async handle(payload: NotificationRepPayload): Promise { - return await this.notificationService.createSubscription(payload); + return await this.#notificationService.createSubscription(payload); } } diff --git a/src/Notification/Domain/UseCases/NotificationEmailUseCase.ts b/src/Notification/Domain/UseCases/NotificationEmailUseCase.ts new file mode 100644 index 00000000..288ab078 --- /dev/null +++ b/src/Notification/Domain/UseCases/NotificationEmailUseCase.ts @@ -0,0 +1,18 @@ +import SendEmailService from '../Services/SendEmailService'; +import TypeNotificationEnum from '../Enum/TypeNotificationEnum'; + +class NotificationEmailUseCase +{ + async handle(content: { email: string }): Promise + { + await SendEmailService.handle({ + type: TypeNotificationEnum.NOTIFICATION_EXAMPLE, + args: {}, + name: TypeNotificationEnum.NOTIFICATION_EXAMPLE, + to: content.email, + templatePathNameFile: 'auth/notificationExample.hbs' + }); + } +} + +export default NotificationEmailUseCase; diff --git a/src/Notification/Domain/UseCases/SendMessageBrokerUseCase.ts b/src/Notification/Domain/UseCases/SendMessageBrokerUseCase.ts new file mode 100644 index 00000000..dd00eeed --- /dev/null +++ b/src/Notification/Domain/UseCases/SendMessageBrokerUseCase.ts @@ -0,0 +1,25 @@ +import DependencyInjector from '../../../Shared/DI/DependencyInjector'; +import { IMessageBroker } from '../../../Shared/Infrastructure/IMessageBroker'; + +class SendMessageBrokerUseCase +{ + async handle() + { + const messageBroker = DependencyInjector.inject('IMessageBroker'); + + const exchange = 'notificationExchange'; + const routingKey = 'email'; + const queue = routingKey; + + await messageBroker.publish<{ email: string }>({ + exchange, + routingKey, + queue, + content: { + email: 'user@example.com' + } + }); + } +} + +export default SendMessageBrokerUseCase; diff --git a/src/Notification/Domain/UseCases/SendPushNotificationUseCase.ts b/src/Notification/Domain/UseCases/SendPushNotificationUseCase.ts index ce57d793..7cb0946f 100644 --- a/src/Notification/Domain/UseCases/SendPushNotificationUseCase.ts +++ b/src/Notification/Domain/UseCases/SendPushNotificationUseCase.ts @@ -3,11 +3,11 @@ import NotificationService from '../Services/NotificationService'; class SendPushNotificationUseCase { - private notificationService = new NotificationService(); + #notificationService = new NotificationService(); async handle(payload: NotificationSendMessagePayload) { - return this.notificationService.sendPushNotification(payload); + return this.#notificationService.sendPushNotification(payload); } } diff --git a/src/Notification/Infrastructure/Jobs/NotificationEmailJob.ts b/src/Notification/Infrastructure/Jobs/NotificationEmailJob.ts new file mode 100644 index 00000000..59b4d14e --- /dev/null +++ b/src/Notification/Infrastructure/Jobs/NotificationEmailJob.ts @@ -0,0 +1,15 @@ +import NotificationEmailUseCase from '../../Domain/UseCases/NotificationEmailUseCase'; +import IJob from '../../../Main/Infrastructure/Jobs/IJob'; + +class NotificationEmailJob implements IJob<{ email: string }> +{ + async execute(content: { email: string}): Promise + { + await new Promise(resolve => setTimeout(resolve, 10000)); + + const useCase = new NotificationEmailUseCase(); + await useCase.handle(content); + } +} + +export default NotificationEmailJob; diff --git a/src/Notification/Presentation/Controller/NotificationFastifyController.ts b/src/Notification/Presentation/Controller/NotificationFastifyController.ts index ee04156a..6ca740aa 100644 --- a/src/Notification/Presentation/Controller/NotificationFastifyController.ts +++ b/src/Notification/Presentation/Controller/NotificationFastifyController.ts @@ -6,6 +6,7 @@ import NotificationSubscriptionRequest from '../Requests/NotificationCreateSuscr import NotificationSendMessageRequest from '../Requests/NotificationSendMessageRequest'; import CreateSubscriptionUseCase from '../../Domain/UseCases/CreateSubscriptionUseCase'; import SendPushNotificationUseCase from '../../Domain/UseCases/SendPushNotificationUseCase'; +import SendMessageBrokerUseCase from '../../Domain/UseCases/SendMessageBrokerUseCase'; class NotificationFastifyController { @@ -30,6 +31,14 @@ class NotificationFastifyController await NotificationFastifyController.responder.send(notification, reply, StatusCode.HTTP_CREATED); } + + static async sendMessageBroker(request: FastifyRequest, reply: FastifyReply) + { + const useCase = new SendMessageBrokerUseCase(); + await useCase.handle(); + + await NotificationFastifyController.responder.send({ message: 'Message sent' }, reply, StatusCode.HTTP_OK); + } } export default NotificationFastifyController; diff --git a/src/Notification/Presentation/Handlers/NotificationFastifyHandler.ts b/src/Notification/Presentation/Handlers/NotificationFastifyHandler.ts index 04f33cdc..4640ce1a 100644 --- a/src/Notification/Presentation/Handlers/NotificationFastifyHandler.ts +++ b/src/Notification/Presentation/Handlers/NotificationFastifyHandler.ts @@ -5,6 +5,7 @@ const NotificationFastifyHandler = async(fastify: FastifyInstance) => { fastify.post('/subscription', NotificationFastifyController.handleSubscription); fastify.post('/message', NotificationFastifyController.handleMessage); + fastify.get('/message_broker', NotificationFastifyController.sendMessageBroker); }; export default NotificationFastifyHandler; diff --git a/src/Shared/DI/container.ts b/src/Shared/DI/container.ts index 23610374..ca9eeaf1 100644 --- a/src/Shared/DI/container.ts +++ b/src/Shared/DI/container.ts @@ -25,6 +25,8 @@ import ICacheDataAccess from '../../Main/Infrastructure/Repositories/ICacheDataA import CacheRepository from '../../Main/Infrastructure/Repositories/CacheRepository'; import DatabaseFactory from '../../Main/Infrastructure/Factories/DatabaseFactory'; +import { IMessageBroker } from '../Infrastructure/IMessageBroker'; +import RabbitMQMessageBroker from '../Infrastructure/RabbitMQMessageBroker'; const config = MainConfig.getInstance().getConfig(); const defaultDbConfig = config.dbConfig.default; @@ -75,6 +77,7 @@ container.register(SERVICES.AuthorizeService, { return new AuthorizeSupabaseService(authRepository); }) }, { lifecycle: Lifecycle.Transient }); +container.register('IMessageBroker', { useClass: RabbitMQMessageBroker }, { lifecycle: Lifecycle.Singleton }); // Factories container.register(FACTORIES.IDatabaseFactory, { @@ -85,4 +88,6 @@ container.register(FACTORIES.IDatabaseFactory, { }) }, { lifecycle: Lifecycle.Transient }); +// Factories + export default container; diff --git a/src/Shared/Infrastructure/IMessageBroker.ts b/src/Shared/Infrastructure/IMessageBroker.ts new file mode 100644 index 00000000..fe3650e5 --- /dev/null +++ b/src/Shared/Infrastructure/IMessageBroker.ts @@ -0,0 +1,55 @@ +import { MessageBrokerConfig } from '../../Config/MainConfig'; +import IJob from '../../Main/Infrastructure/Jobs/IJob'; + +export interface ConnectionConfig +{ + protocol: 'amqp', + hostname: 'rabbitmq', + username: 'user', + password: 'password', + port: 5672 +} + +export interface PublishParams +{ + exchange: string; + routingKey: string; + content: T; + queue?: string; + options?: { + exchangeType?: string, + exchangeOptions?: { + durable?: boolean; + internal?: boolean; + autoDelete?: boolean; + alternateExchange?: string; + arguments?: Record; + } + } +} + +export interface SubscribeParams +{ + queue: string; + job: IJob; + queueOptions?: { + exclusive?: boolean; + durable?: boolean; + autoDelete?: boolean; + arguments?: unknown; + messageTtl?: number; + expires?: number; + deadLetterExchange?: string; + deadLetterRoutingKey?: string; + maxLength?: number; + maxPriority?: number; + } +} + +export interface IMessageBroker +{ + connect(config: MessageBrokerConfig): Promise; + publish(params: PublishParams): Promise; + subscribe(params: SubscribeParams): Promise; + disconnect(): Promise; +} diff --git a/src/Shared/Infrastructure/RabbitMQMessageBroker.ts b/src/Shared/Infrastructure/RabbitMQMessageBroker.ts new file mode 100644 index 00000000..b16d16a4 --- /dev/null +++ b/src/Shared/Infrastructure/RabbitMQMessageBroker.ts @@ -0,0 +1,73 @@ +import { Connection, Channel, connect } from 'amqplib'; +import { ErrorException } from '@digichanges/shared-experience'; + +import { IMessageBroker, PublishParams, SubscribeParams } from './IMessageBroker'; +import { MessageBrokerConfig } from '../../Config/MainConfig'; + +class RabbitMQMessageBroker implements IMessageBroker +{ + #connection: Connection; + #channel: Channel; + + async connect(config: MessageBrokerConfig): Promise + { + if (!this.#connection) + { + this.#connection = await connect(config); + this.#channel = await this.#connection.createChannel(); + } + } + + async publish(params: PublishParams): Promise + { + if (!this.#channel) + { + throw new Error('Channel not initialized. Call connect() first.'); + } + + const { exchange, routingKey, content, queue, options } = params; + + const queueName = queue ?? routingKey; + const exchangeType = options?.exchangeType ?? 'direct'; + const exchangeOptions = { durable: true, ...params?.options?.exchangeOptions }; + + await this.#channel.assertExchange(exchange, exchangeType, exchangeOptions); + await this.#channel.bindQueue(queueName, exchange, routingKey); + this.#channel.publish(exchange, routingKey, Buffer.from(JSON.stringify(content)), { persistent: true }); + } + + async subscribe(params: SubscribeParams): Promise + { + if (!this.#channel) + { + throw new ErrorException({ + message: 'Channel not initialized. Call connect() first.', + errorCode: 'messageBroker.channel.not.initialized' + }); + } + + await this.#channel.assertQueue(params.queue, params.queueOptions); + await this.#channel.consume(params.queue, async(msg) => + { + if (msg) + { + await params.job.execute(JSON.parse(msg.content.toString())); + this.#channel.ack(msg); + } + }); + } + + async disconnect(): Promise + { + if (this.#channel) + { + await this.#channel.close(); + } + if (this.#connection) + { + await this.#connection.close(); + } + } +} + +export default RabbitMQMessageBroker; diff --git a/src/Shared/Infrastructure/templates/emails/auth/notificationExample.hbs b/src/Shared/Infrastructure/templates/emails/auth/notificationExample.hbs new file mode 100644 index 00000000..8db0e416 --- /dev/null +++ b/src/Shared/Infrastructure/templates/emails/auth/notificationExample.hbs @@ -0,0 +1,14 @@ + + + + + + +

Hello

+

Notification Example

+
+
+

Cheers,

+

The team

+ + diff --git a/src/closed.ts b/src/closed.ts index 0da1c1f6..1e19d5d7 100644 --- a/src/closed.ts +++ b/src/closed.ts @@ -5,36 +5,49 @@ import Logger from './Shared/Helpers/Logger'; import ICreateConnection from './Main/Infrastructure/Database/ICreateConnection'; import { EventHandler } from '@digichanges/shared-experience'; import { Server } from 'http'; +import { IMessageBroker } from './Shared/Infrastructure/IMessageBroker'; -const closedApplication = (server: Server, cache: ICacheDataAccess, createConnection: ICreateConnection, eventHandler: EventHandler) => +interface ClosedApplicationParams +{ + server?: Server, + eventHandler?: EventHandler + messageBroker: IMessageBroker + cache: ICacheDataAccess, + createConnection: ICreateConnection, +} + +const closedApplication = (params: ClosedApplicationParams) => { function onSignal() { Logger.info('server is starting cleanup'); - cache.close(); + params.cache.close(); return Promise.all([ - createConnection.close(true), - eventHandler.removeListeners() + params.createConnection.close(true), + params.eventHandler.removeListeners(), + params.messageBroker.disconnect() ]); } function onShutdown() { Logger.info('cleanup finished, server is shutting down'); - cache.close(); + params.cache.close(); return Promise.all([ - createConnection.close(true), - eventHandler.removeListeners() + params.createConnection.close(true), + params.eventHandler.removeListeners(), + params.messageBroker.disconnect() ]); } - const options = { - timeout: 1000, - onSignal, - onShutdown - }; - - createTerminus(server, options); + if (params.server) + { + createTerminus(params.server, { + timeout: 1000, + onSignal, + onShutdown + }); + } }; export default closedApplication; diff --git a/src/index.ts b/src/index.ts index 6a450604..233d2711 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,6 +17,7 @@ import closedApplication from './closed'; import SendMessageEvent from './Notification/Domain/Events/SendMessageEvent'; import EmailEvent from './Auth/Infrastructure/Events/EmailEvent'; import ICacheDataAccess from './Main/Infrastructure/Repositories/ICacheDataAccess'; +import { IMessageBroker } from './Shared/Infrastructure/IMessageBroker'; void (async() => { @@ -60,9 +61,19 @@ void (async() => const cronFactory = new CronFactory(); cronFactory.start(); + // Message Broker + const messageBroker = DependencyInjector.inject('IMessageBroker'); + await messageBroker.connect(config.messageBroker); + // Close gracefully const server = await app.getServer(); - closedApplication(server, cache, createConnection, eventHandler); + closedApplication({ + server, + cache, + createConnection, + eventHandler, + messageBroker + }); } catch (error) { diff --git a/src/worker.ts b/src/worker.ts new file mode 100644 index 00000000..82572a0c --- /dev/null +++ b/src/worker.ts @@ -0,0 +1,74 @@ +import dotenv from 'dotenv'; +dotenv.config(); + +import DependencyInjector from './Shared/DI/DependencyInjector'; +import { FACTORIES, REPOSITORIES } from './Shared/DI/Injects'; + +import DatabaseFactory from './Main/Infrastructure/Factories/DatabaseFactory'; + +import ICreateConnection from './Main/Infrastructure/Database/ICreateConnection'; +import Logger from './Shared/Helpers/Logger'; +import closedApplication from './closed'; +import ICacheDataAccess from './Main/Infrastructure/Repositories/ICacheDataAccess'; +import { IMessageBroker } from './Shared/Infrastructure/IMessageBroker'; +import MainConfig from './Config/MainConfig'; +import NotificationEmailJob from './Notification/Infrastructure/Jobs/NotificationEmailJob'; +import { EventHandler } from '@digichanges/shared-experience'; +import EmailEvent from './Auth/Infrastructure/Events/EmailEvent'; +import SendMessageEvent from './Notification/Domain/Events/SendMessageEvent'; +import logger from './Shared/Helpers/Logger'; + +void (async() => +{ + try + { + const config = MainConfig.getInstance().getConfig(); + + // Init Application + // Create DB connection + const databaseFactory = DependencyInjector.inject(FACTORIES.IDatabaseFactory); + const createConnection: ICreateConnection = databaseFactory.create(); + await createConnection.initConfig(); + await createConnection.create(); + + // Set EventHandler and all events + const eventHandler = EventHandler.getInstance(); + eventHandler.setEvent(new EmailEvent()); + eventHandler.setEvent(new SendMessageEvent()); + + // Message Broker + const messageBroker = DependencyInjector.inject('IMessageBroker'); + await messageBroker.connect(config.messageBroker); + await messageBroker.subscribe({ + queue: 'email', + job: new NotificationEmailJob(), + queueOptions: { + durable: true, + expires: 60000, + maxPriority: 10 + } + }); + + logger.info('Worker Initialized'); + + // Create Cache connection + let cache: ICacheDataAccess; + + if (config.cache.enable) + { + cache = DependencyInjector.inject(REPOSITORIES.ICacheDataAccess); + await cache.cleanAll(); + } + + closedApplication({ + cache, + createConnection, + messageBroker + }); + } + catch (error) + { + Logger.info('Error while connecting to the database', error); + throw error; + } +})(); From 71fe733dcafb75c0fe9b918985331bfffc66ffce Mon Sep 17 00:00:00 2001 From: nrusso Date: Sun, 11 Feb 2024 10:02:37 -0300 Subject: [PATCH 2/4] fix: tests --- .env.test | 6 ++++++ .gitignore | 1 + package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.env.test b/.env.test index ffc95ace..27d46ef5 100644 --- a/.env.test +++ b/.env.test @@ -30,6 +30,12 @@ CACHE_USER=experience CACHE_PASSWORD=ewsua132435 CACHE_ENABLE=false +MESSAGE_BROKER_PROTOCOL=amqp +MESSAGE_BROKER_HOST=rabbitmq +MESSAGE_BROKER_PORT=5672 +MESSAGE_BROKER_USER=user +MESSAGE_BROKER_PASSWORD=password + # MinIO config MINIO_HOST=minio MINIO_ACCESS_KEY=minio diff --git a/.gitignore b/.gitignore index 5fdf5c3f..cdb6e22c 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ graph.svg .bun yalc.lock .yalc +.env.old # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json diff --git a/package.json b/package.json index 40bc5bf9..a514089b 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "lint": "eslint -c .eslintrc ./src", "pre-commit": "lint-staged", "pre-check": "pnpm ts-check && pnpm lint", - "prepare": "husky install", + "prepare": "husky", "start": "node dist/src/index.js", "test-ci": "jest --run-in-band --coverage", "test": "jest --coverage", From f2a384576f81e88f9e9dbae7af94da8582737300 Mon Sep 17 00:00:00 2001 From: nrusso Date: Sun, 11 Feb 2024 10:26:43 -0300 Subject: [PATCH 3/4] fix: promise on subscribe event --- src/Main/Infrastructure/Jobs/IJob.ts | 1 + .../Infrastructure/Jobs/NotificationEmailJob.ts | 2 ++ src/Shared/Infrastructure/IMessageBroker.ts | 9 --------- src/Shared/Infrastructure/RabbitMQMessageBroker.ts | 11 +++++++++-- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/Main/Infrastructure/Jobs/IJob.ts b/src/Main/Infrastructure/Jobs/IJob.ts index 4614dea4..ca5f83b1 100644 --- a/src/Main/Infrastructure/Jobs/IJob.ts +++ b/src/Main/Infrastructure/Jobs/IJob.ts @@ -1,6 +1,7 @@ interface IJob { + name: string; execute(content: T): Promise; } diff --git a/src/Notification/Infrastructure/Jobs/NotificationEmailJob.ts b/src/Notification/Infrastructure/Jobs/NotificationEmailJob.ts index 59b4d14e..10bbcc60 100644 --- a/src/Notification/Infrastructure/Jobs/NotificationEmailJob.ts +++ b/src/Notification/Infrastructure/Jobs/NotificationEmailJob.ts @@ -3,6 +3,8 @@ import IJob from '../../../Main/Infrastructure/Jobs/IJob'; class NotificationEmailJob implements IJob<{ email: string }> { + name = 'NotificationEmailJob'; + async execute(content: { email: string}): Promise { await new Promise(resolve => setTimeout(resolve, 10000)); diff --git a/src/Shared/Infrastructure/IMessageBroker.ts b/src/Shared/Infrastructure/IMessageBroker.ts index fe3650e5..2ad5aa9b 100644 --- a/src/Shared/Infrastructure/IMessageBroker.ts +++ b/src/Shared/Infrastructure/IMessageBroker.ts @@ -1,15 +1,6 @@ import { MessageBrokerConfig } from '../../Config/MainConfig'; import IJob from '../../Main/Infrastructure/Jobs/IJob'; -export interface ConnectionConfig -{ - protocol: 'amqp', - hostname: 'rabbitmq', - username: 'user', - password: 'password', - port: 5672 -} - export interface PublishParams { exchange: string; diff --git a/src/Shared/Infrastructure/RabbitMQMessageBroker.ts b/src/Shared/Infrastructure/RabbitMQMessageBroker.ts index b16d16a4..5c2befd6 100644 --- a/src/Shared/Infrastructure/RabbitMQMessageBroker.ts +++ b/src/Shared/Infrastructure/RabbitMQMessageBroker.ts @@ -47,11 +47,18 @@ class RabbitMQMessageBroker implements IMessageBroker } await this.#channel.assertQueue(params.queue, params.queueOptions); - await this.#channel.consume(params.queue, async(msg) => + await this.#channel.consume(params.queue, (msg) => { if (msg) { - await params.job.execute(JSON.parse(msg.content.toString())); + params.job.execute(JSON.parse(msg.content.toString())) + .catch((err) => + { + throw new ErrorException({ + message: `Job ${params.job.name}, ${err.message}`, + errorCode: 'messageBroker.job.error' + }); + }); this.#channel.ack(msg); } }); From 00666c0ee4eb11888c96896e8b9fe2ad68128537 Mon Sep 17 00:00:00 2001 From: nrusso Date: Wed, 14 Feb 2024 22:22:35 -0300 Subject: [PATCH 4/4] feat: add message broker test --- jest.config.js | 1 + sonar-project.properties | 2 +- src/Shared/DI/container.ts | 2 - src/Shared/Tests/MockMessageBroker.ts | 29 ++++++++++ src/Shared/Tests/messageBroker.spec.ts | 73 ++++++++++++++++++++++++++ src/command.ts | 1 + src/worker.ts | 3 +- 7 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 src/Shared/Tests/MockMessageBroker.ts create mode 100644 src/Shared/Tests/messageBroker.spec.ts diff --git a/jest.config.js b/jest.config.js index 2c44c0a2..caa57f23 100644 --- a/jest.config.js +++ b/jest.config.js @@ -20,6 +20,7 @@ module.exports = { "!dist/src/crons.{js,ts}", "!dist/src/command.{js,ts}", "!dist/src/index.{js,ts}", + "!dist/src/worker.{js,ts}", "!dist/src/closed.{js,ts}", "!dist/src/initCommand.{js,ts}", "!dist/src/**/I*.{js,ts}", diff --git a/sonar-project.properties b/sonar-project.properties index 52bf337c..9c371cde 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -9,7 +9,7 @@ sonar.javascript.lcov.reportPaths=coverage/lcov.info sonar.exclusions=**/*.spec.ts,**/*.d.ts,**/*.d.ts.map,**/node_modules/**,**/Tests/**,**/*Mock*.ts,**/*Stub*.ts -sonar.coverage.exclusions=**/node_modules/**,**/*.spec.ts,**/Auth/**/*,**/Config/**/*,**/initTestServer.*,**/register.*,**/seed.*,**/exceptions.*,**/crons.*,**/command.*,**/index.*,**/closed.*,**/initCommand.*,**/I*,**/Infrastructure/Notifications/**,**/*Mikro*,**/Shared/**,**/Notification/**,**/Main/Infrastructure/Crons/**,**/Main/Infrastructure/Factories/**,**/Main/Infrastructure/Repositories/RedisCacheDataAccess.*,**/Main/Infrastructure/Repositories/BaseMongooseRepository.*,**/Main/Infrastructure/Orm/MongooseAggregatePaginator.*,**/*Command*,**/*Document.*,**/*Payload.*,**/MainConfig.*,**/Main/Infrastructure/Repositories/CacheRepository.*,**/Main/Infrastructure/Repositories/RedisCacheRepository.* +sonar.coverage.exclusions=**/node_modules/**,**/*.spec.ts,**/Auth/**/*,**/Config/**/*,**/initTestServer.*,**/worker.*,**/register.*,**/seed.*,**/exceptions.*,**/crons.*,**/command.*,**/index.*,**/closed.*,**/initCommand.*,**/I*,**/Infrastructure/Notifications/**,**/*Mikro*,**/Shared/**,**/Notification/**,**/Main/Infrastructure/Crons/**,**/Main/Infrastructure/Factories/**,**/Main/Infrastructure/Repositories/RedisCacheDataAccess.*,**/Main/Infrastructure/Repositories/BaseMongooseRepository.*,**/Main/Infrastructure/Orm/MongooseAggregatePaginator.*,**/*Command*,**/*Document.*,**/*Payload.*,**/MainConfig.*,**/Main/Infrastructure/Repositories/CacheRepository.*,**/Main/Infrastructure/Repositories/RedisCacheRepository.* sonar.sourceEncoding=UTF-8 diff --git a/src/Shared/DI/container.ts b/src/Shared/DI/container.ts index ca9eeaf1..9a01f96d 100644 --- a/src/Shared/DI/container.ts +++ b/src/Shared/DI/container.ts @@ -88,6 +88,4 @@ container.register(FACTORIES.IDatabaseFactory, { }) }, { lifecycle: Lifecycle.Transient }); -// Factories - export default container; diff --git a/src/Shared/Tests/MockMessageBroker.ts b/src/Shared/Tests/MockMessageBroker.ts new file mode 100644 index 00000000..5819d197 --- /dev/null +++ b/src/Shared/Tests/MockMessageBroker.ts @@ -0,0 +1,29 @@ +import { IMessageBroker, PublishParams, SubscribeParams } from '../Infrastructure/IMessageBroker'; +import { MessageBrokerConfig } from '../../Config/MainConfig'; +import Logger from '../Helpers/Logger'; + +class MockMessageBroker implements IMessageBroker +{ + async connect(config: MessageBrokerConfig): Promise + { + Logger.info('MockMessageBroker Connected'); + } + + async publish(params: PublishParams): Promise + { + Logger.info('MockMessageBroker publish'); + Logger.info('MockJob publish'); + } + + async subscribe(params: SubscribeParams): Promise + { + Logger.info('MockMessageBroker subscribe'); + } + + async disconnect(): Promise + { + Logger.info('MockMessageBroker disconnect'); + } +} + +export default MockMessageBroker; diff --git a/src/Shared/Tests/messageBroker.spec.ts b/src/Shared/Tests/messageBroker.spec.ts new file mode 100644 index 00000000..6cb288fd --- /dev/null +++ b/src/Shared/Tests/messageBroker.spec.ts @@ -0,0 +1,73 @@ +import initTestServer from '../../initTestServer'; +import ICreateConnection from '../../Main/Infrastructure/Database/ICreateConnection'; +import MockMessageBroker from './MockMessageBroker'; +import DependencyInjector from '../DI/DependencyInjector'; +import { IMessageBroker } from '../Infrastructure/IMessageBroker'; +import MainConfig from '../../Config/MainConfig'; +import IJob from '../../Main/Infrastructure/Jobs/IJob'; +import Logger from '../Helpers/Logger'; + +jest.mock('../Infrastructure/RabbitMQMessageBroker', () => ({ + __esModule: true, + default: jest.fn(() => new MockMessageBroker()) +})); + +interface MessageBrokerContent +{ + message: string +} + +class MockJob implements IJob +{ + name = 'MockJob'; + + async execute(content: MessageBrokerContent): Promise + { + Logger.info('MessageBrokerContent'); + } +} + +describe('Start Item Test', () => +{ + let dbConnection: ICreateConnection; + + beforeAll(async() => + { + const configServer = await initTestServer(); + dbConnection = configServer.dbConnection; + }); + + afterAll((async() => + { + if (dbConnection) + { + await dbConnection.drop(); + await dbConnection.close(); + } + })); + + test('debería probar la lógica sin conectar a RabbitMQ', async() => + { + const config = MainConfig.getInstance().getConfig().messageBroker; + const messageBroker = DependencyInjector.inject('IMessageBroker'); + await messageBroker.connect(config); + + await messageBroker.publish({ + exchange: 'MyExchange', + routingKey: 'MyRoutingKey', + queue: 'MyQueue', + content: { + message: 'MyMessage' + } + }); + + await messageBroker.subscribe({ + queue: 'MyQueue', + job: new MockJob() + }); + + await messageBroker.disconnect(); + + expect('connectSpy').toStrictEqual('connectSpy'); + }); +}); diff --git a/src/command.ts b/src/command.ts index c15a4031..9316b7fb 100644 --- a/src/command.ts +++ b/src/command.ts @@ -1,5 +1,6 @@ import { exit } from 'shelljs'; import commander from 'commander'; + import dotenv from 'dotenv'; dotenv.config(); // Need before get config diff --git a/src/worker.ts b/src/worker.ts index 82572a0c..a974f8aa 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -16,7 +16,6 @@ import NotificationEmailJob from './Notification/Infrastructure/Jobs/Notificatio import { EventHandler } from '@digichanges/shared-experience'; import EmailEvent from './Auth/Infrastructure/Events/EmailEvent'; import SendMessageEvent from './Notification/Domain/Events/SendMessageEvent'; -import logger from './Shared/Helpers/Logger'; void (async() => { @@ -49,7 +48,7 @@ void (async() => } }); - logger.info('Worker Initialized'); + Logger.info('Worker Initialized'); // Create Cache connection let cache: ICacheDataAccess;