diff --git a/.env.exemple b/.env.exemple index 4b7a9b4..9933b2f 100644 --- a/.env.exemple +++ b/.env.exemple @@ -1,6 +1,6 @@ PORT=5000 STORAGE_TYPE="local ou s3" #escolher onde as imagens serão armazenadas, local para test ou s3 para o bucket -ENV_AMB="QA ou PROD" #escolher qual ambiente a ser trabalhado +ENV_AMB="QA, PROD ou LOCAL" #escolher qual ambiente a ser trabalhado KEY_ID="key_id do bucket" ACCESS_KEY="access_key do bucket" BUCKET="nome do bucket" @@ -10,4 +10,8 @@ mongoQA="url de conexão" clientId= clientSecret= -URL_AUTHORIZATION="url para realizar o longin e retornar o acess_token" \ No newline at end of file +URL_AUTHORIZATION="url para realizar o longin e retornar o acess_token" + +#somente local para o sonarqueb +S_TOKEN_ACESS= +S_NAME_PROJECT= \ No newline at end of file diff --git a/.gitignore b/.gitignore index ecd2adb..b591806 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /node_modules /.pnpm-store /tmp/uploads +.scannerwork # Logs logs *.log @@ -17,6 +18,7 @@ lerna-debug.log* # Tests /coverage +/test/coverage /.nyc_output # IDEs and editors diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..0312b76 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx lint-staged \ No newline at end of file diff --git a/.lintstagedrc.json b/.lintstagedrc.json new file mode 100644 index 0000000..b44fb00 --- /dev/null +++ b/.lintstagedrc.json @@ -0,0 +1,3 @@ + { + "*.{ts,tsx}": "eslint --fix" + } \ No newline at end of file diff --git a/.nvmrc b/.nvmrc index a90dfe9..d1d0721 100755 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v20.5.1 \ No newline at end of file +v20.11 \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 3b66410..a502fe6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,21 @@ { - "git.ignoreLimitWarning": true + "version": "0.2.0", + "configurations": [ + { + "name": "Docker: Attach to Node", + "type": "node", + "request": "attach", + "port": 9229, + "address": "172.21.0.2", + "localRoot": "${workspaceFolder}", + "remoteRoot": "/home/node/app", + "protocol": "inspector", + "restart": true, + "sourceMaps": true, + "resolveSourceMapLocations": [ + "${workspaceFolder}/**", + "!**/node_modules/**" + ] + } + ] } \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 1ab726d..a233711 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ -FROM node:20.5.1 +FROM node:20.11 # RUN apk add --no-cache bash RUN npm install -g pnpm RUN npm install -g @nestjs/cli -USER node +USER root WORKDIR /home/node/app \ No newline at end of file diff --git a/README.md b/README.md index b44945e..4c1df28 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ [docker compose](https://docs.docker.com/compose/install/) install Docker Componse. -## automatic installation with docker +## Running the app with docker ```bash # run local api $ docker compose up or $ docker compose up --build @@ -38,17 +38,6 @@ $ docker compose up or $ docker compose up --build $ docker compose down -v ``` -## Running the app and Installation manual -```bash -$ npm install -# build -$ npm run build -# development -$ npm run start:dev -# production -$ npm run start:prod -``` - # watch mode ```bash $ npm run start:dev diff --git a/changelog.config.js b/changelog.config.js new file mode 100644 index 0000000..4747a0f --- /dev/null +++ b/changelog.config.js @@ -0,0 +1,91 @@ +module.exports = { + disableEmoji: false, + format: "{type}{scope}: {emoji}{subject}", + list: [ + "test", + "feat", + "fix", + "chore", + "docs", + "refactor", + "style", + "ci", + "perf", + ], + maxMessageLength: 64, + minMessageLength: 3, + questions: [ + "type", + "scope", + "subject", + "body", + "breaking", + "issues", + "lerna", + ], + scopes: [], + types: { + chore: { + description: "Mudanças no processo de build ou ferramentas auxiliares", + emoji: "🤖", + value: "chore", + }, + ci: { + description: "Mudanças relacionadas à CI (Integração Contínua)", + emoji: "🎡", + value: "ci", + }, + docs: { + description: "Apenas mudanças na documentação", + emoji: "✏️", + value: "docs", + }, + feat: { + description: "Uma nova funcionalidade", + emoji: "🎸", + value: "feat", + }, + fix: { + description: "Correção de um bug", + emoji: "🐛", + value: "fix", + }, + perf: { + description: "Uma mudança de código que melhora o desempenho", + emoji: "⚡️", + value: "perf", + }, + refactor: { + description: + "Uma mudança de código que não corrige um bug ou adiciona uma funcionalidade", + emoji: "💡", + value: "refactor", + }, + release: { + description: "Criar um commit de lançamento", + emoji: "🏹", + value: "release", + }, + style: { + description: + "Marcação, espaços em branco, formatação, ponto e vírgula ausente...", + emoji: "💄", + value: "style", + }, + test: { + description: "Adição de testes ausentes", + emoji: "💍", + value: "test", + }, + messages: { + type: "Selecione o tipo de mudança que você está commitando:", + customScope: "Selecione o escopo que essa alteração afeta:", + subject: "Escreva uma descrição curta e imperativa da mudança:\n", + body: "Forneça uma descrição mais longa da mudança:\n ", + breaking: + "Liste quaisquer mudanças que possam quebrar a compatibilidade:\n", + footer: "Issues que esse commit resolve, por exemplo, #123:", + confirmCommit: "Os pacotes que este commit afetou\n", + }, + }, +}; diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..69b4242 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ["@commitlint/config-conventional"], +}; diff --git a/docker-compose-sonar.yml b/docker-compose-sonar.yml new file mode 100644 index 0000000..e40db74 --- /dev/null +++ b/docker-compose-sonar.yml @@ -0,0 +1,27 @@ +version: '3' + +services: + db: + image: postgres + environment: + POSTGRES_USER: sonartest + POSTGRES_PASSWORD: sonartest + POSTGRES_DB: sonar + + SonarQube: + image: sonarqube:community + depends_on: + - db + ports: + - "9000:9000" + environment: + SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar + SONAR_JDBC_USERNAME: sonartest + SONAR_JDBC_PASSWORD: sonartest + volumes: + - SonarQube_data:/opt/SonarQube/data + - SonarQube_extensions:/opt/SonarQube/extensions + +volumes: + SonarQube_data: + SonarQube_extensions: diff --git a/docker-compose.yml b/docker-compose.yml index b3a4fa3..69cb199 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,54 @@ version: '3' services: + mongodb: + image: mongo + container_name: mongodb + ports: + - "27017:27017" + volumes: + - .:/home/node/app + attach: false # desabilita ou habilita os logs do mongo + networks: + - api-fullsports + command: mongod --bind_ip_all + app: build: . + depends_on: + - mongodb entrypoint: .docker/entrypoint.sh ports: - "${PORT}:${PORT}" volumes: - .:/home/node/app + networks: + - api-fullsports + environment: + DBAAS_MONGODB_ENDPOINT: mongodb://mongodb:27017 + VERCEL_GIT_COMMIT_REF: Local version + URL_AUTHORIZATION: http://localhost:${PORT}/auth/login-app/ + + mongodb-seed: # rodar esse container, importa os dados das materias(json) no mongodb local + image: mongo + container_name: mongodb-seed + depends_on: + - mongodb + volumes: + - .:/home/node/app + networks: + - api-fullsports + command: + - sh + - -c + - | + mongoimport --uri mongodb://mongodb:27017 --collection users --file home/node/app/src/mocks/user.mock.json --jsonArray + mongoimport --uri mongodb://mongodb:27017 --collection recommendations --file home/node/app/src/mocks/component_recommendation.mock.json --jsonArray + mongoimport --uri mongodb://mongodb:27017 --collection providers --file home/node/app/src/mocks/provider.mock.json --jsonArray + mongoimport --uri mongodb://mongodb:27017 --collection products --file home/node/app/src/mocks/product.mock.json --jsonArray + mongoimport --uri mongodb://mongodb:27017 --collection orders --file home/node/app/src/mocks/order.mock.json --jsonArray + mongoimport --uri mongodb://mongodb:27017 --collection models --file home/node/app/src/mocks/image.mock.json --jsonArray + +networks: + api-fullsports: + driver: bridge diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 0000000..f2d28fa --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,51 @@ +import { Config } from "jest"; +import { pathsToModuleNameMapper } from "ts-jest"; +import { compilerOptions } from "./tsconfig.json"; + +const config: Config = { + moduleFileExtensions: ["js", "json", "ts"], + testRegex: ".*\\.spec\\.ts$", + transform: { + "^.+\\.(t|j)s$": "ts-jest", + }, + collectCoverageFrom: ["**/*.(t|j)s"], + coverageDirectory: "./coverage", + coveragePathIgnorePatterns: [ + "/node_modules/", + "/dist/", + ".*model\\.ts$", + ".*schema\\.ts$", + ".*config\\.ts$", + ".*module\\.ts$", + ".*main\\.ts$", + ".*dto\\.ts$", + "/dto/", + "\\.dto\\.ts$", + "/Schema/", + "\\.schema\\.ts$", + ".*jwt-auth.guard\\.ts", + ".*local-auth.guard\\.ts", + "/.vercel/", + ".*tmp\\.ts$", + "/validator/", + "/test/", + "/mock/", + "/mocks/", + "/configs/", + "/config/", + "/interfaces/", + ".eslintrc.js", + "commitlint.config.js", + "/coverage/", + "sonar-project.ts", + "/enums/", + ".changelog.config.js", + ], + preset: "@shelf/jest-mongodb", + testEnvironment: "node", + moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { + prefix: "/", + }), +}; + +export default config; diff --git a/nest-cli.json b/nest-cli.json index f9aa683..d1c134a 100644 --- a/nest-cli.json +++ b/nest-cli.json @@ -1,8 +1,9 @@ { "$schema": "https://json.schemastore.org/nest-cli", "collection": "@nestjs/schematics", - "sourceRoot": "src", + "sourceRoot": "src/modules", "compilerOptions": { "deleteOutDir": true - } + }, + "entryFile": "src/main" } diff --git a/package.json b/package.json index d319269..4d28178 100644 --- a/package.json +++ b/package.json @@ -15,117 +15,95 @@ "start:prod": "node dist/src/main", "start:dev": "nest start --watch", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", - "test": "jest -runInBand --detectOpenHandles --force-exit", + "test": "jest -runInBand --detectOpenHandles --force-exit --config ./jest.config.ts", "test:watch": "jest --watch", "test:cov": "jest -runInBand --coverage --detectOpenHandles --force-exit", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:workflow": "jest --detectOpenHandles", - "test:e2e": "jest --config ./test/jest-e2e.json -runInBand --detectOpenHandles --force-exit", - "test:e2e:cov": "jest --config ./test/jest-e2e.json -runInBand --coverage --detectOpenHandles --force-exit", - "commit": "git-cz" + "test:e2e": "jest -runInBand --config ./test/jest-e2e.config.ts --detectOpenHandles --force-exit", + "test:e2e:cov": "jest --passWithNoTests --config ./test/jest-e2e.config.ts --coverage", + "prepare": "node -e \"try { require('husky').install() } catch (e) {if (e.code !== 'MODULE_NOT_FOUND') throw e}\"", + "commit": "git-cz", + "sonar": "node sonar-project.ts" }, - "configurations": [ - { - "name": "Launch Node.js in Docker", - "type": "docker", - "request": "launch", - "preLaunchTask": "Run Docker Container", - "platform": "node" - } - ], "dependencies": { - "@aws-sdk/client-s3": "^3.252.0", - "@nestjs/common": "^9.0.0", - "@nestjs/core": "^9.0.0", - "@nestjs/jwt": "^10.0.3", - "@nestjs/mongoose": "^9.2.1", + "@aws-sdk/client-s3": "^3.498.0", + "@nestjs/common": "^9.4.3", + "@nestjs/config": "^3.1.1", + "@nestjs/core": "^9.4.3", + "@nestjs/jwt": "^10.2.0", + "@nestjs/mongoose": "^9.2.2", "@nestjs/passport": "^9.0.3", - "@nestjs/platform-express": "^9.0.0", - "@nestjs/schedule": "^3.0.2", - "@nestjs/swagger": "^6.1.4", - "@tensorflow/tfjs-node": "^4.11.0", - "@types/cors": "^2.8.13", - "aws-sdk": "^2.1296.0", - "axios": "^1.2.3", - "bcrypt": "^5.1.0", + "@nestjs/platform-express": "^9.4.3", + "@nestjs/schedule": "^3.0.4", + "@nestjs/swagger": "^6.3.0", + "@tensorflow/tfjs-node": "^4.16.0", + "@types/cors": "^2.8.17", + "aws-sdk": "^2.1542.0", + "axios": "^1.6.5", + "bcrypt": "^5.1.1", "class-transformer": "^0.5.1", - "class-validator": "^0.14.0", + "class-validator": "^0.14.1", "cors": "^2.8.5", "cpf-cnpj-validator": "^1.0.3", - "cron": "^2.4.1", - "dotenv": "^16.0.3", + "cron": "^2.4.4", + "dotenv": "^16.4.0", "express": "^4.18.2", - "git-cz": "^4.9.0", - "mongoose": "^6.8.2", + "mongoose": "^6.12.6", "multer": "1.4.5-lts.1", "multer-s3": "^3.0.1", - "nodemon": "^2.0.20", + "nest-winston": "^1.9.4", + "nodemon": "^2.0.22", "passport-jwt": "^4.0.1", - "reflect-metadata": "^0.1.13", - "rxjs": "^7.2.0", - "swagger-ui-express": "^5.0.0" + "reflect-metadata": "^0.1.14", + "rxjs": "^7.8.1", + "swagger-ui-express": "^5.0.0", + "winston": "^3.11.0" }, "devDependencies": { - "@nestjs/cli": "^9.0.0", - "@nestjs/schematics": "^9.0.0", - "@nestjs/testing": "^9.0.0", - "@shelf/jest-mongodb": "^4.1.7", + "@nestjs/cli": "^9.5.0", + "@nestjs/schematics": "^9.2.0", + "@nestjs/testing": "^9.4.3", + "@shelf/jest-mongodb": "^4.2.0", "@types/aws-sdk": "^2.7.0", - "@types/bcrypt": "^5.0.0", + "@types/bcrypt": "^5.0.2", "@types/cron": "^2.4.0", - "@types/express": "^4.17.13", - "@types/jest": "29.2.4", - "@types/multer": "^1.4.7", - "@types/node": "18.11.18", - "@types/supertest": "^2.0.11", - "@typescript-eslint/eslint-plugin": "^5.0.0", - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^8.0.1", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", - "jest": "29.3.1", - "prettier": "^2.3.2", - "source-map-support": "^0.5.20", - "supertest": "^6.1.3", - "ts-jest": "29.0.3", - "ts-loader": "^9.2.3", - "ts-node": "^10.0.0", - "ts-node-dev": "^2.0.0", - "tsconfig-paths": "4.1.1", - "typescript": "^4.7.4" + "@types/express": "^4.17.21", + "@types/jest": "^29.5.11", + "@types/multer": "^1.4.11", + "@types/multer-s3": "^3.0.3", + "@types/node": "^20.11.5", + "@types/supertest": "^2.0.16", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^8.10.0", + "eslint-plugin-prettier": "^4.2.1", + "git-cz": "^4.9.0", + "husky": "^8.0.3", + "jest": "^29.7.0", + "lint-staged": "^15.2.0", + "prettier": "^2.8.8", + "sonarqube-scanner": "^3.3.0", + "source-map-support": "^0.5.21", + "supertest": "^6.3.4", + "ts-jest": "^29.1.2", + "ts-loader": "^9.5.1", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.3.3" }, - "jest": { - "moduleFileExtensions": [ - "js", - "json", - "ts" - ], - "moduleNameMapper": { - "^src/(.*)$": "/$1" - }, - "rootDir": "src", - "testRegex": ".*\\.spec\\.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - }, - "collectCoverageFrom": [ - "**/*.(t|j)s" - ], - "bail": true, - "verbose": true, - "clearMocks": true, - "collectCoverage": false, - "errorOnDeprecated": false, - "coverageDirectory": "../coverage", - "testEnvironment": "node", - "notify": false, - "preset": "@shelf/jest-mongodb" + "engines": { + "node": "20.5.0" }, "config": { "mongodbMemoryServer": { "arch": "arm64", "archive_name": "http://downloads.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2004-latest.tgzhttp://downloads.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2004-v4.4-latest.tgz", "debug": "1" + }, + "commitizen": { + "path": "./node_modules/git-cz" } } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e9cf7e..a61ffe8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,3155 +1,5959 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@aws-sdk/client-s3': - specifier: ^3.252.0 - version: 3.252.0 - '@nestjs/common': - specifier: ^9.0.0 - version: 9.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': - specifier: ^9.0.0 - version: 9.0.0(@nestjs/common@9.0.0)(@nestjs/platform-express@9.0.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/jwt': - specifier: ^10.0.3 - version: 10.0.3(@nestjs/common@9.0.0) - '@nestjs/mongoose': - specifier: ^9.2.1 - version: 9.2.1(@nestjs/common@9.0.0)(@nestjs/core@9.0.0)(mongoose@6.8.2)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/passport': - specifier: ^9.0.3 - version: 9.0.3(@nestjs/common@9.0.0)(passport@0.6.0) - '@nestjs/platform-express': - specifier: ^9.0.0 - version: 9.0.0(@nestjs/common@9.0.0)(@nestjs/core@9.0.0) - '@nestjs/schedule': - specifier: ^3.0.2 - version: 3.0.2(@nestjs/common@9.0.0)(@nestjs/core@9.0.0)(reflect-metadata@0.1.13) - '@nestjs/swagger': - specifier: ^6.1.4 - version: 6.3.0(@nestjs/common@9.0.0)(@nestjs/core@9.0.0)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13) - '@tensorflow/tfjs-node': - specifier: ^4.11.0 - version: 4.11.0(seedrandom@3.0.5) - '@types/cors': - specifier: ^2.8.13 - version: 2.8.13 - aws-sdk: - specifier: ^2.1296.0 - version: 2.1296.0 - axios: - specifier: ^1.2.3 - version: 1.2.3 - bcrypt: - specifier: ^5.1.0 - version: 5.1.0 - class-transformer: - specifier: ^0.5.1 - version: 0.5.1 - class-validator: - specifier: ^0.14.0 - version: 0.14.0 - cors: - specifier: ^2.8.5 - version: 2.8.5 - cpf-cnpj-validator: - specifier: ^1.0.3 - version: 1.0.3 - cron: - specifier: ^2.4.1 - version: 2.4.1 - dotenv: - specifier: ^16.0.3 - version: 16.0.3 - express: - specifier: ^4.18.2 - version: 4.18.2 - git-cz: - specifier: ^4.9.0 - version: 4.9.0 - mongoose: - specifier: ^6.8.2 - version: 6.8.2 - multer: - specifier: 1.4.5-lts.1 - version: 1.4.5-lts.1 - multer-s3: - specifier: ^3.0.1 - version: 3.0.1(@aws-sdk/abort-controller@3.347.0)(@aws-sdk/client-s3@3.252.0) - nodemon: - specifier: ^2.0.20 - version: 2.0.20 - passport-jwt: - specifier: ^4.0.1 - version: 4.0.1 - reflect-metadata: - specifier: ^0.1.13 - version: 0.1.13 - rxjs: - specifier: ^7.2.0 - version: 7.2.0 - swagger-ui-express: - specifier: ^5.0.0 - version: 5.0.0(express@4.18.2) - -devDependencies: - '@nestjs/cli': - specifier: ^9.0.0 - version: 9.0.0 - '@nestjs/schematics': - specifier: ^9.0.0 - version: 9.0.0(chokidar@3.5.3)(typescript@4.7.4) - '@nestjs/testing': - specifier: ^9.0.0 - version: 9.0.0(@nestjs/common@9.0.0)(@nestjs/core@9.0.0)(@nestjs/platform-express@9.0.0) - '@shelf/jest-mongodb': - specifier: ^4.1.7 - version: 4.1.7(jest-environment-node@29.5.0)(mongodb@5.6.0) - '@types/aws-sdk': - specifier: ^2.7.0 - version: 2.7.0 - '@types/bcrypt': - specifier: ^5.0.0 - version: 5.0.0 - '@types/cron': - specifier: ^2.4.0 - version: 2.4.0 - '@types/express': - specifier: ^4.17.13 - version: 4.17.13 - '@types/jest': - specifier: 29.2.4 - version: 29.2.4 - '@types/multer': - specifier: ^1.4.7 - version: 1.4.7 - '@types/node': - specifier: 18.11.18 - version: 18.11.18 - '@types/supertest': - specifier: ^2.0.11 - version: 2.0.11 - '@typescript-eslint/eslint-plugin': - specifier: ^5.0.0 - version: 5.0.0(@typescript-eslint/parser@5.0.0)(eslint@8.0.1)(typescript@4.7.4) - '@typescript-eslint/parser': - specifier: ^5.0.0 - version: 5.0.0(eslint@8.0.1)(typescript@4.7.4) - eslint: - specifier: ^8.0.1 - version: 8.0.1 - eslint-config-prettier: - specifier: ^8.3.0 - version: 8.3.0(eslint@8.0.1) - eslint-plugin-prettier: - specifier: ^4.0.0 - version: 4.0.0(eslint-config-prettier@8.3.0)(eslint@8.0.1)(prettier@2.3.2) - jest: - specifier: 29.3.1 - version: 29.3.1(@types/node@18.11.18)(ts-node@10.0.0) - prettier: - specifier: ^2.3.2 - version: 2.3.2 - source-map-support: - specifier: ^0.5.20 - version: 0.5.20 - supertest: - specifier: ^6.1.3 - version: 6.1.3 - ts-jest: - specifier: 29.0.3 - version: 29.0.3(@babel/core@7.22.5)(jest@29.3.1)(typescript@4.7.4) - ts-loader: - specifier: ^9.2.3 - version: 9.2.3(typescript@4.7.4)(webpack@5.87.0) - ts-node: - specifier: ^10.0.0 - version: 10.0.0(@types/node@18.11.18)(typescript@4.7.4) - ts-node-dev: - specifier: ^2.0.0 - version: 2.0.0(@types/node@18.11.18)(typescript@4.7.4) - tsconfig-paths: - specifier: 4.1.1 - version: 4.1.1 - typescript: - specifier: ^4.7.4 - version: 4.7.4 +importers: + + .: + dependencies: + '@aws-sdk/client-s3': + specifier: ^3.498.0 + version: 3.498.0 + '@nestjs/common': + specifier: ^9.4.3 + version: 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/config': + specifier: ^3.1.1 + version: 3.1.1(@nestjs/common@9.4.3)(reflect-metadata@0.1.14) + '@nestjs/core': + specifier: ^9.4.3 + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/jwt': + specifier: ^10.2.0 + version: 10.2.0(@nestjs/common@9.4.3) + '@nestjs/mongoose': + specifier: ^9.2.2 + version: 9.2.2(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(mongoose@6.12.6)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/passport': + specifier: ^9.0.3 + version: 9.0.3(@nestjs/common@9.4.3)(passport@0.6.0) + '@nestjs/platform-express': + specifier: ^9.4.3 + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + '@nestjs/schedule': + specifier: ^3.0.4 + version: 3.0.4(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(reflect-metadata@0.1.14) + '@nestjs/swagger': + specifier: ^6.3.0 + version: 6.3.0(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14) + '@tensorflow/tfjs-node': + specifier: ^4.16.0 + version: 4.16.0(seedrandom@3.0.5) + '@types/cors': + specifier: ^2.8.17 + version: 2.8.17 + aws-sdk: + specifier: ^2.1542.0 + version: 2.1542.0 + axios: + specifier: ^1.6.5 + version: 1.6.5 + bcrypt: + specifier: ^5.1.1 + version: 5.1.1 + class-transformer: + specifier: ^0.5.1 + version: 0.5.1 + class-validator: + specifier: ^0.14.1 + version: 0.14.1 + cors: + specifier: ^2.8.5 + version: 2.8.5 + cpf-cnpj-validator: + specifier: ^1.0.3 + version: 1.0.3 + cron: + specifier: ^2.4.4 + version: 2.4.4 + dotenv: + specifier: ^16.4.0 + version: 16.4.0 + express: + specifier: ^4.18.2 + version: 4.18.2 + mongoose: + specifier: ^6.12.6 + version: 6.12.6 + multer: + specifier: 1.4.5-lts.1 + version: 1.4.5-lts.1 + multer-s3: + specifier: ^3.0.1 + version: 3.0.1(@aws-sdk/client-s3@3.498.0) + nest-winston: + specifier: ^1.9.4 + version: 1.9.4(@nestjs/common@9.4.3)(winston@3.11.0) + nodemon: + specifier: ^2.0.22 + version: 2.0.22 + passport-jwt: + specifier: ^4.0.1 + version: 4.0.1 + reflect-metadata: + specifier: ^0.1.14 + version: 0.1.14 + rxjs: + specifier: ^7.8.1 + version: 7.8.1 + swagger-ui-express: + specifier: ^5.0.0 + version: 5.0.0(express@4.18.2) + winston: + specifier: ^3.11.0 + version: 3.11.0 + devDependencies: + '@nestjs/cli': + specifier: ^9.5.0 + version: 9.5.0 + '@nestjs/schematics': + specifier: ^9.2.0 + version: 9.2.0(typescript@5.3.3) + '@nestjs/testing': + specifier: ^9.4.3 + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/platform-express@9.4.3) + '@shelf/jest-mongodb': + specifier: ^4.2.0 + version: 4.2.0(jest-environment-node@29.7.0)(mongodb@6.3.0) + '@types/aws-sdk': + specifier: ^2.7.0 + version: 2.7.0 + '@types/bcrypt': + specifier: ^5.0.2 + version: 5.0.2 + '@types/cron': + specifier: ^2.4.0 + version: 2.4.0 + '@types/express': + specifier: ^4.17.21 + version: 4.17.21 + '@types/jest': + specifier: ^29.5.11 + version: 29.5.11 + '@types/multer': + specifier: ^1.4.11 + version: 1.4.11 + '@types/multer-s3': + specifier: ^3.0.3 + version: 3.0.3 + '@types/node': + specifier: ^20.11.5 + version: 20.11.5 + '@types/supertest': + specifier: ^2.0.16 + version: 2.0.16 + '@typescript-eslint/eslint-plugin': + specifier: ^5.62.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': + specifier: ^5.62.0 + version: 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint: + specifier: ^8.56.0 + version: 8.56.0 + eslint-config-prettier: + specifier: ^8.10.0 + version: 8.10.0(eslint@8.56.0) + eslint-plugin-prettier: + specifier: ^4.2.1 + version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.56.0)(prettier@2.8.8) + git-cz: + specifier: ^4.9.0 + version: 4.9.0 + husky: + specifier: ^8.0.3 + version: 8.0.3 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.11.5)(ts-node@10.9.2) + lint-staged: + specifier: ^15.2.0 + version: 15.2.0 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + sonarqube-scanner: + specifier: ^3.3.0 + version: 3.3.0 + source-map-support: + specifier: ^0.5.21 + version: 0.5.21 + supertest: + specifier: ^6.3.4 + version: 6.3.4 + ts-jest: + specifier: ^29.1.2 + version: 29.1.2(@babel/core@7.23.7)(jest@29.7.0)(typescript@5.3.3) + ts-loader: + specifier: ^9.5.1 + version: 9.5.1(typescript@5.3.3)(webpack@5.89.0) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@20.11.5)(typescript@5.3.3) + tsconfig-paths: + specifier: ^4.2.0 + version: 4.2.0 + typescript: + specifier: ^5.3.3 + version: 5.3.3 packages: - /@ampproject/remapping@2.2.1: + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + '@ampproject/remapping@2.2.1': resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - /@angular-devkit/core@14.0.5(chokidar@3.5.3): - resolution: {integrity: sha512-/CUGi6QLwh79FvsOY7M+1LQL3asZsbQW/WBd5f1iu5y7TLNqCwo+wOb0ZXLDNPw45vYBxFajtt3ob3U7qx3jNg==} - engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-devkit/core@16.0.1': + resolution: {integrity: sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^3.5.2 peerDependenciesMeta: chokidar: optional: true - dependencies: - ajv: 8.11.0 - ajv-formats: 2.1.1(ajv@8.11.0) - chokidar: 3.5.3 - jsonc-parser: 3.0.0 - rxjs: 6.6.7 - source-map: 0.7.3 - dev: true - - /@angular-devkit/schematics-cli@14.0.5(chokidar@3.5.3): - resolution: {integrity: sha512-S+u0KjglyI3jEZWwIuBvFjEwY3Zk5lCWfhet+95sFKJEjEYgF4Fuk8Mau/9cr55hIcpZqTQUvyxnS/VDoj4WLg==} - engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - hasBin: true - dependencies: - '@angular-devkit/core': 14.0.5(chokidar@3.5.3) - '@angular-devkit/schematics': 14.0.5(chokidar@3.5.3) - ansi-colors: 4.1.1 - inquirer: 8.2.4 - symbol-observable: 4.0.0 - yargs-parser: 21.0.1 - transitivePeerDependencies: - - chokidar - dev: true - /@angular-devkit/schematics@14.0.5(chokidar@3.5.3): - resolution: {integrity: sha512-sufxITBkn2MvgEREt9JQ3QCKHS+sue1WsVzLE+TWqG5MC/RPk0f9tQ5VoHk6ZTzDKUvOtSoc7G+n0RscQsyp5g==} - engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - dependencies: - '@angular-devkit/core': 14.0.5(chokidar@3.5.3) - jsonc-parser: 3.0.0 - magic-string: 0.26.1 - ora: 5.4.1 - rxjs: 6.6.7 - transitivePeerDependencies: - - chokidar - dev: true + '@angular-devkit/schematics-cli@16.0.1': + resolution: {integrity: sha512-6KLA125dpgd6oJGtiO2JpZAb92uOG3njQGIt7NFcuQGW/5GO7J41vMXH9cBAfdtbV8SIggSmR/cIEE9ijfj6YQ==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + hasBin: true - /@aws-crypto/crc32@2.0.0: - resolution: {integrity: sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA==} - dependencies: - '@aws-crypto/util': 2.0.2 - '@aws-sdk/types': 3.226.0 - tslib: 1.14.1 - dev: false + '@angular-devkit/schematics@16.0.1': + resolution: {integrity: sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - /@aws-crypto/crc32@3.0.0: + '@aws-crypto/crc32@3.0.0': resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} - requiresBuild: true - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.347.0 - tslib: 1.14.1 - optional: true - - /@aws-crypto/crc32c@2.0.0: - resolution: {integrity: sha512-vF0eMdMHx3O3MoOXUfBZry8Y4ZDtcuskjjKgJz8YfIDjLStxTZrYXk+kZqtl6A0uCmmiN/Eb/JbC/CndTV1MHg==} - dependencies: - '@aws-crypto/util': 2.0.2 - '@aws-sdk/types': 3.226.0 - tslib: 1.14.1 - dev: false - /@aws-crypto/ie11-detection@2.0.2: - resolution: {integrity: sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==} - dependencies: - tslib: 1.14.1 - dev: false + '@aws-crypto/crc32c@3.0.0': + resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} - /@aws-crypto/ie11-detection@3.0.0: + '@aws-crypto/ie11-detection@3.0.0': resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} - requiresBuild: true - dependencies: - tslib: 1.14.1 - optional: true - /@aws-crypto/sha1-browser@2.0.0: - resolution: {integrity: sha512-3fIVRjPFY8EG5HWXR+ZJZMdWNRpwbxGzJ9IH9q93FpbgCH8u8GHRi46mZXp3cYD7gealmyqpm3ThZwLKJjWJhA==} - dependencies: - '@aws-crypto/ie11-detection': 2.0.2 - '@aws-crypto/supports-web-crypto': 2.0.2 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-locate-window': 3.310.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - tslib: 1.14.1 - dev: false - - /@aws-crypto/sha256-browser@2.0.0: - resolution: {integrity: sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==} - dependencies: - '@aws-crypto/ie11-detection': 2.0.2 - '@aws-crypto/sha256-js': 2.0.0 - '@aws-crypto/supports-web-crypto': 2.0.2 - '@aws-crypto/util': 2.0.2 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-locate-window': 3.310.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - tslib: 1.14.1 - dev: false + '@aws-crypto/sha1-browser@3.0.0': + resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==} - /@aws-crypto/sha256-browser@3.0.0: + '@aws-crypto/sha256-browser@3.0.0': resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} - requiresBuild: true - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-locate-window': 3.310.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - optional: true - - /@aws-crypto/sha256-js@2.0.0: - resolution: {integrity: sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==} - dependencies: - '@aws-crypto/util': 2.0.2 - '@aws-sdk/types': 3.226.0 - tslib: 1.14.1 - dev: false - /@aws-crypto/sha256-js@3.0.0: + '@aws-crypto/sha256-js@3.0.0': resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} - requiresBuild: true - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.347.0 - tslib: 1.14.1 - optional: true - /@aws-crypto/supports-web-crypto@2.0.2: - resolution: {integrity: sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==} - dependencies: - tslib: 1.14.1 - dev: false - - /@aws-crypto/supports-web-crypto@3.0.0: + '@aws-crypto/supports-web-crypto@3.0.0': resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} - requiresBuild: true - dependencies: - tslib: 1.14.1 - optional: true - - /@aws-crypto/util@2.0.2: - resolution: {integrity: sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==} - dependencies: - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - tslib: 1.14.1 - dev: false - /@aws-crypto/util@3.0.0: + '@aws-crypto/util@3.0.0': resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - optional: true - /@aws-sdk/abort-controller@3.226.0: - resolution: {integrity: sha512-cJVzr1xxPBd08voknXvR0RLgtZKGKt6WyDpH/BaPCu3rfSqWCDZKzwqe940eqosjmKrxC6pUZNKASIqHOQ8xxQ==} + '@aws-sdk/client-cognito-identity@3.498.0': + resolution: {integrity: sha512-v+OEcWep69mZGSralXYpyQQB2J91LizbsdvwizLxVPZ6dxnJKS/P/Gbugoqpu3VMVUqFGZ627HwByJ3I1YLV3A==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/abort-controller@3.347.0: - resolution: {integrity: sha512-P/2qE6ntYEmYG4Ez535nJWZbXqgbkJx8CMz7ChEuEg3Gp3dvVYEKg+iEUEvlqQ2U5dWP5J3ehw5po9t86IsVPQ==} + '@aws-sdk/client-s3@3.498.0': + resolution: {integrity: sha512-M1nDbKYW04SkPsQafp6JTqfCeiRy4ELHBpX+DRwNmb7MsPy2aBk+rjbREBt233xDCrd8C9HswJhJ18U37KQTgA==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - - /@aws-sdk/chunked-blob-reader-native@3.208.0: - resolution: {integrity: sha512-JeOZ95PW+fJ6bbuqPySYqLqHk1n4+4ueEEraJsiUrPBV0S1ZtyvOGHcnGztKUjr2PYNaiexmpWuvUve9K12HRA==} - dependencies: - '@aws-sdk/util-base64': 3.208.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/chunked-blob-reader@3.188.0: - resolution: {integrity: sha512-zkPRFZZPL3eH+kH86LDYYXImiClA1/sW60zYOjse9Pgka+eDJlvBN6hcYxwDEKjcwATYiSRR1aVQHcfCinlGXg==} - dependencies: - tslib: 2.5.3 - dev: false - - /@aws-sdk/client-cognito-identity@3.354.0: - resolution: {integrity: sha512-VYoPiup85Zn1uiqn6X7Kl1/5AsihyW0jOPpO5Xv39shRKFTLYWIgPxjg7k+dNPVAX62XrWoWNkGR6sB/JN9Qdg==} + '@aws-sdk/client-sso@3.496.0': + resolution: {integrity: sha512-fuaMuxKg7CMUsP9l3kxYWCOxFsBjdA0xj5nlikaDm1661/gB4KkAiGqRY8LsQkpNXvXU8Nj+f7oCFADFyGYzyw==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.354.0 - '@aws-sdk/config-resolver': 3.354.0 - '@aws-sdk/credential-provider-node': 3.354.0 - '@aws-sdk/fetch-http-handler': 3.353.0 - '@aws-sdk/hash-node': 3.347.0 - '@aws-sdk/invalid-dependency': 3.347.0 - '@aws-sdk/middleware-content-length': 3.347.0 - '@aws-sdk/middleware-endpoint': 3.347.0 - '@aws-sdk/middleware-host-header': 3.347.0 - '@aws-sdk/middleware-logger': 3.347.0 - '@aws-sdk/middleware-recursion-detection': 3.347.0 - '@aws-sdk/middleware-retry': 3.354.0 - '@aws-sdk/middleware-serde': 3.347.0 - '@aws-sdk/middleware-signing': 3.354.0 - '@aws-sdk/middleware-stack': 3.347.0 - '@aws-sdk/middleware-user-agent': 3.352.0 - '@aws-sdk/node-config-provider': 3.354.0 - '@aws-sdk/node-http-handler': 3.350.0 - '@aws-sdk/smithy-client': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - '@aws-sdk/util-base64': 3.310.0 - '@aws-sdk/util-body-length-browser': 3.310.0 - '@aws-sdk/util-body-length-node': 3.310.0 - '@aws-sdk/util-defaults-mode-browser': 3.353.0 - '@aws-sdk/util-defaults-mode-node': 3.354.0 - '@aws-sdk/util-endpoints': 3.352.0 - '@aws-sdk/util-retry': 3.347.0 - '@aws-sdk/util-user-agent-browser': 3.347.0 - '@aws-sdk/util-user-agent-node': 3.354.0 - '@aws-sdk/util-utf8': 3.310.0 - '@smithy/protocol-http': 1.1.0 - '@smithy/types': 1.1.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - optional: true - /@aws-sdk/client-s3@3.252.0: - resolution: {integrity: sha512-VsTDuztgrwwBnkTZKm3t3cyXNTnWRCxDN4fCeEabw8/GB6KKSrs1a9pYXyWXuXtuvV5lFG4tIZMcXF7UkVXqyg==} + '@aws-sdk/client-sts@3.496.0': + resolution: {integrity: sha512-3pSdqgegdwbK3CT1WvGHhA+Bf91R9cr8G1Ynp+iU2wZvy8ueJfMUk0NYfjo3EEv0YhSbMLKuduzZfvQHFHXYhw==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha1-browser': 2.0.0 - '@aws-crypto/sha256-browser': 2.0.0 - '@aws-crypto/sha256-js': 2.0.0 - '@aws-sdk/client-sts': 3.252.0 - '@aws-sdk/config-resolver': 3.234.0 - '@aws-sdk/credential-provider-node': 3.252.0 - '@aws-sdk/eventstream-serde-browser': 3.226.0 - '@aws-sdk/eventstream-serde-config-resolver': 3.226.0 - '@aws-sdk/eventstream-serde-node': 3.226.0 - '@aws-sdk/fetch-http-handler': 3.226.0 - '@aws-sdk/hash-blob-browser': 3.226.0 - '@aws-sdk/hash-node': 3.226.0 - '@aws-sdk/hash-stream-node': 3.226.0 - '@aws-sdk/invalid-dependency': 3.226.0 - '@aws-sdk/md5-js': 3.226.0 - '@aws-sdk/middleware-bucket-endpoint': 3.226.0 - '@aws-sdk/middleware-content-length': 3.226.0 - '@aws-sdk/middleware-endpoint': 3.226.0 - '@aws-sdk/middleware-expect-continue': 3.226.0 - '@aws-sdk/middleware-flexible-checksums': 3.226.0 - '@aws-sdk/middleware-host-header': 3.226.0 - '@aws-sdk/middleware-location-constraint': 3.226.0 - '@aws-sdk/middleware-logger': 3.226.0 - '@aws-sdk/middleware-recursion-detection': 3.226.0 - '@aws-sdk/middleware-retry': 3.235.0 - '@aws-sdk/middleware-sdk-s3': 3.231.0 - '@aws-sdk/middleware-serde': 3.226.0 - '@aws-sdk/middleware-signing': 3.226.0 - '@aws-sdk/middleware-ssec': 3.226.0 - '@aws-sdk/middleware-stack': 3.226.0 - '@aws-sdk/middleware-user-agent': 3.226.0 - '@aws-sdk/node-config-provider': 3.226.0 - '@aws-sdk/node-http-handler': 3.226.0 - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/signature-v4-multi-region': 3.226.0 - '@aws-sdk/smithy-client': 3.234.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/url-parser': 3.226.0 - '@aws-sdk/util-base64': 3.208.0 - '@aws-sdk/util-body-length-browser': 3.188.0 - '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.234.0 - '@aws-sdk/util-defaults-mode-node': 3.234.0 - '@aws-sdk/util-endpoints': 3.245.0 - '@aws-sdk/util-retry': 3.229.0 - '@aws-sdk/util-stream-browser': 3.226.0 - '@aws-sdk/util-stream-node': 3.226.0 - '@aws-sdk/util-user-agent-browser': 3.226.0 - '@aws-sdk/util-user-agent-node': 3.226.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.208.0 - '@aws-sdk/util-waiter': 3.226.0 - '@aws-sdk/xml-builder': 3.201.0 - fast-xml-parser: 4.0.11 - tslib: 2.5.3 - transitivePeerDependencies: - - '@aws-sdk/signature-v4-crt' - - aws-crt - dev: false - /@aws-sdk/client-sso-oidc@3.252.0: - resolution: {integrity: sha512-OOwfEXFS+UliGZorEleARsXXUp3ObZSXo9/YY+8XF7/8froAqYjKCEi0tflghgYlh7d6qe7wzD7/6gDL1a/qgA==} + '@aws-sdk/core@3.496.0': + resolution: {integrity: sha512-yT+ug7Cw/3eJi7x2es0+46x12+cIJm5Xv+GPWsrTFD1TKgqO/VPEgfDtHFagDNbFmjNQA65Ygc/kEdIX9ICX/A==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 2.0.0 - '@aws-crypto/sha256-js': 2.0.0 - '@aws-sdk/config-resolver': 3.234.0 - '@aws-sdk/fetch-http-handler': 3.226.0 - '@aws-sdk/hash-node': 3.226.0 - '@aws-sdk/invalid-dependency': 3.226.0 - '@aws-sdk/middleware-content-length': 3.226.0 - '@aws-sdk/middleware-endpoint': 3.226.0 - '@aws-sdk/middleware-host-header': 3.226.0 - '@aws-sdk/middleware-logger': 3.226.0 - '@aws-sdk/middleware-recursion-detection': 3.226.0 - '@aws-sdk/middleware-retry': 3.235.0 - '@aws-sdk/middleware-serde': 3.226.0 - '@aws-sdk/middleware-stack': 3.226.0 - '@aws-sdk/middleware-user-agent': 3.226.0 - '@aws-sdk/node-config-provider': 3.226.0 - '@aws-sdk/node-http-handler': 3.226.0 - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/smithy-client': 3.234.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/url-parser': 3.226.0 - '@aws-sdk/util-base64': 3.208.0 - '@aws-sdk/util-body-length-browser': 3.188.0 - '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.234.0 - '@aws-sdk/util-defaults-mode-node': 3.234.0 - '@aws-sdk/util-endpoints': 3.245.0 - '@aws-sdk/util-retry': 3.229.0 - '@aws-sdk/util-user-agent-browser': 3.226.0 - '@aws-sdk/util-user-agent-node': 3.226.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.208.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - dev: false - /@aws-sdk/client-sso-oidc@3.354.0: - resolution: {integrity: sha512-XZcg4s2zKb4S8ltluiw5yxpm974uZqzo2HTECt1lbzUJgVgLsMAh/nPJ1fLqg4jadT+rf8Lq2FEFqOM/vxWT8A==} + '@aws-sdk/credential-provider-cognito-identity@3.498.0': + resolution: {integrity: sha512-A4XgSkt+4hxmLOPMdw5vHgL2mFRkpw7/5uGMU2GfxErZGds401SyLdJBsCj0+A4dJ0LlEs+5owkYZHVR6jBEbg==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.354.0 - '@aws-sdk/fetch-http-handler': 3.353.0 - '@aws-sdk/hash-node': 3.347.0 - '@aws-sdk/invalid-dependency': 3.347.0 - '@aws-sdk/middleware-content-length': 3.347.0 - '@aws-sdk/middleware-endpoint': 3.347.0 - '@aws-sdk/middleware-host-header': 3.347.0 - '@aws-sdk/middleware-logger': 3.347.0 - '@aws-sdk/middleware-recursion-detection': 3.347.0 - '@aws-sdk/middleware-retry': 3.354.0 - '@aws-sdk/middleware-serde': 3.347.0 - '@aws-sdk/middleware-stack': 3.347.0 - '@aws-sdk/middleware-user-agent': 3.352.0 - '@aws-sdk/node-config-provider': 3.354.0 - '@aws-sdk/node-http-handler': 3.350.0 - '@aws-sdk/smithy-client': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - '@aws-sdk/util-base64': 3.310.0 - '@aws-sdk/util-body-length-browser': 3.310.0 - '@aws-sdk/util-body-length-node': 3.310.0 - '@aws-sdk/util-defaults-mode-browser': 3.353.0 - '@aws-sdk/util-defaults-mode-node': 3.354.0 - '@aws-sdk/util-endpoints': 3.352.0 - '@aws-sdk/util-retry': 3.347.0 - '@aws-sdk/util-user-agent-browser': 3.347.0 - '@aws-sdk/util-user-agent-node': 3.354.0 - '@aws-sdk/util-utf8': 3.310.0 - '@smithy/protocol-http': 1.1.0 - '@smithy/types': 1.1.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - optional: true - /@aws-sdk/client-sso@3.252.0: - resolution: {integrity: sha512-VgBqJvvCU4y9zAHJwYj5nOeNGcCxKdCO4edUxWQVHcpLsVWu49maOVtWuteq9MOrHYeWfQi8bVWGt8MPvv9+bA==} + '@aws-sdk/credential-provider-env@3.496.0': + resolution: {integrity: sha512-lukQMJ8SWWP5RqkRNOHi/H+WMhRvSWa3Fc5Jf/VP6xHiPLfF1XafcvthtV91e0VwPCiseI+HqChrcGq8pvnxHw==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 2.0.0 - '@aws-crypto/sha256-js': 2.0.0 - '@aws-sdk/config-resolver': 3.234.0 - '@aws-sdk/fetch-http-handler': 3.226.0 - '@aws-sdk/hash-node': 3.226.0 - '@aws-sdk/invalid-dependency': 3.226.0 - '@aws-sdk/middleware-content-length': 3.226.0 - '@aws-sdk/middleware-endpoint': 3.226.0 - '@aws-sdk/middleware-host-header': 3.226.0 - '@aws-sdk/middleware-logger': 3.226.0 - '@aws-sdk/middleware-recursion-detection': 3.226.0 - '@aws-sdk/middleware-retry': 3.235.0 - '@aws-sdk/middleware-serde': 3.226.0 - '@aws-sdk/middleware-stack': 3.226.0 - '@aws-sdk/middleware-user-agent': 3.226.0 - '@aws-sdk/node-config-provider': 3.226.0 - '@aws-sdk/node-http-handler': 3.226.0 - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/smithy-client': 3.234.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/url-parser': 3.226.0 - '@aws-sdk/util-base64': 3.208.0 - '@aws-sdk/util-body-length-browser': 3.188.0 - '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.234.0 - '@aws-sdk/util-defaults-mode-node': 3.234.0 - '@aws-sdk/util-endpoints': 3.245.0 - '@aws-sdk/util-retry': 3.229.0 - '@aws-sdk/util-user-agent-browser': 3.226.0 - '@aws-sdk/util-user-agent-node': 3.226.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.208.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - dev: false - /@aws-sdk/client-sso@3.354.0: - resolution: {integrity: sha512-4jmvjJYDaaPmm1n2TG4LYfTEnHLKcJmImgBqhgzhMgaypb4u/k1iw0INV2r/afYPL/FsrLFwc46RM3HYx3nc4A==} + '@aws-sdk/credential-provider-http@3.496.0': + resolution: {integrity: sha512-iphFlFX0qDFsE24XmFlcKmsR4uyNaqQrK+Y18mwSZMs1yWtL4Sck0rcTXU/cU2W3/xisjh7xFXK5L5aowjMZOg==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.354.0 - '@aws-sdk/fetch-http-handler': 3.353.0 - '@aws-sdk/hash-node': 3.347.0 - '@aws-sdk/invalid-dependency': 3.347.0 - '@aws-sdk/middleware-content-length': 3.347.0 - '@aws-sdk/middleware-endpoint': 3.347.0 - '@aws-sdk/middleware-host-header': 3.347.0 - '@aws-sdk/middleware-logger': 3.347.0 - '@aws-sdk/middleware-recursion-detection': 3.347.0 - '@aws-sdk/middleware-retry': 3.354.0 - '@aws-sdk/middleware-serde': 3.347.0 - '@aws-sdk/middleware-stack': 3.347.0 - '@aws-sdk/middleware-user-agent': 3.352.0 - '@aws-sdk/node-config-provider': 3.354.0 - '@aws-sdk/node-http-handler': 3.350.0 - '@aws-sdk/smithy-client': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - '@aws-sdk/util-base64': 3.310.0 - '@aws-sdk/util-body-length-browser': 3.310.0 - '@aws-sdk/util-body-length-node': 3.310.0 - '@aws-sdk/util-defaults-mode-browser': 3.353.0 - '@aws-sdk/util-defaults-mode-node': 3.354.0 - '@aws-sdk/util-endpoints': 3.352.0 - '@aws-sdk/util-retry': 3.347.0 - '@aws-sdk/util-user-agent-browser': 3.347.0 - '@aws-sdk/util-user-agent-node': 3.354.0 - '@aws-sdk/util-utf8': 3.310.0 - '@smithy/protocol-http': 1.1.0 - '@smithy/types': 1.1.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - optional: true - /@aws-sdk/client-sts@3.252.0: - resolution: {integrity: sha512-wzfsWOlDFLdmeML8R7DUJWGl9wcRKf2uiunfB1aWzpdlgms0Z7FkHWgkDYHjCPyYHL6EBm84ajGl1UkE7AcmqQ==} + '@aws-sdk/credential-provider-ini@3.496.0': + resolution: {integrity: sha512-2nD1jp1sIwcQaWK1y/9ruQOkW16RUxZpzgjbW/gnK3iiUXwx+/FNQWxshud+GTSx3Q4x6eIhqsbjtP4VVPPuUA==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 2.0.0 - '@aws-crypto/sha256-js': 2.0.0 - '@aws-sdk/config-resolver': 3.234.0 - '@aws-sdk/credential-provider-node': 3.252.0 - '@aws-sdk/fetch-http-handler': 3.226.0 - '@aws-sdk/hash-node': 3.226.0 - '@aws-sdk/invalid-dependency': 3.226.0 - '@aws-sdk/middleware-content-length': 3.226.0 - '@aws-sdk/middleware-endpoint': 3.226.0 - '@aws-sdk/middleware-host-header': 3.226.0 - '@aws-sdk/middleware-logger': 3.226.0 - '@aws-sdk/middleware-recursion-detection': 3.226.0 - '@aws-sdk/middleware-retry': 3.235.0 - '@aws-sdk/middleware-sdk-sts': 3.226.0 - '@aws-sdk/middleware-serde': 3.226.0 - '@aws-sdk/middleware-signing': 3.226.0 - '@aws-sdk/middleware-stack': 3.226.0 - '@aws-sdk/middleware-user-agent': 3.226.0 - '@aws-sdk/node-config-provider': 3.226.0 - '@aws-sdk/node-http-handler': 3.226.0 - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/smithy-client': 3.234.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/url-parser': 3.226.0 - '@aws-sdk/util-base64': 3.208.0 - '@aws-sdk/util-body-length-browser': 3.188.0 - '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.234.0 - '@aws-sdk/util-defaults-mode-node': 3.234.0 - '@aws-sdk/util-endpoints': 3.245.0 - '@aws-sdk/util-retry': 3.229.0 - '@aws-sdk/util-user-agent-browser': 3.226.0 - '@aws-sdk/util-user-agent-node': 3.226.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.208.0 - fast-xml-parser: 4.0.11 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - dev: false - /@aws-sdk/client-sts@3.354.0: - resolution: {integrity: sha512-l9Ar/C/3PNlToM1ukHVfBtp4plbRUxLMYY2DOTMI0nb3jzfcvETBcdEGCP51fX4uAfJ2vc4g5qBF/qXKX0LMWA==} + '@aws-sdk/credential-provider-node@3.496.0': + resolution: {integrity: sha512-IVF9RvLePfRa5S5/eBIRChJCWOzQkGwM8P/L79Gl84u/cH2oSG4NtUI/YTDlrtmnYn7YsGhINSV0WnzfF2twfQ==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.354.0 - '@aws-sdk/credential-provider-node': 3.354.0 - '@aws-sdk/fetch-http-handler': 3.353.0 - '@aws-sdk/hash-node': 3.347.0 - '@aws-sdk/invalid-dependency': 3.347.0 - '@aws-sdk/middleware-content-length': 3.347.0 - '@aws-sdk/middleware-endpoint': 3.347.0 - '@aws-sdk/middleware-host-header': 3.347.0 - '@aws-sdk/middleware-logger': 3.347.0 - '@aws-sdk/middleware-recursion-detection': 3.347.0 - '@aws-sdk/middleware-retry': 3.354.0 - '@aws-sdk/middleware-sdk-sts': 3.354.0 - '@aws-sdk/middleware-serde': 3.347.0 - '@aws-sdk/middleware-signing': 3.354.0 - '@aws-sdk/middleware-stack': 3.347.0 - '@aws-sdk/middleware-user-agent': 3.352.0 - '@aws-sdk/node-config-provider': 3.354.0 - '@aws-sdk/node-http-handler': 3.350.0 - '@aws-sdk/smithy-client': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - '@aws-sdk/util-base64': 3.310.0 - '@aws-sdk/util-body-length-browser': 3.310.0 - '@aws-sdk/util-body-length-node': 3.310.0 - '@aws-sdk/util-defaults-mode-browser': 3.353.0 - '@aws-sdk/util-defaults-mode-node': 3.354.0 - '@aws-sdk/util-endpoints': 3.352.0 - '@aws-sdk/util-retry': 3.347.0 - '@aws-sdk/util-user-agent-browser': 3.347.0 - '@aws-sdk/util-user-agent-node': 3.354.0 - '@aws-sdk/util-utf8': 3.310.0 - '@smithy/protocol-http': 1.1.0 - '@smithy/types': 1.1.0 - fast-xml-parser: 4.2.4 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - optional: true - /@aws-sdk/config-resolver@3.234.0: - resolution: {integrity: sha512-uZxy4wzllfvgCQxVc+Iqhde0NGAnfmV2hWR6ejadJaAFTuYNvQiRg9IqJy3pkyDPqXySiJ8Bom5PoJfgn55J/A==} + '@aws-sdk/credential-provider-process@3.496.0': + resolution: {integrity: sha512-/YZscCTGOKVmGr916Th4XF8Sz6JDtZ/n2loHG9exok9iy/qIbACsTRNLP9zexPxhPoue/oZqecY5xbVljfY34A==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/signature-v4': 3.226.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-config-provider': 3.208.0 - '@aws-sdk/util-middleware': 3.226.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/config-resolver@3.354.0: - resolution: {integrity: sha512-K4XWie8yJPT8bpYVX54VJMQhiJRTw8PrjEs9QrKqvwoCcZ3G4qEt40tIu33XksuokXxk8rrVH5d7odOPBsAtdg==} + '@aws-sdk/credential-provider-sso@3.496.0': + resolution: {integrity: sha512-eP7GxpT2QYubSDG7uk1GJW4eNymZCq65IxDyEFCXOP/kfqkxriCY+iVEFG6/Mo3LxvgrgHXU4jxrCAXMAWN43g==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-config-provider': 3.310.0 - '@aws-sdk/util-middleware': 3.347.0 - tslib: 2.5.3 - optional: true - /@aws-sdk/credential-provider-cognito-identity@3.354.0: - resolution: {integrity: sha512-Q5UcqASJWqwD4AXpfv4Zpw5tUV/fzbhnEC9TzyB39zXcu4Qd0cQgVQOOq9FX1GbtLNOzkPnbvHsbv2PdEaNM4A==} + '@aws-sdk/credential-provider-web-identity@3.496.0': + resolution: {integrity: sha512-IbP+qLlvJSpNPj+zW6TtFuLRTK5Tf0hW+2pom4vFyi5YSH4pn8UOC136UdewX8vhXGS9BJQ5zBDMasIyl5VeGQ==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/client-cognito-identity': 3.354.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - optional: true - /@aws-sdk/credential-provider-env@3.226.0: - resolution: {integrity: sha512-sd8uK1ojbXxaZXlthzw/VXZwCPUtU3PjObOfr3Evj7MPIM2IH8h29foOlggx939MdLQGboJf9gKvLlvKDWtJRA==} + '@aws-sdk/credential-providers@3.498.0': + resolution: {integrity: sha512-dkOJMtHeR8V9OFnXImDCAGLE27oEJEzx6BQTfE2+FTxxj3OKeoRa47ikZOuZpeygjr1niOydZy+iSfpjGIMiCQ==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/credential-provider-env@3.353.0: - resolution: {integrity: sha512-Y4VsNS8O1FAD5J7S5itOhnOghQ5LIXlZ44t35nF8cbcF+JPvY3ToKzYpjYN1jM7DXKqU4shtqgYpzSqxlvEgKQ==} + '@aws-sdk/lib-storage@3.498.0': + resolution: {integrity: sha512-p/eHMJ4+SWcA0MYzKKHHlO8t7rHllXchcgO4UyHD2Xn76hTjSkFJhlrnkqMjw8vMbxRSsvMtC1IU0WSvyXpAYw==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + peerDependencies: + '@aws-sdk/client-s3': ^3.0.0 - /@aws-sdk/credential-provider-imds@3.226.0: - resolution: {integrity: sha512-//z/COQm2AjYFI1Lb0wKHTQSrvLFTyuKLFQGPJsKS7DPoxGOCKB7hmYerlbl01IDoCxTdyL//TyyPxbZEOQD5Q==} + '@aws-sdk/middleware-bucket-endpoint@3.496.0': + resolution: {integrity: sha512-B+ilBMSs3+LJuo2bl2KB8GFdu+8PPVtYEWtwhNkmnaU8iMisgMBp5uuM8sUDvJX7I4iSF0WbgnhguX4cJqfAew==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/node-config-provider': 3.226.0 - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/url-parser': 3.226.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/credential-provider-imds@3.354.0: - resolution: {integrity: sha512-AB+PuDd1jX6qgz+JYvIyOn8Kz9/lQ60KuY1TFb7g3S8zURw+DSeMJNR1jzEsorWICTzhxXmyasHVMa4Eo4Uq+Q==} + '@aws-sdk/middleware-expect-continue@3.496.0': + resolution: {integrity: sha512-+exo5DVc+BeDus2iI6Fz1thefHGDXxUhHZ+4VHQ6HkStMy3Y22HugyEGHSQZmtRL86Hjr7dFbEWFsC47a2ItGA==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/node-config-provider': 3.354.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - tslib: 2.5.3 - optional: true - /@aws-sdk/credential-provider-ini@3.252.0: - resolution: {integrity: sha512-OfpU8xMYK7+6XQ2dUO4rN0gUhhb/ZLV7iwSL6Ji2pI9gglGhKdOSfmbn6fBfCB50kzWZRNoiQJVaBu/d0Kr0EQ==} + '@aws-sdk/middleware-flexible-checksums@3.496.0': + resolution: {integrity: sha512-yQIWfjEMvgsAJ7ku224vXDjXPD+f9zfKZFialJva8VUlEr7hQp4CQ0rxV3YThSaixKEDDs5k6kOjWAd2BPGr2A==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/credential-provider-env': 3.226.0 - '@aws-sdk/credential-provider-imds': 3.226.0 - '@aws-sdk/credential-provider-process': 3.226.0 - '@aws-sdk/credential-provider-sso': 3.252.0 - '@aws-sdk/credential-provider-web-identity': 3.226.0 - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/shared-ini-file-loader': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - dev: false - /@aws-sdk/credential-provider-ini@3.354.0: - resolution: {integrity: sha512-bn2ifrRsxWpxzwXa25jRdUECQ1dC+NB3YlRYnGdIaIQLF559N2jnfCabYzqyfKI++WU7aQeMofPe2PxVGlbv9Q==} + '@aws-sdk/middleware-host-header@3.496.0': + resolution: {integrity: sha512-jUdPpSJeqCYXf6hSjfwsfHway7peIV8Vz51w/BN91bF4vB/bYwAC5o9/iJiK/EoByp5asxA8fg9wFOyGjzdbLg==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/credential-provider-env': 3.353.0 - '@aws-sdk/credential-provider-imds': 3.354.0 - '@aws-sdk/credential-provider-process': 3.354.0 - '@aws-sdk/credential-provider-sso': 3.354.0 - '@aws-sdk/credential-provider-web-identity': 3.354.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.354.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - optional: true - /@aws-sdk/credential-provider-node@3.252.0: - resolution: {integrity: sha512-Jt854JnB7izkJ/gb3S0hBFqAQPUNUP3eL8gXX2uqk9A9bQFQdS57/Ci0FXaEPwOXzJwAAPazD8dTf6HXMhnm3w==} + '@aws-sdk/middleware-location-constraint@3.496.0': + resolution: {integrity: sha512-i4ocJ2Zs86OtPREbB18InFukhqg2qtBxb5gywv79IHDPVmpOYE4m/3v3yGUrkjfF2GTlUL0k5FskNNqw41yfng==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/credential-provider-env': 3.226.0 - '@aws-sdk/credential-provider-imds': 3.226.0 - '@aws-sdk/credential-provider-ini': 3.252.0 - '@aws-sdk/credential-provider-process': 3.226.0 - '@aws-sdk/credential-provider-sso': 3.252.0 - '@aws-sdk/credential-provider-web-identity': 3.226.0 - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/shared-ini-file-loader': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - dev: false - /@aws-sdk/credential-provider-node@3.354.0: - resolution: {integrity: sha512-ltKiRtHfqDaCcrb44DIoSHQ9MposFl/aDtNdu5OdQv/2Q1r7M/r2fQdq9DHOrxeQQjaUH4C6k6fGTsxALTHyNA==} + '@aws-sdk/middleware-logger@3.496.0': + resolution: {integrity: sha512-EwMVSY6iBMeGbVnvwdaFl/ClMS/YWtxCAo+bcEtgk8ltRuo7qgbJem8Km/fvWC1vdWvIbe4ArdJ8iGzq62ffAw==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/credential-provider-env': 3.353.0 - '@aws-sdk/credential-provider-imds': 3.354.0 - '@aws-sdk/credential-provider-ini': 3.354.0 - '@aws-sdk/credential-provider-process': 3.354.0 - '@aws-sdk/credential-provider-sso': 3.354.0 - '@aws-sdk/credential-provider-web-identity': 3.354.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.354.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - optional: true - /@aws-sdk/credential-provider-process@3.226.0: - resolution: {integrity: sha512-iUDMdnrTvbvaCFhWwqyXrhvQ9+ojPqPqXhwZtY1X/Qaz+73S9gXBPJHZaZb2Ke0yKE1Ql3bJbKvmmxC/qLQMng==} + '@aws-sdk/middleware-recursion-detection@3.496.0': + resolution: {integrity: sha512-+IuOcFsfqg2WAnaEzH6KhVbicqCxtOq9w3DH2jwTpddRlCx2Kqf6wCzg8luhHRGyjBZdsbIS+OXwyMevoppawA==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/shared-ini-file-loader': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/credential-provider-process@3.354.0: - resolution: {integrity: sha512-AxpASm+tS8V1PY4PLfG9dtqa96lzBJ3niTQb+RAm4uYCddW7gxNDkGB+jSCzVdUPVa3xA2ITBS/ka3C5yM8YWg==} + '@aws-sdk/middleware-sdk-s3@3.496.0': + resolution: {integrity: sha512-OKrTPzubisQCQzPuF4G7jmbYt71o6W7oefmW9zm1MpGokRSJeC9zv4aT1gkMglpXEHgvL0S5fUVGi0AtF/F8Kw==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.354.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true - /@aws-sdk/credential-provider-sso@3.252.0: - resolution: {integrity: sha512-2JGoojMOBjG9/DenctEszjdPechq0uDTpH5nx+z1xxIAugA5+HYG/ncNfpwhmUBCrnOxpRaQViTNqXddEPHlAg==} + '@aws-sdk/middleware-signing@3.496.0': + resolution: {integrity: sha512-Oq73Brs4IConvWnRlh8jM1V7LHoTw9SVQklu/QW2FPlNrB3B8fuTdWHHYIWv7ybw1bykXoCY99v865Mmq/Or/g==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/client-sso': 3.252.0 - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/shared-ini-file-loader': 3.226.0 - '@aws-sdk/token-providers': 3.252.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - dev: false - /@aws-sdk/credential-provider-sso@3.354.0: - resolution: {integrity: sha512-ihiaUxh8V/nQgTOgQZxWQcbckXhM+J6Wdc4F0z9soi48iSOqzRpzPw5E14wSZScEZjNY/gKEDz8gCt8WkT/G0w==} + '@aws-sdk/middleware-ssec@3.498.0': + resolution: {integrity: sha512-sWujXgzeTqMZzj/pRYEnnEbSzhBosqw9DXHOY1Mg2igI9NEfGlB7lPARp6aKmCaYlP3Bcj2X86vKCqF53mbyig==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/client-sso': 3.354.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.354.0 - '@aws-sdk/token-providers': 3.354.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - optional: true - /@aws-sdk/credential-provider-web-identity@3.226.0: - resolution: {integrity: sha512-CCpv847rLB0SFOHz2igvUMFAzeT2fD3YnY4C8jltuJoEkn0ITn1Hlgt13nTJ5BUuvyti2mvyXZHmNzhMIMrIlw==} + '@aws-sdk/middleware-user-agent@3.496.0': + resolution: {integrity: sha512-+iMtRxFk0GmFWNUF4ilxylOQd9PZdR4ZC9jkcPIh1PZlvKtpCyFywKlk5RRZKklSoJ/CttcqwhMvOXTNbWm/0w==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/credential-provider-web-identity@3.354.0: - resolution: {integrity: sha512-scx9mAf4m3Hc3uMX2Vh8GciEcC/5GqeDI8qc0zBj+UF/5c/GtihZA4WoCV3Sg3jMPDUKY81DiFCtcKHhtUqKfg==} + '@aws-sdk/region-config-resolver@3.496.0': + resolution: {integrity: sha512-URrNVOPHPgEDm6QFu6lDC2cUFs+Jx23mA3jEwCvoKlXiEY/ZoWjH8wlX3OMUlLrF1qoUTuD03jjrJzF6zoCgug==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true - /@aws-sdk/credential-providers@3.354.0: - resolution: {integrity: sha512-GjkSKGWL+lbEVAYGRvE2kdKn8lnhLEBB98yKMz6k9VhqVBrMPZVGTFTlNNtPRZ7IfnnmgLnk6IHtue9xgaycfg==} + '@aws-sdk/signature-v4-multi-region@3.496.0': + resolution: {integrity: sha512-zi3cL8+dRVSvC0PA6votwEHF4l9uxOyQTiRfgpFgzJ9iiPbsrtWCalGCwN0UyzmeDv7eViU6FK1YTHH/OgDJ4A==} engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/client-cognito-identity': 3.354.0 - '@aws-sdk/client-sso': 3.354.0 - '@aws-sdk/client-sts': 3.354.0 - '@aws-sdk/credential-provider-cognito-identity': 3.354.0 - '@aws-sdk/credential-provider-env': 3.353.0 - '@aws-sdk/credential-provider-imds': 3.354.0 - '@aws-sdk/credential-provider-ini': 3.354.0 - '@aws-sdk/credential-provider-node': 3.354.0 - '@aws-sdk/credential-provider-process': 3.354.0 - '@aws-sdk/credential-provider-sso': 3.354.0 - '@aws-sdk/credential-provider-web-identity': 3.354.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt - optional: true - - /@aws-sdk/eventstream-codec@3.226.0: - resolution: {integrity: sha512-6uPtR8vSwz3fqoZk9hrb6qBYdp3PJ22+JxV5Wimdesvow4kJXSgDQXIxEkxbv6SxB9tNRB4uJHD84RetHEi15Q==} - dependencies: - '@aws-crypto/crc32': 2.0.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-hex-encoding': 3.201.0 - tslib: 2.5.3 - dev: false - - /@aws-sdk/eventstream-codec@3.347.0: - resolution: {integrity: sha512-61q+SyspjsaQ4sdgjizMyRgVph2CiW4aAtfpoH69EJFJfTxTR/OqnZ9Jx/3YiYi0ksrvDenJddYodfWWJqD8/w==} - requiresBuild: true - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-hex-encoding': 3.310.0 - tslib: 2.5.3 - optional: true - /@aws-sdk/eventstream-serde-browser@3.226.0: - resolution: {integrity: sha512-otYC5aZE9eJUqAlKpy8w0rPDQ1eKGvZPtgxWXmFYSO2lDVGfI1nBBNmdZ4MdHqNuQ7ucsKMQYF8BFJ65K2tYPA==} + '@aws-sdk/token-providers@3.496.0': + resolution: {integrity: sha512-fyi8RcObEa1jNETJdc2H6q9VHrrdKCj/b6+fbLvymb7mUVRd0aWUn+24SNUImnSOnrwYnwaMfyyEC388X4MbFQ==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/eventstream-serde-universal': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/eventstream-serde-config-resolver@3.226.0: - resolution: {integrity: sha512-A56Gypg+lyEfA5cna+EUH9XTrj0SvRG1gwNW7lrUzviN36SeA/LFTUIOEjxVML3Lowy+EPAcrSZ67h6aepoAig==} + '@aws-sdk/types@3.496.0': + resolution: {integrity: sha512-umkGadK4QuNQaMoDICMm7NKRI/mYSXiyPjcn3d53BhsuArYU/52CebGQKdt4At7SwwsiVJZw9RNBHyN5Mm0HVw==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/eventstream-serde-node@3.226.0: - resolution: {integrity: sha512-KWLnKkKDzI9RNkiK6OiSYpG/XjZfue6Bsp/vRG+H5z3fbXdHv4X2+iW+Efu2Kvn7jsUyUv82TCl57DyJ/HKYhQ==} + '@aws-sdk/util-arn-parser@3.495.0': + resolution: {integrity: sha512-hwdA3XAippSEUxs7jpznwD63YYFR+LtQvlEcebPTgWR9oQgG9TfS+39PUfbnEeje1ICuOrN3lrFqFbmP9uzbMg==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/eventstream-serde-universal': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/eventstream-serde-universal@3.226.0: - resolution: {integrity: sha512-Q8viYM1Sv90/yIUqyWNeG1GEvyVlAI3GIrInQcCMC+xT59jS+IKGy2y7ojCvSWXnhf5/HMXKcmG092QsqeKy0Q==} + '@aws-sdk/util-endpoints@3.496.0': + resolution: {integrity: sha512-1QzOiWHi383ZwqSi/R2KgKCd7M+6DxkxI5acqLPm8mvDRDP2jRjrnVaC0g9/tlttWousGEemDUWStwrD2mVYSw==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/eventstream-codec': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/fetch-http-handler@3.226.0: - resolution: {integrity: sha512-JewZPMNEBXfi1xVnRa7pVtK/zgZD8/lQ/YnD8pq79WuMa2cwyhDtr8oqCoqsPW+WJT5ScXoMtuHxN78l8eKWgg==} - dependencies: - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/querystring-builder': 3.226.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-base64': 3.208.0 - tslib: 2.5.3 - dev: false - - /@aws-sdk/fetch-http-handler@3.353.0: - resolution: {integrity: sha512-8ic2+4E6jzfDevd++QS1rOR05QFkAhEFbi5Ja3/Zzp7TkWIS8wv5wwMATjNkbbdsXYuB5Lhl/OsjfZmIv5aqRw==} - requiresBuild: true - dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/querystring-builder': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-base64': 3.310.0 - tslib: 2.5.3 - optional: true + '@aws-sdk/util-locate-window@3.495.0': + resolution: {integrity: sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==} + engines: {node: '>=14.0.0'} - /@aws-sdk/hash-blob-browser@3.226.0: - resolution: {integrity: sha512-5DCvWE6L4xGoViEHyjcPFuUe1G2EtNx8TqswWaoaKgyasP/yuRm4H99Ra7rqIrjCcSTAGD9NVsUQvVVw1bGt9w==} - dependencies: - '@aws-sdk/chunked-blob-reader': 3.188.0 - '@aws-sdk/chunked-blob-reader-native': 3.208.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + '@aws-sdk/util-user-agent-browser@3.496.0': + resolution: {integrity: sha512-4j2spN+h0I0qfSMsGvJXTfQBu1e18rPdekKvzsGJxhaAE1tNgUfUT4nbvc5uVn0sNjZmirskmJ3kfbzVOrqIFg==} - /@aws-sdk/hash-node@3.226.0: - resolution: {integrity: sha512-MdlJhJ9/Espwd0+gUXdZRsHuostB2WxEVAszWxobP0FTT9PnicqnfK7ExmW+DUAc0ywxtEbR3e0UND65rlSTVw==} + '@aws-sdk/util-user-agent-node@3.496.0': + resolution: {integrity: sha512-h0Ax0jlDc7UIo3KoSI4C4tVLBFoiAdx3+DhTVfgLS7x93d41dMlziPoBX2RgdcFn37qnzw6AQKTVTMwDbRCGpg==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-buffer-from': 3.208.0 - tslib: 2.5.3 - dev: false + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true - /@aws-sdk/hash-node@3.347.0: - resolution: {integrity: sha512-96+ml/4EaUaVpzBdOLGOxdoXOjkPgkoJp/0i1fxOJEvl8wdAQSwc3IugVK9wZkCxy2DlENtgOe6DfIOhfffm/g==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-buffer-from': 3.310.0 - '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.3 - optional: true + '@aws-sdk/util-utf8-browser@3.259.0': + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - /@aws-sdk/hash-stream-node@3.226.0: - resolution: {integrity: sha512-cgNTGlF8SdHaQXtjEmuLXz2U8SLM2JDKtIVPku/lHTMsUsEn+fuv2C+h1f/hvd4aNw5t1zggym7sO1/h/rv56Q==} + '@aws-sdk/xml-builder@3.496.0': + resolution: {integrity: sha512-GvEjh537IIeOw1ZkZuB37sV12u+ipS5Z1dwjEC/HAvhl5ac23ULtTr1/n+U1gLNN+BAKSWjKiQ2ksj8DiUzeyw==} engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false - /@aws-sdk/invalid-dependency@3.226.0: - resolution: {integrity: sha512-QXOYFmap8g9QzRjumcRCIo2GEZkdCwd7ePQW0OABWPhKHzlJ74vvBxywjU3s39EEBEluWXtZ7Iufg6GxZM4ifw==} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + '@babel/code-frame@7.23.5': + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} - /@aws-sdk/invalid-dependency@3.347.0: - resolution: {integrity: sha512-8imQcwLwqZ/wTJXZqzXT9pGLIksTRckhGLZaXT60tiBOPKuerTsus2L59UstLs5LP8TKaVZKFFSsjRIn9dQdmQ==} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + '@babel/compat-data@7.23.5': + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} - /@aws-sdk/is-array-buffer@3.201.0: - resolution: {integrity: sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.5.3 - dev: false + '@babel/core@7.23.7': + resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} + engines: {node: '>=6.9.0'} - /@aws-sdk/is-array-buffer@3.310.0: - resolution: {integrity: sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - tslib: 2.5.3 - optional: true + '@babel/generator@7.23.6': + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} - /@aws-sdk/lib-storage@3.354.0(@aws-sdk/abort-controller@3.347.0)(@aws-sdk/client-s3@3.252.0): - resolution: {integrity: sha512-H6CH+c1oD6z7Kl6AJyBgo5TyaTMDYlGQQQC44bifUzc96cUOSVRElSJ9Vn6C9bzjIygmO29ZdVtpz7rMvmTiQg==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/abort-controller': ^3.0.0 - '@aws-sdk/client-s3': ^3.0.0 - dependencies: - '@aws-sdk/abort-controller': 3.347.0 - '@aws-sdk/client-s3': 3.252.0 - '@aws-sdk/middleware-endpoint': 3.347.0 - '@aws-sdk/smithy-client': 3.347.0 - buffer: 5.6.0 - events: 3.3.0 - stream-browserify: 3.0.0 - tslib: 2.5.3 - dev: false + '@babel/helper-compilation-targets@7.23.6': + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} - /@aws-sdk/md5-js@3.226.0: - resolution: {integrity: sha512-ENigJRNudqyh6xsch166SZ4gggHd3XzZJ8gkCU4CWPne04HcR3BkWSO774IuWooCHt8zkaEHKecPurRz6qR+Vw==} - dependencies: - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.208.0 - tslib: 2.5.3 - dev: false + '@babel/helper-environment-visitor@7.22.20': + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} - /@aws-sdk/middleware-bucket-endpoint@3.226.0: - resolution: {integrity: sha512-A1Vq5W2X7jgTfjqcKPmjoHohF0poP+9fxwL97fQMvzcwmjhtoCV3bLEpo6CGYx0pKPiSlRJXZkRwRPj2hDHDmA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-arn-parser': 3.208.0 - '@aws-sdk/util-config-provider': 3.208.0 - tslib: 2.5.3 - dev: false + '@babel/helper-function-name@7.23.0': + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} - /@aws-sdk/middleware-content-length@3.226.0: - resolution: {integrity: sha512-ksUzlHJN2JMuyavjA46a4sctvnrnITqt2tbGGWWrAuXY1mel2j+VbgnmJUiwHKUO6bTFBBeft5Vd1TSOb4JmiA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + '@babel/helper-hoist-variables@7.22.5': + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.22.15': + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.23.3': + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.22.5': + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.22.5': + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.22.6': + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.23.4': + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.22.20': + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.23.5': + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.23.8': + resolution: {integrity: sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.23.4': + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.23.6': + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.23.3': + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.23.3': + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.22.15': + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.23.7': + resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.23.6': + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@dabh/diagnostics@2.0.3': + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.10.0': + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.56.0': + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@hapi/address@4.1.0': + resolution: {integrity: sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ==} + deprecated: Moved to 'npm install @sideway/address' + + '@hapi/formula@2.0.0': + resolution: {integrity: sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==} + deprecated: Moved to 'npm install @sideway/formula' + + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/joi@17.1.1': + resolution: {integrity: sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg==} + deprecated: Switch to 'npm install joi' + + '@hapi/pinpoint@2.0.1': + resolution: {integrity: sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.2': + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.3': + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.1': + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.1.2': + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.5': + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.22': + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@lukeed/csprng@1.1.0': + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} + engines: {node: '>=8'} + + '@mapbox/node-pre-gyp@1.0.11': + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + + '@mapbox/node-pre-gyp@1.0.9': + resolution: {integrity: sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==} + hasBin: true + + '@mongodb-js/saslprep@1.1.4': + resolution: {integrity: sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==} + + '@nestjs/cli@9.5.0': + resolution: {integrity: sha512-Z7q+3vNsQSG2d2r2Hl/OOj5EpfjVx3OfnJ9+KuAsOdw1sKLm7+Zc6KbhMFTd/eIvfx82ww3Nk72xdmfPYCulWA==} + engines: {node: '>= 12.9.0'} + hasBin: true + + '@nestjs/common@9.4.3': + resolution: {integrity: sha512-Gd6D4IaYj01o14Bwv81ukidn4w3bPHCblMUq+SmUmWLyosK+XQmInCS09SbDDZyL8jy86PngtBLTdhJ2bXSUig==} + peerDependencies: + cache-manager: <=5 + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + cache-manager: + optional: true + class-transformer: + optional: true + class-validator: + optional: true + + '@nestjs/config@3.1.1': + resolution: {integrity: sha512-qu5QlNiJdqQtOsnB6lx4JCXPQ96jkKUsOGd+JXfXwqJqZcOSAq6heNFg0opW4pq4J/VZoNwoo87TNnx9wthnqQ==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + reflect-metadata: ^0.1.13 + + '@nestjs/core@9.4.3': + resolution: {integrity: sha512-Qi63+wi55Jh4sDyaj5Hhx2jOpKqT386aeo+VOKsxnd+Ql9VvkO/FjmuwBGUyzkJt29ENYc+P0Sx/k5LtstNpPQ==} + peerDependencies: + '@nestjs/common': ^9.0.0 + '@nestjs/microservices': ^9.0.0 + '@nestjs/platform-express': ^9.0.0 + '@nestjs/websockets': ^9.0.0 + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + '@nestjs/websockets': + optional: true + + '@nestjs/jwt@10.2.0': + resolution: {integrity: sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + + '@nestjs/mapped-types@1.2.2': + resolution: {integrity: sha512-3dHxLXs3M0GPiriAcCFFJQHoDFUuzTD5w6JDhE7TyfT89YKpe6tcCCIqOZWdXmt9AZjjK30RkHRSFF+QEnWFQg==} + peerDependencies: + '@nestjs/common': ^7.0.8 || ^8.0.0 || ^9.0.0 + class-transformer: ^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0 + class-validator: ^0.11.1 || ^0.12.0 || ^0.13.0 || ^0.14.0 + reflect-metadata: ^0.1.12 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + + '@nestjs/mongoose@9.2.2': + resolution: {integrity: sha512-szNuSUCwwbQSSeiTh8+tZ9fHV4nuzHwBDROb0hX0s7crwY15TunCfwyKbB2XjqkEQWUAasDeCBuKOJSL9N6tTg==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 + '@nestjs/core': ^8.0.0 || ^9.0.0 + mongoose: ^6.0.2 || ^7.0.0 + reflect-metadata: ^0.1.12 + rxjs: ^7.0.0 + + '@nestjs/passport@9.0.3': + resolution: {integrity: sha512-HplSJaimEAz1IOZEu+pdJHHJhQyBOPAYWXYHfAPQvRqWtw4FJF1VXl1Qtk9dcXQX1eKytDtH+qBzNQc19GWNEg==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 + passport: ^0.4.0 || ^0.5.0 || ^0.6.0 + + '@nestjs/platform-express@9.4.3': + resolution: {integrity: sha512-FpdczWoRSC0zz2dNL9u2AQLXKXRVtq4HgHklAhbL59X0uy+mcxhlSThG7DHzDMkoSnuuHY8ojDVf7mDxk+GtCw==} + peerDependencies: + '@nestjs/common': ^9.0.0 + '@nestjs/core': ^9.0.0 + + '@nestjs/schedule@3.0.4': + resolution: {integrity: sha512-uFJpuZsXfpvgx2y7/KrIZW9e1L68TLiwRodZ6+Gc8xqQiHSUzAVn+9F4YMxWFlHITZvvkjWziUFgRNCitDcTZQ==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 + reflect-metadata: ^0.1.12 + + '@nestjs/schematics@9.2.0': + resolution: {integrity: sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==} + peerDependencies: + typescript: '>=4.3.5' + + '@nestjs/swagger@6.3.0': + resolution: {integrity: sha512-Gnig189oa1tD+h0BYIfUwhp/wvvmTn6iO3csR2E4rQrDTgCxSxZDlNdfZo3AC+Rmf8u0KX4ZAX1RZN1qXTtC7A==} + peerDependencies: + '@fastify/static': ^6.0.0 + '@nestjs/common': ^9.0.0 + '@nestjs/core': ^9.0.0 + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 + peerDependenciesMeta: + '@fastify/static': + optional: true + class-transformer: + optional: true + class-validator: + optional: true + + '@nestjs/testing@9.4.3': + resolution: {integrity: sha512-LDT8Ai2eKnTzvnPaJwWOK03qTaFap5uHHsJCv6dL0uKWk6hyF9jms8DjyVaGsaujCaXDG8izl1mDEER0OmxaZA==} + peerDependencies: + '@nestjs/common': ^9.0.0 + '@nestjs/core': ^9.0.0 + '@nestjs/microservices': ^9.0.0 + '@nestjs/platform-express': ^9.0.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nuxtjs/opencollective@0.3.2': + resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + + '@shelf/jest-mongodb@4.2.0': + resolution: {integrity: sha512-AtrG0EGtoDX4/jiTHlVCtAT0QAW1RjKQDYVXK89fog07RcKr42r6hYOL+7XT/8Wj9pEmnOc1GoYQUWiOk0y8Nw==} + engines: {node: '>=16'} + peerDependencies: + jest-environment-node: 27.x.x || 28.x || 29.x + mongodb: 3.x.x || 4.x || 5.x || 6.x + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@smithy/abort-controller@2.1.1': + resolution: {integrity: sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==} + engines: {node: '>=14.0.0'} + + '@smithy/chunked-blob-reader-native@2.1.1': + resolution: {integrity: sha512-zNW+43dltfNMUrBEYLMWgI8lQr0uhtTcUyxkgC9EP4j17WREzgSFMPUFVrVV6Rc2+QtWERYjb4tzZnQGa7R9fQ==} + + '@smithy/chunked-blob-reader@2.1.1': + resolution: {integrity: sha512-NjNFCKxC4jVvn+lUr3Yo4/PmUJj3tbyqH6GNHueyTGS5Q27vlEJ1MkNhUDV8QGxJI7Bodnc2pD18lU2zRfhHlQ==} + + '@smithy/config-resolver@2.1.1': + resolution: {integrity: sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw==} + engines: {node: '>=14.0.0'} + + '@smithy/core@1.3.1': + resolution: {integrity: sha512-tf+NIu9FkOh312b6M9G4D68is4Xr7qptzaZGZUREELF8ysE1yLKphqt7nsomjKZVwW7WE5pDDex9idowNGRQ/Q==} + engines: {node: '>=14.0.0'} + + '@smithy/credential-provider-imds@2.2.1': + resolution: {integrity: sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA==} + engines: {node: '>=14.0.0'} + + '@smithy/eventstream-codec@2.1.1': + resolution: {integrity: sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw==} + + '@smithy/eventstream-serde-browser@2.1.1': + resolution: {integrity: sha512-JvEdCmGlZUay5VtlT8/kdR6FlvqTDUiJecMjXsBb0+k1H/qc9ME5n2XKPo8q/MZwEIA1GmGgYMokKGjVvMiDow==} + engines: {node: '>=14.0.0'} + + '@smithy/eventstream-serde-config-resolver@2.1.1': + resolution: {integrity: sha512-EqNqXYp3+dk//NmW3NAgQr9bEQ7fsu/CcxQmTiq07JlaIcne/CBWpMZETyXm9w5LXkhduBsdXdlMscfDUDn2fA==} + engines: {node: '>=14.0.0'} + + '@smithy/eventstream-serde-node@2.1.1': + resolution: {integrity: sha512-LF882q/aFidFNDX7uROAGxq3H0B7rjyPkV6QDn6/KDQ+CG7AFkRccjxRf1xqajq/Pe4bMGGr+VKAaoF6lELIQw==} + engines: {node: '>=14.0.0'} + + '@smithy/eventstream-serde-universal@2.1.1': + resolution: {integrity: sha512-LR0mMT+XIYTxk4k2fIxEA1BPtW3685QlqufUEUAX1AJcfFfxNDKEvuCRZbO8ntJb10DrIFVJR9vb0MhDCi0sAQ==} + engines: {node: '>=14.0.0'} + + '@smithy/fetch-http-handler@2.4.1': + resolution: {integrity: sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg==} + + '@smithy/hash-blob-browser@2.1.1': + resolution: {integrity: sha512-jizu1+2PAUjiGIfRtlPEU8Yo6zn+d78ti/ZHDesdf1SUn2BuZW433JlPoCOLH3dBoEEvTgLvQ8tUGSoTTALA+A==} + + '@smithy/hash-node@2.1.1': + resolution: {integrity: sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg==} + engines: {node: '>=14.0.0'} + + '@smithy/hash-stream-node@2.1.1': + resolution: {integrity: sha512-VgDaKcfCy0iHcmtAZgZ3Yw9g37Gkn2JsQiMtFQXUh8Wmo3GfNgDwLOtdhJ272pOT7DStzpe9cNr+eV5Au8KfQA==} + engines: {node: '>=14.0.0'} + + '@smithy/invalid-dependency@2.1.1': + resolution: {integrity: sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw==} + + '@smithy/is-array-buffer@2.1.1': + resolution: {integrity: sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==} + engines: {node: '>=14.0.0'} + + '@smithy/md5-js@2.1.1': + resolution: {integrity: sha512-L3MbIYBIdLlT+MWTYrdVSv/dow1+6iZ1Ad7xS0OHxTTs17d753ZcpOV4Ro7M7tRAVWML/sg2IAp/zzCb6aAttg==} + + '@smithy/middleware-content-length@2.1.1': + resolution: {integrity: sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-endpoint@2.4.1': + resolution: {integrity: sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-retry@2.1.1': + resolution: {integrity: sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-serde@2.1.1': + resolution: {integrity: sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-stack@2.1.1': + resolution: {integrity: sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw==} + engines: {node: '>=14.0.0'} + + '@smithy/node-config-provider@2.2.1': + resolution: {integrity: sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg==} + engines: {node: '>=14.0.0'} + + '@smithy/node-http-handler@2.3.1': + resolution: {integrity: sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA==} + engines: {node: '>=14.0.0'} + + '@smithy/property-provider@2.1.1': + resolution: {integrity: sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw==} + engines: {node: '>=14.0.0'} + + '@smithy/protocol-http@3.1.1': + resolution: {integrity: sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ==} + engines: {node: '>=14.0.0'} + + '@smithy/querystring-builder@2.1.1': + resolution: {integrity: sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg==} + engines: {node: '>=14.0.0'} + + '@smithy/querystring-parser@2.1.1': + resolution: {integrity: sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ==} + engines: {node: '>=14.0.0'} + + '@smithy/service-error-classification@2.1.1': + resolution: {integrity: sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw==} + engines: {node: '>=14.0.0'} + + '@smithy/shared-ini-file-loader@2.3.1': + resolution: {integrity: sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw==} + engines: {node: '>=14.0.0'} + + '@smithy/signature-v4@2.1.1': + resolution: {integrity: sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg==} + engines: {node: '>=14.0.0'} + + '@smithy/smithy-client@2.3.1': + resolution: {integrity: sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA==} + engines: {node: '>=14.0.0'} + + '@smithy/types@2.9.1': + resolution: {integrity: sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==} + engines: {node: '>=14.0.0'} + + '@smithy/url-parser@2.1.1': + resolution: {integrity: sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q==} + + '@smithy/util-base64@2.1.1': + resolution: {integrity: sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==} + engines: {node: '>=14.0.0'} + + '@smithy/util-body-length-browser@2.1.1': + resolution: {integrity: sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==} + + '@smithy/util-body-length-node@2.2.1': + resolution: {integrity: sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@2.1.1': + resolution: {integrity: sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==} + engines: {node: '>=14.0.0'} + + '@smithy/util-config-provider@2.2.1': + resolution: {integrity: sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==} + engines: {node: '>=14.0.0'} + + '@smithy/util-defaults-mode-browser@2.1.1': + resolution: {integrity: sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-node@2.1.1': + resolution: {integrity: sha512-tYVrc+w+jSBfBd267KDnvSGOh4NMz+wVH7v4CClDbkdPfnjvImBZsOURncT5jsFwR9KCuDyPoSZq4Pa6+eCUrA==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-endpoints@1.1.1': + resolution: {integrity: sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw==} + engines: {node: '>= 14.0.0'} + + '@smithy/util-hex-encoding@2.1.1': + resolution: {integrity: sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==} + engines: {node: '>=14.0.0'} + + '@smithy/util-middleware@2.1.1': + resolution: {integrity: sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-retry@2.1.1': + resolution: {integrity: sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA==} + engines: {node: '>= 14.0.0'} + + '@smithy/util-stream@2.1.1': + resolution: {integrity: sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ==} + engines: {node: '>=14.0.0'} + + '@smithy/util-uri-escape@2.1.1': + resolution: {integrity: sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@2.1.1': + resolution: {integrity: sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-waiter@2.1.1': + resolution: {integrity: sha512-kYy6BLJJNif+uqNENtJqWdXcpqo1LS+nj1AfXcDhOpqpSHJSAkVySLyZV9fkmuVO21lzGoxjvd1imGGJHph/IA==} + engines: {node: '>=14.0.0'} + + '@tensorflow/tfjs-backend-cpu@4.16.0': + resolution: {integrity: sha512-bQFu7FTUgqgss1AwnqSwQ1f02IPrfLLc2lLn5pyyVrS6Ex7zA6Y4YkfktqoJSRE6LlRZv3vxSriUGE1avRe4qQ==} + engines: {yarn: '>= 1.3.2'} + peerDependencies: + '@tensorflow/tfjs-core': 4.16.0 + + '@tensorflow/tfjs-backend-webgl@4.16.0': + resolution: {integrity: sha512-cIGZWuY892iwTRokbDj3qsLi0AlpQn+U7rzB1mddhHrWr9kBXrrnAvIq0h2aiFzRFNePWUcsbgK+HmYG32kosg==} + engines: {yarn: '>= 1.3.2'} + peerDependencies: + '@tensorflow/tfjs-core': 4.16.0 + + '@tensorflow/tfjs-converter@4.16.0': + resolution: {integrity: sha512-gd8dHl9tqEPQOHZLAUza713nKr42rpvUXrtm7yUhk10THvJT6TXe9Q2AJKmni8J3vfR+ghsCh77F8D4RbShx1Q==} + peerDependencies: + '@tensorflow/tfjs-core': 4.16.0 + + '@tensorflow/tfjs-core@4.16.0': + resolution: {integrity: sha512-MarAtO+Up6wA8pI9QDpQOwwJgb/imYMN++tsoaalyOEE9+B5HS4lQldxDJKXO8Frf4DyXf4FItJktEXaiPfRHw==} + engines: {yarn: '>= 1.3.2'} + + '@tensorflow/tfjs-data@4.16.0': + resolution: {integrity: sha512-HAmB4/3mvR1t/fuxu4Vx7hEGb4w8EcJoPNlzRHLr0+cYOApii6HQ/OksCcp7Ll8JoCb/SruVR3En3WSjSUu8YQ==} + peerDependencies: + '@tensorflow/tfjs-core': 4.16.0 + seedrandom: ^3.0.5 + + '@tensorflow/tfjs-layers@4.16.0': + resolution: {integrity: sha512-LNsbIF3SX45gG2FGo/34IPU+ObRCY5Z2znnp8cSqNZ96v52Q3nZ8GbyjYU9xDHv7eREKTSC2Aga2eGZ9Hfsl/g==} + peerDependencies: + '@tensorflow/tfjs-core': 4.16.0 + + '@tensorflow/tfjs-node@4.16.0': + resolution: {integrity: sha512-cjGaZzxTAHlGbXmmoyWcNVUcYb4urWnhaJ69zMdYlfdVkT1ShhopVjP1p1S9V93w2DqMn/fndAMICbj+LWBVeg==} + engines: {node: '>=8.11.0'} + + '@tensorflow/tfjs@4.16.0': + resolution: {integrity: sha512-wBs29w1rsE6XpKdwJ7vrxGJ+nbyU7+51Pgj1ZhLFdv5ZXwF5irHbNX1DegSd/8VbHPEY6mQSPvEuSe1mIhMw5Q==} + hasBin: true + + '@tsconfig/node10@1.0.9': + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/aws-sdk@2.7.0': + resolution: {integrity: sha512-bF6brnwPN9+kheqdKCpinMgCkj+sJIUEj+0v0LPug9OQwL5/1jy+kiJwl+Nkw4Kh+7oaL1phhC4gMz6Oq60jMg==} + deprecated: This is a stub types definition for aws-sdk (https://github.com/aws/aws-sdk-js). aws-sdk provides its own type definitions, so you don't need @types/aws-sdk installed! + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.5': + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + + '@types/bcrypt@5.0.2': + resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/cookiejar@2.1.5': + resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} + + '@types/cors@2.8.17': + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + + '@types/cron@2.4.0': + resolution: {integrity: sha512-5bBaAkqvSFBX8JMi/xCofNzG5E594TNsApMz68dLd/sQYz/HGQqgcxGHTRjOvD4G3Y+YF1Oo3S7QdCvKt1KAJQ==} + deprecated: This is a stub types definition. cron provides its own type definitions, so you do not need this installed. + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@8.56.2': + resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/express-serve-static-core@4.17.41': + resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.11': + resolution: {integrity: sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/jsonwebtoken@9.0.5': + resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==} + + '@types/long@4.0.2': + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + + '@types/luxon@3.3.8': + resolution: {integrity: sha512-jYvz8UMLDgy3a5SkGJne8H7VA7zPV2Lwohjx0V8V31+SqAjNmurWMkk9cQhfvlcnXWudBpK9xPM1n4rljOcHYQ==} + + '@types/methods@1.1.4': + resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/mime@3.0.4': + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + + '@types/multer-s3@3.0.3': + resolution: {integrity: sha512-VgWygI9UwyS7loLithUUi0qAMIDWdNrERS2Sb06UuPYiLzKuIFn2NgL7satyl4v8sh/LLoU7DiPanvbQaRg9Yg==} + + '@types/multer@1.4.11': + resolution: {integrity: sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==} + + '@types/node-fetch@2.6.11': + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} + + '@types/node@20.11.5': + resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==} + + '@types/offscreencanvas@2019.3.0': + resolution: {integrity: sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==} + + '@types/offscreencanvas@2019.7.3': + resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/qs@6.9.11': + resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/seedrandom@2.4.34': + resolution: {integrity: sha512-ytDiArvrn/3Xk6/vtylys5tlY6eo7Ane0hvcx++TKo6RxQXuVfW0AF/oeWqAj9dN29SyhtawuXstgmPlwNcv/A==} + + '@types/semver@7.5.6': + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-static@1.15.5': + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/superagent@8.1.2': + resolution: {integrity: sha512-W5DhMdXNk1CF4Ij8p4/EYbAgZTRZt2IOmIDFbNBda4nu8OEKAwSB3m7irXi7ImFoUzyewfXvuCSs0u+L0Eqhrg==} + + '@types/supertest@2.0.16': + resolution: {integrity: sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==} + + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + + '@types/validator@13.11.8': + resolution: {integrity: sha512-c/hzNDBh7eRF+KbCf+OoZxKbnkpaK/cKp9iLQWqB7muXtM+MtL9SUUH8vCFcLn6dH1Qm05jiexK0ofWY7TfOhQ==} + + '@types/webidl-conversions@7.0.3': + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} + + '@types/whatwg-url@11.0.4': + resolution: {integrity: sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==} + + '@types/whatwg-url@8.2.2': + resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + + '@typescript-eslint/eslint-plugin@5.62.0': + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@5.62.0': + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/type-utils@5.62.0': + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@webassemblyjs/ast@1.11.6': + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.11.6': + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.11.6': + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.11.6': + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + + '@webassemblyjs/wasm-gen@1.11.6': + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + + '@webassemblyjs/wasm-opt@1.11.6': + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + + '@webassemblyjs/wasm-parser@1.11.6': + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + + '@webassemblyjs/wast-printer@1.11.6': + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + + '@webgpu/types@0.1.38': + resolution: {integrity: sha512-7LrhVKz2PRh+DD7+S+PVaFd5HxaWQvoMqBbsV9fNJO1pjUs1P8bM2vQVNfk+3URTqbuTI7gkXi0rfsN0IadoBA==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-import-assertions@1.9.0: + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + adm-zip@0.5.10: + resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==} + engines: {node: '>=6.0'} + + agent-base@4.3.0: + resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} + engines: {node: '>= 4.0.0'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@6.2.0: + resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} + engines: {node: '>=14.16'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + append-field@1.0.0: + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + async-mutex@0.4.1: + resolution: {integrity: sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==} + + async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + aws-sdk@2.1542.0: + resolution: {integrity: sha512-GcDlp9/2fRo7I6LxW1wAMVHf6G4b4S4vsFDhWMhK6Ycx3EhNmpJVEtQn5b46O90ChgD6ydQwBGEoi00W5Km0Lw==} + engines: {node: '>= 10.0.0'} + + axios@1.6.5: + resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==} + + b4a@1.6.4: + resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-preset-current-node-syntax@1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bcrypt@5.1.1: + resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==} + engines: {node: '>= 10.0.0'} + + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + bson@4.7.2: + resolution: {integrity: sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==} + engines: {node: '>=6.9.0'} + + bson@5.5.1: + resolution: {integrity: sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==} + engines: {node: '>=14.20.1'} + + bson@6.2.0: + resolution: {integrity: sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==} + engines: {node: '>=16.20.1'} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + + buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001579: + resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + + class-transformer@0.5.1: + resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} + + class-validator@0.14.1: + resolution: {integrity: sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-table3@0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + engines: {node: 10.* || >= 12.*} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + 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} + + consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + cookiejar@2.1.4: + resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + + core-js@3.29.1: + resolution: {integrity: sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cpf-cnpj-validator@1.0.3: + resolution: {integrity: sha512-Slh7iv+sf2FhP9xFRMExuaDF7ndERVzmjBZHqwWG+GqHSqPmEggvLuKUUFJZxb+G804rjqRnnu5eCkbeChqM/Q==} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cron@2.4.3: + resolution: {integrity: sha512-YBvExkQYF7w0PxyeFLRyr817YVDhGxaCi5/uRRMqa4aWD3IFKRd+uNbpW1VWMdqQy8PZ7CElc+accXJcauPKzQ==} + + cron@2.4.4: + resolution: {integrity: sha512-MHlPImXJj3K7x7lyUHjtKEOl69CSlTOWxS89jiFgNkzXfvhVjhMz/nc7/EIfN9vgooZp8XTtXJ1FREdmbyXOiQ==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + + dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} + + dotenv@16.4.0: + resolution: {integrity: sha512-WvImr5kpN5NGNn7KaDjJnLTh5rDVLZiDf/YLA8T1ZEZEBZNEDOE+mnkS0PVjPax8ZxBP5zC5SLMB3/9VV5de9g==} + engines: {node: '>=12'} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.4.643: + resolution: {integrity: sha512-QHscvvS7gt155PtoRC0dR2ilhL8E9LHhfTQEq1uD5AL0524rBLAwpAREFH06f87/e45B9XkR6Ki5dbhbCsVEIg==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@8.10.0: + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-prettier@4.2.1: + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@1.1.1: + resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} + engines: {node: '>=0.4.x'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fancy-log@2.0.0: + resolution: {integrity: sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==} + engines: {node: '>=10.13.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true + + fastq@1.16.0: + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-type@3.9.0: + resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} + engines: {node: '>=0.10.0'} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + + fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + + follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + fork-ts-checker-webpack-plugin@8.0.0: + resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + formidable@2.1.2: + resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-minipass@1.2.7: + resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-monkey@1.0.5: + resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + + get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + git-cz@4.9.0: + resolution: {integrity: sha512-cSRL8IIOXU7UFLdbziCYqg8f8InwLwqHezkiRHNSph7oZqGv0togId1kMTfKil6gzK0VaSXeVBb4oDl0fQCHiw==} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + google-protobuf@3.21.2: + resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + + has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + + hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + + html-comment-regex@1.1.2: + resolution: {integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + https-proxy-agent@2.2.4: + resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} + engines: {node: '>= 4.5.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + + human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ieee754@1.1.13: + resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore-by-default@1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + + ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + inquirer@8.2.4: + resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} + engines: {node: '>=12.0.0'} + + inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + engines: {node: '>=12.0.0'} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + + iterare@1.2.1: + resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} + engines: {node: '>=6'} + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-sonar-reporter@2.0.0: + resolution: {integrity: sha512-ZervDCgEX5gdUbdtWsjdipLN3bKJwpxbvhkYNXTAYvAckCihobSLr9OT/IuyNIRT1EZMDDwR6DroWtrq+IL64w==} + engines: {node: '>=8.0.0'} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jmespath@0.16.0: + resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} + engines: {node: '>= 0.6.0'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + + jwa@1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + kareem@2.5.1: + resolution: {integrity: sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==} + engines: {node: '>=12.0.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + libphonenumber-js@1.10.54: + resolution: {integrity: sha512-P+38dUgJsmh0gzoRDoM4F5jLbyfztkU6PY6eSK6S5HwTi/LPvnwXqVCQZlAy1FxZ5c48q25QhxGQ0pq+WQcSlQ==} + + lilconfig@3.0.0: + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@15.2.0: + resolution: {integrity: sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.0.0: + resolution: {integrity: sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==} + engines: {node: '>=18.0.0'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@6.0.0: + resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} + engines: {node: '>=18'} + + logform@2.6.0: + resolution: {integrity: sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==} + engines: {node: '>= 12.0.0'} + + long@4.0.0: + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + + lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + luxon@3.3.0: + resolution: {integrity: sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==} + engines: {node: '>=12'} + + macos-release@2.5.1: + resolution: {integrity: sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==} + engines: {node: '>=6'} + + magic-string@0.30.0: + resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + engines: {node: '>=12'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + memory-pager@1.5.0: + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@2.9.0: + resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@1.3.3: + resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + mongodb-connection-string-url@2.6.0: + resolution: {integrity: sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==} + + mongodb-connection-string-url@3.0.0: + resolution: {integrity: sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==} + + mongodb-memory-server-core@9.1.1: + resolution: {integrity: sha512-5toYR4A7DfV5k+Qf6L9FG86baID2rPP/JYwp8TPrdm8ZzfTfyHTwQwa2BzVpSwmLoVW5gXN0znYmXiE68mImMg==} + engines: {node: '>=14.20.1'} + + mongodb-memory-server@9.1.1: + resolution: {integrity: sha512-ZOHOdb7//sBR2ea1lPHDPRaw8oO2MIfMdF+z82/KnzfNZ6yY6igR48cfG8u+QArKJQFsA392GMMHSevfPWsrRA==} + engines: {node: '>=14.20.1'} + + mongodb@4.17.2: + resolution: {integrity: sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==} + engines: {node: '>=12.9.0'} + + mongodb@5.9.2: + resolution: {integrity: sha512-H60HecKO4Bc+7dhOv4sJlgvenK4fQNqqUIlXxZYQNbfEWSALGAwGoyJd/0Qwk4TttFXUOHJ2ZJQe/52ScaUwtQ==} + 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 + + mongodb@6.3.0: + resolution: {integrity: sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==} + engines: {node: '>=16.20.1'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.188.0 + '@mongodb-js/zstd': ^1.1.0 + gcp-metadata: ^5.2.0 + kerberos: ^2.0.1 + mongodb-client-encryption: '>=6.0.0 <7' + snappy: ^7.2.2 + socks: ^2.7.1 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true + + mongoose@6.12.6: + resolution: {integrity: sha512-VFxDnWj8esgswwplmpQYMT+lYcvuIhl76WDLz/vgp41/FOhBPM/n3GjyztK8R3r2ljsM6kudvKgqLhfcZEih1Q==} + engines: {node: '>=12.0.0'} + + mpath@0.9.0: + resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} + engines: {node: '>=4.0.0'} + + mquery@4.0.3: + resolution: {integrity: sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==} + engines: {node: '>=12.0.0'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + 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-s3@3.0.1: + resolution: {integrity: sha512-BFwSO80a5EW4GJRBdUuSHblz2jhVSAze33ZbnGpcfEicoT0iRolx4kWR+AJV07THFRCQ78g+kelKFdjkCCaXeQ==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@aws-sdk/client-s3': ^3.0.0 + + multer@1.4.4-lts.1: + resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==} + engines: {node: '>= 6.0.0'} + + multer@1.4.5-lts.1: + resolution: {integrity: sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==} + engines: {node: '>= 6.0.0'} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + nest-winston@1.9.4: + resolution: {integrity: sha512-ilEmHuuYSAI6aMNR120fLBl42EdY13QI9WRggHdEizt9M7qZlmXJwpbemVWKW/tqRmULjSx/otKNQ3GMQbfoUQ==} + peerDependencies: + '@nestjs/common': ^5.0.0 || ^6.6.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + winston: ^3.0.0 + + new-find-package-json@2.0.0: + resolution: {integrity: sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew==} + engines: {node: '>=12.22.0'} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-downloader-helper@2.1.9: + resolution: {integrity: sha512-FSvAol2Z8UP191sZtsUZwHIN0eGoGue3uEXGdWIH5228e9KH1YHXT7fN8Oa33UGf+FbqGTQg3sJfrRGzmVCaJA==} + engines: {node: '>=14.18'} + hasBin: true + + node-emoji@1.11.0: + resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} + + node-fetch@2.6.13: + resolution: {integrity: sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + nodemon@2.0.22: + resolution: {integrity: sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==} + engines: {node: '>=8.10.0'} + hasBin: true + + nopt@1.0.10: + resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} + hasBin: true + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-name@4.0.1: + resolution: {integrity: sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==} + engines: {node: '>=10'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + passport-jwt@4.0.1: + resolution: {integrity: sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==} + + passport-strategy@1.0.0: + resolution: {integrity: sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==} + engines: {node: '>= 0.4.0'} + + passport@0.6.0: + resolution: {integrity: sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==} + engines: {node: '>= 0.4.0'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + path-to-regexp@3.2.0: + resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pause@0.0.1: + resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pstree.remy@1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + punycode@1.3.2: + resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + + querystring@0.2.0: + resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + reflect-metadata@0.1.14: + resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + rimraf@4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} + hasBin: true + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.2.1: + resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + seedrandom@3.0.5: + resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.0.0: + resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.2.0: + resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + + sift@16.0.1: + resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + simple-update-notifier@1.1.0: + resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} + engines: {node: '>=8.10.0'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + + sonarqube-scanner@3.3.0: + resolution: {integrity: sha512-G1A6nXT3GwoK5eRwHfFrR/7ThiDfaRefWPIFQ+ifwFOQ/V9OwziLpZBdWZgmZp21kBRnzAMvjcTzgZMqGBXQKA==} + engines: {node: '>= 14'} + hasBin: true + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + sparse-bitfield@3.0.3: + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + streamx@2.15.6: + resolution: {integrity: sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.1.0: + resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} + engines: {node: '>=18'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} - /@aws-sdk/middleware-content-length@3.347.0: - resolution: {integrity: sha512-i4qtWTDImMaDUtwKQPbaZpXsReiwiBomM1cWymCU4bhz81HL01oIxOxOBuiM+3NlDoCSPr3KI6txZSz/8cqXCQ==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - /@aws-sdk/middleware-endpoint@3.226.0: - resolution: {integrity: sha512-EvLFafjtUxTT0AC9p3aBQu1/fjhWdIeK58jIXaNFONfZ3F8QbEYUPuF/SqZvJM6cWfOO9qwYKkRDbCSTYhprIg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/middleware-serde': 3.226.0 - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/signature-v4': 3.226.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/url-parser': 3.226.0 - '@aws-sdk/util-config-provider': 3.208.0 - '@aws-sdk/util-middleware': 3.226.0 - tslib: 2.5.3 - dev: false + superagent@8.1.2: + resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} + engines: {node: '>=6.4.0 <13 || >=14'} - /@aws-sdk/middleware-endpoint@3.347.0: - resolution: {integrity: sha512-unF0c6dMaUL1ffU+37Ugty43DgMnzPWXr/Jup/8GbK5fzzWT5NQq6dj9KHPubMbWeEjQbmczvhv25JuJdK8gNQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/middleware-serde': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - '@aws-sdk/util-middleware': 3.347.0 - tslib: 2.5.3 + supertest@6.3.4: + resolution: {integrity: sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==} + engines: {node: '>=6.4.0'} - /@aws-sdk/middleware-expect-continue@3.226.0: - resolution: {integrity: sha512-YxvQKTV/eA9P8AgW0hXOgj5Qa+TSnNFfyOkfeP089aP3f6p92b1cESf33TEOKsddive2mHT5LRCN6MuPcgWWrA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} - /@aws-sdk/middleware-flexible-checksums@3.226.0: - resolution: {integrity: sha512-8A9Ot9A7794UP5tMGl2MnfTW/UM/jYy1wRWF9YkR/hPIcPb7OmE0hmlwIQGzb/7grxpYw66ETKf0WeH/41YfeQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/crc32': 2.0.0 - '@aws-crypto/crc32c': 2.0.0 - '@aws-sdk/is-array-buffer': 3.201.0 - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} - /@aws-sdk/middleware-host-header@3.226.0: - resolution: {integrity: sha512-haVkWVh6BUPwKgWwkL6sDvTkcZWvJjv8AgC8jiQuSl8GLZdzHTB8Qhi3IsfFta9HAuoLjxheWBE5Z/L0UrfhLA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} - /@aws-sdk/middleware-host-header@3.347.0: - resolution: {integrity: sha512-kpKmR9OvMlnReqp5sKcJkozbj1wmlblbVSbnQAIkzeQj2xD5dnVR3Nn2ogQKxSmU1Fv7dEroBtrruJ1o3fY38A==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} - /@aws-sdk/middleware-location-constraint@3.226.0: - resolution: {integrity: sha512-qHiYaBYPc2R37KxG2uqsUUwh4usrQMHfGkrpTUnx5d4rGzM3mC+muPsTpSHnAL63K2/yJOHQJFjss3GGwV4SSA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + swagger-ui-dist@4.18.2: + resolution: {integrity: sha512-oVBoBl9Dg+VJw8uRWDxlyUyHoNEDC0c1ysT6+Boy6CTgr2rUcLcfPon4RvxgS2/taNW6O0+US+Z/dlAsWFjOAQ==} - /@aws-sdk/middleware-logger@3.226.0: - resolution: {integrity: sha512-m9gtLrrYnpN6yckcQ09rV7ExWOLMuq8mMPF/K3DbL/YL0TuILu9i2T1W+JuxSX+K9FMG2HrLAKivE/kMLr55xA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + swagger-ui-dist@5.11.0: + resolution: {integrity: sha512-j0PIATqQSEFGOLmiJOJZj1X1Jt6bFIur3JpY7+ghliUnfZs0fpWDdHEkn9q7QUlBtKbkn6TepvSxTqnE8l3s0A==} - /@aws-sdk/middleware-logger@3.347.0: - resolution: {integrity: sha512-NYC+Id5UCkVn+3P1t/YtmHt75uED06vwaKyxDy0UmB2K66PZLVtwWbLpVWrhbroaw1bvUHYcRyQ9NIfnVcXQjA==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + swagger-ui-express@5.0.0: + resolution: {integrity: sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==} + engines: {node: '>= v0.10.32'} + peerDependencies: + express: '>=4.0.0 || >=5.0.0-beta' - /@aws-sdk/middleware-recursion-detection@3.226.0: - resolution: {integrity: sha512-mwRbdKEUeuNH5TEkyZ5FWxp6bL2UC1WbY+LDv6YjHxmSMKpAoOueEdtU34PqDOLrpXXxIGHDFmjeGeMfktyEcA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + symbol-observable@4.0.0: + resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} + engines: {node: '>=0.10'} - /@aws-sdk/middleware-recursion-detection@3.347.0: - resolution: {integrity: sha512-qfnSvkFKCAMjMHR31NdsT0gv5Sq/ZHTUD4yQsSLpbVQ6iYAS834lrzXt41iyEHt57Y514uG7F/Xfvude3u4icQ==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} - /@aws-sdk/middleware-retry@3.235.0: - resolution: {integrity: sha512-50WHbJGpD3SNp9763MAlHqIhXil++JdQbKejNpHg7HsJne/ao3ub+fDOfx//mMBjpzBV25BGd5UlfL6blrClSg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/service-error-classification': 3.229.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-middleware': 3.226.0 - '@aws-sdk/util-retry': 3.229.0 - tslib: 2.5.3 - uuid: 8.3.2 - dev: false + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + tar@4.4.19: + resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} + engines: {node: '>=4.5'} + + tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.27.0: + resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + touch@3.1.0: + resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} + hasBin: true + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + + tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + + ts-jest@29.1.2: + resolution: {integrity: sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==} + engines: {node: ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + + ts-loader@9.5.1: + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfig-paths-webpack-plugin@4.0.1: + resolution: {integrity: sha512-m5//KzLoKmqu2MVix+dgLKq70MnFi8YL8sdzQZ6DblmCdfuq/y3OqvJd5vMndg2KEVCOeNz8Es4WVZhYInteLw==} + engines: {node: '>=10.13.0'} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.5.3: + resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + + uid@2.0.2: + resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} + engines: {node: '>=8'} + + undefsafe@2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url@0.10.3: + resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.0.0: + resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.0: + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + + validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + engines: {node: '>= 0.10'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webpack-node-externals@3.0.0: + resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} + engines: {node: '>=6'} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack@5.82.1: + resolution: {integrity: sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true - /@aws-sdk/middleware-retry@3.354.0: - resolution: {integrity: sha512-dnG5Nd/mobbhcWCM71DQWI9+f6b6fDSzALXftFIP/8lsXKRcWDSQuYjrnVST2wZzk/QmdF8TnVD0C1xL14K6CQ==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/service-error-classification': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-middleware': 3.347.0 - '@aws-sdk/util-retry': 3.347.0 - tslib: 2.5.3 - uuid: 8.3.2 - optional: true + webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true - /@aws-sdk/middleware-sdk-s3@3.231.0: - resolution: {integrity: sha512-UGaSvevd2TanfKgStF46dDSHkh4bxOr1gdUkyHm9i+1pF5lx4KdbnBZv/5SKnn7XifhHRXrs1M3lTzemXREhTA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-arn-parser': 3.208.0 - tslib: 2.5.3 - dev: false + whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} - /@aws-sdk/middleware-sdk-sts@3.226.0: - resolution: {integrity: sha512-NN9T/qoSD1kZvAT+VLny3NnlqgylYQcsgV3rvi/8lYzw/G/2s8VS6sm/VTWGGZhx08wZRv20MWzYu3bftcyqUg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/middleware-signing': 3.226.0 - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/signature-v4': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + whatwg-url@13.0.0: + resolution: {integrity: sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==} + engines: {node: '>=16'} - /@aws-sdk/middleware-sdk-sts@3.354.0: - resolution: {integrity: sha512-L6vyAwYrdcOoB4YgCqNJNr+ZZtLHEF2Ym3CTfmFm2srXHqHuRB+mBu0NLV/grz77znIArK1H1ZL/ZaH2I5hclA==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/middleware-signing': 3.354.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - /@aws-sdk/middleware-serde@3.226.0: - resolution: {integrity: sha512-nPuOOAkSfx9TxzdKFx0X2bDlinOxGrqD7iof926K/AEflxGD1DBdcaDdjlYlPDW2CVE8LV/rAgbYuLxh/E/1VA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} - /@aws-sdk/middleware-serde@3.347.0: - resolution: {integrity: sha512-x5Foi7jRbVJXDu9bHfyCbhYDH5pKK+31MmsSJ3k8rY8keXLBxm2XEEg/AIoV9/TUF9EeVvZ7F1/RmMpJnWQsEg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true - /@aws-sdk/middleware-signing@3.226.0: - resolution: {integrity: sha512-E6HmtPcl+IjYDDzi1xI2HpCbBq2avNWcjvCriMZWuTAtRVpnA6XDDGW5GY85IfS3A8G8vuWqEVPr8JcYUcjfew==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/signature-v4': 3.226.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-middleware': 3.226.0 - tslib: 2.5.3 - dev: false + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - /@aws-sdk/middleware-signing@3.354.0: - resolution: {integrity: sha512-Dd+vIhJL0VqqKWqlTKlKC5jkCaEIk73ZEXNfv44XbsI25a0vXbatHp1M8jB/cgkJC/Mri1TX9dmckP/C0FDEwA==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/signature-v4': 3.354.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-middleware': 3.347.0 - tslib: 2.5.3 - optional: true + windows-release@4.0.0: + resolution: {integrity: sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==} + engines: {node: '>=10'} - /@aws-sdk/middleware-ssec@3.226.0: - resolution: {integrity: sha512-DR97oWoLHiMdaUP/wu99HtzG7/ijvCrjZGDH37WBO1rxFtEti6L7T09wgHzwxMN8gtL8FJA7dU8IrffGSC9VmA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + winston-transport@4.6.0: + resolution: {integrity: sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==} + engines: {node: '>= 12.0.0'} - /@aws-sdk/middleware-stack@3.226.0: - resolution: {integrity: sha512-85wF29LvPvpoed60fZGDYLwv1Zpd/cM0C22WSSFPw1SSJeqO4gtFYyCg2squfT3KI6kF43IIkOCJ+L7GtryPug==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.5.3 - dev: false + winston@3.11.0: + resolution: {integrity: sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==} + engines: {node: '>= 12.0.0'} - /@aws-sdk/middleware-stack@3.347.0: - resolution: {integrity: sha512-Izidg4rqtYMcKuvn2UzgEpPLSmyd8ub9+LQ2oIzG3mpIzCBITq7wp40jN1iNkMg+X6KEnX9vdMJIYZsPYMCYuQ==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.5.3 + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} - /@aws-sdk/middleware-user-agent@3.226.0: - resolution: {integrity: sha512-N1WnfzCW1Y5yWhVAphf8OPGTe8Df3vmV7/LdsoQfmpkCZgLZeK2o0xITkUQhRj1mbw7yp8tVFLFV3R2lMurdAQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} - /@aws-sdk/middleware-user-agent@3.352.0: - resolution: {integrity: sha512-QGqblMTsVDqeomy22KPm9LUW8PHZXBA2Hjk9Hcw8U1uFS8IKYJrewInG3ae2+9FAcTyug4LFWDf8CRr9YH2B3Q==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-endpoints': 3.352.0 - tslib: 2.5.3 - optional: true + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /@aws-sdk/node-config-provider@3.226.0: - resolution: {integrity: sha512-B8lQDqiRk7X5izFEUMXmi8CZLOKCTWQJU9HQf3ako+sF0gexo4nHN3jhoRWyLtcgC5S3on/2jxpAcqtm7kuY3w==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/shared-ini-file-loader': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - /@aws-sdk/node-config-provider@3.354.0: - resolution: {integrity: sha512-pF1ZGWWvmwbrloNHYF3EDqCb9hq5wfZwDqAwAPhWkYnUYKkR7E7MZVuTwUDU48io8k6Z5pM52l/54w8e8aedTw==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.354.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} - /@aws-sdk/node-http-handler@3.226.0: - resolution: {integrity: sha512-xQCddnZNMiPmjr3W7HYM+f5ir4VfxgJh37eqZwX6EZmyItFpNNeVzKUgA920ka1VPz/ZUYB+2OFGiX3LCLkkaA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/abort-controller': 3.226.0 - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/querystring-builder': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + xml@1.0.1: + resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} - /@aws-sdk/node-http-handler@3.350.0: - resolution: {integrity: sha512-oD96GAlmpzYilCdC8wwyURM5lNfNHZCjm/kxBkQulHKa2kRbIrnD9GfDqdCkWA5cTpjh1NzGLT4D6e6UFDjt9w==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/abort-controller': 3.347.0 - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/querystring-builder': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} - /@aws-sdk/property-provider@3.226.0: - resolution: {integrity: sha512-TsljjG+Sg0LmdgfiAlWohluWKnxB/k8xenjeozZfzOr5bHmNHtdbWv6BtNvD/R83hw7SFXxbJHlD5H4u9p2NFg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} - /@aws-sdk/property-provider@3.353.0: - resolution: {integrity: sha512-Iu6J59hncaew7eBKroTcLjZ8cgrom0IWyZZ09rsow3rZDHVtw7LQSrUyuqsSbKGY9eRtL7Wa6ZtYHnXFiAE2kg==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} - /@aws-sdk/protocol-http@3.226.0: - resolution: {integrity: sha512-zWkVqiTA9RXL6y0hhfZc9bcU4DX2NI6Hw9IhQmSPeM59mdbPjJlY4bLlMr5YxywqO3yQ/ylNoAfrEzrDjlOSRg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - /@aws-sdk/protocol-http@3.347.0: - resolution: {integrity: sha512-2YdBhc02Wvy03YjhGwUxF0UQgrPWEy8Iq75pfS42N+/0B/+eWX1aQgfjFxIpLg7YSjT5eKtYOQGlYd4MFTgj9g==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /@aws-sdk/querystring-builder@3.226.0: - resolution: {integrity: sha512-LVurypuNeotO4lmirKXRC4NYrZRAyMJXuwO0f2a5ZAUJCjauwYrifKue6yCfU7bls7gut7nfcR6B99WBYpHs3g==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-uri-escape': 3.201.0 - tslib: 2.5.3 - dev: false + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} - /@aws-sdk/querystring-builder@3.347.0: - resolution: {integrity: sha512-phtKTe6FXoV02MoPkIVV6owXI8Mwr5IBN3bPoxhcPvJG2AjEmnetSIrhb8kwc4oNhlwfZwH6Jo5ARW/VEWbZtg==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-uri-escape': 3.310.0 - tslib: 2.5.3 - optional: true + yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} - /@aws-sdk/querystring-parser@3.226.0: - resolution: {integrity: sha512-FzB+VrQ47KAFxiPt2YXrKZ8AOLZQqGTLCKHzx4bjxGmwgsjV8yIbtJiJhZLMcUQV4LtGeIY9ixIqQhGvnZHE4A==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} - /@aws-sdk/querystring-parser@3.347.0: - resolution: {integrity: sha512-5VXOhfZz78T2W7SuXf2avfjKglx1VZgZgp9Zfhrt/Rq+MTu2D+PZc5zmJHhYigD7x83jLSLogpuInQpFMA9LgA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} - /@aws-sdk/service-error-classification@3.229.0: - resolution: {integrity: sha512-dnzWWQ0/NoWMUZ5C0DW3dPm0wC1O76Y/SpKbuJzWPkx1EYy6r8p32Ly4D9vUzrKDbRGf48YHIF2kOkBmu21CLg==} - engines: {node: '>=14.0.0'} - dev: false + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} - /@aws-sdk/service-error-classification@3.347.0: - resolution: {integrity: sha512-xZ3MqSY81Oy2gh5g0fCtooAbahqh9VhsF8vcKjVX8+XPbGC8y+kej82+MsMg4gYL8gRFB9u4hgYbNgIS6JTAvg==} - engines: {node: '>=14.0.0'} - requiresBuild: true - optional: true + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} - /@aws-sdk/shared-ini-file-loader@3.226.0: - resolution: {integrity: sha512-661VQefsARxVyyV2FX9V61V+nNgImk7aN2hYlFKla6BCwZfMng+dEtD0xVGyg1PfRw0qvEv5LQyxMVgHcUSevA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - /@aws-sdk/shared-ini-file-loader@3.354.0: - resolution: {integrity: sha512-UL9loGEsdzpHBu/PtlwUvkl/yRdmWXkySp22jUaeeRtBhiGAnyeYhxJLIt+u+UkX7Mwz+810SaZJqA9ptOXNAg==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} - /@aws-sdk/signature-v4-multi-region@3.226.0: - resolution: {integrity: sha512-QHxNuf9ynK208v7Y3imdsa3Cz8ynYV7ZOf3sBJdItuEtHN6uy/KxaOrtvpF8I5Hyn48Hc8z5miTSMujFKT7GEw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/signature-v4-crt': ^3.118.0 - peerDependenciesMeta: - '@aws-sdk/signature-v4-crt': - optional: true - dependencies: - '@aws-sdk/protocol-http': 3.226.0 - '@aws-sdk/signature-v4': 3.226.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-arn-parser': 3.208.0 - tslib: 2.5.3 - dev: false + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - /@aws-sdk/signature-v4@3.226.0: - resolution: {integrity: sha512-/R5q5agdPd7HJB68XMzpxrNPk158EHUvkFkuRu5Qf3kkkHebEzWEBlWoVpUe6ss4rP9Tqcue6xPuaftEmhjpYw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/is-array-buffer': 3.201.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-hex-encoding': 3.201.0 - '@aws-sdk/util-middleware': 3.226.0 - '@aws-sdk/util-uri-escape': 3.201.0 - tslib: 2.5.3 - dev: false +snapshots: - /@aws-sdk/signature-v4@3.354.0: - resolution: {integrity: sha512-bDp43P5NkwwznpZqmsr78DuyqNcjtS4mriuajb8XPhFNo8DrMXUrdrKJ+5aNABW7YG8uK8PSKBpq88ado692/w==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/eventstream-codec': 3.347.0 - '@aws-sdk/is-array-buffer': 3.310.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-hex-encoding': 3.310.0 - '@aws-sdk/util-middleware': 3.347.0 - '@aws-sdk/util-uri-escape': 3.310.0 - '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.3 - optional: true + '@aashutoshrathi/word-wrap@1.2.6': {} - /@aws-sdk/smithy-client@3.234.0: - resolution: {integrity: sha512-8AtR/k4vsFvjXeQbIzq/Wy7Nbk48Ou0wUEeVYPHWHPSU8QamFWORkOwmKtKMfHAyZvmqiAPeQqHFkq+UJhWyyQ==} - engines: {node: '>=14.0.0'} + '@ampproject/remapping@2.2.1': dependencies: - '@aws-sdk/middleware-stack': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 - /@aws-sdk/smithy-client@3.347.0: - resolution: {integrity: sha512-PaGTDsJLGK0sTjA6YdYQzILRlPRN3uVFyqeBUkfltXssvUzkm8z2t1lz2H4VyJLAhwnG5ZuZTNEV/2mcWrU7JQ==} - engines: {node: '>=14.0.0'} + '@angular-devkit/core@16.0.1(chokidar@3.5.3)': dependencies: - '@aws-sdk/middleware-stack': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + chokidar: 3.5.3 + jsonc-parser: 3.2.0 + rxjs: 7.8.1 + source-map: 0.7.4 - /@aws-sdk/token-providers@3.252.0: - resolution: {integrity: sha512-xi3pUP31tyKF4lJFCOgtkwSWESE9W1vE23Vybsq53wzXEYfnRql8RP+C9FFkUouAR6ixPHEcEYplB+l92CY49g==} - engines: {node: '>=14.0.0'} + '@angular-devkit/schematics-cli@16.0.1(chokidar@3.5.3)': dependencies: - '@aws-sdk/client-sso-oidc': 3.252.0 - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/shared-ini-file-loader': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) + ansi-colors: 4.1.3 + inquirer: 8.2.4 + symbol-observable: 4.0.0 + yargs-parser: 21.1.1 transitivePeerDependencies: - - aws-crt - dev: false + - chokidar - /@aws-sdk/token-providers@3.354.0: - resolution: {integrity: sha512-KcijiySy0oIyafKQagcwgu0fo35mK+2K8pwxRU1WfXqe80Gn1qGceeWcG4iW+t/rUaxa/LVo857N0LcagxCrZA==} - engines: {node: '>=14.0.0'} - requiresBuild: true + '@angular-devkit/schematics@16.0.1(chokidar@3.5.3)': dependencies: - '@aws-sdk/client-sso-oidc': 3.354.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.354.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + jsonc-parser: 3.2.0 + magic-string: 0.30.0 + ora: 5.4.1 + rxjs: 7.8.1 transitivePeerDependencies: - - aws-crt - optional: true + - chokidar - /@aws-sdk/types@3.226.0: - resolution: {integrity: sha512-MmmNHrWeO4man7wpOwrAhXlevqtOV9ZLcH4RhnG5LmRce0RFOApx24HoKENfFCcOyCm5LQBlsXCqi0dZWDWU0A==} - engines: {node: '>=14.0.0'} + '@aws-crypto/crc32@3.0.0': dependencies: - tslib: 2.5.3 - dev: false + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.496.0 + tslib: 1.14.1 - /@aws-sdk/types@3.347.0: - resolution: {integrity: sha512-GkCMy79mdjU9OTIe5KT58fI/6uqdf8UmMdWqVHmFJ+UpEzOci7L/uw4sOXWo7xpPzLs6cJ7s5ouGZW4GRPmHFA==} - engines: {node: '>=14.0.0'} + '@aws-crypto/crc32c@3.0.0': dependencies: - tslib: 2.5.3 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.496.0 + tslib: 1.14.1 - /@aws-sdk/url-parser@3.226.0: - resolution: {integrity: sha512-p5RLE0QWyP0OcTOLmFcLdVgUcUEzmEfmdrnOxyNzomcYb0p3vUagA5zfa1HVK2azsQJFBv28GfvMnba9bGhObg==} + '@aws-crypto/ie11-detection@3.0.0': dependencies: - '@aws-sdk/querystring-parser': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + tslib: 1.14.1 - /@aws-sdk/url-parser@3.347.0: - resolution: {integrity: sha512-lhrnVjxdV7hl+yCnJfDZOaVLSqKjxN20MIOiijRiqaWGLGEAiSqBreMhL89X1WKCifxAs4zZf9YB9SbdziRpAA==} + '@aws-crypto/sha1-browser@3.0.0': dependencies: - '@aws-sdk/querystring-parser': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.496.0 + '@aws-sdk/util-locate-window': 3.495.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 - /@aws-sdk/util-arn-parser@3.208.0: - resolution: {integrity: sha512-QV4af+kscova9dv4VuHOgH8wEr/IIYHDGcnyVtkUEqahCejWr1Kuk+SBK0xMwnZY5LSycOtQ8aeqHOn9qOjZtA==} - engines: {node: '>=14.0.0'} + '@aws-crypto/sha256-browser@3.0.0': dependencies: - tslib: 2.5.3 - dev: false + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.496.0 + '@aws-sdk/util-locate-window': 3.495.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 - /@aws-sdk/util-base64@3.208.0: - resolution: {integrity: sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==} - engines: {node: '>=14.0.0'} + '@aws-crypto/sha256-js@3.0.0': dependencies: - '@aws-sdk/util-buffer-from': 3.208.0 - tslib: 2.5.3 - dev: false + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.496.0 + tslib: 1.14.1 - /@aws-sdk/util-base64@3.310.0: - resolution: {integrity: sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==} - engines: {node: '>=14.0.0'} - requiresBuild: true + '@aws-crypto/supports-web-crypto@3.0.0': dependencies: - '@aws-sdk/util-buffer-from': 3.310.0 - tslib: 2.5.3 - optional: true + tslib: 1.14.1 - /@aws-sdk/util-body-length-browser@3.188.0: - resolution: {integrity: sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==} + '@aws-crypto/util@3.0.0': dependencies: - tslib: 2.5.3 - dev: false + '@aws-sdk/types': 3.496.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 - /@aws-sdk/util-body-length-browser@3.310.0: - resolution: {integrity: sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==} - requiresBuild: true + '@aws-sdk/client-cognito-identity@3.498.0': dependencies: - tslib: 2.5.3 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.496.0 + '@aws-sdk/core': 3.496.0 + '@aws-sdk/credential-provider-node': 3.496.0 + '@aws-sdk/middleware-host-header': 3.496.0 + '@aws-sdk/middleware-logger': 3.496.0 + '@aws-sdk/middleware-recursion-detection': 3.496.0 + '@aws-sdk/middleware-signing': 3.496.0 + '@aws-sdk/middleware-user-agent': 3.496.0 + '@aws-sdk/region-config-resolver': 3.496.0 + '@aws-sdk/types': 3.496.0 + '@aws-sdk/util-endpoints': 3.496.0 + '@aws-sdk/util-user-agent-browser': 3.496.0 + '@aws-sdk/util-user-agent-node': 3.496.0 + '@smithy/config-resolver': 2.1.1 + '@smithy/core': 1.3.1 + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/hash-node': 2.1.1 + '@smithy/invalid-dependency': 2.1.1 + '@smithy/middleware-content-length': 2.1.1 + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-retry': 2.1.1 + '@smithy/middleware-serde': 2.1.1 + '@smithy/middleware-stack': 2.1.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.1 + '@smithy/util-defaults-mode-node': 2.1.1 + '@smithy/util-endpoints': 1.1.1 + '@smithy/util-retry': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt optional: true - /@aws-sdk/util-body-length-node@3.208.0: - resolution: {integrity: sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.5.3 - dev: false - - /@aws-sdk/util-body-length-node@3.310.0: - resolution: {integrity: sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==} - engines: {node: '>=14.0.0'} - requiresBuild: true + '@aws-sdk/client-s3@3.498.0': dependencies: - tslib: 2.5.3 - optional: true + '@aws-crypto/sha1-browser': 3.0.0 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.496.0 + '@aws-sdk/core': 3.496.0 + '@aws-sdk/credential-provider-node': 3.496.0 + '@aws-sdk/middleware-bucket-endpoint': 3.496.0 + '@aws-sdk/middleware-expect-continue': 3.496.0 + '@aws-sdk/middleware-flexible-checksums': 3.496.0 + '@aws-sdk/middleware-host-header': 3.496.0 + '@aws-sdk/middleware-location-constraint': 3.496.0 + '@aws-sdk/middleware-logger': 3.496.0 + '@aws-sdk/middleware-recursion-detection': 3.496.0 + '@aws-sdk/middleware-sdk-s3': 3.496.0 + '@aws-sdk/middleware-signing': 3.496.0 + '@aws-sdk/middleware-ssec': 3.498.0 + '@aws-sdk/middleware-user-agent': 3.496.0 + '@aws-sdk/region-config-resolver': 3.496.0 + '@aws-sdk/signature-v4-multi-region': 3.496.0 + '@aws-sdk/types': 3.496.0 + '@aws-sdk/util-endpoints': 3.496.0 + '@aws-sdk/util-user-agent-browser': 3.496.0 + '@aws-sdk/util-user-agent-node': 3.496.0 + '@aws-sdk/xml-builder': 3.496.0 + '@smithy/config-resolver': 2.1.1 + '@smithy/core': 1.3.1 + '@smithy/eventstream-serde-browser': 2.1.1 + '@smithy/eventstream-serde-config-resolver': 2.1.1 + '@smithy/eventstream-serde-node': 2.1.1 + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/hash-blob-browser': 2.1.1 + '@smithy/hash-node': 2.1.1 + '@smithy/hash-stream-node': 2.1.1 + '@smithy/invalid-dependency': 2.1.1 + '@smithy/md5-js': 2.1.1 + '@smithy/middleware-content-length': 2.1.1 + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-retry': 2.1.1 + '@smithy/middleware-serde': 2.1.1 + '@smithy/middleware-stack': 2.1.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.1 + '@smithy/util-defaults-mode-node': 2.1.1 + '@smithy/util-endpoints': 1.1.1 + '@smithy/util-retry': 2.1.1 + '@smithy/util-stream': 2.1.1 + '@smithy/util-utf8': 2.1.1 + '@smithy/util-waiter': 2.1.1 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt - /@aws-sdk/util-buffer-from@3.208.0: - resolution: {integrity: sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-sso@3.496.0': dependencies: - '@aws-sdk/is-array-buffer': 3.201.0 - tslib: 2.5.3 - dev: false + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.496.0 + '@aws-sdk/middleware-host-header': 3.496.0 + '@aws-sdk/middleware-logger': 3.496.0 + '@aws-sdk/middleware-recursion-detection': 3.496.0 + '@aws-sdk/middleware-user-agent': 3.496.0 + '@aws-sdk/region-config-resolver': 3.496.0 + '@aws-sdk/types': 3.496.0 + '@aws-sdk/util-endpoints': 3.496.0 + '@aws-sdk/util-user-agent-browser': 3.496.0 + '@aws-sdk/util-user-agent-node': 3.496.0 + '@smithy/config-resolver': 2.1.1 + '@smithy/core': 1.3.1 + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/hash-node': 2.1.1 + '@smithy/invalid-dependency': 2.1.1 + '@smithy/middleware-content-length': 2.1.1 + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-retry': 2.1.1 + '@smithy/middleware-serde': 2.1.1 + '@smithy/middleware-stack': 2.1.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.1 + '@smithy/util-defaults-mode-node': 2.1.1 + '@smithy/util-endpoints': 1.1.1 + '@smithy/util-retry': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt - /@aws-sdk/util-buffer-from@3.310.0: - resolution: {integrity: sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==} - engines: {node: '>=14.0.0'} - requiresBuild: true + '@aws-sdk/client-sts@3.496.0': dependencies: - '@aws-sdk/is-array-buffer': 3.310.0 - tslib: 2.5.3 - optional: true + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.496.0 + '@aws-sdk/credential-provider-node': 3.496.0 + '@aws-sdk/middleware-host-header': 3.496.0 + '@aws-sdk/middleware-logger': 3.496.0 + '@aws-sdk/middleware-recursion-detection': 3.496.0 + '@aws-sdk/middleware-user-agent': 3.496.0 + '@aws-sdk/region-config-resolver': 3.496.0 + '@aws-sdk/types': 3.496.0 + '@aws-sdk/util-endpoints': 3.496.0 + '@aws-sdk/util-user-agent-browser': 3.496.0 + '@aws-sdk/util-user-agent-node': 3.496.0 + '@smithy/config-resolver': 2.1.1 + '@smithy/core': 1.3.1 + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/hash-node': 2.1.1 + '@smithy/invalid-dependency': 2.1.1 + '@smithy/middleware-content-length': 2.1.1 + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-retry': 2.1.1 + '@smithy/middleware-serde': 2.1.1 + '@smithy/middleware-stack': 2.1.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.1 + '@smithy/util-defaults-mode-node': 2.1.1 + '@smithy/util-endpoints': 1.1.1 + '@smithy/util-middleware': 2.1.1 + '@smithy/util-retry': 2.1.1 + '@smithy/util-utf8': 2.1.1 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt - /@aws-sdk/util-config-provider@3.208.0: - resolution: {integrity: sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/core@3.496.0': dependencies: - tslib: 2.5.3 - dev: false + '@smithy/core': 1.3.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/signature-v4': 2.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-config-provider@3.310.0: - resolution: {integrity: sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==} - engines: {node: '>=14.0.0'} - requiresBuild: true + '@aws-sdk/credential-provider-cognito-identity@3.498.0': dependencies: - tslib: 2.5.3 + '@aws-sdk/client-cognito-identity': 3.498.0 + '@aws-sdk/types': 3.496.0 + '@smithy/property-provider': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt optional: true - /@aws-sdk/util-defaults-mode-browser@3.234.0: - resolution: {integrity: sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw==} - engines: {node: '>= 10.0.0'} + '@aws-sdk/credential-provider-env@3.496.0': dependencies: - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/types': 3.226.0 - bowser: 2.11.0 - tslib: 2.5.3 - dev: false + '@aws-sdk/types': 3.496.0 + '@smithy/property-provider': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-defaults-mode-browser@3.353.0: - resolution: {integrity: sha512-ushvOQKJIH7S6E//xMDPyf2/Bbu0K2A0GJRB88qQV6VKRBo4PEbeHTb6BbzPhYVX0IbY3uR/X7+Xwk4FeEkMWg==} - engines: {node: '>= 10.0.0'} - requiresBuild: true + '@aws-sdk/credential-provider-http@3.496.0': dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - bowser: 2.11.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.496.0 + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/property-provider': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/util-stream': 2.1.1 + tslib: 2.6.2 optional: true - /@aws-sdk/util-defaults-mode-node@3.234.0: - resolution: {integrity: sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w==} - engines: {node: '>= 10.0.0'} + '@aws-sdk/credential-provider-ini@3.496.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.496.0 + '@aws-sdk/credential-provider-process': 3.496.0 + '@aws-sdk/credential-provider-sso': 3.496.0 + '@aws-sdk/credential-provider-web-identity': 3.496.0 + '@aws-sdk/types': 3.496.0 + '@smithy/credential-provider-imds': 2.2.1 + '@smithy/property-provider': 2.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.496.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.496.0 + '@aws-sdk/credential-provider-ini': 3.496.0 + '@aws-sdk/credential-provider-process': 3.496.0 + '@aws-sdk/credential-provider-sso': 3.496.0 + '@aws-sdk/credential-provider-web-identity': 3.496.0 + '@aws-sdk/types': 3.496.0 + '@smithy/credential-provider-imds': 2.2.1 + '@smithy/property-provider': 2.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.496.0': dependencies: - '@aws-sdk/config-resolver': 3.234.0 - '@aws-sdk/credential-provider-imds': 3.226.0 - '@aws-sdk/node-config-provider': 3.226.0 - '@aws-sdk/property-provider': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + '@aws-sdk/types': 3.496.0 + '@smithy/property-provider': 2.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-defaults-mode-node@3.354.0: - resolution: {integrity: sha512-CaaRVBdOYX4wZadj+CDUxpO+4RjyYJcSv71A60jV6CZ/ya1+oYfmPbG5QZ4AlV6crdev2B+aUoR2LPIYqn/GnQ==} - engines: {node: '>= 10.0.0'} - requiresBuild: true + '@aws-sdk/credential-provider-sso@3.496.0': dependencies: - '@aws-sdk/config-resolver': 3.354.0 - '@aws-sdk/credential-provider-imds': 3.354.0 - '@aws-sdk/node-config-provider': 3.354.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/client-sso': 3.496.0 + '@aws-sdk/token-providers': 3.496.0 + '@aws-sdk/types': 3.496.0 + '@smithy/property-provider': 2.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.496.0': + dependencies: + '@aws-sdk/types': 3.496.0 + '@smithy/property-provider': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@aws-sdk/credential-providers@3.498.0': + dependencies: + '@aws-sdk/client-cognito-identity': 3.498.0 + '@aws-sdk/client-sso': 3.496.0 + '@aws-sdk/client-sts': 3.496.0 + '@aws-sdk/credential-provider-cognito-identity': 3.498.0 + '@aws-sdk/credential-provider-env': 3.496.0 + '@aws-sdk/credential-provider-http': 3.496.0 + '@aws-sdk/credential-provider-ini': 3.496.0 + '@aws-sdk/credential-provider-node': 3.496.0 + '@aws-sdk/credential-provider-process': 3.496.0 + '@aws-sdk/credential-provider-sso': 3.496.0 + '@aws-sdk/credential-provider-web-identity': 3.496.0 + '@aws-sdk/types': 3.496.0 + '@smithy/credential-provider-imds': 2.2.1 + '@smithy/property-provider': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt optional: true - /@aws-sdk/util-endpoints@3.245.0: - resolution: {integrity: sha512-UNOFquB1tKx+8RT8n82Zb5tIwDyZHVPBg/m0LB0RsLETjr6krien5ASpqWezsXKIR1hftN9uaxN4bvf2dZrWHg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/lib-storage@3.498.0(@aws-sdk/client-s3@3.498.0)': dependencies: - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + '@aws-sdk/client-s3': 3.498.0 + '@smithy/abort-controller': 2.1.1 + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/smithy-client': 2.3.1 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 + tslib: 2.6.2 - /@aws-sdk/util-endpoints@3.352.0: - resolution: {integrity: sha512-PjWMPdoIUWfBPgAWLyOrWFbdSS/3DJtc0OmFb/JrE8C8rKFYl+VGW5f1p0cVdRWiDR0xCGr0s67p8itAakVqjw==} - engines: {node: '>=14.0.0'} - requiresBuild: true + '@aws-sdk/middleware-bucket-endpoint@3.496.0': dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + '@aws-sdk/types': 3.496.0 + '@aws-sdk/util-arn-parser': 3.495.0 + '@smithy/node-config-provider': 2.2.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + '@smithy/util-config-provider': 2.2.1 + tslib: 2.6.2 - /@aws-sdk/util-hex-encoding@3.201.0: - resolution: {integrity: sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-expect-continue@3.496.0': dependencies: - tslib: 2.5.3 - dev: false + '@aws-sdk/types': 3.496.0 + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-hex-encoding@3.310.0: - resolution: {integrity: sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==} - engines: {node: '>=14.0.0'} - requiresBuild: true + '@aws-sdk/middleware-flexible-checksums@3.496.0': dependencies: - tslib: 2.5.3 - optional: true + '@aws-crypto/crc32': 3.0.0 + '@aws-crypto/crc32c': 3.0.0 + '@aws-sdk/types': 3.496.0 + '@smithy/is-array-buffer': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 - /@aws-sdk/util-locate-window@3.310.0: - resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-host-header@3.496.0': dependencies: - tslib: 2.5.3 + '@aws-sdk/types': 3.496.0 + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-middleware@3.226.0: - resolution: {integrity: sha512-B96CQnwX4gRvQdaQkdUtqvDPkrptV5+va6FVeJOocU/DbSYMAScLxtR3peMS8cnlOT6nL1Eoa42OI9AfZz1VwQ==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-location-constraint@3.496.0': dependencies: - tslib: 2.5.3 - dev: false + '@aws-sdk/types': 3.496.0 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-middleware@3.347.0: - resolution: {integrity: sha512-8owqUA3ePufeYTUvlzdJ7Z0miLorTwx+rNol5lourGQZ9JXsVMo23+yGA7nOlFuXSGkoKpMOtn6S0BT2bcfeiw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-logger@3.496.0': dependencies: - tslib: 2.5.3 + '@aws-sdk/types': 3.496.0 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-retry@3.229.0: - resolution: {integrity: sha512-0zKTqi0P1inD0LzIMuXRIYYQ/8c1lWMg/cfiqUcIAF1TpatlpZuN7umU0ierpBFud7S+zDgg0oemh+Nj8xliJw==} - engines: {node: '>= 14.0.0'} + '@aws-sdk/middleware-recursion-detection@3.496.0': dependencies: - '@aws-sdk/service-error-classification': 3.229.0 - tslib: 2.5.3 - dev: false + '@aws-sdk/types': 3.496.0 + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-retry@3.347.0: - resolution: {integrity: sha512-NxnQA0/FHFxriQAeEgBonA43Q9/VPFQa8cfJDuT2A1YZruMasgjcltoZszi1dvoIRWSZsFTW42eY2gdOd0nffQ==} - engines: {node: '>= 14.0.0'} - requiresBuild: true + '@aws-sdk/middleware-sdk-s3@3.496.0': dependencies: - '@aws-sdk/service-error-classification': 3.347.0 - tslib: 2.5.3 - optional: true + '@aws-sdk/types': 3.496.0 + '@aws-sdk/util-arn-parser': 3.495.0 + '@smithy/node-config-provider': 2.2.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/signature-v4': 2.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/util-config-provider': 2.2.1 + tslib: 2.6.2 - /@aws-sdk/util-stream-browser@3.226.0: - resolution: {integrity: sha512-ZvjlA1ySaLd0DqUWTKmL7LsxfPhroAONpzsinaHmw9aZVL40s2cADU9eWgBdHTuAOeFklL7NP0cc6UiTFHKe8g==} + '@aws-sdk/middleware-signing@3.496.0': dependencies: - '@aws-sdk/fetch-http-handler': 3.226.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-base64': 3.208.0 - '@aws-sdk/util-hex-encoding': 3.201.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - tslib: 2.5.3 - dev: false + '@aws-sdk/types': 3.496.0 + '@smithy/property-provider': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/signature-v4': 2.1.1 + '@smithy/types': 2.9.1 + '@smithy/util-middleware': 2.1.1 + tslib: 2.6.2 - /@aws-sdk/util-stream-node@3.226.0: - resolution: {integrity: sha512-HADXiIgDGoXcCLSKuPnjCLENf0iC0lzqqnymZu9H2FoACZhJB7DvJ9LnP51Pvw9lfCu+yvLzbMqSPdbXtMbRWg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-ssec@3.498.0': dependencies: - '@aws-sdk/node-http-handler': 3.226.0 - '@aws-sdk/types': 3.226.0 - '@aws-sdk/util-buffer-from': 3.208.0 - tslib: 2.5.3 - dev: false + '@aws-sdk/types': 3.496.0 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-uri-escape@3.201.0: - resolution: {integrity: sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-user-agent@3.496.0': dependencies: - tslib: 2.5.3 - dev: false + '@aws-sdk/types': 3.496.0 + '@aws-sdk/util-endpoints': 3.496.0 + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-uri-escape@3.310.0: - resolution: {integrity: sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==} - engines: {node: '>=14.0.0'} - requiresBuild: true + '@aws-sdk/region-config-resolver@3.496.0': dependencies: - tslib: 2.5.3 - optional: true + '@aws-sdk/types': 3.496.0 + '@smithy/node-config-provider': 2.2.1 + '@smithy/types': 2.9.1 + '@smithy/util-config-provider': 2.2.1 + '@smithy/util-middleware': 2.1.1 + tslib: 2.6.2 - /@aws-sdk/util-user-agent-browser@3.226.0: - resolution: {integrity: sha512-PhBIu2h6sPJPcv2I7ELfFizdl5pNiL4LfxrasMCYXQkJvVnoXztHA1x+CQbXIdtZOIlpjC+6BjDcE0uhnpvfcA==} + '@aws-sdk/signature-v4-multi-region@3.496.0': dependencies: - '@aws-sdk/types': 3.226.0 - bowser: 2.11.0 - tslib: 2.5.3 - dev: false + '@aws-sdk/middleware-sdk-s3': 3.496.0 + '@aws-sdk/types': 3.496.0 + '@smithy/protocol-http': 3.1.1 + '@smithy/signature-v4': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-user-agent-browser@3.347.0: - resolution: {integrity: sha512-ydxtsKVtQefgbk1Dku1q7pMkjDYThauG9/8mQkZUAVik55OUZw71Zzr3XO8J8RKvQG8lmhPXuAQ0FKAyycc0RA==} - requiresBuild: true + '@aws-sdk/token-providers@3.496.0': dependencies: - '@aws-sdk/types': 3.347.0 - bowser: 2.11.0 - tslib: 2.5.3 - optional: true + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.496.0 + '@aws-sdk/middleware-logger': 3.496.0 + '@aws-sdk/middleware-recursion-detection': 3.496.0 + '@aws-sdk/middleware-user-agent': 3.496.0 + '@aws-sdk/region-config-resolver': 3.496.0 + '@aws-sdk/types': 3.496.0 + '@aws-sdk/util-endpoints': 3.496.0 + '@aws-sdk/util-user-agent-browser': 3.496.0 + '@aws-sdk/util-user-agent-node': 3.496.0 + '@smithy/config-resolver': 2.1.1 + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/hash-node': 2.1.1 + '@smithy/invalid-dependency': 2.1.1 + '@smithy/middleware-content-length': 2.1.1 + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-retry': 2.1.1 + '@smithy/middleware-serde': 2.1.1 + '@smithy/middleware-stack': 2.1.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/property-provider': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.1 + '@smithy/util-defaults-mode-node': 2.1.1 + '@smithy/util-endpoints': 1.1.1 + '@smithy/util-retry': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt - /@aws-sdk/util-user-agent-node@3.226.0: - resolution: {integrity: sha512-othPc5Dz/pkYkxH+nZPhc1Al0HndQT8zHD4e9h+EZ+8lkd8n+IsnLfTS/mSJWrfiC6UlNRVw55cItstmJyMe/A==} - engines: {node: '>=14.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true + '@aws-sdk/types@3.496.0': dependencies: - '@aws-sdk/node-config-provider': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-user-agent-node@3.354.0: - resolution: {integrity: sha512-2xkblZS3PGxxh//0lgCwJw2gvh9ZBcI9H9xv05YP7hcwlz9BmkAlbei2i6Uew6agJMLO4unfgWoBTpzp3WLaKg==} - engines: {node: '>=14.0.0'} - requiresBuild: true - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true + '@aws-sdk/util-arn-parser@3.495.0': dependencies: - '@aws-sdk/node-config-provider': 3.354.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - optional: true + tslib: 2.6.2 - /@aws-sdk/util-utf8-browser@3.188.0: - resolution: {integrity: sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==} + '@aws-sdk/util-endpoints@3.496.0': dependencies: - tslib: 2.5.3 - dev: false + '@aws-sdk/types': 3.496.0 + '@smithy/types': 2.9.1 + '@smithy/util-endpoints': 1.1.1 + tslib: 2.6.2 - /@aws-sdk/util-utf8-browser@3.259.0: - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - requiresBuild: true + '@aws-sdk/util-locate-window@3.495.0': dependencies: - tslib: 2.5.3 - optional: true + tslib: 2.6.2 - /@aws-sdk/util-utf8-node@3.208.0: - resolution: {integrity: sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==} - engines: {node: '>=14.0.0'} + '@aws-sdk/util-user-agent-browser@3.496.0': dependencies: - '@aws-sdk/util-buffer-from': 3.208.0 - tslib: 2.5.3 - dev: false + '@aws-sdk/types': 3.496.0 + '@smithy/types': 2.9.1 + bowser: 2.11.0 + tslib: 2.6.2 - /@aws-sdk/util-utf8@3.310.0: - resolution: {integrity: sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==} - engines: {node: '>=14.0.0'} - requiresBuild: true + '@aws-sdk/util-user-agent-node@3.496.0': dependencies: - '@aws-sdk/util-buffer-from': 3.310.0 - tslib: 2.5.3 - optional: true + '@aws-sdk/types': 3.496.0 + '@smithy/node-config-provider': 2.2.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@aws-sdk/util-waiter@3.226.0: - resolution: {integrity: sha512-qYQMRxnu5k8qQihJXoIWMkBOj0+XkHHj/drLdbRnwL6ni6NcG8++cs9M3DSjIcxmxgF/7SLpDjn1H3sC7cYo4g==} - engines: {node: '>=14.0.0'} + '@aws-sdk/util-utf8-browser@3.259.0': dependencies: - '@aws-sdk/abort-controller': 3.226.0 - '@aws-sdk/types': 3.226.0 - tslib: 2.5.3 - dev: false + tslib: 2.6.2 - /@aws-sdk/xml-builder@3.201.0: - resolution: {integrity: sha512-brRdB1wwMgjWEnOQsv7zSUhIQuh7DEicrfslAqHop4S4FtSI3GQAShpQqgOpMTNFYcpaWKmE/Y1MJmNY7xLCnw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/xml-builder@3.496.0': dependencies: - tslib: 2.5.3 - dev: false + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@babel/code-frame@7.22.5: - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} - engines: {node: '>=6.9.0'} + '@babel/code-frame@7.23.5': dependencies: - '@babel/highlight': 7.22.5 - dev: true + '@babel/highlight': 7.23.4 + chalk: 2.4.2 - /@babel/compat-data@7.22.5: - resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/compat-data@7.23.5': {} - /@babel/core@7.22.5: - resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} - engines: {node: '>=6.9.0'} + '@babel/core@7.23.7': dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-module-transforms': 7.22.5 - '@babel/helpers': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - convert-source-map: 1.9.0 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helpers': 7.23.8 + '@babel/parser': 7.23.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.7 + '@babel/types': 7.23.6 + convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/generator@7.22.5: - resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} - engines: {node: '>=6.9.0'} + '@babel/generator@7.23.6': dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.6 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.22 jsesc: 2.5.2 - dev: true - /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-compilation-targets@7.23.6': dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 lru-cache: 5.1.1 - semver: 6.3.0 - dev: true + semver: 6.3.1 - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-environment-visitor@7.22.20': {} - /@babel/helper-function-name@7.22.5: - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-function-name@7.23.0': dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 - dev: true + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} + '@babel/helper-hoist-variables@7.22.5': dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.23.6 - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} - engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.22.15': dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.23.6 - /@babel/helper-module-transforms@7.22.5: - resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} - engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7)': dependencies: - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/core': 7.23.7 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-plugin-utils@7.22.5': {} - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} + '@babel/helper-simple-access@7.22.5': dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.23.6 - /@babel/helper-split-export-declaration@7.22.5: - resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.22.6': dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.23.6 - /@babel/helper-string-parser@7.22.5: - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-string-parser@7.23.4': {} - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-validator-identifier@7.22.20': {} - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-validator-option@7.23.5': {} - /@babel/helpers@7.22.5: - resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} - engines: {node: '>=6.9.0'} + '@babel/helpers@7.23.8': dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.7 + '@babel/types': 7.23.6 transitivePeerDependencies: - supports-color - dev: true - /@babel/highlight@7.22.5: - resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} - engines: {node: '>=6.9.0'} + '@babel/highlight@7.23.4': dependencies: - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true - /@babel/parser@7.22.5: - resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} - engines: {node: '>=6.0.0'} - hasBin: true + '@babel/parser@7.23.6': dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.23.6 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7)': dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} - engines: {node: '>=6.9.0'} + '@babel/template@7.22.15': dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 - dev: true + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 - /@babel/traverse@7.22.5: - resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} - engines: {node: '>=6.9.0'} + '@babel/traverse@7.23.7': dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - /@babel/types@7.22.5: - resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} - engines: {node: '>=6.9.0'} + '@babel/types@7.23.6': dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - dev: true - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true + '@bcoe/v8-coverage@0.2.3': {} - /@colors/colors@1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - requiresBuild: true - dev: true + '@colors/colors@1.5.0': optional: true - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} + '@colors/colors@1.6.0': {} + + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true - /@eslint/eslintrc@1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@dabh/diagnostics@2.0.3': + dependencies: + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + + '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)': + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.10.0': {} + + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.5.2 - globals: 13.20.0 - ignore: 5.2.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.0 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true - /@hapi/address@4.1.0: - resolution: {integrity: sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ==} - deprecated: Moved to 'npm install @sideway/address' + '@eslint/js@8.56.0': {} + + '@hapi/address@4.1.0': dependencies: '@hapi/hoek': 9.3.0 - dev: false - /@hapi/formula@2.0.0: - resolution: {integrity: sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==} - deprecated: Moved to 'npm install @sideway/formula' - dev: false + '@hapi/formula@2.0.0': {} - /@hapi/hoek@9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - dev: false + '@hapi/hoek@9.3.0': {} - /@hapi/joi@17.1.1: - resolution: {integrity: sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg==} - deprecated: Switch to 'npm install joi' + '@hapi/joi@17.1.1': dependencies: '@hapi/address': 4.1.0 '@hapi/formula': 2.0.0 '@hapi/hoek': 9.3.0 '@hapi/pinpoint': 2.0.1 '@hapi/topo': 5.1.0 - dev: false - /@hapi/pinpoint@2.0.1: - resolution: {integrity: sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==} - dev: false + '@hapi/pinpoint@2.0.1': {} - /@hapi/topo@5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@hapi/topo@5.1.0': dependencies: '@hapi/hoek': 9.3.0 - dev: false - /@humanwhocodes/config-array@0.6.0: - resolution: {integrity: sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==} - engines: {node: '>=10.10.0'} + '@humanwhocodes/config-array@0.11.14': dependencies: - '@humanwhocodes/object-schema': 1.2.1 + '@humanwhocodes/object-schema': 2.0.2 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true + '@humanwhocodes/module-importer@1.0.1': {} - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + '@humanwhocodes/object-schema@2.0.2': {} + + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 js-yaml: 3.14.1 resolve-from: 5.0.0 - dev: true - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true + '@istanbuljs/schema@0.1.3': {} - /@jest/console@29.5.0: - resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/console@29.7.0': dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.11.18 + '@jest/types': 29.6.3 + '@types/node': 20.11.5 chalk: 4.1.2 - jest-message-util: 29.5.0 - jest-util: 29.5.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 - dev: true - /@jest/core@29.5.0(ts-node@10.0.0): - resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@jest/core@29.7.0(ts-node@10.9.2)': dependencies: - '@jest/console': 29.5.0 - '@jest/reporters': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.11.18 + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.5 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 - jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@18.11.18)(ts-node@10.0.0) - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.11.5)(ts-node@10.9.2) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 micromatch: 4.0.5 - pretty-format: 29.5.0 + pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: + - babel-plugin-macros - supports-color - ts-node - dev: true - /@jest/environment@29.5.0: - resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/environment@29.7.0': dependencies: - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.11.18 - jest-mock: 29.5.0 - dev: true + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.5 + jest-mock: 29.7.0 - /@jest/expect-utils@29.5.0: - resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@29.7.0': dependencies: - jest-get-type: 29.4.3 - dev: true + jest-get-type: 29.6.3 - /@jest/expect@29.5.0: - resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect@29.7.0': dependencies: - expect: 29.5.0 - jest-snapshot: 29.5.0 + expect: 29.7.0 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/fake-timers@29.5.0: - resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@29.7.0': dependencies: - '@jest/types': 29.5.0 + '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 18.11.18 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true - - /@jest/globals@29.5.0: - resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@types/node': 20.11.5 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': dependencies: - '@jest/environment': 29.5.0 - '@jest/expect': 29.5.0 - '@jest/types': 29.5.0 - jest-mock: 29.5.0 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/reporters@29.5.0: - resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@jest/reporters@29.7.0': dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 18.11.18 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.22 + '@types/node': 20.11.5 chalk: 4.1.2 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.1 + istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - jest-worker: 29.5.0 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 - v8-to-istanbul: 9.1.0 + v8-to-istanbul: 9.2.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/schemas@29.4.3: - resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/schemas@29.6.3': dependencies: - '@sinclair/typebox': 0.25.24 - dev: true + '@sinclair/typebox': 0.27.8 - /@jest/source-map@29.4.3: - resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/source-map@29.6.3': dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.22 callsites: 3.1.0 graceful-fs: 4.2.11 - dev: true - /@jest/test-result@29.5.0: - resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-result@29.7.0': dependencies: - '@jest/console': 29.5.0 - '@jest/types': 29.5.0 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: true + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 - /@jest/test-sequencer@29.5.0: - resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-sequencer@29.7.0': dependencies: - '@jest/test-result': 29.5.0 + '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 + jest-haste-map: 29.7.0 slash: 3.0.0 - dev: true - /@jest/transform@29.5.0: - resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.22.5 - '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 + '@babel/core': 7.23.7 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.22 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 micromatch: 4.0.5 pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color - dev: true - /@jest/types@29.5.0: - resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@29.6.3': dependencies: - '@jest/schemas': 29.4.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.18 - '@types/yargs': 17.0.24 + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.11.5 + '@types/yargs': 17.0.32 chalk: 4.1.2 - dev: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.3': dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - dev: true + '@jridgewell/trace-mapping': 0.3.22 - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - dev: true + '@jridgewell/resolve-uri@3.1.1': {} - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true + '@jridgewell/set-array@1.1.2': {} - /@jridgewell/source-map@0.3.3: - resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} + '@jridgewell/source-map@0.3.5': dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - dev: true + '@jridgewell/trace-mapping': 0.3.22 - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true + '@jridgewell/sourcemap-codec@1.4.15': {} - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + '@jridgewell/trace-mapping@0.3.22': dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@mapbox/node-pre-gyp@1.0.10: - resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} - hasBin: true + '@lukeed/csprng@1.1.0': {} + + '@mapbox/node-pre-gyp@1.0.11': dependencies: - detect-libc: 2.0.1 + detect-libc: 2.0.2 https-proxy-agent: 5.0.1 make-dir: 3.1.0 - node-fetch: 2.6.11 + node-fetch: 2.7.0 nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.5.2 - tar: 6.1.15 + semver: 7.5.4 + tar: 6.2.0 transitivePeerDependencies: - encoding - supports-color - dev: false - /@mapbox/node-pre-gyp@1.0.9: - resolution: {integrity: sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==} - hasBin: true + '@mapbox/node-pre-gyp@1.0.9': dependencies: - detect-libc: 2.0.1 + detect-libc: 2.0.2 https-proxy-agent: 5.0.1 make-dir: 3.1.0 - node-fetch: 2.6.11 + node-fetch: 2.7.0 nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.5.2 - tar: 6.1.15 + semver: 7.5.4 + tar: 6.2.0 transitivePeerDependencies: - encoding - supports-color - dev: false - /@nestjs/cli@9.0.0: - resolution: {integrity: sha512-xT5uOoIEcaB/Fn6UeF7atfKqKiEEsTeRKPiM55p+e5H9WVw8FC2r4ceZgaINJbsw0QWskVj/ZQadMo6dA6hXxw==} - engines: {node: '>= 12.9.0'} - hasBin: true + '@mongodb-js/saslprep@1.1.4': + dependencies: + sparse-bitfield: 3.0.3 + + '@nestjs/cli@9.5.0': dependencies: - '@angular-devkit/core': 14.0.5(chokidar@3.5.3) - '@angular-devkit/schematics': 14.0.5(chokidar@3.5.3) - '@angular-devkit/schematics-cli': 14.0.5(chokidar@3.5.3) - '@nestjs/schematics': 9.0.0(chokidar@3.5.3)(typescript@4.7.4) - chalk: 3.0.0 + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics-cli': 16.0.1(chokidar@3.5.3) + '@nestjs/schematics': 9.2.0(chokidar@3.5.3)(typescript@4.9.5) + chalk: 4.1.2 chokidar: 3.5.3 - cli-table3: 0.6.2 + cli-table3: 0.6.3 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 7.2.11(typescript@4.7.4)(webpack@5.73.0) - inquirer: 7.3.3 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@4.9.5)(webpack@5.82.1) + inquirer: 8.2.5 node-emoji: 1.11.0 ora: 5.4.1 os-name: 4.0.1 - rimraf: 3.0.2 + rimraf: 4.4.1 shelljs: 0.8.5 source-map-support: 0.5.21 tree-kill: 1.2.2 - tsconfig-paths: 3.14.1 - tsconfig-paths-webpack-plugin: 3.5.2 - typescript: 4.7.4 - webpack: 5.73.0 + tsconfig-paths: 4.2.0 + tsconfig-paths-webpack-plugin: 4.0.1 + typescript: 4.9.5 + webpack: 5.82.1 webpack-node-externals: 3.0.0 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - - vue-template-compiler - - webpack-cli - dev: true - - /@nestjs/common@9.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.2.0): - resolution: {integrity: sha512-dyAd48ux/eFYj1uEnQAisSVWq54ttEfeHJBDljvAc6hXbBNHTzZfq/fUH6DmlK29WdGXNMVabCjfduwX2EPquQ==} - peerDependencies: - cache-manager: '*' - class-transformer: '*' - class-validator: '*' - reflect-metadata: ^0.1.12 - rxjs: ^7.1.0 - peerDependenciesMeta: - cache-manager: - optional: true - class-transformer: - optional: true - class-validator: - optional: true + - webpack-cli + + '@nestjs/common@9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1)': dependencies: class-transformer: 0.5.1 - class-validator: 0.14.0 + class-validator: 0.14.1 iterare: 1.2.1 - reflect-metadata: 0.1.13 - rxjs: 7.2.0 - tslib: 2.4.0 - uuid: 8.3.2 + reflect-metadata: 0.1.14 + rxjs: 7.8.1 + tslib: 2.5.3 + uid: 2.0.2 - /@nestjs/core@9.0.0(@nestjs/common@9.0.0)(@nestjs/platform-express@9.0.0)(reflect-metadata@0.1.13)(rxjs@7.2.0): - resolution: {integrity: sha512-Ib25JrYQf5ICro19FBytoMpMQicanC4HG3goPBSqsolu+AhVzSU0OhDwmmiDy3aHgmheFnNEEdUH+Gh5Rm2cNw==} - requiresBuild: true - peerDependencies: - '@nestjs/common': ^9.0.0 - '@nestjs/microservices': ^9.0.0 - '@nestjs/platform-express': ^9.0.0 - '@nestjs/websockets': ^9.0.0 - reflect-metadata: ^0.1.12 - rxjs: ^7.1.0 - peerDependenciesMeta: - '@nestjs/microservices': - optional: true - '@nestjs/platform-express': - optional: true - '@nestjs/websockets': - optional: true + '@nestjs/config@3.1.1(@nestjs/common@9.4.3)(reflect-metadata@0.1.14)': + dependencies: + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + dotenv: 16.3.1 + dotenv-expand: 10.0.0 + lodash: 4.17.21 + reflect-metadata: 0.1.14 + uuid: 9.0.0 + + '@nestjs/core@9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1)': dependencies: - '@nestjs/common': 9.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/platform-express': 9.0.0(@nestjs/common@9.0.0)(@nestjs/core@9.0.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/platform-express': 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 iterare: 1.2.1 - object-hash: 3.0.0 path-to-regexp: 3.2.0 - reflect-metadata: 0.1.13 - rxjs: 7.2.0 - tslib: 2.4.0 - uuid: 8.3.2 + reflect-metadata: 0.1.14 + rxjs: 7.8.1 + tslib: 2.5.3 + uid: 2.0.2 transitivePeerDependencies: - encoding - /@nestjs/jwt@10.0.3(@nestjs/common@9.0.0): - resolution: {integrity: sha512-WO8MI3uEMOFKpbO+SAg6l4aRCr+9KvaL+raFMZaXuEUDphXek6pqdox+4tex9242pNSJUA0trfAMaiy/yVrXQg==} - peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 + '@nestjs/jwt@10.2.0(@nestjs/common@9.4.3)': dependencies: - '@nestjs/common': 9.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@types/jsonwebtoken': 9.0.1 - jsonwebtoken: 9.0.0 - dev: false + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@types/jsonwebtoken': 9.0.5 + jsonwebtoken: 9.0.2 - /@nestjs/mapped-types@1.2.2(@nestjs/common@9.0.0)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13): - resolution: {integrity: sha512-3dHxLXs3M0GPiriAcCFFJQHoDFUuzTD5w6JDhE7TyfT89YKpe6tcCCIqOZWdXmt9AZjjK30RkHRSFF+QEnWFQg==} - peerDependencies: - '@nestjs/common': ^7.0.8 || ^8.0.0 || ^9.0.0 - class-transformer: ^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0 - class-validator: ^0.11.1 || ^0.12.0 || ^0.13.0 || ^0.14.0 - reflect-metadata: ^0.1.12 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true + '@nestjs/mapped-types@1.2.2(@nestjs/common@9.4.3)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)': dependencies: - '@nestjs/common': 9.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) class-transformer: 0.5.1 - class-validator: 0.14.0 - reflect-metadata: 0.1.13 - dev: false + class-validator: 0.14.1 + reflect-metadata: 0.1.14 - /@nestjs/mongoose@9.2.1(@nestjs/common@9.0.0)(@nestjs/core@9.0.0)(mongoose@6.8.2)(reflect-metadata@0.1.13)(rxjs@7.2.0): - resolution: {integrity: sha512-tMK5kKFjQnNVhqJDw1wa352z+VsODOFznTn74xSzrziof03qS+O6rLU4q1kMx0B4AmFbADf03GOdpvBc9bMWqw==} - peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 - '@nestjs/core': ^8.0.0 || ^9.0.0 - mongoose: ^6.0.2 - reflect-metadata: ^0.1.12 - rxjs: ^7.0.0 + '@nestjs/mongoose@9.2.2(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(mongoose@6.12.6)(reflect-metadata@0.1.14)(rxjs@7.8.1)': dependencies: - '@nestjs/common': 9.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 9.0.0(@nestjs/common@9.0.0)(@nestjs/platform-express@9.0.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - mongoose: 6.8.2 - reflect-metadata: 0.1.13 - rxjs: 7.2.0 - dev: false + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) + mongoose: 6.12.6 + reflect-metadata: 0.1.14 + rxjs: 7.8.1 - /@nestjs/passport@9.0.3(@nestjs/common@9.0.0)(passport@0.6.0): - resolution: {integrity: sha512-HplSJaimEAz1IOZEu+pdJHHJhQyBOPAYWXYHfAPQvRqWtw4FJF1VXl1Qtk9dcXQX1eKytDtH+qBzNQc19GWNEg==} - peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 - passport: ^0.4.0 || ^0.5.0 || ^0.6.0 + '@nestjs/passport@9.0.3(@nestjs/common@9.4.3)(passport@0.6.0)': dependencies: - '@nestjs/common': 9.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) passport: 0.6.0 - dev: false - /@nestjs/platform-express@9.0.0(@nestjs/common@9.0.0)(@nestjs/core@9.0.0): - resolution: {integrity: sha512-5W5KeYHKKQe4/H7DcPViIObC9nO74P8wnLZUpk4HCUUuFZIzPpUu9v+RAg7c/jGrbdyjfg3VKODCUKFo6PBfmg==} - peerDependencies: - '@nestjs/common': ^9.0.0 - '@nestjs/core': ^9.0.0 + '@nestjs/platform-express@9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)': dependencies: - '@nestjs/common': 9.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 9.0.0(@nestjs/common@9.0.0)(@nestjs/platform-express@9.0.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - body-parser: 1.20.0 + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) + body-parser: 1.20.2 cors: 2.8.5 - express: 4.18.1 + express: 4.18.2 multer: 1.4.4-lts.1 - tslib: 2.4.0 + tslib: 2.5.3 transitivePeerDependencies: - supports-color - /@nestjs/schedule@3.0.2(@nestjs/common@9.0.0)(@nestjs/core@9.0.0)(reflect-metadata@0.1.13): - resolution: {integrity: sha512-INhpzkyquosLbVrXx4v+rfAnomwBTgKQvs7e9BZ2LSZdWQOqCQD2PmvWDiu8c4wdJIH6wcWQh98w5KxIcKuVBA==} - peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 - reflect-metadata: ^0.1.12 + '@nestjs/schedule@3.0.4(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(reflect-metadata@0.1.14)': dependencies: - '@nestjs/common': 9.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 9.0.0(@nestjs/common@9.0.0)(@nestjs/platform-express@9.0.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - cron: 2.4.0 - reflect-metadata: 0.1.13 - uuid: 9.0.0 - dev: false + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) + cron: 2.4.3 + reflect-metadata: 0.1.14 + uuid: 9.0.1 - /@nestjs/schematics@9.0.0(chokidar@3.5.3)(typescript@4.7.4): - resolution: {integrity: sha512-l4AReqX597iKyAXVN9WsrLQ1NDY0G15s7x8dHpwM0+3MOFoEKZMvqeiFrfVMqbwuMiTvXTuLcoMdlKuz7qtrDg==} - peerDependencies: - typescript: ^4.3.5 + '@nestjs/schematics@9.2.0(chokidar@3.5.3)(typescript@4.9.5)': dependencies: - '@angular-devkit/core': 14.0.5(chokidar@3.5.3) - '@angular-devkit/schematics': 14.0.5(chokidar@3.5.3) - fs-extra: 10.1.0 - jsonc-parser: 3.0.0 + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) + jsonc-parser: 3.2.0 pluralize: 8.0.0 - typescript: 4.7.4 + typescript: 4.9.5 transitivePeerDependencies: - chokidar - dev: true - /@nestjs/swagger@6.3.0(@nestjs/common@9.0.0)(@nestjs/core@9.0.0)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13): - resolution: {integrity: sha512-Gnig189oa1tD+h0BYIfUwhp/wvvmTn6iO3csR2E4rQrDTgCxSxZDlNdfZo3AC+Rmf8u0KX4ZAX1RZN1qXTtC7A==} - peerDependencies: - '@fastify/static': ^6.0.0 - '@nestjs/common': ^9.0.0 - '@nestjs/core': ^9.0.0 - class-transformer: '*' - class-validator: '*' - reflect-metadata: ^0.1.12 - peerDependenciesMeta: - '@fastify/static': - optional: true - class-transformer: - optional: true - class-validator: - optional: true + '@nestjs/schematics@9.2.0(typescript@5.3.3)': + dependencies: + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) + jsonc-parser: 3.2.0 + pluralize: 8.0.0 + typescript: 5.3.3 + transitivePeerDependencies: + - chokidar + + '@nestjs/swagger@6.3.0(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)': dependencies: - '@nestjs/common': 9.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 9.0.0(@nestjs/common@9.0.0)(@nestjs/platform-express@9.0.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/mapped-types': 1.2.2(@nestjs/common@9.0.0)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/mapped-types': 1.2.2(@nestjs/common@9.4.3)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14) class-transformer: 0.5.1 - class-validator: 0.14.0 + class-validator: 0.14.1 js-yaml: 4.1.0 lodash: 4.17.21 path-to-regexp: 3.2.0 - reflect-metadata: 0.1.13 + reflect-metadata: 0.1.14 swagger-ui-dist: 4.18.2 - dev: false - /@nestjs/testing@9.0.0(@nestjs/common@9.0.0)(@nestjs/core@9.0.0)(@nestjs/platform-express@9.0.0): - resolution: {integrity: sha512-lBBzZvJWaYutYC1wOEKf4KOis/wxudBX0pVLZxzHmtbkeC2EQgQCbyKA88m1R9QeYTt9CmVMg4eyb+WeOADZiQ==} - peerDependencies: - '@nestjs/common': ^9.0.0 - '@nestjs/core': ^9.0.0 - '@nestjs/microservices': ^9.0.0 - '@nestjs/platform-express': ^9.0.0 - peerDependenciesMeta: - '@nestjs/microservices': - optional: true - '@nestjs/platform-express': - optional: true + '@nestjs/testing@9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/platform-express@9.4.3)': dependencies: - '@nestjs/common': 9.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 9.0.0(@nestjs/common@9.0.0)(@nestjs/platform-express@9.0.0)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/platform-express': 9.0.0(@nestjs/common@9.0.0)(@nestjs/core@9.0.0) - tslib: 2.4.0 - dev: true + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/platform-express': 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + tslib: 2.5.3 - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true + '@nodelib/fs.stat@2.0.5': {} - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true + fastq: 1.16.0 - /@nuxtjs/opencollective@0.3.2: - resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} - engines: {node: '>=8.0.0', npm: '>=5.0.0'} - hasBin: true + '@nuxtjs/opencollective@0.3.2': dependencies: chalk: 4.1.2 consola: 2.15.3 - node-fetch: 2.6.11 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding - /@shelf/jest-mongodb@4.1.7(jest-environment-node@29.5.0)(mongodb@5.6.0): - resolution: {integrity: sha512-1sQXHmEirGL+apuOGEt6dkySsgq5SmIGj7uKWYZ6VWch7kg7imCn4CrbfHgotRoiS6QRRIIVBfMdpv7g3XoEMg==} - engines: {node: '>=16'} - peerDependencies: - jest-environment-node: 27.x.x || 28.x || 29.x - mongodb: 3.x.x || 4.x || 5.x + '@shelf/jest-mongodb@4.2.0(jest-environment-node@29.7.0)(mongodb@6.3.0)': dependencies: debug: 4.3.4 - jest-environment-node: 29.5.0 - mongodb: 5.6.0 - mongodb-memory-server: 8.11.5 + jest-environment-node: 29.7.0 + mongodb: 6.3.0 + mongodb-memory-server: 9.1.1 transitivePeerDependencies: - - aws-crt + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - kerberos + - mongodb-client-encryption + - snappy - supports-color - dev: true - /@sinclair/typebox@0.25.24: - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} - dev: true + '@sinclair/typebox@0.27.8': {} - /@sinonjs/commons@3.0.0: - resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 - dev: true - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@sinonjs/fake-timers@10.3.0': dependencies: - '@sinonjs/commons': 3.0.0 - dev: true + '@sinonjs/commons': 3.0.1 - /@smithy/protocol-http@1.1.0: - resolution: {integrity: sha512-H5y/kZOqfJSqRkwtcAoVbqONmhdXwSgYNJ1Glk5Ry8qlhVVy5qUzD9EklaCH8/XLnoCsLO/F/Giee8MIvaBRkg==} - engines: {node: '>=14.0.0'} - requiresBuild: true + '@smithy/abort-controller@2.1.1': dependencies: - '@smithy/types': 1.1.0 - tslib: 2.5.3 - optional: true + '@smithy/types': 2.9.1 + tslib: 2.6.2 - /@smithy/types@1.1.0: - resolution: {integrity: sha512-KzmvisMmuwD2jZXuC9e65JrgsZM97y5NpDU7g347oB+Q+xQLU6hQZ5zFNNbEfwwOJHoOvEVTna+dk1h/lW7alw==} - engines: {node: '>=14.0.0'} - requiresBuild: true + '@smithy/chunked-blob-reader-native@2.1.1': dependencies: - tslib: 2.5.3 - optional: true + '@smithy/util-base64': 2.1.1 + tslib: 2.6.2 - /@tensorflow/tfjs-backend-cpu@4.11.0(@tensorflow/tfjs-core@4.11.0): - resolution: {integrity: sha512-2zmGX9MuR8AwscSGOybz4fBOFgQDnj+ZCWGkLxDzbKecy9GxuilukT46xB2zU0kSq7Mf3ncfE/9eUEy6a7ZDqQ==} - engines: {yarn: '>= 1.3.2'} - peerDependencies: - '@tensorflow/tfjs-core': 4.11.0 + '@smithy/chunked-blob-reader@2.1.1': + dependencies: + tslib: 2.6.2 + + '@smithy/config-resolver@2.1.1': + dependencies: + '@smithy/node-config-provider': 2.2.1 + '@smithy/types': 2.9.1 + '@smithy/util-config-provider': 2.2.1 + '@smithy/util-middleware': 2.1.1 + tslib: 2.6.2 + + '@smithy/core@1.3.1': + dependencies: + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-retry': 2.1.1 + '@smithy/middleware-serde': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/util-middleware': 2.1.1 + tslib: 2.6.2 + + '@smithy/credential-provider-imds@2.2.1': + dependencies: + '@smithy/node-config-provider': 2.2.1 + '@smithy/property-provider': 2.1.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + tslib: 2.6.2 + + '@smithy/eventstream-codec@2.1.1': + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 2.9.1 + '@smithy/util-hex-encoding': 2.1.1 + tslib: 2.6.2 + + '@smithy/eventstream-serde-browser@2.1.1': + dependencies: + '@smithy/eventstream-serde-universal': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/eventstream-serde-config-resolver@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/eventstream-serde-node@2.1.1': + dependencies: + '@smithy/eventstream-serde-universal': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/eventstream-serde-universal@2.1.1': + dependencies: + '@smithy/eventstream-codec': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/fetch-http-handler@2.4.1': + dependencies: + '@smithy/protocol-http': 3.1.1 + '@smithy/querystring-builder': 2.1.1 + '@smithy/types': 2.9.1 + '@smithy/util-base64': 2.1.1 + tslib: 2.6.2 + + '@smithy/hash-blob-browser@2.1.1': + dependencies: + '@smithy/chunked-blob-reader': 2.1.1 + '@smithy/chunked-blob-reader-native': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/hash-node@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + '@smithy/util-buffer-from': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + + '@smithy/hash-stream-node@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + + '@smithy/invalid-dependency@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/is-array-buffer@2.1.1': + dependencies: + tslib: 2.6.2 + + '@smithy/md5-js@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + + '@smithy/middleware-content-length@2.1.1': + dependencies: + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/middleware-endpoint@2.4.1': + dependencies: + '@smithy/middleware-serde': 2.1.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + '@smithy/util-middleware': 2.1.1 + tslib: 2.6.2 + + '@smithy/middleware-retry@2.1.1': + dependencies: + '@smithy/node-config-provider': 2.2.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/service-error-classification': 2.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/util-middleware': 2.1.1 + '@smithy/util-retry': 2.1.1 + tslib: 2.6.2 + uuid: 8.3.2 + + '@smithy/middleware-serde@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/middleware-stack@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/node-config-provider@2.2.1': + dependencies: + '@smithy/property-provider': 2.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/node-http-handler@2.3.1': + dependencies: + '@smithy/abort-controller': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/querystring-builder': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/property-provider@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/protocol-http@3.1.1': + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/querystring-builder@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + '@smithy/util-uri-escape': 2.1.1 + tslib: 2.6.2 + + '@smithy/querystring-parser@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/service-error-classification@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + + '@smithy/shared-ini-file-loader@2.3.1': + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/signature-v4@2.1.1': + dependencies: + '@smithy/eventstream-codec': 2.1.1 + '@smithy/is-array-buffer': 2.1.1 + '@smithy/types': 2.9.1 + '@smithy/util-hex-encoding': 2.1.1 + '@smithy/util-middleware': 2.1.1 + '@smithy/util-uri-escape': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + + '@smithy/smithy-client@2.3.1': + dependencies: + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-stack': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + '@smithy/util-stream': 2.1.1 + tslib: 2.6.2 + + '@smithy/types@2.9.1': + dependencies: + tslib: 2.6.2 + + '@smithy/url-parser@2.1.1': + dependencies: + '@smithy/querystring-parser': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/util-base64@2.1.1': + dependencies: + '@smithy/util-buffer-from': 2.1.1 + tslib: 2.6.2 + + '@smithy/util-body-length-browser@2.1.1': + dependencies: + tslib: 2.6.2 + + '@smithy/util-body-length-node@2.2.1': + dependencies: + tslib: 2.6.2 + + '@smithy/util-buffer-from@2.1.1': + dependencies: + '@smithy/is-array-buffer': 2.1.1 + tslib: 2.6.2 + + '@smithy/util-config-provider@2.2.1': + dependencies: + tslib: 2.6.2 + + '@smithy/util-defaults-mode-browser@2.1.1': dependencies: - '@tensorflow/tfjs-core': 4.11.0 - '@types/seedrandom': 2.4.31 + '@smithy/property-provider': 2.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + bowser: 2.11.0 + tslib: 2.6.2 + + '@smithy/util-defaults-mode-node@2.1.1': + dependencies: + '@smithy/config-resolver': 2.1.1 + '@smithy/credential-provider-imds': 2.2.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/property-provider': 2.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/util-endpoints@1.1.1': + dependencies: + '@smithy/node-config-provider': 2.2.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/util-hex-encoding@2.1.1': + dependencies: + tslib: 2.6.2 + + '@smithy/util-middleware@2.1.1': + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/util-retry@2.1.1': + dependencies: + '@smithy/service-error-classification': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@smithy/util-stream@2.1.1': + dependencies: + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-buffer-from': 2.1.1 + '@smithy/util-hex-encoding': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + + '@smithy/util-uri-escape@2.1.1': + dependencies: + tslib: 2.6.2 + + '@smithy/util-utf8@2.1.1': + dependencies: + '@smithy/util-buffer-from': 2.1.1 + tslib: 2.6.2 + + '@smithy/util-waiter@2.1.1': + dependencies: + '@smithy/abort-controller': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + + '@tensorflow/tfjs-backend-cpu@4.16.0(@tensorflow/tfjs-core@4.16.0)': + dependencies: + '@tensorflow/tfjs-core': 4.16.0 + '@types/seedrandom': 2.4.34 seedrandom: 3.0.5 - dev: false - /@tensorflow/tfjs-backend-webgl@4.11.0(@tensorflow/tfjs-core@4.11.0): - resolution: {integrity: sha512-sM/B65u+1T3U+Ctiq1fn5j6VmiLEZW7BpuSa3ZXDXtIS07MoZ2FTuO8BMudxEY4xGpTyoOzqTOGT9BaGO3qrWg==} - engines: {yarn: '>= 1.3.2'} - peerDependencies: - '@tensorflow/tfjs-core': 4.11.0 + '@tensorflow/tfjs-backend-webgl@4.16.0(@tensorflow/tfjs-core@4.16.0)': dependencies: - '@tensorflow/tfjs-backend-cpu': 4.11.0(@tensorflow/tfjs-core@4.11.0) - '@tensorflow/tfjs-core': 4.11.0 + '@tensorflow/tfjs-backend-cpu': 4.16.0(@tensorflow/tfjs-core@4.16.0) + '@tensorflow/tfjs-core': 4.16.0 '@types/offscreencanvas': 2019.3.0 - '@types/seedrandom': 2.4.31 + '@types/seedrandom': 2.4.34 seedrandom: 3.0.5 - dev: false - /@tensorflow/tfjs-converter@4.11.0(@tensorflow/tfjs-core@4.11.0): - resolution: {integrity: sha512-j2JEVwkqh+pyin+sxUiNUG7QOIU2S0+5SzN8LFXHlR90/bPvC2qiaaSPYdGG/BYidFc27QCHD3obBXrb1EE/ow==} - peerDependencies: - '@tensorflow/tfjs-core': 4.11.0 + '@tensorflow/tfjs-converter@4.16.0(@tensorflow/tfjs-core@4.16.0)': dependencies: - '@tensorflow/tfjs-core': 4.11.0 - dev: false + '@tensorflow/tfjs-core': 4.16.0 - /@tensorflow/tfjs-core@4.11.0: - resolution: {integrity: sha512-t0mCNIco8wg6aZdHWT1d6ZuKtbbdY5y871ELWLSUA1+grXDvvaroHYh5eeJexJYXeg+EQ0/hzB0G8nLsLjlyVQ==} - engines: {yarn: '>= 1.3.2'} + '@tensorflow/tfjs-core@4.16.0': dependencies: '@types/long': 4.0.2 - '@types/offscreencanvas': 2019.7.1 - '@types/seedrandom': 2.4.31 - '@webgpu/types': 0.1.30 + '@types/offscreencanvas': 2019.7.3 + '@types/seedrandom': 2.4.34 + '@webgpu/types': 0.1.38 long: 4.0.0 - node-fetch: 2.6.11 + node-fetch: 2.6.13 seedrandom: 3.0.5 transitivePeerDependencies: - encoding - dev: false - /@tensorflow/tfjs-data@4.11.0(@tensorflow/tfjs-core@4.11.0)(seedrandom@3.0.5): - resolution: {integrity: sha512-8E6CVpd7kxRFtVL7kvz6WF5jH18pNN2wEcm2yA87xq37JwcRsIPTkrmfyqCHlJZmiWn3RQbP59Sl05gbBnFo5w==} - peerDependencies: - '@tensorflow/tfjs-core': 4.11.0 - seedrandom: ^3.0.5 + '@tensorflow/tfjs-data@4.16.0(@tensorflow/tfjs-core@4.16.0)(seedrandom@3.0.5)': dependencies: - '@tensorflow/tfjs-core': 4.11.0 - '@types/node-fetch': 2.6.6 - node-fetch: 2.6.11 + '@tensorflow/tfjs-core': 4.16.0 + '@types/node-fetch': 2.6.11 + node-fetch: 2.6.13 seedrandom: 3.0.5 string_decoder: 1.3.0 transitivePeerDependencies: - encoding - dev: false - /@tensorflow/tfjs-layers@4.11.0(@tensorflow/tfjs-core@4.11.0): - resolution: {integrity: sha512-ErVqwxjpu2YM3uJRj2o5GbBTYViUwnqOb0wKWuCVukVmGeWrUzf1X00Ky3dP4xfilfAvq+B26dg7QN4YNHeaKg==} - peerDependencies: - '@tensorflow/tfjs-core': 4.11.0 + '@tensorflow/tfjs-layers@4.16.0(@tensorflow/tfjs-core@4.16.0)': dependencies: - '@tensorflow/tfjs-core': 4.11.0 - dev: false + '@tensorflow/tfjs-core': 4.16.0 - /@tensorflow/tfjs-node@4.11.0(seedrandom@3.0.5): - resolution: {integrity: sha512-dKMabHsyXEjVM9hSPITa9s7+SA7mqIRCN3ITbOoiVQ4JVlpSg2sffORWOQaRbYISP7F+l6RFiw0EB7t5vCXPzg==} - engines: {node: '>=8.11.0'} - requiresBuild: true + '@tensorflow/tfjs-node@4.16.0(seedrandom@3.0.5)': dependencies: '@mapbox/node-pre-gyp': 1.0.9 - '@tensorflow/tfjs': 4.11.0(seedrandom@3.0.5) + '@tensorflow/tfjs': 4.16.0(seedrandom@3.0.5) adm-zip: 0.5.10 google-protobuf: 3.21.2 https-proxy-agent: 2.2.4 @@ -3160,18 +5964,15 @@ packages: - encoding - seedrandom - supports-color - dev: false - /@tensorflow/tfjs@4.11.0(seedrandom@3.0.5): - resolution: {integrity: sha512-s6Vbz3IvMz2zNbH8/VptpRXzkwVjmuzT48esYLXJxMKtTcob4m5Srdxo7B+eJSDrWYkutXruiivaWmihFmu5rA==} - hasBin: true + '@tensorflow/tfjs@4.16.0(seedrandom@3.0.5)': dependencies: - '@tensorflow/tfjs-backend-cpu': 4.11.0(@tensorflow/tfjs-core@4.11.0) - '@tensorflow/tfjs-backend-webgl': 4.11.0(@tensorflow/tfjs-core@4.11.0) - '@tensorflow/tfjs-converter': 4.11.0(@tensorflow/tfjs-core@4.11.0) - '@tensorflow/tfjs-core': 4.11.0 - '@tensorflow/tfjs-data': 4.11.0(@tensorflow/tfjs-core@4.11.0)(seedrandom@3.0.5) - '@tensorflow/tfjs-layers': 4.11.0(@tensorflow/tfjs-core@4.11.0) + '@tensorflow/tfjs-backend-cpu': 4.16.0(@tensorflow/tfjs-core@4.16.0) + '@tensorflow/tfjs-backend-webgl': 4.16.0(@tensorflow/tfjs-core@4.16.0) + '@tensorflow/tfjs-converter': 4.16.0(@tensorflow/tfjs-core@4.16.0) + '@tensorflow/tfjs-core': 4.16.0 + '@tensorflow/tfjs-data': 4.16.0(@tensorflow/tfjs-core@4.16.0)(seedrandom@3.0.5) + '@tensorflow/tfjs-layers': 4.16.0(@tensorflow/tfjs-core@4.16.0) argparse: 1.0.10 chalk: 4.1.2 core-js: 3.29.1 @@ -3180,533 +5981,324 @@ packages: transitivePeerDependencies: - encoding - seedrandom - dev: false - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true + '@tsconfig/node10@1.0.9': {} - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true + '@tsconfig/node12@1.0.11': {} - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true + '@tsconfig/node14@1.0.3': {} - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: true + '@tsconfig/node16@1.0.4': {} - /@types/aws-sdk@2.7.0: - resolution: {integrity: sha512-bF6brnwPN9+kheqdKCpinMgCkj+sJIUEj+0v0LPug9OQwL5/1jy+kiJwl+Nkw4Kh+7oaL1phhC4gMz6Oq60jMg==} - deprecated: This is a stub types definition for aws-sdk (https://github.com/aws/aws-sdk-js). aws-sdk provides its own type definitions, so you don't need @types/aws-sdk installed! + '@types/aws-sdk@2.7.0': dependencies: - aws-sdk: 2.1296.0 - dev: true + aws-sdk: 2.1542.0 - /@types/babel__core@7.20.1: - resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} + '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.20.1 - dev: true + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.23.6 - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 - dev: true + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 - /@types/babel__traverse@7.20.1: - resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + '@types/babel__traverse@7.20.5': dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.23.6 - /@types/bcrypt@5.0.0: - resolution: {integrity: sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==} + '@types/bcrypt@5.0.2': dependencies: - '@types/node': 18.11.18 - dev: true + '@types/node': 20.11.5 - /@types/body-parser@1.19.2: - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + '@types/body-parser@1.19.5': dependencies: - '@types/connect': 3.4.35 - '@types/node': 18.11.18 - dev: true + '@types/connect': 3.4.38 + '@types/node': 20.11.5 - /@types/connect@3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + '@types/connect@3.4.38': dependencies: - '@types/node': 18.11.18 - dev: true + '@types/node': 20.11.5 - /@types/cookiejar@2.1.2: - resolution: {integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==} - dev: true + '@types/cookiejar@2.1.5': {} - /@types/cors@2.8.13: - resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} + '@types/cors@2.8.17': dependencies: - '@types/node': 18.11.18 - dev: false + '@types/node': 20.11.5 - /@types/cron@2.4.0: - resolution: {integrity: sha512-5bBaAkqvSFBX8JMi/xCofNzG5E594TNsApMz68dLd/sQYz/HGQqgcxGHTRjOvD4G3Y+YF1Oo3S7QdCvKt1KAJQ==} - deprecated: This is a stub types definition. cron provides its own type definitions, so you do not need this installed. + '@types/cron@2.4.0': dependencies: - cron: 2.4.1 - dev: true + cron: 2.4.4 - /@types/eslint-scope@3.7.4: - resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} + '@types/eslint-scope@3.7.7': dependencies: - '@types/eslint': 8.40.2 - '@types/estree': 0.0.51 - dev: true + '@types/eslint': 8.56.2 + '@types/estree': 1.0.5 - /@types/eslint@8.40.2: - resolution: {integrity: sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==} + '@types/eslint@8.56.2': dependencies: - '@types/estree': 0.0.51 - '@types/json-schema': 7.0.12 - dev: true + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 - /@types/estree@0.0.51: - resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - dev: true + '@types/estree@1.0.5': {} - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - dev: true - - /@types/express-serve-static-core@4.17.35: - resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} + '@types/express-serve-static-core@4.17.41': dependencies: - '@types/node': 18.11.18 - '@types/qs': 6.9.7 - '@types/range-parser': 1.2.4 - '@types/send': 0.17.1 - dev: true + '@types/node': 20.11.5 + '@types/qs': 6.9.11 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 - /@types/express@4.17.13: - resolution: {integrity: sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==} + '@types/express@4.17.21': dependencies: - '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.35 - '@types/qs': 6.9.7 - '@types/serve-static': 1.15.1 - dev: true + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.41 + '@types/qs': 6.9.11 + '@types/serve-static': 1.15.5 - /@types/graceful-fs@4.1.6: - resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 18.11.18 - dev: true + '@types/node': 20.11.5 - /@types/istanbul-lib-coverage@2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true + '@types/http-errors@2.0.4': {} - /@types/istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - dev: true + '@types/istanbul-lib-coverage@2.0.6': {} - /@types/istanbul-reports@3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + '@types/istanbul-lib-report@3.0.3': dependencies: - '@types/istanbul-lib-report': 3.0.0 - dev: true + '@types/istanbul-lib-coverage': 2.0.6 - /@types/jest@29.2.4: - resolution: {integrity: sha512-PipFB04k2qTRPePduVLTRiPzQfvMeLwUN3Z21hsAKaB/W9IIzgB2pizCL466ftJlcyZqnHoC9ZHpxLGl3fS86A==} + '@types/istanbul-reports@3.0.4': dependencies: - expect: 29.5.0 - pretty-format: 29.5.0 - dev: true + '@types/istanbul-lib-report': 3.0.3 - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - dev: true + '@types/jest@29.5.11': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true + '@types/json-schema@7.0.15': {} - /@types/jsonwebtoken@9.0.1: - resolution: {integrity: sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==} + '@types/jsonwebtoken@9.0.5': dependencies: - '@types/node': 18.11.18 - dev: false + '@types/node': 20.11.5 - /@types/long@4.0.2: - resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - dev: false + '@types/long@4.0.2': {} + + '@types/luxon@3.3.8': {} + + '@types/methods@1.1.4': {} - /@types/mime@1.3.2: - resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} - dev: true + '@types/mime@1.3.5': {} - /@types/mime@3.0.1: - resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - dev: true + '@types/mime@3.0.4': {} + + '@types/multer-s3@3.0.3': + dependencies: + '@aws-sdk/client-s3': 3.498.0 + '@types/multer': 1.4.11 + '@types/node': 20.11.5 + transitivePeerDependencies: + - aws-crt - /@types/multer@1.4.7: - resolution: {integrity: sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==} + '@types/multer@1.4.11': dependencies: - '@types/express': 4.17.13 - dev: true + '@types/express': 4.17.21 - /@types/node-fetch@2.6.6: - resolution: {integrity: sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==} + '@types/node-fetch@2.6.11': dependencies: - '@types/node': 18.11.18 + '@types/node': 20.11.5 form-data: 4.0.0 - dev: false - /@types/node@18.11.18: - resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + '@types/node@20.11.5': + dependencies: + undici-types: 5.26.5 - /@types/offscreencanvas@2019.3.0: - resolution: {integrity: sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==} - dev: false + '@types/offscreencanvas@2019.3.0': {} - /@types/offscreencanvas@2019.7.1: - resolution: {integrity: sha512-+HSrJgjBW77ALieQdMJvXhRZUIRN1597L+BKvsyeiIlHHERnqjcuOLyodK3auJ3Y3zRezNKtKAhuQWYJfEgFHQ==} - dev: false + '@types/offscreencanvas@2019.7.3': {} - /@types/parse-json@4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: true + '@types/parse-json@4.0.2': {} - /@types/prettier@2.7.3: - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - dev: true + '@types/qs@6.9.11': {} - /@types/qs@6.9.7: - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - dev: true + '@types/range-parser@1.2.7': {} - /@types/range-parser@1.2.4: - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - dev: true + '@types/seedrandom@2.4.34': {} - /@types/seedrandom@2.4.31: - resolution: {integrity: sha512-O8t5IyMqJ5qSxOR/UJ4hWL64ix05ofO7FV9IgMwVtUvHu7EsI8YyMJOg7SAWrWhDqizj1oxNZAGgfkCrhk7GTQ==} - dev: false + '@types/semver@7.5.6': {} - /@types/send@0.17.1: - resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + '@types/send@0.17.4': dependencies: - '@types/mime': 1.3.2 - '@types/node': 18.11.18 - dev: true + '@types/mime': 1.3.5 + '@types/node': 20.11.5 - /@types/serve-static@1.15.1: - resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} + '@types/serve-static@1.15.5': dependencies: - '@types/mime': 3.0.1 - '@types/node': 18.11.18 - dev: true - - /@types/stack-utils@2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: true - - /@types/strip-bom@3.0.0: - resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} - dev: true + '@types/http-errors': 2.0.4 + '@types/mime': 3.0.4 + '@types/node': 20.11.5 - /@types/strip-json-comments@0.0.30: - resolution: {integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==} - dev: true + '@types/stack-utils@2.0.3': {} - /@types/superagent@4.1.18: - resolution: {integrity: sha512-LOWgpacIV8GHhrsQU+QMZuomfqXiqzz3ILLkCtKx3Us6AmomFViuzKT9D693QTKgyut2oCytMG8/efOop+DB+w==} + '@types/superagent@8.1.2': dependencies: - '@types/cookiejar': 2.1.2 - '@types/node': 18.11.18 - dev: true + '@types/cookiejar': 2.1.5 + '@types/methods': 1.1.4 + '@types/node': 20.11.5 - /@types/supertest@2.0.11: - resolution: {integrity: sha512-uci4Esokrw9qGb9bvhhSVEjd6rkny/dk5PK/Qz4yxKiyppEI+dOPlNrZBahE3i+PoKFYyDxChVXZ/ysS/nrm1Q==} + '@types/supertest@2.0.16': dependencies: - '@types/superagent': 4.1.18 - dev: true + '@types/superagent': 8.1.2 - /@types/tmp@0.2.3: - resolution: {integrity: sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==} - dev: true + '@types/triple-beam@1.3.5': {} - /@types/validator@13.7.17: - resolution: {integrity: sha512-aqayTNmeWrZcvnG2MG9eGYI6b7S5fl+yKgPs6bAjOTwPS316R5SxBGKvtSExfyoJU7pIeHJfsHI0Ji41RVMkvQ==} + '@types/validator@13.11.8': {} - /@types/webidl-conversions@7.0.0: - resolution: {integrity: sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==} + '@types/webidl-conversions@7.0.3': {} - /@types/whatwg-url@8.2.2: - resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} + '@types/whatwg-url@11.0.4': dependencies: - '@types/node': 18.11.18 - '@types/webidl-conversions': 7.0.0 - - /@types/yargs-parser@21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: true + '@types/webidl-conversions': 7.0.3 - /@types/yargs@17.0.24: - resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + '@types/whatwg-url@8.2.2': dependencies: - '@types/yargs-parser': 21.0.0 - dev: true + '@types/node': 20.11.5 + '@types/webidl-conversions': 7.0.3 - /@typescript-eslint/eslint-plugin@5.0.0(@typescript-eslint/parser@5.0.0)(eslint@8.0.1)(typescript@4.7.4): - resolution: {integrity: sha512-T6V6fCD2U0YesOedvydTnrNtsC8E+c2QzpawIpDdlaObX0OX5dLo7tLU5c64FhTZvA1Xrdim+cXDI7NPsVx8Cg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.32': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3)': dependencies: - '@typescript-eslint/experimental-utils': 5.0.0(eslint@8.0.1)(typescript@4.7.4) - '@typescript-eslint/parser': 5.0.0(eslint@8.0.1)(typescript@4.7.4) - '@typescript-eslint/scope-manager': 5.0.0 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.0.1 - functional-red-black-tree: 1.0.1 - ignore: 5.2.4 - regexpp: 3.2.0 - semver: 7.5.2 - tsutils: 3.21.0(typescript@4.7.4) - typescript: 4.7.4 + eslint: 8.56.0 + graphemer: 1.4.0 + ignore: 5.3.0 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/experimental-utils@5.0.0(eslint@8.0.1)(typescript@4.7.4): - resolution: {integrity: sha512-Dnp4dFIsZcPawD6CT1p5NibNUQyGSEz80sULJZkyhyna8AEqArmfwMwJPbmKzWVo4PabqNVzHYlzmcdLQWk+pg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' + '@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.3)': dependencies: - '@types/json-schema': 7.0.12 - '@typescript-eslint/scope-manager': 5.0.0 - '@typescript-eslint/types': 5.0.0 - '@typescript-eslint/typescript-estree': 5.0.0(typescript@4.7.4) - eslint: 8.0.1 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.0.1) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + debug: 4.3.4 + eslint: 8.56.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color - - typescript - dev: true - /@typescript-eslint/parser@5.0.0(eslint@8.0.1)(typescript@4.7.4): - resolution: {integrity: sha512-B6D5rmmQ14I1fdzs71eL3DAuvnPHTY/t7rQABrL9BLnx/H51Un8ox1xqYAchs0/V2trcoyxB1lMJLlrwrJCDgw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + + '@typescript-eslint/type-utils@5.62.0(eslint@8.56.0)(typescript@5.3.3)': dependencies: - '@typescript-eslint/scope-manager': 5.0.0 - '@typescript-eslint/types': 5.0.0 - '@typescript-eslint/typescript-estree': 5.0.0(typescript@4.7.4) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.0.1 - typescript: 4.7.4 + eslint: 8.56.0 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@5.0.0: - resolution: {integrity: sha512-5RFjdA/ain/MDUHYXdF173btOKncIrLuBmA9s6FJhzDrRAyVSA+70BHg0/MW6TE+UiKVyRtX91XpVS0gVNwVDQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.0.0 - '@typescript-eslint/visitor-keys': 5.0.0 - dev: true - - /@typescript-eslint/types@5.0.0: - resolution: {integrity: sha512-dU/pKBUpehdEqYuvkojmlv0FtHuZnLXFBn16zsDmlFF3LXkOpkAQ2vrKc3BidIIve9EMH2zfTlxqw9XM0fFN5w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@typescript-eslint/types@5.62.0': {} - /@typescript-eslint/typescript-estree@5.0.0(typescript@4.7.4): - resolution: {integrity: sha512-V/6w+PPQMhinWKSn+fCiX5jwvd1vRBm7AX7SJQXEGQtwtBvjMPjaU3YTQ1ik2UF1u96X7tsB96HMnulG3eLi9Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3)': dependencies: - '@typescript-eslint/types': 5.0.0 - '@typescript-eslint/visitor-keys': 5.0.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.2 - tsutils: 3.21.0(typescript@4.7.4) - typescript: 4.7.4 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/visitor-keys@5.0.0: - resolution: {integrity: sha512-yRyd2++o/IrJdyHuYMxyFyBhU762MRHQ/bAGQeTnN3pGikfh+nEmM61XTqaDH1XDp53afZ+waXrk0ZvenoZ6xw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3)': dependencies: - '@typescript-eslint/types': 5.0.0 - eslint-visitor-keys: 3.4.1 - dev: true + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + eslint: 8.56.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript - /@webassemblyjs/ast@1.11.1: - resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} + '@typescript-eslint/visitor-keys@5.62.0': dependencies: - '@webassemblyjs/helper-numbers': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - dev: true + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + '@ungap/structured-clone@1.2.0': {} + + '@webassemblyjs/ast@1.11.6': dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: true - - /@webassemblyjs/floating-point-hex-parser@1.11.1: - resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} - dev: true - - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: true - /@webassemblyjs/helper-api-error@1.11.1: - resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} - dev: true + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: true - - /@webassemblyjs/helper-buffer@1.11.1: - resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} - dev: true - - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - dev: true + '@webassemblyjs/helper-api-error@1.11.6': {} - /@webassemblyjs/helper-numbers@1.11.1: - resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 - '@xtuc/long': 4.2.2 - dev: true + '@webassemblyjs/helper-buffer@1.11.6': {} - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + '@webassemblyjs/helper-numbers@1.11.6': dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/helper-wasm-bytecode@1.11.1: - resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} - dev: true - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: true - - /@webassemblyjs/helper-wasm-section@1.11.1: - resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - dev: true + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + '@webassemblyjs/helper-wasm-section@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 - dev: true - /@webassemblyjs/ieee754@1.11.1: - resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} + '@webassemblyjs/ieee754@1.11.6': dependencies: '@xtuc/ieee754': 1.2.0 - dev: true - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - dependencies: - '@xtuc/ieee754': 1.2.0 - dev: true - - /@webassemblyjs/leb128@1.11.1: - resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} - dependencies: - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + '@webassemblyjs/leb128@1.11.6': dependencies: '@xtuc/long': 4.2.2 - dev: true - /@webassemblyjs/utf8@1.11.1: - resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} - dev: true + '@webassemblyjs/utf8@1.11.6': {} - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: true - - /@webassemblyjs/wasm-edit@1.11.1: - resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/helper-wasm-section': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-opt': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - '@webassemblyjs/wast-printer': 1.11.1 - dev: true - - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + '@webassemblyjs/wasm-edit@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 @@ -3716,59 +6308,23 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 - dev: true - - /@webassemblyjs/wasm-gen@1.11.1: - resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 - dev: true - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + '@webassemblyjs/wasm-gen@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true - - /@webassemblyjs/wasm-opt@1.11.1: - resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - dev: true - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + '@webassemblyjs/wasm-opt@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - dev: true - /@webassemblyjs/wasm-parser@1.11.1: - resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 - dev: true - - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + '@webassemblyjs/wasm-parser@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 @@ -3776,226 +6332,142 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true - - /@webassemblyjs/wast-printer@1.11.1: - resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@xtuc/long': 4.2.2 - dev: true - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + '@webassemblyjs/wast-printer@1.11.6': dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 - dev: true - /@webgpu/types@0.1.30: - resolution: {integrity: sha512-9AXJSmL3MzY8ZL//JjudA//q+2kBRGhLBFpkdGksWIuxrMy81nFrCzj2Am+mbh8WoU6rXmv7cY5E3rdlyru2Qg==} - dev: false + '@webgpu/types@0.1.38': {} - /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: true + '@xtuc/ieee754@1.2.0': {} - /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: true + '@xtuc/long@4.2.2': {} - /abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: false + abbrev@1.1.1: {} - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - /acorn-import-assertions@1.9.0(acorn@8.9.0): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 + acorn-import-assertions@1.9.0(acorn@8.11.3): dependencies: - acorn: 8.9.0 - dev: true + acorn: 8.11.3 - /acorn-jsx@5.3.2(acorn@8.9.0): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: - acorn: 8.9.0 - dev: true + acorn: 8.11.3 - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: true + acorn-walk@8.3.2: {} - /acorn@8.9.0: - resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true + acorn@8.11.3: {} - /adm-zip@0.5.10: - resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==} - engines: {node: '>=6.0'} - dev: false + adm-zip@0.5.10: {} - /agent-base@4.3.0: - resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} - engines: {node: '>= 4.0.0'} + agent-base@4.3.0: dependencies: es6-promisify: 5.0.0 - dev: false - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@6.0.2: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - /ajv-formats@2.1.1(ajv@8.11.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true + agent-base@7.1.0: dependencies: - ajv: 8.11.0 - dev: true + debug: 4.3.4 + transitivePeerDependencies: + - supports-color - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 + ajv-formats@2.1.1(ajv@8.12.0): + dependencies: + ajv: 8.12.0 + + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 - dev: true - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true - /ajv@8.11.0: - resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} + ajv@8.12.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: true - - /ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - dev: true - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true + ansi-colors@4.1.3: {} - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 - dev: true - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-escapes@6.2.0: + dependencies: + type-fest: 3.13.1 - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - dev: true - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true + ansi-styles@5.2.0: {} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + ansi-styles@6.2.1: {} + + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /append-field@1.0.0: - resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} + append-field@1.0.0: {} - /aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: false + aproba@2.0.0: {} - /are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} + are-we-there-yet@2.0.0: dependencies: delegates: 1.0.0 readable-stream: 3.6.2 - dev: false - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true + arg@4.1.3: {} - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + argparse@2.0.1: {} - /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + array-flatten@1.1.1: {} - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true + array-union@2.1.0: {} - /async-mutex@0.3.2: - resolution: {integrity: sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA==} + asap@2.0.6: {} + + async-mutex@0.4.1: dependencies: - tslib: 2.5.3 - dev: true + tslib: 2.6.2 - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + async@3.2.5: {} - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} + asynckit@0.4.0: {} - /aws-sdk@2.1296.0: - resolution: {integrity: sha512-6Nm6zQexyne8lVy+BW8jklGpS36mXJjq67zlsn5XuyB3+qAMlolzar9nxgtuabvb/tSQTP4RSwlhkVzOct+MvA==} - engines: {node: '>= 10.0.0'} + available-typed-arrays@1.0.5: {} + + aws-sdk@2.1542.0: dependencies: buffer: 4.9.2 events: 1.1.1 @@ -4006,39 +6478,32 @@ packages: url: 0.10.3 util: 0.12.5 uuid: 8.0.0 - xml2js: 0.4.19 + xml2js: 0.6.2 - /axios@1.2.3: - resolution: {integrity: sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==} + axios@1.6.5: dependencies: - follow-redirects: 1.15.2 + follow-redirects: 1.15.5(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /babel-jest@29.5.0(@babel/core@7.22.5): - resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 + b4a@1.6.4: {} + + babel-jest@29.7.0(@babel/core@7.23.7): dependencies: - '@babel/core': 7.22.5 - '@jest/transform': 29.5.0 - '@types/babel__core': 7.20.1 + '@babel/core': 7.23.7 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.22.5) + babel-preset-jest: 29.6.3(@babel/core@7.23.7) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} + babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.22.5 '@istanbuljs/load-nyc-config': 1.1.0 @@ -4047,82 +6512,57 @@ packages: test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-jest-hoist@29.5.0: - resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 - '@types/babel__core': 7.20.1 - '@types/babel__traverse': 7.20.1 - dev: true + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.5 - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.5): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 + babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.7): dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) - dev: true - - /babel-preset-jest@29.5.0(@babel/core@7.22.5): - resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': 7.23.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7) + + babel-preset-jest@29.6.3(@babel/core@7.23.7): dependencies: - '@babel/core': 7.22.5 - babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) - dev: true + '@babel/core': 7.23.7 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.7) - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base64-js@1.5.1: {} - /bcrypt@5.1.0: - resolution: {integrity: sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==} - engines: {node: '>= 10.0.0'} - requiresBuild: true + bcrypt@5.1.1: dependencies: - '@mapbox/node-pre-gyp': 1.0.10 + '@mapbox/node-pre-gyp': 1.0.11 node-addon-api: 5.1.0 transitivePeerDependencies: - encoding - supports-color - dev: false - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} + binary-extensions@2.2.0: {} - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - dev: true - /body-parser@1.20.0: - resolution: {integrity: sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.1: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -4132,16 +6572,14 @@ packages: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.10.3 + qs: 6.11.0 raw-body: 2.5.1 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: - supports-color - /body-parser@1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -4152,165 +6590,110 @@ packages: iconv-lite: 0.4.24 on-finished: 2.4.1 qs: 6.11.0 - raw-body: 2.5.1 + raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: false - /bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + bowser@2.11.0: {} - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.2: dependencies: fill-range: 7.0.1 - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.22.2: dependencies: - caniuse-lite: 1.0.30001505 - electron-to-chromium: 1.4.434 - node-releases: 2.0.12 - update-browserslist-db: 1.0.11(browserslist@4.21.9) - dev: true + caniuse-lite: 1.0.30001579 + electron-to-chromium: 1.4.643 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) - /bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} + bs-logger@0.2.6: dependencies: fast-json-stable-stringify: 2.1.0 - dev: true - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + bser@2.1.1: dependencies: node-int64: 0.4.0 - dev: true - /bson@4.7.2: - resolution: {integrity: sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==} - engines: {node: '>=6.9.0'} + bson@4.7.2: dependencies: buffer: 5.7.1 - /bson@5.3.0: - resolution: {integrity: sha512-ukmCZMneMlaC5ebPHXIkP8YJzNl5DC41N5MAIvKDqLggdao342t4McltoJBQfQya/nHBWAcSsYRqlXPoQkTJag==} - engines: {node: '>=14.20.1'} - dev: true + bson@5.5.1: {} - /buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: true + bson@6.2.0: {} - /buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false + buffer-crc32@0.2.13: {} - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer-equal-constant-time@1.0.1: {} - /buffer@4.9.2: - resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + buffer-from@1.1.2: {} + + buffer@4.9.2: dependencies: base64-js: 1.5.1 ieee754: 1.1.13 isarray: 1.0.0 - /buffer@5.6.0: - resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + buffer@5.6.0: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} + busboy@1.6.0: dependencies: streamsearch: 1.1.0 - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} + bytes@3.1.2: {} - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + call-bind@1.0.5: dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.2.0 - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true + callsites@3.1.0: {} - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true + camelcase@5.3.1: {} - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true + camelcase@6.3.0: {} - /caniuse-lite@1.0.30001505: - resolution: {integrity: sha512-jaAOR5zVtxHfL0NjZyflVTtXm3D3J9P15zSJ7HmQF8dSKGA6tqzQq+0ZI3xkjyQj46I4/M0K2GbMpcAFOcbr3A==} - dev: true + caniuse-lite@1.0.30001579: {} - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 + chalk@5.3.0: {} - /char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true + char-regex@1.0.2: {} - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true + chardet@0.7.0: {} - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + chokidar@3.5.3: dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -4320,622 +6703,403 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: false + chownr@1.1.4: {} - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false + chownr@2.0.0: {} - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - dev: true + chrome-trace-event@1.0.3: {} - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - dev: true + ci-info@3.9.0: {} - /cjs-module-lexer@1.2.3: - resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - dev: true + cjs-module-lexer@1.2.3: {} - /class-transformer@0.5.1: - resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} + class-transformer@0.5.1: {} - /class-validator@0.14.0: - resolution: {integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==} + class-validator@0.14.1: dependencies: - '@types/validator': 13.7.17 - libphonenumber-js: 1.10.36 - validator: 13.9.0 + '@types/validator': 13.11.8 + libphonenumber-js: 1.10.54 + validator: 13.11.0 - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 - dev: true - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} - engines: {node: '>=6'} - dev: true + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 - /cli-table3@0.6.2: - resolution: {integrity: sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==} - engines: {node: 10.* || >= 12.*} + cli-spinners@2.9.2: {} + + cli-table3@0.6.3: dependencies: string-width: 4.2.3 optionalDependencies: '@colors/colors': 1.5.0 - dev: true - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: true + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.1.0 - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cli-width@3.0.0: {} + + cliui@7.0.4: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: false - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true + clone@1.0.4: {} - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true + co@4.6.0: {} - /collect-v8-coverage@1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true + collect-v8-coverage@1.0.2: {} - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - dev: true - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true + color-name@1.1.3: {} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@1.1.4: {} - /color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: false + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + color-support@1.1.3: {} + + color@3.2.1: + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + + colorette@2.0.20: {} + + colorspace@1.1.4: + dependencies: + color: 3.2.1 + text-hex: 1.0.0 + + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true + commander@11.1.0: {} - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true + commander@2.20.3: {} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true + commander@4.1.1: {} - /component-emitter@1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - dev: true + commondir@1.0.1: {} - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + component-emitter@1.3.1: {} - /concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} + concat-map@0.0.1: {} + + concat-stream@1.6.2: dependencies: buffer-from: 1.1.2 inherits: 2.0.4 readable-stream: 2.3.8 typedarray: 0.0.6 - /consola@2.15.3: - resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + consola@2.15.3: {} - /console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: false + console-control-strings@1.1.0: {} - /content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 - /content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} + content-type@1.0.5: {} - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true + convert-source-map@2.0.0: {} - /cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.0.6: {} - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} + cookie@0.5.0: {} - /cookiejar@2.1.4: - resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} - dev: true + cookiejar@2.1.4: {} - /core-js@3.29.1: - resolution: {integrity: sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==} - requiresBuild: true - dev: false + core-js@3.29.1: {} - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + core-util-is@1.0.3: {} - /cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} + cors@2.8.5: dependencies: object-assign: 4.1.1 vary: 1.1.2 - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} + cosmiconfig@7.1.0: dependencies: - '@types/parse-json': 4.0.0 + '@types/parse-json': 4.0.2 import-fresh: 3.3.0 parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 - dev: true - /cpf-cnpj-validator@1.0.3: - resolution: {integrity: sha512-Slh7iv+sf2FhP9xFRMExuaDF7ndERVzmjBZHqwWG+GqHSqPmEggvLuKUUFJZxb+G804rjqRnnu5eCkbeChqM/Q==} + cpf-cnpj-validator@1.0.3: dependencies: '@hapi/joi': 17.1.1 - dev: false - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true + create-jest@29.7.0(@types/node@20.11.5)(ts-node@10.9.2): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.11.5)(ts-node@10.9.2) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-require@1.1.1: {} - /cron@2.4.0: - resolution: {integrity: sha512-Cx77ic1TyIAtUggr0oAhtS8MLzPBUqGNIvdDM7jE3oFIxfe8LXWI9q3iQN/H2CebAiMir53LQKWOhEKnzkJTAQ==} + cron@2.4.3: dependencies: - luxon: 3.4.0 - dev: false + '@types/luxon': 3.3.8 + luxon: 3.3.0 - /cron@2.4.1: - resolution: {integrity: sha512-ty0hUSPuENwDtIShDFxUxWEIsqiu2vhoFtt6Vwrbg4lHGtJX2/cV2p0hH6/qaEM9Pj+i6mQoau48BO5wBpkP4w==} + cron@2.4.4: dependencies: - luxon: 3.4.0 + '@types/luxon': 3.3.8 + luxon: 3.3.0 - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@2.6.9: dependencies: ms: 2.0.0 - /debug@3.2.7(supports-color@5.5.0): - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@3.2.7(supports-color@5.5.0): dependencies: ms: 2.1.3 supports-color: 5.5.0 - dev: false - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.4: dependencies: ms: 2.1.2 - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: true + dedent@1.5.1: {} - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true + deep-is@0.1.4: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: true + deepmerge@4.3.1: {} - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defaults@1.0.4: dependencies: clone: 1.0.4 - dev: true - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + define-data-property@1.1.1: + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 - /delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: false + delayed-stream@1.0.0: {} - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} + delegates@1.0.0: {} - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + depd@2.0.0: {} - /detect-libc@2.0.1: - resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} - engines: {node: '>=8'} - dev: false + destroy@1.2.0: {} - /detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true + detect-libc@2.0.2: {} - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + detect-newline@3.1.0: {} - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true + dezalgo@1.0.4: + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + diff-sequences@29.6.3: {} + + diff@4.0.2: {} + + dir-glob@3.0.1: dependencies: path-type: 4.0.0 - dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} - engines: {node: '>=12'} - dev: false + dotenv-expand@10.0.0: {} - /dynamic-dedupe@0.3.0: - resolution: {integrity: sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==} - dependencies: - xtend: 4.0.2 - dev: true + dotenv@16.3.1: {} - /ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + dotenv@16.4.0: {} + + ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer: 5.2.1 - dev: false - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + ee-first@1.1.1: {} - /electron-to-chromium@1.4.434: - resolution: {integrity: sha512-5Gvm09UZTQRaWrimRtWRO5rvaX6Kpk5WHAPKDa7A4Gj6NIPuJ8w8WNpnxCXdd+CJJt6RBU6tUw0KyULoW6XuHw==} - dev: true + electron-to-chromium@1.4.643: {} - /emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true + emittery@0.13.1: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@10.3.0: {} - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} + emoji-regex@8.0.0: {} - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + enabled@2.0.0: {} + + encodeurl@1.0.2: {} + + end-of-stream@1.4.4: dependencies: once: 1.4.0 - dev: true - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} + enhanced-resolve@5.15.0: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - dev: true - - /enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.3 - dev: true - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - dev: true - - /es-module-lexer@0.9.3: - resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} - dev: true - /es-module-lexer@1.3.0: - resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} - dev: true + es-module-lexer@1.4.1: {} - /es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - dev: false + es6-promise@4.2.8: {} - /es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + es6-promisify@5.0.0: dependencies: es6-promise: 4.2.8 - dev: false - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + escalade@3.1.1: {} - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-html@1.0.3: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true + escape-string-regexp@1.0.5: {} - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true + escape-string-regexp@2.0.0: {} - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true + escape-string-regexp@4.0.0: {} - /eslint-config-prettier@8.3.0(eslint@8.0.1): - resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@8.10.0(eslint@8.56.0): dependencies: - eslint: 8.0.1 - dev: true + eslint: 8.56.0 - /eslint-plugin-prettier@4.0.0(eslint-config-prettier@8.3.0)(eslint@8.0.1)(prettier@2.3.2): - resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} - engines: {node: '>=6.0.0'} - peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true + eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.56.0)(prettier@2.8.8): dependencies: - eslint: 8.0.1 - eslint-config-prettier: 8.3.0(eslint@8.0.1) - prettier: 2.3.2 + eslint: 8.56.0 + eslint-config-prettier: 8.10.0(eslint@8.56.0) + prettier: 2.8.8 prettier-linter-helpers: 1.0.0 - dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: true - /eslint-scope@6.0.0: - resolution: {integrity: sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - - /eslint-utils@3.0.0(eslint@8.0.1): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.0.1 - eslint-visitor-keys: 2.1.0 - dev: true - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + eslint-visitor-keys@3.4.3: {} - /eslint@8.0.1: - resolution: {integrity: sha512-LsgcwZgQ72vZ+SMp4K6pAnk2yFDWL7Ti4pJaRvsZ0Hsw2h8ZjUIW38a9AFn2cZXdBMlScMFYYgsSp4ttFI/0bA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.56.0: dependencies: - '@eslint/eslintrc': 1.4.1 - '@humanwhocodes/config-array': 0.6.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 doctrine: 3.0.0 - enquirer: 2.3.6 escape-string-regexp: 4.0.0 - eslint-scope: 6.0.0 - eslint-utils: 3.0.0(eslint@8.0.1) - eslint-visitor-keys: 3.4.1 - espree: 9.5.2 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 + find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.20.0 - ignore: 4.0.6 - import-fresh: 3.3.0 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 + is-path-inside: 3.0.3 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.1 - progress: 2.0.3 - regexpp: 3.2.0 - semver: 7.5.2 + optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 - v8-compile-cache: 2.3.0 transitivePeerDependencies: - supports-color - dev: true - /espree@9.5.2: - resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.6.1: dependencies: - acorn: 8.9.0 - acorn-jsx: 5.3.2(acorn@8.9.0) - eslint-visitor-keys: 3.4.1 - dev: true + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true + esprima@4.0.1: {} - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + esquery@1.5.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true + estraverse@4.3.0: {} - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true + estraverse@5.3.0: {} - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true + esutils@2.0.3: {} - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} + etag@1.8.1: {} - /events@1.1.1: - resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} - engines: {node: '>=0.4.x'} + eventemitter3@5.0.1: {} - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} + events@1.1.1: {} - /execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} + events@3.3.0: {} + + execa@4.1.0: dependencies: cross-spawn: 7.0.3 get-stream: 5.2.0 @@ -4946,11 +7110,8 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + execa@5.1.1: dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -4961,65 +7122,30 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true - - /exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true - /expect@29.5.0: - resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + execa@8.0.1: dependencies: - '@jest/expect-utils': 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - dev: true + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 - /express@4.18.1: - resolution: {integrity: sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==} - engines: {node: '>= 0.10.0'} + exit@0.1.2: {} + + expect@29.7.0: dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.0 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.10.3 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 - /express@4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} - engines: {node: '>= 0.10.0'} + express@4.18.2: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 @@ -5054,108 +7180,70 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color - dev: false - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} + external-editor@3.1.0: dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: true - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true + fancy-log@2.0.0: + dependencies: + color-support: 1.1.3 - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true + fast-deep-equal@3.1.3: {} - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} + fast-diff@1.3.0: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + fast-json-stable-stringify@2.1.0: {} - /fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-levenshtein@2.0.6: {} - /fast-xml-parser@4.0.11: - resolution: {integrity: sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==} - hasBin: true - dependencies: - strnum: 1.0.5 - dev: false + fast-safe-stringify@2.1.1: {} - /fast-xml-parser@4.2.4: - resolution: {integrity: sha512-fbfMDvgBNIdDJLdLOwacjFAPYt67tr31H9ZhWSm45CDAxvd0I6WTlSOUo7K2P/K5sA5JgMKG64PI3DMcaFdWpQ==} - hasBin: true - requiresBuild: true + fast-xml-parser@4.2.5: dependencies: strnum: 1.0.5 - optional: true - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fastq@1.16.0: dependencies: reusify: 1.0.4 - dev: true - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fb-watchman@2.0.2: dependencies: bser: 2.1.1 - dev: true - /fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fd-slicer@1.1.0: dependencies: pend: 1.2.0 - dev: true - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} + fecha@4.2.3: {} + + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 - dev: true - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@6.0.1: dependencies: - flat-cache: 3.0.4 - dev: true + flat-cache: 3.2.0 - /file-type@3.9.0: - resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} - engines: {node: '>=0.10.0'} - dev: false + file-type@3.9.0: {} - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 - /finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} + finalhandler@1.2.0: dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -5167,62 +7255,43 @@ packages: transitivePeerDependencies: - supports-color - /find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} + find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 make-dir: 3.1.0 pkg-dir: 4.2.0 - dev: true - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@3.2.0: dependencies: - flatted: 3.2.7 + flatted: 3.2.9 + keyv: 4.5.4 rimraf: 3.0.2 - dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true + flatted@3.2.9: {} - /follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false + fn.name@1.1.0: {} - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + follow-redirects@1.15.5(debug@4.3.4): + dependencies: + debug: 4.3.4 + + for-each@0.3.3: dependencies: is-callable: 1.2.7 - /fork-ts-checker-webpack-plugin@7.2.11(typescript@4.7.4)(webpack@5.73.0): - resolution: {integrity: sha512-2e5+NyTUTE1Xq4fWo7KFEQblCaIvvINQwUX3jRmEGlgCTc1Ecqw/975EfQrQ0GEraxJTnp8KB9d/c8hlCHUMJA==} - engines: {node: '>=12.13.0', yarn: '>=1.0.0'} - peerDependencies: - typescript: '>3.6.0' - vue-template-compiler: '*' - webpack: ^5.11.0 - peerDependenciesMeta: - vue-template-compiler: - optional: true + fork-ts-checker-webpack-plugin@8.0.0(typescript@4.9.5)(webpack@5.82.1): dependencies: - '@babel/code-frame': 7.22.5 + '@babel/code-frame': 7.23.5 chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 7.1.0 @@ -5230,94 +7299,54 @@ packages: fs-extra: 10.1.0 memfs: 3.5.3 minimatch: 3.1.2 + node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.5.2 + semver: 7.5.4 tapable: 2.2.1 - typescript: 4.7.4 - webpack: 5.73.0 - dev: true + typescript: 4.9.5 + webpack: 5.82.1 - /form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + formidable@2.1.2: dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - - /formidable@1.2.6: - resolution: {integrity: sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==} - deprecated: 'Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau' - dev: true - - /forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} + dezalgo: 1.0.4 + hexoid: 1.0.0 + once: 1.4.0 + qs: 6.11.2 - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} + forwarded@0.2.0: {} - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: true + fresh@0.5.2: {} - /fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true + universalify: 2.0.1 - /fs-minipass@1.2.7: - resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} + fs-minipass@1.2.7: dependencies: minipass: 2.9.0 - dev: false - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} + fs-minipass@2.1.0: dependencies: minipass: 3.3.6 - dev: false - /fs-monkey@1.0.4: - resolution: {integrity: sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==} - dev: true + fs-monkey@1.0.5: {} - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fs.realpath@1.0.0: {} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.3: optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + function-bind@1.1.2: {} - /functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - dev: true - - /gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} + gauge@3.0.2: dependencies: aproba: 2.0.0 color-support: 1.1.3 @@ -5328,71 +7357,43 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wide-align: 1.1.5 - dev: false - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true + gensync@1.0.0-beta.2: {} - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + get-caller-file@2.0.5: {} + + get-east-asian-width@1.2.0: {} - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + get-intrinsic@1.2.2: dependencies: - function-bind: 1.1.1 - has: 1.0.3 + function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 + hasown: 2.0.0 - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true - - /get-port@5.1.1: - resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} - engines: {node: '>=8'} - dev: true + get-package-type@0.1.0: {} - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} + get-stream@5.2.0: dependencies: pump: 3.0.0 - dev: true - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true + get-stream@6.0.1: {} - /git-cz@4.9.0: - resolution: {integrity: sha512-cSRL8IIOXU7UFLdbziCYqg8f8InwLwqHezkiRHNSph7oZqGv0togId1kMTfKil6gzK0VaSXeVBb4oDl0fQCHiw==} - hasBin: true - dev: false + get-stream@8.0.1: {} - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + git-cz@4.9.0: {} + + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - dev: true - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true + glob-to-regexp@0.4.1: {} - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5401,86 +7402,67 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true + glob@9.3.5: + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.10.1 - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} - engines: {node: '>=8'} + globals@11.12.0: {} + + globals@13.24.0: dependencies: type-fest: 0.20.2 - dev: true - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.0 merge2: 1.4.1 slash: 3.0.0 - dev: true - /google-protobuf@3.21.2: - resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} - dev: false + google-protobuf@3.21.2: {} - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true + graceful-fs@4.2.11: {} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + graphemer@1.4.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + has-flag@3.0.0: {} - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} + has-flag@4.0.0: {} - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + has-property-descriptors@1.0.1: + dependencies: + get-intrinsic: 1.2.2 - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} + has-proto@1.0.1: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 - /has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: false + has-unicode@2.0.1: {} - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + hasown@2.0.0: dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 - /html-comment-regex@1.1.2: - resolution: {integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==} - dev: false + hexoid@1.0.0: {} - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true + html-comment-regex@1.1.2: {} - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} + html-escaper@2.0.2: {} + + http-errors@2.0.0: dependencies: depd: 2.0.0 inherits: 2.0.4 @@ -5488,95 +7470,67 @@ packages: statuses: 2.0.1 toidentifier: 1.0.1 - /https-proxy-agent@2.2.4: - resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} - engines: {node: '>= 4.5.0'} + https-proxy-agent@2.2.4: dependencies: agent-base: 4.3.0 debug: 3.2.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color - dev: false - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 debug: 4.3.4 transitivePeerDependencies: - supports-color - /human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - dev: true + https-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true + human-signals@1.1.1: {} - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + human-signals@2.1.0: {} + + human-signals@5.0.0: {} + + husky@8.0.3: {} + + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - /ieee754@1.1.13: - resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} - - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ieee754@1.1.13: {} - /ignore-by-default@1.0.1: - resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} - dev: false + ieee754@1.2.1: {} - /ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - dev: true + ignore-by-default@1.0.1: {} - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true + ignore@5.3.0: {} - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true + import-local@3.1.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - dev: true - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true + imurmurhash@0.1.4: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} + inquirer@8.2.4: dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -5586,16 +7540,15 @@ packages: figures: 3.2.0 lodash: 4.17.21 mute-stream: 0.0.8 + ora: 5.4.1 run-async: 2.4.1 - rxjs: 6.6.7 + rxjs: 7.8.1 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 - dev: true + wrap-ansi: 7.0.0 - /inquirer@8.2.4: - resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} - engines: {node: '>=12.0.0'} + inquirer@8.2.5: dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -5612,1004 +7565,776 @@ packages: strip-ansi: 6.0.1 through: 2.3.8 wrap-ansi: 7.0.0 - dev: true - /interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - dev: true + interpret@1.4.0: {} - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + ip@2.0.0: {} - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} + ipaddr.js@1.9.1: {} - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} + is-arguments@1.1.1: dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true + is-arrayish@0.2.1: {} - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-arrayish@0.3.2: {} + + is-binary-path@2.1.0: dependencies: binary-extensions: 2.2.0 - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} + is-callable@1.2.7: {} - /is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + is-core-module@2.13.1: dependencies: - has: 1.0.3 - dev: true + hasown: 2.0.0 - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-extglob@2.1.1: {} - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true + is-fullwidth-code-point@4.0.0: {} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.2.0 + + is-generator-fn@2.1.0: {} + + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.0 - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true + is-interactive@1.0.0: {} - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + is-number@7.0.0: {} - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true + is-path-inside@3.0.3: {} - /is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} - engines: {node: '>= 0.4'} + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-typed-array@1.1.12: dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 + which-typed-array: 1.1.13 - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: true + is-unicode-supported@0.1.0: {} - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@1.0.0: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true + isexe@2.0.0: {} - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true + istanbul-lib-coverage@3.2.2: {} - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} + istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.22.5 - '@babel/parser': 7.22.5 + '@babel/core': 7.23.7 + '@babel/parser': 7.23.6 '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} + istanbul-lib-instrument@6.0.1: dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 + '@babel/core': 7.23.7 + '@babel/parser': 7.23.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 supports-color: 7.2.0 - dev: true - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} + istanbul-lib-source-maps@4.0.1: dependencies: debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color - dev: true - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} + istanbul-reports@3.1.6: dependencies: html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true + istanbul-lib-report: 3.0.1 - /iterare@1.2.1: - resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} - engines: {node: '>=6'} + iterare@1.2.1: {} - /jest-changed-files@29.5.0: - resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-changed-files@29.7.0: dependencies: execa: 5.1.1 + jest-util: 29.7.0 p-limit: 3.1.0 - dev: true - /jest-circus@29.5.0: - resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-circus@29.7.0: dependencies: - '@jest/environment': 29.5.0 - '@jest/expect': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.11.18 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.5 chalk: 4.1.2 co: 4.6.0 - dedent: 0.7.0 + dedent: 1.5.1 is-generator-fn: 2.1.0 - jest-each: 29.5.0 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 p-limit: 3.1.0 - pretty-format: 29.5.0 - pure-rand: 6.0.2 + pretty-format: 29.7.0 + pure-rand: 6.0.4 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: + - babel-plugin-macros - supports-color - dev: true - /jest-cli@29.5.0(@types/node@18.11.18)(ts-node@10.0.0): - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + jest-cli@29.7.0(@types/node@20.11.5)(ts-node@10.9.2): dependencies: - '@jest/core': 29.5.0(ts-node@10.0.0) - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.11.5)(ts-node@10.9.2) exit: 0.1.2 - graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.11.18)(ts-node@10.0.0) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 + jest-config: 29.7.0(@types/node@20.11.5)(ts-node@10.9.2) + jest-util: 29.7.0 + jest-validate: 29.7.0 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' + - babel-plugin-macros - supports-color - ts-node - dev: true - /jest-config@29.5.0(@types/node@18.11.18)(ts-node@10.0.0): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true + jest-config@29.7.0(@types/node@20.11.5)(ts-node@10.9.2): dependencies: - '@babel/core': 7.22.5 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.11.18 - babel-jest: 29.5.0(@babel/core@7.22.5) + '@babel/core': 7.23.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.5 + babel-jest: 29.7.0(@babel/core@7.23.7) chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.5.0 + pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.0.0(@types/node@18.11.18)(typescript@4.7.4) + ts-node: 10.9.2(@types/node@20.11.5)(typescript@5.3.3) transitivePeerDependencies: + - babel-plugin-macros - supports-color - dev: true - /jest-diff@29.5.0: - resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-diff@29.7.0: dependencies: chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - /jest-docblock@29.4.3: - resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 - dev: true - /jest-each@29.5.0: - resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-each@29.7.0: dependencies: - '@jest/types': 29.5.0 + '@jest/types': 29.6.3 chalk: 4.1.2 - jest-get-type: 29.4.3 - jest-util: 29.5.0 - pretty-format: 29.5.0 - dev: true + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 - /jest-environment-node@29.5.0: - resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-environment-node@29.7.0: dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.11.18 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.5 + jest-mock: 29.7.0 + jest-util: 29.7.0 - /jest-get-type@29.4.3: - resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + jest-get-type@29.6.3: {} - /jest-haste-map@29.5.0: - resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@29.7.0: dependencies: - '@jest/types': 29.5.0 - '@types/graceful-fs': 4.1.6 - '@types/node': 18.11.18 + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.11.5 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - jest-worker: 29.5.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: - fsevents: 2.3.2 - dev: true + fsevents: 2.3.3 - /jest-leak-detector@29.5.0: - resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-leak-detector@29.7.0: dependencies: - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - /jest-matcher-utils@29.5.0: - resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-matcher-utils@29.7.0: dependencies: chalk: 4.1.2 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - /jest-message-util@29.5.0: - resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.22.5 - '@jest/types': 29.5.0 - '@types/stack-utils': 2.0.1 + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.5 - pretty-format: 29.5.0 + pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 - dev: true - /jest-mock@29.5.0: - resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-mock@29.7.0: dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.11.18 - jest-util: 29.5.0 - dev: true + '@jest/types': 29.6.3 + '@types/node': 20.11.5 + jest-util: 29.7.0 - /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): dependencies: - jest-resolve: 29.5.0 - dev: true + jest-resolve: 29.7.0 - /jest-regex-util@29.4.3: - resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + jest-regex-util@29.6.3: {} - /jest-resolve-dependencies@29.5.0: - resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve-dependencies@29.7.0: dependencies: - jest-regex-util: 29.4.3 - jest-snapshot: 29.5.0 + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /jest-resolve@29.5.0: - resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve@29.7.0: dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) - jest-util: 29.5.0 - jest-validate: 29.5.0 - resolve: 1.22.2 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 resolve.exports: 2.0.2 slash: 3.0.0 - dev: true - /jest-runner@29.5.0: - resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runner@29.7.0: dependencies: - '@jest/console': 29.5.0 - '@jest/environment': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.11.18 + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.5 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 - jest-docblock: 29.4.3 - jest-environment-node: 29.5.0 - jest-haste-map: 29.5.0 - jest-leak-detector: 29.5.0 - jest-message-util: 29.5.0 - jest-resolve: 29.5.0 - jest-runtime: 29.5.0 - jest-util: 29.5.0 - jest-watcher: 29.5.0 - jest-worker: 29.5.0 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - dev: true - /jest-runtime@29.5.0: - resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runtime@29.7.0: dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/globals': 29.5.0 - '@jest/source-map': 29.4.3 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.11.18 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.5 chalk: 4.1.2 cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 glob: 7.2.3 graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - dev: true - /jest-snapshot@29.5.0: - resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - '@jest/expect-utils': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/babel__traverse': 7.20.1 - '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.23.7 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7) + '@babel/types': 7.23.6 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.7) chalk: 4.1.2 - expect: 29.5.0 + expect: 29.7.0 graceful-fs: 4.2.11 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 natural-compare: 1.4.0 - pretty-format: 29.5.0 - semver: 7.5.2 + pretty-format: 29.7.0 + semver: 7.5.4 transitivePeerDependencies: - supports-color - dev: true - /jest-util@29.5.0: - resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-sonar-reporter@2.0.0: + dependencies: + xml: 1.0.1 + + jest-util@29.7.0: dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.11.18 + '@jest/types': 29.6.3 + '@types/node': 20.11.5 chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - dev: true - /jest-validate@29.5.0: - resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-validate@29.7.0: dependencies: - '@jest/types': 29.5.0 + '@jest/types': 29.6.3 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 29.4.3 + jest-get-type: 29.6.3 leven: 3.1.0 - pretty-format: 29.5.0 - dev: true + pretty-format: 29.7.0 - /jest-watcher@29.5.0: - resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-watcher@29.7.0: dependencies: - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.11.18 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.5 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.5.0 + jest-util: 29.7.0 string-length: 4.0.2 - dev: true - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + jest-worker@27.5.1: dependencies: - '@types/node': 18.11.18 + '@types/node': 20.11.5 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true - /jest-worker@29.5.0: - resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@29.7.0: dependencies: - '@types/node': 18.11.18 - jest-util: 29.5.0 + '@types/node': 20.11.5 + jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true - /jest@29.3.1(@types/node@18.11.18)(ts-node@10.0.0): - resolution: {integrity: sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + jest@29.7.0(@types/node@20.11.5)(ts-node@10.9.2): dependencies: - '@jest/core': 29.5.0(ts-node@10.0.0) - '@jest/types': 29.5.0 + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.11.18)(ts-node@10.0.0) + jest-cli: 29.7.0(@types/node@20.11.5)(ts-node@10.9.2) transitivePeerDependencies: - '@types/node' + - babel-plugin-macros - supports-color - ts-node - dev: true - /jmespath@0.16.0: - resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} - engines: {node: '>= 0.6.0'} + jmespath@0.16.0: {} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true + js-tokens@4.0.0: {} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: true - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true + jsesc@2.5.2: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true + json-buffer@3.0.1: {} - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true + json-parse-even-better-errors@2.3.1: {} - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true + json-schema-traverse@0.4.1: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + json-schema-traverse@1.0.0: {} - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true + json5@2.2.3: {} - /jsonc-parser@3.0.0: - resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} - dev: true + jsonc-parser@3.2.0: {} - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.1.0: dependencies: - universalify: 2.0.0 + universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 - dev: true - /jsonwebtoken@9.0.0: - resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} - engines: {node: '>=12', npm: '>=6'} + jsonwebtoken@9.0.2: dependencies: jws: 3.2.2 - lodash: 4.17.21 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.5.2 - dev: false + semver: 7.5.4 - /jwa@1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + jwa@1.4.1: dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - dev: false - /jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + jws@3.2.2: dependencies: jwa: 1.4.1 safe-buffer: 5.2.1 - dev: false - /kareem@2.5.0: - resolution: {integrity: sha512-rVBUGGwvqg130iwYu8k7lutHuDBFj1yGRdnlE44wEhxAmFBad1zcL66PdWC1raw3tIObY6XWhtv3VL04xQb/cg==} - engines: {node: '>=12.0.0'} - dev: false + kareem@2.5.1: {} - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true + kleur@3.0.3: {} - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + kuler@2.0.0: {} + + leven@3.1.0: {} + + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /libphonenumber-js@1.10.36: - resolution: {integrity: sha512-NCPWES1poiS4NSzIS49mxHM5hCkSWov8wFICRKfL9narzimqAXlnAgNloHCt0BukZHbWt8TIStCdzLy7LXBYpQ==} + libphonenumber-js@1.10.54: {} - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true + lilconfig@3.0.0: {} - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - dev: true + lines-and-columns@1.2.4: {} - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + lint-staged@15.2.0: + dependencies: + chalk: 5.3.0 + commander: 11.1.0 + debug: 4.3.4 + execa: 8.0.1 + lilconfig: 3.0.0 + listr2: 8.0.0 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.4 + transitivePeerDependencies: + - supports-color + + listr2@8.0.0: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.0.0 + rfdc: 1.3.1 + wrap-ansi: 9.0.0 + + loader-runner@4.3.0: {} + + locate-path@5.0.0: dependencies: p-locate: 4.1.0 - dev: true - /lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: true + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + lodash.includes@4.3.0: {} - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash.isboolean@3.0.3: {} - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.once@4.1.1: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: true - /long@4.0.0: - resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - dev: false + log-update@6.0.0: + dependencies: + ansi-escapes: 6.2.0 + cli-cursor: 4.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + logform@2.6.0: + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.4.3 + triple-beam: 1.4.1 + + long@4.0.0: {} + + lru-cache@10.1.0: {} + + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - dev: true - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + lru-cache@6.0.0: dependencies: yallist: 4.0.0 - /luxon@3.4.0: - resolution: {integrity: sha512-7eDo4Pt7aGhoCheGFIuq4Xa2fJm4ZpmldpGhjTYBNUYNCN6TIEP6v7chwwwt3KRp7YR+rghbfvjyo3V5y9hgBw==} - engines: {node: '>=12'} + luxon@3.3.0: {} - /macos-release@2.5.1: - resolution: {integrity: sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==} - engines: {node: '>=6'} - dev: true + macos-release@2.5.1: {} - /magic-string@0.26.1: - resolution: {integrity: sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==} - engines: {node: '>=12'} + magic-string@0.30.0: dependencies: - sourcemap-codec: 1.4.8 - dev: true + '@jridgewell/sourcemap-codec': 1.4.15 - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + make-dir@3.1.0: dependencies: - semver: 6.3.0 + semver: 6.3.1 - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true + make-dir@4.0.0: + dependencies: + semver: 7.5.4 - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + make-error@1.3.6: {} + + makeerror@1.0.12: dependencies: tmpl: 1.0.5 - dev: true - - /md5-file@5.0.0: - resolution: {integrity: sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true - /media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} + media-typer@0.3.0: {} - /memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} + memfs@3.5.3: dependencies: - fs-monkey: 1.0.4 - dev: true + fs-monkey: 1.0.5 - /memory-pager@1.5.0: - resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - requiresBuild: true - optional: true + memory-pager@1.5.0: {} - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.1: {} - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true + merge-stream@2.0.0: {} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true + merge2@1.4.1: {} - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} + methods@1.1.2: {} - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true + mime@1.6.0: {} - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: true + mime@2.6.0: {} - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true + mimic-fn@2.1.0: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + mimic-fn@4.0.0: {} + + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minimatch@8.0.4: + dependencies: + brace-expansion: 2.0.1 - /minipass@2.9.0: - resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} + minimist@1.2.8: {} + + minipass@2.9.0: dependencies: safe-buffer: 5.2.1 yallist: 3.1.1 - dev: false - /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + minipass@3.3.6: dependencies: yallist: 4.0.0 - dev: false - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: false + minipass@4.2.8: {} - /minizlib@1.3.3: - resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} + minipass@5.0.0: {} + + minipass@7.0.4: {} + + minizlib@1.3.3: dependencies: minipass: 2.9.0 - dev: false - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + minizlib@2.1.2: dependencies: minipass: 3.3.6 yallist: 4.0.0 - dev: false - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + mkdirp@0.5.6: dependencies: minimist: 1.2.8 - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true + mkdirp@1.0.4: {} - /mongodb-connection-string-url@2.6.0: - resolution: {integrity: sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==} + mkdirp@3.0.1: {} + + mongodb-connection-string-url@2.6.0: dependencies: '@types/whatwg-url': 8.2.2 whatwg-url: 11.0.0 - /mongodb-memory-server-core@8.11.5: - resolution: {integrity: sha512-bhptlOruCEYrLofCbjACMoClgP1rFkhSNDzI/bbG/pUAg41UB00eaDPerYVvRf2jvOJqKF4+U9xqXiSvkbMvXw==} - engines: {node: '>=12.22.0'} + mongodb-connection-string-url@3.0.0: + dependencies: + '@types/whatwg-url': 11.0.4 + whatwg-url: 13.0.0 + + mongodb-memory-server-core@9.1.1: dependencies: - '@types/tmp': 0.2.3 - async-mutex: 0.3.2 + async-mutex: 0.4.1 camelcase: 6.3.0 debug: 4.3.4 find-cache-dir: 3.3.2 - get-port: 5.1.1 - https-proxy-agent: 5.0.1 - md5-file: 5.0.0 - mongodb: 4.16.0 + follow-redirects: 1.15.5(debug@4.3.4) + https-proxy-agent: 7.0.2 + mongodb: 5.9.2 new-find-package-json: 2.0.0 - semver: 7.5.2 - tar-stream: 2.2.0 - tmp: 0.2.1 - tslib: 2.5.3 - uuid: 9.0.0 + semver: 7.5.4 + tar-stream: 3.1.7 + tslib: 2.6.2 yauzl: 2.10.0 transitivePeerDependencies: - - aws-crt + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - kerberos + - mongodb-client-encryption + - snappy - supports-color - dev: true - /mongodb-memory-server@8.11.5: - resolution: {integrity: sha512-/yiw3L2TIMpi9I6GXg379k6d+RG3k+9V9o24kK5h+NBTtYLNuWa5iEvtce/O3jqhg6yo31T5XG2e/Hm4UwBM1A==} - engines: {node: '>=12.22.0'} - requiresBuild: true + mongodb-memory-server@9.1.1: dependencies: - mongodb-memory-server-core: 8.11.5 - tslib: 2.5.3 + mongodb-memory-server-core: 9.1.1 + tslib: 2.6.2 transitivePeerDependencies: - - aws-crt + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - kerberos + - mongodb-client-encryption + - snappy - supports-color - dev: true - /mongodb@4.12.1: - resolution: {integrity: sha512-koT87tecZmxPKtxRQD8hCKfn+ockEL2xBiUvx3isQGI6mFmagWt4f4AyCE9J4sKepnLhMacoCTQQA6SLAI2L6w==} - engines: {node: '>=12.9.0'} + mongodb@4.17.2: dependencies: bson: 4.7.2 mongodb-connection-string-url: 2.6.0 socks: 2.7.1 optionalDependencies: - '@aws-sdk/credential-providers': 3.354.0 - saslprep: 1.0.3 + '@aws-sdk/credential-providers': 3.498.0 + '@mongodb-js/saslprep': 1.1.4 transitivePeerDependencies: - aws-crt - dev: false - /mongodb@4.16.0: - resolution: {integrity: sha512-0EB113Fsucaq1wsY0dOhi1fmZOwFtLOtteQkiqOXGklvWMnSH3g2QS53f0KTP+/6qOkuoXE2JksubSZNmxeI+g==} - engines: {node: '>=12.9.0'} + mongodb@5.9.2: dependencies: - bson: 4.7.2 + bson: 5.5.1 mongodb-connection-string-url: 2.6.0 socks: 2.7.1 optionalDependencies: - '@aws-sdk/credential-providers': 3.354.0 - saslprep: 1.0.3 - transitivePeerDependencies: - - aws-crt - dev: true + '@mongodb-js/saslprep': 1.1.4 - /mongodb@5.6.0: - resolution: {integrity: sha512-z8qVs9NfobHJm6uzK56XBZF8XwM9H294iRnB7wNjF0SnY93si5HPziIJn+qqvUR5QOff/4L0gCD6SShdR/GtVQ==} - engines: {node: '>=14.20.1'} - peerDependencies: - '@aws-sdk/credential-providers': ^3.201.0 - mongodb-client-encryption: '>=2.3.0 <3' - snappy: ^7.2.2 - peerDependenciesMeta: - '@aws-sdk/credential-providers': - optional: true - mongodb-client-encryption: - optional: true - snappy: - optional: true + mongodb@6.3.0: dependencies: - bson: 5.3.0 - mongodb-connection-string-url: 2.6.0 - socks: 2.7.1 - optionalDependencies: - saslprep: 1.0.3 - dev: true + '@mongodb-js/saslprep': 1.1.4 + bson: 6.2.0 + mongodb-connection-string-url: 3.0.0 - /mongoose@6.8.2: - resolution: {integrity: sha512-cIato5N2w/QuJkkh0w4nyf7ty7DqmmP/W8/6PFSM0DrzbxIMlr6VN15LBIceTSJIxbznNl2Mlbh9Rm4sokMw+A==} - engines: {node: '>=12.0.0'} + mongoose@6.12.6: dependencies: bson: 4.7.2 - kareem: 2.5.0 - mongodb: 4.12.1 + kareem: 2.5.1 + mongodb: 4.17.2 mpath: 0.9.0 mquery: 4.0.3 ms: 2.1.3 @@ -6617,49 +8342,30 @@ packages: transitivePeerDependencies: - aws-crt - supports-color - dev: false - /mpath@0.9.0: - resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} - engines: {node: '>=4.0.0'} - dev: false + mpath@0.9.0: {} - /mquery@4.0.3: - resolution: {integrity: sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==} - engines: {node: '>=12.0.0'} + mquery@4.0.3: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.0.0: {} - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.2: {} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + ms@2.1.3: {} - /multer-s3@3.0.1(@aws-sdk/abort-controller@3.347.0)(@aws-sdk/client-s3@3.252.0): - resolution: {integrity: sha512-BFwSO80a5EW4GJRBdUuSHblz2jhVSAze33ZbnGpcfEicoT0iRolx4kWR+AJV07THFRCQ78g+kelKFdjkCCaXeQ==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@aws-sdk/client-s3': ^3.0.0 + multer-s3@3.0.1(@aws-sdk/client-s3@3.498.0): dependencies: - '@aws-sdk/client-s3': 3.252.0 - '@aws-sdk/lib-storage': 3.354.0(@aws-sdk/abort-controller@3.347.0)(@aws-sdk/client-s3@3.252.0) + '@aws-sdk/client-s3': 3.498.0 + '@aws-sdk/lib-storage': 3.498.0(@aws-sdk/client-s3@3.498.0) file-type: 3.9.0 html-comment-regex: 1.1.2 run-parallel: 1.2.0 - transitivePeerDependencies: - - '@aws-sdk/abort-controller' - dev: false - /multer@1.4.4-lts.1: - resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==} - engines: {node: '>= 6.0.0'} + multer@1.4.4-lts.1: dependencies: append-field: 1.0.0 busboy: 1.6.0 @@ -6669,9 +8375,7 @@ packages: type-is: 1.6.18 xtend: 4.0.2 - /multer@1.4.5-lts.1: - resolution: {integrity: sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==} - engines: {node: '>= 6.0.0'} + multer@1.4.5-lts.1: dependencies: append-field: 1.0.0 busboy: 1.6.0 @@ -6680,441 +8384,304 @@ packages: object-assign: 4.1.1 type-is: 1.6.18 xtend: 4.0.2 - dev: false - /mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: true + mute-stream@0.0.8: {} - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare-lite@1.4.0: {} - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} + natural-compare@1.4.0: {} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true + negotiator@0.6.3: {} - /new-find-package-json@2.0.0: - resolution: {integrity: sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew==} - engines: {node: '>=12.22.0'} + neo-async@2.6.2: {} + + nest-winston@1.9.4(@nestjs/common@9.4.3)(winston@3.11.0): + dependencies: + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + fast-safe-stringify: 2.1.1 + winston: 3.11.0 + + new-find-package-json@2.0.0: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - dev: false + node-abort-controller@3.1.1: {} - /node-emoji@1.11.0: - resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} + node-addon-api@5.1.0: {} + + node-downloader-helper@2.1.9: {} + + node-emoji@1.11.0: dependencies: lodash: 4.17.21 - dev: true - /node-fetch@2.6.11: - resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.6.13: dependencies: whatwg-url: 5.0.0 - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 - /node-releases@2.0.12: - resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} - dev: true + node-int64@0.4.0: {} - /nodemon@2.0.20: - resolution: {integrity: sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==} - engines: {node: '>=8.10.0'} - hasBin: true + node-releases@2.0.14: {} + + nodemon@2.0.22: dependencies: chokidar: 3.5.3 debug: 3.2.7(supports-color@5.5.0) ignore-by-default: 1.0.1 minimatch: 3.1.2 pstree.remy: 1.1.8 - semver: 5.7.1 + semver: 5.7.2 simple-update-notifier: 1.1.0 supports-color: 5.5.0 touch: 3.1.0 undefsafe: 2.0.5 - dev: false - /nopt@1.0.10: - resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} - hasBin: true + nopt@1.0.10: dependencies: abbrev: 1.1.1 - dev: false - /nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true + nopt@5.0.0: dependencies: abbrev: 1.1.1 - dev: false - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + normalize-path@3.0.0: {} - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - dev: true - /npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + npm-run-path@5.2.0: + dependencies: + path-key: 4.0.0 + + npmlog@5.0.1: dependencies: are-we-there-yet: 2.0.0 console-control-strings: 1.1.0 gauge: 3.0.2 set-blocking: 2.0.0 - dev: false - - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} + object-assign@4.1.1: {} - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + object-inspect@1.13.1: {} - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + one-time@1.0.0: + dependencies: + fn.name: 1.1.0 + + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - dev: true - /optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} - engines: {node: '>= 0.8.0'} + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + optionator@0.9.3: dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.3 - dev: true - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + ora@5.4.1: dependencies: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.0 + cli-spinners: 2.9.2 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 - dev: true - /os-name@4.0.1: - resolution: {integrity: sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==} - engines: {node: '>=10'} + os-name@4.0.1: dependencies: macos-release: 2.5.1 windows-release: 4.0.0 - dev: true - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true + os-tmpdir@1.0.2: {} - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + p-limit@2.3.0: dependencies: p-try: 2.2.0 - dev: true - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - dev: true - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-locate@4.1.0: dependencies: p-limit: 2.3.0 - dev: true - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + p-try@2.2.0: {} + + parent-module@1.0.1: dependencies: callsites: 3.1.0 - dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.22.5 + '@babel/code-frame': 7.23.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} + parseurl@1.3.3: {} - /passport-jwt@4.0.1: - resolution: {integrity: sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==} + passport-jwt@4.0.1: dependencies: - jsonwebtoken: 9.0.0 + jsonwebtoken: 9.0.2 passport-strategy: 1.0.0 - dev: false - /passport-strategy@1.0.0: - resolution: {integrity: sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==} - engines: {node: '>= 0.4.0'} - dev: false + passport-strategy@1.0.0: {} - /passport@0.6.0: - resolution: {integrity: sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==} - engines: {node: '>= 0.4.0'} + passport@0.6.0: dependencies: passport-strategy: 1.0.0 pause: 0.0.1 utils-merge: 1.0.1 - dev: false - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true + path-exists@4.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true + path-scurry@1.10.1: + dependencies: + lru-cache: 10.1.0 + minipass: 7.0.4 - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true + path-to-regexp@0.1.7: {} - /path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@3.2.0: {} - /path-to-regexp@3.2.0: - resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} + path-type@4.0.0: {} - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true + pause@0.0.1: {} - /pause@0.0.1: - resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} - dev: false + pend@1.2.0: {} - /pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - dev: true + picocolors@1.0.0: {} - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true + picomatch@2.3.1: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + pidtree@0.6.0: {} - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true + pirates@4.0.6: {} - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - dev: true - /pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - dev: true + pluralize@8.0.0: {} - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + prelude-ls@1.2.1: {} - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} + prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 - dev: true - /prettier@2.3.2: - resolution: {integrity: sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true + prettier@2.8.8: {} - /pretty-format@29.5.0: - resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@29.7.0: dependencies: - '@jest/schemas': 29.4.3 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: true - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process-nextick-args@2.0.1: {} - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} + progress@2.0.3: {} - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: true - /proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false + proxy-from-env@1.1.0: {} - /pstree.remy@1.1.8: - resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} - dev: false + pstree.remy@1.1.8: {} - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: true - /punycode@1.3.2: - resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} + punycode@1.3.2: {} - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} + punycode@2.3.1: {} - /pure-rand@6.0.2: - resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} - dev: true + pure-rand@6.0.4: {} - /qs@6.10.3: - resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} - engines: {node: '>=0.6'} + qs@6.11.0: dependencies: side-channel: 1.0.4 - /qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} + qs@6.11.2: dependencies: side-channel: 1.0.4 - dev: false - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.4 - dev: true + querystring@0.2.0: {} - /querystring@0.2.0: - resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + queue-microtask@1.2.3: {} - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue-tick@1.0.1: {} - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 - dev: true - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} + range-parser@1.2.1: {} - /raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} - engines: {node: '>= 0.8'} + raw-body@2.5.1: dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + react-is@18.2.0: {} + + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -7124,189 +8691,109 @@ packages: string_decoder: 1.1.1 util-deprecate: 1.0.2 - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@3.6.0: dependencies: picomatch: 2.3.1 - /rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} + rechoir@0.6.2: dependencies: - resolve: 1.22.2 - dev: true + resolve: 1.22.8 - /reflect-metadata@0.1.13: - resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + reflect-metadata@0.1.14: {} - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: false - - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true + regenerator-runtime@0.13.11: {} - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + require-directory@2.1.1: {} - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true + require-from-string@2.0.2: {} - /resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} + resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 - dev: true - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true + resolve-from@4.0.0: {} - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true + resolve-from@5.0.0: {} - /resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - dev: true + resolve.exports@2.0.2: {} - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true + resolve@1.22.8: dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: true - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true + reusify@1.0.4: {} + + rfdc@1.3.1: {} + + rimraf@2.7.1: dependencies: glob: 7.2.3 - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.2.3 - /run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: true - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rimraf@4.4.1: dependencies: - queue-microtask: 1.2.3 + glob: 9.3.5 - /rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - dependencies: - tslib: 1.14.1 - dev: true + run-async@2.4.1: {} - /rxjs@7.2.0: - resolution: {integrity: sha512-aX8w9OpKrQmiPKfT1bqETtUr9JygIz6GZ+gql8v7CijClsP0laoFUdKzxFAoWuRdSlOdU2+crss+cMf+cqMTnw==} + run-parallel@1.2.0: dependencies: - tslib: 2.1.0 + queue-microtask: 1.2.3 - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + rxjs@7.8.1: dependencies: - tslib: 2.5.3 - dev: true + tslib: 2.6.2 - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-buffer@5.1.2: {} - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-buffer@5.2.1: {} - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + safe-stable-stringify@2.4.3: {} - /saslprep@1.0.3: - resolution: {integrity: sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==} - engines: {node: '>=6'} - requiresBuild: true - dependencies: - sparse-bitfield: 3.0.3 - optional: true + safer-buffer@2.1.2: {} - /sax@1.2.1: - resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} + sax@1.2.1: {} - /schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} + schema-utils@3.3.0: dependencies: - '@types/json-schema': 7.0.12 + '@types/json-schema': 7.0.15 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true - /seedrandom@3.0.5: - resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} - dev: false + seedrandom@3.0.5: {} - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - dev: false + semver@5.7.2: {} - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true + semver@6.3.1: {} - /semver@7.0.0: - resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} - hasBin: true - dev: false + semver@7.0.0: {} - /semver@7.5.2: - resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==} - engines: {node: '>=10'} - hasBin: true + semver@7.5.4: dependencies: lru-cache: 6.0.0 - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} + send@0.18.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -7324,15 +8811,11 @@ packages: transitivePeerDependencies: - supports-color - /serialize-javascript@6.0.1: - resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 - dev: true - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} + serve-static@1.15.0: dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 @@ -7341,300 +8824,232 @@ packages: transitivePeerDependencies: - supports-color - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false + set-blocking@2.0.0: {} - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + set-function-length@1.2.0: + dependencies: + define-data-property: 1.1.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - dev: true - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true + shebang-regex@3.0.0: {} - /shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true + shell-quote@1.8.1: {} + + shelljs@0.8.5: dependencies: glob: 7.2.3 interpret: 1.4.0 rechoir: 0.6.2 - dev: true - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.4: dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - object-inspect: 1.12.3 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 - /sift@16.0.1: - resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} - dev: false + sift@16.0.1: {} - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@3.0.7: {} - /simple-update-notifier@1.1.0: - resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} - engines: {node: '>=8.10.0'} + signal-exit@4.1.0: {} + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + simple-update-notifier@1.1.0: dependencies: semver: 7.0.0 - dev: false - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true + sisteransi@1.0.5: {} - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true + slash@3.0.0: {} - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 - /socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + slugify@1.6.6: {} + + smart-buffer@4.2.0: {} + + socks@2.7.1: dependencies: ip: 2.0.0 smart-buffer: 4.2.0 - /source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + sonarqube-scanner@3.3.0: dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true + adm-zip: 0.5.10 + fancy-log: 2.0.0 + https-proxy-agent: 7.0.2 + jest-sonar-reporter: 2.0.0 + mkdirp: 3.0.1 + node-downloader-helper: 2.1.9 + progress: 2.0.3 + shell-quote: 1.8.1 + slugify: 1.6.6 + transitivePeerDependencies: + - supports-color - /source-map-support@0.5.20: - resolution: {integrity: sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==} + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - /source-map@0.7.3: - resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} - engines: {node: '>= 8'} - dev: true + source-map@0.6.1: {} - /sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true + source-map@0.7.4: {} - /sparse-bitfield@3.0.3: - resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} - requiresBuild: true + sparse-bitfield@3.0.3: dependencies: memory-pager: 1.5.0 - optional: true - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sprintf-js@1.0.3: {} - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + stack-trace@0.0.10: {} + + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 - dev: true - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} + statuses@2.0.1: {} - /stream-browserify@3.0.0: - resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + stream-browserify@3.0.0: dependencies: inherits: 2.0.4 readable-stream: 3.6.2 - dev: false - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} + streamsearch@1.1.0: {} - /string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} + streamx@2.15.6: + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + + string-argv@0.3.2: {} + + string-length@4.0.2: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 - dev: true - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string-width@7.1.0: + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true + strip-bom@3.0.0: {} - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true + strip-bom@4.0.0: {} - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: true + strip-final-newline@2.0.0: {} - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true + strip-final-newline@3.0.0: {} - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + strip-json-comments@3.1.1: {} - /superagent@6.1.0: - resolution: {integrity: sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==} - engines: {node: '>= 7.0.0'} - deprecated: Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at . + strnum@1.0.5: {} + + superagent@8.1.2: dependencies: - component-emitter: 1.3.0 + component-emitter: 1.3.1 cookiejar: 2.1.4 debug: 4.3.4 fast-safe-stringify: 2.1.1 - form-data: 3.0.1 - formidable: 1.2.6 + form-data: 4.0.0 + formidable: 2.1.2 methods: 1.1.2 mime: 2.6.0 qs: 6.11.2 - readable-stream: 3.6.2 - semver: 7.5.2 + semver: 7.5.4 transitivePeerDependencies: - supports-color - dev: true - /supertest@6.1.3: - resolution: {integrity: sha512-v2NVRyP73XDewKb65adz+yug1XMtmvij63qIWHZzSX8tp6wiq6xBLUy4SUAd2NII6wIipOmHT/FD9eicpJwdgQ==} - engines: {node: '>=6.0.0'} + supertest@6.3.4: dependencies: methods: 1.1.2 - superagent: 6.1.0 + superagent: 8.1.2 transitivePeerDependencies: - supports-color - dev: true - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - dev: true - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true + supports-preserve-symlinks-flag@1.0.0: {} - /swagger-ui-dist@4.18.2: - resolution: {integrity: sha512-oVBoBl9Dg+VJw8uRWDxlyUyHoNEDC0c1ysT6+Boy6CTgr2rUcLcfPon4RvxgS2/taNW6O0+US+Z/dlAsWFjOAQ==} - dev: false + swagger-ui-dist@4.18.2: {} - /swagger-ui-dist@5.7.2: - resolution: {integrity: sha512-mVZc9QVQ6pTCV5crli3+Ng+DoMPwdtMHK8QLk2oX8Mtamp4D/hV+uYdC3lV0JZrDgpNEcjs0RrWTqMwwosuLPQ==} - dev: false + swagger-ui-dist@5.11.0: {} - /swagger-ui-express@5.0.0(express@4.18.2): - resolution: {integrity: sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==} - engines: {node: '>= v0.10.32'} - peerDependencies: - express: '>=4.0.0 || >=5.0.0-beta' + swagger-ui-express@5.0.0(express@4.18.2): dependencies: express: 4.18.2 - swagger-ui-dist: 5.7.2 - dev: false + swagger-ui-dist: 5.11.0 - /symbol-observable@4.0.0: - resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} - engines: {node: '>=0.10'} - dev: true + symbol-observable@4.0.0: {} - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true + tapable@2.2.1: {} - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} + tar-stream@3.1.7: dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true + b4a: 1.6.4 + fast-fifo: 1.3.2 + streamx: 2.15.6 - /tar@4.4.19: - resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} - engines: {node: '>=4.5'} + tar@4.4.19: dependencies: chownr: 1.1.4 fs-minipass: 1.2.7 @@ -7643,529 +9058,266 @@ packages: mkdirp: 0.5.6 safe-buffer: 5.2.1 yallist: 3.1.1 - dev: false - /tar@6.1.15: - resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} - engines: {node: '>=10'} + tar@6.2.0: dependencies: chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: false - - /terser-webpack-plugin@5.3.9(webpack@5.73.0): - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + terser-webpack-plugin@5.3.10(webpack@5.82.1): dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 - serialize-javascript: 6.0.1 - terser: 5.18.1 - webpack: 5.73.0 - dev: true + serialize-javascript: 6.0.2 + terser: 5.27.0 + webpack: 5.82.1 - /terser-webpack-plugin@5.3.9(webpack@5.87.0): - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true + terser-webpack-plugin@5.3.10(webpack@5.89.0): dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 - serialize-javascript: 6.0.1 - terser: 5.18.1 - webpack: 5.87.0 - dev: true + serialize-javascript: 6.0.2 + terser: 5.27.0 + webpack: 5.89.0 - /terser@5.18.1: - resolution: {integrity: sha512-j1n0Ao919h/Ai5r43VAnfV/7azUYW43GPxK7qSATzrsERfW7+y2QW9Cp9ufnRF5CQUWbnLSo7UJokSWCqg4tsQ==} - engines: {node: '>=10'} - hasBin: true + terser@5.27.0: dependencies: - '@jridgewell/source-map': 0.3.3 - acorn: 8.9.0 + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.3 commander: 2.20.3 - source-map-support: 0.5.20 - dev: true + source-map-support: 0.5.21 - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: true - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-hex@1.0.0: {} - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true + text-table@0.2.0: {} - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: true + through@2.3.8: {} - /tmp@0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} + tmp@0.0.33: dependencies: - rimraf: 3.0.2 - dev: true + os-tmpdir: 1.0.2 - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true + tmpl@1.0.5: {} - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true + to-fast-properties@2.0.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} + toidentifier@1.0.1: {} - /touch@3.1.0: - resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} - hasBin: true + touch@3.1.0: dependencies: nopt: 1.0.10 - dev: false - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@0.0.3: {} - /tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} + tr46@3.0.0: dependencies: - punycode: 2.3.0 + punycode: 2.3.1 - /tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: true + tr46@4.1.1: + dependencies: + punycode: 2.3.1 - /ts-jest@29.0.3(@babel/core@7.22.5)(jest@29.3.1)(typescript@4.7.4): - resolution: {integrity: sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true + tree-kill@1.2.2: {} + + triple-beam@1.4.1: {} + + ts-jest@29.1.2(@babel/core@7.23.7)(jest@29.7.0)(typescript@5.3.3): dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.23.7 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.3.1(@types/node@18.11.18)(ts-node@10.0.0) - jest-util: 29.5.0 + jest: 29.7.0(@types/node@20.11.5)(ts-node@10.9.2) + jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.5.2 - typescript: 4.7.4 + semver: 7.5.4 + typescript: 5.3.3 yargs-parser: 21.1.1 - dev: true - /ts-loader@9.2.3(typescript@4.7.4)(webpack@5.87.0): - resolution: {integrity: sha512-sEyWiU3JMHBL55CIeC4iqJQadI0U70A5af0kvgbNLHVNz2ACztQg0j/9x10bjjIht8WfFYLKfn4L6tkZ+pu+8Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - typescript: '*' - webpack: ^5.0.0 + ts-loader@9.5.1(typescript@5.3.3)(webpack@5.89.0): dependencies: chalk: 4.1.2 enhanced-resolve: 5.15.0 micromatch: 4.0.5 - semver: 7.5.2 - typescript: 4.7.4 - webpack: 5.87.0 - dev: true - - /ts-node-dev@2.0.0(@types/node@18.11.18)(typescript@4.7.4): - resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} - engines: {node: '>=0.8.0'} - hasBin: true - peerDependencies: - node-notifier: '*' - typescript: '*' - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - chokidar: 3.5.3 - dynamic-dedupe: 0.3.0 - minimist: 1.2.8 - mkdirp: 1.0.4 - resolve: 1.22.2 - rimraf: 2.7.1 - source-map-support: 0.5.20 - tree-kill: 1.2.2 - ts-node: 10.9.1(@types/node@18.11.18)(typescript@4.7.4) - tsconfig: 7.0.0 - typescript: 4.7.4 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - dev: true - - /ts-node@10.0.0(@types/node@18.11.18)(typescript@4.7.4): - resolution: {integrity: sha512-ROWeOIUvfFbPZkoDis0L/55Fk+6gFQNZwwKPLinacRl6tsxstTF1DbAcLKkovwnpKMVvOMHP1TIbnwXwtLg1gg==} - engines: {node: '>=12.0.0'} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.45' - '@swc/wasm': '>=1.2.45' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 18.11.18 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - source-map-support: 0.5.20 - typescript: 4.7.4 - yn: 3.1.1 - dev: true + semver: 7.5.4 + source-map: 0.7.4 + typescript: 5.3.3 + webpack: 5.89.0 - /ts-node@10.9.1(@types/node@18.11.18)(typescript@4.7.4): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + ts-node@10.9.2(@types/node@20.11.5)(typescript@5.3.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.11.18 - acorn: 8.9.0 - acorn-walk: 8.2.0 + '@types/node': 20.11.5 + acorn: 8.11.3 + acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.7.4 + typescript: 5.3.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - /tsconfig-paths-webpack-plugin@3.5.2: - resolution: {integrity: sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==} + tsconfig-paths-webpack-plugin@4.0.1: dependencies: chalk: 4.1.2 enhanced-resolve: 5.15.0 - tsconfig-paths: 3.14.1 - dev: true - - /tsconfig-paths@3.14.1: - resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true + tsconfig-paths: 4.2.0 - /tsconfig-paths@4.1.1: - resolution: {integrity: sha512-VgPrtLKpRgEAJsMj5Q/I/mXouC6A/7eJ/X4Nuk6o0cRPwBtznYxTCU4FodbexbzH9somBPEXYi0ZkUViUpJ21Q==} - engines: {node: '>=6'} + tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true - - /tsconfig@7.0.0: - resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} - dependencies: - '@types/strip-bom': 3.0.0 - '@types/strip-json-comments': 0.0.30 - strip-bom: 3.0.0 - strip-json-comments: 2.0.1 - dev: true - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib@2.1.0: - resolution: {integrity: sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==} + tslib@1.14.1: {} - /tslib@2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + tslib@2.5.3: {} - /tslib@2.5.3: - resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} + tslib@2.6.2: {} - /tsutils@3.21.0(typescript@4.7.4): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + tsutils@3.21.0(typescript@5.3.3): dependencies: tslib: 1.14.1 - typescript: 4.7.4 - dev: true + typescript: 5.3.3 - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true + type-detect@4.0.8: {} - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true + type-fest@0.21.3: {} - /type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} + type-fest@3.13.1: {} + + type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 - /typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + typedarray@0.0.6: {} - /typescript@4.7.4: - resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true + typescript@4.9.5: {} - /undefsafe@2.0.5: - resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} - dev: false + typescript@5.3.3: {} - /universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - dev: true + uid@2.0.2: + dependencies: + '@lukeed/csprng': 1.1.0 - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} + undefsafe@2.0.5: {} - /update-browserslist-db@1.0.11(browserslist@4.21.9): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + undici-types@5.26.5: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + update-browserslist-db@1.0.13(browserslist@4.22.2): dependencies: - browserslist: 4.21.9 + browserslist: 4.22.2 escalade: 3.1.1 picocolors: 1.0.0 - dev: true - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: - punycode: 2.3.0 - dev: true + punycode: 2.3.1 - /url@0.10.3: - resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==} + url@0.10.3: dependencies: punycode: 1.3.2 querystring: 0.2.0 - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util-deprecate@1.0.2: {} - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + util@0.12.5: dependencies: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.10 - which-typed-array: 1.1.9 + is-typed-array: 1.1.12 + which-typed-array: 1.1.13 - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} + utils-merge@1.0.1: {} - /uuid@8.0.0: - resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} - hasBin: true + uuid@8.0.0: {} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true + uuid@8.3.2: {} - /uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} - hasBin: true + uuid@9.0.0: {} - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true + uuid@9.0.1: {} - /v8-compile-cache@2.3.0: - resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - dev: true + v8-compile-cache-lib@3.0.1: {} - /v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} - engines: {node: '>=10.12.0'} + v8-to-istanbul@9.2.0: dependencies: - '@jridgewell/trace-mapping': 0.3.18 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 - dev: true + '@jridgewell/trace-mapping': 0.3.22 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 - /validator@13.9.0: - resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} - engines: {node: '>= 0.10'} + validator@13.11.0: {} - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} + vary@1.1.2: {} - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + walker@1.0.8: dependencies: makeerror: 1.0.12 - dev: true - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} + watchpack@2.4.0: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: true - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 - dev: true - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@3.0.1: {} - /webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} + webidl-conversions@7.0.0: {} - /webpack-node-externals@3.0.0: - resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} - engines: {node: '>=6'} - dev: true + webpack-node-externals@3.0.0: {} - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: true + webpack-sources@3.2.3: {} - /webpack@5.73.0: - resolution: {integrity: sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true + webpack@5.82.1: dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 0.0.51 - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/wasm-edit': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.9.0 - acorn-import-assertions: 1.9.0(acorn@8.9.0) - browserslist: 4.21.9 + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.22.2 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 - es-module-lexer: 0.9.3 + es-module-lexer: 1.4.1 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -8176,36 +9328,27 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.73.0) + terser-webpack-plugin: 5.3.10(webpack@5.82.1) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - dev: true - /webpack@5.87.0: - resolution: {integrity: sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true + webpack@5.89.0: dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 1.0.1 + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.9.0 - acorn-import-assertions: 1.9.0(acorn@8.9.0) - browserslist: 4.21.9 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.22.2 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 - es-module-lexer: 1.3.0 + es-module-lexer: 1.4.1 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -8216,131 +9359,114 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.87.0) + terser-webpack-plugin: 5.3.10(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - dev: true - /whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} + whatwg-url@11.0.0: dependencies: tr46: 3.0.0 webidl-conversions: 7.0.0 - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@13.0.0: + dependencies: + tr46: 4.1.1 + webidl-conversions: 7.0.0 + + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - /which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.13: dependencies: available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - dev: true - /wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + wide-align@1.1.5: dependencies: string-width: 4.2.3 - dev: false - /windows-release@4.0.0: - resolution: {integrity: sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==} - engines: {node: '>=10'} + windows-release@4.0.0: dependencies: execa: 4.1.0 - dev: true - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - dev: true + winston-transport@4.6.0: + dependencies: + logform: 2.6.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + winston@3.11.0: + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.5 + is-stream: 2.0.1 + logform: 2.6.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.4.3 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.6.0 + + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.1.0 + strip-ansi: 7.1.0 - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: true - /xml2js@0.4.19: - resolution: {integrity: sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==} + xml2js@0.6.2: dependencies: sax: 1.2.1 - xmlbuilder: 9.0.7 + xmlbuilder: 11.0.1 - /xmlbuilder@9.0.7: - resolution: {integrity: sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==} - engines: {node: '>=4.0'} + xml@1.0.1: {} - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + xmlbuilder@11.0.1: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} + xtend@4.0.2: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + y18n@5.0.8: {} - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@3.1.1: {} - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true + yallist@4.0.0: {} - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: false + yaml@1.10.2: {} - /yargs-parser@21.0.1: - resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} - engines: {node: '>=12'} - dev: true + yaml@2.3.4: {} - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true + yargs-parser@20.2.9: {} - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} + yargs-parser@21.1.1: {} + + yargs@16.2.0: dependencies: cliui: 7.0.4 escalade: 3.1.1 @@ -8349,11 +9475,8 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 - dev: false - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -8362,21 +9485,12 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true - /yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yauzl@2.10.0: dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - dev: true - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true + yn@3.1.1: {} - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true + yocto-queue@0.1.0: {} diff --git a/sonar-project.ts b/sonar-project.ts new file mode 100644 index 0000000..c465086 --- /dev/null +++ b/sonar-project.ts @@ -0,0 +1,46 @@ +require("dotenv").config(); +const sonarqubeScanner = require("sonarqube-scanner"); +sonarqubeScanner( + { + serverUrl: "http://localhost:9000", + options: { + "sonar.token": String(process.env.S_TOKEN_ACESS), + "sonar.sources": "src", + "sonar.inclusions": "src/**/*.ts", + "sonar.projectKey": String(process.env.S_NAME_PROJECT), + // unit tests + "sonar.tests": "src", + "sonar.test.inclusions": "src/**/*.spec.ts", + "sonar.coverage.jest.reportPaths": "coverage/lcov-report/*.lcov", + "sonar.javascript.lcov.reportPaths": "coverage/lcov.info", + + // e2e tests + "sonar.tests.e2e": "test", + "sonar.test.e2e.inclusions": "test/**/*.e2e-spec.ts", + "sonar.coverage.jest.e2e.reportPaths": "test/coverage/lcov-report/*.lcov", + "sonar.javascript.lcov.e2e.reportPaths": "test/coverage/lcov.info", + + "sonar.coverage.exclusions": + " \ + **/node_modules/**,\ + **/dist/**,\ + **/*model.ts,\ + **/*schema.ts,\ + **/*config.ts,\ + **/*module.ts,\ + **/*main.ts,\ + **/*dto.ts,\ + **/*enum.ts,\ + **/*strategy.ts,\ + **/guards/**,\ + **/mock/**,\ + **/mocks/**,\ + **/dto/**,\ + **/config/**,\ + **/interfaces/**,\ + **/*.js,\ + **/coverage/**", + }, + }, + () => {} +); diff --git a/src/app.controller.ts b/src/app.controller.ts deleted file mode 100644 index a8fdc11..0000000 --- a/src/app.controller.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Controller, Get, UseGuards } from "@nestjs/common"; -import { ApiOperation, ApiTags } from "@nestjs/swagger"; -import { AppService } from "./app.service"; -import { AuthGuard } from "@nestjs/passport"; -@Controller() -@ApiTags("Home") -export class AppController { - constructor(private readonly appService: AppService) {} - - @Get() - @UseGuards(AuthGuard("jwt")) - @ApiOperation({ summary: "access the home" }) - getHello(): object { - return this.appService.getIndex(); - } -} diff --git a/src/app.module.ts b/src/app.module.ts index dea0e95..88f1bb8 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,22 +1,27 @@ import { MiddlewareConsumer, Module, RequestMethod } from "@nestjs/common"; -import { AppController } from "./app.controller"; -import { AppService } from "./app.service"; import { MongooseModule } from "@nestjs/mongoose"; -import { UserModule } from "./users/users.module"; -import { ImageModule } from "./image/image.module"; -import { ProductModule } from "./product/product.module"; -import { ProviderModule } from "./providers/providers.module"; -import { OderModule } from "./order/order.module"; -import { RecommendationModule } from "./componentRecommendation /recommendation.module"; -import { AuthModule } from "./auth/auth.module"; -import { JwtInjectionMiddleware } from "./auth/jwt-injection.middleware"; -let MongoUrl = ""; -if (process.env.ENV_AMB === "PROD") MongoUrl = process.env.mongoPROD; -else if (process.env.ENV_AMB === "QA") MongoUrl = process.env.mongoQA; -else MongoUrl = null; +import { UserModule } from "@users/users.module"; +import { ImageModule } from "@image/image.module"; +import { ProductModule } from "@product/product.module"; +import { ProviderModule } from "@providers/providers.module"; +import { OderModule } from "@order/order.module"; +import { RecommendationModule } from "@componentRecommendation/recommendation.module"; +import { AuthModule } from "@auth/auth.module"; +import { JwtInjectionMiddleware } from "@auth/middlewares/jwt-injection.middleware"; +import { ConfigModule } from "@nestjs/config"; +import { WinstonModule } from "nest-winston"; +import winstonConfig from "@configs/winston.config"; +import { envseEnum } from "@enums/envs.enum"; +import { configService } from "@configs/configService.config"; +const envAmb = configService.get("ENV_AMB"); @Module({ imports: [ - MongooseModule.forRoot(MongoUrl), + ConfigModule.forRoot({ + isGlobal: true, + envFilePath: ".env", + }), + WinstonModule.forRoot(winstonConfig), + MongooseModule.forRoot(envseEnum[envAmb]), UserModule, ImageModule, ProductModule, @@ -25,8 +30,7 @@ else MongoUrl = null; RecommendationModule, AuthModule, ], - controllers: [AppController], - providers: [AppService], + controllers: [], }) export class AppModule { configure(consumer: MiddlewareConsumer) { diff --git a/src/app.service.ts b/src/app.service.ts deleted file mode 100644 index 2d4032a..0000000 --- a/src/app.service.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Injectable } from "@nestjs/common"; - -@Injectable() -export class AppService { - getIndex(): object { - return { menssage: "servidor iniciado" }; - } -} diff --git a/src/app.spec.ts b/src/app.spec.ts deleted file mode 100644 index 80781df..0000000 --- a/src/app.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Test, TestingModule } from "@nestjs/testing"; -import { AppController } from "./app.controller"; -import { AppService } from "./app.service"; - -describe("AppController", () => { - let appController: AppController; - - beforeEach(async () => { - const app: TestingModule = await Test.createTestingModule({ - controllers: [AppController], - providers: [AppService], - }).compile(); - - appController = app.get(AppController); - }); - - describe("👨‍💻 Methods:", () => { - it("run the method getHello()", () => { - expect(appController.getHello()).toHaveProperty("menssage"); - }); - }); -}); diff --git a/src/auth/auth.module.ts b/src/auth/auth.module.ts deleted file mode 100644 index fcd8e93..0000000 --- a/src/auth/auth.module.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Module } from "@nestjs/common"; -import { PassportModule } from "@nestjs/passport"; -import { JwtModule } from "@nestjs/jwt"; -import { jwtConfig } from "./config/jwt.config"; -import { AuthController } from "./auth.controller"; -import { AuthService } from "./auth.service"; -import { JwtStrategy } from "./strategies/jwt.strategy"; -import { UserService } from "src/users/user.service"; -import { MongooseModule } from "@nestjs/mongoose"; -import { UserSchema, Users } from "src/users/Schema/user.schema"; -import { RecommendationService } from "src/componentRecommendation /recommendation.service"; -import { ProductServices } from "src/product/product.service"; -import { ImagemSchema, imagem } from "src/image/Schema/image.schema"; -import { - Recommendation, - RrecommendationSchema, -} from "src/componentRecommendation /Schema/Rrecommendation.schema"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; - -@Module({ - imports: [ - MongooseModule.forFeature([{ name: Users.name, schema: UserSchema }]), - MongooseModule.forFeature([{ name: Users.name, schema: UserSchema }]), - MongooseModule.forFeature([{ name: imagem.name, schema: ImagemSchema }]), - MongooseModule.forFeature([ - { name: Recommendation.name, schema: RrecommendationSchema }, - ]), - MongooseModule.forFeature([{ name: Product.name, schema: ProductSchema }]), - MongooseModule.forFeature([ - { name: Provider.name, schema: ProviderSchema }, - ]), - PassportModule, - JwtModule.register(jwtConfig), - // Outros módulos necessários para o AuthModule - ], - controllers: [AuthController], - providers: [ - AuthService, - JwtStrategy, - UserService, - RecommendationService, - ProductServices, - ], - exports: [AuthService], // Se AuthService for usado em outros módulos -}) -export class AuthModule {} diff --git a/src/auth/auth.spec.ts b/src/auth/auth.spec.ts deleted file mode 100644 index 402cb2d..0000000 --- a/src/auth/auth.spec.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { JwtModule } from "@nestjs/jwt"; -import { MongooseModule } from "@nestjs/mongoose"; -import { PassportModule } from "@nestjs/passport"; -import { Test, TestingModule } from "@nestjs/testing"; -import { - Recommendation, - RrecommendationSchema, -} from "src/componentRecommendation /Schema/Rrecommendation.schema"; -import { ImagemSchema, imagem } from "src/image/Schema/image.schema"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; -import { UserSchema, Users } from "src/users/Schema/user.schema"; -import { jwtConfig } from "./config/jwt.config"; -import { AuthController } from "./auth.controller"; -import { AuthService } from "./auth.service"; -import { JwtStrategy } from "./strategies/jwt.strategy"; -import { UserService } from "src/users/user.service"; -import { RecommendationService } from "src/componentRecommendation /recommendation.service"; -import { ProductServices } from "src/product/product.service"; -const urlConfig = require("../globalConfig.json"); -describe("AuthController", () => { - let authController: AuthController; - - beforeEach(async () => { - const app: TestingModule = await Test.createTestingModule({ - imports: [ - MongooseModule.forRoot(urlConfig.mongoUri), - MongooseModule.forFeature([{ name: Users.name, schema: UserSchema }]), - MongooseModule.forFeature([{ name: Users.name, schema: UserSchema }]), - MongooseModule.forFeature([ - { name: imagem.name, schema: ImagemSchema }, - ]), - MongooseModule.forFeature([ - { name: Recommendation.name, schema: RrecommendationSchema }, - ]), - MongooseModule.forFeature([ - { name: Product.name, schema: ProductSchema }, - ]), - MongooseModule.forFeature([ - { name: Provider.name, schema: ProviderSchema }, - ]), - PassportModule, - JwtModule.register(jwtConfig), - // Outros módulos necessários para o AuthModule - ], - controllers: [AuthController], - providers: [ - AuthService, - JwtStrategy, - UserService, - RecommendationService, - ProductServices, - ], - exports: [AuthService], // Se AuthService for usado em outros módulos - }).compile(); - authController = app.get(AuthController); - }); - - describe("👨‍💻 MethodsAuth", () => { - it("👨‍💻loginUser() ", async () => { - const loginApp = await authController.LoginApp({ - client_id: String(process.env.clientId), - client_secret: String(process.env.clientSecret), - }); - expect(loginApp.access_token); - }); - }); -}); diff --git a/src/auth/config/jwt.config.ts b/src/auth/config/jwt.config.ts deleted file mode 100644 index 04982da..0000000 --- a/src/auth/config/jwt.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { JwtModuleOptions } from "@nestjs/jwt"; -export const jwtConfig: JwtModuleOptions = { - secret: String(process.env.clientSecret), // Defina sua própria chave secreta - signOptions: { expiresIn: "3min" }, // Define a expiração do token JWT -}; diff --git a/src/auth/jwt-injection.middleware.ts b/src/auth/jwt-injection.middleware.ts deleted file mode 100644 index b5cbe7e..0000000 --- a/src/auth/jwt-injection.middleware.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Injectable, NestMiddleware } from "@nestjs/common"; -import { AuthService } from "./auth.service"; - -@Injectable() -export class JwtInjectionMiddleware implements NestMiddleware { - constructor(private readonly AuthService: AuthService) {} - use(req: any, res: any, next: () => void) { - // Verifique se já existe um token JWT na solicitação - if (!req.headers.authorization) { - // Se não houver token JWT, você pode injetá-lo aqui a partir de onde você o armazena (por exemplo, armazenamento local, cookie, etc.) - // Substitua 'YOUR_TOKEN' pelo token JWT adequado - req.headers.authorization = `Bearer ${this.AuthService.getAccessToken()}`; - } - next(); - } -} diff --git a/src/componentRecommendation /recommendation.module.ts b/src/componentRecommendation /recommendation.module.ts deleted file mode 100644 index b32e04d..0000000 --- a/src/componentRecommendation /recommendation.module.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Module } from "@nestjs/common"; -import { RecommendationController } from "./recommendation.controller"; -import { RecommendationService } from "./recommendation.service"; -import { MongooseModule } from "@nestjs/mongoose"; -import { - Recommendation, - RrecommendationSchema, -} from "./Schema/Rrecommendation.schema"; -import { UserSchema, Users } from "src/users/Schema/user.schema"; -import { ProductServices } from "src/product/product.service"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import { ImagemSchema, imagem } from "src/image/Schema/image.schema"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; - -@Module({ - imports: [ - MongooseModule.forFeature([ - { name: Recommendation.name, schema: RrecommendationSchema }, - { name: Product.name, schema: ProductSchema }, - { name: imagem.name, schema: ImagemSchema }, - { name: Provider.name, schema: ProviderSchema }, - { name: Users.name, schema: UserSchema }, - ]), - ], - controllers: [RecommendationController], - providers: [RecommendationService, ProductServices], -}) -export class RecommendationModule {} diff --git a/src/componentRecommendation /recommendation.service.ts b/src/componentRecommendation /recommendation.service.ts deleted file mode 100644 index 9c24e4c..0000000 --- a/src/componentRecommendation /recommendation.service.ts +++ /dev/null @@ -1,180 +0,0 @@ -import { Injectable, NotFoundException } from "@nestjs/common"; -import { InjectModel } from "@nestjs/mongoose"; -import { - Recommendation, - RecommendationDocumnet, -} from "./Schema/Rrecommendation.schema"; -import { Model } from "mongoose"; -import { Product } from "src/product/Schema/product.schema"; -import { ProductServices } from "src/product/product.service"; - -@Injectable() -export class RecommendationService { - constructor( - @InjectModel(Recommendation.name) - private readonly RecommendationModel: Model, - private readonly ProductService: ProductServices - ) {} - - async listRecommedations(): Promise { - const listRecommedations = await this.RecommendationModel.find() - .populate("user") - .exec(); - if (!listRecommedations) throw new NotFoundException(); - else return listRecommedations; - } - - async RegisterRecommedations( - createRecommedation: Recommendation - ): Promise { - const create = await this.RecommendationModel.create(createRecommedation); - if (!create) throw new NotFoundException(); - else return create; - } - - async ListRecommedationById(id: string): Promise { - const ListRecommedationById = await this.RecommendationModel.findById({ - _id: id, - }).exec(); - if (!ListRecommedationById) - throw new NotFoundException("recomendação inexistente"); - else return ListRecommedationById; - } - - async updateRecommedation( - id: string, - updateRecommendation: Recommendation - ): Promise { - const findBydId = await this.RecommendationModel.findById(id); - if (!findBydId) - throw new NotFoundException("id da recomendação não encontrado"); - else { - const newRecommendation = { - user: findBydId.user, - click_calcados: updateRecommendation.click_calcados - ? updateRecommendation.click_calcados - : findBydId.click_calcados, - click_suplementos: updateRecommendation.click_suplementos - ? updateRecommendation.click_suplementos - : findBydId.click_suplementos, - click_roupas: updateRecommendation.click_roupas - ? updateRecommendation.click_roupas - : findBydId.click_roupas, - click_equipamentos: updateRecommendation.click_equipamentos - ? updateRecommendation.click_equipamentos - : findBydId.click_equipamentos, - }; - const updateRecommendationById = - await this.RecommendationModel.findByIdAndUpdate( - id, - newRecommendation - ).setOptions({ overwrite: false, new: true }); - if (!updateRecommendationById) throw new NotFoundException(); - else return updateRecommendationById; - } - } - - async DeleteRecommendation(id: string): Promise { - const DeleteRecommendation = - await this.RecommendationModel.findByIdAndDelete(id); - if (!DeleteRecommendation) throw new NotFoundException(); - else return DeleteRecommendation; - } - - async Recommendation( - id: string - ): Promise<{ recommendations: Product[]; producstRemains: Product[] }> { - const findBydId = await this.ListRecommedationById(id); - const higherNumber = Math.max( - findBydId.click_calcados, - findBydId.click_equipamentos, - findBydId.click_roupas, - findBydId.click_suplementos - ); - if (higherNumber == findBydId.click_calcados) { - const findAllProducts = await this.ProductService.listProducts(); - const Products: Product[] = []; - const producstRemains: Product[] = []; - for (let i = 0; i < findAllProducts.length; i++) { - const categoriaDeproduto = findAllProducts[i].categoriaProduto; - const obj = Object.keys(categoriaDeproduto)[0].toString() as - | "roupa" - | "equipamento" - | "suplemento" - | "calcado"; - if (obj == "calcado") { - Products.push(findAllProducts[i]); - } else { - producstRemains.push(findAllProducts[i]); - } - } - return { - recommendations: Products, - producstRemains: producstRemains, - }; - } else if (higherNumber == findBydId.click_equipamentos) { - const findAllProducts = await this.ProductService.listProducts(); - const Products: Product[] = []; - const producstRemains: Product[] = []; - for (let i = 0; i < findAllProducts.length; i++) { - const categoriaDeproduto = findAllProducts[i].categoriaProduto; - const obj = Object.keys(categoriaDeproduto)[0].toString() as - | "roupa" - | "equipamento" - | "suplemento" - | "calcado"; - if (obj == "equipamento") { - Products.push(findAllProducts[i]); - } else { - producstRemains.push(findAllProducts[i]); - } - } - return { - recommendations: Products, - producstRemains: producstRemains, - }; - } else if (higherNumber == findBydId.click_roupas) { - const findAllProducts = await this.ProductService.listProducts(); - const Products: Product[] = []; - const producstRemains: Product[] = []; - for (let i = 0; i < findAllProducts.length; i++) { - const categoriaDeproduto = findAllProducts[i].categoriaProduto; - const obj = Object.keys(categoriaDeproduto)[0].toString() as - | "roupa" - | "equipamento" - | "suplemento" - | "calcado"; - if (obj == "roupa") { - Products.push(findAllProducts[i]); - } else { - producstRemains.push(findAllProducts[i]); - } - } - return { - recommendations: Products, - producstRemains: producstRemains, - }; - } else if (higherNumber == findBydId.click_suplementos) { - const findAllProducts = await this.ProductService.listProducts(); - const Products: Product[] = []; - const producstRemains: Product[] = []; - for (let i = 0; i < findAllProducts.length; i++) { - const categoriaDeproduto = findAllProducts[i].categoriaProduto; - const obj = Object.keys(categoriaDeproduto)[0].toString() as - | "roupa" - | "equipamento" - | "suplemento" - | "calcado"; - if (obj == "suplemento") { - Products.push(findAllProducts[i]); - } else { - producstRemains.push(findAllProducts[i]); - } - } - return { - recommendations: Products, - producstRemains: producstRemains, - }; - } - } -} diff --git a/src/componentRecommendation /recommendation.spec.ts b/src/componentRecommendation /recommendation.spec.ts deleted file mode 100644 index 01a93e4..0000000 --- a/src/componentRecommendation /recommendation.spec.ts +++ /dev/null @@ -1,169 +0,0 @@ -import { Test, TestingModule } from "@nestjs/testing"; -import { RecommendationController } from "./recommendation.controller"; -import { MongooseModule } from "@nestjs/mongoose"; -import { - Recommendation, - RrecommendationSchema, -} from "./Schema/Rrecommendation.schema"; -import { UserSchema, Users } from "src/users/Schema/user.schema"; -import { ProductServices } from "src/product/product.service"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import { ImagemSchema, imagem } from "src/image/Schema/image.schema"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; -import { RecommendationService } from "./recommendation.service"; -import { UserController } from "src/users/users.controller"; -import { UserService } from "src/users/user.service"; -const urlConfig = require("../globalConfig.json"); -describe("RecommendationController", () => { - let recommendationController: RecommendationController; - let userController: UserController; - beforeEach(async () => { - const app: TestingModule = await Test.createTestingModule({ - imports: [ - MongooseModule.forRoot(urlConfig.mongoUri), - MongooseModule.forFeature([ - { name: Recommendation.name, schema: RrecommendationSchema }, - ]), - MongooseModule.forFeature([ - { name: Product.name, schema: ProductSchema }, - ]), - MongooseModule.forFeature([ - { name: imagem.name, schema: ImagemSchema }, - ]), - MongooseModule.forFeature([ - { name: Provider.name, schema: ProviderSchema }, - ]), - MongooseModule.forFeature([{ name: Users.name, schema: UserSchema }]), - ], - controllers: [RecommendationController, UserController], - providers: [RecommendationService, ProductServices, UserService], - }).compile(); - recommendationController = app.get( - RecommendationController - ); - userController = app.get(UserController); - }); - - describe("👨‍💻 MethodsRecommendation:", () => { - let Recommendation; - let userCreated; - it("• run the method CreateRecommendation()", async () => { - const _idUser = (await userController.CreateUser({ - cpf: "909.068.780-71", - nome: "TDD user.controller", - login: { - email: "test@outlook.com", - password: "test123456", - isAdmin: true, - }, - dataNascimento: "20/20/2000", - sexo: "M", - cep: "20321-000", - endereco: "Rua João do Test", - imagemPerfil: null, - dataCadastro: new Date().toISOString(), - })) as any; - userCreated = _idUser; - const recommendation = { - click_calcados: 1, - click_equipamentos: 1, - click_roupas: 1, - click_suplementos: 1, - user: _idUser.user._id, - }; - const CreateRecommendation = - await recommendationController.CreateRecommendation(recommendation); - Recommendation = CreateRecommendation.recommedation; - expect(CreateRecommendation).toHaveProperty( - "messagem" && "recommedation" - ); - }); - it("• ListRecommendations()", async () => { - const ListRecommendations = - await recommendationController.ListRecommendations(); - expect( - ListRecommendations[0].click_calcados == Recommendation.click_calcados - ); - expect( - ListRecommendations[0].click_equipamentos == - Recommendation.click_equipamentos - ); - expect( - ListRecommendations[0].click_roupas == Recommendation.click_roupas - ); - expect( - ListRecommendations[0].click_suplementos == - Recommendation.click_suplementos - ); - expect(ListRecommendations[0].user == userCreated); - }); - it("• ListRecommedationById()", async () => { - const ListRecommedationById = - await recommendationController.ListRecommedationById( - Recommendation._id - ); - expect( - ListRecommedationById.click_calcados == Recommendation.click_calcados - ); - expect( - ListRecommedationById.click_equipamentos == - Recommendation.click_equipamentos - ); - expect(ListRecommedationById.click_roupas == Recommendation.click_roupas); - expect( - ListRecommedationById.click_suplementos == - Recommendation.click_suplementos - ); - expect(ListRecommedationById.user == userCreated); - }); - it("• UpdateRecommedation()", async () => { - const UpdateRecommedation = - await recommendationController.UpdateRecommedation(Recommendation._id, { - click_calcados: 2, - click_equipamentos: 2, - click_roupas: 2, - click_suplementos: 2, - user: userCreated._id, - }); - expect(UpdateRecommedation).toHaveProperty( - "recommendation" && "messagem" - ); - expect( - UpdateRecommedation.recommendation.click_calcados != - Recommendation.click_calcados - ); - expect( - UpdateRecommedation.recommendation.click_equipamentos != - Recommendation.click_equipamentos - ); - expect( - UpdateRecommedation.recommendation.click_roupas != - Recommendation.click_roupas - ); - expect( - UpdateRecommedation.recommendation.click_suplementos != - Recommendation.click_suplementos - ); - expect(UpdateRecommedation.recommendation.user == userCreated); - }); - it("• Recommendation()", async () => { - const recommendation = await recommendationController.Recommendation( - Recommendation._id - ); - expect(recommendation).toHaveProperty( - "recommendations" && "producstRemains" - ); - expect(recommendation.recommendations.length == 0); - expect(recommendation.producstRemains.length == 0); - }); - - it("• DeleteRecommedation()", async () => { - const DeleteRecommedation = - await recommendationController.DeleteRecommedation(Recommendation._id); - expect(DeleteRecommedation).toHaveProperty("messagem"); - }); - }); -}); diff --git a/src/configs/configService.config.ts b/src/configs/configService.config.ts new file mode 100644 index 0000000..496a70e --- /dev/null +++ b/src/configs/configService.config.ts @@ -0,0 +1,3 @@ +import { ConfigService } from "@nestjs/config"; + +export const configService = new ConfigService(); diff --git a/src/configs/winston.config.ts b/src/configs/winston.config.ts new file mode 100644 index 0000000..f474123 --- /dev/null +++ b/src/configs/winston.config.ts @@ -0,0 +1,21 @@ +import { WinstonModuleOptions, utilities } from "nest-winston"; +import * as winston from "winston"; +import { ConfigService } from "@nestjs/config"; + +const configService = new ConfigService(); + +export default { + level: configService.get("ENV_AMB") == "LOCAL" ? "debug" : "info", + transports: [ + new winston.transports.Console({ + format: winston.format.combine( + winston.format.timestamp(), + winston.format.ms(), + utilities.format.nestLike("backend-full-sports", { + colors: true, + prettyPrint: true, + }) + ), + }), + ], +} as WinstonModuleOptions; diff --git a/src/enums/envs.enum.ts b/src/enums/envs.enum.ts new file mode 100644 index 0000000..5639494 --- /dev/null +++ b/src/enums/envs.enum.ts @@ -0,0 +1,8 @@ +import { ConfigService } from "@nestjs/config"; + +const configService = new ConfigService(); +export const envseEnum = { + PROD: configService.get("mongoPROD"), + QA: configService.get("mongoQA"), + LOCAL: configService.get("DBAAS_MONGODB_ENDPOINT"), +}; diff --git a/src/main.ts b/src/main.ts index c6b73e8..db8e0d9 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,15 +1,18 @@ -import { Logger } from "@nestjs/common"; +import { Logger, ValidationPipe } from "@nestjs/common"; import { NestApplication, NestFactory } from "@nestjs/core"; import { AppModule } from "./app.module"; -import { ValidationPipe } from "@nestjs/common"; import { DocumentBuilder, SwaggerModule } from "@nestjs/swagger"; import * as express from "express"; import * as path from "path"; import { useContainer } from "class-validator"; +import { WINSTON_MODULE_NEST_PROVIDER } from "nest-winston"; +import { configService } from "@configs/configService.config"; async function bootstrap() { + const logger = new Logger("Main"); const app = await NestFactory.create(AppModule); app.enableCors(); app.useGlobalPipes(new ValidationPipe()); + app.useLogger(app.get(WINSTON_MODULE_NEST_PROVIDER)); app.use( "/files", express.static(path.resolve(__dirname, "..", "tmp", "uploads")) @@ -19,41 +22,50 @@ async function bootstrap() { .setDescription( "Api da loja full sports e suas requisições.\n Para realizazr o login, selecione request-body no campo 'credentials location' após clicar em 'Authorize'" ) - .setVersion("0.1.17") + .setVersion(configService.get("VERCEL_GIT_COMMIT_REF")) .addOAuth2({ type: "oauth2", bearerFormat: "JWT", flows: { password: { - authorizationUrl: `${process.env.URL_AUTHORIZATION}`, - tokenUrl: `${process.env.URL_AUTHORIZATION}`, + authorizationUrl: configService.get("URL_AUTHORIZATION"), + tokenUrl: configService.get("URL_AUTHORIZATION"), scopes: {}, }, }, }) .build(); + logger.debug(configService.get("URL_AUTHORIZATION")); const document = SwaggerModule.createDocument(app, config); - SwaggerModule.setup("swagger", app, document, { - customSiteTitle: "Api FullSports", - customfavIcon: - "https://avatars.githubusercontent.com/u/131163591?s=200&v=4", - customJs: [ - "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui-bundle.min.js", - "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui-standalone-preset.min.js", - ], - customCssUrl: [ - "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui.min.css", - "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui-standalone-preset.min.css", - "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui.css", - ], - }); + SwaggerModule.setup( + "swagger", + app, + document + // { + // customSiteTitle: "Api FullSports", + // customfavIcon: + // "https://avatars.githubusercontent.com/u/131163591?s=200&v=4", + // customJs: [ + // "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui-bundle.min.js", + // "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui-standalone-preset.min.js", + // ], + // customCssUrl: [ + // "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui.min.css", + // "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui-standalone-preset.min.css", + // "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui.css", + // ], + // } + ); app.useGlobalPipes(new ValidationPipe({ whitelist: true })); useContainer(app.select(AppModule), { fallbackOnErrors: true }); - - await app.listen(process.env.PORT); - Logger.debug(`server on in http://localhost:${process.env.PORT}`); - Logger.debug( - `application document in http://localhost:${process.env.PORT}/swagger` + await app.listen(configService.get("PORT")); + logger.debug( + `server on in http://localhost:${configService.get("PORT")}` + ); + logger.debug( + `application document in http://localhost:${configService.get( + "PORT" + )}/swagger` ); } bootstrap(); diff --git a/src/mocks/component_recommendation.mock.json b/src/mocks/component_recommendation.mock.json new file mode 100644 index 0000000..04b7909 --- /dev/null +++ b/src/mocks/component_recommendation.mock.json @@ -0,0 +1,76 @@ +[ + { + "_id": "65694929728c1d3a03c87128", + "click_calcados": 2, + "click_equipamentos": 3, + "click_roupas": 12, + "click_suplementos": 2, + "user": { + "_id": "638580003c3c3c3b69aacbf2", + "cpf": "471.928.098-60", + "nome": "Renan Figueiredo de Oliveira ", + "login": { + "email": "renanfigueoli@outlook.com", + "password": "$2b$10$MzVOP819aJPmYyMpQzAckechbgw57cDM4LfgJCP26wkMcwgWeT0F2", + "isAdmin": true + }, + "dataNascimento": "09/06/2003", + "sexo": "M", + "cep": "08452-000", + "endereco": "Rua João de Siqueira Afonso,775 -casa- SP, São Paulo, Lajeado", + "dataCadastro": "29/11/2022", + "imagemPerfil": "654f6dc90e0b5770407019f2", + "__v": 0 + } + }, + { + "_id": "656ddff6c664deffad3d2b9d", + "user": { + "_id": "656ddff6c664deffad3d2b9b", + "cpf": "872.716.290-76", + "nome": "Amanda Pereira", + "login": { + "email": "seu_email@gmail.com", + "password": "$2b$10$gY/sKXSiCjfjBRt3e2xPIOb65hJOPReqnPPRXy7Bvz.K/8ZI7IphS", + "isAdmin": false + }, + "dataNascimento": "04/03/2003", + "sexo": "F", + "cep": "13456-701", + "endereco": "Rua do Cromo,134 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "imagemPerfil": "656ddff6c664deffad3d2b97", + "dataCadastro": "2023-12-04T14:19:34.789Z", + "__v": 0 + }, + "click_calcados": 1, + "click_suplementos": 1, + "click_roupas": 1, + "click_equipamentos": 1, + "__v": 0 + }, + { + "_id": "656de07426dfdba9ec378f79", + "user": { + "_id": "656de07426dfdba9ec378f77", + "cpf": "723.558.990-61", + "nome": "Amanda Souza", + "login": { + "email": "seuemail@gmail.com", + "password": "$2b$10$I7TvCG0MW4ez3CN66EtRWeyet5qAYw4QM8J11kVbIH.Db8NXk082.", + "isAdmin": false + }, + "dataNascimento": "04/03/2003", + "sexo": "F", + "cep": "06833-300", + "endereco": "Rua José Semião Rodrigues Agostinho,456 --- SP, Embu das Artes, Quinhaú", + "imagemPerfil": "656de07426dfdba9ec378f73", + "dataCadastro": "2023-12-04T14:21:40.789Z", + "__v": 0 + }, + "click_calcados": 1, + "click_suplementos": 1, + "click_roupas": 5, + "click_equipamentos": 2, + "__v": 0 + } + ] \ No newline at end of file diff --git a/src/mocks/image.mock.json b/src/mocks/image.mock.json new file mode 100644 index 0000000..29faa97 --- /dev/null +++ b/src/mocks/image.mock.json @@ -0,0 +1,1469 @@ +[ + { + "_id": "6387d36332fc20f92a1f57f5", + "name": "eu.jpg", + "size": 339196, + "key": "0e0335cc1cbe797c89de95569a811b21-eu.jpg", + "url": "https://upload-image-fullsports.s3.amazonaws.com/0e0335cc1cbe797c89de95569a811b21-eu.jpg", + "createAt": "2022-11-30T22:04:19.984Z", + "__v": 0 + }, + { + "_id": "6387bdfde9826180f73ddb05", + "name": "D_NQ_NP_663685-MLB48346658554_112021-O.jpeg", + "size": 5058, + "key": "3877e4e7cd5b3c6b4d1b47793a551609-D_NQ_NP_663685-MLB48346658554_112021-O.jpeg", + "url": "https://upload-image-fullsports.s3.amazonaws.com/3877e4e7cd5b3c6b4d1b47793a551609-D_NQ_NP_663685-MLB48346658554_112021-O.jpeg", + "createAt": "2022-11-30T20:33:01.917Z", + "__v": 0 + }, + { + "_id": "63887c1d32fc20f92a1f6acf", + "name": "IMG_20221124_154233.jpg", + "size": 1883395, + "key": "11e2dc2924afc6bfd3d8db1c29e9c83f-IMG_20221124_154233.jpg", + "url": "https://upload-image-fullsports.s3.amazonaws.com/11e2dc2924afc6bfd3d8db1c29e9c83f-IMG_20221124_154233.jpg", + "createAt": "2022-12-01T10:04:13.419Z", + "__v": 0 + }, + { + "_id": "638aecc52a602a6a9404d36f", + "name": "IMG_20220508_005059_431.jpg", + "size": 64114, + "key": "4fb5c5193b2f3b5f3b6c9c17da700353-IMG_20220508_005059_431.jpg", + "url": "https://upload-image-fullsports.s3.amazonaws.com/4fb5c5193b2f3b5f3b6c9c17da700353-IMG_20220508_005059_431.jpg", + "createAt": "2022-12-03T06:29:25.713Z", + "__v": 0 + }, + { + "_id": "638a32057a2aa88dae3c94a6", + "name": "IMG_20220508_005059_431.jpg", + "size": 64114, + "key": "d992569280d0a611bd050b52799c3503-IMG_20220508_005059_431.jpg", + "url": "https://upload-image-fullsports.s3.amazonaws.com/d992569280d0a611bd050b52799c3503-IMG_20220508_005059_431.jpg", + "createAt": "2022-12-02T17:12:37.143Z", + "__v": 0 + }, + { + "_id": "63e799dd8f2ca3cd7f2fb95b", + "name": "WIN_20220804_19_06_43_Pro.jpg", + "size": 84362, + "key": "2eb701198eac589d479acb4309313d6c-WIN_20220804_19_06_43_Pro.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/2eb701198eac589d479acb4309313d6c-WIN_20220804_19_06_43_Pro.jpg", + "createAt": "2023-02-11T13:36:29.132Z", + "__v": 0 + }, + { + "_id": "63e79e9ee6787f62026ecda2", + "name": "WIN_20220804_19_06_43_Pro.jpg", + "size": 84362, + "key": "e67fd457c20277a9ab6c35af1f023854-WIN_20220804_19_06_43_Pro.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/e67fd457c20277a9ab6c35af1f023854-WIN_20220804_19_06_43_Pro.jpg", + "createAt": "2023-02-11T13:56:46.629Z", + "__v": 0 + }, + { + "_id": "63ff961d566dd8a0d72338d0", + "name": "Screenshot_3.png", + "size": 276144, + "key": "503968fe6a488c9325de339a0ee3cf29-Screenshot_3.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/503968fe6a488c9325de339a0ee3cf29-Screenshot_3.png", + "createAt": "2023-03-01T18:14:53.169Z", + "__v": 0 + }, + { + "_id": "6401e03e54e300d53d807d5e", + "name": "78419902.jpeg", + "size": 28578, + "key": "baf053e3fcb76c8c24b2fae0ee48ff48-78419902.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/baf053e3fcb76c8c24b2fae0ee48ff48-78419902.jpeg", + "createAt": "2023-03-03T11:55:42.836Z", + "__v": 0 + }, + { + "_id": "6401e05d54e300d53d807d8b", + "name": "78419902.jpeg", + "size": 28578, + "key": "83eaa244ab58123abcd623a7b77e9b74-78419902.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/83eaa244ab58123abcd623a7b77e9b74-78419902.jpeg", + "createAt": "2023-03-03T11:56:13.079Z", + "__v": 0 + }, + { + "_id": "640b18023d00bcc5399eaa39", + "name": "e2e_nestjs.jpg", + "size": 54242, + "key": "fbb771e1ddaf6b7c987b02f34b594353-e2e_nestjs.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/fbb771e1ddaf6b7c987b02f34b594353-e2e_nestjs.jpg", + "createAt": "2023-03-10T11:44:02.005Z", + "__v": 0 + }, + { + "_id": "6437e326aa534f2d9a2edd90", + "name": "img-edicaodehoje.png", + "size": 7812, + "key": "09e335c020e10d441fb35a10bed7eebb-img-edicaodehoje.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/09e335c020e10d441fb35a10bed7eebb-img-edicaodehoje.png", + "createAt": "2023-04-13T11:10:30.089Z", + "__v": 0 + }, + { + "_id": "64409a5d66ba6cded1c66290", + "name": "de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "size": 28578, + "key": "df6320a1fd662dd29091c00fe832ad18-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/df6320a1fd662dd29091c00fe832ad18-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "createAt": "2023-04-20T01:50:21.809Z", + "__v": 0 + }, + { + "_id": "64409ab66138e3cfd8e440da", + "name": "de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "size": 28578, + "key": "a2ff3f97856d1d4d38be4cf6e6819b9c-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/a2ff3f97856d1d4d38be4cf6e6819b9c-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "createAt": "2023-04-20T01:51:50.743Z", + "__v": 0 + }, + { + "_id": "64409acb0f710ddfc83f1682", + "name": "de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "size": 28578, + "key": "4b3f439fc07475d186cf62f7f1ccaa2c-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/4b3f439fc07475d186cf62f7f1ccaa2c-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "createAt": "2023-04-20T01:52:11.004Z", + "__v": 0 + }, + { + "_id": "64409b9013c9a6a8e1a10d31", + "name": "de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "size": 28578, + "key": "48ff7a6ce237ebbb9c9b3b195091fb77-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/48ff7a6ce237ebbb9c9b3b195091fb77-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "createAt": "2023-04-20T01:55:28.092Z", + "__v": 0 + }, + { + "_id": "64409ccbb3cfa5dfe85adb45", + "name": "de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "size": 28578, + "key": "add236500b0d3b664de409aeab50a584-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/add236500b0d3b664de409aeab50a584-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "createAt": "2023-04-20T02:00:43.409Z", + "__v": 0 + }, + { + "_id": "6441780d7c08e2b239a39150", + "name": "2I3-2082-026_zoom1.jpeg", + "size": 1532, + "key": "f220ffe717221d0684252fbf3a840a57-2I3-2082-026_zoom1.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f220ffe717221d0684252fbf3a840a57-2I3-2082-026_zoom1.jpeg", + "createAt": "2023-04-20T17:36:13.873Z", + "__v": 0 + }, + { + "_id": "64418cdd6b272083de4b238f", + "name": "0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--4-.jpeg", + "size": 27278, + "key": "2678df6f7ce08449817b289620f58b76-0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--4-.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/2678df6f7ce08449817b289620f58b76-0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--4-.jpeg", + "createAt": "2023-04-20T19:05:01.439Z", + "__v": 0 + }, + { + "_id": "644a681f1c0ea74bddc3573e", + "name": "download (1).png", + "size": 2111, + "key": "1c70d5f29dbd8e94df03899c20e50010-download (1).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/1c70d5f29dbd8e94df03899c20e50010-download%20%281%29.png", + "createAt": "2023-04-27T12:18:39.713Z", + "__v": 0 + }, + { + "_id": "6451c005a38950edc5df3344", + "name": "0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--3-.jpeg", + "size": 36140, + "key": "b8989d31dd19bd2bb84c7660d7487d35-0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--3-.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b8989d31dd19bd2bb84c7660d7487d35-0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--3-.jpeg", + "createAt": "2023-05-03T01:59:33.125Z", + "__v": 0 + }, + { + "_id": "6451c005006b9738baeacc73", + "name": "0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--4-.jpeg", + "size": 27278, + "key": "6c69db9da5172e427f629f38959cab74-0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--4-.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/6c69db9da5172e427f629f38959cab74-0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--4-.jpeg", + "createAt": "2023-05-03T01:59:33.234Z", + "__v": 0 + }, + { + "_id": "6451c02e006b9738baeacc7f", + "name": "0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--3-.jpeg", + "size": 36140, + "key": "03a8516caef1a7dfd4c66f8f7686ac21-0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--3-.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/03a8516caef1a7dfd4c66f8f7686ac21-0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--3-.jpeg", + "createAt": "2023-05-03T02:00:14.254Z", + "__v": 0 + }, + { + "_id": "6451f4a6fe392986293cd2bb", + "name": "D_NQ_NP_748056-MLB49459745181_032022-O.jpeg", + "size": 34838, + "key": "c3a3aa0ef5794729b33a8c21b1442823-D_NQ_NP_748056-MLB49459745181_032022-O.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/c3a3aa0ef5794729b33a8c21b1442823-D_NQ_NP_748056-MLB49459745181_032022-O.jpeg", + "createAt": "2023-05-03T05:44:06.675Z", + "__v": 0 + }, + { + "_id": "6451f4b118dea2cf8f7e78f8", + "name": "D_NQ_NP_700396-MLB48624493878_122021-O.jpeg", + "size": 24012, + "key": "823bff7d1e416db23793f06d35677950-D_NQ_NP_700396-MLB48624493878_122021-O.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/823bff7d1e416db23793f06d35677950-D_NQ_NP_700396-MLB48624493878_122021-O.jpeg", + "createAt": "2023-05-03T05:44:17.263Z", + "__v": 0 + }, + { + "_id": "6451f4b1c09fe9e43cf32d18", + "name": "D_NQ_NP_748056-MLB49459745181_032022-O.jpeg", + "size": 34838, + "key": "af56068803452b8191234ff765ab4f5a-D_NQ_NP_748056-MLB49459745181_032022-O.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/af56068803452b8191234ff765ab4f5a-D_NQ_NP_748056-MLB49459745181_032022-O.jpeg", + "createAt": "2023-05-03T05:44:17.374Z", + "__v": 0 + }, + { + "_id": "6451f4c6a263a80b9385d231", + "name": "icone.png", + "size": 9190, + "key": "2ac3c277de2eb82de8c3978c757b22ab-icone.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/2ac3c277de2eb82de8c3978c757b22ab-icone.png", + "createAt": "2023-05-03T05:44:38.007Z", + "__v": 0 + }, + { + "_id": "6453a1d45c2e650832d02342", + "name": "1072636.jpg", + "size": 2627423, + "key": "54472db2dccac9bff3723ec863820bbe-1072636.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/54472db2dccac9bff3723ec863820bbe-1072636.jpg", + "createAt": "2023-05-04T12:15:16.982Z", + "__v": 0 + }, + { + "_id": "6453ec1e77d546799b53fb19", + "name": "icone.svg", + "size": 16946, + "key": "f09b1d4197ce03321ca8b2563c3b66b4-icone.svg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f09b1d4197ce03321ca8b2563c3b66b4-icone.svg", + "createAt": "2023-05-04T17:32:14.537Z", + "__v": 0 + }, + { + "_id": "64593c63c65f616adfa0f942", + "name": "0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--3-.jpeg", + "size": 36140, + "key": "48a7afa53114afd7382f9fe1a018e342-0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--3-.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/48a7afa53114afd7382f9fe1a018e342-0030259JT00-PUMA-WIRED-RUN-BDP-TNS-MASC--3-.jpeg", + "createAt": "2023-05-08T18:16:03.995Z", + "__v": 0 + }, + { + "_id": "645bdae484aacb77b936cadf", + "name": "NQQ-7158-026_zoom3.jpeg", + "size": 58446, + "key": "429de62efd176ad4881c1b488d6d9381-NQQ-7158-026_zoom3.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/429de62efd176ad4881c1b488d6d9381-NQQ-7158-026_zoom3.jpeg", + "createAt": "2023-05-10T17:56:52.117Z", + "__v": 0 + }, + { + "_id": "645bf1983fa1ca0ce879f061", + "name": "de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "size": 28578, + "key": "5144614f425bac7434b2d9239ff05cc5-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/5144614f425bac7434b2d9239ff05cc5-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "createAt": "2023-05-10T19:33:44.662Z", + "__v": 0 + }, + { + "_id": "645c351f6bf0ecc6cb11872b", + "name": "e3503e2385336de3255fced0dd325691-102256380.jpg", + "size": 19377, + "key": "b9fb3f41942389a413d841369d30665f-e3503e2385336de3255fced0dd325691-102256380.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b9fb3f41942389a413d841369d30665f-e3503e2385336de3255fced0dd325691-102256380.jpg", + "createAt": "2023-05-11T00:21:51.097Z", + "__v": 0 + }, + { + "_id": "645ccc0a752ecd24f4ff3ecf", + "name": "Frame29.jpeg", + "size": 56628, + "key": "cfd1ec41d08cba53d70ad48e80987bad-Frame29.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/cfd1ec41d08cba53d70ad48e80987bad-Frame29.jpeg", + "createAt": "2023-05-11T11:05:46.380Z", + "__v": 0 + }, + { + "_id": "645cd369fc1382495a9d8493", + "name": "bola_campo_stadium_nacional_xxii_511334_1960_1.png", + "size": 11490, + "key": "709e4329419945b4e8d689342870c099-bola_campo_stadium_nacional_xxii_511334_1960_1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/709e4329419945b4e8d689342870c099-bola_campo_stadium_nacional_xxii_511334_1960_1.png", + "createAt": "2023-05-11T11:37:13.287Z", + "__v": 0 + }, + { + "_id": "646327138c0347eb360091af", + "name": "de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "size": 28578, + "key": "91d1d19b1e54cb95446af0ad3f6d03b0-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/91d1d19b1e54cb95446af0ad3f6d03b0-de9b92325bd1f06c7b0597578f3b48ac-c9c5efa434f5e54e66a19ab1dc984961-78419902.jpeg", + "createAt": "2023-05-16T06:47:47.977Z", + "__v": 0 + }, + { + "_id": "64677f6b5a6906881dd4408e", + "name": "TenisPumaX-Ray.jpeg", + "size": 41998, + "key": "8cd49f4cd3601768d1b72f93ce93d136-TenisPumaX-Ray.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/8cd49f4cd3601768d1b72f93ce93d136-TenisPumaX-Ray.jpeg", + "createAt": "2023-05-19T13:53:47.474Z", + "__v": 0 + }, + { + "_id": "6468bec332bd5a0078339eb1", + "name": "DQ412-2-061-2.png", + "size": 58204, + "key": "2fd7115c734d890a91c56b2dd4f31451-DQ412-2-061-2.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/2fd7115c734d890a91c56b2dd4f31451-DQ412-2-061-2.png", + "createAt": "2023-05-20T12:36:19.665Z", + "__v": 0 + }, + { + "_id": "6468c172987faafe43d0dfd3", + "name": "c7742038c4c24adb916aad11015ceaac_9366.png", + "size": 13190, + "key": "0a17992b1c98c57764c6ed5390149e85-c7742038c4c24adb916aad11015ceaac_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/0a17992b1c98c57764c6ed5390149e85-c7742038c4c24adb916aad11015ceaac_9366.png", + "createAt": "2023-05-20T12:47:46.011Z", + "__v": 0 + }, + { + "_id": "6468c1ff987faafe43d0dfda", + "name": "ae2c99dc8b964927ad23afb9008cfdfd_9366.png", + "size": 49050, + "key": "eb5c79dc43d7b8f08c427f46eb83a48b-ae2c99dc8b964927ad23afb9008cfdfd_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/eb5c79dc43d7b8f08c427f46eb83a48b-ae2c99dc8b964927ad23afb9008cfdfd_9366.png", + "createAt": "2023-05-20T12:50:07.679Z", + "__v": 0 + }, + { + "_id": "6468c1ff32bd5a007833a059", + "name": "f760be85174b4280b02faf5d00c71f0d_9366.png", + "size": 123046, + "key": "335c4393fc5565fff7e28ba6fcae9207-f760be85174b4280b02faf5d00c71f0d_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/335c4393fc5565fff7e28ba6fcae9207-f760be85174b4280b02faf5d00c71f0d_9366.png", + "createAt": "2023-05-20T12:50:07.792Z", + "__v": 0 + }, + { + "_id": "6468c27232bd5a007833a0ba", + "name": "15dd0f33c8f84883a334afa30138c44e_faec.png", + "size": 27254, + "key": "4d4850e09889f1a94827f58f3cfd6c35-15dd0f33c8f84883a334afa30138c44e_faec.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/4d4850e09889f1a94827f58f3cfd6c35-15dd0f33c8f84883a334afa30138c44e_faec.png", + "createAt": "2023-05-20T12:52:02.717Z", + "__v": 0 + }, + { + "_id": "6468c272987faafe43d0dfe1", + "name": "61add272ed7d4ee2a03bafa3013bf65c_faec.png", + "size": 23266, + "key": "f4f05d4f194dd5f039ec6c01f2256678-61add272ed7d4ee2a03bafa3013bf65c_faec.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f4f05d4f194dd5f039ec6c01f2256678-61add272ed7d4ee2a03bafa3013bf65c_faec.png", + "createAt": "2023-05-20T12:52:02.743Z", + "__v": 0 + }, + { + "_id": "6468c32f32bd5a007833a0c6", + "name": "011398BP.png", + "size": 16491, + "key": "0f6566adea26d30fcde18baf85f34a96-011398BP.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/0f6566adea26d30fcde18baf85f34a96-011398BP.png", + "createAt": "2023-05-20T12:55:11.768Z", + "__v": 0 + }, + { + "_id": "6468c3cb32bd5a007833a0cd", + "name": "01139315.png", + "size": 7374, + "key": "d573493ec8b70582c3a0928b8076c936-01139315.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/d573493ec8b70582c3a0928b8076c936-01139315.png", + "createAt": "2023-05-20T12:57:47.046Z", + "__v": 0 + }, + { + "_id": "6468c8705d057876f63628d5", + "name": "ffd9673b81026b4899dbcc055c32ec4f.png", + "size": 108018, + "key": "23b4e47db6ec599b31afa05addeeee03-ffd9673b81026b4899dbcc055c32ec4f.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/23b4e47db6ec599b31afa05addeeee03-ffd9673b81026b4899dbcc055c32ec4f.png", + "createAt": "2023-05-20T13:17:36.687Z", + "__v": 0 + }, + { + "_id": "6468c9579309a94272db7657", + "name": "9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "size": 361434, + "key": "6a68c269776cc62878822f6166f32bfc-9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/6a68c269776cc62878822f6166f32bfc-9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "createAt": "2023-05-20T13:21:27.157Z", + "__v": 0 + }, + { + "_id": "6468ca875d057876f6362963", + "name": "bola_penalty_hand_sem_costura_3_1_1.jpg", + "size": 17597, + "key": "01daabc35b5387f477cb3d2982df5e8a-bola_penalty_hand_sem_costura_3_1_1.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/01daabc35b5387f477cb3d2982df5e8a-bola_penalty_hand_sem_costura_3_1_1.jpg", + "createAt": "2023-05-20T13:26:31.545Z", + "__v": 0 + }, + { + "_id": "6468cb115d057876f6362969", + "name": "bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-21572ae574f9cca1af26e55577f7d27a.png", + "size": 372305, + "key": "8097e5c42f29f89680e3154140f64f7a-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-21572ae574f9cca1af26e55577f7d27a.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/8097e5c42f29f89680e3154140f64f7a-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-21572ae574f9cca1af26e55577f7d27a.png", + "createAt": "2023-05-20T13:28:49.770Z", + "__v": 0 + }, + { + "_id": "6468cb11987faafe43d0e267", + "name": "bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-aac8e705c69e72025273a9d9e6deb63d.png", + "size": 366236, + "key": "eceed1e9ab0307e95421ea9a337dde1f-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-aac8e705c69e72025273a9d9e6deb63d.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/eceed1e9ab0307e95421ea9a337dde1f-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-aac8e705c69e72025273a9d9e6deb63d.png", + "createAt": "2023-05-20T13:28:49.866Z", + "__v": 0 + }, + { + "_id": "6468cb9e5d057876f636296d", + "name": "esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "size": 822601, + "key": "ee224e20e4ace9aa3efc4e105d49568d-esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/ee224e20e4ace9aa3efc4e105d49568d-esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "createAt": "2023-05-20T13:31:10.048Z", + "__v": 0 + }, + { + "_id": "6468ccd25d057876f63629f0", + "name": "Luvas-de-goleiro-puma.png", + "size": 290994, + "key": "59d55210d29764df02d17010026c86df-Luvas-de-goleiro-puma.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/59d55210d29764df02d17010026c86df-Luvas-de-goleiro-puma.png", + "createAt": "2023-05-20T13:36:18.693Z", + "__v": 0 + }, + { + "_id": "6468cd435d057876f63629f7", + "name": "luva_de_goleiro_future_grip_preto_e_verde_puma_8357_1_20190417160814.png", + "size": 58420, + "key": "0208ddb7406c2e5c9277f6609f8acc92-luva_de_goleiro_future_grip_preto_e_verde_puma_8357_1_20190417160814.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/0208ddb7406c2e5c9277f6609f8acc92-luva_de_goleiro_future_grip_preto_e_verde_puma_8357_1_20190417160814.png", + "createAt": "2023-05-20T13:38:11.360Z", + "__v": 0 + }, + { + "_id": "6468cd810ba55b360d1baac2", + "name": "bola-volei-de-praia-xxi-521321-3630-3.png", + "size": 75398, + "key": "0dcf683c98eb18d6ddb592dc039f778d-bola-volei-de-praia-xxi-521321-3630-3.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/0dcf683c98eb18d6ddb592dc039f778d-bola-volei-de-praia-xxi-521321-3630-3.png", + "createAt": "2023-05-20T13:39:13.038Z", + "__v": 0 + }, + { + "_id": "646eb2340e11220a3eca552d", + "name": "7647340-800-auto.png", + "size": 23730, + "key": "0c8c9aa2a8bd89bc59340d5ff0a76da7-7647340-800-auto.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/0c8c9aa2a8bd89bc59340d5ff0a76da7-7647340-800-auto.png", + "createAt": "2023-05-25T00:56:20.694Z", + "__v": 0 + }, + { + "_id": "646eb282446f7b079db6b395", + "name": "7647337-800-auto.png", + "size": 48274, + "key": "1580475e2c98c556c18a5125f2a7e5e8-7647337-800-auto.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/1580475e2c98c556c18a5125f2a7e5e8-7647337-800-auto.png", + "createAt": "2023-05-25T00:57:38.614Z", + "__v": 0 + }, + { + "_id": "646eb37b0e11220a3eca5537", + "name": "shorts-para-treino-2-em-1-esporte-air-effect-preto-m-673-871_600x.png", + "size": 34380, + "key": "03988d9881c4ab9f0c1bac76c0add7e7-shorts-para-treino-2-em-1-esporte-air-effect-preto-m-673-871_600x.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/03988d9881c4ab9f0c1bac76c0add7e7-shorts-para-treino-2-em-1-esporte-air-effect-preto-m-673-871_600x.png", + "createAt": "2023-05-25T01:01:47.906Z", + "__v": 0 + }, + { + "_id": "646eb4680e11220a3eca553e", + "name": "image.png", + "size": 52110, + "key": "bd297a41e82d3dd3817fdc16be434171-image.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/bd297a41e82d3dd3817fdc16be434171-image.png", + "createAt": "2023-05-25T01:05:44.681Z", + "__v": 0 + }, + { + "_id": "646eb740db4aecc190d3c3db", + "name": "creatinaon300.png", + "size": 30643, + "key": "d539333f6324efe57f801f5d32bb8da9-creatinaon300.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/d539333f6324efe57f801f5d32bb8da9-creatinaon300.png", + "createAt": "2023-05-25T01:17:52.387Z", + "__v": 0 + }, + { + "_id": "646eb786db4aecc190d3c3e2", + "name": "whey-gold-100-whey-protein-5lbs-2270g.png", + "size": 45223, + "key": "b96b281c14cca795b0b8347851afcfe6-whey-gold-100-whey-protein-5lbs-2270g.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b96b281c14cca795b0b8347851afcfe6-whey-gold-100-whey-protein-5lbs-2270g.png", + "createAt": "2023-05-25T01:19:02.649Z", + "__v": 0 + }, + { + "_id": "646eb7fadb4aecc190d3c47f", + "name": "100-casein-protein-caseina-909g.png", + "size": 31738, + "key": "66114c3a5c3b68916ee1ebe78461c03d-100-casein-protein-caseina-909g.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/66114c3a5c3b68916ee1ebe78461c03d-100-casein-protein-caseina-909g.png", + "createAt": "2023-05-25T01:20:58.298Z", + "__v": 0 + }, + { + "_id": "646eb845446f7b079db6b677", + "name": "whey-isolado-dux-nutrition-900g.png", + "size": 32440, + "key": "151465818ca28e9bb0191344d46d7225-whey-isolado-dux-nutrition-900g.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/151465818ca28e9bb0191344d46d7225-whey-isolado-dux-nutrition-900g.png", + "createAt": "2023-05-25T01:22:13.767Z", + "__v": 0 + }, + { + "_id": "646eb8b1db4aecc190d3c521", + "name": "252-0948-962_zoom1.png", + "size": 31812, + "key": "4ef4fa8e27b0c02169c3b1a641842910-252-0948-962_zoom1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/4ef4fa8e27b0c02169c3b1a641842910-252-0948-962_zoom1.png", + "createAt": "2023-05-25T01:24:01.905Z", + "__v": 0 + }, + { + "_id": "646eb8fcdb4aecc190d3c5c9", + "name": "252-0951-799_zoom1.png", + "size": 24118, + "key": "319fd2f4aa5d12c89183846a05ad9670-252-0951-799_zoom1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/319fd2f4aa5d12c89183846a05ad9670-252-0951-799_zoom1.png", + "createAt": "2023-05-25T01:25:16.029Z", + "__v": 0 + }, + { + "_id": "646eb9acdb4aecc190d3c672", + "name": "5307-whey-protein-hydrolized-iso-100-sabor-chocolate-gourmet-2-3kg-dymatize.1626274940.png", + "size": 265708, + "key": "4c016065cac2cd6158d81f720cefb756-5307-whey-protein-hydrolized-iso-100-sabor-chocolate-gourmet-2-3kg-dymatize.1626274940.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/4c016065cac2cd6158d81f720cefb756-5307-whey-protein-hydrolized-iso-100-sabor-chocolate-gourmet-2-3kg-dymatize.1626274940.png", + "createAt": "2023-05-25T01:28:12.863Z", + "__v": 0 + }, + { + "_id": "646eb9db4f0d769ca812e877", + "name": "5307-whey-protein-hydrolized-iso-100-sabor-chocolate-gourmet-2-3kg-dymatize.1626274940.png", + "size": 265708, + "key": "9f977a7434918cea559465d75d41b8c0-5307-whey-protein-hydrolized-iso-100-sabor-chocolate-gourmet-2-3kg-dymatize.1626274940.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9f977a7434918cea559465d75d41b8c0-5307-whey-protein-hydrolized-iso-100-sabor-chocolate-gourmet-2-3kg-dymatize.1626274940.png", + "createAt": "2023-05-25T01:28:59.700Z", + "__v": 0 + }, + { + "_id": "646eba3f4f0d769ca812e884", + "name": "D_NQ_NP_797702-MLB53814628455_022023-O.png", + "size": 18440, + "key": "aa5dd7a9527eb8b111f388ed52266b95-D_NQ_NP_797702-MLB53814628455_022023-O.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/aa5dd7a9527eb8b111f388ed52266b95-D_NQ_NP_797702-MLB53814628455_022023-O.png", + "createAt": "2023-05-25T01:30:39.484Z", + "__v": 0 + }, + { + "_id": "646ebbdd41a3690d979d7b79", + "name": "shopping.png", + "size": 23022, + "key": "e746b3568b7cab0f8309303d4830f3e3-shopping.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/e746b3568b7cab0f8309303d4830f3e3-shopping.png", + "createAt": "2023-05-25T01:37:33.854Z", + "__v": 0 + }, + { + "_id": "646ebbfe4f0d769ca812e9ea", + "name": "2POTES_tutti_FV.png", + "size": 66786, + "key": "48550c1e501b78c95a97f9f6c4177b50-2POTES_tutti_FV.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/48550c1e501b78c95a97f9f6c4177b50-2POTES_tutti_FV.png", + "createAt": "2023-05-25T01:38:06.247Z", + "__v": 0 + }, + { + "_id": "647b55a899e17c58fb6153dd", + "name": "check.PNG", + "size": 6255, + "key": "f2bab9e8141e6ddaf0201ebe13db398e-check.PNG", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f2bab9e8141e6ddaf0201ebe13db398e-check.PNG", + "createAt": "2023-06-03T15:00:56.407Z", + "__v": 0 + }, + { + "_id": "647b55c9040bce5e0145e201", + "name": "check.PNG", + "size": 6255, + "key": "a318ef4f7afbef6d48203112b28bb45e-check.PNG", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/a318ef4f7afbef6d48203112b28bb45e-check.PNG", + "createAt": "2023-06-03T15:01:29.566Z", + "__v": 0 + }, + { + "_id": "647bf34e6069191fa548a2c4", + "name": "78419902.jpg", + "size": 22880, + "key": "960dd3c67fdd661cd5db88e0bbb14df9-78419902.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/960dd3c67fdd661cd5db88e0bbb14df9-78419902.jpg", + "createAt": "2023-06-04T02:13:34.909Z", + "__v": 0 + }, + { + "_id": "647bff2573e7cbd6be69bd2d", + "name": "78419902.jpg", + "size": 22880, + "key": "9b1b673b994708dcbd097687821ad14a-78419902.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9b1b673b994708dcbd097687821ad14a-78419902.jpg", + "createAt": "2023-06-04T03:04:05.714Z", + "__v": 0 + }, + { + "_id": "647e19989960d225b9d52262", + "name": "profile-pic(9).png", + "size": 450016, + "key": "5569475b23b42066714ba79f4a688653-profile-pic(9).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/5569475b23b42066714ba79f4a688653-profile-pic%289%29.png", + "createAt": "2023-06-05T17:21:28.217Z", + "__v": 0 + }, + { + "_id": "647e19a29960d225b9d52266", + "name": "profile-pic(9).png", + "size": 450016, + "key": "9cb35e2b6eaf7725566225c9de947045-profile-pic(9).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9cb35e2b6eaf7725566225c9de947045-profile-pic%289%29.png", + "createAt": "2023-06-05T17:21:38.954Z", + "__v": 0 + }, + { + "_id": "647e241e805474682f45b7bf", + "name": "profile-pic(9).png", + "size": 450016, + "key": "97f0a9035861999f100d5c9337da1e94-profile-pic(9).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/97f0a9035861999f100d5c9337da1e94-profile-pic%289%29.png", + "createAt": "2023-06-05T18:06:22.701Z", + "__v": 0 + }, + { + "_id": "647e36b68c819c6406f647fd", + "name": "profile-pic(9).png", + "size": 450016, + "key": "819eef82ef9c3b422e88e5e2daab5fa0-profile-pic(9).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/819eef82ef9c3b422e88e5e2daab5fa0-profile-pic%289%29.png", + "createAt": "2023-06-05T19:25:42.808Z", + "__v": 0 + }, + { + "_id": "647e4b66b188bad1a220d7ba", + "name": "profile-pic(9).png", + "size": 450016, + "key": "0582ba6f0016e34b9d381568271f1120-profile-pic(9).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/0582ba6f0016e34b9d381568271f1120-profile-pic%289%29.png", + "createAt": "2023-06-05T20:53:58.838Z", + "__v": 0 + }, + { + "_id": "647e4d539052198afbdcb4a8", + "name": "download.png", + "size": 1052111, + "key": "5c55466131ec3b8274f3c13412439c06-download.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/5c55466131ec3b8274f3c13412439c06-download.png", + "createAt": "2023-06-05T21:02:11.344Z", + "__v": 0 + }, + { + "_id": "647e5099806e948e73400d28", + "name": "profile-pic(9).png", + "size": 450016, + "key": "b5ccb3635d4469b1b98603e442976892-profile-pic(9).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b5ccb3635d4469b1b98603e442976892-profile-pic%289%29.png", + "createAt": "2023-06-05T21:16:09.802Z", + "__v": 0 + }, + { + "_id": "647e5159806e948e73400d2c", + "name": "profile-pic(9).png", + "size": 450016, + "key": "d417b5a22857c8b916f2709462bda7af-profile-pic(9).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/d417b5a22857c8b916f2709462bda7af-profile-pic%289%29.png", + "createAt": "2023-06-05T21:19:21.881Z", + "__v": 0 + }, + { + "_id": "647e5197806e948e73400d30", + "name": "profile-pic(9).png", + "size": 450016, + "key": "5e04cb0c9417508698a6a631851371aa-profile-pic(9).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/5e04cb0c9417508698a6a631851371aa-profile-pic%289%29.png", + "createAt": "2023-06-05T21:20:23.065Z", + "__v": 0 + }, + { + "_id": "647e51a7806e948e73400d34", + "name": "profile-pic(9).png", + "size": 450016, + "key": "e2c6e4a2e7dfa3289c8a1c90ca1b3cf4-profile-pic(9).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/e2c6e4a2e7dfa3289c8a1c90ca1b3cf4-profile-pic%289%29.png", + "createAt": "2023-06-05T21:20:39.966Z", + "__v": 0 + }, + { + "_id": "647e57db273c7e70c7ba9844", + "name": "22420223.png", + "size": 231998, + "key": "c8a2187fa154fb9a67b4d155645d7937-22420223.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/c8a2187fa154fb9a67b4d155645d7937-22420223.png", + "createAt": "2023-06-05T21:47:07.994Z", + "__v": 0 + }, + { + "_id": "647e598940f43eec80c0b325", + "name": "22420223.png", + "size": 231998, + "key": "9532c41f1275fb1d1326df1011d103f7-22420223.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9532c41f1275fb1d1326df1011d103f7-22420223.png", + "createAt": "2023-06-05T21:54:17.714Z", + "__v": 0 + }, + { + "_id": "647e63ee8a7247f17ac86594", + "name": "78419902.jpg", + "size": 22880, + "key": "85887e41ec14e059f5badf45cca95ef8-78419902.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/85887e41ec14e059f5badf45cca95ef8-78419902.jpg", + "createAt": "2023-06-05T22:38:38.861Z", + "__v": 0 + }, + { + "_id": "647e8544a780f27664ac8fe8", + "name": "profile-pic(9).png", + "size": 450016, + "key": "630f9dea1fcb001e556057dc54fb4e9e-profile-pic(9).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/630f9dea1fcb001e556057dc54fb4e9e-profile-pic%289%29.png", + "createAt": "2023-06-06T01:00:52.184Z", + "__v": 0 + }, + { + "_id": "647e8610a780f27664ac9146", + "name": "profile-pic(9).png", + "size": 450016, + "key": "84b7baa476baa519b7bf551b37703ece-profile-pic(9).png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/84b7baa476baa519b7bf551b37703ece-profile-pic%289%29.png", + "createAt": "2023-06-06T01:04:16.011Z", + "__v": 0 + }, + { + "_id": "6482dcd2a50f66f2d45c5ac2", + "name": "Design sem nome.png", + "size": 179207, + "key": "48e59830d2d80b31cb894c888c416245-Design sem nome.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/48e59830d2d80b31cb894c888c416245-Design%20sem%20nome.png", + "createAt": "2023-06-09T08:03:30.358Z", + "__v": 0 + }, + { + "_id": "6482dce0a50f66f2d45c5ac6", + "name": "Design sem nome.png", + "size": 179207, + "key": "528a20aa93b173a8806dcd62622a6c76-Design sem nome.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/528a20aa93b173a8806dcd62622a6c76-Design%20sem%20nome.png", + "createAt": "2023-06-09T08:03:44.091Z", + "__v": 0 + }, + { + "_id": "651a5aa85c958f8293341a6b", + "name": "WhatsApp Image 2023-10-01 at 20.49.22.jpeg", + "size": 36946, + "key": "849ddbce7e32eb500f0d44616096a8fc-WhatsApp Image 2023-10-01 at 20.49.22.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/849ddbce7e32eb500f0d44616096a8fc-WhatsApp%20Image%202023-10-01%20at%2020.49.22.jpeg", + "createAt": "2023-10-02T05:52:40.326Z", + "__v": 0 + }, + { + "_id": "651a634424c9d5dbfe6972e6", + "name": "WhatsApp Image 2023-10-01 at 20.49.22.jpeg", + "size": 36946, + "key": "ec3cb8f93d805826db4961da16655041-WhatsApp Image 2023-10-01 at 20.49.22.jpeg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/ec3cb8f93d805826db4961da16655041-WhatsApp%20Image%202023-10-01%20at%2020.49.22.jpeg", + "createAt": "2023-10-02T06:29:24.133Z", + "__v": 0 + }, + { + "_id": "654a374bc022f9314f5f5091", + "name": "78419902.jpg", + "size": 28578, + "key": "31344a9fd0525dc1186c2257643223fe-78419902.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/31344a9fd0525dc1186c2257643223fe-78419902.jpg", + "createAt": "2023-11-07T13:10:35.052Z", + "__v": 0 + }, + { + "_id": "654f6dc90e0b5770407019f2", + "name": "78419902.jpg", + "size": 28578, + "key": "315ae85836610b3b02c853b7bc2d69de-78419902.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/315ae85836610b3b02c853b7bc2d69de-78419902.jpg", + "createAt": "2023-11-11T12:04:25.993Z", + "__v": 0 + }, + { + "_id": "654f709e0e0b577040701cbf", + "name": "HR296-2-300-3.jpg", + "size": 111474, + "key": "9976405ad937337d7a31cd9979274e3f-HR296-2-300-3.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9976405ad937337d7a31cd9979274e3f-HR296-2-300-3.jpg", + "createAt": "2023-11-11T12:16:30.823Z", + "__v": 0 + }, + { + "_id": "654f70a60e0b577040701cc1", + "name": "HR296-2-300-3.jpg", + "size": 111474, + "key": "55cbf6fc48a692f45b8b13df2d39d6fb-HR296-2-300-3.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/55cbf6fc48a692f45b8b13df2d39d6fb-HR296-2-300-3.jpg", + "createAt": "2023-11-11T12:16:38.223Z", + "__v": 0 + }, + { + "_id": "654f70be0e0b577040701cc5", + "name": "HR296-2-300-3.jpg", + "size": 111474, + "key": "3f114ab456e2d9504bf59cb493c86fbf-HR296-2-300-3.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/3f114ab456e2d9504bf59cb493c86fbf-HR296-2-300-3.jpg", + "createAt": "2023-11-11T12:17:02.103Z", + "__v": 0 + }, + { + "_id": "654f70c3242cab4c66301c9c", + "name": "HR296-2-300-3.jpg", + "size": 111474, + "key": "1ec90b57a8771e8c6b68b203f74af1e2-HR296-2-300-3.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/1ec90b57a8771e8c6b68b203f74af1e2-HR296-2-300-3.jpg", + "createAt": "2023-11-11T12:17:07.797Z", + "__v": 0 + }, + { + "_id": "654f70c6242cab4c66301ca0", + "name": "HR296-2-300-3.jpg", + "size": 111474, + "key": "21e0ccd903a30cda357a95a34b5f28de-HR296-2-300-3.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/21e0ccd903a30cda357a95a34b5f28de-HR296-2-300-3.jpg", + "createAt": "2023-11-11T12:17:10.540Z", + "__v": 0 + }, + { + "_id": "656103f8be70b2c67aca1690", + "name": "9ac7a2c0104f1d5b99881f5ba69a9dbe_w200.gif", + "size": 362234, + "key": "9f38d441ab0715623baeb44a088afc1b-9ac7a2c0104f1d5b99881f5ba69a9dbe_w200.gif", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9f38d441ab0715623baeb44a088afc1b-9ac7a2c0104f1d5b99881f5ba69a9dbe_w200.gif", + "createAt": "2023-11-24T20:13:44.475Z", + "__v": 0 + }, + { + "_id": "6568c4238e863388a448bf96", + "name": "imagem_2023-11-30_141926388.png", + "size": 115850, + "key": "180d0005f305d7be1189c8777373deb1-imagem_2023-11-30_141926388.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/180d0005f305d7be1189c8777373deb1-imagem_2023-11-30_141926388.png", + "createAt": "2023-11-30T17:19:31.694Z", + "__v": 0 + }, + { + "_id": "6568c451956ec62c0966df40", + "name": "imagem_2023-11-30_142015098.png", + "size": 115850, + "key": "07dbb763b05fc1095a502dcaf0da8e8f-imagem_2023-11-30_142015098.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/07dbb763b05fc1095a502dcaf0da8e8f-imagem_2023-11-30_142015098.png", + "createAt": "2023-11-30T17:20:17.665Z", + "__v": 0 + }, + { + "_id": "6568c5f84ca9b28390a23736", + "name": "imagem_2023-11-30_142716441.png", + "size": 410954, + "key": "82bcaac607a9c0d90ce5b8c22d6f693e-imagem_2023-11-30_142716441.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/82bcaac607a9c0d90ce5b8c22d6f693e-imagem_2023-11-30_142716441.png", + "createAt": "2023-11-30T17:27:20.032Z", + "__v": 0 + }, + { + "_id": "656946750cf846b260531260", + "name": "teste.jpg", + "size": 2742, + "key": "b4c1ada72ef3a024b07c6616950d3065-teste.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b4c1ada72ef3a024b07c6616950d3065-teste.jpg", + "createAt": "2023-12-01T02:35:33.455Z", + "__v": 0 + }, + { + "_id": "65694739eedacc9adfb03d5d", + "name": "monet.png", + "size": 534, + "key": "4e3025dd592ce098c696c3ceeba16056-monet.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/4e3025dd592ce098c696c3ceeba16056-monet.png", + "createAt": "2023-12-01T02:38:49.088Z", + "__v": 0 + }, + { + "_id": "656948a7eedacc9adfb03d93", + "name": "imagem_2023-11-30_234453479.png", + "size": 351236, + "key": "3e2c2d511a765a856334ab36e7025ed0-imagem_2023-11-30_234453479.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/3e2c2d511a765a856334ab36e7025ed0-imagem_2023-11-30_234453479.png", + "createAt": "2023-12-01T02:44:55.916Z", + "__v": 0 + }, + { + "_id": "65694a450cf846b2605312ff", + "name": "imagem_2023-11-30_235147456.png", + "size": 184763, + "key": "f4c8dfea9168244efe60ed50750fa8df-imagem_2023-11-30_235147456.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f4c8dfea9168244efe60ed50750fa8df-imagem_2023-11-30_235147456.png", + "createAt": "2023-12-01T02:51:49.400Z", + "__v": 0 + }, + { + "_id": "65694c59a1a8ac7952fb88ab", + "name": "imagem_2023-12-01_000040006.png", + "size": 299890, + "key": "02d13f865ee3267227e96f01c8875b11-imagem_2023-12-01_000040006.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/02d13f865ee3267227e96f01c8875b11-imagem_2023-12-01_000040006.png", + "createAt": "2023-12-01T03:00:41.950Z", + "__v": 0 + }, + { + "_id": "65694cd6a1a8ac7952fb88bb", + "name": "imagem_2023-12-01_000243315.png", + "size": 554845, + "key": "9fa79aa112d60b4fcd3fe43cb49c3006-imagem_2023-12-01_000243315.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9fa79aa112d60b4fcd3fe43cb49c3006-imagem_2023-12-01_000243315.png", + "createAt": "2023-12-01T03:02:46.234Z", + "__v": 0 + }, + { + "_id": "65694d150cf846b26053131e", + "name": "imagem_2023-12-01_000346418.png", + "size": 740309, + "key": "2ce4ce0fdbb541e4366062025389ff28-imagem_2023-12-01_000346418.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/2ce4ce0fdbb541e4366062025389ff28-imagem_2023-12-01_000346418.png", + "createAt": "2023-12-01T03:03:49.313Z", + "__v": 0 + }, + { + "_id": "656dd03feeaed99681707b23", + "name": "a8414404d1ed434ea147adaa016119e3_9366.png", + "size": 26166, + "key": "79f0225ee83f8c6d71d6cd9e27d15c4a-a8414404d1ed434ea147adaa016119e3_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/79f0225ee83f8c6d71d6cd9e27d15c4a-a8414404d1ed434ea147adaa016119e3_9366.png", + "createAt": "2023-12-04T13:12:31.437Z", + "__v": 0 + }, + { + "_id": "656dd0a486debb5861bee26b", + "name": "9858d0b9087f41faaa51aefc00f3dde9_9366.png", + "size": 29764, + "key": "b2387228ac4b73d21bd79039da8da41d-9858d0b9087f41faaa51aefc00f3dde9_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b2387228ac4b73d21bd79039da8da41d-9858d0b9087f41faaa51aefc00f3dde9_9366.png", + "createAt": "2023-12-04T13:14:12.527Z", + "__v": 0 + }, + { + "_id": "656dd106eeaed99681707b62", + "name": "c7742038c4c24adb916aad11015ceaac_9366.png", + "size": 13190, + "key": "2320bdb87dce6044d5d419dc3f8c00fc-c7742038c4c24adb916aad11015ceaac_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/2320bdb87dce6044d5d419dc3f8c00fc-c7742038c4c24adb916aad11015ceaac_9366.png", + "createAt": "2023-12-04T13:15:50.045Z", + "__v": 0 + }, + { + "_id": "656dd181eeaed99681707b7f", + "name": "ca39653b1575465db16eaf3900a9beb8_9366.png", + "size": 21074, + "key": "f37c93388e1a53e0761adefad218797c-ca39653b1575465db16eaf3900a9beb8_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f37c93388e1a53e0761adefad218797c-ca39653b1575465db16eaf3900a9beb8_9366.png", + "createAt": "2023-12-04T13:17:53.101Z", + "__v": 0 + }, + { + "_id": "656dd28a86debb5861bee277", + "name": "82e86b1f8589445bbc1eaf3900a9ced7_9366.png", + "size": 20710, + "key": "d7982657e2c0886c2f61baea14e5882e-82e86b1f8589445bbc1eaf3900a9ced7_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/d7982657e2c0886c2f61baea14e5882e-82e86b1f8589445bbc1eaf3900a9ced7_9366.png", + "createAt": "2023-12-04T13:22:18.923Z", + "__v": 0 + }, + { + "_id": "656dd37b86debb5861bee280", + "name": "15dd0f33c8f84883a334afa30138c44e_faec.png", + "size": 27254, + "key": "18104aca99b12aa1a5d99db5950abbf8-15dd0f33c8f84883a334afa30138c44e_faec.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/18104aca99b12aa1a5d99db5950abbf8-15dd0f33c8f84883a334afa30138c44e_faec.png", + "createAt": "2023-12-04T13:26:19.339Z", + "__v": 0 + }, + { + "_id": "656dd37beeaed99681707bbd", + "name": "61add272ed7d4ee2a03bafa3013bf65c_faec.png", + "size": 23266, + "key": "e77b3cbe3c4ca32a68bf49feb85d41de-61add272ed7d4ee2a03bafa3013bf65c_faec.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/e77b3cbe3c4ca32a68bf49feb85d41de-61add272ed7d4ee2a03bafa3013bf65c_faec.png", + "createAt": "2023-12-04T13:26:19.349Z", + "__v": 0 + }, + { + "_id": "656dd3fd86debb5861bee2d8", + "name": "bola_penalty_hand_sem_costura_3_1_1.jpg", + "size": 17597, + "key": "3e1c45193e996f4aebef589295474da9-bola_penalty_hand_sem_costura_3_1_1.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/3e1c45193e996f4aebef589295474da9-bola_penalty_hand_sem_costura_3_1_1.jpg", + "createAt": "2023-12-04T13:28:29.448Z", + "__v": 0 + }, + { + "_id": "656dd44986debb5861bee2e1", + "name": "esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "size": 822601, + "key": "5b9ee81d6f9d8f820e162472d0822daf-esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/5b9ee81d6f9d8f820e162472d0822daf-esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "createAt": "2023-12-04T13:29:45.199Z", + "__v": 0 + }, + { + "_id": "656dd4f62f6ccf4fa9e53a10", + "name": "9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "size": 361434, + "key": "f5b0118a4d39dca7732dfc1d3718da00-9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f5b0118a4d39dca7732dfc1d3718da00-9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "createAt": "2023-12-04T13:32:38.751Z", + "__v": 0 + }, + { + "_id": "656dd50a86debb5861bee341", + "name": "esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "size": 822601, + "key": "b748832b3d8748ea1dc30278e0f59a15-esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b748832b3d8748ea1dc30278e0f59a15-esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "createAt": "2023-12-04T13:32:58.665Z", + "__v": 0 + }, + { + "_id": "656dd52deeaed99681707c6a", + "name": "esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "size": 822601, + "key": "3fb30ef3c11d644737c60ed790af5f20-esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/3fb30ef3c11d644737c60ed790af5f20-esportes-bola-penalty-52131-mg-3600-volei-oficial-em-pu-laranja-1662646217316.jpg", + "createAt": "2023-12-04T13:33:33.723Z", + "__v": 0 + }, + { + "_id": "656dd546eeaed99681707c76", + "name": "bola-volei-de-praia-xxi-521321-3630-3.png", + "size": 75398, + "key": "95fbc3447704ba232ecf7934adaee27f-bola-volei-de-praia-xxi-521321-3630-3.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/95fbc3447704ba232ecf7934adaee27f-bola-volei-de-praia-xxi-521321-3630-3.png", + "createAt": "2023-12-04T13:33:58.880Z", + "__v": 0 + }, + { + "_id": "656dd58d2f6ccf4fa9e53a79", + "name": "bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-aac8e705c69e72025273a9d9e6deb63d.png", + "size": 366236, + "key": "13a520cee462850c85035b5a5c3fbb22-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-aac8e705c69e72025273a9d9e6deb63d.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/13a520cee462850c85035b5a5c3fbb22-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-aac8e705c69e72025273a9d9e6deb63d.png", + "createAt": "2023-12-04T13:35:09.088Z", + "__v": 0 + }, + { + "_id": "656dd58deeaed99681707ca9", + "name": "bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-21572ae574f9cca1af26e55577f7d27a.png", + "size": 372305, + "key": "46bd5145a7ef47e66466c8acf805a157-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-21572ae574f9cca1af26e55577f7d27a.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/46bd5145a7ef47e66466c8acf805a157-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-21572ae574f9cca1af26e55577f7d27a.png", + "createAt": "2023-12-04T13:35:09.136Z", + "__v": 0 + }, + { + "_id": "656dd6a8eeaed99681707cde", + "name": "7647340-800-auto.png", + "size": 23730, + "key": "72bee7d44373ccb1c6a57ee9721f9904-7647340-800-auto.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/72bee7d44373ccb1c6a57ee9721f9904-7647340-800-auto.png", + "createAt": "2023-12-04T13:39:52.167Z", + "__v": 0 + }, + { + "_id": "656dd8bd86debb5861bee37b", + "name": "7725173-800-auto.png", + "size": 32752, + "key": "c22a9f7ebc69615d0e16950a9aed7fc6-7725173-800-auto.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/c22a9f7ebc69615d0e16950a9aed7fc6-7725173-800-auto.png", + "createAt": "2023-12-04T13:48:45.940Z", + "__v": 0 + }, + { + "_id": "656dd92beeaed99681707ce9", + "name": "ae2c99dc8b964927ad23afb9008cfdfd_9366.png", + "size": 49050, + "key": "fe26a2d1571c54c6516b9e54f65aaa07-ae2c99dc8b964927ad23afb9008cfdfd_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/fe26a2d1571c54c6516b9e54f65aaa07-ae2c99dc8b964927ad23afb9008cfdfd_9366.png", + "createAt": "2023-12-04T13:50:35.293Z", + "__v": 0 + }, + { + "_id": "656dd9c7eeaed99681707cf2", + "name": "luva_de_goleiro_future_grip_preto_e_verde_puma_8357_1_20190417160814.png", + "size": 58420, + "key": "55eabd3ba8f2d8b99919a8003e34fb74-luva_de_goleiro_future_grip_preto_e_verde_puma_8357_1_20190417160814.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/55eabd3ba8f2d8b99919a8003e34fb74-luva_de_goleiro_future_grip_preto_e_verde_puma_8357_1_20190417160814.png", + "createAt": "2023-12-04T13:53:11.012Z", + "__v": 0 + }, + { + "_id": "656ddc96eeaed99681707db6", + "name": "252-0951-799_zoom1.png", + "size": 24118, + "key": "615dca160abb78fc7f16b6ce81f4acd9-252-0951-799_zoom1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/615dca160abb78fc7f16b6ce81f4acd9-252-0951-799_zoom1.png", + "createAt": "2023-12-04T14:05:10.646Z", + "__v": 0 + }, + { + "_id": "656ddf9ec664deffad3d2b49", + "name": "2POTES_tutti_FV.png", + "size": 66786, + "key": "b87d0d369db59ea4bf34f1a05c64038e-2POTES_tutti_FV.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b87d0d369db59ea4bf34f1a05c64038e-2POTES_tutti_FV.png", + "createAt": "2023-12-04T14:18:06.474Z", + "__v": 0 + }, + { + "_id": "656ddfe6c664deffad3d2b93", + "name": "imagem_2023-12-04_111845428.png", + "size": 116195, + "key": "c39347e07e101514fb646f333838d7d2-imagem_2023-12-04_111845428.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/c39347e07e101514fb646f333838d7d2-imagem_2023-12-04_111845428.png", + "createAt": "2023-12-04T14:19:18.861Z", + "__v": 0 + }, + { + "_id": "656ddff6c664deffad3d2b97", + "name": "imagem_2023-12-04_111845428.png", + "size": 116195, + "key": "8ab229d38edd5669c84988dd83ee643c-imagem_2023-12-04_111845428.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/8ab229d38edd5669c84988dd83ee643c-imagem_2023-12-04_111845428.png", + "createAt": "2023-12-04T14:19:34.539Z", + "__v": 0 + }, + { + "_id": "656de07426dfdba9ec378f73", + "name": "imagem_2023-12-04_112058237.png", + "size": 1154586, + "key": "1965ec27efd9270394ffd66fe716f3ff-imagem_2023-12-04_112058237.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/1965ec27efd9270394ffd66fe716f3ff-imagem_2023-12-04_112058237.png", + "createAt": "2023-12-04T14:21:40.351Z", + "__v": 0 + }, + { + "_id": "656de08226dfdba9ec378fbf", + "name": "Tenis-Puma-Suede-Classic-XXI-Vermelho-5.png", + "size": 46348, + "key": "e25c158b21edfd1a525e73bef96853fa-Tenis-Puma-Suede-Classic-XXI-Vermelho-5.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/e25c158b21edfd1a525e73bef96853fa-Tenis-Puma-Suede-Classic-XXI-Vermelho-5.png", + "createAt": "2023-12-04T14:21:54.707Z", + "__v": 0 + }, + { + "_id": "656de16ec664deffad3d2d5d", + "name": "38856-2-001-1.jpg", + "size": 57406, + "key": "b836f3557f65a8e5eaddf6bef40d67f9-38856-2-001-1.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b836f3557f65a8e5eaddf6bef40d67f9-38856-2-001-1.jpg", + "createAt": "2023-12-04T14:25:50.489Z", + "__v": 0 + }, + { + "_id": "656de16eeeaed99681708133", + "name": "38856-2-001-4.jpg", + "size": 98026, + "key": "fef1520c9624015b519840f6974ecc67-38856-2-001-4.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/fef1520c9624015b519840f6974ecc67-38856-2-001-4.jpg", + "createAt": "2023-12-04T14:25:50.519Z", + "__v": 0 + }, + { + "_id": "656de1b8eeaed99681708180", + "name": "Tenis-adidas-NMD-R1-Feminino-Branco.png", + "size": 35186, + "key": "c09eefe71e1bff8ca9eddfd0544cef8c-Tenis-adidas-NMD-R1-Feminino-Branco.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/c09eefe71e1bff8ca9eddfd0544cef8c-Tenis-adidas-NMD-R1-Feminino-Branco.png", + "createAt": "2023-12-04T14:27:04.129Z", + "__v": 0 + }, + { + "_id": "656de1b8c664deffad3d2d63", + "name": "Tenis-adidas-NMD-R1-Feminino-Branco-5.png", + "size": 39290, + "key": "5dcb86d690c972b76d9a299325ca13a8-Tenis-adidas-NMD-R1-Feminino-Branco-5.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/5dcb86d690c972b76d9a299325ca13a8-Tenis-adidas-NMD-R1-Feminino-Branco-5.png", + "createAt": "2023-12-04T14:27:04.140Z", + "__v": 0 + }, + { + "_id": "656de206eeaed996817081d2", + "name": "DQ757-0-001-5.png", + "size": 38984, + "key": "8a3ba3f9c99f16c58be405a9348f2617-DQ757-0-001-5.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/8a3ba3f9c99f16c58be405a9348f2617-DQ757-0-001-5.png", + "createAt": "2023-12-04T14:28:22.737Z", + "__v": 0 + }, + { + "_id": "656de249eeaed99681708238", + "name": "DX454-4-072-5.png", + "size": 42166, + "key": "ebcb1c2c30ba9124f72a163aeca11370-DX454-4-072-5.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/ebcb1c2c30ba9124f72a163aeca11370-DX454-4-072-5.png", + "createAt": "2023-12-04T14:29:29.087Z", + "__v": 0 + }, + { + "_id": "656de249c664deffad3d2d6d", + "name": "DX454-4-072-1.png", + "size": 37588, + "key": "40214b18a2b820ca9e8d21de8b195e7f-DX454-4-072-1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/40214b18a2b820ca9e8d21de8b195e7f-DX454-4-072-1.png", + "createAt": "2023-12-04T14:29:29.135Z", + "__v": 0 + }, + { + "_id": "656de289c664deffad3d2dcf", + "name": "DQ412-2-061-5.png", + "size": 52822, + "key": "b8972e2c41e63ca1c0654a79ec1e2999-DQ412-2-061-5.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b8972e2c41e63ca1c0654a79ec1e2999-DQ412-2-061-5.png", + "createAt": "2023-12-04T14:30:33.845Z", + "__v": 0 + }, + { + "_id": "656de28c9fd860c488265866", + "name": "DQ412-2-061-1.png", + "size": 50500, + "key": "26a17d2530b930346df3c93c872ba223-DQ412-2-061-1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/26a17d2530b930346df3c93c872ba223-DQ412-2-061-1.png", + "createAt": "2023-12-04T14:30:36.586Z", + "__v": 0 + }, + { + "_id": "656de2a7c664deffad3d2edf", + "name": "DQ412-2-061-1.png", + "size": 50500, + "key": "6cfd532e079843f57ec20c576d8cdd57-DQ412-2-061-1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/6cfd532e079843f57ec20c576d8cdd57-DQ412-2-061-1.png", + "createAt": "2023-12-04T14:31:03.933Z", + "__v": 0 + }, + { + "_id": "656de2efeeaed99681708349", + "name": "tenis-adidas-grand-court-2-0-branco.png", + "size": 40398, + "key": "d7159d1edd50a7e74b00c5c9f225cbb6-tenis-adidas-grand-court-2-0-branco.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/d7159d1edd50a7e74b00c5c9f225cbb6-tenis-adidas-grand-court-2-0-branco.png", + "createAt": "2023-12-04T14:32:15.957Z", + "__v": 0 + }, + { + "_id": "656de2f09fd860c4882658d1", + "name": "tenis-adidas-grand-court-2-0-branco-3.png", + "size": 169330, + "key": "de86aad39db2950a4fe78dbdc74dd1d5-tenis-adidas-grand-court-2-0-branco-3.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/de86aad39db2950a4fe78dbdc74dd1d5-tenis-adidas-grand-court-2-0-branco-3.png", + "createAt": "2023-12-04T14:32:16.328Z", + "__v": 0 + }, + { + "_id": "656de33feeaed99681708432", + "name": "FB8-3804-028_zoom1.png", + "size": 15438, + "key": "83d13d1cdaed32c7b04ff4a9fca0e230-FB8-3804-028_zoom1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/83d13d1cdaed32c7b04ff4a9fca0e230-FB8-3804-028_zoom1.png", + "createAt": "2023-12-04T14:33:35.735Z", + "__v": 0 + }, + { + "_id": "656de33f9fd860c488265a7d", + "name": "FB8-3804-028_zoom3.png", + "size": 86590, + "key": "f2e57ba451ef0f816c62700a4c761e25-FB8-3804-028_zoom3.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f2e57ba451ef0f816c62700a4c761e25-FB8-3804-028_zoom3.png", + "createAt": "2023-12-04T14:33:35.975Z", + "__v": 0 + }, + { + "_id": "656de3a1eeaed996817084a4", + "name": "shopping.png", + "size": 23022, + "key": "46d77660277921f3d0f9e1c19c7c2470-shopping.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/46d77660277921f3d0f9e1c19c7c2470-shopping.png", + "createAt": "2023-12-04T14:35:13.125Z", + "__v": 0 + }, + { + "_id": "656de3e2eeaed9968170850c", + "name": "D_NQ_NP_797702-MLB53814628455_022023-O.png", + "size": 18440, + "key": "fea0778c7f1e17d45d6a54d7224bd9c1-D_NQ_NP_797702-MLB53814628455_022023-O.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/fea0778c7f1e17d45d6a54d7224bd9c1-D_NQ_NP_797702-MLB53814628455_022023-O.png", + "createAt": "2023-12-04T14:36:18.280Z", + "__v": 0 + }, + { + "_id": "656de4259fd860c488265aee", + "name": "Frame26.png", + "size": 56686, + "key": "27d6cb8c802ac7ab0c9d5cdf71d4fb47-Frame26.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/27d6cb8c802ac7ab0c9d5cdf71d4fb47-Frame26.png", + "createAt": "2023-12-04T14:37:25.319Z", + "__v": 0 + }, + { + "_id": "656de47d9fd860c488265c96", + "name": "ffd9673b81026b4899dbcc055c32ec4f.png", + "size": 108018, + "key": "b5e0c1659704aeed302247e279628c85-ffd9673b81026b4899dbcc055c32ec4f.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b5e0c1659704aeed302247e279628c85-ffd9673b81026b4899dbcc055c32ec4f.png", + "createAt": "2023-12-04T14:38:53.164Z", + "__v": 0 + }, + { + "_id": "656de4d7c664deffad3d2ee6", + "name": "9d0d0dfcb5484da08f75aefc00f3cbff_9366.png", + "size": 22956, + "key": "1cbefd1bd23ea266f48eb94d05380e97-9d0d0dfcb5484da08f75aefc00f3cbff_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/1cbefd1bd23ea266f48eb94d05380e97-9d0d0dfcb5484da08f75aefc00f3cbff_9366.png", + "createAt": "2023-12-04T14:40:23.324Z", + "__v": 0 + }, + { + "_id": "656de533c664deffad3d2f75", + "name": "7647337-800-auto.png", + "size": 48274, + "key": "9e059f84a5b9345806920b328377a66e-7647337-800-auto.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9e059f84a5b9345806920b328377a66e-7647337-800-auto.png", + "createAt": "2023-12-04T14:41:55.242Z", + "__v": 0 + }, + { + "_id": "656de54feeaed99681708800", + "name": "7725177-800-auto.png", + "size": 20938, + "key": "168086ac05513ce4cd84543aca6252d0-7725177-800-auto.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/168086ac05513ce4cd84543aca6252d0-7725177-800-auto.png", + "createAt": "2023-12-04T14:42:23.090Z", + "__v": 0 + }, + { + "_id": "656de56beeaed99681708808", + "name": "8665517938ef4557ac4cadaa0161386c_9366.png", + "size": 18698, + "key": "9ee150790393deff7680a080ca9d9922-8665517938ef4557ac4cadaa0161386c_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9ee150790393deff7680a080ca9d9922-8665517938ef4557ac4cadaa0161386c_9366.png", + "createAt": "2023-12-04T14:42:51.629Z", + "__v": 0 + }, + { + "_id": "656de5cd9fd860c488265f01", + "name": "f760be85174b4280b02faf5d00c71f0d_9366.png", + "size": 123046, + "key": "f0b99948db9c586e3905fc5237b2f52d-f760be85174b4280b02faf5d00c71f0d_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f0b99948db9c586e3905fc5237b2f52d-f760be85174b4280b02faf5d00c71f0d_9366.png", + "createAt": "2023-12-04T14:44:29.822Z", + "__v": 0 + }, + { + "_id": "656de612c664deffad3d3004", + "name": "Tenis-Puma-Suede-Classic-XXI-Vermelho.png", + "size": 34296, + "key": "7b294905626b7d61a3b8bdbce48a619f-Tenis-Puma-Suede-Classic-XXI-Vermelho.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/7b294905626b7d61a3b8bdbce48a619f-Tenis-Puma-Suede-Classic-XXI-Vermelho.png", + "createAt": "2023-12-04T14:45:38.162Z", + "__v": 0 + }, + { + "_id": "656e76b5857b18bf546c0aa6", + "name": "Luvas-de-goleiro-puma.png", + "size": 290994, + "key": "953c212059413732fef51937aee1a783-Luvas-de-goleiro-puma.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/953c212059413732fef51937aee1a783-Luvas-de-goleiro-puma.png", + "createAt": "2023-12-05T01:02:45.009Z", + "__v": 0 + }, + { + "_id": "656e7701857b18bf546c0ab6", + "name": "image.png", + "size": 52110, + "key": "a43af8a0a8eec413dd670e5026040eec-image.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/a43af8a0a8eec413dd670e5026040eec-image.png", + "createAt": "2023-12-05T01:04:01.861Z", + "__v": 0 + }, + { + "_id": "656e781aabcc75223420d5fe", + "name": "luvaLuta.jpg", + "size": 169805, + "key": "071fc7792884799eac5e944c2f241c26-luvaLuta.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/071fc7792884799eac5e944c2f241c26-luvaLuta.jpg", + "createAt": "2023-12-05T01:08:42.431Z", + "__v": 0 + }, + { + "_id": "656e78e0abcc75223420d608", + "name": "tenis.PNG", + "size": 192407, + "key": "d468045b90dc13f8c630be4c0242825a-tenis.PNG", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/d468045b90dc13f8c630be4c0242825a-tenis.PNG", + "createAt": "2023-12-05T01:12:00.827Z", + "__v": 0 + } + ] \ No newline at end of file diff --git a/src/mocks/mocks.ts b/src/mocks/mocks.ts new file mode 100644 index 0000000..35fe55f --- /dev/null +++ b/src/mocks/mocks.ts @@ -0,0 +1,19 @@ +import * as path from "path"; +import * as fs from "fs"; +import { Recommendation } from "@componentRecommendation/Schema/Rrecommendation.schema"; +import { Users } from "@users/Schema/user.schema"; +export class Mocks { + component_recommendation(): Recommendation[] { + const filePath: string = path.resolve( + "", + "src/mocks/component_recommendation.mock.json" + ); + const file: string = fs.readFileSync(filePath, "utf-8"); + return JSON.parse(file); + } + users(): Users[] { + const filePath: string = path.resolve("", "src/mocks/user.mock.json"); + const file: string = fs.readFileSync(filePath, "utf-8"); + return JSON.parse(file); + } +} diff --git a/src/mocks/order.mock.json b/src/mocks/order.mock.json new file mode 100644 index 0000000..c48b8da --- /dev/null +++ b/src/mocks/order.mock.json @@ -0,0 +1,134 @@ +[ + { + "_id": "656e689342c7d87495cff558", + "quantidadePedido": 1, + "produto": { + "_id": "656948a8eedacc9adfb03d96", + "categoriaProduto": { + "roupa": { + "nome": "CAMISETA BÁSICA BRANCA MASCULINA", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "BRANCO", + "sexo": "M", + "tamanho": 38, + "preco": "64,00", + "quantidade": "50", + "imagemProduto": [ + { + "_id": "656948a7eedacc9adfb03d93", + "name": "imagem_2023-11-30_234453479.png", + "size": 351236, + "key": "3e2c2d511a765a856334ab36e7025ed0-imagem_2023-11-30_234453479.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/3e2c2d511a765a856334ab36e7025ed0-imagem_2023-11-30_234453479.png", + "createAt": "2023-12-01T02:44:55.916Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-01T02:44:56.715Z", + "__v": 0 + }, + "cliente": { + "_id": "638580003c3c3c3b69aacbf2", + "cpf": "471.928.098-60", + "nome": "Renan Figueiredo de Oliveira ", + "login": { + "email": "renanfigueoli@outlook.com", + "password": "$2b$10$MzVOP819aJPmYyMpQzAckechbgw57cDM4LfgJCP26wkMcwgWeT0F2", + "isAdmin": true + }, + "dataNascimento": "09/06/2003", + "sexo": "M", + "cep": "08452-000", + "endereco": "Rua João de Siqueira Afonso,775 -casa- SP, São Paulo, Lajeado", + "dataCadastro": "29/11/2022", + "imagemPerfil": { + "_id": "654f6dc90e0b5770407019f2", + "name": "78419902.jpg", + "size": 28578, + "key": "315ae85836610b3b02c853b7bc2d69de-78419902.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/315ae85836610b3b02c853b7bc2d69de-78419902.jpg", + "createAt": "2023-11-11T12:04:25.993Z", + "__v": 0 + }, + "__v": 0 + }, + "total": 64, + "__v": 0 + }, + { + "_id": "656e68a342c7d87495cff56b", + "quantidadePedido": 1, + "produto": { + "_id": "656dd3cdeeaed99681707be2", + "categoriaProduto": { + "equipamento": { + "nome": "Bola de basquete", + "fornecedor": { + "_id": "656946b30cf846b26053126a", + "cnpj": "59.546.515/0016-10", + "nomeEmpresa": "Fisia Comércio de Produtos Esportivos Ltda ", + "cep": "13456-701", + "endereco": "Rua do Cromo,56 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "dataCadastro": "2023-12-01T02:36:35.643Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "O", + "tamanho": 0, + "preco": "100,00", + "quantidade": "90", + "imagemProduto": [ + { + "_id": "656dd4f62f6ccf4fa9e53a10", + "name": "9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "size": 361434, + "key": "f5b0118a4d39dca7732dfc1d3718da00-9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f5b0118a4d39dca7732dfc1d3718da00-9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "createAt": "2023-12-04T13:32:38.751Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:27:41.297Z", + "__v": 0 + }, + "cliente": { + "_id": "638580003c3c3c3b69aacbf2", + "cpf": "471.928.098-60", + "nome": "Renan Figueiredo de Oliveira ", + "login": { + "email": "renanfigueoli@outlook.com", + "password": "$2b$10$MzVOP819aJPmYyMpQzAckechbgw57cDM4LfgJCP26wkMcwgWeT0F2", + "isAdmin": true + }, + "dataNascimento": "09/06/2003", + "sexo": "M", + "cep": "08452-000", + "endereco": "Rua João de Siqueira Afonso,775 -casa- SP, São Paulo, Lajeado", + "dataCadastro": "29/11/2022", + "imagemPerfil": { + "_id": "654f6dc90e0b5770407019f2", + "name": "78419902.jpg", + "size": 28578, + "key": "315ae85836610b3b02c853b7bc2d69de-78419902.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/315ae85836610b3b02c853b7bc2d69de-78419902.jpg", + "createAt": "2023-11-11T12:04:25.993Z", + "__v": 0 + }, + "__v": 0 + }, + "total": 100, + "__v": 0 + } + ] \ No newline at end of file diff --git a/src/mocks/product.mock.json b/src/mocks/product.mock.json new file mode 100644 index 0000000..6e5f787 --- /dev/null +++ b/src/mocks/product.mock.json @@ -0,0 +1,1388 @@ +[ + { + "_id": "656948a8eedacc9adfb03d96", + "categoriaProduto": { + "roupa": { + "nome": "CAMISETA BÁSICA BRANCA MASCULINA", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "BRANCO", + "sexo": "M", + "tamanho": 38, + "preco": "64,00", + "quantidade": "50", + "imagemProduto": [ + { + "_id": "656948a7eedacc9adfb03d93", + "name": "imagem_2023-11-30_234453479.png", + "size": 351236, + "key": "3e2c2d511a765a856334ab36e7025ed0-imagem_2023-11-30_234453479.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/3e2c2d511a765a856334ab36e7025ed0-imagem_2023-11-30_234453479.png", + "createAt": "2023-12-01T02:44:55.916Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-01T02:44:56.715Z", + "__v": 0 + }, + { + "_id": "65694c5ba1a8ac7952fb88ae", + "categoriaProduto": { + "roupa": { + "nome": "Calça Nike Sportswear Club Masculina", + "fornecedor": { + "_id": "656946b30cf846b26053126a", + "cnpj": "59.546.515/0016-10", + "nomeEmpresa": "Fisia Comércio de Produtos Esportivos Ltda ", + "cep": "13456-701", + "endereco": "Rua do Cromo,56 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "dataCadastro": "2023-12-01T02:36:35.643Z", + "__v": 0 + }, + "cor": "PRETO", + "sexo": "M", + "tamanho": 52, + "preco": "35,00", + "quantidade": "60", + "imagemProduto": [ + { + "_id": "65694c59a1a8ac7952fb88ab", + "name": "imagem_2023-12-01_000040006.png", + "size": 299890, + "key": "02d13f865ee3267227e96f01c8875b11-imagem_2023-12-01_000040006.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/02d13f865ee3267227e96f01c8875b11-imagem_2023-12-01_000040006.png", + "createAt": "2023-12-01T03:00:41.950Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-01T03:00:43.523Z", + "__v": 0 + }, + { + "_id": "65694cd7a1a8ac7952fb88be", + "categoriaProduto": { + "roupa": { + "nome": "Camiseta Adidas Sport Designed To Move", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "AZUL", + "sexo": "F", + "tamanho": 44, + "preco": "75,00", + "quantidade": "10", + "imagemProduto": [ + { + "_id": "65694cd6a1a8ac7952fb88bb", + "name": "imagem_2023-12-01_000243315.png", + "size": 554845, + "key": "9fa79aa112d60b4fcd3fe43cb49c3006-imagem_2023-12-01_000243315.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9fa79aa112d60b4fcd3fe43cb49c3006-imagem_2023-12-01_000243315.png", + "createAt": "2023-12-01T03:02:46.234Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-01T03:02:47.493Z", + "__v": 0 + }, + { + "_id": "65694d150cf846b260531321", + "categoriaProduto": { + "roupa": { + "nome": "Shorts adidas Feminino 3 Listras Woven", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "PRETO", + "sexo": "F", + "tamanho": 38, + "preco": "65,00", + "quantidade": "80", + "imagemProduto": [ + { + "_id": "65694d150cf846b26053131e", + "name": "imagem_2023-12-01_000346418.png", + "size": 740309, + "key": "2ce4ce0fdbb541e4366062025389ff28-imagem_2023-12-01_000346418.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/2ce4ce0fdbb541e4366062025389ff28-imagem_2023-12-01_000346418.png", + "createAt": "2023-12-01T03:03:49.313Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-01T03:03:49.779Z", + "__v": 0 + }, + { + "_id": "656dd040eeaed99681707b26", + "categoriaProduto": { + "equipamento": { + "nome": "MAIÔ MID 3-STRIPES", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "F", + "tamanho": 44, + "preco": "200,00", + "quantidade": "26", + "imagemProduto": [ + { + "_id": "656dd03feeaed99681707b23", + "name": "a8414404d1ed434ea147adaa016119e3_9366.png", + "size": 26166, + "key": "79f0225ee83f8c6d71d6cd9e27d15c4a-a8414404d1ed434ea147adaa016119e3_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/79f0225ee83f8c6d71d6cd9e27d15c4a-a8414404d1ed434ea147adaa016119e3_9366.png", + "createAt": "2023-12-04T13:12:31.437Z", + "__v": 0 + }, + { + "_id": "656de56beeaed99681708808", + "name": "8665517938ef4557ac4cadaa0161386c_9366.png", + "size": 18698, + "key": "9ee150790393deff7680a080ca9d9922-8665517938ef4557ac4cadaa0161386c_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9ee150790393deff7680a080ca9d9922-8665517938ef4557ac4cadaa0161386c_9366.png", + "createAt": "2023-12-04T14:42:51.629Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:12:32.498Z", + "__v": 0 + }, + { + "_id": "656dd0a586debb5861bee26e", + "categoriaProduto": { + "roupa": { + "nome": "CALÇA TREINO TIRO 23 LEAGUE", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "M", + "tamanho": 42, + "preco": "130,00", + "quantidade": "55", + "imagemProduto": [ + { + "_id": "656dd0a486debb5861bee26b", + "name": "9858d0b9087f41faaa51aefc00f3dde9_9366.png", + "size": 29764, + "key": "b2387228ac4b73d21bd79039da8da41d-9858d0b9087f41faaa51aefc00f3dde9_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b2387228ac4b73d21bd79039da8da41d-9858d0b9087f41faaa51aefc00f3dde9_9366.png", + "createAt": "2023-12-04T13:14:12.527Z", + "__v": 0 + }, + { + "_id": "656de4d7c664deffad3d2ee6", + "name": "9d0d0dfcb5484da08f75aefc00f3cbff_9366.png", + "size": 22956, + "key": "1cbefd1bd23ea266f48eb94d05380e97-9d0d0dfcb5484da08f75aefc00f3cbff_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/1cbefd1bd23ea266f48eb94d05380e97-9d0d0dfcb5484da08f75aefc00f3cbff_9366.png", + "createAt": "2023-12-04T14:40:23.324Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:14:13.734Z", + "__v": 0 + }, + { + "_id": "656dd107eeaed99681707b65", + "categoriaProduto": { + "roupa": { + "nome": "Conjunto Moletom Casual", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "Azul Marinho", + "sexo": "-", + "tamanho": 42, + "preco": "400,00", + "quantidade": 20, + "imagemProduto": [ + { + "_id": "656dd106eeaed99681707b62", + "name": "c7742038c4c24adb916aad11015ceaac_9366.png", + "size": 13190, + "key": "2320bdb87dce6044d5d419dc3f8c00fc-c7742038c4c24adb916aad11015ceaac_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/2320bdb87dce6044d5d419dc3f8c00fc-c7742038c4c24adb916aad11015ceaac_9366.png", + "createAt": "2023-12-04T13:15:50.045Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:15:51.407Z", + "__v": 0 + }, + { + "_id": "656dd182eeaed99681707b82", + "categoriaProduto": { + "roupa": { + "nome": "SHORTS ADICOLOR CLASSICS SPRINTER", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "M", + "tamanho": 50, + "preco": "109,00", + "quantidade": 80, + "imagemProduto": [ + { + "_id": "656dd181eeaed99681707b7f", + "name": "ca39653b1575465db16eaf3900a9beb8_9366.png", + "size": 21074, + "key": "f37c93388e1a53e0761adefad218797c-ca39653b1575465db16eaf3900a9beb8_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f37c93388e1a53e0761adefad218797c-ca39653b1575465db16eaf3900a9beb8_9366.png", + "createAt": "2023-12-04T13:17:53.101Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:17:54.470Z", + "__v": 0 + }, + { + "_id": "656dd28c86debb5861bee27a", + "categoriaProduto": { + "roupa": { + "nome": "Regata Adidas ", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "Cinza", + "sexo": "M", + "tamanho": 36, + "preco": "60,00", + "quantidade": 40, + "imagemProduto": [ + { + "_id": "656dd28a86debb5861bee277", + "name": "82e86b1f8589445bbc1eaf3900a9ced7_9366.png", + "size": 20710, + "key": "d7982657e2c0886c2f61baea14e5882e-82e86b1f8589445bbc1eaf3900a9ced7_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/d7982657e2c0886c2f61baea14e5882e-82e86b1f8589445bbc1eaf3900a9ced7_9366.png", + "createAt": "2023-12-04T13:22:18.923Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:22:20.116Z", + "__v": 0 + }, + { + "_id": "656dd37c86debb5861bee284", + "categoriaProduto": { + "roupa": { + "nome": "Moletom Basquete", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "-", + "tamanho": 40, + "preco": "500,00", + "quantidade": 20, + "imagemProduto": [ + { + "_id": "656dd37b86debb5861bee280", + "name": "15dd0f33c8f84883a334afa30138c44e_faec.png", + "size": 27254, + "key": "18104aca99b12aa1a5d99db5950abbf8-15dd0f33c8f84883a334afa30138c44e_faec.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/18104aca99b12aa1a5d99db5950abbf8-15dd0f33c8f84883a334afa30138c44e_faec.png", + "createAt": "2023-12-04T13:26:19.339Z", + "__v": 0 + }, + { + "_id": "656dd37beeaed99681707bbd", + "name": "61add272ed7d4ee2a03bafa3013bf65c_faec.png", + "size": 23266, + "key": "e77b3cbe3c4ca32a68bf49feb85d41de-61add272ed7d4ee2a03bafa3013bf65c_faec.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/e77b3cbe3c4ca32a68bf49feb85d41de-61add272ed7d4ee2a03bafa3013bf65c_faec.png", + "createAt": "2023-12-04T13:26:19.349Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:26:20.568Z", + "__v": 0 + }, + { + "_id": "656dd3cdeeaed99681707be2", + "categoriaProduto": { + "equipamento": { + "nome": "Bola de basquete", + "fornecedor": { + "_id": "656946b30cf846b26053126a", + "cnpj": "59.546.515/0016-10", + "nomeEmpresa": "Fisia Comércio de Produtos Esportivos Ltda ", + "cep": "13456-701", + "endereco": "Rua do Cromo,56 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "dataCadastro": "2023-12-01T02:36:35.643Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "O", + "tamanho": 0, + "preco": "100,00", + "quantidade": "90", + "imagemProduto": [ + { + "_id": "656dd4f62f6ccf4fa9e53a10", + "name": "9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "size": 361434, + "key": "f5b0118a4d39dca7732dfc1d3718da00-9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f5b0118a4d39dca7732dfc1d3718da00-9f98d6a4c292edc22c1e1afa7ebe259c.jpg", + "createAt": "2023-12-04T13:32:38.751Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:27:41.297Z", + "__v": 0 + }, + { + "_id": "656dd3fe86debb5861bee2db", + "categoriaProduto": { + "equipamento": { + "nome": "Bola de handebol Penalty Hand H3L Ultrafusion", + "fornecedor": { + "_id": "656d37535f155ad9d39b37e0", + "cnpj": "61.088.894/0008-84", + "nomeEmpresa": "PENALTY", + "cep": "18130-430", + "endereco": "Avenida Getúlio Vargas,930 --- SP, São Roque, Centro", + "dataCadastro": "2023-12-04T02:20:03.077Z", + "__v": 0 + }, + "cor": "Vermelho/Azul", + "sexo": "O", + "tamanho": 0, + "preco": "120,00", + "quantidade": 20, + "imagemProduto": [ + { + "_id": "656dd3fd86debb5861bee2d8", + "name": "bola_penalty_hand_sem_costura_3_1_1.jpg", + "size": 17597, + "key": "3e1c45193e996f4aebef589295474da9-bola_penalty_hand_sem_costura_3_1_1.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/3e1c45193e996f4aebef589295474da9-bola_penalty_hand_sem_costura_3_1_1.jpg", + "createAt": "2023-12-04T13:28:29.448Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:28:30.723Z", + "__v": 0 + }, + { + "_id": "656dd448eeaed99681707c0c", + "categoriaProduto": { + "equipamento": { + "nome": "Bola vôlei de praia ", + "fornecedor": { + "_id": "656d37535f155ad9d39b37e0", + "cnpj": "61.088.894/0008-84", + "nomeEmpresa": "PENALTY", + "cep": "18130-430", + "endereco": "Avenida Getúlio Vargas,930 --- SP, São Roque, Centro", + "dataCadastro": "2023-12-04T02:20:03.077Z", + "__v": 0 + }, + "cor": "Laranja", + "sexo": "O", + "tamanho": 0, + "preco": "60,00", + "quantidade": "15", + "imagemProduto": [ + { + "_id": "656dd546eeaed99681707c76", + "name": "bola-volei-de-praia-xxi-521321-3630-3.png", + "size": 75398, + "key": "95fbc3447704ba232ecf7934adaee27f-bola-volei-de-praia-xxi-521321-3630-3.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/95fbc3447704ba232ecf7934adaee27f-bola-volei-de-praia-xxi-521321-3630-3.png", + "createAt": "2023-12-04T13:33:58.880Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:29:44.587Z", + "__v": 0 + }, + { + "_id": "656dd58deeaed99681707cac", + "categoriaProduto": { + "equipamento": { + "nome": "Bola campo S11 R2 Xxiii", + "fornecedor": { + "_id": "656d37535f155ad9d39b37e0", + "cnpj": "61.088.894/0008-84", + "nomeEmpresa": "PENALTY", + "cep": "18130-430", + "endereco": "Avenida Getúlio Vargas,930 --- SP, São Roque, Centro", + "dataCadastro": "2023-12-04T02:20:03.077Z", + "__v": 0 + }, + "cor": "Branco", + "sexo": "O", + "tamanho": 0, + "preco": "200,00", + "quantidade": 66, + "imagemProduto": [ + { + "_id": "656dd58deeaed99681707ca9", + "name": "bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-21572ae574f9cca1af26e55577f7d27a.png", + "size": 372305, + "key": "46bd5145a7ef47e66466c8acf805a157-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-21572ae574f9cca1af26e55577f7d27a.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/46bd5145a7ef47e66466c8acf805a157-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-21572ae574f9cca1af26e55577f7d27a.png", + "createAt": "2023-12-04T13:35:09.136Z", + "__v": 0 + }, + { + "_id": "656dd58d2f6ccf4fa9e53a79", + "name": "bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-aac8e705c69e72025273a9d9e6deb63d.png", + "size": 366236, + "key": "13a520cee462850c85035b5a5c3fbb22-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-aac8e705c69e72025273a9d9e6deb63d.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/13a520cee462850c85035b5a5c3fbb22-bola-campo-penalty-s11-r2-xxiii-brancovermelhoazul-aac8e705c69e72025273a9d9e6deb63d.png", + "createAt": "2023-12-04T13:35:09.088Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:35:09.575Z", + "__v": 0 + }, + { + "_id": "656dd6a9eeaed99681707ce1", + "categoriaProduto": { + "roupa": { + "nome": "Calça Adapte Reserva", + "fornecedor": { + "_id": "656d36491e1a23a4d758cf3b", + "cnpj": "16.590.234/0064-50", + "nomeEmpresa": "AREZZO INDUSTRIA E COMERCIO S.A ", + "cep": "25585-085", + "endereco": "Avenida Arthur Antônio Sendas,999 - GALPÃO 300- RJ, São João de Meriti, Parque Juriti", + "dataCadastro": "2023-12-04T02:15:37.788Z", + "__v": 0 + }, + "cor": "Azul Marinho", + "sexo": "M", + "tamanho": 44, + "preco": "200,00", + "quantidade": "6", + "imagemProduto": [ + { + "_id": "656dd6a8eeaed99681707cde", + "name": "7647340-800-auto.png", + "size": 23730, + "key": "72bee7d44373ccb1c6a57ee9721f9904-7647340-800-auto.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/72bee7d44373ccb1c6a57ee9721f9904-7647340-800-auto.png", + "createAt": "2023-12-04T13:39:52.167Z", + "__v": 0 + }, + { + "_id": "656de533c664deffad3d2f75", + "name": "7647337-800-auto.png", + "size": 48274, + "key": "9e059f84a5b9345806920b328377a66e-7647337-800-auto.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9e059f84a5b9345806920b328377a66e-7647337-800-auto.png", + "createAt": "2023-12-04T14:41:55.242Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:39:53.374Z", + "__v": 0 + }, + { + "_id": "656dd8bf86debb5861bee37e", + "categoriaProduto": { + "roupa": { + "nome": "Camiseta Adapte ", + "fornecedor": { + "_id": "656d36491e1a23a4d758cf3b", + "cnpj": "16.590.234/0064-50", + "nomeEmpresa": "AREZZO INDUSTRIA E COMERCIO S.A ", + "cep": "25585-085", + "endereco": "Avenida Arthur Antônio Sendas,999 - GALPÃO 300- RJ, São João de Meriti, Parque Juriti", + "dataCadastro": "2023-12-04T02:15:37.788Z", + "__v": 0 + }, + "cor": "Branco", + "sexo": "-", + "tamanho": 46, + "preco": "50,00", + "quantidade": "14", + "imagemProduto": [ + { + "_id": "656dd8bd86debb5861bee37b", + "name": "7725173-800-auto.png", + "size": 32752, + "key": "c22a9f7ebc69615d0e16950a9aed7fc6-7725173-800-auto.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/c22a9f7ebc69615d0e16950a9aed7fc6-7725173-800-auto.png", + "createAt": "2023-12-04T13:48:45.940Z", + "__v": 0 + }, + { + "_id": "656de54feeaed99681708800", + "name": "7725177-800-auto.png", + "size": 20938, + "key": "168086ac05513ce4cd84543aca6252d0-7725177-800-auto.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/168086ac05513ce4cd84543aca6252d0-7725177-800-auto.png", + "createAt": "2023-12-04T14:42:23.090Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:48:47.202Z", + "__v": 0 + }, + { + "_id": "656dd92ceeaed99681707cec", + "categoriaProduto": { + "equipamento": { + "nome": "LUVAS PREDATOR MATCH", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "Branco/Rosa", + "sexo": "-", + "tamanho": 25, + "preco": "200,00", + "quantidade": "40", + "imagemProduto": [ + { + "_id": "656dd92beeaed99681707ce9", + "name": "ae2c99dc8b964927ad23afb9008cfdfd_9366.png", + "size": 49050, + "key": "fe26a2d1571c54c6516b9e54f65aaa07-ae2c99dc8b964927ad23afb9008cfdfd_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/fe26a2d1571c54c6516b9e54f65aaa07-ae2c99dc8b964927ad23afb9008cfdfd_9366.png", + "createAt": "2023-12-04T13:50:35.293Z", + "__v": 0 + }, + { + "_id": "656de5cd9fd860c488265f01", + "name": "f760be85174b4280b02faf5d00c71f0d_9366.png", + "size": 123046, + "key": "f0b99948db9c586e3905fc5237b2f52d-f760be85174b4280b02faf5d00c71f0d_9366.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f0b99948db9c586e3905fc5237b2f52d-f760be85174b4280b02faf5d00c71f0d_9366.png", + "createAt": "2023-12-04T14:44:29.822Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:50:36.385Z", + "__v": 0 + }, + { + "_id": "656dd9c8eeaed99681707cf5", + "categoriaProduto": { + "equipamento": { + "nome": "Luva de Goleiro futuro z grip 1 ", + "fornecedor": { + "_id": "656d34651e1a23a4d758cf2c", + "cnpj": "76.751.072/0001-32", + "nomeEmpresa": "PUMA DO BRASIL LTDA", + "cep": "06846-095", + "endereco": "Rua Pasadena,10 -B- SP, Embu das Artes, Bosque Capuava", + "dataCadastro": "2023-12-04T02:07:33.948Z", + "__v": 0 + }, + "cor": "Preto/Verde", + "sexo": "-", + "tamanho": 30, + "preco": "250,00", + "quantidade": "50", + "imagemProduto": [ + { + "_id": "656dd9c7eeaed99681707cf2", + "name": "luva_de_goleiro_future_grip_preto_e_verde_puma_8357_1_20190417160814.png", + "size": 58420, + "key": "55eabd3ba8f2d8b99919a8003e34fb74-luva_de_goleiro_future_grip_preto_e_verde_puma_8357_1_20190417160814.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/55eabd3ba8f2d8b99919a8003e34fb74-luva_de_goleiro_future_grip_preto_e_verde_puma_8357_1_20190417160814.png", + "createAt": "2023-12-04T13:53:11.012Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T13:53:12.096Z", + "__v": 0 + }, + { + "_id": "656ddc97eeaed99681707db9", + "categoriaProduto": { + "suplemento": { + "nome": "Nutri Whey Protein Chocolate 900g", + "fornecedor": { + "_id": "656d355b1e1a23a4d758cf33", + "cnpj": "22.863.265/0001-56", + "nomeEmpresa": " Overclock Comercio E Suporte Ltda", + "cep": "02611-003", + "endereco": "Avenida Parada Pinto ,52 --- SP, São Paulo, Vila Nova Cachoeirinha", + "dataCadastro": "2023-12-04T02:11:39.844Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "O", + "tamanho": 1, + "preco": "47,00", + "quantidade": "50", + "imagemProduto": [ + { + "_id": "656ddc96eeaed99681707db6", + "name": "252-0951-799_zoom1.png", + "size": 24118, + "key": "615dca160abb78fc7f16b6ce81f4acd9-252-0951-799_zoom1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/615dca160abb78fc7f16b6ce81f4acd9-252-0951-799_zoom1.png", + "createAt": "2023-12-04T14:05:10.646Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:05:11.886Z", + "__v": 0 + }, + { + "_id": "656ddfa0c664deffad3d2b4c", + "categoriaProduto": { + "suplemento": { + "nome": "Suplemento alimentar em pó", + "fornecedor": { + "_id": "656d355b1e1a23a4d758cf33", + "cnpj": "22.863.265/0001-56", + "nomeEmpresa": " Overclock Comercio E Suporte Ltda", + "cep": "02611-003", + "endereco": "Avenida Parada Pinto ,52 --- SP, São Paulo, Vila Nova Cachoeirinha", + "dataCadastro": "2023-12-04T02:11:39.844Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "O", + "tamanho": 1, + "preco": "400,00", + "quantidade": 809, + "imagemProduto": [ + { + "_id": "656ddf9ec664deffad3d2b49", + "name": "2POTES_tutti_FV.png", + "size": 66786, + "key": "b87d0d369db59ea4bf34f1a05c64038e-2POTES_tutti_FV.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b87d0d369db59ea4bf34f1a05c64038e-2POTES_tutti_FV.png", + "createAt": "2023-12-04T14:18:06.474Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:18:08.103Z", + "__v": 0 + }, + { + "_id": "656de08426dfdba9ec378fc2", + "categoriaProduto": { + "calcado": { + "nome": "SUEDE CLASSIC XXI", + "fornecedor": { + "_id": "656d34651e1a23a4d758cf2c", + "cnpj": "76.751.072/0001-32", + "nomeEmpresa": "PUMA DO BRASIL LTDA", + "cep": "06846-095", + "endereco": "Rua Pasadena,10 -B- SP, Embu das Artes, Bosque Capuava", + "dataCadastro": "2023-12-04T02:07:33.948Z", + "__v": 0 + }, + "cor": "Vinho", + "sexo": "F", + "tamanho": 39, + "preco": "300,00", + "quantidade": "56", + "imagemProduto": [ + { + "_id": "656de08226dfdba9ec378fbf", + "name": "Tenis-Puma-Suede-Classic-XXI-Vermelho-5.png", + "size": 46348, + "key": "e25c158b21edfd1a525e73bef96853fa-Tenis-Puma-Suede-Classic-XXI-Vermelho-5.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/e25c158b21edfd1a525e73bef96853fa-Tenis-Puma-Suede-Classic-XXI-Vermelho-5.png", + "createAt": "2023-12-04T14:21:54.707Z", + "__v": 0 + }, + { + "_id": "656de612c664deffad3d3004", + "name": "Tenis-Puma-Suede-Classic-XXI-Vermelho.png", + "size": 34296, + "key": "7b294905626b7d61a3b8bdbce48a619f-Tenis-Puma-Suede-Classic-XXI-Vermelho.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/7b294905626b7d61a3b8bdbce48a619f-Tenis-Puma-Suede-Classic-XXI-Vermelho.png", + "createAt": "2023-12-04T14:45:38.162Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:21:56.068Z", + "__v": 0 + }, + { + "_id": "656de16feeaed99681708137", + "categoriaProduto": { + "calcado": { + "nome": "Tênis RS-Trck Earth", + "fornecedor": { + "_id": "656d34651e1a23a4d758cf2c", + "cnpj": "76.751.072/0001-32", + "nomeEmpresa": "PUMA DO BRASIL LTDA", + "cep": "06846-095", + "endereco": "Rua Pasadena,10 -B- SP, Embu das Artes, Bosque Capuava", + "dataCadastro": "2023-12-04T02:07:33.948Z", + "__v": 0 + }, + "cor": "Azul / Verde", + "sexo": "M", + "tamanho": 44, + "preco": "400,00", + "quantidade": 55, + "imagemProduto": [ + { + "_id": "656de16eeeaed99681708133", + "name": "38856-2-001-4.jpg", + "size": 98026, + "key": "fef1520c9624015b519840f6974ecc67-38856-2-001-4.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/fef1520c9624015b519840f6974ecc67-38856-2-001-4.jpg", + "createAt": "2023-12-04T14:25:50.519Z", + "__v": 0 + }, + { + "_id": "656de16ec664deffad3d2d5d", + "name": "38856-2-001-1.jpg", + "size": 57406, + "key": "b836f3557f65a8e5eaddf6bef40d67f9-38856-2-001-1.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b836f3557f65a8e5eaddf6bef40d67f9-38856-2-001-1.jpg", + "createAt": "2023-12-04T14:25:50.489Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:25:51.476Z", + "__v": 0 + }, + { + "_id": "656de1b9c664deffad3d2d66", + "categoriaProduto": { + "calcado": { + "nome": "Tenis adidas NMD-R1", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "Branco", + "sexo": "F", + "tamanho": 36, + "preco": "300,00", + "quantidade": 45, + "imagemProduto": [ + { + "_id": "656de1b8c664deffad3d2d63", + "name": "Tenis-adidas-NMD-R1-Feminino-Branco-5.png", + "size": 39290, + "key": "5dcb86d690c972b76d9a299325ca13a8-Tenis-adidas-NMD-R1-Feminino-Branco-5.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/5dcb86d690c972b76d9a299325ca13a8-Tenis-adidas-NMD-R1-Feminino-Branco-5.png", + "createAt": "2023-12-04T14:27:04.140Z", + "__v": 0 + }, + { + "_id": "656de1b8eeaed99681708180", + "name": "Tenis-adidas-NMD-R1-Feminino-Branco.png", + "size": 35186, + "key": "c09eefe71e1bff8ca9eddfd0544cef8c-Tenis-adidas-NMD-R1-Feminino-Branco.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/c09eefe71e1bff8ca9eddfd0544cef8c-Tenis-adidas-NMD-R1-Feminino-Branco.png", + "createAt": "2023-12-04T14:27:04.129Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:27:05.360Z", + "__v": 0 + }, + { + "_id": "656de207eeaed996817081d5", + "categoriaProduto": { + "calcado": { + "nome": "AIR FORCE 1 ´07 ESS ", + "fornecedor": { + "_id": "656946b30cf846b26053126a", + "cnpj": "59.546.515/0016-10", + "nomeEmpresa": "Fisia Comércio de Produtos Esportivos Ltda ", + "cep": "13456-701", + "endereco": "Rua do Cromo,56 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "dataCadastro": "2023-12-01T02:36:35.643Z", + "__v": 0 + }, + "cor": "Branco", + "sexo": "-", + "tamanho": 68, + "preco": "400,00", + "quantidade": 20, + "imagemProduto": [ + { + "_id": "656de206eeaed996817081d2", + "name": "DQ757-0-001-5.png", + "size": 38984, + "key": "8a3ba3f9c99f16c58be405a9348f2617-DQ757-0-001-5.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/8a3ba3f9c99f16c58be405a9348f2617-DQ757-0-001-5.png", + "createAt": "2023-12-04T14:28:22.737Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:28:23.964Z", + "__v": 0 + }, + { + "_id": "656de24ac664deffad3d2d71", + "categoriaProduto": { + "calcado": { + "nome": "AIR FORCE ´07 NEXT NATURE", + "fornecedor": { + "_id": "656946b30cf846b26053126a", + "cnpj": "59.546.515/0016-10", + "nomeEmpresa": "Fisia Comércio de Produtos Esportivos Ltda ", + "cep": "13456-701", + "endereco": "Rua do Cromo,56 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "dataCadastro": "2023-12-01T02:36:35.643Z", + "__v": 0 + }, + "cor": "Creme", + "sexo": "-", + "tamanho": 34, + "preco": "300,00", + "quantidade": 5, + "imagemProduto": [ + { + "_id": "656de249c664deffad3d2d6d", + "name": "DX454-4-072-1.png", + "size": 37588, + "key": "40214b18a2b820ca9e8d21de8b195e7f-DX454-4-072-1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/40214b18a2b820ca9e8d21de8b195e7f-DX454-4-072-1.png", + "createAt": "2023-12-04T14:29:29.135Z", + "__v": 0 + }, + { + "_id": "656de249eeaed99681708238", + "name": "DX454-4-072-5.png", + "size": 42166, + "key": "ebcb1c2c30ba9124f72a163aeca11370-DX454-4-072-5.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/ebcb1c2c30ba9124f72a163aeca11370-DX454-4-072-5.png", + "createAt": "2023-12-04T14:29:29.087Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:29:30.303Z", + "__v": 0 + }, + { + "_id": "656de28aeeaed996817082e6", + "categoriaProduto": { + "calcado": { + "nome": "AIR JORDAN XXXVII LOW", + "fornecedor": { + "_id": "656946b30cf846b26053126a", + "cnpj": "59.546.515/0016-10", + "nomeEmpresa": "Fisia Comércio de Produtos Esportivos Ltda ", + "cep": "13456-701", + "endereco": "Rua do Cromo,56 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "dataCadastro": "2023-12-01T02:36:35.643Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "M", + "tamanho": 40, + "preco": "800,00", + "quantidade": "56", + "imagemProduto": [ + { + "_id": "656de289c664deffad3d2dcf", + "name": "DQ412-2-061-5.png", + "size": 52822, + "key": "b8972e2c41e63ca1c0654a79ec1e2999-DQ412-2-061-5.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b8972e2c41e63ca1c0654a79ec1e2999-DQ412-2-061-5.png", + "createAt": "2023-12-04T14:30:33.845Z", + "__v": 0 + }, + { + "_id": "656de2a7c664deffad3d2edf", + "name": "DQ412-2-061-1.png", + "size": 50500, + "key": "6cfd532e079843f57ec20c576d8cdd57-DQ412-2-061-1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/6cfd532e079843f57ec20c576d8cdd57-DQ412-2-061-1.png", + "createAt": "2023-12-04T14:31:03.933Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:30:34.944Z", + "__v": 0 + }, + { + "_id": "656de2f19fd860c4882658d4", + "categoriaProduto": { + "calcado": { + "nome": "Tênis grand-court-2-0", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "Branco", + "sexo": "F", + "tamanho": 38, + "preco": "250,00", + "quantidade": 5, + "imagemProduto": [ + { + "_id": "656de2f09fd860c4882658d1", + "name": "tenis-adidas-grand-court-2-0-branco-3.png", + "size": 169330, + "key": "de86aad39db2950a4fe78dbdc74dd1d5-tenis-adidas-grand-court-2-0-branco-3.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/de86aad39db2950a4fe78dbdc74dd1d5-tenis-adidas-grand-court-2-0-branco-3.png", + "createAt": "2023-12-04T14:32:16.328Z", + "__v": 0 + }, + { + "_id": "656de2efeeaed99681708349", + "name": "tenis-adidas-grand-court-2-0-branco.png", + "size": 40398, + "key": "d7159d1edd50a7e74b00c5c9f225cbb6-tenis-adidas-grand-court-2-0-branco.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/d7159d1edd50a7e74b00c5c9f225cbb6-tenis-adidas-grand-court-2-0-branco.png", + "createAt": "2023-12-04T14:32:15.957Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:32:17.070Z", + "__v": 0 + }, + { + "_id": "656de340eeaed99681708438", + "categoriaProduto": { + "calcado": { + "nome": "Tenis adidas NMD-R1", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "Colorido", + "sexo": "F", + "tamanho": 36, + "preco": "405,00", + "quantidade": 55, + "imagemProduto": [ + { + "_id": "656de33f9fd860c488265a7d", + "name": "FB8-3804-028_zoom3.png", + "size": 86590, + "key": "f2e57ba451ef0f816c62700a4c761e25-FB8-3804-028_zoom3.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/f2e57ba451ef0f816c62700a4c761e25-FB8-3804-028_zoom3.png", + "createAt": "2023-12-04T14:33:35.975Z", + "__v": 0 + }, + { + "_id": "656de33feeaed99681708432", + "name": "FB8-3804-028_zoom1.png", + "size": 15438, + "key": "83d13d1cdaed32c7b04ff4a9fca0e230-FB8-3804-028_zoom1.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/83d13d1cdaed32c7b04ff4a9fca0e230-FB8-3804-028_zoom1.png", + "createAt": "2023-12-04T14:33:35.735Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:33:36.987Z", + "__v": 0 + }, + { + "_id": "656de3a2eeaed996817084a7", + "categoriaProduto": { + "suplemento": { + "nome": "Suplemento alimentar Tutti-Frutti", + "fornecedor": { + "_id": "656d355b1e1a23a4d758cf33", + "cnpj": "22.863.265/0001-56", + "nomeEmpresa": " Overclock Comercio E Suporte Ltda", + "cep": "02611-003", + "endereco": "Avenida Parada Pinto ,52 --- SP, São Paulo, Vila Nova Cachoeirinha", + "dataCadastro": "2023-12-04T02:11:39.844Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "O", + "tamanho": 1, + "preco": "100,00", + "quantidade": 5, + "imagemProduto": [ + { + "_id": "656de3a1eeaed996817084a4", + "name": "shopping.png", + "size": 23022, + "key": "46d77660277921f3d0f9e1c19c7c2470-shopping.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/46d77660277921f3d0f9e1c19c7c2470-shopping.png", + "createAt": "2023-12-04T14:35:13.125Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:35:14.372Z", + "__v": 0 + }, + { + "_id": "656de3e3eeaed9968170850f", + "categoriaProduto": { + "suplemento": { + "nome": "Suplemento alimentar - Pêssego e Tangerina", + "fornecedor": { + "_id": "656d355b1e1a23a4d758cf33", + "cnpj": "22.863.265/0001-56", + "nomeEmpresa": " Overclock Comercio E Suporte Ltda", + "cep": "02611-003", + "endereco": "Avenida Parada Pinto ,52 --- SP, São Paulo, Vila Nova Cachoeirinha", + "dataCadastro": "2023-12-04T02:11:39.844Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "O", + "tamanho": 1, + "preco": "120,00", + "quantidade": 63, + "imagemProduto": [ + { + "_id": "656de3e2eeaed9968170850c", + "name": "D_NQ_NP_797702-MLB53814628455_022023-O.png", + "size": 18440, + "key": "fea0778c7f1e17d45d6a54d7224bd9c1-D_NQ_NP_797702-MLB53814628455_022023-O.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/fea0778c7f1e17d45d6a54d7224bd9c1-D_NQ_NP_797702-MLB53814628455_022023-O.png", + "createAt": "2023-12-04T14:36:18.280Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:36:19.475Z", + "__v": 0 + }, + { + "_id": "656de4269fd860c488265af1", + "categoriaProduto": { + "suplemento": { + "nome": "Suplemento alimentar - Pink Lemonade", + "fornecedor": { + "_id": "656d355b1e1a23a4d758cf33", + "cnpj": "22.863.265/0001-56", + "nomeEmpresa": " Overclock Comercio E Suporte Ltda", + "cep": "02611-003", + "endereco": "Avenida Parada Pinto ,52 --- SP, São Paulo, Vila Nova Cachoeirinha", + "dataCadastro": "2023-12-04T02:11:39.844Z", + "__v": 0 + }, + "cor": "Preto", + "sexo": "O", + "tamanho": 1, + "preco": "130,00", + "quantidade": 20, + "imagemProduto": [ + { + "_id": "656de4259fd860c488265aee", + "name": "Frame26.png", + "size": 56686, + "key": "27d6cb8c802ac7ab0c9d5cdf71d4fb47-Frame26.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/27d6cb8c802ac7ab0c9d5cdf71d4fb47-Frame26.png", + "createAt": "2023-12-04T14:37:25.319Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:37:26.405Z", + "__v": 0 + }, + { + "_id": "656de47d9fd860c488265c99", + "categoriaProduto": { + "equipamento": { + "nome": "Pé de Pato/Nadadeira Nike", + "fornecedor": { + "_id": "656946b30cf846b26053126a", + "cnpj": "59.546.515/0016-10", + "nomeEmpresa": "Fisia Comércio de Produtos Esportivos Ltda ", + "cep": "13456-701", + "endereco": "Rua do Cromo,56 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "dataCadastro": "2023-12-01T02:36:35.643Z", + "__v": 0 + }, + "cor": "Cinza / Vermelho", + "sexo": "-", + "tamanho": 39, + "preco": "350,00", + "quantidade": 10, + "imagemProduto": [ + { + "_id": "656de47d9fd860c488265c96", + "name": "ffd9673b81026b4899dbcc055c32ec4f.png", + "size": 108018, + "key": "b5e0c1659704aeed302247e279628c85-ffd9673b81026b4899dbcc055c32ec4f.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/b5e0c1659704aeed302247e279628c85-ffd9673b81026b4899dbcc055c32ec4f.png", + "createAt": "2023-12-04T14:38:53.164Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-04T14:38:53.905Z", + "__v": 0 + }, + { + "_id": "656e767b857b18bf546c09be", + "categoriaProduto": { + "equipamento": { + "nome": "Luva de Goleiro Puma", + "fornecedor": { + "_id": "656d34651e1a23a4d758cf2c", + "cnpj": "76.751.072/0001-32", + "nomeEmpresa": "PUMA DO BRASIL LTDA", + "cep": "06846-095", + "endereco": "Rua Pasadena,10 -B- SP, Embu das Artes, Bosque Capuava", + "dataCadastro": "2023-12-04T02:07:33.948Z", + "__v": 0 + }, + "cor": "Verde Limão / Preto", + "sexo": "-", + "tamanho": 32, + "preco": "50,00", + "quantidade": "20", + "imagemProduto": [ + { + "_id": "656e76b5857b18bf546c0aa6", + "name": "Luvas-de-goleiro-puma.png", + "size": 290994, + "key": "953c212059413732fef51937aee1a783-Luvas-de-goleiro-puma.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/953c212059413732fef51937aee1a783-Luvas-de-goleiro-puma.png", + "createAt": "2023-12-05T01:02:45.009Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-05T01:01:47.417Z", + "__v": 0 + }, + { + "_id": "656e7703857b18bf546c0ab9", + "categoriaProduto": { + "roupa": { + "nome": "Camisa de Praia", + "fornecedor": { + "_id": "656d36491e1a23a4d758cf3b", + "cnpj": "16.590.234/0064-50", + "nomeEmpresa": "AREZZO INDUSTRIA E COMERCIO S.A ", + "cep": "25585-085", + "endereco": "Avenida Arthur Antônio Sendas,999 - GALPÃO 300- RJ, São João de Meriti, Parque Juriti", + "dataCadastro": "2023-12-04T02:15:37.788Z", + "__v": 0 + }, + "cor": "Azul / Verde", + "sexo": "M", + "tamanho": 30, + "preco": "45,00", + "quantidade": 9, + "imagemProduto": [ + { + "_id": "656e7701857b18bf546c0ab6", + "name": "image.png", + "size": 52110, + "key": "a43af8a0a8eec413dd670e5026040eec-image.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/a43af8a0a8eec413dd670e5026040eec-image.png", + "createAt": "2023-12-05T01:04:01.861Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-05T01:04:03.001Z", + "__v": 0 + }, + { + "_id": "656e781babcc75223420d601", + "categoriaProduto": { + "equipamento": { + "nome": "Luva de Boxe / Muay Thai Profissional", + "fornecedor": { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + "cor": "Vermelho / Preto", + "sexo": "-", + "tamanho": 35, + "preco": "60,33", + "quantidade": 29, + "imagemProduto": [ + { + "_id": "656e781aabcc75223420d5fe", + "name": "luvaLuta.jpg", + "size": 169805, + "key": "071fc7792884799eac5e944c2f241c26-luvaLuta.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/071fc7792884799eac5e944c2f241c26-luvaLuta.jpg", + "createAt": "2023-12-05T01:08:42.431Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-05T01:08:43.307Z", + "__v": 0 + }, + { + "_id": "656e78e1abcc75223420d60b", + "categoriaProduto": { + "calcado": { + "nome": "Tênis Puma X-ray 2 Square Bdp", + "fornecedor": { + "_id": "656d34651e1a23a4d758cf2c", + "cnpj": "76.751.072/0001-32", + "nomeEmpresa": "PUMA DO BRASIL LTDA", + "cep": "06846-095", + "endereco": "Rua Pasadena,10 -B- SP, Embu das Artes, Bosque Capuava", + "dataCadastro": "2023-12-04T02:07:33.948Z", + "__v": 0 + }, + "cor": "Colorido", + "sexo": "F", + "tamanho": 37, + "preco": "400,00", + "quantidade": 600, + "imagemProduto": [ + { + "_id": "656e78e0abcc75223420d608", + "name": "tenis.PNG", + "size": 192407, + "key": "d468045b90dc13f8c630be4c0242825a-tenis.PNG", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/d468045b90dc13f8c630be4c0242825a-tenis.PNG", + "createAt": "2023-12-05T01:12:00.827Z", + "__v": 0 + } + ] + } + }, + "dataCadastro": "2023-12-05T01:12:01.766Z", + "__v": 0 + } + ] \ No newline at end of file diff --git a/src/mocks/provider.mock.json b/src/mocks/provider.mock.json new file mode 100644 index 0000000..f661418 --- /dev/null +++ b/src/mocks/provider.mock.json @@ -0,0 +1,56 @@ +[ + { + "_id": "656946b30cf846b26053126a", + "cnpj": "59.546.515/0016-10", + "nomeEmpresa": "Fisia Comércio de Produtos Esportivos Ltda ", + "cep": "13456-701", + "endereco": "Rua do Cromo,56 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "dataCadastro": "2023-12-01T02:36:35.643Z", + "__v": 0 + }, + { + "_id": "6569480b0cf846b2605312b8", + "cnpj": "42.274.696/0001-94", + "nomeEmpresa": "ADIDAS DO BRASIL LTDA", + "cep": "06833-073", + "endereco": "Rua Pataxós,241 --- SP, Embu das Artes, Pataxós", + "dataCadastro": "2023-12-01T02:42:19.890Z", + "__v": 0 + }, + { + "_id": "656d34651e1a23a4d758cf2c", + "cnpj": "76.751.072/0001-32", + "nomeEmpresa": "PUMA DO BRASIL LTDA", + "cep": "06846-095", + "endereco": "Rua Pasadena,10 -B- SP, Embu das Artes, Bosque Capuava", + "dataCadastro": "2023-12-04T02:07:33.948Z", + "__v": 0 + }, + { + "_id": "656d355b1e1a23a4d758cf33", + "cnpj": "22.863.265/0001-56", + "nomeEmpresa": " Overclock Comercio E Suporte Ltda", + "cep": "02611-003", + "endereco": "Avenida Parada Pinto ,52 --- SP, São Paulo, Vila Nova Cachoeirinha", + "dataCadastro": "2023-12-04T02:11:39.844Z", + "__v": 0 + }, + { + "_id": "656d36491e1a23a4d758cf3b", + "cnpj": "16.590.234/0064-50", + "nomeEmpresa": "AREZZO INDUSTRIA E COMERCIO S.A ", + "cep": "25585-085", + "endereco": "Avenida Arthur Antônio Sendas,999 - GALPÃO 300- RJ, São João de Meriti, Parque Juriti", + "dataCadastro": "2023-12-04T02:15:37.788Z", + "__v": 0 + }, + { + "_id": "656d37535f155ad9d39b37e0", + "cnpj": "61.088.894/0008-84", + "nomeEmpresa": "PENALTY", + "cep": "18130-430", + "endereco": "Avenida Getúlio Vargas,930 --- SP, São Roque, Centro", + "dataCadastro": "2023-12-04T02:20:03.077Z", + "__v": 0 + } + ] \ No newline at end of file diff --git a/src/mocks/user.mock.json b/src/mocks/user.mock.json new file mode 100644 index 0000000..c4145a3 --- /dev/null +++ b/src/mocks/user.mock.json @@ -0,0 +1,371 @@ +[ + { + "_id": "638799113daa035e68364cfa", + "cpf": "471.928.098-69", + "nome": "renan cliente", + "login": { + "email": "renafigueoli09@gmail.com", + "password": "$2b$10$hIdw9SiOGqqgaTJwSbOVLuAiY38B9OJ5kIYFiRy8juuRMKHVWovp2", + "isAdmin": false + }, + "dataNascimento": "33/33/333", + "sexo": "M", + "cep": "08452-000", + "endereco": "Rua João de Siqueira Afonso,333 -333- SP, São Paulo, Lajeado", + "dataCadastro": "30/11/2022", + "imagemPerfil": null, + "__v": 0 + }, + { + "_id": "6386542b6dec4623f23b54bb", + "cpf": "471.928.098-61", + "nome": "Renan Figueiredo de Oliveira", + "login": { + "email": "renanfigueoli09@gmail.com", + "password": "$2b$10$pxiMHCf14PLftGgLi6KtF.1fGLDx7hS4t0Wm88Mwv9JWbQkgEnoGW", + "isAdmin": false + }, + "dataNascimento": "09/06/2003", + "sexo": "M", + "cep": "08452-000", + "endereco": "Rua João de Siqueira Afonso ,213 -casa- SP, São Paulo, Lajeado", + "dataCadastro": "29/11/2022", + "imagemPerfil": null, + "__v": 0 + }, + { + "_id": "6385739da6d27bb7801966c6", + "cpf": "839.226.370-78", + "nome": "Lisandra Ferraz", + "login": { + "email": "lih.ferrazsantana@gmail.com", + "password": "$2b$10$lOYIxZmCNL./7czRorvkY.tMrtHI7/EyuCl9eFM8prCo7KhzmOAcW", + "isAdmin": true + }, + "dataNascimento": "05/03/2006", + "sexo": "F", + "cep": "08411-461", + "endereco": "Rua Alexandre Legrand,93 --- SP, São Paulo, Jardim Marpu", + "dataCadastro": "28/11/2022", + "imagemPerfil": null, + "__v": 0 + }, + { + "_id": "6387d36432fc20f92a1f57f7", + "cpf": "000.000.000-00", + "nome": "Paulo Gabriel ", + "login": { + "email": "gregoriogabriel299@gmail.com", + "password": "$2b$10$S3rcaVJQcRCBEF4B/ZBzIOwsZaFy.LDBmAuZQJQ4o1ByttOndygm2", + "isAdmin": false + }, + "dataNascimento": "07/07/2003", + "sexo": "M", + "cep": "08452-262", + "endereco": "Rua Jorge Neto Falcão,58 -casa- SP, São Paulo, Lajeado", + "dataCadastro": "30/11/2022", + "imagemPerfil": { + "_id": "6387d36332fc20f92a1f57f5", + "name": "eu.jpg", + "size": 339196, + "key": "0e0335cc1cbe797c89de95569a811b21-eu.jpg", + "url": "https://upload-image-fullsports.s3.amazonaws.com/0e0335cc1cbe797c89de95569a811b21-eu.jpg", + "createAt": "2022-11-30T22:04:19.984Z", + "__v": 0 + }, + "__v": 0 + }, + { + "_id": "638580003c3c3c3b69aacbf2", + "cpf": "471.928.098-60", + "nome": "Renan Figueiredo de Oliveira ", + "login": { + "email": "renanfigueoli@outlook.com", + "password": "$2b$10$MzVOP819aJPmYyMpQzAckechbgw57cDM4LfgJCP26wkMcwgWeT0F2", + "isAdmin": true + }, + "dataNascimento": "09/06/2003", + "sexo": "M", + "cep": "08452-000", + "endereco": "Rua João de Siqueira Afonso,775 -casa- SP, São Paulo, Lajeado", + "dataCadastro": "29/11/2022", + "imagemPerfil": { + "_id": "654f6dc90e0b5770407019f2", + "name": "78419902.jpg", + "size": 28578, + "key": "315ae85836610b3b02c853b7bc2d69de-78419902.jpg", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/315ae85836610b3b02c853b7bc2d69de-78419902.jpg", + "createAt": "2023-11-11T12:04:25.993Z", + "__v": 0 + }, + "__v": 0 + }, + { + "_id": "6388a3a632fc20f92a1f6e16", + "cpf": "443.112.212-21", + "nome": "renan", + "login": { + "email": "renanfigueoli08@outlook.com", + "password": "$2b$10$TSgRrdf.inBOY/kRLMT0iu/b17yj8PhRa2.Q5AWg9HKNKqLrhBj5.", + "isAdmin": false + }, + "dataNascimento": "09/06/2033", + "sexo": "M", + "cep": "08452-000", + "endereco": "Rua João de Siqueira Afonso,777 -cas- SP, São Paulo, Lajeado", + "dataCadastro": "01/12/2022", + "__v": 0 + }, + { + "_id": "6388028832fc20f92a1f6398", + "cpf": "502.997.588-85", + "nome": "Daniela Lemmo 2", + "login": { + "email": "claudia_houck@hotmail.com", + "password": "$2b$10$xy8RGo1V7tyRT/DWE9OYyudgY7.rMeeCnsYntIEopV.R39obpqyKC", + "isAdmin": false + }, + "dataNascimento": "03/12/2003", + "sexo": "F", + "cep": "03445040", + "endereco": "Rua Padre Manuel Bernardes,25 -Casa 2- SP, São Paulo, Vila Carrão", + "dataCadastro": "11/30/2022", + "__v": 0 + }, + { + "_id": "63887c1d32fc20f92a1f6ad1", + "cpf": "467.794.218-80", + "nome": "Juliana Rezende Silva", + "login": { + "email": "julianarezsilva@gmail.com", + "password": "$2b$10$LjL.wpo3zFwSjn9pDZnU6OSSrcX0OYrqrUEZ/oqzs514mjVqzkHrC", + "isAdmin": false + }, + "dataNascimento": "20/04/2004", + "sexo": "F", + "cep": "08440-540", + "endereco": "São José de Mossamedes ,249 -66- Casada, São Paulo, Guaianases ", + "dataCadastro": "01/12/2022", + "imagemPerfil": null, + "__v": 0 + }, + { + "_id": "64677ce597419b54310ab2ba", + "cpf": "502.997.588-85", + "nome": "Daniela Lemmo Houck", + "login": { + "email": "daniela_houck@hotmail.com", + "password": "$2b$10$GC8XbH1wmC22kDX.FG5pheoO1D9QYHt4IbbybCdRTVDIBLSReACrO", + "isAdmin": true + }, + "dataNascimento": "03/12/2003", + "sexo": "F", + "cep": "03445-040", + "endereco": "Rua Padre Manuel Bernardes,131 -casa- SP, São Paulo, Vila Carrão", + "imagemPerfil": null, + "dataCadastro": "2023-05-19T13:43:01.964Z", + "__v": 0 + }, + { + "_id": "646ba0b022b9d9335e72e7fe", + "cpf": "839.226.370-78", + "nome": "Lisandra Ferraz", + "login": { + "email": "errazsantana@gmail.com", + "password": "$2b$10$aEMq5WhF0GDotXijnW7Kl.JNdWd4ULu/koxjEQFvJ4IKz07m4JWFu", + "isAdmin": false + }, + "dataNascimento": "04/03/2003", + "sexo": "F", + "cep": "08411-461", + "endereco": "Rua Alexandre Legrand,93 --- SP, São Paulo, Jardim Marpu", + "imagemPerfil": null, + "dataCadastro": "2023-05-22T17:04:48.465Z", + "__v": 0 + }, + { + "_id": "6470ec8f4abd67f2d704db4e", + "cpf": "839.226.370-78", + "nome": "Lisandra Ferraz", + "login": { + "email": "teste@gmail.com.br", + "password": "$2b$10$tVE3NPshX6SKYD0K.C4zYONDmqRWB3RYjFRipJsZNwyxWJI48bQYK", + "isAdmin": false + }, + "dataNascimento": "05/03/2006", + "sexo": "F", + "cep": "08411-461", + "endereco": "Rua Alexandre Legrand,34 --- SP, São Paulo, Jardim Marpu", + "imagemPerfil": null, + "dataCadastro": "2023-05-26T17:29:51.955Z", + "__v": 0 + }, + { + "_id": "647c100bfb621af794d2ab14", + "cpf": "390.676.470-20", + "nome": "Marcia Dourado", + "login": { + "email": "MarciaDourado@gmail.com", + "password": "$2b$10$4FVwKc9mhcsIK8tVabdWmulldlaPQK9c.5i57fwrTM1lU3vfs.fEC", + "isAdmin": false + }, + "dataNascimento": "02/02/2003", + "sexo": "F", + "cep": "78152-132", + "endereco": "Rua Marinet,90 --- MT, Várzea Grande, São Matheus", + "imagemPerfil": null, + "dataCadastro": "2023-06-04T04:16:11.309Z", + "__v": 0 + }, + { + "_id": "647db3302e239bd1fbf19656", + "cpf": "471.928.098-61", + "nome": "Renan TESTE MOBLIE", + "login": { + "email": "renan_moblie@outlook.com", + "password": "$2b$10$kaRajxrp24BJCaTOXErWsunJ4PvlscSglvoCB4BNP5QA3ptPUfhEK", + "isAdmin": false + }, + "dataNascimento": "09/06/2003", + "sexo": "Masculino", + "cep": "08452-000", + "endereco": "Rua João de Siqueira Afonso,4234 -casa- SP, São Paulo, Lajeado", + "imagemPerfil": null, + "dataCadastro": "2023-06-05T10:04:32.012Z", + "__v": 0 + }, + { + "_id": "6482dce0a50f66f2d45c5aca", + "cpf": "127.642.116-86", + "nome": "Paulo Cliente", + "login": { + "email": "paulo2.0-@live.com", + "password": "$2b$10$yKhRYhTehq3MgK8cOlQJculUniwaB85CHbGZquIQK/uZrOiW8W1kq", + "isAdmin": false + }, + "dataNascimento": "11/01/1996", + "sexo": "-", + "cep": "08230-220", + "endereco": "Rua Itaguatins,00 -00- SP, São Paulo, Vila Taquari", + "imagemPerfil": { + "_id": "6482dce0a50f66f2d45c5ac6", + "name": "Design sem nome.png", + "size": 179207, + "key": "528a20aa93b173a8806dcd62622a6c76-Design sem nome.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/528a20aa93b173a8806dcd62622a6c76-Design%20sem%20nome.png", + "createAt": "2023-06-09T08:03:44.091Z", + "__v": 0 + }, + "dataCadastro": "2023-06-09T08:03:44.282Z", + "__v": 0 + }, + { + "_id": "656100e42aa42fe1274a259a", + "cpf": "863.605.770-11", + "nome": "Lisandra Teste 01", + "login": { + "email": "teste@gmail.com", + "password": "$2b$10$a.gkolUOCEY02Y702PeU5u8Br0eBYjoCwbhA4W.WVzT.EB3pdk1lO", + "isAdmin": false + }, + "dataNascimento": "04/03/2003", + "sexo": "-", + "cep": "13456-701", + "endereco": "Rua do Cromo,23 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "imagemPerfil": null, + "dataCadastro": "2023-11-24T20:00:36.583Z", + "__v": 0 + }, + { + "_id": "656103f8be70b2c67aca1694", + "cpf": "395.337.990-99", + "nome": "Lisandra Teste 02", + "login": { + "email": "teste2@outlook.com", + "password": "$2b$10$twc7.X6wKoMYUKpraW3TY.85bbWADRc8Nk.oW9RYoCG/H7F8z/PDG", + "isAdmin": false + }, + "dataNascimento": "04/03/2003", + "sexo": "F", + "cep": "13456-701", + "endereco": "Rua do Cromo,23 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "imagemPerfil": { + "_id": "656103f8be70b2c67aca1690", + "name": "9ac7a2c0104f1d5b99881f5ba69a9dbe_w200.gif", + "size": 362234, + "key": "9f38d441ab0715623baeb44a088afc1b-9ac7a2c0104f1d5b99881f5ba69a9dbe_w200.gif", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/9f38d441ab0715623baeb44a088afc1b-9ac7a2c0104f1d5b99881f5ba69a9dbe_w200.gif", + "createAt": "2023-11-24T20:13:44.475Z", + "__v": 0 + }, + "dataCadastro": "2023-11-24T20:13:44.842Z", + "__v": 0 + }, + { + "_id": "65610433be70b2c67aca16a2", + "cpf": "395.337.990-99", + "nome": "Lisandra Teste 02", + "login": { + "email": "teste2@gmail.com", + "password": "$2b$10$bQBRCmlWUT7vzHryGaCTzu18BlPHnmCwdwM56P3YA/vV/gCl5gPTa", + "isAdmin": false + }, + "dataNascimento": "04/03/2003", + "sexo": "F", + "cep": "13456-701", + "endereco": "Rua do Cromo,23 -- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "imagemPerfil": null, + "dataCadastro": "2023-11-24T20:14:43.252Z", + "__v": 0 + }, + { + "_id": "656ddff6c664deffad3d2b9b", + "cpf": "872.716.290-76", + "nome": "Amanda Pereira", + "login": { + "email": "seu_email@gmail.com", + "password": "$2b$10$gY/sKXSiCjfjBRt3e2xPIOb65hJOPReqnPPRXy7Bvz.K/8ZI7IphS", + "isAdmin": false + }, + "dataNascimento": "04/03/2003", + "sexo": "F", + "cep": "13456-701", + "endereco": "Rua do Cromo,134 --- SP, Santa Bárbara D'Oeste, Vila Pântano II", + "imagemPerfil": { + "_id": "656ddff6c664deffad3d2b97", + "name": "imagem_2023-12-04_111845428.png", + "size": 116195, + "key": "8ab229d38edd5669c84988dd83ee643c-imagem_2023-12-04_111845428.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/8ab229d38edd5669c84988dd83ee643c-imagem_2023-12-04_111845428.png", + "createAt": "2023-12-04T14:19:34.539Z", + "__v": 0 + }, + "dataCadastro": "2023-12-04T14:19:34.789Z", + "__v": 0 + }, + { + "_id": "656de07426dfdba9ec378f77", + "cpf": "723.558.990-61", + "nome": "Amanda Souza", + "login": { + "email": "seuemail@gmail.com", + "password": "$2b$10$I7TvCG0MW4ez3CN66EtRWeyet5qAYw4QM8J11kVbIH.Db8NXk082.", + "isAdmin": false + }, + "dataNascimento": "04/03/2003", + "sexo": "F", + "cep": "06833-300", + "endereco": "Rua José Semião Rodrigues Agostinho,456 --- SP, Embu das Artes, Quinhaú", + "imagemPerfil": { + "_id": "656de07426dfdba9ec378f73", + "name": "imagem_2023-12-04_112058237.png", + "size": 1154586, + "key": "1965ec27efd9270394ffd66fe716f3ff-imagem_2023-12-04_112058237.png", + "url": "https://upload-image-fullsports.s3.us-east-1.amazonaws.com/1965ec27efd9270394ffd66fe716f3ff-imagem_2023-12-04_112058237.png", + "createAt": "2023-12-04T14:21:40.351Z", + "__v": 0 + }, + "dataCadastro": "2023-12-04T14:21:40.789Z", + "__v": 0 + } + ] \ No newline at end of file diff --git a/src/modules/auth/auth.controller.spec.ts b/src/modules/auth/auth.controller.spec.ts new file mode 100644 index 0000000..cd2a6b1 --- /dev/null +++ b/src/modules/auth/auth.controller.spec.ts @@ -0,0 +1,104 @@ +import { JwtModule } from "@nestjs/jwt"; +import { MongooseModule } from "@nestjs/mongoose"; +import { PassportModule } from "@nestjs/passport"; +import { Test, TestingModule } from "@nestjs/testing"; +import { jwtConfig } from "./config/jwt.config"; +import { AuthController } from "./auth.controller"; +import { AuthService } from "./auth.service"; +import { JwtStrategy } from "./strategies/jwt.strategy"; +import { UserService } from "@users/users.service"; +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { ProductServices } from "@product/product.service"; +import { ProviderModule } from "@providers/providers.module"; +import { ProductModule } from "@product/product.module"; +import { RecommendationModule } from "@componentRecommendation/recommendation.module"; +import { ImageModule } from "@image/image.module"; +import { UserModule } from "@users/users.module"; +import { UnauthorizedException } from "@nestjs/common"; +const urlConfig = require("../../../globalConfig.json"); +describe("AuthController", () => { + let authController: AuthController; + let service: AuthService; + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + imports: [ + MongooseModule.forRoot(urlConfig.mongoUri), + UserModule, + ImageModule, + RecommendationModule, + ProductModule, + ProviderModule, + PassportModule, + JwtModule.register(jwtConfig), + ], + controllers: [AuthController], + providers: [ + AuthService, + JwtStrategy, + UserService, + RecommendationService, + ProductServices, + ], + exports: [AuthService], + }).compile(); + authController = app.get(AuthController); + service = app.get(AuthService); + }); + + describe("👨‍💻 AuthController", () => { + describe("👨‍💻loginUser() ", () => { + it("expect acess_token", async () => { + process.env.clientId = "valid-client-id"; + process.env.clientSecret = "valid-client-secret"; + const loginApp = await authController.LoginApp({ + client_id: "valid-client-id", + client_secret: "valid-client-secret", + }); + expect(loginApp.access_token); + }); + it("should return access token when client_id and client_secret are valid", async () => { + jest.spyOn(service, "validateApp").mockResolvedValue({ id: "app-id" }); + jest.spyOn(service, "generateToken").mockResolvedValue(undefined); + jest + .spyOn(service, "getAccessToken") + .mockResolvedValue({ access_token: "access-token" }); + process.env.clientId = "valid-client-id"; + process.env.clientSecret = "valid-client-secret"; + const body = { + client_id: "valid-client-id", + client_secret: "valid-client-secret", + }; + + const result = await authController.LoginApp(body); + + expect(service.validateApp).toHaveBeenCalledWith( + "valid-client-id", + "valid-client-secret" + ); + expect(service.generateToken).toHaveBeenCalledWith({ + id: "app-id", + }); + expect(service.getAccessToken).toHaveBeenCalled(); + expect(result).toStrictEqual({ access_token: "access-token" }); + }); + it("should throw UnauthorizedException when client_id and client_secret are invalid", async () => { + jest.spyOn(service, "validateApp").mockResolvedValue(null); + jest.spyOn(service, "generateToken"); + jest.spyOn(service, "getAccessToken"); + const body = { + client_id: "invalid-client-id", + client_secret: "invalid-client-secret", + }; + await expect(authController.LoginApp(body)).rejects.toThrow( + UnauthorizedException + ); + expect(service.validateApp).toHaveBeenCalledWith( + "invalid-client-id", + "invalid-client-secret" + ); + expect(service.generateToken).not.toHaveBeenCalled(); + expect(service.getAccessToken).not.toHaveBeenCalled(); + }); + }); + }); +}); diff --git a/src/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts similarity index 51% rename from src/auth/auth.controller.ts rename to src/modules/auth/auth.controller.ts index 119fe97..4ae5ee0 100644 --- a/src/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -1,25 +1,20 @@ -import { - Controller, - Post, - Body, - UnauthorizedException, - Logger, -} from "@nestjs/common"; +import { Controller, Post, Body, UnauthorizedException } from "@nestjs/common"; import { AuthService } from "./auth.service"; +import { ApiExcludeEndpoint } from "@nestjs/swagger"; @Controller("auth") export class AuthController { constructor(private readonly authService: AuthService) {} @Post("login-app") + @ApiExcludeEndpoint() async LoginApp(@Body() body: { client_id: string; client_secret: string }) { - const user = await this.authService.validateApp( + const app: { id: string } = await this.authService.validateApp( body.client_id, body.client_secret ); - if (!user) { + if (!app) { throw new UnauthorizedException(); } - const token = await this.authService.generateToken(user); - this.authService.setAccessToken(token.access_token); - return token; + await this.authService.generateToken(app); + return await this.authService.getAccessToken(); } } diff --git a/src/modules/auth/auth.module.ts b/src/modules/auth/auth.module.ts new file mode 100644 index 0000000..45c86b5 --- /dev/null +++ b/src/modules/auth/auth.module.ts @@ -0,0 +1,38 @@ +import { Module } from "@nestjs/common"; +import { PassportModule } from "@nestjs/passport"; +import { JwtModule } from "@nestjs/jwt"; +import { jwtConfig } from "./config/jwt.config"; +import { AuthController } from "./auth.controller"; +import { AuthService } from "./auth.service"; +import { JwtStrategy } from "./strategies/jwt.strategy"; +import { UserService } from "@users/users.service"; +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { ProductServices } from "@product/product.service"; +import { UserModule } from "@users/users.module"; +import { ImageModule } from "@image/image.module"; +import { RecommendationModule } from "@componentRecommendation/recommendation.module"; +import { ProductModule } from "@product/product.module"; +import { ProviderModule } from "@providers/providers.module"; + +@Module({ + imports: [ + UserModule, + ImageModule, + RecommendationModule, + ProductModule, + ProviderModule, + PassportModule, + JwtModule.register(jwtConfig), + // Outros módulos necessários para o AuthModule + ], + controllers: [AuthController], + providers: [ + AuthService, + JwtStrategy, + UserService, + RecommendationService, + ProductServices, + ], + exports: [AuthService], // Se AuthService for usado em outros módulos +}) +export class AuthModule {} diff --git a/src/modules/auth/auth.service.spec.ts b/src/modules/auth/auth.service.spec.ts new file mode 100644 index 0000000..f04c10e --- /dev/null +++ b/src/modules/auth/auth.service.spec.ts @@ -0,0 +1,106 @@ +import { JwtModule } from "@nestjs/jwt"; +import { MongooseModule } from "@nestjs/mongoose"; +import { PassportModule } from "@nestjs/passport"; +import { Test, TestingModule } from "@nestjs/testing"; +import { jwtConfig } from "./config/jwt.config"; +import { AuthController } from "./auth.controller"; +import { AuthService } from "./auth.service"; +import { JwtStrategy } from "./strategies/jwt.strategy"; +import { UserService } from "@users/users.service"; +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { ProductServices } from "@product/product.service"; +import { ProviderModule } from "@providers/providers.module"; +import { ProductModule } from "@product/product.module"; +import { RecommendationModule } from "@componentRecommendation/recommendation.module"; +import { ImageModule } from "@image/image.module"; +import { UserModule } from "@users/users.module"; +const urlConfig = require("../../../globalConfig.json"); +describe("AuthService", () => { + let service: AuthService; + + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + imports: [ + MongooseModule.forRoot(urlConfig.mongoUri), + UserModule, + ImageModule, + RecommendationModule, + ProductModule, + ProviderModule, + PassportModule, + JwtModule.register(jwtConfig), + ], + controllers: [AuthController], + providers: [ + AuthService, + JwtStrategy, + UserService, + RecommendationService, + ProductServices, + ], + exports: [AuthService], + }).compile(); + service = app.get(AuthService); + }); + describe("setAccessToken()", () => { + it("should set the access token correctly when a valid token object is provided", async () => { + const authService = service as any; + const token = { access_token: "valid_token" }; + await authService.setAccessToken(token); + expect(authService.access_token).toEqual(token); + }); + it("should handle null or undefined token input gracefully", async () => { + const authService = service as any; + await authService.setAccessToken(null); + expect(authService.access_token).toBeNull(); + await authService.setAccessToken(undefined); + expect(authService.access_token).toBeUndefined(); + }); + }); + describe("getAccessToken()", () => { + it("should return the access token when it is set", async () => { + const authService = service as any; + authService.access_token = "test_token"; + const result = await authService.getAccessToken(); + expect(result).toBe("test_token"); + }); + it("should return undefined if access token is not set", async () => { + const result = await service.getAccessToken(); + expect(result).toBeUndefined(); + }); + }); + describe("validateApp()", () => { + it("should return null when clientId does not match process.env.clientId", async () => { + const result = await service.validateApp( + "wrongClientId", + "correctClientSecret" + ); + expect(result).toBeNull(); + }); + it("should return null when clientId and clientSecret are empty", async () => { + const result = await service.validateApp("", ""); + expect(result).toBeNull(); + }); + }); + describe("validateUserById", () => { + it("should return true when userId is valid", async () => { + process.env.clientId = "testClientId"; + process.env.clientSecret = "testClientSecret"; + const id = `${new Date().getUTCDate()}-${process.env.clientId}-${ + process.env.clientSecret + }`; + const hash = id + .split("") + .reduce( + (hex, c) => hex + c.charCodeAt(0).toString(16).padStart(2, "0"), + "" + ); + + expect(await service.validateUserById(hash)).toBe(true); + }); + it("should return false when userId is empty", async () => { + const userId = ""; + expect(await service.validateUserById(userId)).toBe(false); + }); + }); +}); diff --git a/src/auth/auth.service.ts b/src/modules/auth/auth.service.ts similarity index 66% rename from src/auth/auth.service.ts rename to src/modules/auth/auth.service.ts index 9bbac98..f5b4625 100644 --- a/src/auth/auth.service.ts +++ b/src/modules/auth/auth.service.ts @@ -1,20 +1,20 @@ import { Injectable } from "@nestjs/common"; import { JwtService } from "@nestjs/jwt"; -// import { UserService } from '../users/user.service'; -// import * as bcrypt from "bcrypt"; -// import * as crypto from "crypto"; + @Injectable() export class AuthService { constructor( // private readonly userService: UserService, private readonly jwtService: JwtService ) {} - private accessToken: string; - setAccessToken(token: string) { - this.accessToken = token; + private access_token: { + access_token: string; + }; + private async setAccessToken(token: { access_token: string }) { + this.access_token = token; } - getAccessToken() { - return this.accessToken; + async getAccessToken() { + return this.access_token; } async validateApp(clientId: string, clientSecret: string) { if ( @@ -29,7 +29,8 @@ export class AuthService { const hash = id .split("") .reduce( - (hex, c) => (hex += c.charCodeAt(0).toString(16).padStart(2, "0")), + (hex: string, c) => + hex + c.charCodeAt(0).toString(16).padStart(2, "0"), "" ); return { @@ -48,24 +49,24 @@ export class AuthService { // } // return null; // } - async validateUserById(userId: string) { + async validateUserById(userId: string): Promise { const id = `${new Date().getUTCDate()}-${process.env.clientId}-${ process.env.clientSecret }`; const hash = id .split("") .reduce( - (hex, c) => (hex += c.charCodeAt(0).toString(16).padStart(2, "0")), + (hex: string, c) => hex + c.charCodeAt(0).toString(16).padStart(2, "0"), "" ); - if (hash == userId) return true; - else return false; + return hash == userId; } - async generateToken(user: any) { + async generateToken(user: { id: string }): Promise<{ access_token: string }> { const payload = { sub: user.id }; - return { + await this.setAccessToken({ access_token: this.jwtService.sign(payload), - }; + }); + return await this.getAccessToken(); } } diff --git a/src/modules/auth/config/jwt.config.ts b/src/modules/auth/config/jwt.config.ts new file mode 100644 index 0000000..a928ef0 --- /dev/null +++ b/src/modules/auth/config/jwt.config.ts @@ -0,0 +1,5 @@ +import { JwtModuleOptions } from "@nestjs/jwt"; +export const jwtConfig: JwtModuleOptions = { + secret: String(process.env.clientSecret), + signOptions: { expiresIn: "3min" }, +}; diff --git a/src/auth/jwt-auth.guard.ts b/src/modules/auth/guards/jwt-auth.guard.ts similarity index 100% rename from src/auth/jwt-auth.guard.ts rename to src/modules/auth/guards/jwt-auth.guard.ts diff --git a/src/auth/local-auth.guard.ts b/src/modules/auth/guards/local-auth.guard.ts similarity index 100% rename from src/auth/local-auth.guard.ts rename to src/modules/auth/guards/local-auth.guard.ts diff --git a/src/modules/auth/middlewares/jwt-injection.middleware.spec.ts b/src/modules/auth/middlewares/jwt-injection.middleware.spec.ts new file mode 100644 index 0000000..9c84af7 --- /dev/null +++ b/src/modules/auth/middlewares/jwt-injection.middleware.spec.ts @@ -0,0 +1,79 @@ +import { AuthController } from "@auth/auth.controller"; +import { AuthService } from "@auth/auth.service"; +import { jwtConfig } from "@auth/config/jwt.config"; +import { JwtStrategy } from "@auth/strategies/jwt.strategy"; +import { RecommendationModule } from "@componentRecommendation/recommendation.module"; +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { ImageModule } from "@image/image.module"; +import { JwtModule } from "@nestjs/jwt"; +import { MongooseModule } from "@nestjs/mongoose"; +import { PassportModule } from "@nestjs/passport"; +import { Test, TestingModule } from "@nestjs/testing"; +import { ProductModule } from "@product/product.module"; +import { ProductServices } from "@product/product.service"; +import { ProviderModule } from "@providers/providers.module"; +import { UserService } from "@users/users.service"; +import { UserModule } from "@users/users.module"; +import { JwtInjectionMiddleware } from "./jwt-injection.middleware"; +const urlConfig = require("../../../../globalConfig.json"); + +describe("AuthController", () => { + let service: AuthService; + + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + imports: [ + MongooseModule.forRoot(urlConfig.mongoUri), + UserModule, + ImageModule, + RecommendationModule, + ProductModule, + ProviderModule, + PassportModule, + JwtModule.register(jwtConfig), + // Outros módulos necessários para o AuthModule + ], + controllers: [AuthController], + providers: [ + AuthService, + JwtStrategy, + UserService, + RecommendationService, + ProductServices, + ], + exports: [AuthService], + }).compile(); + service = app.get(AuthService); + }); + it("should add authorization header when not present", () => { + const jwtInjectionMiddleware = new JwtInjectionMiddleware(service); + const req = { + headers: { + authorization: "Bearer mockToken", + }, + }; + const res = {}; + const next = jest.fn(); + + jest + .spyOn(service, "getAccessToken") + .mockResolvedValue({ access_token: "mockToken" }); + + jwtInjectionMiddleware.use(req, res, next); + + expect(req.headers.authorization).toBe("Bearer mockToken"); + expect(next).toHaveBeenCalled(); + }); + it("should handle scenario where AuthService returns null or undefined token", async () => { + const req = { headers: { authorization: undefined } }; + const res = {}; + const next = jest.fn(); + jest.spyOn(service, "getAccessToken").mockResolvedValue(null); + + const jwtInjectionMiddleware = new JwtInjectionMiddleware(service); + await jwtInjectionMiddleware.use(req, res, next); + + expect(req.headers.authorization).toBeUndefined(); + expect(next).toHaveBeenCalled(); + }); +}); diff --git a/src/modules/auth/middlewares/jwt-injection.middleware.ts b/src/modules/auth/middlewares/jwt-injection.middleware.ts new file mode 100644 index 0000000..7949b65 --- /dev/null +++ b/src/modules/auth/middlewares/jwt-injection.middleware.ts @@ -0,0 +1,16 @@ +import { Injectable, NestMiddleware } from "@nestjs/common"; +import { AuthService } from "../auth.service"; + +@Injectable() +export class JwtInjectionMiddleware implements NestMiddleware { + constructor(private readonly authService: AuthService) {} + async use(req: any, res: any, next: () => void) { + if (!req.headers.authorization) { + const token = await this.authService.getAccessToken(); + if (token) { + req.headers.authorization = `Bearer ${token?.access_token}`; + } + } + next(); + } +} diff --git a/src/modules/auth/strategies/jwt.strategy.spec.ts b/src/modules/auth/strategies/jwt.strategy.spec.ts new file mode 100644 index 0000000..b1fc4e2 --- /dev/null +++ b/src/modules/auth/strategies/jwt.strategy.spec.ts @@ -0,0 +1,67 @@ +import { JwtModule } from "@nestjs/jwt"; +import { MongooseModule } from "@nestjs/mongoose"; +import { PassportModule } from "@nestjs/passport"; +import { Test, TestingModule } from "@nestjs/testing"; +import { jwtConfig } from "../config/jwt.config"; +import { AuthService } from "../auth.service"; +import { JwtStrategy } from "../strategies/jwt.strategy"; +import { UserService } from "@users/users.service"; +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { ProductServices } from "@product/product.service"; +import { ProviderModule } from "@providers/providers.module"; +import { ProductModule } from "@product/product.module"; +import { RecommendationModule } from "@componentRecommendation/recommendation.module"; +import { ImageModule } from "@image/image.module"; +import { UserModule } from "@users/users.module"; +import { AuthController } from "@auth/auth.controller"; +import { UnauthorizedException } from "@nestjs/common"; +const urlConfig = require("../../../../globalConfig.json"); +describe("jwtStrategy", () => { + let jwtStrategy: JwtStrategy; + + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + imports: [ + MongooseModule.forRoot(urlConfig.mongoUri), + UserModule, + ImageModule, + RecommendationModule, + ProductModule, + ProviderModule, + PassportModule, + JwtModule.register(jwtConfig), + ], + controllers: [AuthController], + providers: [ + AuthService, + JwtStrategy, + UserService, + RecommendationService, + ProductServices, + ], + exports: [AuthService], + }).compile(); + jwtStrategy = app.get(JwtStrategy); + }); + it("should return user when JWT is valid", async () => { + const payload = { sub: 1 }; + jest + .spyOn(AuthService.prototype, "validateUserById") + .mockResolvedValue(true); + const user = await jwtStrategy.validate(payload); + + expect(user).toEqual(true); + expect(AuthService.prototype.validateUserById).toHaveBeenCalledWith(1); + }); + it("should throw UnauthorizedException when JWT is invalid", async () => { + jest + .spyOn(AuthService.prototype, "validateUserById") + .mockResolvedValue(false); + const payload = { sub: 1 }; + + await expect(jwtStrategy.validate(payload)).rejects.toThrow( + UnauthorizedException + ); + expect(AuthService.prototype.validateUserById).toHaveBeenCalledWith(1); + }); +}); diff --git a/src/auth/strategies/jwt.strategy.ts b/src/modules/auth/strategies/jwt.strategy.ts similarity index 100% rename from src/auth/strategies/jwt.strategy.ts rename to src/modules/auth/strategies/jwt.strategy.ts diff --git a/src/componentRecommendation /Schema/Rrecommendation.schema.ts b/src/modules/componentRecommendation/Schema/Rrecommendation.schema.ts similarity index 91% rename from src/componentRecommendation /Schema/Rrecommendation.schema.ts rename to src/modules/componentRecommendation/Schema/Rrecommendation.schema.ts index a324ae3..c4f5db2 100644 --- a/src/componentRecommendation /Schema/Rrecommendation.schema.ts +++ b/src/modules/componentRecommendation/Schema/Rrecommendation.schema.ts @@ -2,7 +2,7 @@ import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose"; import { ApiProperty } from "@nestjs/swagger"; import { IsNumber, IsOptional } from "class-validator"; import mongoose, { HydratedDocument, ObjectId } from "mongoose"; -import { Users } from "src/users/Schema/user.schema"; +import { Users } from "@users/Schema/user.schema"; export type RecommendationDocumnet = HydratedDocument; @Schema() @@ -35,5 +35,5 @@ export class Recommendation { @Prop({ required: false }) click_equipamentos: number; } -export const RrecommendationSchema = +export const RecommendationSchema = SchemaFactory.createForClass(Recommendation); diff --git a/src/componentRecommendation /recommendation.controller.ts b/src/modules/componentRecommendation/recommendation.controller.ts similarity index 98% rename from src/componentRecommendation /recommendation.controller.ts rename to src/modules/componentRecommendation/recommendation.controller.ts index 94be3e1..235eb3d 100644 --- a/src/componentRecommendation /recommendation.controller.ts +++ b/src/modules/componentRecommendation/recommendation.controller.ts @@ -12,7 +12,7 @@ import { import { RecommendationService } from "./recommendation.service"; import { ApiTags } from "@nestjs/swagger"; import { Recommendation } from "./Schema/Rrecommendation.schema"; -import { Product } from "src/product/Schema/product.schema"; +import { Product } from "@product/Schema/product.schema"; import { AuthGuard } from "@nestjs/passport"; import { Cron, CronExpression } from "@nestjs/schedule"; @UseGuards(AuthGuard("jwt")) diff --git a/src/modules/componentRecommendation/recommendation.module.ts b/src/modules/componentRecommendation/recommendation.module.ts new file mode 100644 index 0000000..93bc1ee --- /dev/null +++ b/src/modules/componentRecommendation/recommendation.module.ts @@ -0,0 +1,27 @@ +import { Module } from "@nestjs/common"; +import { RecommendationController } from "./recommendation.controller"; +import { RecommendationService } from "./recommendation.service"; +import { MongooseModule } from "@nestjs/mongoose"; +import { + Recommendation, + RecommendationSchema, +} from "./Schema/Rrecommendation.schema"; +import { ProductServices } from "@product/product.service"; +import { ImageModule } from "@image/image.module"; +import { ProviderModule } from "@providers/providers.module"; +import { ProductModule } from "@product/product.module"; + +@Module({ + imports: [ + MongooseModule.forFeature([ + { name: Recommendation.name, schema: RecommendationSchema }, + ]), + ProductModule, + ImageModule, + ProviderModule, + ], + controllers: [RecommendationController], + providers: [RecommendationService, ProductServices], + exports: [MongooseModule], +}) +export class RecommendationModule {} diff --git a/src/modules/componentRecommendation/recommendation.service.ts b/src/modules/componentRecommendation/recommendation.service.ts new file mode 100644 index 0000000..11414af --- /dev/null +++ b/src/modules/componentRecommendation/recommendation.service.ts @@ -0,0 +1,123 @@ +import { Injectable, NotFoundException } from "@nestjs/common"; +import { InjectModel } from "@nestjs/mongoose"; +import { + Recommendation, + RecommendationDocumnet, +} from "./Schema/Rrecommendation.schema"; +import { Model } from "mongoose"; +import { Product } from "@product/Schema/product.schema"; +import { ProductServices } from "@product/product.service"; + +@Injectable() +export class RecommendationService { + constructor( + @InjectModel(Recommendation.name) + private readonly RecommendationModel: Model, + private readonly ProductService: ProductServices + ) {} + + async listRecommedations(): Promise { + const listRecommedations = await this.RecommendationModel.find() + .populate("user") + .exec(); + if (!listRecommedations) { + throw new NotFoundException(); + } + return listRecommedations; + } + + async RegisterRecommedations( + createRecommedation: Recommendation + ): Promise { + const create = await this.RecommendationModel.create(createRecommedation); + if (!create) { + throw new NotFoundException(); + } + return create; + } + + async ListRecommedationById(id: string): Promise { + const ListRecommedationById = await this.RecommendationModel.findById({ + _id: id, + }).exec(); + if (!ListRecommedationById) { + throw new NotFoundException("recomendação inexistente"); + } + return ListRecommedationById; + } + + async updateRecommedation( + id: string, + updateRecommendation: Recommendation + ): Promise { + const findBydId = await this.RecommendationModel.findById(id); + if (!findBydId) { + throw new NotFoundException("id da recomendação não encontrado"); + } + const newRecommendation = { + user: findBydId.user, + click_calcados: updateRecommendation.click_calcados + ? updateRecommendation.click_calcados + : findBydId.click_calcados, + click_suplementos: updateRecommendation.click_suplementos + ? updateRecommendation.click_suplementos + : findBydId.click_suplementos, + click_roupas: updateRecommendation.click_roupas + ? updateRecommendation.click_roupas + : findBydId.click_roupas, + click_equipamentos: updateRecommendation.click_equipamentos + ? updateRecommendation.click_equipamentos + : findBydId.click_equipamentos, + }; + const updateRecommendationById = + await this.RecommendationModel.findByIdAndUpdate( + id, + newRecommendation + ).setOptions({ overwrite: false, new: true }); + if (!updateRecommendationById) throw new NotFoundException(); + return updateRecommendationById; + } + + async DeleteRecommendation(id: string): Promise { + const DeleteRecommendation = + await this.RecommendationModel.findByIdAndDelete(id); + if (!DeleteRecommendation) throw new NotFoundException(); + else return DeleteRecommendation; + } + + async Recommendation( + id: string + ): Promise<{ recommendations: Product[]; producstRemains: Product[] }> { + const findBydId = await this.ListRecommedationById(id); + + const categories = { + click_calcados: "calcado", + click_equipamentos: "equipamento", + click_roupas: "roupa", + click_suplementos: "suplemento", + }; + + const higherNumberCategory = Object.keys(categories).reduce( + (a, b) => (findBydId[a] > findBydId[b] ? a : b), + Object.keys(categories)[0] + ); + + const findAllProducts = await this.ProductService.listProducts(); + const recommendations: Product[] = []; + const producstRemains: Product[] = []; + + findAllProducts.forEach((product) => { + const category = Object.keys(product.categoriaProduto)[0]; + if (category === categories[higherNumberCategory]) { + recommendations.push(product); + } else { + producstRemains.push(product); + } + }); + + return { + recommendations, + producstRemains, + }; + } +} diff --git a/src/image/Schema/image.schema.ts b/src/modules/image/Schema/image.schema.ts similarity index 100% rename from src/image/Schema/image.schema.ts rename to src/modules/image/Schema/image.schema.ts diff --git a/src/image/config/multer.config.ts b/src/modules/image/config/multer.config.ts similarity index 50% rename from src/image/config/multer.config.ts rename to src/modules/image/config/multer.config.ts index 837e985..057f94c 100644 --- a/src/image/config/multer.config.ts +++ b/src/modules/image/config/multer.config.ts @@ -1,34 +1,38 @@ import { S3Client } from "@aws-sdk/client-s3"; import { NotAcceptableException } from "@nestjs/common"; - -const multer = require("multer"); -const path = require("path"); -const crypto = require("crypto"); -const multerS3 = require("multer-s3"); -require("dotenv").config(); +import { configService } from "@configs/configService.config"; +import * as multer from "multer"; +import * as path from "path"; +import * as crypto from "crypto"; +import * as multerS3 from "multer-s3"; +import * as dotenv from "dotenv"; +dotenv.config(); const s3 = new S3Client({ - region: process.env.REGIONAWS, + region: configService.get("REGIONAWS"), credentials: { - accessKeyId: process.env.KEY_ID, - secretAccessKey: process.env.ACCESS_KEY, + accessKeyId: configService.get("KEY_ID"), + secretAccessKey: configService.get("ACCESS_KEY"), }, }); const storageTypes = { local: multer.diskStorage({ destination: (req, file, cb) => { - cb(null, path.resolve(__dirname, "..", "..", "..", "tmp", "uploads")); + cb( + null, + path.resolve(__dirname, "..", "..", "..", "..", "tmp", "uploads") + ); }, filename: (req, file, cb) => { crypto.randomBytes(16, (err, hash) => { - if (err) cb(err); - file.key = `${hash.toString("hex")}-${file.originalname}`; - cb(null, file.key); + if (err) cb(err, file.filename); + file.path = `${hash.toString("hex")}-${file.originalname}`; + cb(null, file.path); }); }, }), s3: multerS3({ s3: s3, - bucket: process.env.BUCKET, + bucket: configService.get("BUCKET"), contentType: multerS3.AUTO_CONTENT_TYPE, acl: "public-read", key: (req, file, cb) => { @@ -40,12 +44,15 @@ const storageTypes = { }, }), }; - +const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10 MB +if (MAX_FILE_SIZE > 10 * 1024 * 1024) { + throw new Error("File size limit exceeds the safe threshold."); +} export default { - dest: path.resolve(__dirname, "..", "..", "..", "tmp", "uploads"), - storage: storageTypes[process.env.STORAGE_TYPE], + dest: path.resolve(__dirname, "..", "..", "..", "..", "tmp", "uploads"), + storage: storageTypes[configService.get("STORAGE_TYPE")], limits: { - fileSize: 10 * 1024 * 1024, // MB + fileSize: MAX_FILE_SIZE, }, fileFilter: (req, file, cb) => { const allowedMimes = [ diff --git a/src/image/image.controller.ts b/src/modules/image/image.controller.ts similarity index 100% rename from src/image/image.controller.ts rename to src/modules/image/image.controller.ts diff --git a/src/image/image.module.ts b/src/modules/image/image.module.ts similarity index 94% rename from src/image/image.module.ts rename to src/modules/image/image.module.ts index 319f881..905cadd 100644 --- a/src/image/image.module.ts +++ b/src/modules/image/image.module.ts @@ -9,5 +9,6 @@ import { ImagemSchema, imagem } from "./Schema/image.schema"; ], controllers: [ImageController], providers: [ImageService], + exports: [MongooseModule], }) export class ImageModule {} diff --git a/src/image/image.service.ts b/src/modules/image/image.service.ts similarity index 100% rename from src/image/image.service.ts rename to src/modules/image/image.service.ts diff --git a/src/image/image.spec.ts b/src/modules/image/image.spec.ts similarity index 97% rename from src/image/image.spec.ts rename to src/modules/image/image.spec.ts index bd960c9..51665ad 100644 --- a/src/image/image.spec.ts +++ b/src/modules/image/image.spec.ts @@ -4,7 +4,7 @@ import { MongooseModule } from "@nestjs/mongoose"; import { ImagemSchema, imagem } from "./Schema/image.schema"; import { ImageService } from "./image.service"; const path = require("path"); -const urlConfig = require("../globalConfig.json"); +const urlConfig = require("../../../globalConfig.json"); describe("ImageController", () => { let imagemController: ImageController; diff --git a/src/order/Schema/order.schema.ts b/src/modules/order/Schema/order.schema.ts similarity index 87% rename from src/order/Schema/order.schema.ts rename to src/modules/order/Schema/order.schema.ts index 810882a..01483ef 100644 --- a/src/order/Schema/order.schema.ts +++ b/src/modules/order/Schema/order.schema.ts @@ -2,8 +2,8 @@ import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose"; import { ApiProperty } from "@nestjs/swagger"; import { IsNumber, Min } from "class-validator"; import mongoose, { HydratedDocument, ObjectId } from "mongoose"; -import { Product } from "src/product/Schema/product.schema"; -import { Users } from "src/users/Schema/user.schema"; +import { Product } from "@product/Schema/product.schema"; +import { Users } from "@users/Schema/user.schema"; export type OrderDocument = HydratedDocument; @Schema() diff --git a/src/order/dto/updateOrder.dto.ts b/src/modules/order/dto/updateOrder.dto.ts similarity index 84% rename from src/order/dto/updateOrder.dto.ts rename to src/modules/order/dto/updateOrder.dto.ts index 81cb7de..bb35d53 100644 --- a/src/order/dto/updateOrder.dto.ts +++ b/src/modules/order/dto/updateOrder.dto.ts @@ -2,8 +2,8 @@ import { Prop } from "@nestjs/mongoose"; import { Exclude } from "class-transformer"; import { IsNumber, IsOptional, Min } from "class-validator"; import mongoose, { ObjectId } from "mongoose"; -import { Product } from "src/product/Schema/product.schema"; -import { Users } from "src/users/Schema/user.schema"; +import { Product } from "@product/Schema/product.schema"; +import { Users } from "@users/Schema/user.schema"; export class UpdateOrderDTO { @IsOptional() diff --git a/src/order/order.controller.ts b/src/modules/order/order.controller.ts similarity index 100% rename from src/order/order.controller.ts rename to src/modules/order/order.controller.ts diff --git a/src/modules/order/order.module.ts b/src/modules/order/order.module.ts new file mode 100644 index 0000000..d4e1515 --- /dev/null +++ b/src/modules/order/order.module.ts @@ -0,0 +1,23 @@ +import { Module } from "@nestjs/common"; +import { MongooseModule } from "@nestjs/mongoose"; +import { ProductServices } from "../product/product.service"; +import { OrderController } from "./order.controller"; +import { OrderService } from "./order.service"; +import { Order, OrderSchema } from "./Schema/order.schema"; +import { UserModule } from "@users/users.module"; +import { ProductModule } from "@product/product.module"; +import { ImageModule } from "@image/image.module"; +import { ProviderModule } from "@providers/providers.module"; + +@Module({ + imports: [ + MongooseModule.forFeature([{ name: Order.name, schema: OrderSchema }]), + UserModule, + ProductModule, + ImageModule, + ProviderModule, + ], + controllers: [OrderController], + providers: [OrderService, ProductServices], +}) +export class OderModule {} diff --git a/src/order/order.service.ts b/src/modules/order/order.service.ts similarity index 95% rename from src/order/order.service.ts rename to src/modules/order/order.service.ts index a6c4e27..63644a8 100644 --- a/src/order/order.service.ts +++ b/src/modules/order/order.service.ts @@ -1,12 +1,9 @@ import { Injectable, NotFoundException } from "@nestjs/common"; import { InjectModel } from "@nestjs/mongoose"; import { Model } from "mongoose"; -import { ImageDocument, imagem } from "src/image/Schema/image.schema"; -import { ProductServices } from "src/product/product.service"; -import { - Provider, - ProviderDocument, -} from "src/providers/Schema/providers.schema"; +import { ImageDocument, imagem } from "@image/Schema/image.schema"; +import { ProductServices } from "@product/product.service"; +import { Provider, ProviderDocument } from "@providers/Schema/providers.schema"; import { Product, ProductDocument } from "../product/Schema/product.schema"; import { Users, UsersDocument } from "../users/Schema/user.schema"; import { Order, OrderDocument } from "./Schema/order.schema"; diff --git a/src/product/Schema/category.schema.ts b/src/modules/product/Schema/category.schema.ts similarity index 97% rename from src/product/Schema/category.schema.ts rename to src/modules/product/Schema/category.schema.ts index 8fc46b8..4c6998d 100644 --- a/src/product/Schema/category.schema.ts +++ b/src/modules/product/Schema/category.schema.ts @@ -14,7 +14,7 @@ export class category { @ApiProperty() @Prop({ type: mongoose.Schema.Types.ObjectId, ref: Provider.name }) @IsNotEmpty({ message: "campo fornceder(id) vazio" }) - fornecedor: ObjectId | null | string; + fornecedor: ObjectId | string; @ApiProperty() @Prop({ required: true }) diff --git a/src/product/Schema/product.schema.ts b/src/modules/product/Schema/product.schema.ts similarity index 97% rename from src/product/Schema/product.schema.ts rename to src/modules/product/Schema/product.schema.ts index 8b08338..e872954 100644 --- a/src/product/Schema/product.schema.ts +++ b/src/modules/product/Schema/product.schema.ts @@ -4,7 +4,7 @@ import { IsNotEmpty } from "class-validator"; import { HydratedDocument } from "mongoose"; import { category } from "./category.schema"; export type ProductDocument = HydratedDocument; -class categoryProduct { +export class categoryProduct { @ApiProperty() @Prop({ required: true }) @IsNotEmpty({ message: "campo(objeto) roupa estar vazio vazio" }) diff --git a/src/product/dto/category.dto.ts b/src/modules/product/dto/category.dto.ts similarity index 100% rename from src/product/dto/category.dto.ts rename to src/modules/product/dto/category.dto.ts diff --git a/src/product/dto/updateProduct.dto.ts b/src/modules/product/dto/updateProduct.dto.ts similarity index 100% rename from src/product/dto/updateProduct.dto.ts rename to src/modules/product/dto/updateProduct.dto.ts diff --git a/src/product/product.controller.ts b/src/modules/product/product.controller.ts similarity index 100% rename from src/product/product.controller.ts rename to src/modules/product/product.controller.ts diff --git a/src/product/product.module.ts b/src/modules/product/product.module.ts similarity index 53% rename from src/product/product.module.ts rename to src/modules/product/product.module.ts index 8bfe4b7..bebe9b7 100644 --- a/src/product/product.module.ts +++ b/src/modules/product/product.module.ts @@ -3,17 +3,16 @@ import ProductController from "./product.controller"; import { ProductServices } from "./product.service"; import { MongooseModule } from "@nestjs/mongoose"; import { Product, ProductSchema } from "./Schema/product.schema"; -import { imagem, ImagemSchema } from "../image/Schema/image.schema"; -import { Provider, ProviderSchema } from "../providers/Schema/providers.schema"; +import { ImageModule } from "@image/image.module"; +import { ProviderModule } from "@providers/providers.module"; @Module({ imports: [ - MongooseModule.forFeature([ - { name: Product.name, schema: ProductSchema }, - { name: imagem.name, schema: ImagemSchema }, - { name: Provider.name, schema: ProviderSchema }, - ]), + MongooseModule.forFeature([{ name: Product.name, schema: ProductSchema }]), + ImageModule, + ProviderModule, ], controllers: [ProductController], providers: [ProductServices], + exports: [MongooseModule], }) export class ProductModule {} diff --git a/src/modules/product/product.service.ts b/src/modules/product/product.service.ts new file mode 100644 index 0000000..84cf7b9 --- /dev/null +++ b/src/modules/product/product.service.ts @@ -0,0 +1,146 @@ +import { Injectable, Logger, NotFoundException } from "@nestjs/common"; +import { InjectModel } from "@nestjs/mongoose"; +import { Model } from "mongoose"; +import { ImageDocument, imagem } from "../image/Schema/image.schema"; +import { + Provider, + ProviderDocument, +} from "../providers/Schema/providers.schema"; +import { updateProductDTO } from "./dto/updateProduct.dto"; +import { Product, ProductDocument } from "./Schema/product.schema"; + +@Injectable() +export class ProductServices { + constructor( + @InjectModel(Product.name) + private readonly productModel: Model, + @InjectModel(imagem.name) + private readonly imageModel: Model, + @InjectModel(Provider.name) + private readonly ProviderModel: Model + ) {} + async listProducts(): Promise { + const listProducts = await this.productModel.find().lean().exec(); + return listProducts; + } + + async RegisterProduct(createProduct: Product): Promise { + const RegisterProduct = await this.productModel.create(createProduct); + if (!RegisterProduct) { + throw new NotFoundException(); + } + return RegisterProduct; + } + async searchProductId(id: string): Promise { + const searchId = await this.productModel.findById({ _id: id }).exec(); + if (!searchId) throw new NotFoundException(); + const imgId = []; + const img = []; + let ProviderId = String; + const obj = Object.keys(searchId.categoriaProduto)[0].toString(); + imgId.push(searchId.categoriaProduto[obj].imagemProduto); + ProviderId = searchId.categoriaProduto[obj].fornecedor; + for (const i of imgId[0]) { + const searchImgId = await this.imageModel.findById({ _id: i }).exec(); + img.push(searchImgId); + } + const searchProductId = await this.ProviderModel.findById({ + _id: ProviderId, + }).exec(); + + searchId.categoriaProduto[obj].imagemProduto = []; + searchId.categoriaProduto[obj].imagemProduto = img; + searchId.categoriaProduto[obj].fornecedor = searchProductId; + + return searchId; + } + + async updateProduct( + id: string, + updateProduct: updateProductDTO + ): Promise { + const findByIdProduct = await this.productModel.findById({ _id: id }); + if (!findByIdProduct) { + throw new NotFoundException(); + } + const currentCategoryKey = Object.keys(findByIdProduct.categoriaProduto)[0]; + const updatedCategoryKey = Object.keys(updateProduct.categoriaProduto)[0]; + const currentCategory = + findByIdProduct.categoriaProduto[currentCategoryKey]; + const updatedCategory = updateProduct.categoriaProduto[updatedCategoryKey]; + const newProductData = { + categoriaProduto: { + [updatedCategoryKey]: { + nome: updatedCategory.nome ?? currentCategory.nome, + fornecedor: updatedCategory.fornecedor ?? currentCategory.fornecedor, + cor: updatedCategory.cor ?? currentCategory.cor, + sexo: updatedCategory.sexo ?? currentCategory.sexo, + tamanho: updatedCategory.tamanho ?? currentCategory.tamanho, + preco: updatedCategory.preco ?? currentCategory.preco, + quantidade: updatedCategory.quantidade ?? currentCategory.quantidade, + imagemProduto: + updatedCategory.imagemProduto ?? currentCategory.imagemProduto, + }, + }, + }; + const updatedProduct = await this.productModel + .findByIdAndUpdate(id, newProductData, { new: true }) + .exec(); + + if (!updatedProduct) { + throw new NotFoundException(); + } + return updatedProduct; + } + + async deleteProduct(id: string) { + const product = await this.productModel.findById({ _id: id }).exec(); + if (!product) { + throw new NotFoundException(); + } + const categoryKey = Object.keys(product.categoriaProduto)[0]; + const images = product.categoriaProduto[categoryKey].imagemProduto; + await Promise.all( + images.map(async (imageId) => { + if (imageId) { + const image = await this.imageModel.findById({ _id: imageId }).exec(); + if (image) { + await image.remove(); + } + } + }) + ); + const deletedProduct = await this.productModel + .findByIdAndDelete({ _id: id }) + .exec(); + if (!deletedProduct) { + throw new NotFoundException(); + } + return deletedProduct; + } + + async searchProducts(search: string): Promise { + const normalizeString = (str: string): string => + str + .normalize("NFD") + .replace(/[^a-zA-Z\s]/g, "") + .toLowerCase(); + const searchFormat = normalizeString(search); + const listProducts = await this.listProducts(); + const searchCategories = ["calcado", "equipamento", "suplemento", "roupa"]; + const ListProductResult = listProducts.filter((product) => { + const categoryKey = Object.keys(product.categoriaProduto)[0]; + const categoryName = product.categoriaProduto[categoryKey].nome; + if ( + searchCategories.includes(categoryKey) && + searchFormat.includes(categoryKey) + ) { + return true; + } + const normalizedProductName = normalizeString(categoryName); + return normalizedProductName.includes(searchFormat); + }); + Logger.debug(ListProductResult); + return ListProductResult; + } +} diff --git a/src/product/product.spec.ts b/src/modules/product/product.spec.ts similarity index 92% rename from src/product/product.spec.ts rename to src/modules/product/product.spec.ts index 888899d..53b6840 100644 --- a/src/product/product.spec.ts +++ b/src/modules/product/product.spec.ts @@ -3,16 +3,16 @@ import ProductController from "./product.controller"; import { MongooseModule } from "@nestjs/mongoose"; import { ProductServices } from "./product.service"; import { Product, ProductSchema } from "./Schema/product.schema"; -import { ImagemSchema, imagem } from "src/image/Schema/image.schema"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; +import { ImagemSchema, imagem } from "@image/Schema/image.schema"; +import { Provider, ProviderSchema } from "@providers/Schema/providers.schema"; import { updateProductDTO } from "./dto/updateProduct.dto"; -import { ImageController } from "src/image/image.controller"; -import { ImageService } from "src/image/image.service"; +import { ImageController } from "@image/image.controller"; +import { ImageService } from "@image/image.service"; +import { ImageModule } from "@image/image.module"; +import { ProviderModule } from "@providers/providers.module"; const path = require("path"); -const urlConfig = require("../globalConfig.json"); +const urlConfig = require("../../../globalConfig.json"); + describe("ProductController", () => { let productController: ProductController; let imagemController: ImageController; @@ -23,12 +23,8 @@ describe("ProductController", () => { MongooseModule.forFeature([ { name: Product.name, schema: ProductSchema }, ]), - MongooseModule.forFeature([ - { name: imagem.name, schema: ImagemSchema }, - ]), - MongooseModule.forFeature([ - { name: Provider.name, schema: ProviderSchema }, - ]), + ImageModule, + ProviderModule, ], controllers: [ProductController, ImageController], providers: [ProductServices, ImageService], diff --git a/src/providers/Schema/providers.schema.ts b/src/modules/providers/Schema/providers.schema.ts similarity index 100% rename from src/providers/Schema/providers.schema.ts rename to src/modules/providers/Schema/providers.schema.ts diff --git a/src/providers/dto/updateProvider.dto.ts b/src/modules/providers/dto/updateProvider.dto.ts similarity index 100% rename from src/providers/dto/updateProvider.dto.ts rename to src/modules/providers/dto/updateProvider.dto.ts diff --git a/src/providers/providers.controller.ts b/src/modules/providers/providers.controller.ts similarity index 100% rename from src/providers/providers.controller.ts rename to src/modules/providers/providers.controller.ts diff --git a/src/providers/providers.module.ts b/src/modules/providers/providers.module.ts similarity index 91% rename from src/providers/providers.module.ts rename to src/modules/providers/providers.module.ts index b07d3fd..9119174 100644 --- a/src/providers/providers.module.ts +++ b/src/modules/providers/providers.module.ts @@ -12,5 +12,6 @@ import { Provider, ProviderSchema } from "./Schema/providers.schema"; ], controllers: [ProviderController], providers: [ProviderService], + exports: [ProviderService, MongooseModule], }) export class ProviderModule {} diff --git a/src/providers/providers.service.ts b/src/modules/providers/providers.service.ts similarity index 100% rename from src/providers/providers.service.ts rename to src/modules/providers/providers.service.ts diff --git a/src/providers/providers.spec.ts b/src/modules/providers/providers.spec.ts similarity index 98% rename from src/providers/providers.spec.ts rename to src/modules/providers/providers.spec.ts index 90d6cf8..106cdad 100644 --- a/src/providers/providers.spec.ts +++ b/src/modules/providers/providers.spec.ts @@ -4,7 +4,8 @@ import { MongooseModule } from "@nestjs/mongoose"; import { ProviderService } from "./providers.service"; import { Provider, ProviderSchema } from "./Schema/providers.schema"; import { updateProviderDTO } from "./dto/updateProvider.dto"; -const urlConfig = require("../globalConfig.json"); +const urlConfig = require("../../../globalConfig.json"); + describe("ProvidersController", () => { let providersController: ProviderController; beforeEach(async () => { diff --git a/src/providers/validator/cnpj.validator.ts b/src/modules/providers/validator/cnpj.validator.ts similarity index 100% rename from src/providers/validator/cnpj.validator.ts rename to src/modules/providers/validator/cnpj.validator.ts diff --git a/src/users/Schema/login.shema.ts b/src/modules/users/Schema/login.shema.ts similarity index 100% rename from src/users/Schema/login.shema.ts rename to src/modules/users/Schema/login.shema.ts diff --git a/src/users/Schema/user.schema.ts b/src/modules/users/Schema/user.schema.ts similarity index 96% rename from src/users/Schema/user.schema.ts rename to src/modules/users/Schema/user.schema.ts index 8eb8770..5f86f35 100644 --- a/src/users/Schema/user.schema.ts +++ b/src/modules/users/Schema/user.schema.ts @@ -9,6 +9,7 @@ import { IsBrithDate } from "../validator/birthDate.validator"; export type UsersDocument = HydratedDocument; @Schema() export class Users { + _id?: string; @ApiProperty() @Prop({ required: true }) @IsNotEmpty({ message: "campo cpf vazio" }) @@ -51,7 +52,7 @@ export class Users { @ApiProperty() @Prop({ type: mongoose.Schema.Types.ObjectId, ref: imagem.name }) - imagemPerfil: ObjectId | null; + imagemPerfil: ObjectId | null | string; @Prop({ required: true }) dataCadastro: string; diff --git a/src/users/dto/SingIn.dto.ts b/src/modules/users/dto/SingIn.dto.ts similarity index 100% rename from src/users/dto/SingIn.dto.ts rename to src/modules/users/dto/SingIn.dto.ts diff --git a/src/users/dto/updateLogin.dtp.ts b/src/modules/users/dto/updateLogin.dtp.ts similarity index 85% rename from src/users/dto/updateLogin.dtp.ts rename to src/modules/users/dto/updateLogin.dtp.ts index dd7d0db..1b9f056 100644 --- a/src/users/dto/updateLogin.dtp.ts +++ b/src/modules/users/dto/updateLogin.dtp.ts @@ -13,7 +13,7 @@ export class UpdatePasswordUser { message: "email precisa ser um endereço de email válido.", } ) - email: string | undefined; + email?: string | undefined; @ApiPropertyOptional() @IsEmail({ ignore_max_length: true }, { message: "email invalido" }) @@ -23,22 +23,22 @@ export class UpdatePasswordUser { message: "email precisa ser um endereço de email válido.", } ) - newEmail: string | undefined; + newEmail?: string | undefined; @ApiProperty() @Prop({ required: true }) @IsNotEmpty({ message: "campo sennha vazio" }) - OldPassword: string | undefined; + OldPassword?: string | undefined; @ApiPropertyOptional() @IsOptional() @IsString() @Exclude() - newPassoWord: string | undefined; + newPassoWord?: string | undefined; @ApiPropertyOptional() @IsOptional() @IsString() @Exclude() - isAdmin: boolean | undefined; + isAdmin?: boolean | undefined; } diff --git a/src/users/dto/updateUser.dto.ts b/src/modules/users/dto/updateUser.dto.ts similarity index 82% rename from src/users/dto/updateUser.dto.ts rename to src/modules/users/dto/updateUser.dto.ts index 8e0ab62..f21bec4 100644 --- a/src/users/dto/updateUser.dto.ts +++ b/src/modules/users/dto/updateUser.dto.ts @@ -9,53 +9,53 @@ import { IsBrithDate } from "../validator/birthDate.validator"; export class UpdateUserDTO { @IsOptional() @Exclude() - _id: string; + _id?: string; @ApiPropertyOptional() @IsString() @IsOptional() @Exclude() @IsCPF({ message: "cpf invalido" }) - cpf: string | null; + cpf?: string | null; @ApiPropertyOptional() @IsOptional() @IsString() @Exclude() - nome: string | null; + nome?: string | null; @ApiPropertyOptional() @IsOptional() @Exclude() - login: Login | null; + login?: Partial | null; @ApiPropertyOptional() @IsOptional() @IsString() @Exclude() @IsBrithDate({ message: "data de nascimento invalida" }) - dataNascimento: string | null; + dataNascimento?: string | null; @ApiPropertyOptional() @IsOptional() @IsString() @Exclude() - sexo: string | null; + sexo?: string | null; @ApiPropertyOptional() @IsOptional() @IsString() @Exclude() - cep: string | null; + cep?: string | null; @ApiPropertyOptional() @IsOptional() @IsString() @Exclude() - endereco: string | null; + endereco?: string | null; @ApiPropertyOptional() @IsOptional() @Exclude() @Prop({ type: mongoose.Schema.Types.ObjectId, ref: "model" }) - imagemPerfil: ObjectId | null; + imagemPerfil?: ObjectId | null; } diff --git a/src/modules/users/users.controller.spec.ts b/src/modules/users/users.controller.spec.ts new file mode 100644 index 0000000..b939e6b --- /dev/null +++ b/src/modules/users/users.controller.spec.ts @@ -0,0 +1,221 @@ +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { ProductServices } from "@product/product.service"; +import { Users, UserSchema } from "./Schema/user.schema"; +import { getModelToken, MongooseModule } from "@nestjs/mongoose"; +import { RecommendationModule } from "@componentRecommendation/recommendation.module"; +import { ProductModule } from "@product/product.module"; +import { ProviderModule } from "@providers/providers.module"; +import { ImageModule } from "@image/image.module"; +import { Test, TestingModule } from "@nestjs/testing"; +import { NotFoundException } from "@nestjs/common"; +import { Mocks } from "@mocks/mocks"; +import * as bcrypt from "bcrypt"; +import { Recommendation } from "@componentRecommendation/Schema/Rrecommendation.schema"; +import { RealizarLogin } from "./dto/SingIn.dto"; +import { UpdatePasswordUser } from "./dto/updateLogin.dtp"; +import { Types } from "mongoose"; +import { UserController } from "./users.controller"; +import { UserService } from "./users.service"; +const urlConfig = require("../../../globalConfig.json"); + +describe("userController", () => { + let usersController: UserController; + let service: UserService; + const mocks = new Mocks(); + const mockMongo = { + find: jest.fn(), + skip: jest.fn(), + limit: jest.fn(), + sort: jest.fn(), + findOne: jest.fn(), + create: jest.fn(), + updateOne: jest.fn(), + deleteOne: jest.fn(), + exec: jest.fn(), + select: jest.fn(), + populate: jest.fn(), + findById: jest.fn(), + findByIdAndUpdate: jest.fn(), + setOptions: jest.fn(), + findByIdAndDelete: jest.fn(), + }; + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + imports: [ + MongooseModule.forRoot(urlConfig.mongoUri), + MongooseModule.forFeature([{ name: Users.name, schema: UserSchema }]), + RecommendationModule, + ProductModule, + ProviderModule, + ImageModule, + ], + controllers: [UserController], + providers: [ + UserService, + RecommendationService, + ProductServices, + { + provide: getModelToken(Users.name), + useValue: mockMongo, + }, + { + provide: getModelToken(Recommendation.name), + useValue: mockMongo, + }, + ], + exports: [MongooseModule], + }).compile(); + + usersController = app.get(UserController); + service = app.get(UserService); + }); + describe("ListUsers()", () => { + const mockUsers: Users[] = mocks.users(); + it("should list all users when authenticated", async () => { + jest.spyOn(service, "ListUsers").mockResolvedValue(mockUsers); + const result = await usersController.ListUsers(); + expect(result).toEqual(mockUsers); + expect(service.ListUsers).toHaveBeenCalled(); + }); + it("should handle service unavailability", async () => { + jest + .spyOn(service, "ListUsers") + .mockRejectedValue(new Error("Service Unavailable")); + await expect(usersController.ListUsers()).rejects.toThrow( + "Service Unavailable" + ); + expect(service.ListUsers).toHaveBeenCalled(); + }); + }); + describe("CreateUser()", () => { + it("should return success message and user data when valid data is provided", async () => { + const mockUsers: Users = mocks.users()[0]; + jest.spyOn(service, "RegisterUsers").mockResolvedValue(mockUsers); + const { _id, ...createUserDto } = mockUsers; + const result = await usersController.CreateUser(createUserDto); + expect(result).toEqual({ + messagem: "usuario cadastrado com sucesso", + registeredSuccess: true, + user: mockUsers, + }); + expect(service.RegisterUsers).toHaveBeenCalledWith(createUserDto); + }); + it("should return error message when email is already registered", async () => { + jest.spyOn(service, "RegisterUsers").mockResolvedValue(null); + const mockUsers: Users = mocks.users()[0]; + const { _id, ...createUserDto } = mockUsers; + const result = await usersController.CreateUser(createUserDto); + expect(result).toEqual({ + messagem: "email de usuario já cadastrado", + registeredSuccess: false, + }); + expect(service.RegisterUsers).toHaveBeenCalledWith(createUserDto); + }); + }); + describe("SearchUserById()", () => { + it("should return user when id is valid", async () => { + const mockUsers: Users = mocks.users()[0]; + jest.spyOn(service, "searchId").mockResolvedValue(mockUsers); + const result: Users = await usersController.SearchUserById(mockUsers._id); + expect(result).toEqual(mockUsers); + expect(service.searchId).toHaveBeenCalledWith(mockUsers._id); + }); + it("should return null when id does not exist", async () => { + jest.spyOn(service, "searchId").mockResolvedValue(null); + const result = await usersController.SearchUserById("999"); + expect(result).toBeNull(); + expect(service.searchId).toHaveBeenCalledWith("999"); + }); + }); + describe("UpdateUserById()", () => { + it("should update user successfully when valid id and updateUserDTO are provided", async () => { + const mockUsers: Users = mocks.users()[0]; + + jest.spyOn(service, "updateUser").mockResolvedValue(mockUsers); + const result = await usersController.UpdateUserById(mockUsers._id, { + nome: "Updated User", + }); + expect(service.updateUser).toHaveBeenCalledWith(mockUsers._id, { + nome: "Updated User", + }); + mockUsers.nome = "Updated User"; + expect(result).toEqual({ + user: mockUsers, + messagem: "usuario atualizado com sucesso", + }); + }); + it("should return undefined when user id does not exist", async () => { + jest.spyOn(service, "updateUser").mockResolvedValue(null); + const result = await usersController.UpdateUserById("nonexistent-id", { + nome: "Updated Name", + }); + expect(result).toBeUndefined(); + expect(service.updateUser).toHaveBeenCalledWith("nonexistent-id", { + nome: "Updated Name", + }); + }); + }); + describe("DeleteUserById()", () => { + it("should successfully delete a user with valid ID and credentials", async () => { + const mockUsers: Users = mocks.users()[0]; + jest + .spyOn(service, "deleteUser") + .mockResolvedValue({ message: "Usuário deletado com sucesso" }); + + const { isAdmin, ...singInBody } = mockUsers.login; + const result = await usersController.DeleteUserById( + mockUsers._id, + singInBody + ); + expect(service.deleteUser).toHaveBeenCalledWith( + mockUsers._id, + singInBody + ); + expect(result).toEqual({ message: "Usuário deletado com sucesso" }); + }); + }); + describe("UpdatePassowdLogin()", () => { + it("should update user login successfully when valid id and body are provided", async () => { + const mockUsers: Users = mocks.users()[0]; + jest.spyOn(service, "updatePassworUser").mockResolvedValue(mockUsers); + + const id = mockUsers._id; + const updatePasswordBody = { + email: mockUsers.login.email, + OldPassword: "123", + newPassoWord: "newPass123", + }; + + const result = await usersController.UpdatePassowdLogin( + id, + updatePasswordBody + ); + + expect(service.updatePassworUser).toHaveBeenCalledWith( + id, + updatePasswordBody + ); + expect(result).toHaveProperty("messagem", "login atualizado com suceeso"); + expect(result).toHaveProperty("user"); + }); + it("should return an error when provided id does not exist in the database", async () => { + jest + .spyOn(service, "updatePassworUser") + .mockRejectedValue(new Error("User not found")); + const id = "nonexistent-id"; + const updatePasswordBody = { + email: "test@example.com", + OldPassword: "oldPass123", + newPassoWord: "newPass123", + }; + + await expect( + usersController.UpdatePassowdLogin(id, updatePasswordBody) + ).rejects.toThrow("User not found"); + expect(service.updatePassworUser).toHaveBeenCalledWith( + id, + updatePasswordBody + ); + }); + }); +}); diff --git a/src/users/users.controller.ts b/src/modules/users/users.controller.ts similarity index 88% rename from src/users/users.controller.ts rename to src/modules/users/users.controller.ts index c015335..81b56bc 100644 --- a/src/users/users.controller.ts +++ b/src/modules/users/users.controller.ts @@ -9,7 +9,7 @@ import { RealizarLogin } from "./dto/SingIn.dto"; import { UpdatePasswordUser } from "./dto/updateLogin.dtp"; import { UpdateUserDTO } from "./dto/updateUser.dto"; import { Users } from "./Schema/user.schema"; -import { UserService } from "./user.service"; +import { UserService } from "./users.service"; import { AuthGuard } from "@nestjs/passport"; @Controller() @ApiTags("Users") @@ -32,13 +32,12 @@ export class UserController { messagem: "email de usuario já cadastrado", registeredSuccess: false, }; - } else { - return { - user: createdUser, - messagem: "usuario cadastrado com sucesso", - registeredSuccess: true, - }; } + return { + user: createdUser, + messagem: "usuario cadastrado com sucesso", + registeredSuccess: true, + }; } @UseGuards(AuthGuard("jwt")) @Get("listar-cliente/:id") @@ -54,10 +53,12 @@ export class UserController { @Body() updateUser: UpdateUserDTO ) { const updateUserId = await this.userService.updateUser(id, updateUser); - return { - user: updateUserId, - messagem: "usuario atualizado com sucesso", - }; + if (updateUserId) { + return { + user: updateUserId, + messagem: "usuario atualizado com sucesso", + }; + } } @UseGuards(AuthGuard("jwt")) @ApiOperation({ summary: "delete user with id" }) @@ -67,10 +68,7 @@ export class UserController { @Body() singInBody: RealizarLogin ) { const deleteUser = await this.userService.deleteUser(id, singInBody); - if (deleteUser) - return { - messagem: "cliente deletado com sucesso ", - }; + return deleteUser; } @UseGuards(AuthGuard("jwt")) @Post("realizar-login") diff --git a/src/modules/users/users.module.ts b/src/modules/users/users.module.ts new file mode 100644 index 0000000..e84476e --- /dev/null +++ b/src/modules/users/users.module.ts @@ -0,0 +1,25 @@ +import { Module } from "@nestjs/common"; +import { MongooseModule } from "@nestjs/mongoose"; +import { Users, UserSchema } from "./Schema/user.schema"; +import { UserService } from "./users.service"; +import { UserController } from "./users.controller"; +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { ProductServices } from "@product/product.service"; +import { ImageModule } from "@image/image.module"; +import { ProviderModule } from "@providers/providers.module"; +import { ProductModule } from "@product/product.module"; +import { RecommendationModule } from "@componentRecommendation/recommendation.module"; + +@Module({ + imports: [ + MongooseModule.forFeature([{ name: Users.name, schema: UserSchema }]), + RecommendationModule, + ProductModule, + ProviderModule, + ImageModule, + ], + controllers: [UserController], + providers: [UserService, RecommendationService, ProductServices], + exports: [MongooseModule], +}) +export class UserModule {} diff --git a/src/modules/users/users.service.spec.ts b/src/modules/users/users.service.spec.ts new file mode 100644 index 0000000..564b68b --- /dev/null +++ b/src/modules/users/users.service.spec.ts @@ -0,0 +1,442 @@ +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { UserService } from "./users.service"; +import { ProductServices } from "@product/product.service"; +import { Users, UserSchema } from "./Schema/user.schema"; +import { getModelToken, MongooseModule } from "@nestjs/mongoose"; +import { RecommendationModule } from "@componentRecommendation/recommendation.module"; +import { ProductModule } from "@product/product.module"; +import { ProviderModule } from "@providers/providers.module"; +import { ImageModule } from "@image/image.module"; +import { Test, TestingModule } from "@nestjs/testing"; +import { NotFoundException } from "@nestjs/common"; +import { Mocks } from "@mocks/mocks"; +import * as bcrypt from "bcrypt"; +import { Recommendation } from "@componentRecommendation/Schema/Rrecommendation.schema"; +import { RealizarLogin } from "./dto/SingIn.dto"; +import { UpdatePasswordUser } from "./dto/updateLogin.dtp"; +import { isValidObjectId, Mongoose, Types } from "mongoose"; +import { populate } from "dotenv"; +const urlConfig = require("../../../globalConfig.json"); + +describe("userService", () => { + let userService: UserService; + const mocks = new Mocks(); + const mockMongo = { + find: jest.fn(), + skip: jest.fn(), + limit: jest.fn(), + sort: jest.fn(), + findOne: jest.fn(), + create: jest.fn(), + updateOne: jest.fn(), + deleteOne: jest.fn(), + exec: jest.fn(), + select: jest.fn(), + populate: jest.fn(), + findById: jest.fn(), + findByIdAndUpdate: jest.fn(), + setOptions: jest.fn(), + findByIdAndDelete: jest.fn(), + isValidObjectId: jest.fn(), + }; + jest.mock("mongoose", () => ({ + isValidObjectId: jest.fn(), + })); + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + imports: [ + MongooseModule.forRoot(urlConfig.mongoUri), + MongooseModule.forFeature([{ name: Users.name, schema: UserSchema }]), + RecommendationModule, + ProductModule, + ProviderModule, + ImageModule, + ], + providers: [ + UserService, + RecommendationService, + ProductServices, + { + provide: getModelToken(Users.name), + useValue: mockMongo, + }, + { + provide: getModelToken(Recommendation.name), + useValue: mockMongo, + }, + ], + exports: [MongooseModule], + }).compile(); + + userService = app.get(UserService); + }); + describe("ListUsers()", () => { + it("should throw NotFoundException when no users are found", async () => { + mockMongo.find = jest.fn().mockReturnValue({ + populate: jest.fn().mockReturnValue({ + exec: jest.fn().mockResolvedValue([]), + }), + }); + await expect(userService.ListUsers()).rejects.toThrow(NotFoundException); + }); + it("should return a list of users when users exist in the database", async () => { + const mockUsers: Users[] = mocks.users(); + mockMongo.find = jest.fn().mockReturnValue({ + populate: jest.fn().mockReturnValue({ + exec: jest.fn().mockReturnValue(mockUsers), + }), + }); + const result: Users[] = await userService.ListUsers(); + + expect(result).toEqual(mockUsers); + expect(mockMongo.find).toHaveBeenCalled(); + expect(mockMongo.find().populate).toHaveBeenCalledWith("imagemPerfil"); + expect(mockMongo.find().populate().exec).toHaveBeenCalled(); + }); + }); + describe("RegisterUsers()", () => { + it("should throw NotFoundException when no users are create", async () => { + mockMongo.create = jest.fn().mockResolvedValue(null); + const createUser = { + cpf: "123.456.789-00", + nome: "John Doe", + login: { + email: "john.doe@example.com", + password: "password123", + isAdmin: false, + }, + dataNascimento: "1990-01-01", + sexo: "M", + cep: "12345678", + endereco: "123 Main St", + imagemPerfil: null, + dataCadastro: "", + }; + await expect(userService.RegisterUsers(createUser)).rejects.toThrow( + Error + ); + }); + it("should register a new user when provided with valid data", async () => { + mockMongo.create = jest.fn().mockResolvedValue({ _id: "12345" }); + const bcryptHashSpy = jest + .spyOn(bcrypt, "hash") + .mockResolvedValue("hashedPassword" as never); + const createUser = { + cpf: "123.456.789-00", + nome: "John Doe", + login: { + email: "john.doe@example.com", + password: "password123", + isAdmin: false, + }, + dataNascimento: "1990-01-01", + sexo: "M", + cep: "12345678", + endereco: "123 Main St", + imagemPerfil: null, + dataCadastro: "", + }; + const result = await userService.RegisterUsers(createUser); + expect(bcryptHashSpy).toHaveBeenCalledWith("password123", 10); + expect(mockMongo.create).toHaveBeenCalledWith( + expect.objectContaining({ + cpf: "123.456.789-00", + nome: "John Doe", + login: expect.objectContaining({ + email: "john.doe@example.com", + password: "hashedPassword", + }), + dataNascimento: "1990-01-01", + sexo: "M", + cep: "12345678", + endereco: "123 Main St", + imagemPerfil: null, + }) + ); + expect(result).toEqual(expect.objectContaining({ _id: "12345" })); + }); + it("should return null when trying to register a user with an existing email", async () => { + const mockUserModel = { + create: jest.fn(), + }; + const mockRecommendationService = { + RegisterRecommedations: jest.fn(), + }; + const mockUsers: Users[] = mocks.users(); + mockMongo.find = jest.fn().mockReturnValue({ + populate: jest.fn().mockReturnValue({ + exec: jest.fn().mockReturnValue(mockUsers), + }), + }); + jest.spyOn(userService, "ListUsers").mockResolvedValue(mockUsers); + const createUser = mockUsers[0]; + const result = await userService.RegisterUsers(createUser); + expect(result).toBeNull(); + expect(mockUserModel.create).not.toHaveBeenCalled(); + expect( + mockRecommendationService.RegisterRecommedations + ).not.toHaveBeenCalled(); + }); + }); + describe("searchId()", () => { + it("should return user when ID exists", async () => { + const mockUser = mocks.users()[0]; + mockMongo.findById = jest.fn().mockReturnValue({ + populate: jest.fn().mockReturnValue({ + exec: jest.fn().mockReturnValue(mockUser), + }), + }); + const result = await userService.searchId(mockUser["_id"]); + expect(result).toEqual(mockUser); + expect(mockMongo.findById).toHaveBeenCalledWith(mockUser["_id"]); + }); + it("should throw NotFoundException when ID does not exist", async () => { + mockMongo.findById = jest.fn().mockReturnValue({ + populate: jest.fn().mockReturnValue({ + exec: jest.fn().mockReturnValue(null), + }), + }); + await expect(userService.searchId("invalidUserId")).rejects.toThrow( + NotFoundException + ); + }); + }); + describe("updateUser()", () => { + it("should update user with all fields provided", async () => { + const userMocks = mocks.users()[0]; + const id = userMocks["_id"]; + const updateUserDTO = { + _id: id, + cpf: "123.456.789-00", + nome: "Updated Name", + login: { + email: "updated@example.com", + password: "hashedPassword", + isAdmin: false, + }, + dataNascimento: "2000-01-01", + sexo: "M", + cep: "12345678", + endereco: "Updated Address", + imagemPerfil: null, + }; + const findByIDUser = userMocks; + const updatedUser = { + ...findByIDUser, + ...updateUserDTO, + login: findByIDUser.login, + dataCadastro: findByIDUser.dataCadastro, + }; + mockMongo.findById = jest.fn().mockReturnValue(findByIDUser); + mockMongo.findByIdAndUpdate = jest.fn().mockReturnValue(updatedUser); + const result = await userService.updateUser(id, updateUserDTO); + expect(result).toEqual(updatedUser); + }); + it("should throw NotFoundException if user with given id does not exist", async () => { + const userMocks = mocks.users()[0]; + const id = userMocks["_id"]; + const updateUserDTO = { + _id: id, + cpf: "123.456.789-00", + nome: "Updated Name", + login: { + email: "updated@example.com", + password: "hashedPassword", + isAdmin: false, + }, + dataNascimento: "2000-01-01", + sexo: "M", + cep: "12345678", + endereco: "Updated Address", + imagemPerfil: null, + }; + + mockMongo.findByIdAndUpdate = jest.fn().mockReturnValue(null); + await expect(userService.updateUser(id, updateUserDTO)).rejects.toThrow( + NotFoundException + ); + expect(mockMongo.findById).toHaveBeenCalledWith(id); + }); + }); + describe("deleteUser()", () => { + it("should delete user when valid email and password are provided", async () => { + mockMongo.findById = jest.fn().mockReturnValue({ + exec: jest.fn().mockResolvedValue({ + login: { email: "test@example.com", password: "hashedpassword" }, + imagemPerfil: "60d0fe4f5311236168a109ca", // Example ObjectId string + _id: "60d0fe4f5311236168a109cb", // Example ObjectId string + }), + }); + mockMongo.findByIdAndDelete = jest.fn().mockReturnValue({ + exec: jest.fn().mockResolvedValue(true), + }); + jest + .spyOn(RecommendationService.prototype, "listRecommedations") + .mockResolvedValue([ + { user: "60d0fe4f5311236168a109cb", _id: "recommendationId" }, + ] as any); + const bcryptCompareSync = jest + .spyOn(bcrypt, "compareSync") + .mockReturnValue(true); + const result = await userService.deleteUser("60d0fe4f5311236168a109cb", { + email: "test@example.com", + password: "password", + }); + + expect(result).toEqual({ message: "Usuário deletado com sucesso" }); + expect(mockMongo.findById).toHaveBeenCalledWith( + "60d0fe4f5311236168a109cb" + ); + expect(mockMongo.findByIdAndDelete).toHaveBeenCalledWith( + "60d0fe4f5311236168a109cb" + ); + }); + it("should return error message when email does not match user's email", async () => { + mockMongo.findById = jest.fn().mockReturnValue({ + exec: jest.fn().mockResolvedValue({ + login: { + email: "different@example.com", + password: "hashedpassword", + }, + }), + }); + jest.spyOn(userService, "validateId").mockReturnValue(true); + const result = await userService.deleteUser("638799113daa035e68364cfy", { + email: "test@example.com", + password: "password", + }); + + expect(result).toEqual({ message: "email ou senha invalida" }); + expect(mockMongo.findById).toHaveBeenCalledWith( + "638799113daa035e68364cfy" + ); + }); + }); + describe("signIn()", () => { + it("should return user object with emailExists and emailAndPassword set to true when valid email and password are provided", async () => { + const mockUser = { + login: { + email: "test@example.com", + password: await bcrypt.hash("validPassword", 10), + }, + }; + jest.spyOn(userService, "validateId").mockReturnValue(true); + const mockListUsers = jest.fn().mockResolvedValue([mockUser]); + userService.ListUsers = mockListUsers; + + const realizarLogin = new RealizarLogin(); + realizarLogin.email = "test@example.com"; + realizarLogin.password = "validPassword"; + + const result = await userService.signIn(realizarLogin); + + expect(result).toEqual({ + result: mockUser, + emailExists: true, + emailAndPassword: true, + }); + }); + // it("should return error message when email and password fields are empty", async () => { + // const userMocks = mocks.users(); + // jest.spyOn(userService, "ListUsers").mockResolvedValue(userMocks); + // jest.spyOn(userService, "validateId").mockReturnValue(true); + // mockMongo.find = jest.fn().mockResolvedValue({ + // populate: jest.fn().mockResolvedValue({ + // exec: jest.fn().mockResolvedValue(userMocks), + // }), + // }); + // const realizarLogin = new RealizarLogin(); + // realizarLogin.email = ""; + // realizarLogin.password = ""; + // const result = await userService.signIn(realizarLogin); + + // expect(result).toEqual({ + // message: "email não encontrado", + // emailExists: false, + // emailAndPassword: false, + // }); + // }); + }); + describe("updatePassworUser", () => { + it("should update password when old password is correct", async () => { + const id = new Types.ObjectId().toString(); + const updatePasswordBody: UpdatePasswordUser = { + email: "test@example.com", + OldPassword: "oldPassword123", + newPassoWord: "newPassword123", + isAdmin: true, + newEmail: "test2@example.com", + }; + jest.spyOn(userService, "ListUsers").mockResolvedValue([ + { + cpf: "123456789", + cep: "tweasd", + dataCadastro: "09-06-2024", + dataNascimento: "09/06/2021", + endereco: "asdasds", + imagemPerfil: null, + nome: "Test User", + sexo: "M", + login: { + isAdmin: true, + email: "test@example.com", + password: bcrypt.hashSync("oldPassword123", 10), + }, + }, + ]); + mockMongo.findById.mockReturnValue({ + cpf: "123456789", + nome: "Test User", + login: { + email: "test@example.com", + password: bcrypt.hashSync("oldPassword123", 10), + isAdmin: false, + }, + dataNascimento: "1990-01-01", + sexo: "M", + cep: "12345-678", + endereco: "Test Address", + imagemPerfil: null, + }); + const hash = bcrypt.hashSync("newPassword123", 10); + mockMongo.findByIdAndUpdate.mockReturnValue({ + cpf: "123456789", + nome: "Test User", + login: { + email: "test2@example.com", + password: hash, + isAdmin: true, + }, + dataNascimento: "1990-01-01", + sexo: "M", + cep: "12345-678", + endereco: "Test Address", + imagemPerfil: null, + }); + const result = await userService.updatePassworUser( + id, + updatePasswordBody + ); + expect(result["login"].password).toBe(hash); + }); + it("should return error message when email is not found", async () => { + const id = new Types.ObjectId().toString(); + const updatePasswordBody: UpdatePasswordUser = { + email: "nonexistent@example.com", + OldPassword: "oldPassword123", + newPassoWord: "newPassword123", + isAdmin: true, + newEmail: "nonexistent@example.com", + }; + jest.spyOn(userService, "ListUsers").mockResolvedValue([]); + const result = await userService.updatePassworUser( + id, + updatePasswordBody + ); + expect(result).toEqual({ + message: "email ou senha incorretos", + emailExists: false, + }); + }); + }); +}); diff --git a/src/modules/users/users.service.ts b/src/modules/users/users.service.ts new file mode 100644 index 0000000..95d753e --- /dev/null +++ b/src/modules/users/users.service.ts @@ -0,0 +1,265 @@ +import { isValidObjectId, Model, Types } from "mongoose"; +import { Injectable, Logger, NotFoundException } from "@nestjs/common"; +import { InjectModel } from "@nestjs/mongoose"; +import { Users, UsersDocument } from "./Schema/user.schema"; +import { RealizarLogin } from "./dto/SingIn.dto"; +import { UpdateUserDTO } from "./dto/updateUser.dto"; +import { UpdatePasswordUser } from "./dto/updateLogin.dtp"; +import { ImageDocument, imagem } from "../image/Schema/image.schema"; +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import * as bcrypt from "bcrypt"; +@Injectable() +export class UserService { + constructor( + @InjectModel(Users.name) private readonly userModel: Model, + @InjectModel(imagem.name) private readonly imageModel: Model, + private readonly recommendationService: RecommendationService + ) {} + private logger: Logger = new Logger(UserService.name); + validateId(id: string): boolean { + return isValidObjectId(id); + } + async ListUsers(): Promise { + const listUser = await this.userModel + .find() + .populate("imagemPerfil") + .exec(); + if (!listUser || listUser.length === 0) { + throw new NotFoundException("Erro ao procurar usuários"); + } + return listUser; + } + + async RegisterUsers(createUser: Users): Promise { + const { email, password, isAdmin } = createUser.login; + const listUser = await this.ListUsers(); + + const userExists = listUser.some((user) => user.login.email === email); + + if (userExists) { + return null; + } + + try { + const hashedPassword = await bcrypt.hash(password, 10); + const dateNow = new Date().toISOString(); + const newUser = await this.userModel.create({ + cpf: createUser.cpf, + nome: createUser.nome, + login: { + email: email, + password: hashedPassword, + isAdmin: isAdmin, + }, + dataNascimento: createUser.dataNascimento, + sexo: createUser.sexo, + cep: createUser.cep, + endereco: createUser.endereco, + imagemPerfil: createUser.imagemPerfil, + dataCadastro: dateNow, + }); + + if (!newUser) { + throw new NotFoundException("Usuário inexistente"); + } + const userId = newUser._id.toString(); + await this.recommendationService.RegisterRecommedations({ + click_calcados: 1, + click_equipamentos: 1, + click_roupas: 1, + click_suplementos: 1, + user: userId, + }); + return newUser; + } catch (error) { + this.logger.error(this.RegisterUsers.name, error); + throw new Error("Falha ao registrar usuário"); + } + } + async searchId(id: string): Promise { + if (!this.validateId(id)) { + throw new NotFoundException("Usuário inexistente"); + } + const searchId = await this.userModel + .findById(id) + .populate("imagemPerfil") + .exec(); + if (!searchId) { + throw new NotFoundException("Usuário inexistente"); + } + return searchId; + } + async updateUser(id: string, updateUserDTO: UpdateUserDTO): Promise { + if (!this.validateId(id)) { + throw new NotFoundException("Usuário inexistente"); + } + const user = await this.userModel.findById(id); + if (!user) { + throw new NotFoundException("Usuário inexistente"); + } + const updatedUser = { + cpf: updateUserDTO.cpf || user.cpf, + nome: updateUserDTO.nome || user.nome, + login: { + email: user.login.email, + password: user.login.password, + isAdmin: user.login.isAdmin, + }, + dataNascimento: updateUserDTO.dataNascimento || user.dataNascimento, + sexo: updateUserDTO.sexo || user.sexo, + cep: updateUserDTO.cep || user.cep, + endereco: updateUserDTO.endereco || user.endereco, + imagemPerfil: updateUserDTO.imagemPerfil || null, + dataCadastro: user.dataCadastro, + }; + const updatedUserRecord = await this.userModel.findByIdAndUpdate( + id, + updatedUser, + { overwrite: false, new: true } + ); + if (!updatedUserRecord) { + throw new NotFoundException("Usuário inexistente"); + } + return updatedUserRecord; + } + async deleteUser( + id: string, + realizarLogin: RealizarLogin + ): Promise<{ message: string }> { + const { email, password } = realizarLogin; + if (!this.validateId(id)) { + throw new NotFoundException("Usuário inexistente"); + } + const user = await this.userModel.findById(id).exec(); + if (!user || user.login.email !== email) { + return { message: "email ou senha invalida" }; + } + + const isPasswordValid = bcrypt.compareSync(password, user.login.password); + if (!isPasswordValid) { + return { message: "email ou senha invalida" }; + } + + if (user.imagemPerfil) { + await this.imageModel.findByIdAndDelete( + new Types.ObjectId(String(user.imagemPerfil)) + ); + } + + const recommendations = + await this.recommendationService.listRecommedations(); + for (const recommendation of recommendations) { + const recommendationUserId: string = recommendation.user["_id"]; + if (recommendationUserId && recommendationUserId.toString() === id) { + await this.recommendationService.DeleteRecommendation( + recommendation["_id"] + ); + break; + } + } + + const deleteUser = await this.userModel.findByIdAndDelete(id).exec(); + if (!deleteUser) { + throw new NotFoundException("Erro ao excluir usuário"); + } + + return { message: "Usuário deletado com sucesso" }; + } + async signIn(realizarLogin: RealizarLogin) { + const { email, password } = realizarLogin; + + const users = await this.ListUsers(); + const user = users.find((user) => user.login.email === email); + if (!this.validateId(user["_id"])) { + throw new NotFoundException("Usuário inexistente"); + } + if (!user) { + return { + message: "email não encontrado", + emailExists: false, + emailAndPassword: false, + }; + } + + const isPasswordValid = bcrypt.compareSync(password, user.login.password); + if (isPasswordValid) { + return { + result: user, + emailExists: true, + emailAndPassword: true, + }; + } + + return { + message: "email ou senha incorretos", + emailExists: true, + emailAndPassword: false, + }; + } + async updatePassworUser( + id: string, + updatePasswordBody: UpdatePasswordUser + ): Promise< + | Users + | { + message?: string; + emailAndPassword?: boolean; + emailExists?: boolean; + } + > { + const { email, OldPassword, newPassoWord, newEmail, isAdmin } = + updatePasswordBody; + + if (!this.validateId(id)) { + throw new NotFoundException("Usuário inexistente"); + } + const users = await this.ListUsers(); + + const user = users.find((user) => user.login.email === email); + if (!user) { + return { + message: "email ou senha incorretos", + emailExists: false, + }; + } + const isPasswordValid = await bcrypt.compare( + OldPassword, + user.login.password + ); + if (!isPasswordValid) { + return { + message: "email ou senha incorretos", + emailAndPassword: false, + }; + } + + const encryptedPassword = newPassoWord + ? await bcrypt.hash(newPassoWord, 10) + : user.login.password; + + const updatedUser = await this.userModel.findByIdAndUpdate( + id, + { + login: { + email: newEmail || user.login.email, + password: encryptedPassword, + isAdmin: isAdmin !== undefined ? isAdmin : user.login.isAdmin, + }, + cpf: user.cpf, + nome: user.nome, + dataNascimento: user.dataNascimento, + sexo: user.sexo, + cep: user.cep, + endereco: user.endereco, + imagemPerfil: user.imagemPerfil, + }, + { new: true } + ); + + if (!updatedUser) { + throw new Error("Erro ao atualizar email/senha do usuário"); + } + + return updatedUser; + } +} diff --git a/src/users/validator/birthDate.validator.ts b/src/modules/users/validator/birthDate.validator.ts similarity index 100% rename from src/users/validator/birthDate.validator.ts rename to src/modules/users/validator/birthDate.validator.ts diff --git a/src/users/validator/cpf.validator.ts b/src/modules/users/validator/cpf.validator.ts similarity index 100% rename from src/users/validator/cpf.validator.ts rename to src/modules/users/validator/cpf.validator.ts diff --git a/src/order/order.module.ts b/src/order/order.module.ts deleted file mode 100644 index e069576..0000000 --- a/src/order/order.module.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Module } from "@nestjs/common"; -import { MongooseModule } from "@nestjs/mongoose"; -import { imagem, ImagemSchema } from "../image/Schema/image.schema"; -import { ProductServices } from "../product/product.service"; -import { Provider, ProviderSchema } from "../providers/Schema/providers.schema"; -import { Product, ProductSchema } from "../product/Schema/product.schema"; -import { Users, UserSchema } from "../users/Schema/user.schema"; -import { OrderController } from "./order.controller"; -import { OrderService } from "./order.service"; -import { Order, OrderSchema } from "./Schema/order.schema"; - -@Module({ - imports: [ - MongooseModule.forFeature([ - { name: Order.name, schema: OrderSchema }, - { name: Users.name, schema: UserSchema }, - { name: Product.name, schema: ProductSchema }, - { name: imagem.name, schema: ImagemSchema }, - { name: Provider.name, schema: ProviderSchema }, - ]), - ], - controllers: [OrderController], - providers: [OrderService, ProductServices], -}) -export class OderModule {} diff --git a/src/order/order.spec.ts b/src/order/order.spec.ts deleted file mode 100644 index 34e68e1..0000000 --- a/src/order/order.spec.ts +++ /dev/null @@ -1,190 +0,0 @@ -import { Test, TestingModule } from "@nestjs/testing"; -import { OrderController } from "./order.controller"; -import { MongooseModule } from "@nestjs/mongoose"; -import { Order, OrderSchema } from "./Schema/order.schema"; -import { UserSchema, Users } from "src/users/Schema/user.schema"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import { ImagemSchema, imagem } from "src/image/Schema/image.schema"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; -import { UserController } from "src/users/users.controller"; -import ProductController from "src/product/product.controller"; -import { ImageController } from "src/image/image.controller"; -import { OrderService } from "./order.service"; -import { ProductServices } from "src/product/product.service"; -import { UserService } from "src/users/user.service"; -import { ImageService } from "src/image/image.service"; -import { RecommendationController } from "src/componentRecommendation /recommendation.controller"; -import { RecommendationService } from "src/componentRecommendation /recommendation.service"; -import { - Recommendation, - RrecommendationSchema, -} from "src/componentRecommendation /Schema/Rrecommendation.schema"; -const urlConfig = require("../globalConfig.json"); -const path = require("path"); -describe("OrderController", () => { - let orderController: OrderController; - let userController: UserController; - let productController: ProductController; - let imageController: ImageController; - beforeEach(async () => { - const app: TestingModule = await Test.createTestingModule({ - imports: [ - MongooseModule.forRoot(urlConfig.mongoUri), - MongooseModule.forFeature([{ name: Order.name, schema: OrderSchema }]), - MongooseModule.forFeature([{ name: Users.name, schema: UserSchema }]), - - MongooseModule.forFeature([ - { name: Product.name, schema: ProductSchema }, - ]), - MongooseModule.forFeature([ - { name: imagem.name, schema: ImagemSchema }, - ]), - MongooseModule.forFeature([ - { name: Provider.name, schema: ProviderSchema }, - ]), - MongooseModule.forFeature([ - { name: Recommendation.name, schema: RrecommendationSchema }, - ]), - ], - controllers: [ - OrderController, - UserController, - ProductController, - ImageController, - ], - providers: [ - OrderService, - ProductServices, - RecommendationController, - UserService, - ProductServices, - ImageService, - RecommendationService, - ], - }).compile(); - orderController = app.get(OrderController); - userController = app.get(UserController); - productController = app.get(ProductController); - imageController = app.get(ImageController); - }); - describe("👨‍💻 Methods:", () => { - let registeredCustomerOrder; - let registeredCustomerCLient; - let registeredCustomerPorduct: any; - const registeredCustomerImagem = []; - it("• uploudImage()", async () => { - const UploadImage = await imageController.uploudImage( - path.resolve(__dirname, "..", "..", "test", "tmp", "e2e_nestjs.jpg") - ); - expect(UploadImage).toHaveProperty("messagem" && "image"); - registeredCustomerImagem.push(UploadImage.image._id); - const UploadImage2 = await imageController.uploudImage( - path.resolve(__dirname, "..", "..", "test", "tmp", "e2e_nestjs.jpg") - ); - expect(UploadImage2).toHaveProperty("messagem" && "image"); - registeredCustomerImagem.push(UploadImage2.image._id); - }); - const clienteTestOrder = { - cpf: "567.904.554-00", - nome: "TDD order- client", - login: { - email: "testOrderClient@outlook.com", - password: "test68909", - isAdmin: false, - }, - dataNascimento: "20/20/2000", - sexo: "M", - cep: "15052-777", - endereco: "Rua João do Test", - imagemPerfil: null, - dataCadastro: new Date().toISOString(), - }; - const IProduct: Product = { - categoriaProduto: { - equipamento: { - nome: "suplemento eee", - fornecedor: "63cb805f708a22c7a5f1110b", - cor: "azul", - sexo: "M", - tamanho: 20, - preco: "222", - quantidade: 2222, - imagemProduto: registeredCustomerImagem, - }, - roupa: null, - suplemento: null, - calcado: null, - }, - dataCadastro: new Date().toISOString(), - }; - it("• run the method CreateUser()", async () => { - const CreateUser = await userController.CreateUser(clienteTestOrder); - expect(CreateUser).toHaveProperty( - "messagem" && "registeredSuccess" && "user" - ); - registeredCustomerCLient = CreateUser.user; - }); - it("• CreateProduct()", async () => { - const RegisterProduct = await productController.CreateProduct(IProduct); - expect(RegisterProduct).toHaveProperty("product" && "messagem"); - expect( - RegisterProduct.product.categoriaProduto.equipamento.nome == - IProduct.categoriaProduto.equipamento.nome - ); - expect( - RegisterProduct.product.categoriaProduto.equipamento.cor == - IProduct.categoriaProduto.equipamento.cor - ); - expect( - RegisterProduct.product.categoriaProduto.equipamento.sexo == - IProduct.categoriaProduto.equipamento.sexo - ); - expect( - RegisterProduct.product.categoriaProduto.equipamento.tamanho == - IProduct.categoriaProduto.equipamento.tamanho - ); - expect( - RegisterProduct.product.categoriaProduto.equipamento.preco == - IProduct.categoriaProduto.equipamento.preco - ); - expect( - RegisterProduct.product.categoriaProduto.equipamento.quantidade == - IProduct.categoriaProduto.equipamento.quantidade - ); - registeredCustomerPorduct = RegisterProduct.product; - }); - it("• RegisterOrder()", async () => { - const RegisterOrder = await orderController.RegisterOrder({ - quantidadePedido: 20, - produto: registeredCustomerPorduct._id, - cliente: registeredCustomerCLient._id, - total: 20, - dataCadastro: "", - }); - expect(RegisterOrder).toHaveProperty( - "messagem" && "order" && "orderPlaced" - ); - registeredCustomerOrder = RegisterOrder.order; - }); - it("• ListOrders()", async () => { - const ListOders = await orderController.ListOrders(); - expect(ListOders[0].quantidadePedido == 20); - expect(ListOders[0].quantidadePedido == 4440); - }); - it("• ListOrderByID()", async () => { - const ListOrderByID = await orderController.ListOrderByID( - registeredCustomerOrder._id - ); - expect(ListOrderByID == registeredCustomerOrder); - }); - it("• DeleteOrder()", async () => { - const DeleteOrder = await orderController.DeleteOrder( - registeredCustomerOrder._id - ); - expect(DeleteOrder).toHaveProperty("messagem"); - }); - }); -}); diff --git a/src/product/product.service.ts b/src/product/product.service.ts deleted file mode 100644 index d305a59..0000000 --- a/src/product/product.service.ts +++ /dev/null @@ -1,202 +0,0 @@ -import { Injectable, Logger, NotFoundException } from "@nestjs/common"; -import { InjectModel } from "@nestjs/mongoose"; -import { Model } from "mongoose"; -import { ImageDocument, imagem } from "../image/Schema/image.schema"; -import { - Provider, - ProviderDocument, -} from "../providers/Schema/providers.schema"; -import { updateProductDTO } from "./dto/updateProduct.dto"; -import { Product, ProductDocument } from "./Schema/product.schema"; - -@Injectable() -export class ProductServices { - constructor( - @InjectModel(Product.name) - private readonly productModel: Model, - @InjectModel(imagem.name) - private readonly imageModel: Model, - @InjectModel(Provider.name) - private readonly ProviderModel: Model - ) {} - async listProducts(): Promise { - const listProducts = await this.productModel.find().exec(); - const products: Product[] = []; - for (const i of listProducts) { - const searchId = await this.productModel.findById({ _id: i._id }).exec(); - if (searchId) { - const imgId = []; - const img = []; - let ProviderId = String; - const obj = Object.keys(searchId.categoriaProduto)[0].toString(); - imgId.push(searchId.categoriaProduto[obj].imagemProduto); - ProviderId = searchId.categoriaProduto[obj].fornecedor; - for (const i of imgId[0]) { - const searchImgId = await this.imageModel.findById({ _id: i }).exec(); - img.push(searchImgId); - } - const searchProductId = await this.ProviderModel.findById({ - _id: ProviderId, - }).exec(); - - searchId.categoriaProduto[obj].imagemProduto = []; - searchId.categoriaProduto[obj].imagemProduto = img; - searchId.categoriaProduto[obj].fornecedor = searchProductId; - - products.push(searchId); - } - } - return products; - } - async RegisterProduct(createProduct: Product): Promise { - const RegisterProduct = await this.productModel.create(createProduct); - if (!RegisterProduct) throw new NotFoundException(); - else return RegisterProduct; - } - async searchProductId(id: string): Promise { - const searchId = await this.productModel.findById({ _id: id }).exec(); - if (!searchId) throw new NotFoundException(); - else { - const imgId = []; - const img = []; - let ProviderId = String; - const obj = Object.keys(searchId.categoriaProduto)[0].toString(); - imgId.push(searchId.categoriaProduto[obj].imagemProduto); - ProviderId = searchId.categoriaProduto[obj].fornecedor; - for (const i of imgId[0]) { - const searchImgId = await this.imageModel.findById({ _id: i }).exec(); - img.push(searchImgId); - } - const searchProductId = await this.ProviderModel.findById({ - _id: ProviderId, - }).exec(); - - searchId.categoriaProduto[obj].imagemProduto = []; - searchId.categoriaProduto[obj].imagemProduto = img; - searchId.categoriaProduto[obj].fornecedor = searchProductId; - - return searchId; - } - } - - async updateProduct( - id: string, - updateProduct: updateProductDTO - ): Promise { - const findByIdProduct = await this.productModel.findById({ _id: id }); - if (!findByIdProduct) throw new NotFoundException(); - else { - const obj = Object.keys(findByIdProduct.categoriaProduto)[0].toString(); - const ObjUpdate = Object.keys( - updateProduct.categoriaProduto - )[0].toString(); - const newProduct = { - categoriaProduto: { - [ObjUpdate]: { - nome: updateProduct.categoriaProduto[ObjUpdate].nome - ? updateProduct.categoriaProduto[ObjUpdate].nome - : findByIdProduct.categoriaProduto[obj].nome, - fornecedor: updateProduct.categoriaProduto[ObjUpdate].fornecedor - ? updateProduct.categoriaProduto[ObjUpdate].fornecedor - : findByIdProduct.categoriaProduto[obj].fornecedor, - cor: updateProduct.categoriaProduto[ObjUpdate].cor - ? updateProduct.categoriaProduto[ObjUpdate].cor - : findByIdProduct.categoriaProduto[obj].cor, - sexo: updateProduct.categoriaProduto[ObjUpdate].sexo - ? updateProduct.categoriaProduto[ObjUpdate].sexo - : findByIdProduct.categoriaProduto[obj].sexo, - tamanho: updateProduct.categoriaProduto[ObjUpdate].tamanho - ? updateProduct.categoriaProduto[ObjUpdate].tamanho - : findByIdProduct.categoriaProduto[obj].tamanho, - preco: updateProduct.categoriaProduto[ObjUpdate].preco - ? updateProduct.categoriaProduto[ObjUpdate].preco - : findByIdProduct.categoriaProduto[obj].preco, - quantidade: updateProduct.categoriaProduto[ObjUpdate].quantidade - ? updateProduct.categoriaProduto[ObjUpdate].quantidade - : findByIdProduct.categoriaProduto[obj].quantidade, - imagemProduto: updateProduct.categoriaProduto[ObjUpdate] - .imagemProduto - ? updateProduct.categoriaProduto[ObjUpdate].imagemProduto - : findByIdProduct.categoriaProduto[obj].imagemProduto, - }, - }, - }; - const updateNewProduct = await this.productModel - .findByIdAndUpdate(id, newProduct) - .exec(); - if (!updateNewProduct) throw new NotFoundException(); - else return updateNewProduct; - } - } - - async deleteProduct(id: string) { - const searchId = await this.productModel.findById({ _id: id }).exec(); - if (!searchId) throw new NotFoundException(); - else { - const obj = Object.keys(searchId.categoriaProduto)[0].toString(); - searchId.categoriaProduto[obj].imagemProduto.map(async (item) => { - if (item) { - const deleteImageProduto = await this.imageModel - .findById({ _id: item }) - .exec(); - if (deleteImageProduto) { - await deleteImageProduto.remove(); - } - } - }); - const deleteProduct = await this.productModel - .findByIdAndDelete({ _id: id }) - .exec(); - - if (!searchId || !deleteProduct) throw new NotFoundException(); - else return deleteProduct; - } - } - - async searchProducts(search: string): Promise { - Logger.debug(search); - const searchFormat = search - .normalize("NFD") - .replace(/[^a-zA-Z\s]/g, "") - .toLowerCase(); - Logger.debug(searchFormat); - const listProducts = await this.listProducts(); - const ListProductResult: Product[] = []; - for (let i = 0; i < listProducts.length; i++) { - if ( - searchFormat.includes("calcado") && - Object.keys(listProducts[i].categoriaProduto)[0] == "calcado" - ) { - ListProductResult.push(listProducts[i]); - } else if ( - searchFormat.includes("equipamento") && - Object.keys(listProducts[i].categoriaProduto)[0] == "equipamento" - ) { - ListProductResult.push(listProducts[i]); - } else if ( - searchFormat.includes("suplemento") && - Object.keys(listProducts[i].categoriaProduto)[0] == "suplemento" - ) { - ListProductResult.push(listProducts[i]); - } else if ( - searchFormat.includes("roupa") && - Object.keys(listProducts[i].categoriaProduto)[0] == "roupa" - ) { - ListProductResult.push(listProducts[i]); - } else { - const nameProdut = listProducts[i].categoriaProduto[ - Object.keys(listProducts[i].categoriaProduto)[0] - ].nome - .normalize("NFD") - .replace(/[^a-zA-Z\s]/g, "") - .toLowerCase(); - if (nameProdut.includes(searchFormat)) { - ListProductResult.push(listProducts[i]); - } - } - } - Logger.debug(ListProductResult); - - return ListProductResult; - } -} diff --git a/src/users/user.service.ts b/src/users/user.service.ts deleted file mode 100644 index 98de95a..0000000 --- a/src/users/user.service.ts +++ /dev/null @@ -1,255 +0,0 @@ -import { Model } from "mongoose"; -import { Injectable, NotFoundException, UseGuards } from "@nestjs/common"; -import { InjectModel } from "@nestjs/mongoose"; -import { Users, UsersDocument } from "./Schema/user.schema"; -import { RealizarLogin } from "./dto/SingIn.dto"; -import { UpdateUserDTO } from "./dto/updateUser.dto"; -import { UpdatePasswordUser } from "./dto/updateLogin.dtp"; -import { ImageDocument, imagem } from "../image/Schema/image.schema"; -import { RecommendationService } from "src/componentRecommendation /recommendation.service"; -import { AuthGuard } from "@nestjs/passport"; -import * as bcrypt from "bcrypt"; -@Injectable() -export class UserService { - constructor( - @InjectModel(Users.name) private readonly userModel: Model, - @InjectModel(imagem.name) private readonly imageModel: Model, - private readonly recommendationService: RecommendationService - ) {} - @UseGuards(AuthGuard("jwt")) - async ListUsers(): Promise { - const listUser = await this.userModel - .find() - .populate("imagemPerfil") - .exec(); - if (!listUser) throw new NotFoundException(); - else return listUser; - } - @UseGuards(AuthGuard("jwt")) - async RegisterUsers(createUser: Users): Promise { - const { email, password, isAdmin } = createUser.login; - const listUser = this.ListUsers(); - - const userTrue = (await listUser).filter(function (item) { - return item.login.email == email; - }); - - if (userTrue.length === 0) { - return bcrypt.hash(password, 10).then(async (hash) => { - const encryptedPassowrd = hash; - const dateNow = new Date().toISOString(); - const newUser = this.userModel.create({ - cpf: createUser.cpf, - nome: createUser.nome, - login: { - email: email, - password: encryptedPassowrd, - isAdmin: isAdmin, - }, - dataNascimento: createUser.dataNascimento, - sexo: createUser.sexo, - cep: createUser.cep, - endereco: createUser.endereco, - imagemPerfil: createUser.imagemPerfil, - dataCadastro: dateNow, - }); - if (!newUser) throw new NotFoundException(); - else { - const _id = await newUser.then((res) => res._id.toString()); - await this.recommendationService.RegisterRecommedations({ - click_calcados: 1, - click_equipamentos: 1, - click_roupas: 1, - click_suplementos: 1, - user: _id, - }); - return newUser; - } - }); - } else { - return null; - } - } - @UseGuards(AuthGuard("jwt")) - async searchId(id: string): Promise { - const searchId = await this.userModel - .findById({ _id: id }) - .populate("imagemPerfil") - .exec(); - if (!searchId) throw new NotFoundException(); - else return searchId; - } - @UseGuards(AuthGuard("jwt")) - async updateUser(id: string, updateUserBoy: UpdateUserDTO): Promise { - const findByIDUser = await this.userModel.findById(id); - const imagemPerfilBody = updateUserBoy.imagemPerfil; - let ImgPerfil; - if (!imagemPerfilBody) ImgPerfil = null; - else ImgPerfil = imagemPerfilBody; - const newUser = { - cpf: updateUserBoy.cpf ? updateUserBoy.cpf : findByIDUser.cpf, - nome: updateUserBoy.nome ? updateUserBoy.nome : findByIDUser.nome, - login: { - email: findByIDUser.login.email, - password: findByIDUser.login.password, - isAdmin: findByIDUser.login.isAdmin, - }, - dataNascimento: updateUserBoy.dataNascimento - ? updateUserBoy.dataNascimento - : findByIDUser.dataNascimento, - sexo: updateUserBoy.sexo ? updateUserBoy.sexo : findByIDUser.sexo, - cep: updateUserBoy.cep ? updateUserBoy.cep : findByIDUser.cep, - endereco: updateUserBoy.endereco - ? updateUserBoy.endereco - : findByIDUser.endereco, - imagemPerfil: ImgPerfil, - dataCadastro: findByIDUser.dataCadastro, - }; - const updateUser = await this.userModel - .findByIdAndUpdate(id, newUser) - .setOptions({ overwrite: false, new: true }); - if (!updateUser) { - throw new NotFoundException(); - } - return updateUser; - } - @UseGuards(AuthGuard("jwt")) - async deleteUser(id: string, realizarLogin: RealizarLogin) { - const { email, password } = realizarLogin; - const userTrue = await this.userModel.findById({ _id: id }).exec(); - if (userTrue.login.email !== email) - return { - messgem: "email ou senha invalida", - }; - else { - const comparePassword = await bcrypt.compareSync( - password, - userTrue.login.password - ); - if (comparePassword) { - const searchId = await this.userModel.findById({ _id: id }).exec(); - if (!searchId) throw new NotFoundException(); - else { - if (searchId.imagemPerfil) { - const deleteImage = await this.imageModel.findByIdAndDelete({ - _id: searchId.imagemPerfil, - }); - deleteImage; - } - const searchRecommedation = - await this.recommendationService.listRecommedations(); - for (let i = 0; i < searchRecommedation.length; i++) { - const user = searchRecommedation[i]["user"] as any; - const _id = searchRecommedation[i]["_id"] as any; - if (_id && user._id.toString() == searchId._id) { - await this.recommendationService.DeleteRecommendation( - _id.toString() - ); - break; - } - } - const deleteUser = await this.userModel - .findByIdAndDelete({ _id: id }) - .exec(); - if (!deleteUser) throw new NotFoundException(); - else return deleteUser; - } - } else - return { - messgem: "email ou senha invalida", - }; - } - } - @UseGuards(AuthGuard("jwt")) - async signIn(realizarLogin: RealizarLogin) { - const { email, password } = realizarLogin; - const listUser = this.ListUsers(); - const userTrue = (await listUser).filter(function (item) { - return item.login.email == email; - }); - if (userTrue.length == 0) - return { - messagem: "email não encontrado", - emailExists: false, - emailAndPassword: false, - }; - else { - const comparePassword = await bcrypt.compareSync( - password, - userTrue[0].login.password - ); - if (comparePassword) { - return { - result: userTrue[0], - emailExists: true, - emailAndPassword: true, - }; - } else { - return { - messagem: "email ou senha incorretos", - emailExists: true, - emailAndPassword: false, - }; - } - } - } - @UseGuards(AuthGuard("jwt")) - async updatePassworUser(id: string, UpdatePasswordBody: UpdatePasswordUser) { - const { email, OldPassword, newPassoWord } = UpdatePasswordBody; - const listUser = this.ListUsers(); - - const userTrue = (await listUser).filter(function (item) { - return item.login.email == email; - }); - if (userTrue.length == 0) - return { - messagem: "email ou senha incorretos", - emailExists: false, - }; - else { - const comparePassword = await bcrypt.compareSync( - OldPassword, - userTrue[0].login.password - ); - if (comparePassword) { - return bcrypt - .hash(newPassoWord ? newPassoWord : "2", 10) - .then(async (hash) => { - const encryptedPassowrd = hash; - const findByIDUser = await this.userModel.findById(id); - const newUser = { - cpf: findByIDUser.cpf, - nome: findByIDUser.nome, - login: { - email: UpdatePasswordBody.newEmail - ? UpdatePasswordBody.newEmail - : findByIDUser.login.email, - password: newPassoWord - ? encryptedPassowrd - : findByIDUser.login.password, - isAdmin: UpdatePasswordBody.isAdmin - ? UpdatePasswordBody.isAdmin - : findByIDUser.login.isAdmin, - }, - dataNascimento: findByIDUser.dataNascimento, - sexo: findByIDUser.sexo, - cep: findByIDUser.cep, - endereco: findByIDUser.endereco, - imagemPerfil: findByIDUser.imagemPerfil, - }; - const updateUser = await this.userModel - .findByIdAndUpdate(id, newUser) - .setOptions({ overwrite: false, new: true }); - if (!updateUser) { - throw new NotFoundException(); - } - return updateUser; - }); - } else - return { - messagem: "email ou senha incorretos", - emailAndPassword: false, - }; - } - } -} diff --git a/src/users/users.module.ts b/src/users/users.module.ts deleted file mode 100644 index d574b8f..0000000 --- a/src/users/users.module.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Module } from "@nestjs/common"; -import { MongooseModule } from "@nestjs/mongoose"; -import { imagem, ImagemSchema } from "../image/Schema/image.schema"; -import { Users, UserSchema } from "./Schema/user.schema"; -import { UserService } from "./user.service"; -import { UserController } from "./users.controller"; -import { - Recommendation, - RrecommendationSchema, -} from "src/componentRecommendation /Schema/Rrecommendation.schema"; -import { RecommendationService } from "src/componentRecommendation /recommendation.service"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; -import { ProductServices } from "src/product/product.service"; - -@Module({ - imports: [ - MongooseModule.forFeature([ - { name: Users.name, schema: UserSchema }, - { name: imagem.name, schema: ImagemSchema }, - { name: Recommendation.name, schema: RrecommendationSchema }, - { name: Product.name, schema: ProductSchema }, - { name: Provider.name, schema: ProviderSchema }, - ]), - ], - controllers: [UserController], - providers: [UserService, RecommendationService, ProductServices], -}) -export class UserModule {} diff --git a/src/users/users.spec.ts b/src/users/users.spec.ts deleted file mode 100644 index 97c942a..0000000 --- a/src/users/users.spec.ts +++ /dev/null @@ -1,191 +0,0 @@ -import { Test, TestingModule } from "@nestjs/testing"; -import { UserController } from "./users.controller"; -import { UserService } from "./user.service"; -import { Users, UserSchema } from "./Schema/user.schema"; -import { MongooseModule } from "@nestjs/mongoose"; -import { imagem, ImagemSchema } from "../image/Schema/image.schema"; -import { UpdateUserDTO } from "./dto/updateUser.dto"; -import { - Recommendation, - RrecommendationSchema, -} from "src/componentRecommendation /Schema/Rrecommendation.schema"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; -import { RecommendationService } from "src/componentRecommendation /recommendation.service"; -import { ProductServices } from "src/product/product.service"; -import { RecommendationController } from "src/componentRecommendation /recommendation.controller"; -const urlConfig = require("../globalConfig.json"); -describe("UserController", () => { - let userController: UserController; - - beforeEach(async () => { - const app: TestingModule = await Test.createTestingModule({ - imports: [ - MongooseModule.forRoot(urlConfig.mongoUri), - MongooseModule.forFeature([{ name: Users.name, schema: UserSchema }]), - MongooseModule.forFeature([ - { name: imagem.name, schema: ImagemSchema }, - ]), - MongooseModule.forFeature([ - { name: Recommendation.name, schema: RrecommendationSchema }, - ]), - MongooseModule.forFeature([ - { name: Product.name, schema: ProductSchema }, - ]), - MongooseModule.forFeature([ - { name: Provider.name, schema: ProviderSchema }, - ]), - ], - controllers: [UserController, RecommendationController], - providers: [UserService, RecommendationService, ProductServices], - }).compile(); - - userController = app.get(UserController); - }); - describe("👨‍💻 MethodsUsers:", () => { - const client: Users = { - cpf: "909.068.780-71", - nome: "TDD user.controller", - login: { - email: "test@outlook.com", - password: "test123456", - isAdmin: true, - }, - dataNascimento: "20/20/2000", - sexo: "M", - cep: "20321-000", - endereco: "Rua João do Test", - imagemPerfil: null, - dataCadastro: new Date().toISOString(), - }; - let registeredCustomer; - it("• run the method CreateUser()", async () => { - const CreateUser = await userController.CreateUser(client); - const clientId = CreateUser.user as any; - registeredCustomer = clientId; - expect(CreateUser).toHaveProperty( - "messagem" && "registeredSuccess" && "user" - ); - }); - it("• run the method ListUsers()", async () => { - const ListUsers = await userController.ListUsers(); - expect(ListUsers[0].cpf == client.cpf); - expect(ListUsers[0].nome == client.nome); - expect(ListUsers[0].login.email == client.login.email); - expect(ListUsers[0].login.password == client.login.password); - expect(ListUsers[0].login.isAdmin == client.login.isAdmin); - expect(ListUsers[0].dataNascimento == client.dataNascimento); - expect(ListUsers[0].endereco == client.endereco); - expect(ListUsers[0].imagemPerfil == client.imagemPerfil); - }); - it("• run the method SearchUserById()", async () => { - const _id = registeredCustomer._id; - const searchUserById = await userController.SearchUserById(_id); - expect(searchUserById.cpf == registeredCustomer.cpf); - expect(searchUserById.login.email == registeredCustomer.login.email); - expect( - searchUserById.login.password == registeredCustomer.login.password - ); - expect( - searchUserById.dataNascimento == registeredCustomer.dataNascimento - ); - expect(searchUserById.sexo == registeredCustomer.sexo); - expect(searchUserById.cep == registeredCustomer.cep); - expect(searchUserById.endereco == registeredCustomer.endereco); - expect(searchUserById.imagemPerfil == null); - expect(searchUserById); - }); - it("• run the method UpdateUserById()", async () => { - const _id = registeredCustomer._id; - const newClient: UpdateUserDTO = { - _id: _id, - cpf: "466.773.520-13", - nome: "TDD user.controller", - login: { - email: "test@outlook.com", - password: registeredCustomer.login.password, - isAdmin: true, - }, - dataNascimento: "20/20/2000", - sexo: "M", - cep: "20321-000", - endereco: "Rua João do Test", - imagemPerfil: null, - }; - const UpdateUser = await userController.UpdateUserById(_id, newClient); - expect(UpdateUser).toHaveProperty("messagem"); - expect(UpdateUser).toHaveProperty("user"); - expect(UpdateUser.user.cpf == "466.773.520-13"); - expect(UpdateUser.user.cpf != "909.068.780-71"); - expect(UpdateUser.user.login.email == "test@outlook.com"); - expect( - UpdateUser.user.login.password == registeredCustomer.login.password - ); - expect(UpdateUser.user.dataNascimento == "20/20/2000"); - expect(UpdateUser.user.sexo == "M"); - expect(UpdateUser.user.cep == "20321-000"); - expect(UpdateUser.user.endereco == "Rua João do Test"); - expect(UpdateUser.user.imagemPerfil == null); - }); - it("• run the method SingIn()", async () => { - const login = { - email: "test@outlook.com", - password: "test123456", - }; - const SingIn = await userController.SingIn(login); - expect(SingIn).toHaveProperty( - "result" && "emailExists" && "emailAndPassword" - ); - expect(SingIn.result.cpf == "466.773.520-13"); - expect(SingIn.result.login.email == "test@outlook.com"); - expect(SingIn.result.login.password == registeredCustomer.login.password); - expect(SingIn.result.dataNascimento == "20/20/2000"); - expect(SingIn.result.sexo == "M"); - expect(SingIn.result.cep == "20321-000"); - expect(SingIn.result.endereco == "Rua João do Test"); - expect(SingIn.result.imagemPerfil == null); - }); - it("• run the method UpdatePassowdLogin() - just password change", async () => { - const _id = registeredCustomer._id; - const updatePassword = { - email: "test@outlook.com", - newEmail: undefined, - OldPassword: "test123456", - newPassoWord: "test5678910", - isAdmin: true, - }; - const updatePasswordLogin = await userController.UpdatePassowdLogin( - _id, - updatePassword - ); - expect(updatePasswordLogin).toHaveProperty("messagem" && "user"); - }); - it("• run the method UpdatePassowdLogin() - just email change", async () => { - const _id = registeredCustomer._id; - const updatePassword = { - email: "test@outlook.com", - newEmail: "test@outlook.com", - OldPassword: "test5678910", - newPassoWord: undefined, - isAdmin: true, - }; - const updatePasswordLogin = await userController.UpdatePassowdLogin( - _id, - updatePassword - ); - expect(updatePasswordLogin).toHaveProperty("messagem" && "user"); - }); - it("• run the method DeleteUserById()", async () => { - const _id = registeredCustomer._id; - const login = { - email: "test@outlook.com", - password: "test5678910", - }; - const DeleteUserById = await userController.DeleteUserById(_id, login); - expect(DeleteUserById).toHaveProperty("messagem"); - }); - }); -}); diff --git a/test/app.e2e-spec.ts b/test/app.e2e-spec.ts deleted file mode 100644 index d669149..0000000 --- a/test/app.e2e-spec.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Test, TestingModule } from "@nestjs/testing"; -import { INestApplication } from "@nestjs/common"; -import * as request from "supertest"; -import { AppService } from "src/app.service"; -import { AppController } from "src/app.controller"; -import { MongooseModule } from "@nestjs/mongoose"; -import { AuthModule } from "src/auth/auth.module"; -const urlConfig = require("./globalConfig.json"); -describe("AppController (e2e)", () => { - let app: INestApplication; - - beforeEach(async () => { - const moduleFixture: TestingModule = await Test.createTestingModule({ - imports: [MongooseModule.forRoot(urlConfig.mongoUri), AuthModule], - controllers: [AppController], - providers: [AppService], - }).compile(); - - app = moduleFixture.createNestApplication(); - await app.init(); - }); - - it("/ (GET)", async () => { - const acessToke = ( - await request(app.getHttpServer()) - .post("/auth/login-app") - .send({ - client_id: String(process.env.clientId), - client_secret: String(process.env.clientSecret), - }) - ).body.access_token; - await request(app.getHttpServer()) - .get("/") - .auth(String(acessToke), { - type: "bearer", - }) - .expect(200) - .expect({ menssage: "servidor iniciado" }); - }); -}); diff --git a/test/auth.e2e-spec.ts b/test/auth.e2e-spec.ts index 3ccc268..d7b33c6 100644 --- a/test/auth.e2e-spec.ts +++ b/test/auth.e2e-spec.ts @@ -3,25 +3,19 @@ import { JwtModule } from "@nestjs/jwt"; import { MongooseModule } from "@nestjs/mongoose"; import { PassportModule } from "@nestjs/passport"; import { Test, TestingModule } from "@nestjs/testing"; -import { AuthController } from "src/auth/auth.controller"; -import { AuthService } from "src/auth/auth.service"; -import { jwtConfig } from "src/auth/config/jwt.config"; -import { JwtStrategy } from "src/auth/strategies/jwt.strategy"; -import { - Recommendation, - RrecommendationSchema, -} from "src/componentRecommendation /Schema/Rrecommendation.schema"; -import { RecommendationService } from "src/componentRecommendation /recommendation.service"; -import { ImagemSchema, imagem } from "src/image/Schema/image.schema"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import { ProductServices } from "src/product/product.service"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; -import { UserSchema, Users } from "src/users/Schema/user.schema"; -import { UserService } from "src/users/user.service"; +import { AuthController } from "@auth/auth.controller"; +import { AuthService } from "@auth/auth.service"; +import { jwtConfig } from "@auth/config/jwt.config"; +import { JwtStrategy } from "@auth/strategies/jwt.strategy"; +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { ProductServices } from "@product/product.service"; +import { UserService } from "@users/users.service"; import * as request from "supertest"; +import { UserModule } from "@users/users.module"; +import { ImageModule } from "@image/image.module"; +import { RecommendationModule } from "@componentRecommendation/recommendation.module"; +import { ProductModule } from "@product/product.module"; +import { ProviderModule } from "@providers/providers.module"; const urlConfig = require("./globalConfig.json"); describe("Auth", () => { let app: INestApplication; @@ -29,14 +23,12 @@ describe("Auth", () => { const moduleFixture: TestingModule = await Test.createTestingModule({ imports: [ MongooseModule.forRoot(urlConfig.mongoUri), - MongooseModule.forFeature([]), - MongooseModule.forFeature([ - { name: Users.name, schema: UserSchema }, - { name: imagem.name, schema: ImagemSchema }, - { name: Recommendation.name, schema: RrecommendationSchema }, - { name: Product.name, schema: ProductSchema }, - { name: Provider.name, schema: ProviderSchema }, - ]), + UserModule, + ImageModule, + RecommendationModule, + ProductModule, + ProviderModule, + PassportModule, PassportModule, JwtModule.register(jwtConfig), ], diff --git a/test/image.e2e-spec.ts b/test/image.e2e-spec.ts index e65afc8..e4e7d0e 100644 --- a/test/image.e2e-spec.ts +++ b/test/image.e2e-spec.ts @@ -1,10 +1,10 @@ import { INestApplication } from "@nestjs/common"; import { MongooseModule } from "@nestjs/mongoose"; import { Test, TestingModule } from "@nestjs/testing"; -import { ImagemSchema, imagem } from "src/image/Schema/image.schema"; -import { ImageController } from "src/image/image.controller"; -import { ImageService } from "src/image/image.service"; -import { AuthModule } from "src/auth/auth.module"; +import { ImagemSchema, imagem } from "@image/Schema/image.schema"; +import { ImageController } from "@image/image.controller"; +import { ImageService } from "@image/image.service"; +import { AuthModule } from "@auth/auth.module"; import * as request from "supertest"; const path = require("path"); const urlConfig = require("./globalConfig.json"); @@ -35,7 +35,6 @@ describe("Images", () => { client_secret: String(process.env.clientSecret), }) ).body.access_token; - return await request(app.getHttpServer()) .post("/imagem") .field("file", "img") diff --git a/test/jest-e2e.config.ts b/test/jest-e2e.config.ts new file mode 100644 index 0000000..24718db --- /dev/null +++ b/test/jest-e2e.config.ts @@ -0,0 +1,48 @@ +import { Config } from "jest"; +import { pathsToModuleNameMapper } from "ts-jest"; +import { compilerOptions } from "../tsconfig.json"; + +const config: Config = { + moduleFileExtensions: ["js", "json", "ts"], + rootDir: ".", + testEnvironment: "node", + testRegex: ".e2e-spec.ts$", + transform: { + "^.+\\.(t|j)s$": "ts-jest", + }, + collectCoverage: true, + collectCoverageFrom: ["**/*.(t|j)s"], + coverageDirectory: "./coverage", + coverageReporters: ["lcov", "text-summary"], + coveragePathIgnorePatterns: [ + "/node_modules/", + "/dist/", + "\\.module\\.", + "\\.config\\.", + "\\.schema\\.", + "\\.strategy\\.", + "\\.guard\\.", + ".*schema\\.ts$", + ".*config\\.ts$", + ".*module\\.ts$", + ".*main\\.ts$", + ".*dto\\.ts$", + ".*enum\\.ts$", + ".*strategy\\.ts$", + "/guards/", + "/mock/", + "/mocks/", + "/dto/", + "/interfaces/", + ".eslintrc.js", + "commitlint.config.js", + "/coverage/", + ], + preset: "@shelf/jest-mongodb", + moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { + prefix: "/../", + }), +}; +export default config; + +// preset: "@shelf/jest-mongodb", diff --git a/test/jest-e2e.json b/test/jest-e2e.json deleted file mode 100644 index 31cd1e1..0000000 --- a/test/jest-e2e.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "moduleFileExtensions": [ - "js", - "json", - "ts" - ], - "rootDir": ".", - "testEnvironment": "node", - "testRegex": ".e2e-spec.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - }, - "moduleNameMapper": { - "^src/(.*)": "/../src/$1" - }, - "collectCoverageFrom": [ - "**/*.(t|j)s" - ], - "coverageDirectory": "../../coverage", - "bail": true, - "verbose": true, - "clearMocks": true, - "collectCoverage": false, - "errorOnDeprecated": false, - "globals": { - "ENV_AMB": true, - "mongoPROD": true, - "mongoQA": true, - "ee": true - }, - "notify":false, - "preset": "@shelf/jest-mongodb" -} \ No newline at end of file diff --git a/test/order.e2e-spec.ts b/test/order.e2e-spec.ts index b468ee9..a814da9 100644 --- a/test/order.e2e-spec.ts +++ b/test/order.e2e-spec.ts @@ -1,30 +1,31 @@ import { INestApplication } from "@nestjs/common"; import { MongooseModule } from "@nestjs/mongoose"; import { Test, TestingModule } from "@nestjs/testing"; -import { AuthModule } from "src/auth/auth.module"; +import { AuthModule } from "@auth/auth.module"; import { Recommendation, - RrecommendationSchema, -} from "src/componentRecommendation /Schema/Rrecommendation.schema"; -import { RecommendationController } from "src/componentRecommendation /recommendation.controller"; -import { RecommendationService } from "src/componentRecommendation /recommendation.service"; -import { ImagemSchema, imagem } from "src/image/Schema/image.schema"; -import { ImageController } from "src/image/image.controller"; -import { ImageService } from "src/image/image.service"; -import { Order, OrderSchema } from "src/order/Schema/order.schema"; -import { OrderController } from "src/order/order.controller"; -import { OrderService } from "src/order/order.service"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import ProductController from "src/product/product.controller"; -import { ProductServices } from "src/product/product.service"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; -import { UserSchema, Users } from "src/users/Schema/user.schema"; -import { UserService } from "src/users/user.service"; -import { UserController } from "src/users/users.controller"; + RecommendationSchema, +} from "@componentRecommendation/Schema/Rrecommendation.schema"; +import { RecommendationController } from "@componentRecommendation/recommendation.controller"; +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { ImagemSchema, imagem } from "@image/Schema/image.schema"; +import { ImageController } from "@image/image.controller"; +import { ImageService } from "@image/image.service"; +import { Order, OrderSchema } from "@order/Schema/order.schema"; +import { OrderController } from "@order/order.controller"; +import { OrderService } from "@order/order.service"; +import { Product, ProductSchema } from "@product/Schema/product.schema"; +import ProductController from "@product/product.controller"; +import { ProductServices } from "@product/product.service"; +import { Provider, ProviderSchema } from "@providers/Schema/providers.schema"; +import { UserSchema, Users } from "@users/Schema/user.schema"; +import { UserService } from "@users/users.service"; +import { UserController } from "@users/users.controller"; import * as request from "supertest"; +import { UserModule } from "@users/users.module"; +import { ProductModule } from "@product/product.module"; +import { ImageModule } from "@image/image.module"; +import { ProviderModule } from "@providers/providers.module"; const urlConfig = require("./globalConfig.json"); const path = require("path"); describe("Product", () => { @@ -33,31 +34,15 @@ describe("Product", () => { const moduleFixture: TestingModule = await Test.createTestingModule({ imports: [ MongooseModule.forRoot(urlConfig.mongoUri), - MongooseModule.forFeature([ - { name: Order.name, schema: OrderSchema }, - { name: Users.name, schema: UserSchema }, - { name: Product.name, schema: ProductSchema }, - { name: imagem.name, schema: ImagemSchema }, - { name: Provider.name, schema: ProviderSchema }, - { name: Recommendation.name, schema: RrecommendationSchema }, - ]), + MongooseModule.forFeature([{ name: Order.name, schema: OrderSchema }]), AuthModule, + UserModule, + ProductModule, + ImageModule, + ProviderModule, ], - controllers: [ - OrderController, - UserController, - ProductController, - ImageController, - ], - providers: [ - OrderService, - ProductServices, - RecommendationController, - UserService, - ProductServices, - ImageService, - RecommendationService, - ], + controllers: [OrderController], + providers: [OrderService, ProductServices], }).compile(); app = moduleFixture.createNestApplication(); await app.init(); diff --git a/test/product.e2e-spec.ts b/test/product.e2e-spec.ts index 00df805..b9417ef 100644 --- a/test/product.e2e-spec.ts +++ b/test/product.e2e-spec.ts @@ -2,15 +2,14 @@ import { INestApplication } from "@nestjs/common"; import { Test, TestingModule } from "@nestjs/testing"; import * as request from "supertest"; import { MongooseModule } from "@nestjs/mongoose"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import { imagem, ImagemSchema } from "src/image/Schema/image.schema"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; -import ProductController from "src/product/product.controller"; -import { ProductServices } from "src/product/product.service"; -import { AuthModule } from "src/auth/auth.module"; +import { Product, ProductSchema } from "@product/Schema/product.schema"; +import { imagem, ImagemSchema } from "@image/Schema/image.schema"; +import { Provider, ProviderSchema } from "@providers/Schema/providers.schema"; +import ProductController from "@product/product.controller"; +import { ProductServices } from "@product/product.service"; +import { AuthModule } from "@auth/auth.module"; +import { ImageModule } from "@image/image.module"; +import { ProviderModule } from "@providers/providers.module"; const urlConfig = require("./globalConfig.json"); describe("Product", () => { let app: INestApplication; @@ -20,9 +19,9 @@ describe("Product", () => { MongooseModule.forRoot(urlConfig.mongoUri), MongooseModule.forFeature([ { name: Product.name, schema: ProductSchema }, - { name: imagem.name, schema: ImagemSchema }, - { name: Provider.name, schema: ProviderSchema }, ]), + ImageModule, + ProviderModule, AuthModule, ], controllers: [ProductController], diff --git a/test/providers.e2e-spec.ts b/test/providers.e2e-spec.ts index 53547ee..1bce1c8 100644 --- a/test/providers.e2e-spec.ts +++ b/test/providers.e2e-spec.ts @@ -2,13 +2,10 @@ import { INestApplication } from "@nestjs/common"; import { Test, TestingModule } from "@nestjs/testing"; import * as request from "supertest"; import { MongooseModule } from "@nestjs/mongoose"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; -import { ProviderController } from "src/providers/providers.controller"; -import { ProviderService } from "src/providers/providers.service"; -import { AuthModule } from "src/auth/auth.module"; +import { Provider, ProviderSchema } from "@providers/Schema/providers.schema"; +import { ProviderController } from "@providers/providers.controller"; +import { ProviderService } from "@providers/providers.service"; +import { AuthModule } from "@auth/auth.module"; const urlConfig = require("./globalConfig.json"); describe("Providers", () => { let app: INestApplication; diff --git a/test/recommendation.e2e-spec.ts b/test/recommendation.e2e-spec.ts index b4a605a..1e6e3ba 100644 --- a/test/recommendation.e2e-spec.ts +++ b/test/recommendation.e2e-spec.ts @@ -3,22 +3,19 @@ import { MongooseModule } from "@nestjs/mongoose"; import { Test, TestingModule } from "@nestjs/testing"; import { Recommendation, - RrecommendationSchema, -} from "src/componentRecommendation /Schema/Rrecommendation.schema"; + RecommendationSchema, +} from "@componentRecommendation/Schema/Rrecommendation.schema"; import * as request from "supertest"; -import { RecommendationController } from "src/componentRecommendation /recommendation.controller"; -import { RecommendationService } from "src/componentRecommendation /recommendation.service"; -import { ImagemSchema, imagem } from "src/image/Schema/image.schema"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import { ProductServices } from "src/product/product.service"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; -import { UserSchema, Users } from "src/users/Schema/user.schema"; -import { UserService } from "src/users/user.service"; -import { UserController } from "src/users/users.controller"; -import { AuthModule } from "src/auth/auth.module"; +import { RecommendationController } from "@componentRecommendation/recommendation.controller"; +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { ProductServices } from "@product/product.service"; +import { UserService } from "@users/users.service"; +import { UserController } from "@users/users.controller"; +import { AuthModule } from "@auth/auth.module"; +import { UserModule } from "@users/users.module"; +import { ProductModule } from "@product/product.module"; +import { ImageModule } from "@image/image.module"; +import { ProviderModule } from "@providers/providers.module"; const urlConfig = require("./globalConfig.json"); describe("Recommendation", () => { let app: INestApplication; @@ -27,13 +24,13 @@ describe("Recommendation", () => { imports: [ MongooseModule.forRoot(urlConfig.mongoUri), MongooseModule.forFeature([ - { name: Recommendation.name, schema: RrecommendationSchema }, - { name: Product.name, schema: ProductSchema }, - { name: imagem.name, schema: ImagemSchema }, - { name: Provider.name, schema: ProviderSchema }, - { name: Users.name, schema: UserSchema }, + { name: Recommendation.name, schema: RecommendationSchema }, ]), AuthModule, + UserModule, + ProductModule, + ImageModule, + ProviderModule, ], controllers: [RecommendationController, UserController], providers: [RecommendationService, ProductServices, UserService], diff --git a/test/user.e2e-spec.ts b/test/user.e2e-spec.ts index 7f3bfd5..f0ea21d 100644 --- a/test/user.e2e-spec.ts +++ b/test/user.e2e-spec.ts @@ -2,23 +2,18 @@ import { Test, TestingModule } from "@nestjs/testing"; import { INestApplication } from "@nestjs/common"; import * as request from "supertest"; import { MongooseModule } from "@nestjs/mongoose"; -import { UserSchema, Users } from "src/users/Schema/user.schema"; -import { ImagemSchema, imagem } from "src/image/Schema/image.schema"; -import { UserController } from "src/users/users.controller"; -import { UserService } from "src/users/user.service"; -import { - Recommendation, - RrecommendationSchema, -} from "src/componentRecommendation /Schema/Rrecommendation.schema"; -import { Product, ProductSchema } from "src/product/Schema/product.schema"; -import { - Provider, - ProviderSchema, -} from "src/providers/Schema/providers.schema"; -import { RecommendationService } from "src/componentRecommendation /recommendation.service"; -import { ProductServices } from "src/product/product.service"; -import { RecommendationController } from "src/componentRecommendation /recommendation.controller"; -import { AuthModule } from "src/auth/auth.module"; +import { UserSchema, Users } from "@users/Schema/user.schema"; +import { UserController } from "@users/users.controller"; +import { UserService } from "@users/users.service"; +import { RecommendationService } from "@componentRecommendation/recommendation.service"; +import { ProductServices } from "@product/product.service"; +import { RecommendationController } from "@componentRecommendation/recommendation.controller"; +import { AuthModule } from "@auth/auth.module"; +import { RecommendationModule } from "@componentRecommendation/recommendation.module"; +import { ProductModule } from "@product/product.module"; +import { ProviderModule } from "@providers/providers.module"; +import { ImageModule } from "@image/image.module"; +import { UserModule } from "@users/users.module"; const urlConfig = require("./globalConfig.json"); describe("Users", () => { let app: INestApplication; @@ -26,13 +21,12 @@ describe("Users", () => { const moduleFixture: TestingModule = await Test.createTestingModule({ imports: [ MongooseModule.forRoot(urlConfig.mongoUri), - MongooseModule.forFeature([ - { name: Users.name, schema: UserSchema }, - { name: imagem.name, schema: ImagemSchema }, - { name: Recommendation.name, schema: RrecommendationSchema }, - { name: Product.name, schema: ProductSchema }, - { name: Provider.name, schema: ProviderSchema }, - ]), + MongooseModule.forFeature([{ name: Users.name, schema: UserSchema }]), + UserModule, + RecommendationModule, + ProductModule, + ProviderModule, + ImageModule, AuthModule, ], controllers: [UserController, RecommendationController], @@ -40,6 +34,8 @@ describe("Users", () => { }).compile(); app = moduleFixture.createNestApplication(); await app.init(); + process.env.clientId = "test-client-id"; + process.env.clientSecret = "test-client-secret"; }); let ID; const client = { @@ -121,6 +117,7 @@ describe("Users", () => { client_secret: String(process.env.clientSecret), }) ).body.access_token; + console.log(acessToke); const newClient = { cpf: "466.773.520-13", // nome: "TDD user.controller", diff --git a/tsconfig.json b/tsconfig.json index 4cbf7c0..a51e5cb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "es2017", + "target": "ES2021", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", @@ -16,7 +16,43 @@ "noImplicitAny": false, "strictBindCallApply": false, "forceConsistentCasingInFileNames": false, - "allowJs": true, - "noFallthroughCasesInSwitch": false + "noFallthroughCasesInSwitch": false, + "resolveJsonModule": true, + "types": ["dotenv", "jest"], + "paths": { + "@auth/*": [ + "./src/modules/auth/*" + ], + "@componentRecommendation/*": [ + "./src/modules/componentRecommendation/*" + ], + "@image/*": [ + "./src/modules/image/*" + ], + "@order/*": [ + "./src/modules/order/*" + ], + "@product/*": [ + "./src/modules/product/*" + ], + "@providers/*": [ + "./src/modules/providers/*" + ], + "@queues/*": [ + "./src/modules/queues/*" + ], + "@users/*": [ + "./src/modules/users/*" + ], + "@configs/*":[ + "./src/configs/*" + ], + "@mocks/*":[ + "./src/mocks/*" + ], + "@enums/*":[ + "./src/enums/*" + ] + } } -} +} \ No newline at end of file