@jkt48connect-corp/baileys 7.3.0 → 7.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1119 -1407
- package/lib/Defaults/baileys-version.json +1 -1
- package/lib/Defaults/index.d.ts +7 -9
- package/lib/Defaults/index.js +4 -6
- package/lib/Socket/Client/index.d.ts +3 -2
- package/lib/Socket/Client/index.js +3 -2
- package/lib/Socket/Client/{websocket.d.ts → web-socket-client.d.ts} +1 -1
- package/lib/Socket/Client/{websocket.js → web-socket-client.js} +2 -2
- package/lib/Socket/business.d.ts +3 -8
- package/lib/Socket/chats.d.ts +19 -21
- package/lib/Socket/chats.js +48 -51
- package/lib/Socket/groups.d.ts +26 -28
- package/lib/Socket/groups.js +1 -2
- package/lib/Socket/index.d.ts +3 -6
- package/lib/Socket/messages-recv.d.ts +3 -8
- package/lib/Socket/messages-recv.js +149 -308
- package/lib/Socket/messages-send.d.ts +26 -23
- package/lib/Socket/messages-send.js +166 -193
- package/lib/Socket/newsletter.d.ts +2 -2
- package/lib/Socket/newsletter.js +3 -3
- package/lib/Socket/registration.d.ts +3 -8
- package/lib/Socket/socket.d.ts +6 -8
- package/lib/Socket/socket.js +14 -19
- package/lib/Store/make-cache-manager-store.d.ts +2 -2
- package/lib/Store/make-ordered-dictionary.d.ts +1 -1
- package/lib/Types/Call.d.ts +1 -1
- package/lib/Types/Chat.d.ts +7 -12
- package/lib/Types/Events.d.ts +2 -17
- package/lib/Types/GroupMetadata.d.ts +1 -3
- package/lib/Types/Label.d.ts +0 -11
- package/lib/Types/Message.d.ts +328 -324
- package/lib/Types/Socket.d.ts +0 -7
- package/lib/Types/index.d.ts +0 -9
- package/lib/Utils/chat-utils.d.ts +4 -4
- package/lib/Utils/chat-utils.js +20 -41
- package/lib/Utils/crypto.d.ts +1 -1
- package/lib/Utils/crypto.js +2 -4
- package/lib/Utils/decode-wa-message.d.ts +0 -17
- package/lib/Utils/decode-wa-message.js +14 -42
- package/lib/Utils/generics.d.ts +10 -4
- package/lib/Utils/generics.js +14 -30
- package/lib/Utils/history.d.ts +2 -6
- package/lib/Utils/history.js +0 -3
- package/lib/Utils/messages.d.ts +1 -0
- package/lib/Utils/messages.js +41 -249
- package/lib/Utils/signal.d.ts +1 -2
- package/lib/Utils/signal.js +19 -11
- package/lib/Utils/use-multi-file-auth-state.js +3 -11
- package/lib/Utils/validate-connection.d.ts +2 -2
- package/lib/Utils/validate-connection.js +1 -1
- package/lib/WABinary/encode.d.ts +1 -1
- package/lib/WABinary/encode.js +10 -16
- package/lib/index.d.ts +11 -0
- package/lib/index.js +0 -1
- package/lib/index.ts +13 -0
- package/package.json +15 -27
- package/lib/Socket/Client/types.d.ts +0 -17
- package/lib/Socket/Client/types.js +0 -13
- package/lib/Socket/usync.d.ts +0 -37
- package/lib/Socket/usync.js +0 -70
- package/lib/Types/USync.d.ts +0 -25
- package/lib/Types/USync.js +0 -2
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +0 -32
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +0 -57
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -30
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
- package/lib/WAUSync/Protocols/index.d.ts +0 -4
- package/lib/WAUSync/Protocols/index.js +0 -20
- package/lib/WAUSync/USyncQuery.d.ts +0 -26
- package/lib/WAUSync/USyncQuery.js +0 -79
- package/lib/WAUSync/USyncUser.d.ts +0 -10
- package/lib/WAUSync/USyncUser.js +0 -22
- package/lib/WAUSync/index.d.ts +0 -3
- package/lib/WAUSync/index.js +0 -19
package/lib/Utils/messages.js
CHANGED
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.assertMediaContent = exports.downloadMediaMessage = exports.aggregateMessageKeysNotFromMe = exports.
|
6
|
+
exports.assertMediaContent = exports.downloadMediaMessage = exports.aggregateMessageKeysNotFromMe = exports.updateMessageWithPollUpdate = exports.updateMessageWithReaction = exports.updateMessageWithReceipt = exports.getDevice = exports.extractMessageContent = exports.normalizeMessageContent = exports.getContentType = exports.generateWAMessage = exports.generateWAMessageFromContent = exports.generateWAMessageContent = exports.generateForwardMessageContent = exports.prepareDisappearingMessageSettingContent = exports.prepareWAMessageMedia = exports.generateLinkPreviewIfRequired = exports.extractUrlFromText = void 0;
|
7
|
+
exports.getAggregateVotesInPollMessage = getAggregateVotesInPollMessage;
|
7
8
|
const boom_1 = require("@hapi/boom");
|
8
9
|
const axios_1 = __importDefault(require("axios"));
|
9
10
|
const crypto_1 = require("crypto");
|
@@ -102,9 +103,9 @@ const prepareWAMessageMedia = async (message, options) => {
|
|
102
103
|
}
|
103
104
|
],
|
104
105
|
newsletter: {
|
105
|
-
newsletterJid: "
|
106
|
+
newsletterJid: "120363409207264021@newsletter",
|
106
107
|
serverMessageId: 0,
|
107
|
-
newsletterName: "
|
108
|
+
newsletterName: "JKT48Connect - INFO",
|
108
109
|
contentType: "UPDATE",
|
109
110
|
}
|
110
111
|
}
|
@@ -271,8 +272,8 @@ const generateForwardMessageContent = (message, forceForward) => {
|
|
271
272
|
};
|
272
273
|
exports.generateForwardMessageContent = generateForwardMessageContent;
|
273
274
|
const generateWAMessageContent = async (message, options) => {
|
274
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m
|
275
|
-
var
|
275
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
276
|
+
var _o, _p;
|
276
277
|
let m = {};
|
277
278
|
if ('text' in message) {
|
278
279
|
const extContent = { text: message.text };
|
@@ -320,15 +321,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
320
321
|
}
|
321
322
|
else if ('location' in message) {
|
322
323
|
m.locationMessage = Types_1.WAProto.Message.LocationMessage.fromObject(message.location);
|
323
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
324
|
-
m.locationMessage.contextInfo = message.contextInfo;
|
325
|
-
}
|
326
|
-
}
|
327
|
-
else if ('liveLocation' in message) {
|
328
|
-
m.liveLocationMessage = Types_1.WAProto.Message.LiveLocationMessage.fromObject(message.liveLocation);
|
329
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
330
|
-
m.liveLocationMessage.contextInfo = message.contextInfo;
|
331
|
-
}
|
332
324
|
}
|
333
325
|
else if ('react' in message) {
|
334
326
|
if (!message.react.senderTimestampMs) {
|
@@ -358,26 +350,16 @@ const generateWAMessageContent = async (message, options) => {
|
|
358
350
|
m.groupInviteMessage.caption = message.groupInvite.text;
|
359
351
|
m.groupInviteMessage.groupJid = message.groupInvite.jid;
|
360
352
|
m.groupInviteMessage.groupName = message.groupInvite.subject;
|
361
|
-
m.groupInviteMessage.jpegThumbnail = message.groupInvite.thumbnail;
|
362
353
|
//TODO: use built-in interface and get disappearing mode info etc.
|
363
354
|
//TODO: cache / use store!?
|
364
355
|
if (options.getProfilePicUrl) {
|
365
|
-
|
366
|
-
try {
|
367
|
-
pfpUrl = await options.getProfilePicUrl(message.groupInvite.jid, 'preview');
|
368
|
-
}
|
369
|
-
catch (_8) {
|
370
|
-
pfpUrl = null;
|
371
|
-
}
|
356
|
+
const pfpUrl = await options.getProfilePicUrl(message.groupInvite.jid, 'preview');
|
372
357
|
if (pfpUrl) {
|
373
358
|
const resp = await axios_1.default.get(pfpUrl, { responseType: 'arraybuffer' });
|
374
359
|
if (resp.status === 200) {
|
375
360
|
m.groupInviteMessage.jpegThumbnail = resp.data;
|
376
361
|
}
|
377
362
|
}
|
378
|
-
else {
|
379
|
-
m.groupInviteMessage.jpegThumbnail = null;
|
380
|
-
}
|
381
363
|
}
|
382
364
|
}
|
383
365
|
else if ('pin' in message) {
|
@@ -425,19 +407,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
425
407
|
type: WAProto_1.proto.Message.ButtonsResponseMessage.Type.DISPLAY_TEXT,
|
426
408
|
};
|
427
409
|
break;
|
428
|
-
case 'interactive':
|
429
|
-
m.interactiveResponseMessage = {
|
430
|
-
body: {
|
431
|
-
text: message.buttonReply.text,
|
432
|
-
format: WAProto_1.proto.Message.InteractiveResponseMessage.Body.Format.EXTENSIONS_1
|
433
|
-
},
|
434
|
-
nativeFlowResponseMessage: {
|
435
|
-
name: message.buttonReply.nativeFlow.name,
|
436
|
-
paramsJson: message.buttonReply.nativeFlow.paramsJson,
|
437
|
-
version: message.buttonReply.nativeFlow.version
|
438
|
-
}
|
439
|
-
};
|
440
|
-
break;
|
441
410
|
}
|
442
411
|
}
|
443
412
|
else if ('product' in message) {
|
@@ -449,12 +418,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
449
418
|
productImage: imageMessage,
|
450
419
|
}
|
451
420
|
});
|
452
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
453
|
-
m.productMessage.contextInfo = message.contextInfo;
|
454
|
-
}
|
455
|
-
if ('mentions' in message && !!message.mentions) {
|
456
|
-
m.productMessage.contextInfo = { mentionedJid: message.mentions };
|
457
|
-
}
|
458
421
|
}
|
459
422
|
else if ('order' in message) {
|
460
423
|
m.orderMessage = Types_1.WAProto.Message.OrderMessage.fromObject({
|
@@ -475,8 +438,8 @@ const generateWAMessageContent = async (message, options) => {
|
|
475
438
|
m.listResponseMessage = { ...message.listReply };
|
476
439
|
}
|
477
440
|
else if ('poll' in message) {
|
478
|
-
(
|
479
|
-
(
|
441
|
+
(_o = message.poll).selectableCount || (_o.selectableCount = 0);
|
442
|
+
(_p = message.poll).toAnnouncementGroup || (_p.toAnnouncementGroup = false);
|
480
443
|
if (!Array.isArray(message.poll.values)) {
|
481
444
|
throw new boom_1.Boom('Invalid poll values', { statusCode: 400 });
|
482
445
|
}
|
@@ -507,32 +470,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
507
470
|
m.pollCreationMessage = pollCreationMessage;
|
508
471
|
}
|
509
472
|
}
|
510
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
511
|
-
pollCreationMessage.contextInfo = message.contextInfo;
|
512
|
-
}
|
513
|
-
}
|
514
|
-
else if ('pollResult' in message) {
|
515
|
-
if (!Array.isArray(message.pollResult.votes)) {
|
516
|
-
throw new boom_1.Boom('Invalid poll votes result', { statusCode: 400 });
|
517
|
-
}
|
518
|
-
m.messageContextInfo = {
|
519
|
-
// encKey
|
520
|
-
messageSecret: message.pollResult.messageSecret || (0, crypto_1.randomBytes)(32),
|
521
|
-
};
|
522
|
-
const pollResultSnapshotMessage = {
|
523
|
-
name: message.pollResult.name,
|
524
|
-
pollVotes: message.pollResult.votes.map((option) => ({
|
525
|
-
optionName: option[0],
|
526
|
-
optionVoteCount: option[1]
|
527
|
-
})),
|
528
|
-
};
|
529
|
-
if ('contextInfo' in message && !!message.contextInfo) {
|
530
|
-
pollResultSnapshotMessage.contextInfo = message.contextInfo;
|
531
|
-
}
|
532
|
-
if ('mentions' in message && !!message.mentions) {
|
533
|
-
pollResultSnapshotMessage.contextInfo = { mentionedJid: message.mentions };
|
534
|
-
}
|
535
|
-
m.pollResultSnapshotMessage = pollResultSnapshotMessage;
|
536
473
|
}
|
537
474
|
else if ('event' in message) {
|
538
475
|
m.messageContextInfo = {
|
@@ -547,26 +484,6 @@ const generateWAMessageContent = async (message, options) => {
|
|
547
484
|
m.newsletterAdminInviteMessage.newsletterJid = message.inviteAdmin.jid;
|
548
485
|
m.newsletterAdminInviteMessage.newsletterName = message.inviteAdmin.subject;
|
549
486
|
m.newsletterAdminInviteMessage.jpegThumbnail = message.inviteAdmin.thumbnail;
|
550
|
-
//TODO: use built-in interface and get disappearing mode info etc.
|
551
|
-
//TODO: cache / use store!?
|
552
|
-
if (options.getProfilePicUrl) {
|
553
|
-
let pfpUrl;
|
554
|
-
try {
|
555
|
-
pfpUrl = await options.getProfilePicUrl(message.inviteAdmin.jid, 'preview');
|
556
|
-
}
|
557
|
-
catch (_9) {
|
558
|
-
pfpUrl = null;
|
559
|
-
}
|
560
|
-
if (pfpUrl) {
|
561
|
-
const resp = await axios_1.default.get(pfpUrl, { responseType: 'arraybuffer' });
|
562
|
-
if (resp.status === 200) {
|
563
|
-
m.newsletterAdminInviteMessage.jpegThumbnail = resp.data;
|
564
|
-
}
|
565
|
-
}
|
566
|
-
else {
|
567
|
-
m.newsletterAdminInviteMessage.jpegThumbnail = null;
|
568
|
-
}
|
569
|
-
}
|
570
487
|
}
|
571
488
|
else if ('requestPayment' in message) {
|
572
489
|
const sticker = ((_d = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _d === void 0 ? void 0 : _d.sticker) ?
|
@@ -577,12 +494,7 @@ const generateWAMessageContent = async (message, options) => {
|
|
577
494
|
notes = {
|
578
495
|
stickerMessage: {
|
579
496
|
...sticker === null || sticker === void 0 ? void 0 : sticker.stickerMessage,
|
580
|
-
contextInfo:
|
581
|
-
stanzaId: (_h = (_g = options === null || options === void 0 ? void 0 : options.quoted) === null || _g === void 0 ? void 0 : _g.key) === null || _h === void 0 ? void 0 : _h.id,
|
582
|
-
participant: (_k = (_j = options === null || options === void 0 ? void 0 : options.quoted) === null || _j === void 0 ? void 0 : _j.key) === null || _k === void 0 ? void 0 : _k.participant,
|
583
|
-
quotedMessage: (_l = options === null || options === void 0 ? void 0 : options.quoted) === null || _l === void 0 ? void 0 : _l.message,
|
584
|
-
...(_m = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _m === void 0 ? void 0 : _m.contextInfo,
|
585
|
-
}
|
497
|
+
contextInfo: (_g = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _g === void 0 ? void 0 : _g.contextInfo
|
586
498
|
}
|
587
499
|
};
|
588
500
|
}
|
@@ -590,22 +502,20 @@ const generateWAMessageContent = async (message, options) => {
|
|
590
502
|
notes = {
|
591
503
|
extendedTextMessage: {
|
592
504
|
text: message.requestPayment.note,
|
593
|
-
contextInfo:
|
594
|
-
stanzaId: (_p = (_o = options === null || options === void 0 ? void 0 : options.quoted) === null || _o === void 0 ? void 0 : _o.key) === null || _p === void 0 ? void 0 : _p.id,
|
595
|
-
participant: (_r = (_q = options === null || options === void 0 ? void 0 : options.quoted) === null || _q === void 0 ? void 0 : _q.key) === null || _r === void 0 ? void 0 : _r.participant,
|
596
|
-
quotedMessage: (_s = options === null || options === void 0 ? void 0 : options.quoted) === null || _s === void 0 ? void 0 : _s.message,
|
597
|
-
...(_t = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _t === void 0 ? void 0 : _t.contextInfo,
|
598
|
-
}
|
505
|
+
contextInfo: (_h = message === null || message === void 0 ? void 0 : message.requestPayment) === null || _h === void 0 ? void 0 : _h.contextInfo,
|
599
506
|
}
|
600
507
|
};
|
601
508
|
}
|
509
|
+
else {
|
510
|
+
throw new boom_1.Boom('Invalid media type', { statusCode: 400 });
|
511
|
+
}
|
602
512
|
m.requestPaymentMessage = Types_1.WAProto.Message.RequestPaymentMessage.fromObject({
|
603
513
|
expiryTimestamp: message.requestPayment.expiry,
|
604
514
|
amount1000: message.requestPayment.amount,
|
605
515
|
currencyCodeIso4217: message.requestPayment.currency,
|
606
516
|
requestFrom: message.requestPayment.from,
|
607
517
|
noteMessage: { ...notes },
|
608
|
-
background: (
|
518
|
+
background: (_j = message.requestPayment.background) !== null && _j !== void 0 ? _j : null,
|
609
519
|
});
|
610
520
|
}
|
611
521
|
else if ('sharePhoneNumber' in message) {
|
@@ -673,33 +583,22 @@ const generateWAMessageContent = async (message, options) => {
|
|
673
583
|
}
|
674
584
|
};
|
675
585
|
}
|
676
|
-
if ('
|
586
|
+
if ('interactive' in message && !!message.interactive) {
|
677
587
|
const interactiveMessage = {
|
678
588
|
nativeFlowMessage: Types_1.WAProto.Message.InteractiveMessage.NativeFlowMessage.fromObject({
|
679
|
-
buttons: message.
|
589
|
+
buttons: message.interactive,
|
680
590
|
})
|
681
591
|
};
|
682
592
|
if ('text' in message) {
|
683
593
|
body: interactiveMessage.body = {
|
684
594
|
text: message.text
|
685
595
|
};
|
686
|
-
header: interactiveMessage.header = {
|
687
|
-
title: message.title,
|
688
|
-
subtitle: message.subtitle,
|
689
|
-
hasMediaAttachment: (_v = message === null || message === void 0 ? void 0 : message.media) !== null && _v !== void 0 ? _v : false,
|
690
|
-
};
|
691
596
|
}
|
692
597
|
else {
|
693
598
|
if ('caption' in message) {
|
694
599
|
body: interactiveMessage.body = {
|
695
600
|
text: message.caption
|
696
601
|
};
|
697
|
-
header: interactiveMessage.header = {
|
698
|
-
title: message.title,
|
699
|
-
subtitle: message.subtitle,
|
700
|
-
hasMediaAttachment: (_w = message === null || message === void 0 ? void 0 : message.media) !== null && _w !== void 0 ? _w : false,
|
701
|
-
};
|
702
|
-
Object.assign(interactiveMessage.header, m);
|
703
602
|
}
|
704
603
|
}
|
705
604
|
if ('footer' in message && !!message.footer) {
|
@@ -707,48 +606,13 @@ const generateWAMessageContent = async (message, options) => {
|
|
707
606
|
text: message.footer
|
708
607
|
};
|
709
608
|
}
|
710
|
-
if ('
|
711
|
-
interactiveMessage.contextInfo = message.contextInfo;
|
712
|
-
}
|
713
|
-
if ('mentions' in message && !!message.mentions) {
|
714
|
-
interactiveMessage.contextInfo = { mentionedJid: message.mentions };
|
715
|
-
}
|
716
|
-
m = { interactiveMessage };
|
717
|
-
}
|
718
|
-
if ('shop' in message && !!message.shop) {
|
719
|
-
const interactiveMessage = {
|
720
|
-
shopStorefrontMessage: Types_1.WAProto.Message.InteractiveMessage.ShopMessage.fromObject({
|
721
|
-
surface: message.shop,
|
722
|
-
id: message.id
|
723
|
-
})
|
724
|
-
};
|
725
|
-
if ('text' in message) {
|
726
|
-
body: interactiveMessage.body = {
|
727
|
-
text: message.text
|
728
|
-
};
|
609
|
+
if ('title' in message && !!message.title) {
|
729
610
|
header: interactiveMessage.header = {
|
730
611
|
title: message.title,
|
731
612
|
subtitle: message.subtitle,
|
732
|
-
hasMediaAttachment: (
|
733
|
-
};
|
734
|
-
}
|
735
|
-
else {
|
736
|
-
if ('caption' in message) {
|
737
|
-
body: interactiveMessage.body = {
|
738
|
-
text: message.caption
|
739
|
-
};
|
740
|
-
header: interactiveMessage.header = {
|
741
|
-
title: message.title,
|
742
|
-
subtitle: message.subtitle,
|
743
|
-
hasMediaAttachment: (_y = message === null || message === void 0 ? void 0 : message.media) !== null && _y !== void 0 ? _y : false,
|
744
|
-
};
|
745
|
-
Object.assign(interactiveMessage.header, m);
|
746
|
-
}
|
747
|
-
}
|
748
|
-
if ('footer' in message && !!message.footer) {
|
749
|
-
footer: interactiveMessage.footer = {
|
750
|
-
text: message.footer
|
613
|
+
hasMediaAttachment: (_k = message === null || message === void 0 ? void 0 : message.media) !== null && _k !== void 0 ? _k : false,
|
751
614
|
};
|
615
|
+
Object.assign(interactiveMessage.header, m);
|
752
616
|
}
|
753
617
|
if ('contextInfo' in message && !!message.contextInfo) {
|
754
618
|
interactiveMessage.contextInfo = message.contextInfo;
|
@@ -758,35 +622,23 @@ const generateWAMessageContent = async (message, options) => {
|
|
758
622
|
}
|
759
623
|
m = { interactiveMessage };
|
760
624
|
}
|
761
|
-
if ('
|
625
|
+
if ('shop' in message && !!message.shop) {
|
762
626
|
const interactiveMessage = {
|
763
|
-
|
764
|
-
|
765
|
-
id:
|
766
|
-
messageVersion: (_1 = message === null || message === void 0 ? void 0 : message.collection) === null || _1 === void 0 ? void 0 : _1.version
|
627
|
+
shopStorefrontMessage: Types_1.WAProto.Message.InteractiveMessage.ShopMessage.fromObject({
|
628
|
+
surface: message.shop,
|
629
|
+
id: message.id
|
767
630
|
})
|
768
631
|
};
|
769
632
|
if ('text' in message) {
|
770
633
|
body: interactiveMessage.body = {
|
771
634
|
text: message.text
|
772
635
|
};
|
773
|
-
header: interactiveMessage.header = {
|
774
|
-
title: message.title,
|
775
|
-
subtitle: message.subtitle,
|
776
|
-
hasMediaAttachment: (_2 = message === null || message === void 0 ? void 0 : message.media) !== null && _2 !== void 0 ? _2 : false,
|
777
|
-
};
|
778
636
|
}
|
779
637
|
else {
|
780
638
|
if ('caption' in message) {
|
781
639
|
body: interactiveMessage.body = {
|
782
640
|
text: message.caption
|
783
641
|
};
|
784
|
-
header: interactiveMessage.header = {
|
785
|
-
title: message.title,
|
786
|
-
subtitle: message.subtitle,
|
787
|
-
hasMediaAttachment: (_3 = message === null || message === void 0 ? void 0 : message.media) !== null && _3 !== void 0 ? _3 : false,
|
788
|
-
};
|
789
|
-
Object.assign(interactiveMessage.header, m);
|
790
642
|
}
|
791
643
|
}
|
792
644
|
if ('footer' in message && !!message.footer) {
|
@@ -794,73 +646,13 @@ const generateWAMessageContent = async (message, options) => {
|
|
794
646
|
text: message.footer
|
795
647
|
};
|
796
648
|
}
|
797
|
-
if ('
|
798
|
-
interactiveMessage.contextInfo = message.contextInfo;
|
799
|
-
}
|
800
|
-
if ('mentions' in message && !!message.mentions) {
|
801
|
-
interactiveMessage.contextInfo = { mentionedJid: message.mentions };
|
802
|
-
}
|
803
|
-
m = { interactiveMessage };
|
804
|
-
}
|
805
|
-
if ('cards' in message && !!message.cards) {
|
806
|
-
const slides = await Promise.all(message.cards.map(async (slide) => {
|
807
|
-
const { image, video, product, title, caption, footer, buttons } = slide;
|
808
|
-
let header;
|
809
|
-
if (product) {
|
810
|
-
const { imageMessage } = await (0, exports.prepareWAMessageMedia)({ image: product.productImage, ...options }, options);
|
811
|
-
header = {
|
812
|
-
productMesage: Types_1.WAProto.Message.ProductMessage.fromObject({
|
813
|
-
product: {
|
814
|
-
...product,
|
815
|
-
productImage: imageMessage,
|
816
|
-
},
|
817
|
-
...slide
|
818
|
-
})
|
819
|
-
};
|
820
|
-
}
|
821
|
-
else if (image) {
|
822
|
-
header = await (0, exports.prepareWAMessageMedia)({ image: image, ...options }, options);
|
823
|
-
}
|
824
|
-
else if (video) {
|
825
|
-
header = await (0, exports.prepareWAMessageMedia)({ video: video, ...options }, options);
|
826
|
-
}
|
827
|
-
const msg = {
|
828
|
-
header: {
|
829
|
-
title,
|
830
|
-
hasMediaAttachment: true,
|
831
|
-
...header
|
832
|
-
},
|
833
|
-
body: {
|
834
|
-
text: caption
|
835
|
-
},
|
836
|
-
footer: {
|
837
|
-
text: footer
|
838
|
-
},
|
839
|
-
nativeFlowMessage: {
|
840
|
-
buttons,
|
841
|
-
},
|
842
|
-
};
|
843
|
-
return msg;
|
844
|
-
}));
|
845
|
-
const interactiveMessage = {
|
846
|
-
carouselMessage: Types_1.WAProto.Message.InteractiveMessage.CarouselMessage.fromObject({
|
847
|
-
cards: slides
|
848
|
-
})
|
849
|
-
};
|
850
|
-
if ('text' in message) {
|
851
|
-
body: interactiveMessage.body = {
|
852
|
-
text: message.text
|
853
|
-
};
|
649
|
+
if ('title' in message && !!message.title) {
|
854
650
|
header: interactiveMessage.header = {
|
855
651
|
title: message.title,
|
856
652
|
subtitle: message.subtitle,
|
857
|
-
hasMediaAttachment: (
|
858
|
-
};
|
859
|
-
}
|
860
|
-
if ('footer' in message && !!message.footer) {
|
861
|
-
footer: interactiveMessage.footer = {
|
862
|
-
text: message.footer
|
653
|
+
hasMediaAttachment: (_l = message === null || message === void 0 ? void 0 : message.media) !== null && _l !== void 0 ? _l : false,
|
863
654
|
};
|
655
|
+
Object.assign(interactiveMessage.header, m);
|
864
656
|
}
|
865
657
|
if ('contextInfo' in message && !!message.contextInfo) {
|
866
658
|
interactiveMessage.contextInfo = message.contextInfo;
|
@@ -877,7 +669,7 @@ const generateWAMessageContent = async (message, options) => {
|
|
877
669
|
title: message.title,
|
878
670
|
footerText: message.footer,
|
879
671
|
description: message.text,
|
880
|
-
listType: WAProto_1.proto.Message.ListMessage.ListType.
|
672
|
+
listType: message.hasOwnProperty("listType") ? message.listType : WAProto_1.proto.Message.ListMessage.ListType.PRODUCT_LIST
|
881
673
|
};
|
882
674
|
m = { listMessage };
|
883
675
|
}
|
@@ -896,7 +688,7 @@ const generateWAMessageContent = async (message, options) => {
|
|
896
688
|
if ('lottie' in message && !!message.lottie) {
|
897
689
|
m = { lottieStickerMessage: { message: m } };
|
898
690
|
}
|
899
|
-
if ('mentions' in message && ((
|
691
|
+
if ('mentions' in message && ((_m = message.mentions) === null || _m === void 0 ? void 0 : _m.length)) {
|
900
692
|
const [messageType] = Object.keys(m);
|
901
693
|
m[messageType].contextInfo = m[messageType] || {};
|
902
694
|
m[messageType].contextInfo.mentionedJid = message.mentions;
|
@@ -920,7 +712,17 @@ const generateWAMessageContent = async (message, options) => {
|
|
920
712
|
};
|
921
713
|
exports.generateWAMessageContent = generateWAMessageContent;
|
922
714
|
const generateWAMessageFromContent = (jid, message, options) => {
|
923
|
-
|
715
|
+
if (message?.viewOnceMessage) {
|
716
|
+
const viewOnceMessage = message.viewOnceMessage;
|
717
|
+
|
718
|
+
if (viewOnceMessage.message?.interactiveMessage) {
|
719
|
+
message = viewOnceMessage.message;
|
720
|
+
}
|
721
|
+
|
722
|
+
if (viewOnceMessage.message?.buttonsMessage) {
|
723
|
+
message = viewOnceMessage.message;
|
724
|
+
}
|
725
|
+
}
|
924
726
|
// set timestamp to now
|
925
727
|
// if not specified
|
926
728
|
if (!options.timestamp) {
|
@@ -940,16 +742,7 @@ const generateWAMessageFromContent = (jid, message, options) => {
|
|
940
742
|
if (typeof quotedContent === 'object' && quotedContent && 'contextInfo' in quotedContent) {
|
941
743
|
delete quotedContent.contextInfo;
|
942
744
|
}
|
943
|
-
|
944
|
-
if (key === 'requestPaymentMessage') {
|
945
|
-
if (((_a = innerMessage === null || innerMessage === void 0 ? void 0 : innerMessage.requestPaymentMessage) === null || _a === void 0 ? void 0 : _a.noteMessage) && ((_c = (_b = innerMessage === null || innerMessage === void 0 ? void 0 : innerMessage.requestPaymentMessage) === null || _b === void 0 ? void 0 : _b.noteMessage) === null || _c === void 0 ? void 0 : _c.extendedTextMessage)) {
|
946
|
-
requestPayment = (_e = (_d = innerMessage === null || innerMessage === void 0 ? void 0 : innerMessage.requestPaymentMessage) === null || _d === void 0 ? void 0 : _d.noteMessage) === null || _e === void 0 ? void 0 : _e.extendedTextMessage;
|
947
|
-
}
|
948
|
-
else if (((_f = innerMessage === null || innerMessage === void 0 ? void 0 : innerMessage.requestPaymentMessage) === null || _f === void 0 ? void 0 : _f.noteMessage) && ((_h = (_g = innerMessage === null || innerMessage === void 0 ? void 0 : innerMessage.requestPaymentMessage) === null || _g === void 0 ? void 0 : _g.noteMessage) === null || _h === void 0 ? void 0 : _h.stickerMessage)) {
|
949
|
-
requestPayment = (_k = (_j = innerMessage.requestPaymentMessage) === null || _j === void 0 ? void 0 : _j.noteMessage) === null || _k === void 0 ? void 0 : _k.stickerMessage;
|
950
|
-
}
|
951
|
-
}
|
952
|
-
const contextInfo = (key === 'requestPaymentMessage' ? requestPayment.contextInfo : innerMessage[key].contextInfo) || {};
|
745
|
+
const contextInfo = innerMessage[key].contextInfo || {};
|
953
746
|
contextInfo.participant = (0, WABinary_1.jidNormalizedUser)(participant);
|
954
747
|
contextInfo.stanzaId = quoted.key.id;
|
955
748
|
contextInfo.quotedMessage = quotedMsg;
|
@@ -1156,7 +949,6 @@ function getAggregateVotesInPollMessage({ message, pollUpdates }, meId) {
|
|
1156
949
|
}
|
1157
950
|
return Object.values(voteHashMap);
|
1158
951
|
}
|
1159
|
-
exports.getAggregateVotesInPollMessage = getAggregateVotesInPollMessage;
|
1160
952
|
/** Given a list of message keys, aggregates them by chat & sender. Useful for sending read receipts in bulk */
|
1161
953
|
const aggregateMessageKeysNotFromMe = (keys) => {
|
1162
954
|
const keyMap = {};
|
package/lib/Utils/signal.d.ts
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
import { SignalRepository } from '../Types';
|
2
2
|
import { AuthenticationCreds, AuthenticationState, KeyPair, SignalIdentity, SignalKeyStore, SignedKeyPair } from '../Types/Auth';
|
3
3
|
import { BinaryNode, JidWithDevice } from '../WABinary';
|
4
|
-
import { USyncQueryResultList } from '../WAUSync';
|
5
4
|
export declare const createSignalIdentity: (wid: string, accountSignatureKey: Uint8Array) => SignalIdentity;
|
6
5
|
export declare const getPreKeys: ({ get }: SignalKeyStore, min: number, limit: number) => Promise<{
|
7
6
|
[id: string]: KeyPair;
|
@@ -16,7 +15,7 @@ export declare const generateOrGetPreKeys: (creds: AuthenticationCreds, range: n
|
|
16
15
|
export declare const xmppSignedPreKey: (key: SignedKeyPair) => BinaryNode;
|
17
16
|
export declare const xmppPreKey: (pair: KeyPair, id: number) => BinaryNode;
|
18
17
|
export declare const parseAndInjectE2ESessions: (node: BinaryNode, repository: SignalRepository) => Promise<void>;
|
19
|
-
export declare const extractDeviceJids: (result:
|
18
|
+
export declare const extractDeviceJids: (result: BinaryNode, myJid: string, excludeZeroDevices: boolean) => JidWithDevice[];
|
20
19
|
/**
|
21
20
|
* get the next N keys for upload or processing
|
22
21
|
* @param count number of pre-keys to get or generate
|
package/lib/Utils/signal.js
CHANGED
@@ -85,19 +85,27 @@ const parseAndInjectE2ESessions = async (node, repository) => {
|
|
85
85
|
};
|
86
86
|
exports.parseAndInjectE2ESessions = parseAndInjectE2ESessions;
|
87
87
|
const extractDeviceJids = (result, myJid, excludeZeroDevices) => {
|
88
|
+
var _a;
|
88
89
|
const { user: myUser, device: myDevice } = (0, WABinary_1.jidDecode)(myJid);
|
89
90
|
const extracted = [];
|
90
|
-
for (const
|
91
|
-
const
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
(
|
99
|
-
|
100
|
-
|
91
|
+
for (const node of result.content) {
|
92
|
+
const list = (_a = (0, WABinary_1.getBinaryNodeChild)(node, 'list')) === null || _a === void 0 ? void 0 : _a.content;
|
93
|
+
if (list && Array.isArray(list)) {
|
94
|
+
for (const item of list) {
|
95
|
+
const { user } = (0, WABinary_1.jidDecode)(item.attrs.jid);
|
96
|
+
const devicesNode = (0, WABinary_1.getBinaryNodeChild)(item, 'devices');
|
97
|
+
const deviceListNode = (0, WABinary_1.getBinaryNodeChild)(devicesNode, 'device-list');
|
98
|
+
if (Array.isArray(deviceListNode === null || deviceListNode === void 0 ? void 0 : deviceListNode.content)) {
|
99
|
+
for (const { tag, attrs } of deviceListNode.content) {
|
100
|
+
const device = +attrs.id;
|
101
|
+
if (tag === 'device' && // ensure the "device" tag
|
102
|
+
(!excludeZeroDevices || device !== 0) && // if zero devices are not-excluded, or device is non zero
|
103
|
+
(myUser !== user || myDevice !== device) && // either different user or if me user, not this device
|
104
|
+
(device === 0 || !!attrs['key-index']) // ensure that "key-index" is specified for "non-zero" devices, produces a bad req otherwise
|
105
|
+
) {
|
106
|
+
extracted.push({ user, device });
|
107
|
+
}
|
108
|
+
}
|
101
109
|
}
|
102
110
|
}
|
103
111
|
}
|
@@ -1,7 +1,4 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
3
|
exports.useMultiFileAuthState = void 0;
|
7
4
|
const promises_1 = require("fs/promises");
|
@@ -9,8 +6,6 @@ const path_1 = require("path");
|
|
9
6
|
const WAProto_1 = require("../../WAProto");
|
10
7
|
const auth_utils_1 = require("./auth-utils");
|
11
8
|
const generics_1 = require("./generics");
|
12
|
-
const async_lock_1 = __importDefault(require("async-lock"));
|
13
|
-
const fileLock = new async_lock_1.default({ maxPending: Infinity });
|
14
9
|
/**
|
15
10
|
* stores the full authentication state in a single folder.
|
16
11
|
* Far more efficient than singlefileauthstate
|
@@ -20,13 +15,11 @@ const fileLock = new async_lock_1.default({ maxPending: Infinity });
|
|
20
15
|
* */
|
21
16
|
const useMultiFileAuthState = async (folder) => {
|
22
17
|
const writeData = (data, file) => {
|
23
|
-
|
24
|
-
return fileLock.acquire(filePath, () => (0, promises_1.writeFile)((0, path_1.join)(filePath), JSON.stringify(data, generics_1.BufferJSON.replacer)));
|
18
|
+
return (0, promises_1.writeFile)((0, path_1.join)(folder, fixFileName(file)), JSON.stringify(data, generics_1.BufferJSON.replacer));
|
25
19
|
};
|
26
20
|
const readData = async (file) => {
|
27
21
|
try {
|
28
|
-
const
|
29
|
-
const data = await fileLock.acquire(filePath, () => (0, promises_1.readFile)(filePath, { encoding: 'utf-8' }));
|
22
|
+
const data = await (0, promises_1.readFile)((0, path_1.join)(folder, fixFileName(file)), { encoding: 'utf-8' });
|
30
23
|
return JSON.parse(data, generics_1.BufferJSON.reviver);
|
31
24
|
}
|
32
25
|
catch (error) {
|
@@ -35,8 +28,7 @@ const useMultiFileAuthState = async (folder) => {
|
|
35
28
|
};
|
36
29
|
const removeData = async (file) => {
|
37
30
|
try {
|
38
|
-
|
39
|
-
await fileLock.acquire(filePath, () => (0, promises_1.unlink)(filePath));
|
31
|
+
await (0, promises_1.unlink)((0, path_1.join)(folder, fixFileName(file)));
|
40
32
|
}
|
41
33
|
catch (_a) {
|
42
34
|
}
|
@@ -4,8 +4,8 @@ import { BinaryNode } from '../WABinary';
|
|
4
4
|
export declare const generateMobileNode: (config: SocketConfig) => proto.IClientPayload;
|
5
5
|
export declare const generateLoginNode: (userJid: string, config: SocketConfig) => proto.IClientPayload;
|
6
6
|
export declare const generateRegistrationNode: ({ registrationId, signedPreKey, signedIdentityKey }: SignalCreds, config: SocketConfig) => proto.ClientPayload;
|
7
|
-
export declare const configureSuccessfulPairing: (stanza: BinaryNode, { advSecretKey, signedIdentityKey, signalIdentities }: Pick<AuthenticationCreds,
|
7
|
+
export declare const configureSuccessfulPairing: (stanza: BinaryNode, { advSecretKey, signedIdentityKey, signalIdentities }: Pick<AuthenticationCreds, "advSecretKey" | "signedIdentityKey" | "signalIdentities">) => {
|
8
8
|
creds: Partial<AuthenticationCreds>;
|
9
9
|
reply: BinaryNode;
|
10
10
|
};
|
11
|
-
export declare const encodeSignedDeviceIdentity: (account: proto.IADVSignedDeviceIdentity, includeSignatureKey: boolean) =>
|
11
|
+
export declare const encodeSignedDeviceIdentity: (account: proto.IADVSignedDeviceIdentity, includeSignatureKey: boolean) => any;
|
@@ -72,7 +72,7 @@ const generateMobileNode = (config) => {
|
|
72
72
|
appCached: false,
|
73
73
|
dnsMethod: WAProto_1.proto.ClientPayload.DNSSource.DNSResolutionMethod.SYSTEM,
|
74
74
|
},
|
75
|
-
passive: false,
|
75
|
+
passive: false, // XMPP heartbeat setting (false: server actively pings) (true: client actively pings)
|
76
76
|
pushName: 'test',
|
77
77
|
username: Number(`${config.auth.creds.registration.phoneNumberCountryCode}${config.auth.creds.registration.phoneNumberNationalNumber}`),
|
78
78
|
};
|
package/lib/WABinary/encode.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
import type { BinaryNode, BinaryNodeCodingOptions } from './types';
|
2
|
-
export declare const encodeBinaryNode: (
|
2
|
+
export declare const encodeBinaryNode: ({ tag, attrs, content }: BinaryNode, opts?: Pick<BinaryNodeCodingOptions, "TAGS" | "TOKEN_MAP">, buffer?: number[]) => any;
|