From 2399a31aac4466f1547ec50f04bee07658f989f8 Mon Sep 17 00:00:00 2001 From: Anton Voylenko Date: Thu, 28 Nov 2024 21:07:25 +0200 Subject: [PATCH] project push --- .dockerignore | 30 + .env.example | 23 + .eslintrc.js | 16 + .github/workflows/pull_request.yml | 25 + .github/workflows/push.yml | 50 + .gitignore | 20 + CONTRIBUTING.md | 57 + Dockerfile | 33 + LICENSE.md | 19 + README.md | 178 + assets/basic_start.gif | Bin 0 -> 604808 bytes docker-compose.yml | 26 + package-lock.json | 8282 ++++++++++++++++++++++++ package.json | 57 + server.js | 16 + src/app.js | 17 + src/config.js | 37 + src/controllers/chatController.js | 237 + src/controllers/clientController.js | 1314 ++++ src/controllers/contactController.js | 218 + src/controllers/groupChatController.js | 355 + src/controllers/healthController.js | 55 + src/controllers/messageController.js | 376 ++ src/controllers/sessionController.js | 374 ++ src/middleware.js | 188 + src/routes.js | 191 + src/sessions.js | 474 ++ src/utils.js | 46 + swagger.js | 80 + swagger.json | 7643 ++++++++++++++++++++++ tests/api.test.js | 143 + 31 files changed, 20580 insertions(+) create mode 100644 .dockerignore create mode 100644 .env.example create mode 100644 .eslintrc.js create mode 100644 .github/workflows/pull_request.yml create mode 100644 .github/workflows/push.yml create mode 100644 .gitignore create mode 100644 CONTRIBUTING.md create mode 100644 Dockerfile create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 assets/basic_start.gif create mode 100644 docker-compose.yml create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 server.js create mode 100644 src/app.js create mode 100644 src/config.js create mode 100644 src/controllers/chatController.js create mode 100644 src/controllers/clientController.js create mode 100644 src/controllers/contactController.js create mode 100644 src/controllers/groupChatController.js create mode 100644 src/controllers/healthController.js create mode 100644 src/controllers/messageController.js create mode 100644 src/controllers/sessionController.js create mode 100644 src/middleware.js create mode 100644 src/routes.js create mode 100644 src/sessions.js create mode 100644 src/utils.js create mode 100644 swagger.js create mode 100644 swagger.json create mode 100644 tests/api.test.js diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4f2b04a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,30 @@ +# Ignore node_modules +node_modules + +# Ignore dotenv files +.env +.env.example + +# Ignore logs +logs + +# Ignore test files +tests + +# Ignore session files +sessions +sessions_test + +# Ignore git related files +.git +.gitignore + +# Ignore other unnecessary files +README.md +CONTRIBUTING.md +LICENSE.md +Dockerfile +docker-compose.yml +swagger.yml +.github +assets \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..8916869 --- /dev/null +++ b/.env.example @@ -0,0 +1,23 @@ +## Application ## +PORT=3000 # OPTIONAL, DEFAULT 3000 +API_KEY=your_global_api_key_here # OPTIONAL, DEFAULT EMPTY +BASE_WEBHOOK_URL=http://localhost:3000/localCallbackExample # MANDATORY +ENABLE_LOCAL_CALLBACK_EXAMPLE=TRUE # OPTIONAL, DISABLE FOR PRODUCTION +RATE_LIMIT_MAX=1000 # OPTIONAL, THE MAXIUM NUMBER OF CONNECTIONS TO ALLOW PER TIME FRAME +RATE_LIMIT_WINDOW_MS=1000 # OPTIONAL, TIME FRAME FOR WHICH REQUESTS ARE CHECKED IN MS + +## Client ## +MAX_ATTACHMENT_SIZE=10000000 # IF REACHED, MEDIA ATTACHMENT BODY WILL BE NULL +SET_MESSAGES_AS_SEEN=TRUE # WILL MARK THE MESSAGES AS READ AUTOMATICALLY +# ALL CALLBACKS: auth_failure|authenticated|call|change_state|disconnected|group_join|group_leave|group_update|loading_screen|media_uploaded|message|message_ack|message_create|message_reaction|message_revoke_everyone|qr|ready|contact_changed|unread_count|message_edit|message_ciphertext +DISABLED_CALLBACKS=message_ack|message_reaction|unread_count|message_edit|message_ciphertext # PREVENT SENDING CERTAIN TYPES OF CALLBACKS BACK TO THE WEBHOOK +WEB_VERSION='2.2328.5' # OPTIONAL, THE VERSION OF WHATSAPP WEB TO USE +WEB_VERSION_CACHE_TYPE=none # OPTIONAL, DETERMINTES WHERE TO GET THE WHATSAPP WEB VERSION(local, remote or none), DEFAULT 'none' +RECOVER_SESSIONS=TRUE # OPTIONAL, SHOULD WE RECOVER THE SESSION IN CASE OF PAGE FAILURES +CHROME_BIN= # OPTIONAL, PATH TO CHROME BINARY +HEADLESS=TRUE # OPTIONAL, RUN CHROME IN HEADLESS MODE + +## Session File Storage ## +SESSIONS_PATH=./sessions # OPTIONAL + +ENABLE_SWAGGER_ENDPOINT=TRUE # OPTIONAL \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..a2de239 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,16 @@ +module.exports = { + env: { + browser: true, + es2021: true, + jest: true + }, + extends: 'standard', + overrides: [ + ], + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module' + }, + rules: { + } +} diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 0000000..e39fb07 --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,25 @@ +name: CI/CD Pipeline for Pull Requests to Master + +'on': + pull_request: + branches: + - master +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: + - 18.x + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: 'Use Node.js ${{ matrix.node-version }}' + uses: actions/setup-node@v4 + with: + node-version: '${{ matrix.node-version }}' + - name: Install dependencies + run: npm ci + - name: Run tests + run: npm test + timeout-minutes: 1 \ No newline at end of file diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml new file mode 100644 index 0000000..d04eae4 --- /dev/null +++ b/.github/workflows/push.yml @@ -0,0 +1,50 @@ +name: CI/CD Pipeline for Docker Tag Push + +'on': + push: + tags: + - 'v*' + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: + - 18.x + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: 'Use Node.js ${{ matrix.node-version }}' + uses: actions/setup-node@v4 + with: + node-version: '${{ matrix.node-version }}' + - name: Install dependencies + run: npm ci + - name: Run tests + run: npm test + timeout-minutes: 1 + + docker: + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: '${{ secrets.DOCKER_HUB_USERNAME }}' + password: '${{ secrets.DOCKER_HUB_TOKEN }}' + - name: Build and push with dynamic tag + uses: docker/build-push-action@v5 + with: + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + tags: | + avoylenko/wwebjs-api:${{ github.ref_name }} + avoylenko/wwebjs-api:latest \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e054b2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# Ignore node_modules +node_modules + +# Ignore dotenv files +.env + +# Ignore sessions +sessions +sessions_test +.wwebjs_cache + +# Ignore logs +logs + +# Ignore test coverage reports +coverage + +# Ignore other unnecessary files +.DS_Store +.vscode \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7fdaafd --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,57 @@ +# Contributing to WWebJS REST API Wrapper + +Welcome to WWebJS API Wrapper! We appreciate your interest in contributing to this project. Please follow the guidelines below to contribute effectively. + +## Getting Started + +1. Fork the repository. +2. Clone your forked repository to your local machine. +3. Install the necessary dependencies by running `npm install`. +4. Create a new branch for your contribution. + +## Code Style + +- Follow the existing code style and conventions in the project. +- Use meaningful variable and function names. +- Add comments to your code, especially for complex or tricky parts. + +## Pull Requests + +- Create a pull request from your branch to the `master` branch of this repository. +- Provide a clear and descriptive title for your pull request. +- Include a detailed description of the changes you made in the pull request. +- Reference any related issues in your pull request description using the `#` symbol followed by the issue number. + +## Testing + +- Write appropriate unit tests for your code. +- Make sure all existing tests pass. +- Provide instructions for testing your changes, if necessary. + +## Documentation + +- Update the README.md file with any relevant information about your contribution, including installation instructions, usage examples, and API documentation. + +## Code Block Example + +When providing code examples or error messages, please use code blocks. You can create a code block by wrapping your code or message with triple backticks (\```) on separate lines, like this: + +\``` +// Example code block +const hello = "Hello, world!"; +console.log(hello); +\``` + +This will render as: + +``` +// Example code block +const hello = "Hello, world!"; +console.log(hello); +``` + +## Contact Us + +If you have any questions or need further assistance, feel free to contact us by opening an issue or reaching out to us through email or chat. + +Thank you for your contribution! \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..58fc708 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +# Use the official Node.js Alpine image as the base image +FROM node:18-alpine + +# Set the working directory +WORKDIR /usr/src/app + +# Install Chromium +ENV CHROME_BIN="/usr/bin/chromium-browser" \ + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true" \ + NODE_ENV="production" +RUN set -x \ + && apk update \ + && apk upgrade \ + && apk add --no-cache \ + udev \ + ttf-freefont \ + chromium \ + ffmpeg + +# Copy package.json and package-lock.json to the working directory +COPY package*.json ./ + +# Install the dependencies +RUN npm ci --only=production --ignore-scripts + +# Copy the rest of the source code to the working directory +COPY . . + +# Expose the port the API will run on +EXPOSE 3000 + +# Start the API +CMD ["npm", "start"] \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..7d12262 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,19 @@ +# MIT License + +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + +The WhatsApp Web.js REST API Wrapper is licensed under the MIT License, which is a permissive open source license that allows you to use, modify, and distribute the software for both commercial and non-commercial purposes. Please see the full license text below. + +## License + +MIT License + +``` +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..4524500 --- /dev/null +++ b/README.md @@ -0,0 +1,178 @@ +# WWebJS REST API + +REST API wrapper for the [whatsapp-web.js](https://github.com/pedroslopez/whatsapp-web.js) library, providing an easy-to-use interface to interact with the WhatsApp Web platform. +It is designed to be used as a docker container, scalable, secure, and easy to integrate with other non-NodeJS projects. + +This project is a fork of [whatsapp-api](https://github.com/chrishubert/whatsapp-api). As the project was abandoned by the original author, all future improvements will be in this repo. + +The project is a work in progress: star it, create issues, features or pull requests ❣️ + +**NOTE**: I can't guarantee you will not be blocked by using this method, although it has worked for me. WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered totally safe. + +## Table of Contents + +[1. Quick Start with Docker](#quick-start-with-docker) + +[2. Features](#features) + +[3. Run Locally](#run-locally) + +[4. Testing](#testing) + +[5. Documentation](#documentation) + +[6. Deploy to Production](#deploy-to-production) + +[7. Contributing](#contributing) + +[8. License](#license) + +[9. Star History](#star-history) + +## Quick Start with Docker + +[![dockeri.co](https://dockerico.blankenship.io/image/avoylenko/wwebjs-api)](https://hub.docker.com/r/avoylenko/wwebjs-api) + +1. Clone the repository: + +```bash +git clone https://github.com/avoylenko/wwebjs-api.git +cd wwebjs-api +``` + +3. Run the Docker Compose: + +```bash +docker-compose pull && docker-compose up +``` +4. Visit http://localhost:3000/session/start/ABCD + +5. Scan the QR on your console using WhatsApp mobile app -> Linked Device -> Link a Device (it may take time to setup the session) + +6. Visit http://localhost:3000/client/getContacts/ABCD + +7. EXTRA: Look at all the callbacks data in `./session/message_log.txt` + +![Quick Start](./assets/basic_start.gif) + +## Features + +1. API and Callbacks + +| Actions | Status | Sessions | Status | Callbacks | Status | +| ----------------------------| ------| ----------------------------------------| ------| ----------------------------------------------| ------| +| Send Image Message | ✅ | Initiate session | ✅ | Callback QR code | ✅ | +| Send Video Message | ✅ | Terminate session | ✅ | Callback new message | ✅ | +| Send Audio Message | ✅ | Terminate inactive sessions | ✅ | Callback status change | ✅ | +| Send Document Message | ✅ | Terminate all sessions | ✅ | Callback message media attachment | ✅ | +| Send File URL | ✅ | Healthcheck | ✅ | | | +| Send Button Message | ✅ | Local test callback | | | | +| Send Contact Message | ✅ | | | | | +| Send List Message | ✅ | | | | | +| Set Status | ✅ | | | | | +| Send Button With Media | ✅ | | | | | +| Is On Whatsapp? | ✅ | | | | | +| Download Profile Pic | ✅ | | | | | +| User Status | ✅ | | | | | +| Block/Unblock User | ✅ | | | | | +| Update Profile Picture | ✅ | | | | | +| Create Group | ✅ | | | | | +| Leave Group | ✅ | | | | | +| All Groups | ✅ | | | | | +| Invite User | ✅ | | | | | +| Make Admin | ✅ | | | | | +| Demote Admin | ✅ | | | | | +| Group Invite Code | ✅ | | | | | +| Update Group Participants | ✅ | | | | | +| Update Group Setting | ✅ | | | | | +| Update Group Subject | ✅ | | | | | +| Update Group Description | ✅ | | | | | + +3. Handle multiple client sessions (session data saved locally), identified by unique id + +4. All endpoints may be secured by a global API key + +5. On server start, all existing sessions are restored + +6. Set messages automatically as read + +7. Disable any of the callbacks + +## Run Locally + +1. Clone the repository: + +```bash +git clone https://github.com/avoylenko/wwebjs-api.git +cd wwebjs-api +``` + +2. Install the dependencies: + +```bash +npm install +``` + +3. Copy the `.env.example` file to `.env` and update the required environment variables: + +```bash +cp .env.example .env +``` + +4. Run the application: + +```bash +npm run start +``` + +5. Access the API at `http://localhost:3000` + +## Testing + +Run the test suite with the following command: + +```bash +npm run test +``` + +## Documentation + +API documentation can be found in the [`swagger.json`](https://raw.githubusercontent.com/avoylenko/wwebjs-api/master/swagger.json) file. See this file directly into [Swagger Editor](https://editor.swagger.io/?url=https://raw.githubusercontent.com/avoylenko/wwebjs-api/master/swagger.json) or any other OpenAPI-compatible tool to view and interact with the API documentation. + +This documentation is straightforward if you are familiar with whatsapp-web.js library (https://docs.wwebjs.dev/) +If you are still confused - open an issue and I'll improve it. + +Also, there is an option to run the documentation endpoint locally by setting the `ENABLE_SWAGGER_ENDPOINT` environment variable. Restart the service and go to `/api-docs` endpoint to see it. + +By default, all callback events are delivered to the webhook defined with the `BASE_WEBHOOK_URL` environment variable. +This can be overridden by setting the `*_WEBHOOK_URL` environment variable, where `*` is your sessionId. +For example, if you have the sessionId defined as `DEMO`, the environment variable must be `DEMO_WEBHOOK_URL`. + +By setting the `DISABLED_CALLBACKS` environment variable you can specify what events you are **not** willing to receive on your webhook. + +### Scanning QR code + +In order to validate a new WhatsApp Web instance you need to scan the QR code using your mobile phone. Official documentation can be found at (https://faq.whatsapp.com/1079327266110265/?cms_platform=android) page. The service itself delivers the QR code content as a webhook event or you can use the REST endpoints (`/session/qr/:sessionId` or `/session/qr/:sessionId/image` to get the QR code as a png image). + +## Deploy to Production + +- Load the docker image in docker-compose, or your Kubernetes environment +- Disable the `ENABLE_LOCAL_CALLBACK_EXAMPLE` environment variable +- Set the `API_KEY` environment variable to protect the REST endpoints +- Run periodically the `/api/terminateInactiveSessions` endpoint to prevent useless sessions to take up space and resources(only in case you are not in control of the sessions) + +## Contributing + +Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us. + +## Disclaimer + +This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with WhatsApp or any of its subsidiaries or its affiliates. The official WhatsApp website can be found at https://whatsapp.com. "WhatsApp" as well as related names, marks, emblems and images are registered trademarks of their respective owners. + +## License + +This project is licensed under the MIT License - see the [LICENSE.md](./LICENSE.md) file for details. + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=avoylenko/wwebjs-api&type=Date)](https://star-history.com/#avoylenko/wwebjs-api&Date) diff --git a/assets/basic_start.gif b/assets/basic_start.gif new file mode 100644 index 0000000000000000000000000000000000000000..66939337332c85eab18f86fe47429ce7180d6830 GIT binary patch literal 604808 zcmeFaWmH@Xnl8N2-~oaK4~2Vhr+}iUDl|yY5F@xHAp{G-f;$9vcMtCF5FiN_Ah=ry z!Rsy{r{|oW?&+SMp1I$huWRvxwTfcb-mKcs^FH#T0Edc*K5j%iL-~mY0I)oOF|VQ` z4*&p0MgU+07#X#I%P%A&004j%07H(C=Z%je&(4scp?Q{;d6t%1Fql?os1^(cR8$}> zEdiKi9wVa|BclWqrbS6fN=iyhOiaMU#K6wZBqk;xD=R@mL&?BELr+Hyh00KnlkoDg z2nyciWlPP+mDh3HUt;2!vh9Mq18RS`LAL$jK?|>MGp3htSuD--l_KLzG

hcGt22Zx*L={$ej%Z| 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

4j6*qwq*Ki#$ARE7N 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

nswk9c!R~bO7EsQp;&V!j< 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" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", + "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "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.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "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 + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "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 + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pedroslopez/moduleraid": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@pedroslopez/moduleraid/-/moduleraid-5.0.2.tgz", + "integrity": "sha512-wtnBAETBVYZ9GvcbgdswRVSLkFkYAGv1KzwBBTeRXvGT9sb9cPllOgFFWXCn9PyARQ0H+Ijz6mmoRrGateUDxQ==", + "license": "MIT" + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@scarf/scarf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz", + "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==", + "hasInstallScript": true, + "license": "Apache-2.0" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "license": "MIT", + "optional": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "license": "MIT", + "optional": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT", + "optional": true + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT", + "optional": true + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz", + "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "optional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "license": "MIT", + "optional": true, + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "license": "MIT", + "optional": true + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "optional": true, + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001684", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", + "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "license": "MIT/X11", + "optional": true, + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "license": "MIT", + "optional": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT", + "optional": true + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "optional": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "license": "MIT", + "optional": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "license": "MIT", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1045489", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1045489.tgz", + "integrity": "sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ==", + "license": "BSD-3-Clause" + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT", + "optional": true + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT", + "optional": true + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.66", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.66.tgz", + "integrity": "sha512-pI2QF6+i+zjPbqRzJwkMvtvkdI7MjVbSh2g8dlMguDJIXEPw+kwasS1Jl+YGPEBfGVxsVgGUratAKymPdPo2vQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", + "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-n": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", + "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-rate-limit": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.4.1.tgz", + "integrity": "sha512-KS3efpnpIDVIXopMc65EMbWbUht7qvTCdtCR2dD/IZmi9MIkopYESwyRqLgv8Pfu589+KqDqOdzJWW7AHoACeg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": "4 || 5 || ^5.0.0-beta.1" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" + }, + "node_modules/fluent-ffmpeg": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", + "integrity": "sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q==", + "license": "MIT", + "dependencies": { + "async": ">=0.2.9", + "which": "^1.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fluent-ffmpeg/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz", + "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "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 + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "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 + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "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.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "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 + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "license": "MIT", + "optional": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT", + "optional": true + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT", + "optional": true + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "license": "ISC", + "optional": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "license": "MIT", + "optional": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "license": "MIT", + "optional": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "license": "MIT", + "optional": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT", + "optional": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "license": "MIT", + "optional": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "devOptional": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-webpmux": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/node-webpmux/-/node-webpmux-3.1.7.tgz", + "integrity": "sha512-ySkL4lBCto86OyQ0blAGzylWSECcn5I0lM3bYEhe75T8Zxt/BFUMHa8ktUguR7zwXNdS/Hms31VfSsYKN1383g==", + "license": "ISC" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "license": "MIT" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT", + "optional": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-18.2.1.tgz", + "integrity": "sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ==", + "deprecated": "< 22.8.2 is no longer supported", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "puppeteer-core": "18.2.1" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "node_modules/puppeteer-core": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-18.2.1.tgz", + "integrity": "sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==", + "license": "Apache-2.0", + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1045489", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.9.0" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "node_modules/puppeteer-core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/puppeteer-core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qr-image": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", + "integrity": "sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw==", + "license": "MIT" + }, + "node_modules/qrcode-terminal": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz", + "integrity": "sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "which-builtin-type": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT", + "optional": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/superagent": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", + "dev": true, + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/superagent/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/supertest": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz", + "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "methods": "^1.1.2", + "superagent": "^8.1.2" + }, + "engines": { + "node": ">=6.4.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swagger-autogen": { + "version": "2.23.7", + "resolved": "https://registry.npmjs.org/swagger-autogen/-/swagger-autogen-2.23.7.tgz", + "integrity": "sha512-vr7uRmuV0DCxWc0wokLJAwX3GwQFJ0jwN+AWk0hKxre2EZwusnkGSGdVFd82u7fQLgwSTnbWkxUL7HXuz5LTZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^7.4.1", + "deepmerge": "^4.2.2", + "glob": "^7.1.7", + "json5": "^2.2.3" + } + }, + "node_modules/swagger-autogen/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/swagger-ui-dist": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.18.2.tgz", + "integrity": "sha512-J+y4mCw/zXh1FOj5wGJvnAajq6XgHOyywsa9yITmwxIlJbMqITq3gYRZHaeqLVH/eV/HOPphE6NjF+nbSNC5Zw==", + "license": "Apache-2.0", + "dependencies": { + "@scarf/scarf": "=1.4.0" + } + }, + "node_modules/swagger-ui-express": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.1.tgz", + "integrity": "sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA==", + "license": "MIT", + "dependencies": { + "swagger-ui-dist": ">=5.0.0" + }, + "engines": { + "node": ">= v0.10.32" + }, + "peerDependencies": { + "express": ">=4.0.0 || >=5.0.0-beta" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "license": "MIT/X11", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz", + "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "license": "MIT", + "optional": true, + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT", + "optional": true + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT", + "optional": true + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatsapp-web.js": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.26.0.tgz", + "integrity": "sha512-JUbpwVmJE427KgYIXju+ycHq65SNnXkAsoWwnEUpyI4E0O45S5aG1stRML7aGJxVb6aycTR+hLrTlEiygsNJug==", + "license": "Apache-2.0", + "dependencies": { + "@pedroslopez/moduleraid": "^5.0.2", + "fluent-ffmpeg": "2.1.2", + "mime": "^3.0.0", + "node-fetch": "^2.6.9", + "node-webpmux": "3.1.7", + "puppeteer": "^18.2.1" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "archiver": "^5.3.1", + "fs-extra": "^10.1.0", + "unzipper": "^0.10.11" + } + }, + "node_modules/whatsapp-web.js/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz", + "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz", + "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "license": "MIT", + "optional": true, + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..c1083dc --- /dev/null +++ b/package.json @@ -0,0 +1,57 @@ +{ + "name": "wwebjs-api", + "version": "1.0.0", + "description": "REST API wrapper for whatsapp-web.js", + "main": "server.js", + "scripts": { + "start": "node server.js", + "test": "jest --runInBand", + "swagger": "node swagger.js" + }, + "dependencies": { + "axios": "^1.7.8", + "dotenv": "^16.4.5", + "express": "^4.21.1", + "express-rate-limit": "^7.4.1", + "qr-image": "^3.2.0", + "qrcode-terminal": "^0.12.0", + "swagger-ui-express": "^5.0.1", + "whatsapp-web.js": "^1.26.0" + }, + "devDependencies": { + "eslint": "^8.38.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.7.0", + "eslint-plugin-promise": "^6.1.1", + "jest": "^29.5.0", + "supertest": "^6.3.3", + "swagger-autogen": "^2.23.7" + }, + "keywords": [ + "whatsapp", + "whatsapp-web", + "wwebjs", + "api", + "wrapper", + "rest", + "express", + "axios" + ], + "author": { + "name": "Anton Voylenko", + "email": "anton.voylenko@gmail.com" + }, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "repository": { + "type": "git", + "url": "https://github.com/avoylenko/wwebjs-api.git" + }, + "bugs": { + "url": "https://github.com/avoylenko/wwebjs-api/issues" + }, + "homepage": "https://github.com/avoylenko/wwebjs-api" +} diff --git a/server.js b/server.js new file mode 100644 index 0000000..e7d10bc --- /dev/null +++ b/server.js @@ -0,0 +1,16 @@ +const app = require('./src/app') +const { baseWebhookURL } = require('./src/config') +require('dotenv').config() + +// Start the server +const port = process.env.PORT || 3000 + +// Check if BASE_WEBHOOK_URL environment variable is available +if (!baseWebhookURL) { + console.error('BASE_WEBHOOK_URL environment variable is not set. Exiting...') + process.exit(1) // Terminate the application with an error code +} + +app.listen(port, () => { + console.log(`Server running on port ${port}`) +}) diff --git a/src/app.js b/src/app.js new file mode 100644 index 0000000..aeeeb9c --- /dev/null +++ b/src/app.js @@ -0,0 +1,17 @@ +require('./routes') +const express = require('express') +const { restoreSessions } = require('./sessions') +const { routes } = require('./routes') +const { maxAttachmentSize } = require('./config') + +const app = express() + +// Initialize Express app +app.disable('x-powered-by') +app.use(express.json({ limit: maxAttachmentSize + 1000000 })) +app.use(express.urlencoded({ limit: maxAttachmentSize + 1000000, extended: true })) +app.use('/', routes) + +restoreSessions() + +module.exports = app diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..5032fc0 --- /dev/null +++ b/src/config.js @@ -0,0 +1,37 @@ +// Load environment variables from .env file +require('dotenv').config() + +// setup global const +const sessionFolderPath = process.env.SESSIONS_PATH || './sessions' +const enableLocalCallbackExample = (process.env.ENABLE_LOCAL_CALLBACK_EXAMPLE || '').toLowerCase() === 'true' +const globalApiKey = process.env.API_KEY +const baseWebhookURL = process.env.BASE_WEBHOOK_URL +const maxAttachmentSize = parseInt(process.env.MAX_ATTACHMENT_SIZE) || 10000000 +const setMessagesAsSeen = (process.env.SET_MESSAGES_AS_SEEN || '').toLowerCase() === 'true' +const disabledCallbacks = process.env.DISABLED_CALLBACKS ? process.env.DISABLED_CALLBACKS.split('|') : [] +const enableSwaggerEndpoint = (process.env.ENABLE_SWAGGER_ENDPOINT || '').toLowerCase() === 'true' +const webVersion = process.env.WEB_VERSION +const webVersionCacheType = process.env.WEB_VERSION_CACHE_TYPE || 'none' +const rateLimitMax = parseInt(process.env.RATE_LIMIT_MAX) || 1000 +const rateLimitWindowMs = parseInt(process.env.RATE_LIMIT_WINDOW_MS) || 1000 +const recoverSessions = (process.env.RECOVER_SESSIONS || '').toLowerCase() === 'true' +const chromeBin = process.env.CHROME_BIN || null +const headless = process.env.HEADLESS ? (process.env.HEADLESS).toLowerCase() === 'true' : true + +module.exports = { + sessionFolderPath, + enableLocalCallbackExample, + globalApiKey, + baseWebhookURL, + maxAttachmentSize, + setMessagesAsSeen, + disabledCallbacks, + enableSwaggerEndpoint, + webVersion, + webVersionCacheType, + rateLimitMax, + rateLimitWindowMs, + recoverSessions, + chromeBin, + headless +} diff --git a/src/controllers/chatController.js b/src/controllers/chatController.js new file mode 100644 index 0000000..3c03415 --- /dev/null +++ b/src/controllers/chatController.js @@ -0,0 +1,237 @@ +const { sessions } = require('../sessions') +const { sendErrorResponse } = require('../utils') + +/** + * @function + * @async + * @name getClassInfo + * @description Gets information about a chat using the chatId and sessionId + * @param {Object} req - Request object + * @param {Object} res - Response object + * @param {string} req.body.chatId - The ID of the chat to get information for + * @param {string} req.params.sessionId - The ID of the session to use + * @returns {Object} - Returns a JSON object with the success status and chat information + * @throws {Error} - Throws an error if chat is not found or if there is a server error + */ +const getClassInfo = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat) { sendErrorResponse(res, 404, 'Chat not Found') } + res.json({ success: true, chat }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Clears all messages in a chat. + * + * @function + * @async + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The ID of the session. + * @param {string} req.body.chatId - The ID of the chat to clear messages from. + * @throws {Error} If the chat is not found or there is an internal server error. + * @returns {Object} The success status and the cleared messages. + */ +const clearMessages = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat) { sendErrorResponse(res, 404, 'Chat not Found') } + const clearMessages = await chat.clearMessages() + res.json({ success: true, clearMessages }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Stops typing or recording in chat immediately. + * + * @function + * @async + * @param {Object} req - Request object. + * @param {Object} res - Response object. + * @param {string} req.body.chatId - ID of the chat to clear the state for. + * @param {string} req.params.sessionId - ID of the session the chat belongs to. + * @returns {Promise} - A Promise that resolves with a JSON object containing a success flag and the result of clearing the state. + * @throws {Error} - If there was an error while clearing the state. + */ +const clearState = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat) { sendErrorResponse(res, 404, 'Chat not Found') } + const clearState = await chat.clearState() + res.json({ success: true, clearState }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Delete a chat. + * + * @async + * @function + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.chatId - The ID of the chat to be deleted. + * @returns {Object} A JSON response indicating whether the chat was deleted successfully. + * @throws {Object} If there is an error while deleting the chat, an error response is sent with a status code of 500. + * @throws {Object} If the chat is not found, an error response is sent with a status code of 404. + */ +const deleteChat = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat) { sendErrorResponse(res, 404, 'Chat not Found') } + const deleteChat = await chat.delete() + res.json({ success: true, deleteChat }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Fetches messages from a specified chat. + * + * @function + * @async + * + * @param {Object} req - The request object containing sessionId, chatId, and searchOptions. + * @param {string} req.params.sessionId - The ID of the session associated with the chat. + * @param {Object} req.body - The body of the request containing chatId and searchOptions. + * @param {string} req.body.chatId - The ID of the chat from which to fetch messages. + * @param {Object} req.body.searchOptions - The search options to use when fetching messages. + * + * @param {Object} res - The response object to send the fetched messages. + * @returns {Promise} A JSON object containing the success status and fetched messages. + * + * @throws {Error} If the chat is not found or there is an error fetching messages. + */ +const fetchMessages = async (req, res) => { + try { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'Unique whatsApp identifier for the given Chat (either group or personnal)', + example: '6281288888888@c.us' + }, + searchOptions: { + type: 'object', + description: 'Search options for fetching messages', + example: '{}' + } + } + } + } + */ + const { chatId, searchOptions } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat) { sendErrorResponse(res, 404, 'Chat not Found') } + const messages = await chat.fetchMessages(searchOptions) + res.json({ success: true, messages }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Gets the contact for a chat + * @async + * @function + * @param {Object} req - The HTTP request object + * @param {Object} res - The HTTP response object + * @param {string} req.params.sessionId - The ID of the current session + * @param {string} req.body.chatId - The ID of the chat to get the contact for + * @returns {Promise} - Promise that resolves with the chat's contact information + * @throws {Error} - Throws an error if chat is not found or if there is an error getting the contact information + */ +const getContact = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat) { sendErrorResponse(res, 404, 'Chat not Found') } + const contact = await chat.getContact() + res.json({ success: true, contact }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Send a recording state to a WhatsApp chat. + * @async + * @function + * @param {object} req - The request object. + * @param {object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {object} req.body - The request body. + * @param {string} req.body.chatId - The ID of the chat to send the recording state to. + * @returns {object} - An object containing a success message and the result of the sendStateRecording method. + * @throws {object} - An error object containing a status code and error message if an error occurs. + */ +const sendStateRecording = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat) { sendErrorResponse(res, 404, 'Chat not Found') } + const sendStateRecording = await chat.sendStateRecording() + res.json({ success: true, sendStateRecording }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Send a typing state to a WhatsApp chat. + * @async + * @function + * @param {object} req - The request object. + * @param {object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {object} req.body - The request body. + * @param {string} req.body.chatId - The ID of the chat to send the typing state to. + * @returns {object} - An object containing a success message and the result of the sendStateTyping method. + * @throws {object} - An error object containing a status code and error message if an error occurs. + */ +const sendStateTyping = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat) { sendErrorResponse(res, 404, 'Chat not Found') } + const sendStateTyping = await chat.sendStateTyping() + res.json({ success: true, sendStateTyping }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +module.exports = { + getClassInfo, + clearMessages, + clearState, + deleteChat, + fetchMessages, + getContact, + sendStateRecording, + sendStateTyping +} diff --git a/src/controllers/clientController.js b/src/controllers/clientController.js new file mode 100644 index 0000000..399268e --- /dev/null +++ b/src/controllers/clientController.js @@ -0,0 +1,1314 @@ +const { MessageMedia, Location, Buttons, List, Poll } = require('whatsapp-web.js') +const { sessions } = require('../sessions') +const { sendErrorResponse } = require('../utils') + +/** + * Send a message to a chat using the WhatsApp API + * + * @async + * @function sendMessage + * @param {Object} req - The request object containing the request parameters + * @param {Object} req.body - The request body containing the chatId, content, contentType and options + * @param {string} req.body.chatId - The chat id where the message will be sent + * @param {string|Object} req.body.content - The message content to be sent, can be a string or an object containing the MessageMedia data + * @param {string} req.body.contentType - The type of the message content, must be one of the following: 'string', 'MessageMedia', 'MessageMediaFromURL', 'Location', 'Buttons', or 'List' + * @param {Object} req.body.options - Additional options to be passed to the WhatsApp API + * @param {string} req.params.sessionId - The id of the WhatsApp session to be used + * @param {Object} res - The response object + * @returns {Object} - The response object containing a success flag and the sent message data + * @throws {Error} - If there is an error while sending the message + */ +const sendMessage = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + '@content': { + "application/json": { + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'The Chat id which contains the message (Group or Individual)', + }, + contentType: { + type: 'string', + description: 'The type of message content, must be one of the following: string, MessageMedia, MessageMediaFromURL, Location, Buttons, or List', + }, + content: { + type: 'object', + description: 'The content of the message, can be a string or an object', + }, + options: { + type: 'object', + description: 'The message send options', + } + } + }, + examples: { + string: { value: { chatId: '6281288888888@c.us', contentType: 'string', content: 'Hello World!' } }, + MessageMedia: { value: { chatId: '6281288888888@c.us', contentType: 'MessageMedia', content: { mimetype: 'image/jpeg', data: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=', filename: 'image.jpg' } } }, + MessageMediaFromURL: { value: { chatId: '6281288888888@c.us', contentType: 'MessageMediaFromURL', content: 'https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=Example' } }, + Location: { value: { chatId: '6281288888888@c.us', contentType: 'Location', content: { latitude: -6.2, longitude: 106.8, description: 'Jakarta' } } }, + Buttons: { value: { chatId: '6281288888888@c.us', contentType: 'Buttons', content: { body: 'Hello World!', buttons: [{ body: 'button 1' }], title: 'Hello World!', footer: 'Hello World!' } } }, + List: { + value: { chatId: '6281288888888@c.us', contentType: 'List', content: { body: 'Hello World!', buttonText: 'Hello World!', sections: [{ title: 'sectionTitle', rows: [{ id: 'customId', title: 'ListItem2', description: 'desc' }, { title: 'ListItem2' }] }], title: 'Hello World!', footer: 'Hello World!' } } + }, + Contact: { + value: { chatId: '6281288888888@c.us', contentType: 'Contact', content: { contactId: '6281288888889@c.us' } } + }, + Poll: { + value: { chatId: '6281288888888@c.us', contentType: 'Poll', content: { pollName: 'Cats or Dogs?', pollOptions: ['Cats', 'Dogs'], options: { allowMultipleAnswers: true } } } + }, + } + } + } + } + */ + + try { + const { chatId, content, contentType, options } = req.body + const client = sessions.get(req.params.sessionId) + + let messageOut + switch (contentType) { + case 'string': + if (options?.media) { + const media = options.media + media.filename = null + media.filesize = null + options.media = new MessageMedia(media.mimetype, media.data, media.filename, media.filesize) + } + messageOut = await client.sendMessage(chatId, content, options) + break + case 'MessageMediaFromURL': { + const messageMediaFromURL = await MessageMedia.fromUrl(content, { unsafeMime: true }) + messageOut = await client.sendMessage(chatId, messageMediaFromURL, options) + break + } + case 'MessageMedia': { + const messageMedia = new MessageMedia(content.mimetype, content.data, content.filename, content.filesize) + messageOut = await client.sendMessage(chatId, messageMedia, options) + break + } + case 'Location': { + const location = new Location(content.latitude, content.longitude, content.description) + messageOut = await client.sendMessage(chatId, location, options) + break + } + case 'Buttons': { + const buttons = new Buttons(content.body, content.buttons, content.title, content.footer) + messageOut = await client.sendMessage(chatId, buttons, options) + break + } + case 'List': { + const list = new List(content.body, content.buttonText, content.sections, content.title, content.footer) + messageOut = await client.sendMessage(chatId, list, options) + break + } + case 'Contact': { + const contactId = content.contactId.endsWith('@c.us') ? content.contactId : `${content.contactId}@c.us` + const contact = await client.getContactById(contactId) + messageOut = await client.sendMessage(chatId, contact, options) + break + } + case 'Poll': { + const poll = new Poll(content.pollName, content.pollOptions, content.options) + messageOut = await client.sendMessage(chatId, poll, options) + break + } + default: + return sendErrorResponse(res, 404, 'contentType invalid, must be string, MessageMedia, MessageMediaFromURL, Location, Buttons, List, Contact or Poll') + } + + res.json({ success: true, message: messageOut }) + } catch (error) { + console.log(error) + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Get session information for a given sessionId + * + * @async + * @function getClientInfo + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @param {string} req.params.sessionId - The sessionId for which the session info is requested + * @returns {Object} - Response object with session info + * @throws Will throw an error if session info cannot be retrieved + */ +const getClassInfo = async (req, res) => { + try { + const client = sessions.get(req.params.sessionId) + const sessionInfo = await client.info + res.json({ success: true, sessionInfo }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Check if a user is registered on WhatsApp + * + * @async + * @function isRegisteredUser + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @param {string} req.params.sessionId - The sessionId in which the user is registered + * @param {string} req.body.id - The id of the user to check + * @returns {Object} - Response object with a boolean indicating whether the user is registered + * @throws Will throw an error if user registration cannot be checked + */ +const isRegisteredUser = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + number: { + type: 'string', + description: 'The number or ID (\"@c.us\" will be automatically appended if not specified)', + example: '6281288888888' + }, + } + }, + } + */ + try { + const { number } = req.body + const client = sessions.get(req.params.sessionId) + const result = await client.isRegisteredUser(number) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the registered WhatsApp ID for a number + * + * @async + * @function getNumberId + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @param {string} req.params.sessionId - The sessionId in which the user is registered + * @param {string} req.body.id - The id of the user to check + * @returns {Object} - Response object with a boolean indicating whether the user is registered + * @throws Will throw an error if user registration cannot be checked + */ +const getNumberId = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + number: { + type: 'string', + description: 'The number or ID (\"@c.us\" will be automatically appended if not specified)', + example: '6281288888888' + }, + } + }, + } + */ + try { + const { number } = req.body + const client = sessions.get(req.params.sessionId) + const result = await client.getNumberId(number) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Create a group with the given name and participants + * + * @async + * @function createGroup + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @param {string} req.params.sessionId - The sessionId in which to create the group + * @param {string} req.body.name - The name of the group to create + * @param {Array} req.body.participants - Array of user ids to add to the group + * @returns {Object} - Response object with information about the created group + * @throws Will throw an error if group cannot be created + */ +const createGroup = async (req, res) => { + try { + const { name, participants } = req.body + const client = sessions.get(req.params.sessionId) + const response = await client.createGroup(name, participants) + res.json({ success: true, response }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Set the status of the user in a given session + * + * @async + * @function setStatus + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @param {string} req.params.sessionId - The sessionId in which to set the status + * @param {string} req.body.status - The status to set + * @returns {Object} - Response object indicating success + * @throws Will throw an error if status cannot be set + */ +const setStatus = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + status: { + type: 'string', + description: 'New status message', + example: 'I\'m running WhatsApp Web Api' + }, + } + }, + } + */ + try { + const { status } = req.body + const client = sessions.get(req.params.sessionId) + await client.setStatus(status) + res.json({ success: true }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the contacts of the current session. + * @async + * @function + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The session ID associated with the client. + * @param {Object} res - The response object. + * @returns {Promise} - A Promise that resolves with the retrieved contacts or rejects with an error. + */ +const getContacts = async (req, res) => { + try { + const client = sessions.get(req.params.sessionId) + const contacts = await client.getContacts() + res.json({ success: true, contacts }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieve all chats for the given session ID. + * + * @function + * @async + * + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The session ID. + * @param {Object} res - The response object. + * + * @returns {Promise} A Promise that resolves when the operation is complete. + * + * @throws {Error} If the operation fails, an error is thrown. + */ +const getChats = async (req, res) => { + try { + const client = sessions.get(req.params.sessionId) + const chats = await client.getChats() + res.json({ success: true, chats }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Returns the profile picture URL for a given contact ID. + * + * @async + * @function + * @param {Object} req - Express request object. + * @param {Object} res - Express response object. + * @param {string} req.params.sessionId - The ID of the current session. + * @param {string} req.body.contactId - The ID of the contact to get the profile picture for. + * @returns {Promise} - A Promise that resolves with the profile picture URL. + * @throws {Error} - If there is an error retrieving the profile picture URL. + */ +const getProfilePictureUrl = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + contactId: { + type: 'string', + description: 'The contact ID\'s of profile', + example: '6281288888888@c.us' + }, + } + }, + } + */ + try { + const { contactId } = req.body + const client = sessions.get(req.params.sessionId) + const result = await client.getProfilePicUrl(contactId) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Accepts an invite. + * + * @async + * @function + * @param {Object} req - The HTTP request object. + * @param {Object} req.body - The request body. + * @param {Object} req.params - The request parameters. + * @param {string} req.params.sessionId - The ID of the session. + * @param {Object} res - The HTTP response object. + * @returns {Object} The response object. + * @throws {Error} If there is an error while accepting the invite. + */ +const acceptInvite = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + inviteCode: { + type: 'string', + description: 'Invitation code', + example: '' + }, + } + }, + } + */ + try { + const { inviteCode } = req.body + const client = sessions.get(req.params.sessionId) + const acceptInvite = await client.acceptInvite(inviteCode) + res.json({ success: true, acceptInvite }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the version of WhatsApp Web currently being run. + * + * @async + * @function getWWebVersion + * @param {Object} req - The HTTP request object. + * @param {Object} req.params - The request parameters. + * @param {string} req.params.sessionId - The ID of the session. + * @param {Object} res - The HTTP response object. + * @returns {Object} The response object. + * @throws {Error} If there is an error while accepting the invite. + */ +const getWWebVersion = async (req, res) => { + try { + const client = sessions.get(req.params.sessionId) + const result = await client.getWWebVersion() + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Archives a chat. + * + * @async + * @function + * @param {Object} req - The HTTP request object. + * @param {Object} req.body - The request body. + * @param {Object} req.params - The request parameters. + * @param {string} req.params.sessionId - The ID of the session. + * @param {Object} res - The HTTP response object. + * @returns {Object} The response object. + * @throws {Error} If there is an error while archiving the chat. + */ +const archiveChat = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'ID of the chat', + example: '' + }, + } + }, + } + */ + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const result = await client.archiveChat(chatId) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Get the list of blocked contacts for the user's client. + * + * @async + * @function getBlockedContacts + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The session ID to use for the client. + * @param {Object} res - The response object. + * @returns {Promise} - A promise that resolves to an object with a success property and an array of blocked contacts. + * @throws {Error} - Throws an error if the operation fails. + */ +const getBlockedContacts = async (req, res) => { + try { + const client = sessions.get(req.params.sessionId) + const blockedContacts = await client.getBlockedContacts() + res.json({ success: true, blockedContacts }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Get the chat with the given ID. + * + * @async + * @function getChatById + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The session ID to use for the client. + * @param {string} req.body.chatId - The ID of the chat to get. + * @param {Object} res - The response object. + * @returns {Promise} - A promise that resolves to an object with a success property and the chat object. + * @throws {Error} - Throws an error if the operation fails. + */ +const getChatById = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'ID of the chat', + example: '' + }, + } + }, + } + */ + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + res.json({ success: true, chat }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Get the labels for the chat with the given ID. + * + * @async + * @function getChatLabels + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The session ID to use for the client. + * @param {string} req.body.chatId - The ID of the chat to get labels for. + * @param {Object} res - The response object. + * @returns {Promise} - A promise that resolves to an object with a success property and an array of labels for the chat. + * @throws {Error} - Throws an error if the operation fails. + */ +const getChatLabels = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'ID of the chat', + example: '' + }, + } + }, + } + */ + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chatLabels = await client.getChatLabels(chatId) + res.json({ success: true, chatLabels }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Get the chats with the given label ID. + * + * @async + * @function getChatsByLabelId + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The session ID to use for the client. + * @param {string} req.body.labelId - The ID of the label to get chats for. + * @param {Object} res - The response object. + * @returns {Promise} - A promise that resolves to an object with a success property and an array of chats with the given label. + * @throws {Error} - Throws an error if the operation fails. + */ +const getChatsByLabelId = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + labelId: { + type: 'string', + description: 'ID of the label', + example: '' + }, + } + }, + } + */ + try { + const { labelId } = req.body + const client = sessions.get(req.params.sessionId) + const chats = await client.getChatsByLabelId(labelId) + res.json({ success: true, chats }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the common groups between the client's session and the specified contact. + * @async + * @function getCommonGroups + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The session ID of the client. + * @param {string} req.body.contactId - The ID of the contact to retrieve the common groups with. + * @param {Object} res - The response object. + * @returns {Object} - An object containing a success flag and the retrieved groups. + * @throws {Error} - If an error occurs while retrieving the common groups. + */ +const getCommonGroups = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + contactId: { + type: 'string', + description: 'The whatsapp user\'s ID (_serialized format)', + example: '' + }, + } + }, + } + */ + try { + const { contactId } = req.body + const client = sessions.get(req.params.sessionId) + const groups = await client.getCommonGroups(contactId) + res.json({ success: true, groups }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the contact with the specified ID. + * @async + * @function getContactById + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The session ID of the client. + * @param {string} req.body.contactId - The ID of the contact to retrieve. + * @param {Object} res - The response object. + * @returns {Object} - An object containing a success flag and the retrieved contact. + * @throws {Error} - If an error occurs while retrieving the contact. + */ +const getContactById = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + contactId: { + type: 'string', + description: 'The whatsapp user\'s ID', + example: '' + }, + } + }, + } + */ + try { + const { contactId } = req.body + const client = sessions.get(req.params.sessionId) + const contact = await client.getContactById(contactId) + res.json({ success: true, contact }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the invite information for the specified invite code. + * @async + * @function getInviteInfo + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The session ID of the client. + * @param {string} req.body.inviteCode - The invite code to retrieve information for. + * @param {Object} res - The response object. + * @returns {Object} - An object containing a success flag and the retrieved invite information. + * @throws {Error} - If an error occurs while retrieving the invite information. + */ +const getInviteInfo = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + inviteCode: { + type: 'string', + description: 'Invitation code', + example: '' + }, + } + }, + } + */ + try { + const { inviteCode } = req.body + const client = sessions.get(req.params.sessionId) + const inviteInfo = await client.getInviteInfo(inviteCode) + res.json({ success: true, inviteInfo }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the label with the given ID for a particular session. + * @async + * @function + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The ID of the session to retrieve the label for. + * @param {Object} req.body - The request body object. + * @param {string} req.body.labelId - The ID of the label to retrieve. + * @param {Object} res - The response object. + * @returns {Promise} + * @throws {Error} If there is an error retrieving the label. + */ +const getLabelById = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + labelId: { + type: 'string', + description: 'ID of the label', + example: '' + }, + } + }, + } + */ + try { + const { labelId } = req.body + const client = sessions.get(req.params.sessionId) + const label = await client.getLabelById(labelId) + res.json({ success: true, label }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves all labels for a particular session. + * @async + * @function + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The ID of the session to retrieve the labels for. + * @param {Object} res - The response object. + * @returns {Promise} + * @throws {Error} If there is an error retrieving the labels. + */ +const getLabels = async (req, res) => { + try { + const client = sessions.get(req.params.sessionId) + const labels = await client.getLabels() + res.json({ success: true, labels }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Adds or removes labels to/from chats. + * @async + * @function + * @param {Object} req - the request object + * @param {Object} res - the response object + * @return {Promise} a Promise that resolves to the JSON response with success status and labels + * @throws {Error} if an error occurs + */ +const addOrRemoveLabels = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + labelIds: { + type: 'array', + description: 'Array of label IDs', + example: [] + }, + chatIds: { + type: 'array', + description: 'Array of chat IDs', + example: [] + }, + } + }, + } +*/ + try { + const { labelIds, chatIds } = req.body + const client = sessions.get(req.params.sessionId) + const labels = await client.addOrRemoveLabels(labelIds, chatIds) + res.json({ success: true, labels }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the state for a particular session. + * @async + * @function + * @param {Object} req - The request object. + * @param {string} req.params.sessionId - The ID of the session to retrieve the state for. + * @param {Object} res - The response object. + * @returns {Promise} + * @throws {Error} If there is an error retrieving the state. + */ +const getState = async (req, res) => { + try { + const client = sessions.get(req.params.sessionId) + const state = await client.getState() + res.json({ success: true, state }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Marks a chat as unread. + * + * @async + * @function markChatUnread + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.chatId - The ID of the chat to mark as unread. + * @returns {Promise} - A Promise that resolves when the chat is marked as unread. + * @throws {Error} - If an error occurs while marking the chat as unread. + */ +const markChatUnread = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'ID of the chat', + example: '' + }, + } + }, + } + */ + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const mark = await client.markChatUnread(chatId) + res.json({ success: true, mark }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Mutes a chat. + * + * @async + * @function muteChat + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.chatId - The ID of the chat to mute. + * @param {Date} [req.body.unmuteDate] - The date and time when the chat should be unmuted. If not provided, the chat will be muted indefinitely. + * @returns {Promise} - A Promise that resolves when the chat is muted. + * @throws {Error} - If an error occurs while muting the chat. + */ +const muteChat = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'ID of the chat', + example: '' + }, + unmuteDate: { + type: 'string', + description: 'Date when the chat will be muted, leave as is to mute forever', + example: '' + }, + } + }, + } + */ + try { + const { chatId, unmuteDate } = req.body + const client = sessions.get(req.params.sessionId) + let mute + if (unmuteDate) { + mute = await client.muteChat(chatId, new Date(unmuteDate)) + } else { + mute = await client.muteChat(chatId, null) + } + res.json({ success: true, mute }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Pins a chat. + * + * @async + * @function pinChat + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.chatId - The ID of the chat to pin. + * @returns {Promise} - A Promise that resolves when the chat is pinned. + * @throws {Error} - If an error occurs while pinning the chat. + */ +const pinChat = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'ID of the chat', + example: '' + }, + } + }, + } + */ + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const result = await client.pinChat(chatId) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} +/** + * Search messages with the given query and options. + * @async + * @function searchMessages + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {Object} req.body - The request body. + * @param {string} req.body.query - The search query. + * @param {Object} [req.body.options] - The search options (optional). + * @returns {Promise} - A Promise that resolves with the search results. + * @throws {Error} - If there's an error during the search. + */ +const searchMessages = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + query: { + type: 'string', + description: 'Search string', + example: '' + }, + options: { + type: 'object', + description: 'Search options', + example: {} + }, + } + }, + } + */ + try { + const { query, options } = req.body + const client = sessions.get(req.params.sessionId) + let messages + if (options) { + messages = await client.searchMessages(query, options) + } else { + messages = await client.searchMessages(query) + } + res.json({ success: true, messages }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Send presence available to the XMPP server. + * @async + * @function sendPresenceAvailable + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @returns {Promise} - A Promise that resolves with the presence status. + * @throws {Error} - If there's an error during the presence sending. + */ +const sendPresenceAvailable = async (req, res) => { + try { + const client = sessions.get(req.params.sessionId) + const presence = await client.sendPresenceAvailable() + res.json({ success: true, presence }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Send presence unavailable to the XMPP server. + * @async + * @function sendPresenceUnavailable + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @returns {Promise} - A Promise that resolves with the presence status. + * @throws {Error} - If there's an error during the presence sending. + */ +const sendPresenceUnavailable = async (req, res) => { + try { + const client = sessions.get(req.params.sessionId) + const presence = await client.sendPresenceUnavailable() + res.json({ success: true, presence }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Send a 'seen' message status for a given chat ID. + * @async + * @function + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.body.chatId - The ID of the chat to set the seen status for. + * @param {string} req.params.sessionId - The ID of the session for the user. + * @returns {Object} Returns a JSON object with a success status and the result of the function. + * @throws {Error} If there is an issue sending the seen status message, an error will be thrown. + */ +const sendSeen = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'ID of the chat', + example: '' + }, + } + }, + } + */ + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const result = await client.sendSeen(chatId) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Set the display name for the user's WhatsApp account. + * @async + * @function + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.body.displayName - The new display name to set for the user's WhatsApp account. + * @param {string} req.params.sessionId - The ID of the session for the user. + * @returns {Object} Returns a JSON object with a success status and the result of the function. + * @throws {Error} If there is an issue setting the display name, an error will be thrown. + */ +const setDisplayName = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + displayName: { + type: 'string', + description: 'New display name', + example: '' + }, + } + }, + } + */ + try { + const { displayName } = req.body + const client = sessions.get(req.params.sessionId) + const result = await client.setDisplayName(displayName) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Unarchive a chat for the user's WhatsApp account. + * @async + * @function + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.body.chatId - The ID of the chat to unarchive. + * @param {string} req.params.sessionId - The ID of the session for the user. + * @returns {Object} Returns a JSON object with a success status and the result of the function. + * @throws {Error} If there is an issue unarchiving the chat, an error will be thrown. + */ +const unarchiveChat = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'ID of the chat', + example: '' + }, + } + }, + } + */ + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const result = await client.unarchiveChat(chatId) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Unmutes the chat identified by chatId using the client associated with the given sessionId. + * + * @async + * @function + * @param {Object} req - The HTTP request object containing the chatId and sessionId. + * @param {string} req.body.chatId - The unique identifier of the chat to unmute. + * @param {string} req.params.sessionId - The unique identifier of the session associated with the client to use. + * @param {Object} res - The HTTP response object. + * @returns {Promise} - A Promise that resolves with a JSON object containing a success flag and the result of the operation. + * @throws {Error} - If an error occurs during the operation, it is thrown and handled by the catch block. + */ +const unmuteChat = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'ID of the chat', + example: '' + }, + } + }, + } + */ + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const result = await client.unmuteChat(chatId) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Unpins the chat identified by chatId using the client associated with the given sessionId. + * + * @async + * @function + * @param {Object} req - The HTTP request object containing the chatId and sessionId. + * @param {string} req.body.chatId - The unique identifier of the chat to unpin. + * @param {string} req.params.sessionId - The unique identifier of the session associated with the client to use. + * @param {Object} res - The HTTP response object. + * @returns {Promise} - A Promise that resolves with a JSON object containing a success flag and the result of the operation. + * @throws {Error} - If an error occurs during the operation, it is thrown and handled by the catch block. + */ +const unpinChat = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'ID of the chat', + example: '' + }, + } + }, + } + */ + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const result = await client.unpinChat(chatId) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * update the profile Picture of the session user + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {Object} req.body.media - The new profile picture to set for the user's WhatsApp account. + * @param {string} req.params.sessionId - The ID of the session for the user. + * @returns {Object} Returns a JSON object with a success status and the result of the function. + * @throws {Error} If there is an issue setting the profile picture, an error will be thrown. + */ + +const setProfilePicture = async (req, res) => { + /* + #swagger.requestBody = { + required: true, + schema: { + type: "object", + properties: { + pictureMimetype: { + type: "string", + description: "The mimetype of the picture to set as the profile picture for the user WhatsApp account.", + example: "image/png" + }, + pictureData: { + type: "string", + description: "The base64 data of the picture to set as the profile picture for the user WhatsApp account.", + example: "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=" + } + } + } + } + */ + + try { + const { pictureMimetype, pictureData } = req.body + const client = sessions.get(req.params.sessionId) + const media = new MessageMedia(pictureMimetype, pictureData) + const result = await client.setProfilePicture(media) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +module.exports = { + getClassInfo, + acceptInvite, + archiveChat, + createGroup, + getBlockedContacts, + getChatById, + getChatLabels, + getChats, + getChatsByLabelId, + getCommonGroups, + getContactById, + getContacts, + getInviteInfo, + getLabelById, + getLabels, + addOrRemoveLabels, + isRegisteredUser, + getNumberId, + getProfilePictureUrl, + getState, + markChatUnread, + muteChat, + pinChat, + searchMessages, + sendMessage, + sendPresenceAvailable, + sendPresenceUnavailable, + sendSeen, + setDisplayName, + setProfilePicture, + setStatus, + unarchiveChat, + unmuteChat, + unpinChat, + getWWebVersion +} diff --git a/src/controllers/contactController.js b/src/controllers/contactController.js new file mode 100644 index 0000000..dfa874f --- /dev/null +++ b/src/controllers/contactController.js @@ -0,0 +1,218 @@ +const { sessions } = require('../sessions') +const { sendErrorResponse } = require('../utils') + +/** + * Retrieves information about a WhatsApp contact by ID. + * + * @async + * @function + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The ID of the current session. + * @param {string} req.body.contactId - The ID of the contact to retrieve information for. + * @throws {Error} If there is an error retrieving the contact information. + * @returns {Object} The contact information object. + */ +const getClassInfo = async (req, res) => { + try { + const { contactId } = req.body + const client = sessions.get(req.params.sessionId) + const contact = await client.getContactById(contactId) + if (!contact) { + sendErrorResponse(res, 404, 'Contact not Found') + } + res.json({ success: true, result: contact }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Blocks a WhatsApp contact by ID. + * + * @async + * @function + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The ID of the current session. + * @param {string} req.body.contactId - The ID of the contact to block. + * @throws {Error} If there is an error blocking the contact. + * @returns {Object} The result of the blocking operation. + */ +const block = async (req, res) => { + try { + const { contactId } = req.body + const client = sessions.get(req.params.sessionId) + const contact = await client.getContactById(contactId) + if (!contact) { + sendErrorResponse(res, 404, 'Contact not Found') + } + const result = await contact.block() + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the 'About' information of a WhatsApp contact by ID. + * + * @async + * @function + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The ID of the current session. + * @param {string} req.body.contactId - The ID of the contact to retrieve 'About' information for. + * @throws {Error} If there is an error retrieving the contact information. + * @returns {Object} The 'About' information of the contact. + */ +const getAbout = async (req, res) => { + try { + const { contactId } = req.body + const client = sessions.get(req.params.sessionId) + const contact = await client.getContactById(contactId) + if (!contact) { + sendErrorResponse(res, 404, 'Contact not Found') + } + const result = await contact.getAbout() + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the chat information of a contact with a given contactId. + * + * @async + * @function getChat + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.contactId - The ID of the client whose chat information is being retrieved. + * @throws {Error} If the contact with the given contactId is not found or if there is an error retrieving the chat information. + * @returns {Promise} A promise that resolves with the chat information of the contact. + */ +const getChat = async (req, res) => { + try { + const { contactId } = req.body + const client = sessions.get(req.params.sessionId) + const contact = await client.getContactById(contactId) + if (!contact) { sendErrorResponse(res, 404, 'Contact not Found') } + const result = await contact.getChat() + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the formatted number of a contact with a given contactId. + * + * @async + * @function getFormattedNumber + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.contactId - The ID of the client whose chat information is being retrieved. + * @throws {Error} If the contact with the given contactId is not found or if there is an error retrieving the chat information. + * @returns {Promise} A promise that resolves with the formatted number of the contact. + */ +const getFormattedNumber = async (req, res) => { + try { + const { contactId } = req.body + const client = sessions.get(req.params.sessionId) + const contact = await client.getContactById(contactId) + if (!contact) { sendErrorResponse(res, 404, 'Contact not Found') } + const result = await contact.getFormattedNumber() + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the country code of a contact with a given contactId. + * + * @async + * @function getCountryCode + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.contactId - The ID of the client whose chat information is being retrieved. + * @throws {Error} If the contact with the given contactId is not found or if there is an error retrieving the chat information. + * @returns {Promise} A promise that resolves with the country code of the contact. + */ +const getCountryCode = async (req, res) => { + try { + const { contactId } = req.body + const client = sessions.get(req.params.sessionId) + const contact = await client.getContactById(contactId) + if (!contact) { sendErrorResponse(res, 404, 'Contact not Found') } + const result = await contact.getCountryCode() + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the profile picture url of a contact with a given contactId. + * + * @async + * @function getProfilePicUrl + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.contactId - The ID of the client whose chat information is being retrieved. + * @throws {Error} If the contact with the given contactId is not found or if there is an error retrieving the chat information. + * @returns {Promise} A promise that resolves with the profile picture url of the contact. + */ +const getProfilePicUrl = async (req, res) => { + try { + const { contactId } = req.body + const client = sessions.get(req.params.sessionId) + const contact = await client.getContactById(contactId) + if (!contact) { sendErrorResponse(res, 404, 'Contact not Found') } + const result = await contact.getProfilePicUrl() || null + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Unblocks the contact with a given contactId. + * + * @async + * @function unblock + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.contactId - The ID of the client whose contact is being unblocked. + * @throws {Error} If the contact with the given contactId is not found or if there is an error unblocking the contact. + * @returns {Promise} A promise that resolves with the result of unblocking the contact. + */ +const unblock = async (req, res) => { + try { + const { contactId } = req.body + const client = sessions.get(req.params.sessionId) + const contact = await client.getContactById(contactId) + if (!contact) { sendErrorResponse(res, 404, 'Contact not Found') } + const result = await contact.unblock() + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +module.exports = { + getClassInfo, + block, + getAbout, + getChat, + unblock, + getFormattedNumber, + getCountryCode, + getProfilePicUrl +} diff --git a/src/controllers/groupChatController.js b/src/controllers/groupChatController.js new file mode 100644 index 0000000..9da1c42 --- /dev/null +++ b/src/controllers/groupChatController.js @@ -0,0 +1,355 @@ +const { MessageMedia } = require('whatsapp-web.js') +const { sessions } = require('../sessions') +const { sendErrorResponse } = require('../utils') + +/** + * Adds participants to a group chat. + * @async + * @function + * @param {Object} req - The request object containing the chatId and contactIds in the body. + * @param {string} req.body.chatId - The ID of the group chat. + * @param {Array} req.body.contactIds - An array of contact IDs to be added to the group. + * @param {Object} res - The response object. + * @returns {Object} Returns a JSON object containing a success flag and the updated participants list. + * @throws {Error} Throws an error if the chat is not a group chat. +*/ +const addParticipants = async (req, res) => { + try { + const { chatId, contactIds } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + await chat.addParticipants(contactIds) + res.json({ success: true, participants: chat.participants }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Removes participants from a group chat + * + * @async + * @function + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @returns {Promise} Returns a JSON object with success flag and updated participants list + * @throws {Error} If chat is not a group + */ +const removeParticipants = async (req, res) => { + try { + const { chatId, contactIds } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + await chat.removeParticipants(contactIds) + res.json({ success: true, participants: chat.participants }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Promotes participants in a group chat to admin + * + * @async + * @function + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @returns {Promise} Returns a JSON object with success flag and updated participants list + * @throws {Error} If chat is not a group + */ +const promoteParticipants = async (req, res) => { + try { + const { chatId, contactIds } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + await chat.promoteParticipants(contactIds) + res.json({ success: true, participants: chat.participants }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Demotes admin participants in a group chat + * + * @async + * @function + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @returns {Promise} Returns a JSON object with success flag and updated participants list + * @throws {Error} If chat is not a group + */ +const demoteParticipants = async (req, res) => { + try { + const { chatId, contactIds } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + await chat.demoteParticipants(contactIds) + res.json({ success: true, participants: chat.participants }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Gets the invite code for a group chat + * + * @async + * @function + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @returns {Promise} Returns a JSON object with success flag and invite code + * @throws {Error} If chat is not a group + */ +const getInviteCode = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + const inviteCode = await chat.getInviteCode() + res.json({ success: true, inviteCode }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Sets the subject of a group chat + * + * @async + * @function + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @returns {Promise} Returns a JSON object with success flag and updated chat object + * @throws {Error} If chat is not a group + */ +const setSubject = async (req, res) => { + try { + const { chatId, subject } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + const success = await chat.setSubject(subject) + res.json({ success, chat }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Sets the description of a group chat + * + * @async + * @function + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @returns {Promise} Returns a JSON object with success flag and updated chat object + * @throws {Error} If chat is not a group + */ +const setDescription = async (req, res) => { + try { + const { chatId, description } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + const success = await chat.setDescription(description) + res.json({ success, chat }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Leaves a group chat + * + * @async + * @function + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @returns {Promise} Returns a JSON object with success flag and outcome of leaving the chat + * @throws {Error} If chat is not a group + */ +const leave = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + const outcome = await chat.leave() + res.json({ success: true, outcome }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves information about a chat based on the provided chatId + * + * @async + * @function getClassInfo + * @param {object} req - The request object + * @param {object} res - The response object + * @param {string} req.body.chatId - The chatId of the chat to retrieve information about + * @param {string} req.params.sessionId - The sessionId of the client making the request + * @throws {Error} The chat is not a group. + * @returns {Promise} - A JSON response with success true and chat object containing chat information + */ +const getClassInfo = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + res.json({ success: true, chat }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Revokes the invite link for a group chat based on the provided chatId + * + * @async + * @function revokeInvite + * @param {object} req - The request object + * @param {object} res - The response object + * @param {string} req.body.chatId - The chatId of the group chat to revoke the invite for + * @param {string} req.params.sessionId - The sessionId of the client making the request + * @throws {Error} The chat is not a group. + * @returns {Promise} - A JSON response with success true and the new invite code for the group chat + */ +const revokeInvite = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + const newInviteCode = await chat.revokeInvite() + res.json({ success: true, newInviteCode }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Sets admins-only status of a group chat's info or messages. + * + * @async + * @function setInfoAdminsOnly + * @param {Object} req - Request object. + * @param {Object} res - Response object. + * @param {string} req.params.sessionId - ID of the user's session. + * @param {Object} req.body - Request body. + * @param {string} req.body.chatId - ID of the group chat. + * @param {boolean} req.body.adminsOnly - Desired admins-only status. + * @returns {Promise} Promise representing the success or failure of the operation. + * @throws {Error} If the chat is not a group. + */ +const setInfoAdminsOnly = async (req, res) => { + try { + const { chatId, adminsOnly } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + const result = await chat.setInfoAdminsOnly(adminsOnly) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Sets admins-only status of a group chat's messages. + * + * @async + * @function setMessagesAdminsOnly + * @param {Object} req - Request object. + * @param {Object} res - Response object. + * @param {string} req.params.sessionId - ID of the user's session. + * @param {Object} req.body - Request body. + * @param {string} req.body.chatId - ID of the group chat. + * @param {boolean} req.body.adminsOnly - Desired admins-only status. + * @returns {Promise} Promise representing the success or failure of the operation. + * @throws {Error} If the chat is not a group. + */ +const setMessagesAdminsOnly = async (req, res) => { + try { + const { chatId, adminsOnly } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + const result = await chat.setMessagesAdminsOnly(adminsOnly) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Set the group Picture + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {Object} req.body.pictureMimetype - The mimetype of the image. + * @param {Object} req.body.pictureData - The new group picture in base64 format. + * @param {Object} req.body.chatId - ID of the group chat. + * @param {string} req.params.sessionId - The ID of the session for the user. + * @returns {Object} Returns a JSON object with a success status and the result of the function. + * @throws {Error} If there is an issue setting the group picture, an error will be thrown. + */ +const setPicture = async (req, res) => { + try { + const { pictureMimetype, pictureData, chatId } = req.body + const client = sessions.get(req.params.sessionId) + const media = new MessageMedia(pictureMimetype, pictureData) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + const result = await chat.setPicture(media) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Delete the group Picture + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {Object} req.body.chatId - ID of the group chat. + * @param {string} req.params.sessionId - The ID of the session for the user. + * @returns {Object} Returns a JSON object with a success status and the result of the function. + * @throws {Error} If there is an issue setting the group picture, an error will be thrown. + */ +const deletePicture = async (req, res) => { + try { + const { chatId } = req.body + const client = sessions.get(req.params.sessionId) + const chat = await client.getChatById(chatId) + if (!chat.isGroup) { throw new Error('The chat is not a group') } + const result = await chat.deletePicture() + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +module.exports = { + getClassInfo, + addParticipants, + demoteParticipants, + getInviteCode, + leave, + promoteParticipants, + removeParticipants, + revokeInvite, + setDescription, + setInfoAdminsOnly, + setMessagesAdminsOnly, + setSubject, + setPicture, + deletePicture +} diff --git a/src/controllers/healthController.js b/src/controllers/healthController.js new file mode 100644 index 0000000..6aa2f28 --- /dev/null +++ b/src/controllers/healthController.js @@ -0,0 +1,55 @@ +const fsp = require('fs').promises +const qrcode = require('qrcode-terminal') +const { sessionFolderPath } = require('../config') +const { sendErrorResponse } = require('../utils') + +/** + * Responds to ping request with 'pong' + * + * @function ping + * @async + * @param {Object} req - Express request object + * @param {Object} res - Express response object + * @returns {Promise} - Promise that resolves once response is sent + * @throws {Object} - Throws error if response fails + */ +const ping = async (req, res) => { + /* + #swagger.tags = ['Various'] + */ + try { + res.json({ success: true, message: 'pong' }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Example local callback function that generates a QR code and writes a log file + * + * @function localCallbackExample + * @async + * @param {Object} req - Express request object containing a body object with dataType and data + * @param {string} req.body.dataType - Type of data (in this case, 'qr') + * @param {Object} req.body.data - Data to generate a QR code from + * @param {Object} res - Express response object + * @returns {Promise} - Promise that resolves once response is sent + * @throws {Object} - Throws error if response fails + */ +const localCallbackExample = async (req, res) => { + /* + #swagger.tags = ['Various'] + */ + try { + const { dataType, data } = req.body + if (dataType === 'qr') { qrcode.generate(data.qr, { small: true }) } + await fsp.writeFile(`${sessionFolderPath}/message_log.txt`, `${JSON.stringify(req.body)}\r\n`, { flag: 'a+' }, _ => _) + res.json({ success: true }) + } catch (error) { + console.log(error) + await fsp.writeFile(`${sessionFolderPath}/message_log.txt`, `(ERROR) ${JSON.stringify(error)}\r\n`, { flag: 'a+' }, _ => _) + sendErrorResponse(res, 500, error.message) + } +} + +module.exports = { ping, localCallbackExample } diff --git a/src/controllers/messageController.js b/src/controllers/messageController.js new file mode 100644 index 0000000..241d62f --- /dev/null +++ b/src/controllers/messageController.js @@ -0,0 +1,376 @@ +const { sessions } = require('../sessions') +const { sendErrorResponse } = require('../utils') + +/** + * Get message by its ID from a given chat using the provided client. + * @async + * @function + * @param {object} client - The chat client. + * @param {string} messageId - The ID of the message to get. + * @param {string} chatId - The ID of the chat to search in. + * @returns {Promise} - A Promise that resolves with the message object that matches the provided ID, or undefined if no such message exists. + * @throws {Error} - Throws an error if the provided client, message ID or chat ID is invalid. + */ +const _getMessageById = async (client, messageId, chatId) => { + const chat = await client.getChatById(chatId) + const messages = await chat.fetchMessages({ limit: 100 }) + const message = messages.find((message) => { return message.id.id === messageId }) + return message +} + +/** + * Gets information about a message's class. + * @async + * @function + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.messageId - The message ID. + * @param {string} req.body.chatId - The chat ID. + * @returns {Promise} - A Promise that resolves with no value when the function completes. + */ +const getClassInfo = async (req, res) => { + try { + const { messageId, chatId } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + res.json({ success: true, message }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Deletes a message. + * @async + * @function + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.messageId - The message ID. + * @param {string} req.body.chatId - The chat ID. + * @param {boolean} req.body.everyone - Whether to delete the message for everyone or just the sender. + * @returns {Promise} - A Promise that resolves with no value when the function completes. + */ +const deleteMessage = async (req, res) => { + try { + const { messageId, chatId, everyone } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const result = await message.delete(everyone) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Downloads media from a message. + * @async + * @function + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.messageId - The message ID. + * @param {string} req.body.chatId - The chat ID. + * @param {boolean} req.body.everyone - Whether to download the media for everyone or just the sender. + * @returns {Promise} - A Promise that resolves with no value when the function completes. + */ +const downloadMedia = async (req, res) => { + try { + const { messageId, chatId, everyone } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const messageMedia = await message.downloadMedia(everyone) + res.json({ success: true, messageMedia }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Forwards a message to a destination chat. + * @async + * @function forward + * @param {Object} req - The request object received by the server. + * @param {Object} req.body - The body of the request object. + * @param {string} req.body.messageId - The ID of the message to forward. + * @param {string} req.body.chatId - The ID of the chat that contains the message to forward. + * @param {string} req.body.destinationChatId - The ID of the chat to forward the message to. + * @param {string} req.params.sessionId - The ID of the session to use the Telegram API with. + * @param {Object} res - The response object to be sent back to the client. + * @returns {Object} - The response object with a JSON body containing the result of the forward operation. + * @throws Will throw an error if the message is not found or if there is an error during the forward operation. + */ +const forward = async (req, res) => { + try { + const { messageId, chatId, destinationChatId } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const result = await message.forward(destinationChatId) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Gets information about a message. + * @async + * @function getInfo + * @param {Object} req - The request object received by the server. + * @param {Object} req.body - The body of the request object. + * @param {string} req.body.messageId - The ID of the message to get information about. + * @param {string} req.body.chatId - The ID of the chat that contains the message to get information about. + * @param {string} req.params.sessionId - The ID of the session to use the Telegram API with. + * @param {Object} res - The response object to be sent back to the client. + * @returns {Object} - The response object with a JSON body containing the information about the message. + * @throws Will throw an error if the message is not found or if there is an error during the get info operation. + */ +const getInfo = async (req, res) => { + try { + const { messageId, chatId } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const info = await message.getInfo() + res.json({ success: true, info }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves a list of contacts mentioned in a specific message + * + * @async + * @function + * @param {Object} req - The HTTP request object + * @param {Object} req.body - The request body + * @param {string} req.body.messageId - The ID of the message to retrieve mentions from + * @param {string} req.body.chatId - The ID of the chat where the message was sent + * @param {string} req.params.sessionId - The ID of the session for the client making the request + * @param {Object} res - The HTTP response object + * @returns {Promise} - The JSON response with the list of contacts + * @throws {Error} - If there's an error retrieving the message or mentions + */ +const getMentions = async (req, res) => { + try { + const { messageId, chatId } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const contacts = await message.getMentions() + res.json({ success: true, contacts }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the order information contained in a specific message + * + * @async + * @function + * @param {Object} req - The HTTP request object + * @param {Object} req.body - The request body + * @param {string} req.body.messageId - The ID of the message to retrieve the order from + * @param {string} req.body.chatId - The ID of the chat where the message was sent + * @param {string} req.params.sessionId - The ID of the session for the client making the request + * @param {Object} res - The HTTP response object + * @returns {Promise} - The JSON response with the order information + * @throws {Error} - If there's an error retrieving the message or order information + */ +const getOrder = async (req, res) => { + try { + const { messageId, chatId } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const order = await message.getOrder() + res.json({ success: true, order }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the payment information from a specific message identified by its ID. + * + * @async + * @function getPayment + * @param {Object} req - The HTTP request object. + * @param {Object} res - The HTTP response object. + * @param {string} req.params.sessionId - The session ID associated with the client making the request. + * @param {Object} req.body - The message ID and chat ID associated with the message to retrieve payment information from. + * @param {string} req.body.messageId - The ID of the message to retrieve payment information from. + * @param {string} req.body.chatId - The ID of the chat the message is associated with. + * @returns {Object} An object containing a success status and the payment information for the specified message. + * @throws {Object} If the specified message is not found or if an error occurs during the retrieval process. + */ +const getPayment = async (req, res) => { + try { + const { messageId, chatId } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const payment = await message.getPayment() + res.json({ success: true, payment }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Retrieves the quoted message information from a specific message identified by its ID. + * + * @async + * @function getQuotedMessage + * @param {Object} req - The HTTP request object. + * @param {Object} res - The HTTP response object. + * @param {string} req.params.sessionId - The session ID associated with the client making the request. + * @param {Object} req.body - The message ID and chat ID associated with the message to retrieve quoted message information from. + * @param {string} req.body.messageId - The ID of the message to retrieve quoted message information from. + * @param {string} req.body.chatId - The ID of the chat the message is associated with. + * @returns {Object} An object containing a success status and the quoted message information for the specified message. + * @throws {Object} If the specified message is not found or if an error occurs during the retrieval process. + */ +const getQuotedMessage = async (req, res) => { + try { + const { messageId, chatId } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const quotedMessage = await message.getQuotedMessage() + res.json({ success: true, quotedMessage }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * React to a specific message in a chat + * + * @async + * @function react + * @param {Object} req - The HTTP request object containing the request parameters and body. + * @param {Object} res - The HTTP response object to send the result. + * @param {string} req.params.sessionId - The ID of the session to use. + * @param {Object} req.body - The body of the request. + * @param {string} req.body.messageId - The ID of the message to react to. + * @param {string} req.body.chatId - The ID of the chat the message is in. + * @param {string} req.body.reaction - The reaction to add to the message. + * @returns {Object} The HTTP response containing the result of the operation. + * @throws {Error} If there was an error during the operation. + */ +const react = async (req, res) => { + try { + const { messageId, chatId, reaction } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const result = await message.react(reaction) + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Reply to a specific message in a chat + * + * @async + * @function reply + * @param {Object} req - The HTTP request object containing the request parameters and body. + * @param {Object} res - The HTTP response object to send the result. + * @param {string} req.params.sessionId - The ID of the session to use. + * @param {string} req.body.messageId - The ID of the message to reply to. + * @param {string} req.body.chatId - The ID of the chat the message is in. + * @param {string} req.body.content - The content of the message to send. + * @param {string} req.body.destinationChatId - The ID of the chat to send the reply to. + * @param {Object} req.body.options - Additional options for sending the message. + * @returns {Object} The HTTP response containing the result of the operation. + * @throws {Error} If there was an error during the operation. + */ +const reply = async (req, res) => { + try { + const { messageId, chatId, content, destinationChatId, options } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const repliedMessage = await message.reply(content, destinationChatId, options) + res.json({ success: true, repliedMessage }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * @function star + * @async + * @description Stars a message by message ID and chat ID. + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.messageId - The message ID. + * @param {string} req.body.chatId - The chat ID. + * @returns {Promise} A Promise that resolves with the result of the message.star() call. + * @throws {Error} If message is not found, it throws an error with the message "Message not Found". + */ +const star = async (req, res) => { + try { + const { messageId, chatId } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const result = await message.star() + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +/** + * @function unstar + * @async + * @description Unstars a message by message ID and chat ID. + * @param {Object} req - The request object. + * @param {Object} res - The response object. + * @param {string} req.params.sessionId - The session ID. + * @param {string} req.body.messageId - The message ID. + * @param {string} req.body.chatId - The chat ID. + * @returns {Promise} A Promise that resolves with the result of the message.unstar() call. + * @throws {Error} If message is not found, it throws an error with the message "Message not Found". + */ +const unstar = async (req, res) => { + try { + const { messageId, chatId } = req.body + const client = sessions.get(req.params.sessionId) + const message = await _getMessageById(client, messageId, chatId) + if (!message) { throw new Error('Message not Found') } + const result = await message.unstar() + res.json({ success: true, result }) + } catch (error) { + sendErrorResponse(res, 500, error.message) + } +} + +module.exports = { + getClassInfo, + deleteMessage, + downloadMedia, + forward, + getInfo, + getMentions, + getOrder, + getPayment, + getQuotedMessage, + react, + reply, + star, + unstar +} diff --git a/src/controllers/sessionController.js b/src/controllers/sessionController.js new file mode 100644 index 0000000..d8bd886 --- /dev/null +++ b/src/controllers/sessionController.js @@ -0,0 +1,374 @@ +const qr = require('qr-image') +const { setupSession, deleteSession, reloadSession, validateSession, flushSessions, sessions } = require('../sessions') +const { sendErrorResponse, waitForNestedObject } = require('../utils') + +/** + * Starts a session for the given session ID. + * + * @function + * @async + * @param {Object} req - The HTTP request object. + * @param {Object} res - The HTTP response object. + * @param {string} req.params.sessionId - The session ID to start. + * @returns {Promise} + * @throws {Error} If there was an error starting the session. + */ +const startSession = async (req, res) => { + // #swagger.summary = 'Start new session' + // #swagger.description = 'Starts a session for the given session ID.' + try { + const sessionId = req.params.sessionId + const setupSessionReturn = setupSession(sessionId) + if (!setupSessionReturn.success) { + /* #swagger.responses[422] = { + description: "Unprocessable Entity.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/ErrorResponse" } + } + } + } + */ + sendErrorResponse(res, 422, setupSessionReturn.message) + return + } + /* #swagger.responses[200] = { + description: "Status of the initiated session.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/StartSessionResponse" } + } + } + } + */ + // wait until the client is created + await waitForNestedObject(setupSessionReturn.client, 'pupPage') + res.json({ success: true, message: setupSessionReturn.message }) + } catch (error) { + /* #swagger.responses[500] = { + description: "Server Failure.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/ErrorResponse" } + } + } + } + */ + console.log('startSession ERROR', error) + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Status of the session with the given session ID. + * + * @function + * @async + * @param {Object} req - The HTTP request object. + * @param {Object} res - The HTTP response object. + * @param {string} req.params.sessionId - The session ID to start. + * @returns {Promise} + * @throws {Error} If there was an error getting status of the session. + */ +const statusSession = async (req, res) => { + // #swagger.summary = 'Get session status' + // #swagger.description = 'Status of the session with the given session ID.' + try { + const sessionId = req.params.sessionId + const sessionData = await validateSession(sessionId) + /* #swagger.responses[200] = { + description: "Status of the session.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/StatusSessionResponse" } + } + } + } + */ + res.json(sessionData) + } catch (error) { + console.log('statusSession ERROR', error) + /* #swagger.responses[500] = { + description: "Server Failure.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/ErrorResponse" } + } + } + } + */ + sendErrorResponse(res, 500, error.message) + } +} + +/** + * QR code of the session with the given session ID. + * + * @function + * @async + * @param {Object} req - The HTTP request object. + * @param {Object} res - The HTTP response object. + * @param {string} req.params.sessionId - The session ID to start. + * @returns {Promise} + * @throws {Error} If there was an error getting status of the session. + */ +const sessionQrCode = async (req, res) => { + // #swagger.summary = 'Get session QR code' + // #swagger.description = 'QR code of the session with the given session ID.' + try { + const sessionId = req.params.sessionId + const session = sessions.get(sessionId) + if (!session) { + return res.json({ success: false, message: 'session_not_found' }) + } + if (session.qr) { + return res.json({ success: true, qr: session.qr }) + } + return res.json({ success: false, message: 'qr code not ready or already scanned' }) + } catch (error) { + console.log('sessionQrCode ERROR', error) + /* #swagger.responses[500] = { + description: "Server Failure.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/ErrorResponse" } + } + } + } + */ + sendErrorResponse(res, 500, error.message) + } +} + +/** + * QR code as image of the session with the given session ID. + * + * @function + * @async + * @param {Object} req - The HTTP request object. + * @param {Object} res - The HTTP response object. + * @param {string} req.params.sessionId - The session ID to start. + * @returns {Promise} + * @throws {Error} If there was an error getting status of the session. + */ +const sessionQrCodeImage = async (req, res) => { + // #swagger.summary = 'Get session QR code as image' + // #swagger.description = 'QR code as image of the session with the given session ID.' + try { + const sessionId = req.params.sessionId + const session = sessions.get(sessionId) + if (!session) { + return res.json({ success: false, message: 'session_not_found' }) + } + if (session.qr) { + const qrImage = qr.image(session.qr) + /* #swagger.responses[200] = { + description: "QR image.", + content: { + "image/png": {} + } + } + */ + res.writeHead(200, { + 'Content-Type': 'image/png' + }) + return qrImage.pipe(res) + } + return res.json({ success: false, message: 'qr code not ready or already scanned' }) + } catch (error) { + console.log('sessionQrCodeImage ERROR', error) + /* #swagger.responses[500] = { + description: "Server Failure.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/ErrorResponse" } + } + } + } + */ + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Restarts the session with the given session ID. + * + * @function + * @async + * @param {Object} req - The HTTP request object. + * @param {Object} res - The HTTP response object. + * @param {string} req.params.sessionId - The session ID to terminate. + * @returns {Promise} + * @throws {Error} If there was an error terminating the session. + */ +const restartSession = async (req, res) => { + // #swagger.summary = 'Restart session' + // #swagger.description = 'Restarts the session with the given session ID.' + try { + const sessionId = req.params.sessionId + const validation = await validateSession(sessionId) + if (validation.message === 'session_not_found') { + return res.json(validation) + } + await reloadSession(sessionId) + /* #swagger.responses[200] = { + description: "Sessions restarted.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/RestartSessionResponse" } + } + } + } + */ + res.json({ success: true, message: 'Restarted successfully' }) + } catch (error) { + /* #swagger.responses[500] = { + description: "Server Failure.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/ErrorResponse" } + } + } + } + */ + console.log('restartSession ERROR', error) + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Terminates the session with the given session ID. + * + * @function + * @async + * @param {Object} req - The HTTP request object. + * @param {Object} res - The HTTP response object. + * @param {string} req.params.sessionId - The session ID to terminate. + * @returns {Promise} + * @throws {Error} If there was an error terminating the session. + */ +const terminateSession = async (req, res) => { + // #swagger.summary = 'Terminate session' + // #swagger.description = 'Terminates the session with the given session ID.' + try { + const sessionId = req.params.sessionId + const validation = await validateSession(sessionId) + if (validation.message === 'session_not_found') { + return res.json(validation) + } + await deleteSession(sessionId, validation) + /* #swagger.responses[200] = { + description: "Sessions terminated.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/TerminateSessionResponse" } + } + } + } + */ + res.json({ success: true, message: 'Logged out successfully' }) + } catch (error) { + /* #swagger.responses[500] = { + description: "Server Failure.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/ErrorResponse" } + } + } + } + */ + console.log('terminateSession ERROR', error) + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Terminates all inactive sessions. + * + * @function + * @async + * @param {Object} req - The HTTP request object. + * @param {Object} res - The HTTP response object. + * @returns {Promise} + * @throws {Error} If there was an error terminating the sessions. + */ +const terminateInactiveSessions = async (req, res) => { + // #swagger.summary = 'Terminate inactive sessions' + // #swagger.description = 'Terminates all inactive sessions.' + try { + await flushSessions(true) + /* #swagger.responses[200] = { + description: "Sessions terminated.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/TerminateSessionsResponse" } + } + } + } + */ + res.json({ success: true, message: 'Flush completed successfully' }) + } catch (error) { + /* #swagger.responses[500] = { + description: "Server Failure.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/ErrorResponse" } + } + } + } + */ + console.log('terminateInactiveSessions ERROR', error) + sendErrorResponse(res, 500, error.message) + } +} + +/** + * Terminates all sessions. + * + * @function + * @async + * @param {Object} req - The HTTP request object. + * @param {Object} res - The HTTP response object. + * @returns {Promise} + * @throws {Error} If there was an error terminating the sessions. + */ +const terminateAllSessions = async (req, res) => { + // #swagger.summary = 'Terminate all sessions' + // #swagger.description = 'Terminates all sessions.' + try { + await flushSessions(false) + /* #swagger.responses[200] = { + description: "Sessions terminated.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/TerminateSessionsResponse" } + } + } + } + */ + res.json({ success: true, message: 'Flush completed successfully' }) + } catch (error) { + /* #swagger.responses[500] = { + description: "Server Failure.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/ErrorResponse" } + } + } + } + */ + console.log('terminateAllSessions ERROR', error) + sendErrorResponse(res, 500, error.message) + } +} + +module.exports = { + startSession, + statusSession, + sessionQrCode, + sessionQrCodeImage, + restartSession, + terminateSession, + terminateInactiveSessions, + terminateAllSessions +} diff --git a/src/middleware.js b/src/middleware.js new file mode 100644 index 0000000..17926ab --- /dev/null +++ b/src/middleware.js @@ -0,0 +1,188 @@ +const { globalApiKey, rateLimitMax, rateLimitWindowMs } = require('./config') +const { sendErrorResponse } = require('./utils') +const { validateSession } = require('./sessions') +const rateLimiting = require('express-rate-limit') + +const apikey = async (req, res, next) => { + /* + #swagger.security = [{ + "apiKeyAuth": [] + }] + */ + /* #swagger.responses[403] = { + description: "Forbidden.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/ForbiddenResponse" } + } + } + } + */ + if (globalApiKey) { + const apiKey = req.headers['x-api-key'] + if (!apiKey || apiKey !== globalApiKey) { + return sendErrorResponse(res, 403, 'Invalid API key') + } + } + next() +} + +const sessionNameValidation = async (req, res, next) => { + /* + #swagger.parameters['sessionId'] = { + in: 'path', + description: 'Unique identifier for the session (alphanumeric and - allowed)', + required: true, + type: 'string', + example: 'f8377d8d-a589-4242-9ba6-9486a04ef80c' + } + */ + if ((!/^[\w-]+$/.test(req.params.sessionId))) { + /* #swagger.responses[422] = { + description: "Unprocessable Entity.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/ErrorResponse" } + } + } + } + */ + return sendErrorResponse(res, 422, 'Session should be alphanumerical or -') + } + next() +} + +const sessionValidation = async (req, res, next) => { + const validation = await validateSession(req.params.sessionId) + if (validation.success !== true) { + /* #swagger.responses[404] = { + description: "Not Found.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/NotFoundResponse" } + } + } + } + */ + return sendErrorResponse(res, 404, validation.message) + } + next() +} + +const rateLimiter = rateLimiting({ + limit: rateLimitMax, + windowMs: rateLimitWindowMs, + message: "You can't make any more requests at the moment. Try again later" +}) + +const sessionSwagger = async (req, res, next) => { + /* + #swagger.tags = ['Session'] + */ + next() +} + +const clientSwagger = async (req, res, next) => { + /* + #swagger.tags = ['Client'] + */ + next() +} + +const contactSwagger = async (req, res, next) => { + /* + #swagger.tags = ['Contact'] + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + contactId: { + type: 'string', + description: 'Unique whatsApp identifier for the contact', + example: '6281288888888@c.us' + } + } + } + } + */ + next() +} + +const messageSwagger = async (req, res, next) => { + /* + #swagger.tags = ['Message'] + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'The Chat id which contains the message', + example: '6281288888888@c.us' + }, + messageId: { + type: 'string', + description: 'Unique whatsApp identifier for the message', + example: 'ABCDEF999999999' + } + } + } + } + */ + next() +} + +const chatSwagger = async (req, res, next) => { + /* + #swagger.tags = ['Chat'] + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'Unique whatsApp identifier for the given Chat (either group or personnal)', + example: '6281288888888@c.us' + } + } + } + } + */ + next() +} + +const groupChatSwagger = async (req, res, next) => { + /* + #swagger.tags = ['Group Chat'] + #swagger.requestBody = { + required: true, + schema: { + type: 'object', + properties: { + chatId: { + type: 'string', + description: 'Unique whatsApp identifier for the given Chat (either group or personnal)', + example: '6281288888888@c.us' + } + } + } + } + */ + next() +} + +module.exports = { + sessionValidation, + apikey, + sessionNameValidation, + sessionSwagger, + clientSwagger, + contactSwagger, + messageSwagger, + chatSwagger, + groupChatSwagger, + rateLimiter +} diff --git a/src/routes.js b/src/routes.js new file mode 100644 index 0000000..8f0ffdd --- /dev/null +++ b/src/routes.js @@ -0,0 +1,191 @@ +const express = require('express') +const routes = express.Router() +const swaggerUi = require('swagger-ui-express') +const swaggerDocument = require('../swagger.json') +const { enableLocalCallbackExample, enableSwaggerEndpoint } = require('./config') + +const middleware = require('./middleware') +const healthController = require('./controllers/healthController') +const sessionController = require('./controllers/sessionController') +const clientController = require('./controllers/clientController') +const chatController = require('./controllers/chatController') +const groupChatController = require('./controllers/groupChatController') +const messageController = require('./controllers/messageController') +const contactController = require('./controllers/contactController') + +/** + * ================ + * HEALTH ENDPOINTS + * ================ + */ + +// API endpoint to check if server is alive +routes.get('/ping', healthController.ping) +// API basic callback +if (enableLocalCallbackExample) { + routes.post('/localCallbackExample', [middleware.apikey, middleware.rateLimiter], healthController.localCallbackExample) +} + +/** + * ================ + * SESSION ENDPOINTS + * ================ + */ +const sessionRouter = express.Router() +sessionRouter.use(middleware.apikey) +sessionRouter.use(middleware.sessionSwagger) +routes.use('/session', sessionRouter) + +sessionRouter.get('/start/:sessionId', middleware.sessionNameValidation, sessionController.startSession) +sessionRouter.get('/status/:sessionId', middleware.sessionNameValidation, sessionController.statusSession) +sessionRouter.get('/qr/:sessionId', middleware.sessionNameValidation, sessionController.sessionQrCode) +sessionRouter.get('/qr/:sessionId/image', middleware.sessionNameValidation, sessionController.sessionQrCodeImage) +sessionRouter.get('/restart/:sessionId', middleware.sessionNameValidation, sessionController.restartSession) +sessionRouter.get('/terminate/:sessionId', middleware.sessionNameValidation, sessionController.terminateSession) +sessionRouter.get('/terminateInactive', sessionController.terminateInactiveSessions) +sessionRouter.get('/terminateAll', sessionController.terminateAllSessions) + +/** + * ================ + * CLIENT ENDPOINTS + * ================ + */ + +const clientRouter = express.Router() +clientRouter.use(middleware.apikey) +sessionRouter.use(middleware.clientSwagger) +routes.use('/client', clientRouter) + +clientRouter.get('/getClassInfo/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getClassInfo) +clientRouter.post('/acceptInvite/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.acceptInvite) +clientRouter.post('/archiveChat/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.archiveChat) +clientRouter.post('/createGroup/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.createGroup) +clientRouter.post('/getBlockedContacts/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getBlockedContacts) +clientRouter.post('/getChatById/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getChatById) +clientRouter.post('/getChatLabels/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getChatLabels) +clientRouter.get('/getChats/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getChats) +clientRouter.post('/getChatsByLabelId/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getChatsByLabelId) +clientRouter.post('/getCommonGroups/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getCommonGroups) +clientRouter.post('/getContactById/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getContactById) +clientRouter.get('/getContacts/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getContacts) +clientRouter.post('/getInviteInfo/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getInviteInfo) +clientRouter.post('/getLabelById/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getLabelById) +clientRouter.post('/getLabels/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getLabels) +clientRouter.post('/addOrRemoveLabels/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.addOrRemoveLabels) +clientRouter.post('/getNumberId/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getNumberId) +clientRouter.post('/isRegisteredUser/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.isRegisteredUser) +clientRouter.post('/getProfilePicUrl/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getProfilePictureUrl) +clientRouter.get('/getState/:sessionId', [middleware.sessionNameValidation], clientController.getState) +clientRouter.post('/markChatUnread/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.markChatUnread) +clientRouter.post('/muteChat/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.muteChat) +clientRouter.post('/pinChat/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.pinChat) +clientRouter.post('/searchMessages/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.searchMessages) +clientRouter.post('/sendMessage/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.sendMessage) +clientRouter.post('/sendPresenceAvailable/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.sendPresenceAvailable) +clientRouter.post('/sendPresenceUnavailable/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.sendPresenceUnavailable) +clientRouter.post('/sendSeen/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.sendSeen) +clientRouter.post('/setDisplayName/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.setDisplayName) +clientRouter.post('/setProfilePicture/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.setProfilePicture) +clientRouter.post('/setStatus/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.setStatus) +clientRouter.post('/unarchiveChat/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.unarchiveChat) +clientRouter.post('/unmuteChat/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.unmuteChat) +clientRouter.post('/unpinChat/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.unpinChat) +clientRouter.get('/getWWebVersion/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], clientController.getWWebVersion) + +/** + * ================ + * CHAT ENDPOINTS + * ================ + */ +const chatRouter = express.Router() +chatRouter.use(middleware.apikey) +sessionRouter.use(middleware.chatSwagger) +routes.use('/chat', chatRouter) + +chatRouter.post('/getClassInfo/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], chatController.getClassInfo) +chatRouter.post('/clearMessages/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], chatController.clearMessages) +chatRouter.post('/clearState/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], chatController.clearState) +chatRouter.post('/delete/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], chatController.deleteChat) +chatRouter.post('/fetchMessages/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], chatController.fetchMessages) +chatRouter.post('/getContact/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], chatController.getContact) +chatRouter.post('/sendStateRecording/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], chatController.sendStateRecording) +chatRouter.post('/sendStateTyping/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], chatController.sendStateTyping) + +/** + * ================ + * GROUP CHAT ENDPOINTS + * ================ + */ +const groupChatRouter = express.Router() +groupChatRouter.use(middleware.apikey) +sessionRouter.use(middleware.groupChatSwagger) +routes.use('/groupChat', groupChatRouter) + +groupChatRouter.post('/getClassInfo/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.getClassInfo) +groupChatRouter.post('/addParticipants/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.addParticipants) +groupChatRouter.post('/demoteParticipants/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.demoteParticipants) +groupChatRouter.post('/getInviteCode/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.getInviteCode) +groupChatRouter.post('/leave/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.leave) +groupChatRouter.post('/promoteParticipants/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.promoteParticipants) +groupChatRouter.post('/removeParticipants/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.removeParticipants) +groupChatRouter.post('/revokeInvite/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.revokeInvite) +groupChatRouter.post('/setDescription/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.setDescription) +groupChatRouter.post('/setInfoAdminsOnly/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.setInfoAdminsOnly) +groupChatRouter.post('/setMessagesAdminsOnly/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.setMessagesAdminsOnly) +groupChatRouter.post('/setSubject/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.setSubject) +groupChatRouter.post('/setPicture/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.setPicture) +groupChatRouter.post('/deletePicture/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], groupChatController.deletePicture) + +/** + * ================ + * MESSAGE ENDPOINTS + * ================ + */ +const messageRouter = express.Router() +messageRouter.use(middleware.apikey) +sessionRouter.use(middleware.messageSwagger) +routes.use('/message', messageRouter) + +messageRouter.post('/getClassInfo/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.getClassInfo) +messageRouter.post('/delete/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.deleteMessage) +messageRouter.post('/downloadMedia/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.downloadMedia) +messageRouter.post('/forward/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.forward) +messageRouter.post('/getInfo/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.getInfo) +messageRouter.post('/getMentions/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.getMentions) +messageRouter.post('/getOrder/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.getOrder) +messageRouter.post('/getPayment/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.getPayment) +messageRouter.post('/getQuotedMessage/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.getQuotedMessage) +messageRouter.post('/react/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.react) +messageRouter.post('/reply/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.reply) +messageRouter.post('/star/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.star) +messageRouter.post('/unstar/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], messageController.unstar) + +/** + * ================ + * MESSAGE ENDPOINTS + * ================ + */ +const contactRouter = express.Router() +contactRouter.use(middleware.apikey) +sessionRouter.use(middleware.contactSwagger) +routes.use('/contact', contactRouter) + +contactRouter.post('/getClassInfo/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], contactController.getClassInfo) +contactRouter.post('/block/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], contactController.block) +contactRouter.post('/getAbout/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], contactController.getAbout) +contactRouter.post('/getChat/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], contactController.getChat) +contactRouter.post('/unblock/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], contactController.unblock) +contactRouter.post('/getFormattedNumber/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], contactController.getFormattedNumber) +contactRouter.post('/getCountryCode/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], contactController.getCountryCode) +contactRouter.post('/getProfilePicUrl/:sessionId', [middleware.sessionNameValidation, middleware.sessionValidation], contactController.getProfilePicUrl) +/** + * ================ + * SWAGGER ENDPOINTS + * ================ + */ +if (enableSwaggerEndpoint) { + routes.use('/api-docs', swaggerUi.serve) + routes.get('/api-docs', swaggerUi.setup(swaggerDocument) /* #swagger.ignore = true */) +} + +module.exports = { routes } diff --git a/src/sessions.js b/src/sessions.js new file mode 100644 index 0000000..2278b4d --- /dev/null +++ b/src/sessions.js @@ -0,0 +1,474 @@ +const { Client, LocalAuth } = require('whatsapp-web.js') +const fs = require('fs') +const path = require('path') +const sessions = new Map() +const { baseWebhookURL, sessionFolderPath, maxAttachmentSize, setMessagesAsSeen, webVersion, webVersionCacheType, recoverSessions, chromeBin, headless } = require('./config') +const { triggerWebhook, waitForNestedObject, checkIfEventisEnabled } = require('./utils') + +// Function to validate if the session is ready +const validateSession = async (sessionId) => { + try { + const returnData = { success: false, state: null, message: '' } + + // Session not Connected 😢 + if (!sessions.has(sessionId) || !sessions.get(sessionId)) { + returnData.message = 'session_not_found' + return returnData + } + + const client = sessions.get(sessionId) + // wait until the client is created + await waitForNestedObject(client, 'pupPage') + .catch((err) => { return { success: false, state: null, message: err.message } }) + + // Wait for client.pupPage to be evaluable + let maxRetry = 0 + while (true) { + try { + if (client.pupPage.isClosed()) { + return { success: false, state: null, message: 'browser tab closed' } + } + await Promise.race([ + client.pupPage.evaluate('1'), + new Promise(resolve => setTimeout(resolve, 1000)) + ]) + break + } catch (error) { + if (maxRetry === 2) { + return { success: false, state: null, message: 'session closed' } + } + maxRetry++ + } + } + + const state = await client.getState() + returnData.state = state + if (state !== 'CONNECTED') { + returnData.message = 'session_not_connected' + return returnData + } + + // Session Connected 🎉 + returnData.success = true + returnData.message = 'session_connected' + return returnData + } catch (error) { + console.log(error) + return { success: false, state: null, message: error.message } + } +} + +// Function to handle client session restoration +const restoreSessions = () => { + try { + if (!fs.existsSync(sessionFolderPath)) { + fs.mkdirSync(sessionFolderPath) // Create the session directory if it doesn't exist + } + // Read the contents of the folder + fs.readdir(sessionFolderPath, (_, files) => { + // Iterate through the files in the parent folder + for (const file of files) { + // Use regular expression to extract the string from the folder name + const match = file.match(/^session-(.+)$/) + if (match) { + const sessionId = match[1] + console.log('existing session detected', sessionId) + setupSession(sessionId) + } + } + }) + } catch (error) { + console.log(error) + console.error('Failed to restore sessions:', error) + } +} + +// Setup Session +const setupSession = (sessionId) => { + try { + if (sessions.has(sessionId)) { + return { success: false, message: `Session already exists for: ${sessionId}`, client: sessions.get(sessionId) } + } + + // Disable the delete folder from the logout function (will be handled separately) + const localAuth = new LocalAuth({ clientId: sessionId, dataPath: sessionFolderPath }) + delete localAuth.logout + localAuth.logout = () => { } + + const clientOptions = { + puppeteer: { + executablePath: chromeBin, + headless, + args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-gpu', '--disable-dev-shm-usage'] + }, + authStrategy: localAuth + } + + if (webVersion) { + clientOptions.webVersion = webVersion + switch (webVersionCacheType.toLowerCase()) { + case 'local': + clientOptions.webVersionCache = { + type: 'local' + } + break + case 'remote': + clientOptions.webVersionCache = { + type: 'remote', + remotePath: 'https://raw.githubusercontent.com/wppconnect-team/wa-version/main/html/' + webVersion + '.html' + } + break + default: + clientOptions.webVersionCache = { + type: 'none' + } + } + } + + const client = new Client(clientOptions) + + client.initialize().catch(err => console.log('Initialize error:', err.message)) + + initializeEvents(client, sessionId) + + // Save the session to the Map + sessions.set(sessionId, client) + return { success: true, message: 'Session initiated successfully', client } + } catch (error) { + return { success: false, message: error.message, client: null } + } +} + +const initializeEvents = (client, sessionId) => { + // check if the session webhook is overridden + const sessionWebhook = process.env[sessionId.toUpperCase() + '_WEBHOOK_URL'] || baseWebhookURL + + if (recoverSessions) { + waitForNestedObject(client, 'pupPage').then(() => { + const restartSession = async (sessionId) => { + sessions.delete(sessionId) + await client.destroy().catch(e => { }) + setupSession(sessionId) + } + client.pupPage.once('close', function () { + // emitted when the page closes + console.log(`Browser page closed for ${sessionId}. Restoring`) + restartSession(sessionId) + }) + client.pupPage.once('error', function () { + // emitted when the page crashes + console.log(`Error occurred on browser page for ${sessionId}. Restoring`) + restartSession(sessionId) + }) + }).catch(e => { }) + } + + checkIfEventisEnabled('auth_failure') + .then(_ => { + client.on('auth_failure', (msg) => { + triggerWebhook(sessionWebhook, sessionId, 'status', { msg }) + }) + }) + + checkIfEventisEnabled('authenticated') + .then(_ => { + client.on('authenticated', () => { + triggerWebhook(sessionWebhook, sessionId, 'authenticated') + }) + }) + + checkIfEventisEnabled('call') + .then(_ => { + client.on('call', async (call) => { + triggerWebhook(sessionWebhook, sessionId, 'call', { call }) + }) + }) + + checkIfEventisEnabled('change_state') + .then(_ => { + client.on('change_state', state => { + triggerWebhook(sessionWebhook, sessionId, 'change_state', { state }) + }) + }) + + checkIfEventisEnabled('disconnected') + .then(_ => { + client.on('disconnected', (reason) => { + triggerWebhook(sessionWebhook, sessionId, 'disconnected', { reason }) + }) + }) + + checkIfEventisEnabled('group_join') + .then(_ => { + client.on('group_join', (notification) => { + triggerWebhook(sessionWebhook, sessionId, 'group_join', { notification }) + }) + }) + + checkIfEventisEnabled('group_leave') + .then(_ => { + client.on('group_leave', (notification) => { + triggerWebhook(sessionWebhook, sessionId, 'group_leave', { notification }) + }) + }) + + checkIfEventisEnabled('group_update') + .then(_ => { + client.on('group_update', (notification) => { + triggerWebhook(sessionWebhook, sessionId, 'group_update', { notification }) + }) + }) + + checkIfEventisEnabled('loading_screen') + .then(_ => { + client.on('loading_screen', (percent, message) => { + triggerWebhook(sessionWebhook, sessionId, 'loading_screen', { percent, message }) + }) + }) + + checkIfEventisEnabled('media_uploaded') + .then(_ => { + client.on('media_uploaded', (message) => { + triggerWebhook(sessionWebhook, sessionId, 'media_uploaded', { message }) + }) + }) + + checkIfEventisEnabled('message') + .then(_ => { + client.on('message', async (message) => { + triggerWebhook(sessionWebhook, sessionId, 'message', { message }) + if (message.hasMedia && message._data?.size < maxAttachmentSize) { + // custom service event + checkIfEventisEnabled('media').then(_ => { + message.downloadMedia().then(messageMedia => { + triggerWebhook(sessionWebhook, sessionId, 'media', { messageMedia, message }) + }).catch(e => { + console.log('Download media error:', e.message) + }) + }) + } + if (setMessagesAsSeen) { + const chat = await message.getChat() + chat.sendSeen() + } + }) + }) + + checkIfEventisEnabled('message_ack') + .then(_ => { + client.on('message_ack', async (message, ack) => { + triggerWebhook(sessionWebhook, sessionId, 'message_ack', { message, ack }) + if (setMessagesAsSeen) { + const chat = await message.getChat() + chat.sendSeen() + } + }) + }) + + checkIfEventisEnabled('message_create') + .then(_ => { + client.on('message_create', async (message) => { + triggerWebhook(sessionWebhook, sessionId, 'message_create', { message }) + if (setMessagesAsSeen) { + const chat = await message.getChat() + chat.sendSeen() + } + }) + }) + + checkIfEventisEnabled('message_reaction') + .then(_ => { + client.on('message_reaction', (reaction) => { + triggerWebhook(sessionWebhook, sessionId, 'message_reaction', { reaction }) + }) + }) + + checkIfEventisEnabled('message_edit') + .then(_ => { + client.on('message_edit', (message, newBody, prevBody) => { + triggerWebhook(sessionWebhook, sessionId, 'message_edit', { message, newBody, prevBody }) + }) + }) + + checkIfEventisEnabled('message_ciphertext') + .then(_ => { + client.on('message_ciphertext', (message) => { + triggerWebhook(sessionWebhook, sessionId, 'message_ciphertext', { message }) + }) + }) + + checkIfEventisEnabled('message_revoke_everyone') + .then(_ => { + // eslint-disable-next-line camelcase + client.on('message_revoke_everyone', async (message) => { + // eslint-disable-next-line camelcase + triggerWebhook(sessionWebhook, sessionId, 'message_revoke_everyone', { message }) + }) + }) + + checkIfEventisEnabled('message_revoke_me') + .then(_ => { + client.on('message_revoke_me', async (message) => { + triggerWebhook(sessionWebhook, sessionId, 'message_revoke_me', { message }) + }) + }) + + client.on('qr', (qr) => { + // inject qr code into session + client.qr = qr + checkIfEventisEnabled('qr') + .then(_ => { + triggerWebhook(sessionWebhook, sessionId, 'qr', { qr }) + }) + }) + + checkIfEventisEnabled('ready') + .then(_ => { + client.on('ready', () => { + triggerWebhook(sessionWebhook, sessionId, 'ready') + }) + }) + + checkIfEventisEnabled('contact_changed') + .then(_ => { + client.on('contact_changed', async (message, oldId, newId, isContact) => { + triggerWebhook(sessionWebhook, sessionId, 'contact_changed', { message, oldId, newId, isContact }) + }) + }) + + checkIfEventisEnabled('chat_removed') + .then(_ => { + client.on('chat_removed', async (chat) => { + triggerWebhook(sessionWebhook, sessionId, 'chat_removed', { chat }) + }) + }) + + checkIfEventisEnabled('chat_archived') + .then(_ => { + client.on('chat_archived', async (chat, currState, prevState) => { + triggerWebhook(sessionWebhook, sessionId, 'chat_archived', { chat, currState, prevState }) + }) + }) + + checkIfEventisEnabled('unread_count') + .then(_ => { + client.on('unread_count', async (chat) => { + triggerWebhook(sessionWebhook, sessionId, 'unread_count', { chat }) + }) + }) +} + +// Function to delete client session folder +const deleteSessionFolder = async (sessionId) => { + try { + const targetDirPath = path.join(sessionFolderPath, `session-${sessionId}`) + const resolvedTargetDirPath = await fs.promises.realpath(targetDirPath) + const resolvedSessionPath = await fs.promises.realpath(sessionFolderPath) + + // Ensure the target directory path ends with a path separator + const safeSessionPath = `${resolvedSessionPath}${path.sep}` + + // Validate the resolved target directory path is a subdirectory of the session folder path + if (!resolvedTargetDirPath.startsWith(safeSessionPath)) { + throw new Error('Invalid path: Directory traversal detected') + } + await fs.promises.rm(resolvedTargetDirPath, { recursive: true, force: true }) + } catch (error) { + console.log('Folder deletion error', error) + throw error + } +} + +// Function to reload client session without removing browser cache +const reloadSession = async (sessionId) => { + try { + const client = sessions.get(sessionId) + if (!client) { + return + } + client.pupPage?.removeAllListeners('close') + client.pupPage?.removeAllListeners('error') + try { + const pages = await client.pupBrowser.pages() + await Promise.all(pages.map((page) => page.close())) + await Promise.race([ + client.pupBrowser.close(), + new Promise(resolve => setTimeout(resolve, 5000)) + ]) + } catch (e) { + const childProcess = client.pupBrowser.process() + if (childProcess) { + childProcess.kill(9) + } + } + sessions.delete(sessionId) + setupSession(sessionId) + } catch (error) { + console.log(error) + throw error + } +} + +const deleteSession = async (sessionId, validation) => { + try { + const client = sessions.get(sessionId) + if (!client) { + return + } + client.pupPage?.removeAllListeners('close') + client.pupPage?.removeAllListeners('error') + if (validation.success) { + // Client Connected, request logout + console.log(`Logging out session ${sessionId}`) + await client.logout() + } else if (validation.message === 'session_not_connected') { + // Client not Connected, request destroy + console.log(`Destroying session ${sessionId}`) + await client.destroy() + } + // Wait 10 secs for client.pupBrowser to be disconnected before deleting the folder + let maxDelay = 0 + while (client.pupBrowser.isConnected() && (maxDelay < 10)) { + await new Promise(resolve => setTimeout(resolve, 1000)) + maxDelay++ + } + await deleteSessionFolder(sessionId) + sessions.delete(sessionId) + } catch (error) { + console.log(error) + throw error + } +} + +// Function to handle session flush +const flushSessions = async (deleteOnlyInactive) => { + try { + // Read the contents of the sessions folder + const files = await fs.promises.readdir(sessionFolderPath) + // Iterate through the files in the parent folder + for (const file of files) { + // Use regular expression to extract the string from the folder name + const match = file.match(/^session-(.+)$/) + if (match) { + const sessionId = match[1] + const validation = await validateSession(sessionId) + if (!deleteOnlyInactive || !validation.success) { + await deleteSession(sessionId, validation) + } + } + } + } catch (error) { + console.log(error) + throw error + } +} + +module.exports = { + sessions, + setupSession, + restoreSessions, + validateSession, + deleteSession, + reloadSession, + flushSessions +} diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 0000000..8943a42 --- /dev/null +++ b/src/utils.js @@ -0,0 +1,46 @@ +const axios = require('axios') +const { globalApiKey, disabledCallbacks } = require('./config') + +// Trigger webhook endpoint +const triggerWebhook = (webhookURL, sessionId, dataType, data) => { + axios.post(webhookURL, { dataType, data, sessionId }, { headers: { 'x-api-key': globalApiKey } }) + .catch(error => console.error('Failed to send new message webhook:', sessionId, dataType, error.message, data || '')) +} + +// Function to send a response with error status and message +const sendErrorResponse = (res, status, message) => { + res.status(status).json({ success: false, error: message }) +} + +// Function to wait for a specific item not to be null +const waitForNestedObject = (rootObj, nestedPath, maxWaitTime = 10000, interval = 100) => { + const start = Date.now() + return new Promise((resolve, reject) => { + const checkObject = () => { + const nestedObj = nestedPath.split('.').reduce((obj, key) => obj ? obj[key] : undefined, rootObj) + if (nestedObj) { + // Nested object exists, resolve the promise + resolve() + } else if (Date.now() - start > maxWaitTime) { + // Maximum wait time exceeded, reject the promise + console.log('Timed out waiting for nested object') + reject(new Error('Timeout waiting for nested object')) + } else { + // Nested object not yet created, continue waiting + setTimeout(checkObject, interval) + } + } + checkObject() + }) +} + +const checkIfEventisEnabled = (event) => { + return new Promise((resolve, reject) => { if (!disabledCallbacks.includes(event)) { resolve() } }) +} + +module.exports = { + triggerWebhook, + sendErrorResponse, + waitForNestedObject, + checkIfEventisEnabled +} diff --git a/swagger.js b/swagger.js new file mode 100644 index 0000000..733704d --- /dev/null +++ b/swagger.js @@ -0,0 +1,80 @@ +const swaggerAutogen = require('swagger-autogen')({ openapi: '3.0.0', autoBody: false }) + +const outputFile = './swagger.json' +const endpointsFiles = ['./src/routes.js'] + +const doc = { + info: { + title: 'WWebJS API', + description: 'API wrapper for WhatsAppWebJS' + }, + servers: [ + { + url: '', + description: '' + }, + { + url: 'http://localhost:3000', + description: 'localhost' + } + ], + securityDefinitions: { + apiKeyAuth: { + type: 'apiKey', + in: 'header', + name: 'x-api-key' + } + }, + produces: ['application/json'], + tags: [ + { + name: 'Session', + description: 'Handling multiple sessions logic, creation and deletion' + }, + { + name: 'Client', + description: 'All functions related to the client' + }, + { + name: 'Message', + description: 'May fail if the message is too old (Only from the last 100 Messages of the given chat)' + } + ], + definitions: { + StartSessionResponse: { + success: true, + message: 'Session initiated successfully' + }, + StatusSessionResponse: { + success: true, + state: 'CONNECTED', + message: 'session_connected' + }, + RestartSessionResponse: { + success: true, + message: 'Restarted successfully' + }, + TerminateSessionResponse: { + success: true, + message: 'Logged out successfully' + }, + TerminateSessionsResponse: { + success: true, + message: 'Flush completed successfully' + }, + ErrorResponse: { + success: false, + error: 'Some server error' + }, + NotFoundResponse: { + success: false, + error: 'Some server error' + }, + ForbiddenResponse: { + success: false, + error: 'Invalid API key' + } + } +} + +swaggerAutogen(outputFile, endpointsFiles, doc) diff --git a/swagger.json b/swagger.json new file mode 100644 index 0000000..70c34e0 --- /dev/null +++ b/swagger.json @@ -0,0 +1,7643 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "WWebJS API", + "description": "API wrapper for WhatsAppWebJS", + "version": "1.0.0" + }, + "servers": [ + { + "url": "", + "description": "" + }, + { + "url": "http://localhost:3000", + "description": "localhost" + } + ], + "tags": [ + { + "name": "Session", + "description": "Handling multiple sessions logic, creation and deletion" + }, + { + "name": "Client", + "description": "All functions related to the client" + }, + { + "name": "Message", + "description": "May fail if the message is too old (Only from the last 100 Messages of the given chat)" + } + ], + "paths": { + "/ping": { + "get": { + "tags": [ + "Various" + ], + "description": "", + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/localCallbackExample": { + "post": { + "tags": [ + "Various" + ], + "description": "", + "parameters": [ + { + "name": "x-api-key", + "in": "header", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/session/start/{sessionId}": { + "get": { + "tags": [ + "Session" + ], + "summary": "Start new session", + "description": "Starts a session for the given session ID.", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "Status of the initiated session.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartSessionResponse" + } + } + } + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Server Failure.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/session/status/{sessionId}": { + "get": { + "tags": [ + "Session" + ], + "summary": "Get session status", + "description": "Status of the session with the given session ID.", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "Status of the session.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StatusSessionResponse" + } + } + } + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Server Failure.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/session/qr/{sessionId}": { + "get": { + "tags": [ + "Session" + ], + "summary": "Get session QR code", + "description": "QR code of the session with the given session ID.", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Server Failure.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/session/qr/{sessionId}/image": { + "get": { + "tags": [ + "Session" + ], + "summary": "Get session QR code as image", + "description": "QR code as image of the session with the given session ID.", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "QR image.", + "content": { + "image/png": {} + } + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Server Failure.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/session/restart/{sessionId}": { + "get": { + "tags": [ + "Session" + ], + "summary": "Restart session", + "description": "Restarts the session with the given session ID.", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "Sessions restarted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestartSessionResponse" + } + } + } + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Server Failure.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/session/terminate/{sessionId}": { + "get": { + "tags": [ + "Session" + ], + "summary": "Terminate session", + "description": "Terminates the session with the given session ID.", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "Sessions terminated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TerminateSessionResponse" + } + } + } + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Server Failure.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/session/terminateInactive": { + "get": { + "tags": [ + "Session" + ], + "summary": "Terminate inactive sessions", + "description": "Terminates all inactive sessions.", + "responses": { + "200": { + "description": "Sessions terminated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TerminateSessionsResponse" + } + } + } + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "500": { + "description": "Server Failure.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/session/terminateAll": { + "get": { + "tags": [ + "Session" + ], + "summary": "Terminate all sessions", + "description": "Terminates all sessions.", + "responses": { + "200": { + "description": "Sessions terminated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TerminateSessionsResponse" + } + } + } + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "500": { + "description": "Server Failure.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/client/getClassInfo/{sessionId}": { + "get": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/client/acceptInvite/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "inviteCode": { + "type": "string", + "description": "Invitation code", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "inviteCode": { + "type": "string", + "description": "Invitation code", + "example": "" + } + } + } + } + } + } + } + }, + "/client/archiveChat/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + } + } + } + } + }, + "/client/createGroup/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/client/getBlockedContacts/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/client/getChatById/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + } + } + } + } + }, + "/client/getChatLabels/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + } + } + } + } + }, + "/client/getChats/{sessionId}": { + "get": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/client/getChatsByLabelId/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "labelId": { + "type": "string", + "description": "ID of the label", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "labelId": { + "type": "string", + "description": "ID of the label", + "example": "" + } + } + } + } + } + } + } + }, + "/client/getCommonGroups/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "The whatsapp user's ID (_serialized format)", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "The whatsapp user's ID (_serialized format)", + "example": "" + } + } + } + } + } + } + } + }, + "/client/getContactById/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "The whatsapp user's ID", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "The whatsapp user's ID", + "example": "" + } + } + } + } + } + } + } + }, + "/client/getContacts/{sessionId}": { + "get": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/client/getInviteInfo/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "inviteCode": { + "type": "string", + "description": "Invitation code", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "inviteCode": { + "type": "string", + "description": "Invitation code", + "example": "" + } + } + } + } + } + } + } + }, + "/client/getLabelById/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "labelId": { + "type": "string", + "description": "ID of the label", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "labelId": { + "type": "string", + "description": "ID of the label", + "example": "" + } + } + } + } + } + } + } + }, + "/client/getLabels/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/client/addOrRemoveLabels/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "labelIds": { + "type": "array", + "description": "Array of label IDs", + "example": [] + }, + "chatIds": { + "type": "array", + "description": "Array of chat IDs", + "example": [] + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "labelIds": { + "type": "array", + "description": "Array of label IDs", + "example": [] + }, + "chatIds": { + "type": "array", + "description": "Array of chat IDs", + "example": [] + } + } + } + } + } + } + } + }, + "/client/getNumberId/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "number": { + "type": "string", + "description": "The number or ID ('@c.us' will be automatically appended if not specified)", + "example": "6281288888888" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "number": { + "type": "string", + "description": "The number or ID ('@c.us' will be automatically appended if not specified)", + "example": "6281288888888" + } + } + } + } + } + } + } + }, + "/client/isRegisteredUser/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "number": { + "type": "string", + "description": "The number or ID ('@c.us' will be automatically appended if not specified)", + "example": "6281288888888" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "number": { + "type": "string", + "description": "The number or ID ('@c.us' will be automatically appended if not specified)", + "example": "6281288888888" + } + } + } + } + } + } + } + }, + "/client/getProfilePicUrl/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "The contact ID's of profile", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "The contact ID's of profile", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/client/getState/{sessionId}": { + "get": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/client/markChatUnread/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + } + } + } + } + }, + "/client/muteChat/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + }, + "unmuteDate": { + "type": "string", + "description": "Date when the chat will be muted, leave as is to mute forever", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + }, + "unmuteDate": { + "type": "string", + "description": "Date when the chat will be muted, leave as is to mute forever", + "example": "" + } + } + } + } + } + } + } + }, + "/client/pinChat/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + } + } + } + } + }, + "/client/searchMessages/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Search string", + "example": "" + }, + "options": { + "type": "object", + "description": "Search options", + "example": {} + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Search string", + "example": "" + }, + "options": { + "type": "object", + "description": "Search options", + "example": {} + } + } + } + } + } + } + } + }, + "/client/sendMessage/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message (Group or Individual)" + }, + "contentType": { + "type": "string", + "description": "The type of message content, must be one of the following: string, MessageMedia, MessageMediaFromURL, Location, Buttons, or List" + }, + "content": { + "type": "object", + "description": "The content of the message, can be a string or an object" + }, + "options": { + "type": "object", + "description": "The message send options" + } + } + }, + "examples": { + "string": { + "value": { + "chatId": "6281288888888@c.us", + "contentType": "string", + "content": "Hello World!" + } + }, + "MessageMedia": { + "value": { + "chatId": "6281288888888@c.us", + "contentType": "MessageMedia", + "content": { + "mimetype": "image/jpeg", + "data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=", + "filename": "image.jpg" + } + } + }, + "MessageMediaFromURL": { + "value": { + "chatId": "6281288888888@c.us", + "contentType": "MessageMediaFromURL", + "content": "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=Example" + } + }, + "Location": { + "value": { + "chatId": "6281288888888@c.us", + "contentType": "Location", + "content": { + "latitude": -6.2, + "longitude": 106.8, + "description": "Jakarta" + } + } + }, + "Buttons": { + "value": { + "chatId": "6281288888888@c.us", + "contentType": "Buttons", + "content": { + "body": "Hello World!", + "buttons": [ + { + "body": "button 1" + } + ], + "title": "Hello World!", + "footer": "Hello World!" + } + } + }, + "List": { + "value": { + "chatId": "6281288888888@c.us", + "contentType": "List", + "content": { + "body": "Hello World!", + "buttonText": "Hello World!", + "sections": [ + { + "title": "sectionTitle", + "rows": [ + { + "id": "customId", + "title": "ListItem2", + "description": "desc" + }, + { + "title": "ListItem2" + } + ] + } + ], + "title": "Hello World!", + "footer": "Hello World!" + } + } + }, + "Contact": { + "value": { + "chatId": "6281288888888@c.us", + "contentType": "Contact", + "content": { + "contactId": "6281288888889@c.us" + } + } + }, + "Poll": { + "value": { + "chatId": "6281288888888@c.us", + "contentType": "Poll", + "content": { + "pollName": "Cats or Dogs?", + "pollOptions": [ + "Cats", + "Dogs" + ], + "options": { + "allowMultipleAnswers": true + } + } + } + } + } + } + } + } + } + }, + "/client/sendPresenceAvailable/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/client/sendPresenceUnavailable/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/client/sendSeen/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + } + } + } + } + }, + "/client/setDisplayName/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "displayName": { + "type": "string", + "description": "New display name", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "displayName": { + "type": "string", + "description": "New display name", + "example": "" + } + } + } + } + } + } + } + }, + "/client/setProfilePicture/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "pictureMimetype": { + "type": "string", + "description": "The mimetype of the picture to set as the profile picture for the user WhatsApp account.", + "example": "image/png" + }, + "pictureData": { + "type": "string", + "description": "The base64 data of the picture to set as the profile picture for the user WhatsApp account.", + "example": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX +/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "pictureMimetype": { + "type": "string", + "description": "The mimetype of the picture to set as the profile picture for the user WhatsApp account.", + "example": "image/png" + }, + "pictureData": { + "type": "string", + "description": "The base64 data of the picture to set as the profile picture for the user WhatsApp account.", + "example": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX +/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=" + } + } + } + } + } + } + } + }, + "/client/setStatus/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "New status message", + "example": "I'm running WhatsApp Web Api" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "New status message", + "example": "I'm running WhatsApp Web Api" + } + } + } + } + } + } + } + }, + "/client/unarchiveChat/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + } + } + } + } + }, + "/client/unmuteChat/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + } + } + } + } + }, + "/client/unpinChat/{sessionId}": { + "post": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "ID of the chat", + "example": "" + } + } + } + } + } + } + } + }, + "/client/getWWebVersion/{sessionId}": { + "get": { + "tags": [ + "Client" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/chat/getClassInfo/{sessionId}": { + "post": { + "tags": [ + "Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/chat/clearMessages/{sessionId}": { + "post": { + "tags": [ + "Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/chat/clearState/{sessionId}": { + "post": { + "tags": [ + "Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/chat/delete/{sessionId}": { + "post": { + "tags": [ + "Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/chat/fetchMessages/{sessionId}": { + "post": { + "tags": [ + "Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + }, + "searchOptions": { + "type": "object", + "description": "Search options for fetching messages", + "example": "{}" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + }, + "searchOptions": { + "type": "object", + "description": "Search options for fetching messages", + "example": "{}" + } + } + } + } + } + } + } + }, + "/chat/getContact/{sessionId}": { + "post": { + "tags": [ + "Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/chat/sendStateRecording/{sessionId}": { + "post": { + "tags": [ + "Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/chat/sendStateTyping/{sessionId}": { + "post": { + "tags": [ + "Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/getClassInfo/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/addParticipants/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/demoteParticipants/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/getInviteCode/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/leave/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/promoteParticipants/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/removeParticipants/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/revokeInvite/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/setDescription/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/setInfoAdminsOnly/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/setMessagesAdminsOnly/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/setSubject/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/setPicture/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/groupChat/deletePicture/{sessionId}": { + "post": { + "tags": [ + "Group Chat" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "Unique whatsApp identifier for the given Chat (either group or personnal)", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/message/getClassInfo/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/delete/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/downloadMedia/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/forward/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/getInfo/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/getMentions/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/getOrder/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/getPayment/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/getQuotedMessage/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/react/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/reply/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/star/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/message/unstar/{sessionId}": { + "post": { + "tags": [ + "Message" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "chatId": { + "type": "string", + "description": "The Chat id which contains the message", + "example": "6281288888888@c.us" + }, + "messageId": { + "type": "string", + "description": "Unique whatsApp identifier for the message", + "example": "ABCDEF999999999" + } + } + } + } + } + } + } + }, + "/contact/getClassInfo/{sessionId}": { + "post": { + "tags": [ + "Contact" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/contact/block/{sessionId}": { + "post": { + "tags": [ + "Contact" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/contact/getAbout/{sessionId}": { + "post": { + "tags": [ + "Contact" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/contact/getChat/{sessionId}": { + "post": { + "tags": [ + "Contact" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/contact/unblock/{sessionId}": { + "post": { + "tags": [ + "Contact" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/contact/getFormattedNumber/{sessionId}": { + "post": { + "tags": [ + "Contact" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/contact/getCountryCode/{sessionId}": { + "post": { + "tags": [ + "Contact" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + }, + "/contact/getProfilePicUrl/{sessionId}": { + "post": { + "tags": [ + "Contact" + ], + "description": "", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the session (alphanumeric and - allowed)", + "example": "f8377d8d-a589-4242-9ba6-9486a04ef80c" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + }, + "application/xml": { + "schema": { + "type": "object", + "properties": { + "contactId": { + "type": "string", + "description": "Unique whatsApp identifier for the contact", + "example": "6281288888888@c.us" + } + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "StartSessionResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Session initiated successfully" + } + }, + "xml": { + "name": "StartSessionResponse" + } + }, + "StatusSessionResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "state": { + "type": "string", + "example": "CONNECTED" + }, + "message": { + "type": "string", + "example": "session_connected" + } + }, + "xml": { + "name": "StatusSessionResponse" + } + }, + "RestartSessionResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Restarted successfully" + } + }, + "xml": { + "name": "RestartSessionResponse" + } + }, + "TerminateSessionResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Logged out successfully" + } + }, + "xml": { + "name": "TerminateSessionResponse" + } + }, + "TerminateSessionsResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Flush completed successfully" + } + }, + "xml": { + "name": "TerminateSessionsResponse" + } + }, + "ErrorResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Some server error" + } + }, + "xml": { + "name": "ErrorResponse" + } + }, + "NotFoundResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Some server error" + } + }, + "xml": { + "name": "NotFoundResponse" + } + }, + "ForbiddenResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid API key" + } + }, + "xml": { + "name": "ForbiddenResponse" + } + } + }, + "securitySchemes": { + "apiKeyAuth": { + "type": "apiKey", + "in": "header", + "name": "x-api-key" + } + } + } +} \ No newline at end of file diff --git a/tests/api.test.js b/tests/api.test.js new file mode 100644 index 0000000..f1fef6f --- /dev/null +++ b/tests/api.test.js @@ -0,0 +1,143 @@ +const request = require('supertest') +const fs = require('fs') + +// Mock your application's environment variables +process.env.API_KEY = 'test_api_key' +process.env.SESSIONS_PATH = './sessions_test' +process.env.ENABLE_LOCAL_CALLBACK_EXAMPLE = 'TRUE' +process.env.BASE_WEBHOOK_URL = 'http://localhost:3000/localCallbackExample' + +const app = require('../src/app') +jest.mock('qrcode-terminal') + +let server +beforeAll(() => { + server = app.listen(3000) +}) + +beforeEach(async () => { + if (fs.existsSync('./sessions_test/message_log.txt')) { + fs.writeFileSync('./sessions_test/message_log.txt', '') + } +}) + +afterAll(() => { + server.close() + fs.rmSync('./sessions_test', { recursive: true, force: true }) +}) + +// Define test cases +describe('API health checks', () => { + it('should return valid healthcheck', async () => { + const response = await request(app).get('/ping') + expect(response.status).toBe(200) + expect(response.body).toEqual({ message: 'pong', success: true }) + }) + + it('should return a valid callback', async () => { + const response = await request(app).post('/localCallbackExample') + .set('x-api-key', 'test_api_key') + .send({ sessionId: '1', dataType: 'testDataType', data: 'testData' }) + expect(response.status).toBe(200) + expect(response.body).toEqual({ success: true }) + + expect(fs.existsSync('./sessions_test/message_log.txt')).toBe(true) + expect(fs.readFileSync('./sessions_test/message_log.txt', 'utf-8')).toEqual('{"sessionId":"1","dataType":"testDataType","data":"testData"}\r\n') + }) +}) + +describe('API Authentication Tests', () => { + it('should return 403 Forbidden for invalid API key', async () => { + const response = await request(app).get('/session/start/1') + expect(response.status).toBe(403) + expect(response.body).toEqual({ success: false, error: 'Invalid API key' }) + }) + + it('should fail invalid sessionId', async () => { + const response = await request(app).get('/session/start/ABCD1@').set('x-api-key', 'test_api_key') + expect(response.status).toBe(422) + expect(response.body).toEqual({ success: false, error: 'Session should be alphanumerical or -' }) + }) + + it('should setup and terminate a client session', async () => { + const response = await request(app).get('/session/start/1').set('x-api-key', 'test_api_key') + expect(response.status).toBe(200) + expect(response.body).toEqual({ success: true, message: 'Session initiated successfully' }) + expect(fs.existsSync('./sessions_test/session-1')).toBe(true) + + const response2 = await request(app).get('/session/terminate/1').set('x-api-key', 'test_api_key') + expect(response2.status).toBe(200) + expect(response2.body).toEqual({ success: true, message: 'Logged out successfully' }) + + expect(fs.existsSync('./sessions_test/session-1')).toBe(false) + }, 10000) + + it('should setup and flush multiple client sessions', async () => { + const response = await request(app).get('/session/start/2').set('x-api-key', 'test_api_key') + expect(response.status).toBe(200) + expect(response.body).toEqual({ success: true, message: 'Session initiated successfully' }) + expect(fs.existsSync('./sessions_test/session-2')).toBe(true) + + const response2 = await request(app).get('/session/start/3').set('x-api-key', 'test_api_key') + expect(response2.status).toBe(200) + expect(response2.body).toEqual({ success: true, message: 'Session initiated successfully' }) + expect(fs.existsSync('./sessions_test/session-3')).toBe(true) + + const response3 = await request(app).get('/session/terminateInactive').set('x-api-key', 'test_api_key') + expect(response3.status).toBe(200) + expect(response3.body).toEqual({ success: true, message: 'Flush completed successfully' }) + + expect(fs.existsSync('./sessions_test/session-2')).toBe(false) + expect(fs.existsSync('./sessions_test/session-3')).toBe(false) + }, 10000) +}) + +describe('API Action Tests', () => { + it('should setup, create at least a QR, and terminate a client session', async () => { + const response = await request(app).get('/session/start/4').set('x-api-key', 'test_api_key') + expect(response.status).toBe(200) + expect(response.body).toEqual({ success: true, message: 'Session initiated successfully' }) + expect(fs.existsSync('./sessions_test/session-4')).toBe(true) + + // Wait for message_log.txt to not be empty + const result = await waitForFileNotToBeEmpty('./sessions_test/message_log.txt') + .then(() => { return true }) + .catch(() => { return false }) + expect(result).toBe(true) + + // Verify the message content + const expectedMessage = { + dataType: 'qr', + data: expect.objectContaining({ qr: expect.any(String) }), + sessionId: '4' + } + expect(JSON.parse(fs.readFileSync('./sessions_test/message_log.txt', 'utf-8'))).toEqual(expectedMessage) + + const response2 = await request(app).get('/session/terminate/4').set('x-api-key', 'test_api_key') + expect(response2.status).toBe(200) + expect(response2.body).toEqual({ success: true, message: 'Logged out successfully' }) + expect(fs.existsSync('./sessions_test/session-4')).toBe(false) + }, 15000) +}) + +// Function to wait for a specific item to be equal a specific value +const waitForFileNotToBeEmpty = (filePath, maxWaitTime = 10000, interval = 100) => { + const start = Date.now() + return new Promise((resolve, reject) => { + const checkObject = () => { + const filecontent = fs.readFileSync(filePath, 'utf-8') + if (filecontent !== '') { + // Nested object exists, resolve the promise + resolve() + } else if (Date.now() - start > maxWaitTime) { + // Maximum wait time exceeded, reject the promise + console.log('Timed out waiting for nested object') + reject(new Error('Timeout waiting for nested object')) + } else { + // Nested object not yet created, continue waiting + setTimeout(checkObject, interval) + } + } + checkObject() + }) +}