Compare commits

...
13 Commits
Author SHA1 Message Date
devlikepro 2f0efd0223 [core] 2025.7.4
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
Release / WEBJS - chromium - amd64 - latest (push) Waiting to run
Release / WEBJS - chromium - linux/arm64 - arm (push) Waiting to run
2025-07-06 16:48:47 +07:00
devlikepro 5c31ed53df [core] WEBJS - fix error for message.ack
TypeError: You provided 'null' where a stream was expected.
2025-07-06 16:48:47 +07:00
devlikepro 87640ea238 [core] WEBJS - avoid STARTING => FAILED cycles
fix #1071
2025-07-06 16:48:47 +07:00
devlikepro eb8f771b06 [core] WEBJS - protocolTimeout to 300s (5m)
fix #1103
2025-07-06 16:48:46 +07:00
devlikepro b080b5862e [core] NOWEB - no lock on 'lids' updates 2025-07-06 16:48:46 +07:00
devlikepro df50e7527e [core] NOWEB - save @lid to @c.us from the first message
fix #1073
fix #1097
2025-07-06 16:48:46 +07:00
devlikepro e2b43575c0 [core] Up NOWEB - 2025-07-04
fix #531
fix #1098
2025-07-06 16:48:45 +07:00
devlikepro 2059793562 [core] Log update for unknown jid 2025-07-06 16:48:45 +07:00
devlikepro e5df21e165 [core] 2025.7.3
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-07-03 17:13:06 +07:00
devlikepro 792029b13f [core] Up GOWS
fix #1043
fix #1068
fix #1094
2025-07-03 17:13:06 +07:00
devlikepro 0ef49d7116 [core] GOWS - fallback to storage in case of JSON errors
2 UNKNOWN: json: cannot unmarshal object into Go struct field InteractiveAnnotation.imageMessage.annotations. Action of type waE2
E.isInteractiveAnnotation_Action
2025-07-03 17:13:06 +07:00
devlikepro 600d3291eb [core] add dns in waha by default 2025-07-03 17:13:06 +07:00
devlikepro b78413190c [core] WEBJS - disable GPU 2025-07-03 17:13:06 +07:00
15 changed files with 267 additions and 254 deletions

No files matched your search

+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-2025-05-01
. ${NVM_DIR}/nvm.sh && nvm exec yarn up @adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-2025-07-04
up-noweb-libsignal:
. ${NVM_DIR}/nvm.sh && nvm exec yarn up libsignal@github:devlikeapro/libsignal-node#fork-master
+5
View File
@@ -8,6 +8,11 @@ services:
# WAHA Core
# image: devlikeapro/waha:latest
# Add "dns" if you have a problem with resolving "web.whatsapp.com"
dns:
- 1.1.1.1
- 8.8.8.8
logging:
driver: 'json-file'
options:
+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-2025-05-01",
"@adiwajshing/baileys": "github:devlikeapro/Baileys#fork-master-2025-07-04",
"@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
@@ -296,7 +296,7 @@ export abstract class WhatsappSession {
'--disable-dev-shm-usage',
'--disable-extensions',
// '--disable-features=site-per-process', // COMMENTED to test WEBJS stability
//'--disable-gpu', // COMMENTED to test WEBJS stability
'--disable-gpu', // COMMENTED to test WEBJS stability
'--disable-offer-store-unmasked-wallet-cards',
'--disable-offline-load-stale-cache',
'--disable-popup-blocking',
+46
View File
@@ -7031,6 +7031,8 @@ export namespace messages {
constructor(data?: any[] | {
session?: Session;
message?: string;
jid?: string;
messageId?: string;
}) {
super();
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
@@ -7041,6 +7043,12 @@ export namespace messages {
if ("message" in data && data.message != undefined) {
this.message = data.message;
}
if ("jid" in data && data.jid != undefined) {
this.jid = data.jid;
}
if ("messageId" in data && data.messageId != undefined) {
this.messageId = data.messageId;
}
}
}
get session() {
@@ -7058,9 +7066,23 @@ export namespace messages {
set message(value: string) {
pb_1.Message.setField(this, 2, value);
}
get jid() {
return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
}
set jid(value: string) {
pb_1.Message.setField(this, 3, value);
}
get messageId() {
return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
}
set messageId(value: string) {
pb_1.Message.setField(this, 4, value);
}
static fromObject(data: {
session?: ReturnType<typeof Session.prototype.toObject>;
message?: string;
jid?: string;
messageId?: string;
}): DownloadMediaRequest {
const message = new DownloadMediaRequest({});
if (data.session != null) {
@@ -7069,12 +7091,20 @@ export namespace messages {
if (data.message != null) {
message.message = data.message;
}
if (data.jid != null) {
message.jid = data.jid;
}
if (data.messageId != null) {
message.messageId = data.messageId;
}
return message;
}
toObject() {
const data: {
session?: ReturnType<typeof Session.prototype.toObject>;
message?: string;
jid?: string;
messageId?: string;
} = {};
if (this.session != null) {
data.session = this.session.toObject();
@@ -7082,6 +7112,12 @@ export namespace messages {
if (this.message != null) {
data.message = this.message;
}
if (this.jid != null) {
data.jid = this.jid;
}
if (this.messageId != null) {
data.messageId = this.messageId;
}
return data;
}
serialize(): Uint8Array;
@@ -7092,6 +7128,10 @@ export namespace messages {
writer.writeMessage(1, this.session, () => this.session.serialize(writer));
if (this.message.length)
writer.writeString(2, this.message);
if (this.jid.length)
writer.writeString(3, this.jid);
if (this.messageId.length)
writer.writeString(4, this.messageId);
if (!w)
return writer.getResultBuffer();
}
@@ -7107,6 +7147,12 @@ export namespace messages {
case 2:
message.message = reader.readString();
break;
case 3:
message.jid = reader.readString();
break;
case 4:
message.messageId = reader.readString();
break;
default: reader.skipField();
}
}
+61 -1
View File
@@ -14889,7 +14889,9 @@ proto.messages.DownloadMediaRequest.prototype.toObject = function(opt_includeIns
proto.messages.DownloadMediaRequest.toObject = function(includeInstance, msg) {
var f, obj = {
session: (f = msg.getSession()) && proto.messages.Session.toObject(includeInstance, f),
message: jspb.Message.getFieldWithDefault(msg, 2, "")
message: jspb.Message.getFieldWithDefault(msg, 2, ""),
jid: jspb.Message.getFieldWithDefault(msg, 3, ""),
messageid: jspb.Message.getFieldWithDefault(msg, 4, "")
};
if (includeInstance) {
@@ -14935,6 +14937,14 @@ proto.messages.DownloadMediaRequest.deserializeBinaryFromReader = function(msg,
var value = /** @type {string} */ (reader.readString());
msg.setMessage(value);
break;
case 3:
var value = /** @type {string} */ (reader.readString());
msg.setJid(value);
break;
case 4:
var value = /** @type {string} */ (reader.readString());
msg.setMessageid(value);
break;
default:
reader.skipField();
break;
@@ -14979,6 +14989,20 @@ proto.messages.DownloadMediaRequest.serializeBinaryToWriter = function(message,
f
);
}
f = message.getJid();
if (f.length > 0) {
writer.writeString(
3,
f
);
}
f = message.getMessageid();
if (f.length > 0) {
writer.writeString(
4,
f
);
}
};
@@ -15037,6 +15061,42 @@ proto.messages.DownloadMediaRequest.prototype.setMessage = function(value) {
};
/**
* optional string jid = 3;
* @return {string}
*/
proto.messages.DownloadMediaRequest.prototype.getJid = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
};
/**
* @param {string} value
* @return {!proto.messages.DownloadMediaRequest} returns this
*/
proto.messages.DownloadMediaRequest.prototype.setJid = function(value) {
return jspb.Message.setProto3StringField(this, 3, value);
};
/**
* optional string messageId = 4;
* @return {string}
*/
proto.messages.DownloadMediaRequest.prototype.getMessageid = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
};
/**
* @param {string} value
* @return {!proto.messages.DownloadMediaRequest} returns this
*/
proto.messages.DownloadMediaRequest.prototype.setMessageid = function(value) {
return jspb.Message.setProto3StringField(this, 4, value);
};
@@ -2152,6 +2152,8 @@ export class GOWSEngineMediaProcessor implements IMediaEngineProcessor<any> {
// double "session" it's not a mistake here
session: this.session.session,
message: data,
jid: message.Info.Chat,
messageId: message.Info.ID,
});
const response = await promisify(this.session.client.DownloadMedia)(
request,
@@ -0,0 +1,47 @@
export interface NOWEBNewsletterMetadata {
id: string;
state: string;
creation_time: number;
name: string;
nameTime: number;
description: string;
descriptionTime: number;
invite: string;
handle: string;
picture: string | null;
preview: string | null;
reaction_codes: string | null;
subscribers: number;
verification: string;
viewer_metadata: any;
}
export function toNewsletterMetadata(
data: any,
): NOWEBNewsletterMetadata | null {
if (data.state?.type === 'DELETED') {
return null;
}
if (data.state?.type === 'NON_EXISTING') {
return null;
}
return {
id: data.id,
state: data.state?.type,
creation_time: +data.thread_metadata.creation_time,
name: data.thread_metadata.name.text,
nameTime: +data.thread_metadata.name.update_time,
description: data.thread_metadata.description.text,
descriptionTime: +data.thread_metadata.description.update_time,
invite: data.thread_metadata.invite,
handle: data.thread_metadata.handle,
picture: data.thread_metadata.picture?.direct_path || null,
preview: data.thread_metadata.preview?.direct_path || null,
reaction_codes: data.thread_metadata?.settings?.reaction_codes?.value,
subscribers: +data.thread_metadata.subscribers_count,
verification: data.thread_metadata.verification,
viewer_metadata: data.viewer_metadata,
};
}
+20 -16
View File
@@ -56,6 +56,10 @@ import {
ToGroupV2UpdateEvent,
} from '@waha/core/engines/noweb/groups.noweb';
import { sendButtonMessage } from '@waha/core/engines/noweb/noweb.buttons';
import {
NOWEBNewsletterMetadata,
toNewsletterMetadata,
} from '@waha/core/engines/noweb/noweb.newsletter';
import { NowebAuthFactoryCore } from '@waha/core/engines/noweb/NowebAuthFactoryCore';
import { NowebInMemoryStore } from '@waha/core/engines/noweb/store/NowebInMemoryStore';
import {
@@ -477,7 +481,8 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
return;
} else if (connection === 'close') {
this.qr.save('');
const statusCode = lastDisconnect.error?.output?.statusCode;
const error = lastDisconnect.error as any;
const statusCode = error?.output?.statusCode;
// Restart required from the server
const restartRequired = statusCode === DisconnectReason.restartRequired;
@@ -752,7 +757,7 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
if (this.status == WAHASessionStatus.STARTING) {
this.logger.debug('Waiting for connection update...');
await this.sock.waitForConnectionUpdate((update) => !!update.qr);
await this.sock.waitForConnectionUpdate(async (update) => !!update.qr);
}
if (this.status != WAHASessionStatus.SCAN_QR_CODE) {
@@ -1711,9 +1716,8 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
throw new AvailableInPlusVersion();
}
protected toChannel(newsletter: NewsletterMetadata): Channel {
protected toChannel(newsletter: NOWEBNewsletterMetadata): Channel {
const role =
// @ts-ignore
newsletter.viewer_metadata?.role ||
(newsletter.viewer_metadata?.view_role as ChannelRole) ||
ChannelRole.GUEST;
@@ -1738,7 +1742,7 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
public async channelsList(query: ListChannelsQuery): Promise<Channel[]> {
const newsletters = await this.sock.newsletterSubscribed();
let channels = newsletters.map(this.toChannel);
let channels = newsletters.map(toNewsletterMetadata).map(this.toChannel);
if (query.role) {
// @ts-ignore
channels = channels.filter((channel) => channel.role === query.role);
@@ -1751,37 +1755,37 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
request.name,
request.description,
);
return this.toChannel(newsletter);
return this.toChannel(toNewsletterMetadata(newsletter));
}
public async channelsGetChannel(id: string) {
const newsletter = await this.sock.newsletterMetadata('jid', id);
return this.toChannel(newsletter);
return this.toChannel(toNewsletterMetadata(newsletter));
}
public async channelsGetChannelByInviteCode(inviteCode: string) {
const newsletter = await this.sock.newsletterMetadata('invite', inviteCode);
return this.toChannel(newsletter);
return this.toChannel(toNewsletterMetadata(newsletter));
}
public async channelsDeleteChannel(id: string) {
return await this.sock.newsletterDelete(id);
}
public async channelsFollowChannel(id: string): Promise<void> {
return await this.sock.newsletterAction(id, 'follow');
public async channelsFollowChannel(id: string): Promise<any> {
return await this.sock.newsletterFollow(id);
}
public async channelsUnfollowChannel(id: string): Promise<void> {
return await this.sock.newsletterAction(id, 'unfollow');
public async channelsUnfollowChannel(id: string): Promise<any> {
return await this.sock.newsletterUnfollow(id);
}
public async channelsMuteChannel(id: string): Promise<void> {
return await this.sock.newsletterAction(id, 'mute');
public async channelsMuteChannel(id: string): Promise<any> {
return await this.sock.newsletterMute(id);
}
public async channelsUnmuteChannel(id: string): Promise<void> {
return await this.sock.newsletterAction(id, 'unmute');
public async channelsUnmuteChannel(id: string): Promise<any> {
return await this.sock.newsletterUnmute(id);
}
subscribeEngineEvents2() {
@@ -12,6 +12,7 @@ import makeWASocket, {
proto,
updateMessageWithReaction,
updateMessageWithReceipt,
WAMessage,
} from '@adiwajshing/baileys';
import { GroupMetadata } from '@adiwajshing/baileys/lib/Types/GroupMetadata';
import { Label } from '@adiwajshing/baileys/lib/Types/Label';
@@ -64,7 +65,6 @@ export class NowebPersistentStore implements INowebStore {
public presences: any;
private lock: any = new AsyncLock({
timeout: 5_000,
maxPending: Infinity,
maxExecutionTime: 60_000,
});
@@ -102,9 +102,43 @@ export class NowebPersistentStore implements INowebStore {
// All
ev.on('messaging-history.set', (data) => this.onMessagingHistorySet(data));
// Messages
ev.on('messages.upsert', (data) =>
this.withLock('messages', () => this.onMessagesUpsert(data)),
);
ev.on('messages.upsert', (data) => {
this.withLock('messages', () => this.onMessagesUpsert(data));
this.withNoLock('lids', async () => {
const messages: WAMessage[] = data.messages;
if (!messages) {
return;
}
const contacts: Partial<Contact>[] = messages
.map((message) => {
if (!message.key) {
return null;
}
// Phone
let pn = message.key.senderPn || message.key.participantPn;
// 123 => 123@s.whatsapp.net
if (pn && !pn.includes('@')) {
pn = `${pn}@s.whatsapp.net`;
}
// 123@c.us => 123@s.whatsapp.net
if (pn && !isJidUser(pn)) {
pn = jidNormalizedUser(pn);
}
// 999@lid
const lid = message.key.senderLid || message.key.participantLid;
return {
id: message.key.remoteJid,
lid: lid,
jid: pn,
};
})
.filter(Boolean);
const lids = await this.handleLidPNUpdates(contacts);
this.logger.debug(
`messages.upsert - '${lids.length}' synced lid to pn mapping`,
);
});
});
ev.on('messages.update', (data) =>
this.withLock('messages', () => this.onMessageUpdate(data)),
);
@@ -133,7 +167,7 @@ export class NowebPersistentStore implements INowebStore {
);
ev.on('groups.update', (data) => {
this.withLock('groups', () => this.onGroupUpdate(data));
this.withLock('lids', async () => {
this.withNoLock('lids', async () => {
const participants = lodash.flatMap(data, (g) => g?.participants || []);
const lids = await this.handleLidPNUpdates(participants);
this.logger.debug(
@@ -150,7 +184,7 @@ export class NowebPersistentStore implements INowebStore {
// Contacts
ev.on('contacts.upsert', (data) => {
this.withLock('contacts', () => this.onContactsUpsert(data));
this.withLock('lids', async () => {
this.withNoLock('lids', async () => {
const lids = await this.handleLidPNUpdates(data);
this.logger.debug(
`contacts.upsert - '${lids.length}' synced lid to pn mapping`,
@@ -159,7 +193,7 @@ export class NowebPersistentStore implements INowebStore {
});
ev.on('contacts.update', (data) => {
this.withLock('contacts', () => this.onContactUpdate(data));
this.withLock('lids', async () => {
this.withNoLock('lids', async () => {
const lids = await this.handleLidPNUpdates(data);
this.logger.debug(
`contacts.update - '${lids.length}' synced lid to pn mapping`,
@@ -200,7 +234,7 @@ export class NowebPersistentStore implements INowebStore {
await this.onContactsUpsert(contacts);
this.logger.info(`history sync - '${contacts.length}' synced contacts`);
}),
this.withLock('lids', async () => {
this.withNoLock('lids', async () => {
const lids = await this.handleLidPNUpdates(contacts);
this.logger.info(
`history sync - '${lids.length}' synced lid to pn mapping`,
@@ -239,6 +273,14 @@ export class NowebPersistentStore implements INowebStore {
if (!update.key.id) {
continue;
}
if (!jid) {
this.logger.warn(
`got message update for unknown jid. update: '${JSON.stringify(
update,
)}'`,
);
continue;
}
const message = await this.messagesRepo.getByJidById(jid, update.key.id);
if (!message) {
this.logger.warn(
@@ -396,6 +438,10 @@ export class NowebPersistentStore implements INowebStore {
return this.lock.acquire(key, fn);
}
private withNoLock(key, fn) {
return fn();
}
private async onContactsUpsert(contacts: Contact[]) {
const upserts = [];
const ids = contacts.map((c) => c.id);
@@ -625,16 +671,16 @@ export class NowebPersistentStore implements INowebStore {
});
}
// contact.pn = pn, contact.lid = lid
else if (isJidUser(contact.pn) && isLidUser(contact.lid)) {
else if (isJidUser(contact.jid) && isLidUser(contact.lid)) {
lids.push({
pn: contact.pn,
pn: contact.jid,
id: contact.lid,
});
}
// contact.pn = pn, contact.id = lid
else if (isJidUser(contact.pn) && isLidUser(contact.id)) {
else if (isJidUser(contact.jid) && isLidUser(contact.id)) {
lids.push({
pn: contact.pn,
pn: contact.jid,
id: contact.id,
});
}
@@ -287,7 +287,7 @@ export default (config: BaileysInMemoryStoreConfig) => {
ev.emit('chats.upsert', [
{
id: jid,
conversationTimestamp: toNumber(msg.messageTimestamp),
conversationTimestamp: toNumber(msg.messageTimestamp as any),
unreadCount: 1,
},
]);
+14 -3
View File
@@ -203,6 +203,7 @@ export class WhatsappSessionWebJSCore extends WhatsappSession {
args.unshift(`--a-waha-session=${this.name}`);
return {
puppeteer: {
protocolTimeout: 300_000,
headless: true,
executablePath: this.getBrowserExecutablePath(),
args: args,
@@ -237,6 +238,9 @@ export class WhatsappSessionWebJSCore extends WhatsappSession {
this.logger.debug(
'Should not restart the client, ignoring restart request',
);
this.end().catch((error) => {
this.logger.error(error, 'Failed to end() the client');
});
return;
}
@@ -468,15 +472,20 @@ export class WhatsappSessionWebJSCore extends WhatsappSession {
});
this.whatsapp.on(Events.AUTHENTICATION_FAILURE, (args) => {
this.failed();
this.qr.save('');
this.shouldRestart = false;
this.logger.info({ args: args }, `Session has failed to authenticate!`);
this.failed();
});
this.whatsapp.on(Events.DISCONNECTED, (args) => {
this.failed();
if (args === 'LOGOUT') {
this.logger.warn({ args: args }, `Session has been logged out!`);
this.shouldRestart = false;
}
this.qr.save('');
this.logger.info({ args: args }, `Session has been disconnected!`);
this.failed();
});
this.whatsapp.on(Events.STATE_CHANGED, (state: WAState) => {
@@ -507,7 +516,8 @@ export class WhatsappSessionWebJSCore extends WhatsappSession {
});
log.setBindings({ currentState: currentState });
if (!currentState) {
log.warn('Session has no current state, skip restarting.');
log.warn('Session has no current state, restarting...');
this.restartClient();
return;
} else if (badStates.includes(currentState)) {
log.info('Session is still in bad state, restarting...');
@@ -1499,6 +1509,7 @@ export class WhatsappSessionWebJSCore extends WhatsappSession {
mergeMap((node) =>
TagReceiptNodeToReceiptEvent(node as any, this.getSessionMeInfo()),
),
filter(Boolean),
mergeMap(this.TagReceiptToMessageAck.bind(this)),
filter((ack) => isJidGroup(ack.to) || isJidStatusBroadcast(ack.to)),
);
+1 -1
View File
@@ -33,7 +33,7 @@ export function getEngineName(): string {
}
export const VERSION: WAHAEnvironment = {
version: '2025.7.2',
version: '2025.7.4',
engine: getEngineName(),
tier: getWAHAVersion(),
browser:
+1 -1
View File
@@ -2,7 +2,7 @@
"waha": {
"gows": {
"repo": "devlikeapro/gows",
"ref": "v1.0.8"
"ref": "v1.0.9"
},
"dashboard": {
"repo": "devlikeapro/dashboard",
+8 -216
View File
@@ -5,13 +5,12 @@ __metadata:
version: 6
cacheKey: 8
"@adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-2025-05-01":
version: 6.7.16
resolution: "@adiwajshing/baileys@https://github.com/devlikeapro/Baileys.git#commit=17db13bd44d54e00d5740b002aca0b33c15b6e7b"
"@adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-2025-07-04":
version: 6.7.18
resolution: "@adiwajshing/baileys@https://github.com/devlikeapro/Baileys.git#commit=599231e9f18be6ebe6e8eb48a5c57ec9f587ee5e"
dependencies:
"@cacheable/node-cache": ^1.4.0
"@hapi/boom": ^9.1.3
"@whiskeysockets/eslint-config": "github:whiskeysockets/eslint-config"
async-mutex: ^0.5.0
axios: ^1.6.0
libsignal: "github:WhiskeySockets/libsignal-node"
@@ -34,7 +33,7 @@ __metadata:
optional: true
sharp:
optional: true
checksum: f89150418538cc3d11ed94da91ff5ba89a49b9a29c1d8a060fd8a211c3ab2e9cdf84c2f8bd3962e67835decc4fb78783dd8f1d297b8caf6d4b026dfa3bd42126
checksum: 4a0d0221ea30efbbe50dd3c639c45bed677da6688d550787b7c4fa2b3a1bb3992e3d3ebb920be2429113996c02e87a0801f94e6d6609f4ceaf8637b7490691ee
languageName: node
linkType: hard
@@ -1217,24 +1216,6 @@ __metadata:
languageName: node
linkType: hard
"@eslint-community/eslint-utils@npm:^4.7.0":
version: 4.7.0
resolution: "@eslint-community/eslint-utils@npm:4.7.0"
dependencies:
eslint-visitor-keys: ^3.4.3
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
checksum: b177e3b75c0b8d0e5d71f1c532edb7e40b31313db61f0c879f9bf19c3abb2783c6c372b5deb2396dab4432f2946b9972122ac682e77010376c029dfd0149c681
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.13.4":
version: 1.13.4
resolution: "@grpc/grpc-js@npm:1.13.4"
@@ -3800,27 +3781,6 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/eslint-plugin@npm:^8.32.0":
version: 8.34.0
resolution: "@typescript-eslint/eslint-plugin@npm:8.34.0"
dependencies:
"@eslint-community/regexpp": ^4.10.0
"@typescript-eslint/scope-manager": 8.34.0
"@typescript-eslint/type-utils": 8.34.0
"@typescript-eslint/utils": 8.34.0
"@typescript-eslint/visitor-keys": 8.34.0
graphemer: ^1.4.0
ignore: ^7.0.0
natural-compare: ^1.4.0
ts-api-utils: ^2.1.0
peerDependencies:
"@typescript-eslint/parser": ^8.34.0
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <5.9.0"
checksum: f5d4a57d0661bea3b15b8842abeae3327828647540e8127c882d44cbf793e84d4c9e33b6740f682891ddf20ca664a634b7016289e1bc98ae21f02808498a28ec
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"
@@ -3854,69 +3814,6 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/parser@npm:^8.32.0":
version: 8.34.0
resolution: "@typescript-eslint/parser@npm:8.34.0"
dependencies:
"@typescript-eslint/scope-manager": 8.34.0
"@typescript-eslint/types": 8.34.0
"@typescript-eslint/typescript-estree": 8.34.0
"@typescript-eslint/visitor-keys": 8.34.0
debug: ^4.3.4
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <5.9.0"
checksum: 7b6797c4d87e8b2e24f99bd2e9c4102366b8f77f4a2912f810df01d7b655524304859e0adef12c21dbbe986bacc7e45d35845d8c4439193350c38d8a14bb7ef7
languageName: node
linkType: hard
"@typescript-eslint/project-service@npm:8.34.0":
version: 8.34.0
resolution: "@typescript-eslint/project-service@npm:8.34.0"
dependencies:
"@typescript-eslint/tsconfig-utils": ^8.34.0
"@typescript-eslint/types": ^8.34.0
debug: ^4.3.4
peerDependencies:
typescript: ">=4.8.4 <5.9.0"
checksum: 194440e5f350c284faa760548d16b389c6d285262d5528c6fb83c6adaf7765c9d4c57e5dc9e48e10941c8833942dae0d543438bf25083ccf2a83208bbf293d38
languageName: node
linkType: hard
"@typescript-eslint/scope-manager@npm:8.34.0":
version: 8.34.0
resolution: "@typescript-eslint/scope-manager@npm:8.34.0"
dependencies:
"@typescript-eslint/types": 8.34.0
"@typescript-eslint/visitor-keys": 8.34.0
checksum: 074464b1dc7efc7311eb54a74c1b592c1693a20abc46b6ed73f2d91377e83f85aa06780699208205b129b098b83f2c9a7c38c9f016617dd336cced3716fa0991
languageName: node
linkType: hard
"@typescript-eslint/tsconfig-utils@npm:8.34.0, @typescript-eslint/tsconfig-utils@npm:^8.34.0":
version: 8.34.0
resolution: "@typescript-eslint/tsconfig-utils@npm:8.34.0"
peerDependencies:
typescript: ">=4.8.4 <5.9.0"
checksum: cbbca9526bd9c0309c77f9436f68c2c06712779a593a17757f1f7558ece27d9f40db2b37ebf12bd9e19cf227479083b7973c502436a0954a08406d8a598910ba
languageName: node
linkType: hard
"@typescript-eslint/type-utils@npm:8.34.0":
version: 8.34.0
resolution: "@typescript-eslint/type-utils@npm:8.34.0"
dependencies:
"@typescript-eslint/typescript-estree": 8.34.0
"@typescript-eslint/utils": 8.34.0
debug: ^4.3.4
ts-api-utils: ^2.1.0
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <5.9.0"
checksum: 97046c06edc6d15363f9a1e08ace2f774def8b903b42bf32db6e7f944f0f308273583b0ddd86c013e3f945bc15862d11625ff0d63578cc0b6f94a881f7337cef
languageName: node
linkType: hard
"@typescript-eslint/types@npm:3.9.1":
version: 3.9.1
resolution: "@typescript-eslint/types@npm:3.9.1"
@@ -3924,13 +3821,6 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/types@npm:8.34.0, @typescript-eslint/types@npm:^8.34.0":
version: 8.34.0
resolution: "@typescript-eslint/types@npm:8.34.0"
checksum: 08e5ff523df38d6db3abc41314825fe7b079340385e7b0618567a53e17da20062b71a7d7e8d5d62283d97296c58fdd3d52f126878d82042df18792c2c7f275ae
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"
@@ -3950,41 +3840,6 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/typescript-estree@npm:8.34.0":
version: 8.34.0
resolution: "@typescript-eslint/typescript-estree@npm:8.34.0"
dependencies:
"@typescript-eslint/project-service": 8.34.0
"@typescript-eslint/tsconfig-utils": 8.34.0
"@typescript-eslint/types": 8.34.0
"@typescript-eslint/visitor-keys": 8.34.0
debug: ^4.3.4
fast-glob: ^3.3.2
is-glob: ^4.0.3
minimatch: ^9.0.4
semver: ^7.6.0
ts-api-utils: ^2.1.0
peerDependencies:
typescript: ">=4.8.4 <5.9.0"
checksum: b752314f2ff05ddb39c7831d208aa1b2a77ea6829f656ee8e385f90cd44555590831b6d733d3d8ff7a37460e1feeeaf9fd2341f337b92bda2f07f594dc53766e
languageName: node
linkType: hard
"@typescript-eslint/utils@npm:8.34.0":
version: 8.34.0
resolution: "@typescript-eslint/utils@npm:8.34.0"
dependencies:
"@eslint-community/eslint-utils": ^4.7.0
"@typescript-eslint/scope-manager": 8.34.0
"@typescript-eslint/types": 8.34.0
"@typescript-eslint/typescript-estree": 8.34.0
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: ">=4.8.4 <5.9.0"
checksum: ad55f2ec0a901da1f44064fdad06f4c3eabc2e42f26e6017e3b594a513d928f1fa5d58043b336f97019350f6e81c1fa508585b7877ec5f6a357f8c5d634d5cba
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"
@@ -3994,16 +3849,6 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/visitor-keys@npm:8.34.0":
version: 8.34.0
resolution: "@typescript-eslint/visitor-keys@npm:8.34.0"
dependencies:
"@typescript-eslint/types": 8.34.0
eslint-visitor-keys: ^4.2.0
checksum: b356267516faf17b0a6db07f44a3271bd05e5ab7f1f329cc03abac951ce38db495f3ecf5331e61d8378de67be4209166f8d630be91b0fa915a9ae9ff77222cfd
languageName: node
linkType: hard
"@wasm-audio-decoders/common@npm:9.0.7":
version: 9.0.7
resolution: "@wasm-audio-decoders/common@npm:9.0.7"
@@ -4194,20 +4039,6 @@ __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=f264cd06d24a43f76e4ad2d81528f8485a1e7efe"
dependencies:
"@typescript-eslint/eslint-plugin": ^8.32.0
"@typescript-eslint/parser": ^8.32.0
eslint-plugin-simple-import-sort: ^12.1.1
peerDependencies:
eslint: "*"
typescript: ">=4"
checksum: c803aa0752112376261b0f5f6560832f90b3e700169b148cdc1984906b52c9cb15747714ca337ca6f7a90f7338310a17e112886aaeef800dadfa2088790e6259
languageName: node
linkType: hard
"@xtuc/ieee754@npm:^1.2.0":
version: 1.2.0
resolution: "@xtuc/ieee754@npm:1.2.0"
@@ -6712,15 +6543,6 @@ __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"
@@ -6747,20 +6569,6 @@ __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-visitor-keys@npm:^4.2.0":
version: 4.2.1
resolution: "eslint-visitor-keys@npm:4.2.1"
checksum: 3a77e3f99a49109f6fb2c5b7784bc78f9743b834d238cdba4d66c602c6b52f19ed7bcd0a5c5dbbeae3a8689fd785e76c001799f53d2228b278282cf9f699fff5
languageName: node
linkType: hard
"eslint@npm:7.7.0":
version: 7.7.0
resolution: "eslint@npm:7.7.0"
@@ -7046,7 +6854,7 @@ __metadata:
languageName: node
linkType: hard
"fast-glob@npm:^3.3.2, fast-glob@npm:^3.3.3":
"fast-glob@npm:^3.3.3":
version: 3.3.3
resolution: "fast-glob@npm:3.3.3"
dependencies:
@@ -7746,13 +7554,6 @@ __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.13.0":
version: 1.13.0
resolution: "grpc-tools@npm:1.13.0"
@@ -7974,7 +7775,7 @@ __metadata:
languageName: node
linkType: hard
"ignore@npm:^7.0.0, ignore@npm:^7.0.3":
"ignore@npm:^7.0.3":
version: 7.0.5
resolution: "ignore@npm:7.0.5"
checksum: d0862bf64d3d58bf34d5fb0a9f725bec9ca5ce8cd1aecc8f28034269e8f69b8009ffd79ca3eda96962a6a444687781cd5efdb8c7c8ddc0a6996e36d31c217f14
@@ -11618,7 +11419,7 @@ __metadata:
languageName: node
linkType: hard
"semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3, semver@npm:^7.7.2":
"semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.3, semver@npm:^7.7.2":
version: 7.7.2
resolution: "semver@npm:7.7.2"
bin:
@@ -12665,15 +12466,6 @@ __metadata:
languageName: node
linkType: hard
"ts-api-utils@npm:^2.1.0":
version: 2.1.0
resolution: "ts-api-utils@npm:2.1.0"
peerDependencies:
typescript: ">=4.8.4"
checksum: 5b1ef89105654d93d67582308bd8dfe4bbf6874fccbcaa729b08fbb00a940fd4c691ca6d0d2b18c3c70878d9a7e503421b7cc473dbc3d0d54258b86401d4b15d
languageName: node
linkType: hard
"ts-jest@npm:^29.1.3":
version: 29.4.0
resolution: "ts-jest@npm:29.4.0"
@@ -13215,7 +13007,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "waha@workspace:."
dependencies:
"@adiwajshing/baileys": "github:devlikeapro/Baileys#fork-master-2025-05-01"
"@adiwajshing/baileys": "github:devlikeapro/Baileys#fork-master-2025-07-04"
"@adiwajshing/keyed-db": ^0.2.4
"@aws-sdk/client-s3": ^3.633.0
"@aws-sdk/s3-request-presigner": ^3.633.0