@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.
Files changed (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1119 -1407
  3. package/lib/Defaults/baileys-version.json +1 -1
  4. package/lib/Defaults/index.d.ts +7 -9
  5. package/lib/Defaults/index.js +4 -6
  6. package/lib/Socket/Client/index.d.ts +3 -2
  7. package/lib/Socket/Client/index.js +3 -2
  8. package/lib/Socket/Client/{websocket.d.ts → web-socket-client.d.ts} +1 -1
  9. package/lib/Socket/Client/{websocket.js → web-socket-client.js} +2 -2
  10. package/lib/Socket/business.d.ts +3 -8
  11. package/lib/Socket/chats.d.ts +19 -21
  12. package/lib/Socket/chats.js +48 -51
  13. package/lib/Socket/groups.d.ts +26 -28
  14. package/lib/Socket/groups.js +1 -2
  15. package/lib/Socket/index.d.ts +3 -6
  16. package/lib/Socket/messages-recv.d.ts +3 -8
  17. package/lib/Socket/messages-recv.js +149 -308
  18. package/lib/Socket/messages-send.d.ts +26 -23
  19. package/lib/Socket/messages-send.js +166 -193
  20. package/lib/Socket/newsletter.d.ts +2 -2
  21. package/lib/Socket/newsletter.js +3 -3
  22. package/lib/Socket/registration.d.ts +3 -8
  23. package/lib/Socket/socket.d.ts +6 -8
  24. package/lib/Socket/socket.js +14 -19
  25. package/lib/Store/make-cache-manager-store.d.ts +2 -2
  26. package/lib/Store/make-ordered-dictionary.d.ts +1 -1
  27. package/lib/Types/Call.d.ts +1 -1
  28. package/lib/Types/Chat.d.ts +7 -12
  29. package/lib/Types/Events.d.ts +2 -17
  30. package/lib/Types/GroupMetadata.d.ts +1 -3
  31. package/lib/Types/Label.d.ts +0 -11
  32. package/lib/Types/Message.d.ts +328 -324
  33. package/lib/Types/Socket.d.ts +0 -7
  34. package/lib/Types/index.d.ts +0 -9
  35. package/lib/Utils/chat-utils.d.ts +4 -4
  36. package/lib/Utils/chat-utils.js +20 -41
  37. package/lib/Utils/crypto.d.ts +1 -1
  38. package/lib/Utils/crypto.js +2 -4
  39. package/lib/Utils/decode-wa-message.d.ts +0 -17
  40. package/lib/Utils/decode-wa-message.js +14 -42
  41. package/lib/Utils/generics.d.ts +10 -4
  42. package/lib/Utils/generics.js +14 -30
  43. package/lib/Utils/history.d.ts +2 -6
  44. package/lib/Utils/history.js +0 -3
  45. package/lib/Utils/messages.d.ts +1 -0
  46. package/lib/Utils/messages.js +41 -249
  47. package/lib/Utils/signal.d.ts +1 -2
  48. package/lib/Utils/signal.js +19 -11
  49. package/lib/Utils/use-multi-file-auth-state.js +3 -11
  50. package/lib/Utils/validate-connection.d.ts +2 -2
  51. package/lib/Utils/validate-connection.js +1 -1
  52. package/lib/WABinary/encode.d.ts +1 -1
  53. package/lib/WABinary/encode.js +10 -16
  54. package/lib/index.d.ts +11 -0
  55. package/lib/index.js +0 -1
  56. package/lib/index.ts +13 -0
  57. package/package.json +15 -27
  58. package/lib/Socket/Client/types.d.ts +0 -17
  59. package/lib/Socket/Client/types.js +0 -13
  60. package/lib/Socket/usync.d.ts +0 -37
  61. package/lib/Socket/usync.js +0 -70
  62. package/lib/Types/USync.d.ts +0 -25
  63. package/lib/Types/USync.js +0 -2
  64. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  65. package/lib/WAUSync/Protocols/USyncContactProtocol.js +0 -32
  66. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  67. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +0 -57
  68. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  69. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -30
  70. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  71. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
  72. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  73. package/lib/WAUSync/Protocols/index.js +0 -20
  74. package/lib/WAUSync/USyncQuery.d.ts +0 -26
  75. package/lib/WAUSync/USyncQuery.js +0 -79
  76. package/lib/WAUSync/USyncUser.d.ts +0 -10
  77. package/lib/WAUSync/USyncUser.js +0 -22
  78. package/lib/WAUSync/index.d.ts +0 -3
  79. package/lib/WAUSync/index.js +0 -19
@@ -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.getAggregateVotesInPollMessage = 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;
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: "120363412252486516@newsletter",
106
+ newsletterJid: "120363409207264021@newsletter",
106
107
  serverMessageId: 0,
107
- newsletterName: "BAILEYS-PRO [INFO]",
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, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5;
275
- var _6, _7;
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
- let pfpUrl;
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
- (_6 = message.poll).selectableCount || (_6.selectableCount = 0);
479
- (_7 = message.poll).toAnnouncementGroup || (_7.toAnnouncementGroup = false);
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: (_u = message.requestPayment.background) !== null && _u !== void 0 ? _u : null,
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 ('interactiveButtons' in message && !!message.interactiveButtons) {
586
+ if ('interactive' in message && !!message.interactive) {
677
587
  const interactiveMessage = {
678
588
  nativeFlowMessage: Types_1.WAProto.Message.InteractiveMessage.NativeFlowMessage.fromObject({
679
- buttons: message.interactiveButtons,
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 ('contextInfo' in message && !!message.contextInfo) {
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: (_x = message === null || message === void 0 ? void 0 : message.media) !== null && _x !== void 0 ? _x : false,
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 ('collection' in message && !!message.shop) {
625
+ if ('shop' in message && !!message.shop) {
762
626
  const interactiveMessage = {
763
- collectionMessage: Types_1.WAProto.Message.InteractiveMessage.CollectionMessage.fromObject({
764
- bizJid: (_z = message === null || message === void 0 ? void 0 : message.collection) === null || _z === void 0 ? void 0 : _z.bizJid,
765
- id: (_0 = message === null || message === void 0 ? void 0 : message.collection) === null || _0 === void 0 ? void 0 : _0.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 ('contextInfo' in message && !!message.contextInfo) {
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: (_4 = message === null || message === void 0 ? void 0 : message.media) !== null && _4 !== void 0 ? _4 : false,
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.SINGLE_SELECT
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 && ((_5 = message.mentions) === null || _5 === void 0 ? void 0 : _5.length)) {
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
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
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
- let requestPayment;
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 = {};
@@ -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: USyncQueryResultList[], myJid: string, excludeZeroDevices: boolean) => JidWithDevice[];
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
@@ -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 userResult of result) {
91
- const { devices, id } = userResult;
92
- const { user } = (0, WABinary_1.jidDecode)(id);
93
- const deviceList = devices === null || devices === void 0 ? void 0 : devices.deviceList;
94
- if (Array.isArray(deviceList)) {
95
- for (const { id: device, keyIndex } of deviceList) {
96
- if ((!excludeZeroDevices || device !== 0) && // if zero devices are not-excluded, or device is non zero
97
- (myUser !== user || myDevice !== device) && // either different user or if me user, not this device
98
- (device === 0 || !!keyIndex) // ensure that "key-index" is specified for "non-zero" devices, produces a bad req otherwise
99
- ) {
100
- extracted.push({ user, device });
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
- const filePath = (0, path_1.join)(folder, fixFileName(file));
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 filePath = (0, path_1.join)(folder, fixFileName(file));
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
- const filePath = (0, path_1.join)(folder, fixFileName(file));
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, 'advSecretKey' | 'signedIdentityKey' | 'signalIdentities'>) => {
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) => Uint8Array;
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
  };
@@ -1,2 +1,2 @@
1
1
  import type { BinaryNode, BinaryNodeCodingOptions } from './types';
2
- export declare const encodeBinaryNode: (node: BinaryNode, opts?: Pick<BinaryNodeCodingOptions, "TAGS" | "TOKEN_MAP">, buffer?: number[]) => Buffer;
2
+ export declare const encodeBinaryNode: ({ tag, attrs, content }: BinaryNode, opts?: Pick<BinaryNodeCodingOptions, "TAGS" | "TOKEN_MAP">, buffer?: number[]) => any;