Compare commits

...
14 Commits
Author SHA1 Message Date
devlikepro bb8691ddc0 [core] Use waha docker image
Release / WEBJS - chromium - amd64 - latest (push) Waiting to run
Release / WEBJS - chromium - linux/arm64 - arm (push) Waiting to run
Release / GOWS - none - amd64 - gows (push) Waiting to run
Release / GOWS - none - linux/arm64 - gows-arm (push) Waiting to run
Release / NOWEB - none - amd64 - noweb (push) Waiting to run
Release / NOWEB - none - linux/arm64 - noweb-arm (push) Waiting to run
Release / WEBJS - chrome - amd64 - chrome (push) Waiting to run
2025-02-02 13:25:24 +07:00
devlikepro cf3041d07b [core] swagger 2025-02-02 13:23:24 +07:00
devlikepro 313b3d5d6b [core] up NOWEB 2025-02-02 13:23:24 +07:00
devlikepro 122e7336be [core] NOWEB - use channels-6712 branch 2025-02-02 13:23:24 +07:00
devlikepro e954453f6b [core] up GOWS 2025-02-02 13:23:24 +07:00
devlikepro 55ef3d09f3 [core] 2025.2.1 2025-01-30 14:35:08 +07:00
devlikepro 88b9cc5ac9 [core] Up dashboard 2025-01-30 14:35:08 +07:00
devlikepro f07cb7470d [core] GOWS - contacts, chats 2025-01-30 14:33:50 +07:00
devlikepro bd874a0232 [core] Up NOWEB 2025-01-30 14:33:50 +07:00
devlikepro 7cc4cccb9c [core] Fetch gows bin and proto from gows releases 2025-01-30 14:33:50 +07:00
devlikepro e85a3bacb7 [core] GOWS - Add ack to incoming messages 2025-01-30 14:33:50 +07:00
devlikepro 530dfa758f [core] Handle keep alive restored 2025-01-30 14:33:50 +07:00
devlikepro 8bc3489060 [core] 2025.1.6
Release / WEBJS - chrome - amd64 - chrome (push) Waiting to run
Release / WEBJS - chromium - amd64 - latest (push) Waiting to run
Release / WEBJS - chromium - linux/arm64 - arm (push) Waiting to run
Release / GOWS - none - amd64 - gows (push) Waiting to run
Release / GOWS - none - linux/arm64 - gows-arm (push) Waiting to run
Release / NOWEB - none - amd64 - noweb (push) Waiting to run
Release / NOWEB - none - linux/arm64 - noweb-arm (push) Waiting to run
2025-01-22 09:20:20 +07:00
devlikepro 6914cb171a [core] WEBJS send image to channel 2025-01-22 09:20:12 +07:00
12 changed files with 489 additions and 31 deletions

No files matched your search

+8 -8
View File
@@ -58,17 +58,17 @@ RUN apt-get update \
&& rm -rf /var/lib/apt/lists/*
COPY waha.config.json /tmp/waha.config.json
WORKDIR /go/gows
RUN \
GOWS_GITHUB_REPO=$(jq -r '.waha.gows.repo' /tmp/waha.config.json) && \
GOWS_SHA=$(jq -r '.waha.gows.ref' /tmp/waha.config.json) && \
git clone https://github.com/${GOWS_GITHUB_REPO} gows && \
cd gows && \
git checkout ${GOWS_SHA}
WORKDIR /go/gows
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
RUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
RUN make all
ARCH=$(uname -m) && \
if [ "$ARCH" = "x86_64" ]; then ARCH="amd64"; \
elif [ "$ARCH" = "aarch64" ]; then ARCH="arm64"; \
else echo "Unsupported architecture: $ARCH" && exit 1; fi && \
mkdir -p /go/gows/bin && \
wget -O /go/gows/bin/gows https://github.com/${GOWS_GITHUB_REPO}/releases/download/v.${GOWS_SHA}/gows-${ARCH} && \
chmod +x /go/gows/bin/gows
#
+1 -1
View File
@@ -35,7 +35,7 @@ for-swagger:
WHATSAPP_SWAGGER_CONFIG_ADVANCED=true . ${NVM_DIR}/nvm.sh && nvm exec yarn start
up-noweb:
. ${NVM_DIR}/nvm.sh && nvm exec yarn up @adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-channels-678
. ${NVM_DIR}/nvm.sh && nvm exec yarn up @adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-channels-6712
up-noweb-libsignal:
. ${NVM_DIR}/nvm.sh && nvm exec yarn up libsignal@github:devlikeapro/libsignal-node#fork-master
+1 -1
View File
@@ -6,7 +6,7 @@
**WAHA** - **W**hats**A**pp **H**TTP **A**PI (REST API) that you can install on your own server and run in less than 5 minutes!
[![Docker Pulls](https://img.shields.io/docker/pulls/devlikeapro/whatsapp-http-api)](https://hub.docker.com/r/devlikeapro/waha)
[![Docker Pulls](https://img.shields.io/docker/pulls/devlikeapro/waha)](https://hub.docker.com/r/devlikeapro/waha)
- Documentation: [https://waha.devlike.pro/](https://waha.devlike.pro/)
- Dashboard Example: [https://waha.devlike.pro/dashboard](https://waha.devlike.pro/dashboard)
+1 -1
View File
@@ -26,7 +26,7 @@
"gows:proto": "yarn gows:proto:fetch && yarn gows:proto:build"
},
"dependencies": {
"@adiwajshing/baileys": "github:devlikeapro/Baileys#fork-master-channels-678",
"@adiwajshing/baileys": "github:devlikeapro/Baileys#fork-master-channels-6712",
"@adiwajshing/keyed-db": "^0.2.4",
"@aws-sdk/client-s3": "^3.633.0",
"@aws-sdk/s3-request-presigner": "^3.633.0",
+1 -1
View File
@@ -53,7 +53,7 @@ function cleanDirectory(directory, suffix) {
// Helper function to download files
async function downloadFiles(repo, ref, directory) {
for (const file of PROTO_FILES) {
const url = `https://raw.githubusercontent.com/${repo}/${ref}/proto/${file}`;
const url = `https://github.com/${repo}/releases/download/v.${ref}/${file}`;
const filePath = path.join(directory, file);
try {
const response = await axios.get(url, { responseType: 'arraybuffer' });
+1 -4
View File
@@ -60,10 +60,7 @@ export class SwaggerConfiguratorCore {
.addTag('🖼️ Screenshot', 'Get screenshot of WhatsApp and show QR code')
.addTag('📤 Chatting', 'Chatting methods')
.addTag('📢 Channels', 'Channels (newsletters) methods')
.addTag(
'🟢 Status',
'Status (aka stories) methods. <b>NOWEB</b> engine only!',
)
.addTag('🟢 Status', 'Status (aka stories) methods')
.addTag('💬 Chats', `Chats methods`)
.addTag(
'👤 Contacts',
+42
View File
@@ -0,0 +1,42 @@
import { messages } from '@waha/core/engines/gows/grpc/gows';
import { MessageStatus } from '@waha/core/engines/gows/types';
import { WAMessageAck } from '@waha/structures/enums.dto';
export function optional(value: any, type) {
if (value === null || value === undefined) {
return null;
}
return new type({ value: value });
}
export function parseJson(value: messages.Json | { data?: string }) {
if (value instanceof messages.Json) {
value = value.toObject();
}
if (value.data === undefined) {
return undefined;
}
return JSON.parse(value.data);
}
export function parseJsonList(value: messages.JsonList) {
return value.toObject().elements.map((value) => parseJson(value));
}
export function statusToAck(status: MessageStatus): WAMessageAck | null {
switch (status) {
case MessageStatus.Error:
return WAMessageAck.ERROR;
case MessageStatus.Pending:
return WAMessageAck.PENDING;
case MessageStatus.ServerAck:
return WAMessageAck.SERVER;
case MessageStatus.DeliveryAck:
return WAMessageAck.DEVICE;
case MessageStatus.Read:
return WAMessageAck.READ;
case MessageStatus.Played:
return WAMessageAck.PLAYED;
}
return null;
}
+216 -4
View File
@@ -81,11 +81,27 @@ import { promisify } from 'util';
import * as gows from './types';
import MessageServiceClient = messages.MessageServiceClient;
import {
optional,
parseJson,
parseJsonList,
statusToAck,
} from '@waha/core/engines/gows/helpers';
import {
ChatSortField,
ChatSummary,
GetChatMessageQuery,
GetChatMessagesFilter,
GetChatMessagesQuery,
} from '@waha/structures/chats.dto';
import { ContactQuery } from '@waha/structures/contacts.dto';
import { PaginationParams, SortOrder } from '@waha/structures/pagination.dto';
enum WhatsMeowEvent {
CONNECTED = 'gows.ConnectedEventData',
DISCONNECTED = 'events.Disconnected',
KEEP_ALIVE_TIMEOUT = 'events.KeepAliveTimeout',
KEEP_ALIVE_RESTORED = 'events.KeepAliveRestored',
QR_CHANNEL_ITEM = 'whatsmeow.QRChannelItem',
MESSAGE = 'events.Message',
RECEIPT = 'events.Receipt',
@@ -215,6 +231,11 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
this.status = WAHASessionStatus.STARTING;
}
});
events.on(WhatsMeowEvent.KEEP_ALIVE_RESTORED, () => {
if (this.status != WAHASessionStatus.WORKING) {
this.status = WAHASessionStatus.WORKING;
}
});
events.on(WhatsMeowEvent.QR_CHANNEL_ITEM, async (data) => {
if (!data.Event) {
return;
@@ -628,7 +649,7 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
return {
participant: toCusFormat(data.From),
lastKnownPresence: lastKnownPresence,
lastSeen: parseTimestamp(data.LastSeen),
lastSeen: parseTimestampToSeconds(data.LastSeen),
};
}
@@ -775,6 +796,183 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
return response.toObject();
}
/**
* Contacts methods
*/
protected toWAContact(contact) {
return {
id: toCusFormat(contact.Jid),
name: contact.Name,
pushname: contact.PushName,
};
}
public async getContact(query: ContactQuery) {
const jid = toJID(query.contactId);
const request = new messages.EntityByIdRequest({
session: this.session,
id: jid,
});
const response = await promisify(this.client.GetContact)(request);
const data = parseJson(response);
return this.toWAContact(data);
}
public async getContacts(pagination: PaginationParams) {
const request = new messages.GetContactsRequest({
session: this.session,
pagination: new messages.Pagination({
limit: pagination.limit,
offset: pagination.offset,
}),
sortBy: new messages.SortBy({
field: pagination.sortBy || 'id',
order:
pagination.sortOrder === SortOrder.DESC
? messages.SortBy.Order.DESC
: messages.SortBy.Order.ASC,
}),
});
const response = await promisify(this.client.GetContacts)(request);
const data = parseJsonList(response);
return data.map(this.toWAContact.bind(this));
}
/**
* Chats methods
*/
public async getChatsOverview(
pagination: PaginationParams,
): Promise<ChatSummary[]> {
if (!pagination.sortBy) {
pagination.sortBy = 'timestamp';
}
if (!pagination.sortOrder) {
pagination.sortOrder = SortOrder.DESC;
}
const chats = await this.getChats(pagination);
const promises = [];
for (const chat of chats) {
promises.push(this.fetchChatSummary(chat));
}
const result = await Promise.all(promises);
return result;
}
protected async fetchChatSummary(chat): Promise<ChatSummary> {
const id = toCusFormat(chat.id);
const name = chat.name;
const picture = await this.getContactProfilePicture(chat.id, false);
const messages = await this.getChatMessages(
chat.id,
{ limit: 1, offset: 0, downloadMedia: false },
{},
);
const message = messages.length > 0 ? messages[0] : null;
return {
id: id,
name: name || null,
picture: picture,
lastMessage: message,
_chat: chat,
};
}
protected toWAChat(chat) {
return {
id: toCusFormat(chat.Jid),
name: chat.Name,
conversationTimestamp: parseTimestampToSeconds(
chat.ConversationTimestamp,
),
};
}
public async getChats(pagination: PaginationParams) {
if (pagination.sortBy === ChatSortField.CONVERSATION_TIMESTAMP) {
pagination.sortBy = 'timestamp';
}
const request = new messages.GetChatsRequest({
session: this.session,
pagination: new messages.Pagination({
limit: pagination.limit,
offset: pagination.offset,
}),
sortBy: new messages.SortBy({
field: pagination.sortBy || 'id',
order:
pagination.sortOrder === SortOrder.DESC
? messages.SortBy.Order.DESC
: messages.SortBy.Order.ASC,
}),
});
const response = await promisify(this.client.GetChats)(request);
const data = parseJsonList(response);
return data.map(this.toWAChat.bind(this));
}
public async getChatMessages(
chatId: string,
query: GetChatMessagesQuery,
filter: GetChatMessagesFilter,
) {
const downloadMedia = query.downloadMedia;
let jid: messages.OptionalString;
if (chatId === 'all') {
jid = null;
} else {
jid = new messages.OptionalString({
value: toJID(this.ensureSuffix(chatId)),
});
}
const request = new messages.GetMessagesRequest({
session: this.session,
filters: new messages.MessageFilters({
jid: jid,
timestampGte: optional(
filter['filter.timestamp.gte'],
messages.OptionalUInt64,
),
timestampLte: optional(
filter['filter.timestamp.lte'],
messages.OptionalUInt64,
),
fromMe: optional(filter['filter.fromMe'], messages.OptionalBool),
}),
pagination: new messages.Pagination({
limit: query.limit,
offset: query.offset,
}),
});
const response = await promisify(this.client.GetMessages)(request);
const msgs = parseJsonList(response);
const promises = [];
for (const msg of msgs) {
promises.push(this.processIncomingMessage(msg, downloadMedia));
}
let result = await Promise.all(promises);
result = result.filter(Boolean);
return result;
}
public async getChatMessage(
chatId: string,
messageId: string,
query: GetChatMessageQuery,
): Promise<null | WAMessage> {
const key = parseMessageIdSerialized(messageId, true);
const request = new messages.EntityByIdRequest({
session: this.session,
id: key.id,
});
const response = await promisify(this.client.GetMessageById)(request);
const msg = parseJson(response);
return this.processIncomingMessage(msg, query.downloadMedia);
}
//
// END - Methods for API
//
@@ -811,11 +1009,17 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
const id = buildMessageId(message);
const body = this.extractBody(message.Message);
const replyTo = null; // TODO: this.extractReplyTo(message.message);
const ack = null; // TODO: Extract
let ack;
if (message.Status) {
ack = statusToAck(message.Status);
} else {
ack = message.Info.IsFromMe ? WAMessageAck.SERVER : WAMessageAck.DEVICE;
}
return {
id: id,
timestamp: parseTimestamp(message.Info.Timestamp),
timestamp: parseTimestampToSeconds(message.Info.Timestamp),
from: toCusFormat(fromToParticipant.from),
fromMe: message.Info.IsFromMe,
body: body,
@@ -942,7 +1146,7 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
const messageId = this.buildMessageIdFromKey(reactionMessage.key);
const reaction: WAMessageReaction = {
id: id,
timestamp: parseTimestamp(message.Info.Timestamp),
timestamp: parseTimestampToSeconds(message.Info.Timestamp),
from: toCusFormat(fromToParticipant.from),
fromMe: message.Info.IsFromMe,
to: toCusFormat(fromToParticipant.to),
@@ -1063,3 +1267,11 @@ function parseTimestamp(timestamp: string): number {
// "2024-12-25T14:28:42+03:00" => 1234567890
return new Date(timestamp).getTime();
}
function parseTimestampToSeconds(timestamp: string): number {
const ms = parseTimestamp(timestamp);
if (!ms) {
return ms;
}
return Math.floor(ms / 1000);
}
+17
View File
@@ -22,3 +22,20 @@ export interface ChatPresence {
State: ChatPresenceState;
Media: ChatPresenceMedia;
}
/**
* StatusError Status = 0
* StatusPending Status = 1
* StatusServerAck Status = 2
* StatusDeliveryAck Status = 3
* StatusRead Status = 4
* StatusPlayed Status = 5
*/
export enum MessageStatus {
Error = 0,
Pending = 1,
ServerAck = 2,
DeliveryAck = 3,
Read = 4,
Played = 5,
}
+1 -1
View File
@@ -33,7 +33,7 @@ export function getEngineName(): string {
}
export const VERSION: WAHAEnvironment = {
version: '2025.1.5',
version: '2025.2.1',
engine: getEngineName(),
tier: getWAHAVersion(),
browser: getBrowserExecutablePath(),
+2 -2
View File
@@ -2,11 +2,11 @@
"waha": {
"gows": {
"repo": "devlikeapro/gows",
"ref": "32baf0cc2e8c35388b0b6d4a1a446cca0f3525a8"
"ref": "4b11c1d58018bc4b5028de51aa1bc7da9c2d9103"
},
"dashboard": {
"repo": "devlikeapro/dashboard",
"ref": "a1c839d8da94d1cade182addffdfc42fc0cf7ed3"
"ref": "8c455ec6436398000a26df2a853a1d7dbe8567df"
}
}
}
+198 -8
View File
@@ -5,12 +5,13 @@ __metadata:
version: 6
cacheKey: 8
"@adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-channels-678":
version: 6.7.8
resolution: "@adiwajshing/baileys@https://github.com/devlikeapro/Baileys.git#commit=04738f528321857efe837e3f93c73059878ecdcb"
"@adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-channels-6712":
version: 6.7.12
resolution: "@adiwajshing/baileys@https://github.com/devlikeapro/Baileys.git#commit=18359f20a3c34166665ad8b62000347ce0c4592e"
dependencies:
"@adiwajshing/keyed-db": ^0.2.4
"@hapi/boom": ^9.1.3
"@whiskeysockets/eslint-config": "github:whiskeysockets/eslint-config"
async-lock: ^1.4.1
audio-decode: ^2.1.3
axios: ^1.6.0
@@ -39,7 +40,7 @@ __metadata:
optional: true
sharp:
optional: true
checksum: 0f7b2031eeb25137c65aee3151028f7a8637cfed0763c7426817415ec818ca71f55267b9de88511905bd266f4006301a26206dac9bdb1821d13f1a0cbf075e32
checksum: 53c939b9b2d47cb00db73e6cb04633fdd62c69dce6e5d830c3e18e09c90bceb0425c9c59ac58bfdeabce501091ca895132b035877243dfaf90f2297c99eb8fef
languageName: node
linkType: hard
@@ -1242,6 +1243,24 @@ __metadata:
languageName: node
linkType: hard
"@eslint-community/eslint-utils@npm:^4.4.0":
version: 4.4.1
resolution: "@eslint-community/eslint-utils@npm:4.4.1"
dependencies:
eslint-visitor-keys: ^3.4.3
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
checksum: a7ffc838eb6a9ef594cda348458ccf38f34439ac77dc090fa1c120024bcd4eb911dfd74d5ef44d42063e7949fa7c5123ce714a015c4abb917d4124be1bd32bfe
languageName: node
linkType: hard
"@eslint-community/regexpp@npm:^4.10.0":
version: 4.12.1
resolution: "@eslint-community/regexpp@npm:4.12.1"
checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6
languageName: node
linkType: hard
"@grpc/grpc-js@npm:^1.12.4":
version: 1.12.4
resolution: "@grpc/grpc-js@npm:1.12.4"
@@ -3453,6 +3472,29 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/eslint-plugin@npm:^7.15.0":
version: 7.18.0
resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0"
dependencies:
"@eslint-community/regexpp": ^4.10.0
"@typescript-eslint/scope-manager": 7.18.0
"@typescript-eslint/type-utils": 7.18.0
"@typescript-eslint/utils": 7.18.0
"@typescript-eslint/visitor-keys": 7.18.0
graphemer: ^1.4.0
ignore: ^5.3.1
natural-compare: ^1.4.0
ts-api-utils: ^1.3.0
peerDependencies:
"@typescript-eslint/parser": ^7.0.0
eslint: ^8.56.0
peerDependenciesMeta:
typescript:
optional: true
checksum: dfcf150628ca2d4ccdfc20b46b0eae075c2f16ef5e70d9d2f0d746acf4c69a09f962b93befee01a529f14bbeb3e817b5aba287d7dd0edc23396bc5ed1f448c3d
languageName: node
linkType: hard
"@typescript-eslint/experimental-utils@npm:3.9.1":
version: 3.9.1
resolution: "@typescript-eslint/experimental-utils@npm:3.9.1"
@@ -3486,6 +3528,51 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/parser@npm:^7.15.0":
version: 7.18.0
resolution: "@typescript-eslint/parser@npm:7.18.0"
dependencies:
"@typescript-eslint/scope-manager": 7.18.0
"@typescript-eslint/types": 7.18.0
"@typescript-eslint/typescript-estree": 7.18.0
"@typescript-eslint/visitor-keys": 7.18.0
debug: ^4.3.4
peerDependencies:
eslint: ^8.56.0
peerDependenciesMeta:
typescript:
optional: true
checksum: 132b56ac3b2d90b588d61d005a70f6af322860974225b60201cbf45abf7304d67b7d8a6f0ade1c188ac4e339884e78d6dcd450417f1481998f9ddd155bab0801
languageName: node
linkType: hard
"@typescript-eslint/scope-manager@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/scope-manager@npm:7.18.0"
dependencies:
"@typescript-eslint/types": 7.18.0
"@typescript-eslint/visitor-keys": 7.18.0
checksum: b982c6ac13d8c86bb3b949c6b4e465f3f60557c2ccf4cc229799827d462df56b9e4d3eaed7711d79b875422fc3d71ec1ebcb5195db72134d07c619e3c5506b57
languageName: node
linkType: hard
"@typescript-eslint/type-utils@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/type-utils@npm:7.18.0"
dependencies:
"@typescript-eslint/typescript-estree": 7.18.0
"@typescript-eslint/utils": 7.18.0
debug: ^4.3.4
ts-api-utils: ^1.3.0
peerDependencies:
eslint: ^8.56.0
peerDependenciesMeta:
typescript:
optional: true
checksum: 68fd5df5146c1a08cde20d59b4b919acab06a1b06194fe4f7ba1b928674880249890785fbbc97394142f2ef5cff5a7fba9b8a940449e7d5605306505348e38bc
languageName: node
linkType: hard
"@typescript-eslint/types@npm:3.9.1":
version: 3.9.1
resolution: "@typescript-eslint/types@npm:3.9.1"
@@ -3493,6 +3580,13 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/types@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/types@npm:7.18.0"
checksum: 7df2750cd146a0acd2d843208d69f153b458e024bbe12aab9e441ad2c56f47de3ddfeb329c4d1ea0079e2577fea4b8c1c1ce15315a8d49044586b04fedfe7a4d
languageName: node
linkType: hard
"@typescript-eslint/typescript-estree@npm:3.9.1":
version: 3.9.1
resolution: "@typescript-eslint/typescript-estree@npm:3.9.1"
@@ -3512,6 +3606,39 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/typescript-estree@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/typescript-estree@npm:7.18.0"
dependencies:
"@typescript-eslint/types": 7.18.0
"@typescript-eslint/visitor-keys": 7.18.0
debug: ^4.3.4
globby: ^11.1.0
is-glob: ^4.0.3
minimatch: ^9.0.4
semver: ^7.6.0
ts-api-utils: ^1.3.0
peerDependenciesMeta:
typescript:
optional: true
checksum: c82d22ec9654973944f779eb4eb94c52f4a6eafaccce2f0231ff7757313f3a0d0256c3252f6dfe6d43f57171d09656478acb49a629a9d0c193fb959bc3f36116
languageName: node
linkType: hard
"@typescript-eslint/utils@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/utils@npm:7.18.0"
dependencies:
"@eslint-community/eslint-utils": ^4.4.0
"@typescript-eslint/scope-manager": 7.18.0
"@typescript-eslint/types": 7.18.0
"@typescript-eslint/typescript-estree": 7.18.0
peerDependencies:
eslint: ^8.56.0
checksum: 751dbc816dab8454b7dc6b26a56671dbec08e3f4ef94c2661ce1c0fc48fa2d05a64e03efe24cba2c22d03ba943cd3c5c7a5e1b7b03bbb446728aec1c640bd767
languageName: node
linkType: hard
"@typescript-eslint/visitor-keys@npm:3.9.1":
version: 3.9.1
resolution: "@typescript-eslint/visitor-keys@npm:3.9.1"
@@ -3521,6 +3648,16 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/visitor-keys@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/visitor-keys@npm:7.18.0"
dependencies:
"@typescript-eslint/types": 7.18.0
eslint-visitor-keys: ^3.4.3
checksum: 6e806a7cdb424c5498ea187a5a11d0fef7e4602a631be413e7d521e5aec1ab46ba00c76cfb18020adaa0a8c9802354a163bfa0deb74baa7d555526c7517bb158
languageName: node
linkType: hard
"@wasm-audio-decoders/common@npm:9.0.4":
version: 9.0.4
resolution: "@wasm-audio-decoders/common@npm:9.0.4"
@@ -3711,6 +3848,20 @@ __metadata:
languageName: node
linkType: hard
"@whiskeysockets/eslint-config@github:whiskeysockets/eslint-config":
version: 1.0.0
resolution: "@whiskeysockets/eslint-config@https://github.com/whiskeysockets/eslint-config.git#commit=326b55f2842668f4e11f471451c4e39819a0e1bf"
dependencies:
"@typescript-eslint/eslint-plugin": ^7.15.0
"@typescript-eslint/parser": ^7.15.0
eslint-plugin-simple-import-sort: ^12.1.1
peerDependencies:
eslint: "*"
typescript: ">=4"
checksum: a1ae2c83b0b635cf4898b51a597cd9cabc0df3f5bd4f439a705a1f35877802e8f07836f3298d02b5543d41e07c266b348bd8c8458f83ed225d975e89618b0483
languageName: node
linkType: hard
"@xtuc/ieee754@npm:^1.2.0":
version: 1.2.0
resolution: "@xtuc/ieee754@npm:1.2.0"
@@ -6236,6 +6387,15 @@ __metadata:
languageName: node
linkType: hard
"eslint-plugin-simple-import-sort@npm:^12.1.1":
version: 12.1.1
resolution: "eslint-plugin-simple-import-sort@npm:12.1.1"
peerDependencies:
eslint: ">=5.0.0"
checksum: 6d73e43ecf6221c1952e0cc820e6867e3e1fe973575e23d438d1d3de52284ceb2a01d31e20a76de11feb158bbba98f113150a676cc5526a8b3a5844d63ca37f8
languageName: node
linkType: hard
"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.0.0, eslint-scope@npm:^5.1.0":
version: 5.1.1
resolution: "eslint-scope@npm:5.1.1"
@@ -6262,6 +6422,13 @@ __metadata:
languageName: node
linkType: hard
"eslint-visitor-keys@npm:^3.4.3":
version: 3.4.3
resolution: "eslint-visitor-keys@npm:3.4.3"
checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60
languageName: node
linkType: hard
"eslint@npm:7.7.0":
version: 7.7.0
resolution: "eslint@npm:7.7.0"
@@ -7174,7 +7341,7 @@ __metadata:
languageName: node
linkType: hard
"globby@npm:^11.0.1":
"globby@npm:^11.0.1, globby@npm:^11.1.0":
version: 11.1.0
resolution: "globby@npm:11.1.0"
dependencies:
@@ -7211,6 +7378,13 @@ __metadata:
languageName: node
linkType: hard
"graphemer@npm:^1.4.0":
version: 1.4.0
resolution: "graphemer@npm:1.4.0"
checksum: bab8f0be9b568857c7bec9fda95a89f87b783546d02951c40c33f84d05bb7da3fd10f863a9beb901463669b6583173a8c8cc6d6b306ea2b9b9d5d3d943c3a673
languageName: node
linkType: hard
"grpc-tools@npm:^1.12.4":
version: 1.12.4
resolution: "grpc-tools@npm:1.12.4"
@@ -7440,6 +7614,13 @@ __metadata:
languageName: node
linkType: hard
"ignore@npm:^5.3.1":
version: 5.3.2
resolution: "ignore@npm:5.3.2"
checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be
languageName: node
linkType: hard
"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0":
version: 3.3.0
resolution: "import-fresh@npm:3.3.0"
@@ -12050,6 +12231,15 @@ __metadata:
languageName: node
linkType: hard
"ts-api-utils@npm:^1.3.0":
version: 1.4.3
resolution: "ts-api-utils@npm:1.4.3"
peerDependencies:
typescript: ">=4.2.0"
checksum: ea00dee382d19066b2a3d8929f1089888b05fec797e32e7a7004938eda1dccf2e77274ee2afcd4166f53fab9b8d7ee90ebb225a3183f9ba8817d636f688a148d
languageName: node
linkType: hard
"ts-jest@npm:^29.1.3":
version: 29.1.5
resolution: "ts-jest@npm:29.1.5"
@@ -12559,7 +12749,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "waha@workspace:."
dependencies:
"@adiwajshing/baileys": "github:devlikeapro/Baileys#fork-master-channels-678"
"@adiwajshing/baileys": "github:devlikeapro/Baileys#fork-master-channels-6712"
"@adiwajshing/keyed-db": ^0.2.4
"@aws-sdk/client-s3": ^3.633.0
"@aws-sdk/s3-request-presigner": ^3.633.0
@@ -12741,7 +12931,7 @@ __metadata:
"whatsapp-web.js@github:devlikeapro/whatsapp-web.js#fork-main-channels":
version: 1.26.0
resolution: "whatsapp-web.js@https://github.com/devlikeapro/whatsapp-web.js.git#commit=a8683b0d1a5b8025ac1e7deb3476042ceadb4c07"
resolution: "whatsapp-web.js@https://github.com/devlikeapro/whatsapp-web.js.git#commit=5b4dd6dec206905e3aaa7b0461d7c6d4cc3126a8"
dependencies:
"@pedroslopez/moduleraid": ^5.0.2
archiver: ^5.3.1
@@ -12759,7 +12949,7 @@ __metadata:
optional: true
unzipper:
optional: true
checksum: 637e53dffdaa80813a5cdd72e519f8f68978e00db17b39b471f39c8e2b98bc85643fe74168255a1dfdc655c71803e3d01b4ca6635bc6159c429dd59232ac07d4
checksum: 441e54f450ed9ea5d5756c1ca4fd592e498ad79247d2c6508aee2a5c1b2608a9eb3f6360234f2f0ce563edb187a3d453d41773e745da9bebf657f575b9fa66b4
languageName: node
linkType: hard