Compare commits

...
15 Commits
15 changed files with 241 additions and 98 deletions

No files matched your search

+2 -1
View File
@@ -35,4 +35,5 @@ update-swagger:
wget http://localhost:3000/-json -O ./docs/site/static/swagger/openapi.json
update-dependencies:
. ${NVM_DIR}/nvm.sh && nvm exec yarn install venom-bot whatsapp-web.js --save
. ${NVM_DIR}/nvm.sh && nvm exec yarn add whatsapp-web.js@https://github.com/pedroslopez/whatsapp-web.js
. ${NVM_DIR}/nvm.sh && nvm exec yarn add venom-bot
+3 -3
View File
@@ -34,12 +34,12 @@ toc: true
## 2022.11
**Please test changes in test environment before update production!!**
### Engine ![](/images/versions/core.png) ![](/images/versions/plus.png)
### Engine ![](/images/versions/core.png)
1. WAHA has changed its underlying engine from Venom to Whatsapp Web.JS. It might change the response and webhook's payloads.
2. Optimize CPU and memory consumption.
### Requests ![](/images/versions/core.png) ![](/images/versions/plus.png)
### Requests ![](/images/versions/core.png)
- For all `/api/session/` requests use `name` field instead of `sessionName`.
- For all "chatting" requests use `session` field instead of `sessionName`.
@@ -51,7 +51,7 @@ Now you can authenticate all requests for WAHA - use `WHATSAPP_API_KEY=secret` e
If `WHATSAPP_API_KEY` is set - requests must have `X-Api-Key` header with `secret` value, where `secret` - any random secret key.
### Webhooks ![](/images/versions/core.png) ![](/images/versions/plus.png)
### Webhooks ![](/images/versions/core.png)
#### Configuration
Instead of setting each webhook via environment variables - we use two environments variables:
@@ -12,7 +12,7 @@ You can configure WhatsApp HTTP API behaviour via environment variables, by addi
begging of the command line or by using [other options](https://docs.docker.com/engine/reference/commandline/run/)
```bash
docker run -it -e WHATSAPP_HOOK_EVENTS=* -e WHATSAPP_HOOK_URL=https://httpbin.org/post devlikeapro/whatsapp-http-api
docker run -it -e "WHATSAPP_HOOK_EVENTS=*" -e WHATSAPP_HOOK_URL=https://httpbin.org/post devlikeapro/whatsapp-http-api
```
## Environment variables
@@ -9,17 +9,26 @@ images: []
weight: 120
---
The project uses [Webhooks](https://en.wikipedia.org/wiki/Webhook) to send the messages or events from WhatsApp to your
The project uses [Webhooks](https://en.wikipedia.org/wiki/Webhook) to send the messages and events from WhatsApp to your
application.
## Webhooks ![](/images/versions/core.png) ![](/images/versions/plus.png)
Webhooks are a way for two different applications to communicate with each other in real-time.
When a certain event happens in one application, it sends a message to another application through a webhook URL.
The receiving application can then take action based on the information received.
To receive incoming messages with webhooks,
you first need to set up a webhook URL in your application and pass it to `WHATSAPP_HOOK_URL` environment variable.
This URL is where WhatsApp will send incoming messages and other events -
define which events you want to receive with `WHATSAPP_HOOK_EVENTS` environment variable.
## Webhooks ![](/images/versions/core.png)
You can configure where you want to receive events in environment variables:
- `WHATSAPP_HOOK_URL=https://httpbin.org/post` - to set up a URL for the webhook
- `WHATSAPP_HOOK_EVENTS=message,message.any,state.change,group.join,group.leave` - specify events. DO NOT specify all of
them, it's too heavy payload, choose the right for you.
- `WHATSAPP_HOOK_EVENTS=*` - subscribe to all events. It's not recommended for production, but it's fine for
- `WHATSAPP_HOOK_EVENTS=*` - subscribe to all events. It's not recommended for production, but it's fine for
development.
On the URL that you set via `WHATSAPP_HOOK_URL` you receive JSON-data with following format:
@@ -27,6 +36,7 @@ On the URL that you set via `WHATSAPP_HOOK_URL` you receive JSON-data with follo
```json
{
"event": "message",
"session": "default",
"payload": {}
}
```
@@ -40,7 +50,7 @@ Below the list of all events that WhatsApp HTTP API sends to your.
Run the bellow command and see look at the logs - it prints body request for all events that happen in your WhatsApp!
```bash
docker run -it -e WHATSAPP_HOOK_EVENTS=* -e WHATSAPP_HOOK_URL=https://httpbin.org/post devlikeapro/whatsapp-http-api
docker run -it -e "WHATSAPP_HOOK_EVENTS=*" -e WHATSAPP_HOOK_URL=https://httpbin.org/post devlikeapro/whatsapp-http-api
```
### Examples
@@ -55,7 +65,7 @@ You can create a pull request with your favorite language in the [GitHub, in exa
Just put the code and **README.md** file in the folder - we'll do the rest!
## Events ![](/images/versions/core.png) ![](/images/versions/plus.png)
## Events ![](/images/versions/core.png)
### message
@@ -64,6 +74,7 @@ Incoming message (text/audio/files)
```json
{
"event": "message",
"session": "default",
"payload": {
"id": "true_11111111111@c.us_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"timestamp": 1667561485,
@@ -126,6 +137,7 @@ Fired on all message creations, including your own. The payload is the same as f
```json
{
"event": "message.any",
"session": "default",
"payload": {}
}
```
@@ -135,6 +147,7 @@ Fired on all message creations, including your own. The payload is the same as f
```json
{
"event": "message.ack",
"session": "default",
"payload": {}
}
```
@@ -144,6 +157,7 @@ Fired on all message creations, including your own. The payload is the same as f
```json
{
"event": "state.change",
"session": "default",
"payload": {}
}
```
@@ -153,6 +167,7 @@ Fired on all message creations, including your own. The payload is the same as f
```json
{
"event": "group.join",
"session": "default",
"payload": {}
}
```
@@ -162,6 +177,7 @@ Fired on all message creations, including your own. The payload is the same as f
```json
{
"event": "group.left",
"session": "default",
"payload": {}
}
```
@@ -176,6 +192,7 @@ For example, you can get the webhook like this with `mediaUrl` value (we've skip
```json
{
"event": "message",
"session": "default",
"payload": {
"id": "true_11111111111@c.us_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"timestamp": 1667561485,
@@ -28,7 +28,7 @@ Read more about [multiple sessions →]({{< relref "/docs/how-to/sessions" >}})
For phone number `12132132131` the `chatId` is `12132132131@c.us`.
- **Groups** use random number with `@g.us` at the end.
## Send text ![](/images/versions/core.png) ![](/images/versions/plus.png)
## Send text ![](/images/versions/core.png)
To send text message - use `POST /api/sendText` with example payload.
```json
{
@@ -38,7 +38,7 @@ To send text message - use `POST /api/sendText` with example payload.
}
```
## Reply on message ![](/images/versions/core.png) ![](/images/versions/plus.png)
## Reply on message ![](/images/versions/core.png)
To reply on a message - use `POST /api/reply` with example payload.
```json
{
@@ -52,7 +52,7 @@ To reply on a message - use `POST /api/reply` with example payload.
### Reply files ![](/images/versions/plus-soon.png)
WAHA does not support reply with files (images, voice, etc). If you're interested in it - please create an issue in GitHub.
## Add a reaction ![](/images/versions/core.png) ![](/images/versions/plus.png)
## Add a reaction ![](/images/versions/core.png)
Use `PUT /api/reaction` method to set reaction to a message.
{{< alert icon="👉" text="Reaction API uses PUT, not POST request! Please make sure you send right request." />}}
@@ -22,7 +22,22 @@ toc: true
{{< alert icon="👉" text="Run WhatsApp HTTP API in less than 5 minutes!" />}}
Go straight to the [Quick Start →]({{< relref "quick-start" >}})
We will guide you through the necessary steps to successfully send your first text message using WhatsApp HTTP API in
[Quick Start →]({{< relref "quick-start" >}}).
If you find it easier to follow a video tutorial rather than reading through text, we've got you covered!
A 3-minute video tutorial is available to help you navigate WhatsApp HTTP API smoothly.
<div class="d-flex justify-content-center my-4">
<iframe
width="560" height="315"
src="https://www.youtube.com/embed/RFerMyAUPRg"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
></iframe>
</div>
## Features
WAHA is distributed in two versions:
@@ -32,21 +47,21 @@ WAHA is distributed in two versions:
Here's the available features:
### Messages
- Send messages ![](/images/versions/core.png) ![](/images/versions/plus.png)
- Receive messages ![](/images/versions/core.png) ![](/images/versions/plus.png)
- Message replies ![](/images/versions/core.png) ![](/images/versions/plus.png)
- Send location ![](/images/versions/core.png) ![](/images/versions/plus.png)
- Send buttons ![](/images/versions/core.png) ![](/images/versions/plus.png)
- Receive location ![](/images/versions/core.png) ![](/images/versions/plus.png)
- React to messages ![](/images/versions/core.png) ![](/images/versions/plus.png)
- Send messages ![](/images/versions/core.png)
- Receive messages ![](/images/versions/core.png)
- Message replies ![](/images/versions/core.png)
- Send location ![](/images/versions/core.png)
- Send buttons ![](/images/versions/core.png)
- Receive location ![](/images/versions/core.png)
- React to messages ![](/images/versions/core.png)
- Send media (images/documents/files) ![](/images/versions/plus.png)
- Send voice messages ![](/images/versions/plus.png)
- Receive media (images/audio/video/documents) ![](/images/versions/plus.png)
- Receive messages - webhook retries ![](/images/versions/plus.png)
### Sessions
- Multi Device ![](/images/versions/core.png) ![](/images/versions/plus.png)
- Get the screenshot ![](/images/versions/core.png) ![](/images/versions/plus.png)
- Multi Device ![](/images/versions/core.png)
- Get the screenshot ![](/images/versions/core.png)
- Session saving (don't have to scan QR on every restart) ![](/images/versions/plus.png)
- Session saving on remote storage (database, redis) ![](/images/versions/plus-soon.png)
- Single WhatsApp account running inside one container ![](/images/versions/core.png)
@@ -54,26 +69,23 @@ Here's the available features:
### Security
- API authentication ![](/images/versions/plus.png)
- Swagger panel authentication ![](/images/versions/plus-soon.png)
- Swagger panel authentication ![](/images/versions/plus.png)
### Updates
- Bug fixes and updates come as soon as they are implemented. ![](/images/versions/plus.png)
- One month delay in bug fixes and updates. ![](/images/versions/core.png)
### Groups ![](/images/versions/soon.png)
- Join groups by invite
### Groups ![](/images/versions/core.png)
- Create a group
- Get invite for group
- Modify group info (subject, description)
- Modify group settings (send messages, edit info)
- Add group participants
- Kick group participants
- Promote/demote group participants
### Contacts ![](/images/versions/soon.png)
- Mention users
### Contacts ![](/images/versions/core.png)
- Mute/unmute chats
- Block/unblock contacts
- Get contact info
- Get profile pictures
- Set user status message
@@ -13,7 +13,8 @@ weight: 110
toc: true
---
On this page you're going to install WAHA, run it, authenticate the client using QR code and send the first text message to WhatsApp!
On this page you're going to install WAHA, run it, authenticate the client using QR code and send the first text message
to WhatsApp!
## Requirements
@@ -31,7 +32,21 @@ Also Docker makes installation and update processes so simple, just one command!
## Send your first message
Let's go over steps that allow you to send your first text message via WhatsApp HTTP API!
We will guide you through the necessary steps to successfully send your first text message using WhatsApp HTTP API.
If you find it easier to follow a video tutorial rather than reading through text, we've got you covered!
A 3-minute video tutorial is available to help you navigate WhatsApp HTTP API smoothly.
<div class="d-flex justify-content-center my-4">
<iframe
width="560" height="315"
src="https://www.youtube.com/embed/RFerMyAUPRg"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
></iframe>
</div>
### 1. Download image
@@ -53,6 +68,28 @@ docker logout
Read more about how to get `PASSWORD` for [Plus Version →]({{< relref "plus-version" >}})
#### 1.1 Download image on ARM
If you're using ARM (like Apple Silicon, Apple M1, etc) - use following commands to download the image
![](/images/versions/core.png) For Core version the command is
```bash
# Download the image
docker pull devlikeapro/whatsapp-http-api:arm
# Rename it, so you can use devlikeapro/whatsapp-http-api image in other place
docker tag devlikeapro/whatsapp-http-api:arm devlikeapro/whatsapp-http-api
```
![](/images/versions/plus.png) For Plus version the command is:
```bash
docker login -u devlikeapro -p {PASSWORD}
docker pull devlikeapro/whatsapp-http-api-plus:arm
docker logout
# Rename it, so you can use devlikeapro/whatsapp-http-api image in other place
docker tag devlikeapro/whatsapp-http-api-plus:arm devlikeapro/whatsapp-http-api
```
### 2. Run WhatsApp HTTP API
Run WhatsApp HTTP API:
@@ -83,8 +120,8 @@ How to log in - the instruction on WhatsApp site
When your ready - find `POST /api/session/start`, click on **Try it out**, then **Execute** a bit below.
The example payload:
```json
{
"name": "default"
@@ -93,7 +130,8 @@ The example payload:
![](session-start.png)
By using the request with `name` values you can start multiple session (WhatsApp accounts) inside the single docker container in Plus
By using the request with `name` values you can start multiple session (WhatsApp accounts) inside the single docker
container in Plus
![](/images/versions/plus.png) version and only one account in Core ![](/images/versions/core.png) version.
Read more about [multiple sessions →]({{< relref "/docs/how-to/sessions" >}})
@@ -123,6 +161,7 @@ way: use a phone international phone number without `+` symbol and add `@c.us` a
For phone number `12132132131` the `chatId` is `12132132131@c.us`.
The example payload:
```json
{
"chatId": "12132132130@c.us",
@@ -142,6 +181,7 @@ curl -d "{\"chatId\": \"${PHONE}@c.us\", \"text\": \"Hello from WhatsApp HTTP AP
```
## What is next?
- Right now you've sent simple text message, but you can send more! [Send messages →]({{< relref "/docs/how-to/send-messages" >}})
- Read how to receive and response to messages [Receive messages →]({{< relref "/docs/how-to/receive-messages" >}})
- Make sure your [API is properly protected ->]({{< relref "/docs/how-to/security" >}})
+27 -15
View File
@@ -15,6 +15,18 @@
<p class="meta"><a href="https://github.com/devlikeapro/whatsapp-http-api">Source code in GitHub.</a></p>
</div>
</div>
<div>
<div class="d-flex justify-content-center my-4">
<iframe
width="560" height="315"
src="https://www.youtube.com/embed/RFerMyAUPRg"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
></iframe>
</div>
</div>
</section>
{{ end }}
@@ -22,6 +34,14 @@
<section class="section section-sm">
<div class="container">
<div class="row justify-content-center text-center">
<div class="col-lg-5">
<h2 class="h4">It's free!</h2>
<p>
<b>WAHA Core</b> version is always free!
<br>
Even <b>WAHA Plus</b> version have no licence expiration!
</p>
</div>
<div class="col-lg-5">
<h2 class="h4">Language agnostic</h2>
<p>
@@ -36,17 +56,6 @@
<h2 class="h4">Well documented</h2>
<p>Documentation has a lof examples and how-to guides.</p>
</div>
<div class="col-lg-5">
<h2 class="h4">No blocking</h2>
<p>
Under the hood it runs a real instance of Whatsapp Web to avoid getting blocked.
<br/>
<small class="text-muted">
WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered
totally safe.
</small>
</p>
</div>
</div>
<div class="row justify-content-center text-center">
<div class="col-lg-5">
@@ -67,11 +76,14 @@
</p>
</div>
<div class="col-lg-5">
<h2 class="h4">It's free!</h2>
<h2 class="h4">No blocking</h2>
<p>
<b>WAHA Core</b> version is always free!
<br>
Even <b>WAHA Plus</b> version does not require monthly donations and have no licence expiration!
Under the hood it runs a real instance of Whatsapp Web to avoid getting blocked.
<br/>
<small class="text-muted">
WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered
totally safe.
</small>
</p>
</div>
</div>
+25 -4
View File
@@ -1,29 +1,50 @@
# WAHA (WhatsApp HTTP API) Python examples
## Requirements
## Installation
We assume that you have installed software:
1. Python 3
2. Docker
### Download and start image
First of all, you must run WhatsApp HTTP API locally (which under the hood it runs real WhatsApp Web instance and expose
HTTP API for interaction).
Here are the steps from [Quick Start](https://waha.devlike.pro/docs/overview/quick-start/):
1. Download and start WhatsApp HTTP API docker container
Download and start WhatsApp HTTP API docker container
```bash
# Download the image
docker pull devlikeapro/whatsapp-http-api
# Run the docker container
docker run -it --rm --network=host -e WHATSAPP_HOOK_URL=http://localhost:5000/bot -e WHATSAPP_HOOK_EVENTS=* --name whatsapp-http-api devlikeapro/whatsapp-http-api
docker run -it --rm --network=host -e WHATSAPP_HOOK_URL=http://localhost:5000/bot -e "WHATSAPP_HOOK_EVENTS=*" --name whatsapp-http-api devlikeapro/whatsapp-http-api
# It prints logs and the last line must be
# WhatsApp HTTP API is running on: http://[::1]:3000
```
#### Download image - ARM
If you're using ARM (like Apple Silicon, Apple M1, etc) - use following commands to download the image
![](/images/versions/core.png) For Core version the command is
```bash
# Download the image
docker pull devlikeapro/whatsapp-http-api:arm
# Rename it, so you can use devlikeapro/whatsapp-http-api image in other place
docker tag devlikeapro/whatsapp-http-api:arm devlikeapro/whatsapp-http-api
# Run the docker container
docker run -it --rm --network=host -e WHATSAPP_HOOK_URL=http://localhost:5000/bot -e "WHATSAPP_HOOK_EVENTS=*" --name whatsapp-http-api devlikeapro/whatsapp-http-api
# It prints logs and the last line must be
# WhatsApp HTTP API is running on: http://[::1]:3000
```
### Start session and scan QR
2. Open Swagger API in the browser http://localhost:3000/
3. Start session and scan QR code in swagger
1. Find `POST /api/session/start` request press **Try it out** and **Execute** it with `default` session name
@@ -77,7 +98,7 @@ Download **WAHA Plus** version:
# Download the image
docker pull devlikeapro/whatsapp-http-api-plus
# Run the docker container
docker run -it --rm --network=host -e WHATSAPP_HOOK_URL=http://localhost:5000/bot -e WHATSAPP_HOOK_EVENTS=* --name whatsapp-http-api devlikeapro/whatsapp-http-api-plus
docker run -it --rm --network=host -e WHATSAPP_HOOK_URL=http://localhost:5000/bot -e "WHATSAPP_HOOK_EVENTS=*" --name whatsapp-http-api devlikeapro/whatsapp-http-api-plus
```
Run the WhatsApp Download Files bot:
+1 -1
View File
@@ -43,7 +43,7 @@
"rxjs": "^7.1.0",
"swagger-ui-express": "^4.1.4",
"venom-bot": "^4.3.7",
"whatsapp-web.js": "pedroslopez/whatsapp-web.js"
"whatsapp-web.js": "https://github.com/saifkhan7865/whatsapp-web.js"
},
"devDependencies": {
"@nestjs/cli": "^9.0.0",
+3 -3
View File
@@ -40,7 +40,7 @@ export class WebhookConductorCore implements WebhookConductor {
this.log.log('Configuring webhooks...')
for (const event of this.events) {
try {
session.subscribe(event, (data: any) => this.callWebhook(event, data, this.url))
session.subscribe(event, (data: any) => this.callWebhook(event, session, data, this.url))
} catch (error) {
if (error instanceof NotImplementedByEngineError) {
this.log.error(error)
@@ -53,8 +53,8 @@ export class WebhookConductorCore implements WebhookConductor {
this.log.log('Webhooks were configured.')
}
public callWebhook(event, data: any, url) {
const json: WAWebhook = {event: event, payload: data}
public callWebhook(event, session: WhatsappSession, data: any, url) {
const json: WAWebhook = {event: event, session: session.name, payload: data}
this.log.log(`Sending POST to ${url}...`)
this.log.debug(`POST DATA: ${JSON.stringify(json)}`)
this.post(json, url)
+5
View File
@@ -4,6 +4,7 @@ import {AllExceptionsFilter} from "./api/exception.filter";
import {getWAHAVersion, VERSION, WAHAVersion} from "./version";
import {AppModuleCore} from "./core/app.module.core";
import {SwaggerModuleCore} from "./core/swagger.module.core";
import {json, urlencoded} from "express";
async function loadModules(): Promise<[typeof AppModuleCore, typeof SwaggerModuleCore]> {
const version = getWAHAVersion()
@@ -32,6 +33,10 @@ async function bootstrap() {
app.enableShutdownHooks();
app.useGlobalFilters(new AllExceptionsFilter());
// Allow to send big body - for images and attachments
app.use(json({limit: '50mb'}));
app.use(urlencoded({limit: '50mb'}));
// Configure swagger
const swagger = new SwaggerModule()
swagger.configure(app)
+1
View File
@@ -133,6 +133,7 @@ export class WAMessage {
export class WAWebhook {
event: WAEvents
session: string
// eslint-disable-next-line @typescript-eslint/ban-types
payload: WAMessage | WAGroupNotification | object
}
+1 -1
View File
@@ -28,7 +28,7 @@ export function getWAHAVersion(): WAHAVersion {
}
export const VERSION = {
version: "2023.3.1",
version: "2023.3.25",
tier: getWAHAVersion(),
browser: getBrowserExecutablePath()
}
+74 -40
View File
@@ -422,6 +422,18 @@
enabled "2.0.x"
kuler "^2.0.0"
"@eslint-community/eslint-utils@^4.2.0":
version "4.3.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz#a556790523a351b4e47e9d385f47265eaaf9780a"
integrity sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==
dependencies:
eslint-visitor-keys "^3.3.0"
"@eslint-community/regexpp@^4.4.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.4.0.tgz#3e61c564fcd6b921cb789838631c5ee44df09403"
integrity sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==
"@istanbuljs/load-nyc-config@^1.0.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
@@ -1156,18 +1168,18 @@
tsutils "^3.17.1"
"@typescript-eslint/eslint-plugin@^5.44.0":
version "5.53.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.53.0.tgz#24b8b4a952f3c615fe070e3c461dd852b5056734"
integrity sha512-alFpFWNucPLdUOySmXCJpzr6HKC3bu7XooShWM+3w/EL6J2HIoB2PFxpLnq4JauWVk6DiVeNKzQlFEaE+X9sGw==
version "5.56.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.56.0.tgz#e4fbb4d6dd8dab3e733485c1a44a02189ae75364"
integrity sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==
dependencies:
"@typescript-eslint/scope-manager" "5.53.0"
"@typescript-eslint/type-utils" "5.53.0"
"@typescript-eslint/utils" "5.53.0"
"@eslint-community/regexpp" "^4.4.0"
"@typescript-eslint/scope-manager" "5.56.0"
"@typescript-eslint/type-utils" "5.56.0"
"@typescript-eslint/utils" "5.56.0"
debug "^4.3.4"
grapheme-splitter "^1.0.4"
ignore "^5.2.0"
natural-compare-lite "^1.4.0"
regexpp "^3.2.0"
semver "^7.3.7"
tsutils "^3.21.0"
@@ -1211,13 +1223,21 @@
"@typescript-eslint/types" "5.53.0"
"@typescript-eslint/visitor-keys" "5.53.0"
"@typescript-eslint/type-utils@5.53.0":
version "5.53.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.53.0.tgz#41665449935ba9b4e6a1ba6e2a3f4b2c31d6cf97"
integrity sha512-HO2hh0fmtqNLzTAme/KnND5uFNwbsdYhCZghK2SoxGp3Ifn2emv+hi0PBUjzzSh0dstUIFqOj3bp0AwQlK4OWw==
"@typescript-eslint/scope-manager@5.56.0":
version "5.56.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.56.0.tgz#62b4055088903b5254fa20403010e1c16d6ab725"
integrity sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==
dependencies:
"@typescript-eslint/typescript-estree" "5.53.0"
"@typescript-eslint/utils" "5.53.0"
"@typescript-eslint/types" "5.56.0"
"@typescript-eslint/visitor-keys" "5.56.0"
"@typescript-eslint/type-utils@5.56.0":
version "5.56.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.56.0.tgz#e6f004a072f09c42e263dc50e98c70b41a509685"
integrity sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==
dependencies:
"@typescript-eslint/typescript-estree" "5.56.0"
"@typescript-eslint/utils" "5.56.0"
debug "^4.3.4"
tsutils "^3.21.0"
@@ -1231,6 +1251,11 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.53.0.tgz#f79eca62b97e518ee124086a21a24f3be267026f"
integrity sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A==
"@typescript-eslint/types@5.56.0":
version "5.56.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.56.0.tgz#b03f0bfd6fa2afff4e67c5795930aff398cbd834"
integrity sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==
"@typescript-eslint/typescript-estree@3.9.1":
version "3.9.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.9.1.tgz#fd81cada74bc8a7f3a2345b00897acb087935779"
@@ -1258,18 +1283,31 @@
semver "^7.3.7"
tsutils "^3.21.0"
"@typescript-eslint/utils@5.53.0":
version "5.53.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.53.0.tgz#e55eaad9d6fffa120575ffaa530c7e802f13bce8"
integrity sha512-VUOOtPv27UNWLxFwQK/8+7kvxVC+hPHNsJjzlJyotlaHjLSIgOCKj9I0DBUjwOOA64qjBwx5afAPjksqOxMO0g==
"@typescript-eslint/typescript-estree@5.56.0":
version "5.56.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.56.0.tgz#48342aa2344649a03321e74cab9ccecb9af086c3"
integrity sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==
dependencies:
"@typescript-eslint/types" "5.56.0"
"@typescript-eslint/visitor-keys" "5.56.0"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
semver "^7.3.7"
tsutils "^3.21.0"
"@typescript-eslint/utils@5.56.0":
version "5.56.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.56.0.tgz#db64705409b9a15546053fb4deb2888b37df1f41"
integrity sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@types/json-schema" "^7.0.9"
"@types/semver" "^7.3.12"
"@typescript-eslint/scope-manager" "5.53.0"
"@typescript-eslint/types" "5.53.0"
"@typescript-eslint/typescript-estree" "5.53.0"
"@typescript-eslint/scope-manager" "5.56.0"
"@typescript-eslint/types" "5.56.0"
"@typescript-eslint/typescript-estree" "5.56.0"
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
semver "^7.3.7"
"@typescript-eslint/visitor-keys@3.9.1":
@@ -1287,6 +1325,14 @@
"@typescript-eslint/types" "5.53.0"
eslint-visitor-keys "^3.3.0"
"@typescript-eslint/visitor-keys@5.56.0":
version "5.56.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.56.0.tgz#f19eb297d972417eb13cb69b35b3213e13cc214f"
integrity sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==
dependencies:
"@typescript-eslint/types" "5.56.0"
eslint-visitor-keys "^3.3.0"
"@webassemblyjs/ast@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
@@ -1409,9 +1455,9 @@
"@xtuc/long" "4.2.2"
"@wppconnect/wa-js@^2.16.2":
version "2.20.0"
resolved "https://registry.yarnpkg.com/@wppconnect/wa-js/-/wa-js-2.20.0.tgz#094ff11d71264e6f2fe4bf8610781a9a6953c3a5"
integrity sha512-UwQUwe6m6o9FFNKA+Dv50wzr9yFVKUPkbLB8Qaq/AVsB0R5yPuX7af2QOM+Q5EvI2PQgsIjRMqno1/LuRZNxxA==
version "2.22.2"
resolved "https://registry.yarnpkg.com/@wppconnect/wa-js/-/wa-js-2.22.2.tgz#c0eb1c7c3bfc55bbcafc27359d782925e9301d30"
integrity sha512-WhkQZUg/u7drmst4Kpl1juw7AD2kj+i/eyY0tbbPtBfBjqO4LJfTLpta06clgxr7Oj1Cm/I+Jv9lSZKQva5lqw==
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
@@ -3157,23 +3203,11 @@ eslint-utils@^2.0.0, eslint-utils@^2.1.0:
dependencies:
eslint-visitor-keys "^1.1.0"
eslint-utils@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
dependencies:
eslint-visitor-keys "^2.0.0"
eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
eslint-visitor-keys@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
eslint-visitor-keys@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
@@ -6652,7 +6686,7 @@ regexp.prototype.flags@^1.4.3:
define-properties "^1.1.3"
functions-have-names "^1.2.2"
regexpp@^3.0.0, regexpp@^3.1.0, regexpp@^3.2.0:
regexpp@^3.0.0, regexpp@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
@@ -8244,9 +8278,9 @@ webpack@5.75.0:
watchpack "^2.4.0"
webpack-sources "^3.2.3"
whatsapp-web.js@pedroslopez/whatsapp-web.js:
version "1.19.4"
resolved "https://codeload.github.com/pedroslopez/whatsapp-web.js/tar.gz/6f2ad1773e6bb34b1f916f6485114bc1b26c837b"
"whatsapp-web.js@https://github.com/saifkhan7865/whatsapp-web.js":
version "1.19.5"
resolved "https://github.com/saifkhan7865/whatsapp-web.js#4d0b6da33b99ab18d6f4c4f05661e778f8b9e9c2"
dependencies:
"@pedroslopez/moduleraid" "^5.0.2"
fluent-ffmpeg "^2.1.2"