@queenanya/baileys 7.4.0 → 7.4.1

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 (63) hide show
  1. package/README.md +0 -10
  2. package/lib/Defaults/baileys-version.json +1 -1
  3. package/lib/Defaults/index.d.ts +0 -231
  4. package/lib/Defaults/index.js +1 -17
  5. package/lib/Socket/Client/index.d.ts +2 -3
  6. package/lib/Socket/Client/index.js +2 -3
  7. package/lib/Socket/Client/{web-socket-client.d.ts → websocket.d.ts} +1 -1
  8. package/lib/Socket/Client/{web-socket-client.js → websocket.js} +2 -2
  9. package/lib/Socket/business.d.ts +1 -1
  10. package/lib/Socket/chats.d.ts +2 -2
  11. package/lib/Socket/chats.js +5 -6
  12. package/lib/Socket/groups.d.ts +1 -7
  13. package/lib/Socket/index.d.ts +10 -12
  14. package/lib/Socket/index.js +2 -2
  15. package/lib/Socket/messages-recv.d.ts +2 -2
  16. package/lib/Socket/messages-recv.js +3 -6
  17. package/lib/Socket/messages-send.d.ts +1 -1
  18. package/lib/Socket/messages-send.js +23 -8
  19. package/lib/Socket/newsletter.d.ts +1 -1
  20. package/lib/Socket/socket.d.ts +2 -1
  21. package/lib/Socket/socket.js +9 -14
  22. package/lib/Store/make-in-memory-store.js +8 -10
  23. package/lib/Store/make-ordered-dictionary.js +2 -2
  24. package/lib/Types/Auth.d.ts +0 -6
  25. package/lib/Types/Chat.d.ts +7 -7
  26. package/lib/Types/Contact.d.ts +1 -1
  27. package/lib/Types/Message.d.ts +4 -2
  28. package/lib/Types/Socket.d.ts +3 -3
  29. package/lib/Utils/auth-utils.js +1 -7
  30. package/lib/Utils/chat-utils.d.ts +4 -4
  31. package/lib/Utils/chat-utils.js +25 -20
  32. package/lib/Utils/decode-wa-message.js +14 -3
  33. package/lib/Utils/event-buffer.js +7 -7
  34. package/lib/Utils/generics.d.ts +8 -4
  35. package/lib/Utils/generics.js +33 -6
  36. package/lib/Utils/history.d.ts +2 -2
  37. package/lib/Utils/link-preview.js +24 -1
  38. package/lib/Utils/make-mutex.js +1 -0
  39. package/lib/Utils/messages-media.d.ts +1 -1
  40. package/lib/Utils/messages-media.js +9 -16
  41. package/lib/Utils/messages.js +7 -11
  42. package/lib/Utils/noise-handler.d.ts +1 -2
  43. package/lib/Utils/noise-handler.js +5 -10
  44. package/lib/Utils/process-message.js +1 -0
  45. package/lib/Utils/signal.js +2 -0
  46. package/lib/Utils/use-multi-file-auth-state.js +1 -0
  47. package/lib/Utils/validate-connection.d.ts +0 -1
  48. package/lib/Utils/validate-connection.js +10 -44
  49. package/lib/WABinary/constants.js +5 -5
  50. package/lib/WABinary/encode.js +7 -5
  51. package/lib/WABinary/jid-utils.d.ts +1 -1
  52. package/lib/WABinary/jid-utils.js +1 -1
  53. package/lib/WAM/BinaryInfo.d.ts +2 -2
  54. package/lib/WAM/constants.d.ts +3 -2
  55. package/lib/WAM/encode.js +2 -2
  56. package/package.json +4 -5
  57. package/lib/Defaults/phonenumber-mcc.json +0 -223
  58. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  59. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  60. package/lib/Socket/registration.d.ts +0 -271
  61. package/lib/Socket/registration.js +0 -166
  62. /package/lib/Socket/Client/{abstract-socket-client.d.ts → types.d.ts} +0 -0
  63. /package/lib/Socket/Client/{abstract-socket-client.js → types.js} +0 -0
package/README.md CHANGED
@@ -95,16 +95,6 @@ connectToWhatsApp()
95
95
 
96
96
  If the connection is successful, you will see a QR code printed on your terminal screen, scan it with WhatsApp on your phone and you'll be logged in!
97
97
 
98
- **Note:** install `qrcode-terminal` using `yarn add qrcode-terminal` to auto-print the QR to the terminal.
99
-
100
- **Note:** the code to support the legacy version of WA Web (pre multi-device) has been removed in v5. Only the standard multi-device connection is now supported. This is done as WA seems to have completely dropped support for the legacy version.
101
-
102
- ## Connecting native mobile api
103
-
104
- Baileys also supports the native mobile API, which allows users to authenticate as a standalone WhatsApp client using their phone number.
105
-
106
- Run the [example](Example/example.ts) file with ``--mobile`` cli flag to use the native mobile API.
107
-
108
98
  ## Configuring the Connection
109
99
 
110
100
  You can configure the connection by passing a `SocketConfig` object.
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": [2, 3000, 1016451808]
2
+ "version": [2, 3000, 1017531287]
3
3
  }
@@ -3,246 +3,15 @@
3
3
  import { proto } from '../../WAProto';
4
4
  import type { MediaType, SocketConfig } from '../Types';
5
5
  export declare const UNAUTHORIZED_CODES: number[];
6
- export declare const PHONENUMBER_MCC: {
7
- "93": number;
8
- "355": number;
9
- "213": number;
10
- "1-684": number;
11
- "376": number;
12
- "244": number;
13
- "1-264": number;
14
- "1-268": number;
15
- "54": number;
16
- "374": number;
17
- "297": number;
18
- "61": number;
19
- "43": number;
20
- "994": number;
21
- "1-242": number;
22
- "973": number;
23
- "880": number;
24
- "1-246": number;
25
- "375": number;
26
- "32": number;
27
- "501": number;
28
- "229": number;
29
- "1-441": number;
30
- "975": number;
31
- "591": number;
32
- "387": number;
33
- "267": number;
34
- "55": number;
35
- "1-284": number;
36
- "673": number;
37
- "359": number;
38
- "226": number;
39
- "257": number;
40
- "855": number;
41
- "237": number;
42
- "238": number;
43
- "1-345": number;
44
- "236": number;
45
- "235": number;
46
- "56": number;
47
- "86": number;
48
- "57": number;
49
- "269": number;
50
- "682": number;
51
- "506": number;
52
- "385": number;
53
- "53": number;
54
- "357": number;
55
- "420": number;
56
- "243": number;
57
- "45": number;
58
- "253": number;
59
- "1-767": number;
60
- "1-809": number;
61
- "1-849": number;
62
- "1-829": number;
63
- "593": number;
64
- "20": number;
65
- "503": number;
66
- "240": number;
67
- "291": number;
68
- "372": number;
69
- "251": number;
70
- "500": number;
71
- "298": number;
72
- "679": number;
73
- "358": number;
74
- "33": number;
75
- "689": number;
76
- "241": number;
77
- "220": number;
78
- "995": number;
79
- "49": number;
80
- "233": number;
81
- "350": number;
82
- "30": number;
83
- "299": number;
84
- "1-473": number;
85
- "1-671": number;
86
- "502": number;
87
- "224": number;
88
- "592": number;
89
- "509": number;
90
- "504": number;
91
- "852": number;
92
- "36": number;
93
- "354": number;
94
- "91": number;
95
- "62": number;
96
- "98": number;
97
- "964": number;
98
- "353": number;
99
- "972": number;
100
- "39": number;
101
- "225": number;
102
- "1-876": number;
103
- "81": number;
104
- "962": number;
105
- "254": number;
106
- "686": number;
107
- "383": number;
108
- "965": number;
109
- "371": number;
110
- "961": number;
111
- "266": number;
112
- "231": number;
113
- "218": number;
114
- "423": number;
115
- "370": number;
116
- "352": number;
117
- "389": number;
118
- "261": number;
119
- "265": number;
120
- "60": number;
121
- "960": number;
122
- "223": number;
123
- "356": number;
124
- "692": number;
125
- "222": number;
126
- "230": number;
127
- "52": number;
128
- "691": number;
129
- "373": number;
130
- "377": number;
131
- "976": number;
132
- "382": number;
133
- "1-664": number;
134
- "212": number;
135
- "258": number;
136
- "95": number;
137
- "264": number;
138
- "674": number;
139
- "977": number;
140
- "31": number;
141
- "687": number;
142
- "64": number;
143
- "505": number;
144
- "227": number;
145
- "234": number;
146
- "683": number;
147
- "1-670": number;
148
- "47": number;
149
- "968": number;
150
- "92": number;
151
- "680": number;
152
- "970": number;
153
- "507": number;
154
- "675": number;
155
- "595": number;
156
- "51": number;
157
- "63": number;
158
- "48": number;
159
- "351": number;
160
- "1-787, 1-939": number;
161
- "974": number;
162
- "242": number;
163
- "40": number;
164
- "7": number;
165
- "250": number;
166
- "290": number;
167
- "1-869": number;
168
- "1-758": number;
169
- "508": number;
170
- "1-784": number;
171
- "685": number;
172
- "378": number;
173
- "239": number;
174
- "966": number;
175
- "221": number;
176
- "381": number;
177
- "248": number;
178
- "232": number;
179
- "65": number;
180
- "386": number;
181
- "677": number;
182
- "27": number;
183
- "211": number;
184
- "34": number;
185
- "94": number;
186
- "249": number;
187
- "597": number;
188
- "268": number;
189
- "46": number;
190
- "41": number;
191
- "963": number;
192
- "886": number;
193
- "992": number;
194
- "255": number;
195
- "66": number;
196
- "228": number;
197
- "690": number;
198
- "676": number;
199
- "1-868": number;
200
- "216": number;
201
- "90": number;
202
- "993": number;
203
- "1-649": number;
204
- "688": number;
205
- "1-340": number;
206
- "256": number;
207
- "380": number;
208
- "971": number;
209
- "44": number;
210
- "1": number;
211
- "598": number;
212
- "998": number;
213
- "678": number;
214
- "379": number;
215
- "58": number;
216
- "681": number;
217
- "967": number;
218
- "260": number;
219
- "263": number;
220
- "670": number;
221
- "245": number;
222
- "856": number;
223
- "599": number;
224
- "850": number;
225
- "262": number;
226
- "82": number;
227
- "84": number;
228
- };
229
6
  export declare const DEFAULT_ORIGIN = "https://web.whatsapp.com";
230
- export declare const MOBILE_ENDPOINT = "g.whatsapp.net";
231
- export declare const MOBILE_PORT = 443;
232
7
  export declare const DEF_CALLBACK_PREFIX = "CB:";
233
8
  export declare const DEF_TAG_PREFIX = "TAG:";
234
9
  export declare const PHONE_CONNECTION_CB = "CB:Pong";
235
10
  export declare const WA_DEFAULT_EPHEMERAL: number;
236
- export declare const MOBILE_TOKEN: Buffer;
237
- export declare const MOBILE_REGISTRATION_ENDPOINT = "https://v.whatsapp.net/v2";
238
- export declare const MOBILE_USERAGENT: string;
239
- export declare const REGISTRATION_PUBLIC_KEY: Buffer;
240
11
  export declare const NOISE_MODE = "Noise_XX_25519_AESGCM_SHA256\0\0\0\0";
241
12
  export declare const DICT_VERSION = 2;
242
13
  export declare const KEY_BUNDLE_TYPE: Buffer;
243
14
  export declare const NOISE_WA_HEADER: Buffer;
244
- export declare const PROTOCOL_VERSION: number[];
245
- export declare const MOBILE_NOISE_HEADER: Buffer;
246
15
  /** from: https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url */
247
16
  export declare const URL_REGEX: RegExp;
248
17
  export declare const WA_CERT_DETAILS: {
@@ -3,38 +3,22 @@ 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.DEFAULT_CACHE_TTLS = exports.INITIAL_PREKEY_COUNT = exports.MIN_PREKEY_COUNT = exports.MEDIA_KEYS = exports.MEDIA_HKDF_KEY_MAPPING = exports.MEDIA_PATH_MAP = exports.DEFAULT_CONNECTION_CONFIG = exports.PROCESSABLE_HISTORY_TYPES = exports.WA_CERT_DETAILS = exports.URL_REGEX = exports.MOBILE_NOISE_HEADER = exports.PROTOCOL_VERSION = exports.NOISE_WA_HEADER = exports.KEY_BUNDLE_TYPE = exports.DICT_VERSION = exports.NOISE_MODE = exports.REGISTRATION_PUBLIC_KEY = exports.MOBILE_USERAGENT = exports.MOBILE_REGISTRATION_ENDPOINT = exports.MOBILE_TOKEN = exports.WA_DEFAULT_EPHEMERAL = exports.PHONE_CONNECTION_CB = exports.DEF_TAG_PREFIX = exports.DEF_CALLBACK_PREFIX = exports.MOBILE_PORT = exports.MOBILE_ENDPOINT = exports.DEFAULT_ORIGIN = exports.PHONENUMBER_MCC = exports.UNAUTHORIZED_CODES = void 0;
7
- const crypto_1 = require("crypto");
6
+ exports.DEFAULT_CACHE_TTLS = exports.INITIAL_PREKEY_COUNT = exports.MIN_PREKEY_COUNT = exports.MEDIA_KEYS = exports.MEDIA_HKDF_KEY_MAPPING = exports.MEDIA_PATH_MAP = exports.DEFAULT_CONNECTION_CONFIG = exports.PROCESSABLE_HISTORY_TYPES = exports.WA_CERT_DETAILS = exports.URL_REGEX = exports.NOISE_WA_HEADER = exports.KEY_BUNDLE_TYPE = exports.DICT_VERSION = exports.NOISE_MODE = exports.WA_DEFAULT_EPHEMERAL = exports.PHONE_CONNECTION_CB = exports.DEF_TAG_PREFIX = exports.DEF_CALLBACK_PREFIX = exports.DEFAULT_ORIGIN = exports.UNAUTHORIZED_CODES = void 0;
8
7
  const WAProto_1 = require("../../WAProto");
9
8
  const libsignal_1 = require("../Signal/libsignal");
10
9
  const Utils_1 = require("../Utils");
11
10
  const logger_1 = __importDefault(require("../Utils/logger"));
12
11
  const baileys_version_json_1 = require("./baileys-version.json");
13
- const phonenumber_mcc_json_1 = __importDefault(require("./phonenumber-mcc.json"));
14
12
  exports.UNAUTHORIZED_CODES = [401, 403, 419];
15
- exports.PHONENUMBER_MCC = phonenumber_mcc_json_1.default;
16
13
  exports.DEFAULT_ORIGIN = 'https://web.whatsapp.com';
17
- exports.MOBILE_ENDPOINT = 'g.whatsapp.net';
18
- exports.MOBILE_PORT = 443;
19
14
  exports.DEF_CALLBACK_PREFIX = 'CB:';
20
15
  exports.DEF_TAG_PREFIX = 'TAG:';
21
16
  exports.PHONE_CONNECTION_CB = 'CB:Pong';
22
17
  exports.WA_DEFAULT_EPHEMERAL = 7 * 24 * 60 * 60;
23
- const WA_VERSION = '2.24.6.77';
24
- const WA_VERSION_HASH = (0, crypto_1.createHash)('md5').update(WA_VERSION).digest('hex');
25
- exports.MOBILE_TOKEN = Buffer.from('0a1mLfGUIBVrMKF1RdvLI5lkRBvof6vn0fD2QRSM' + WA_VERSION_HASH);
26
- exports.MOBILE_REGISTRATION_ENDPOINT = 'https://v.whatsapp.net/v2';
27
- exports.MOBILE_USERAGENT = `WhatsApp/${WA_VERSION} iOS/15.3.1 Device/Apple-iPhone_7`;
28
- exports.REGISTRATION_PUBLIC_KEY = Buffer.from([
29
- 5, 142, 140, 15, 116, 195, 235, 197, 215, 166, 134, 92, 108, 60, 132, 56, 86, 176, 97, 33, 204, 232, 234, 119, 77,
30
- 34, 251, 111, 18, 37, 18, 48, 45,
31
- ]);
32
18
  exports.NOISE_MODE = 'Noise_XX_25519_AESGCM_SHA256\0\0\0\0';
33
19
  exports.DICT_VERSION = 2;
34
20
  exports.KEY_BUNDLE_TYPE = Buffer.from([5]);
35
21
  exports.NOISE_WA_HEADER = Buffer.from([87, 65, 6, exports.DICT_VERSION]); // last is "DICT_VERSION"
36
- exports.PROTOCOL_VERSION = [5, 2];
37
- exports.MOBILE_NOISE_HEADER = Buffer.concat([Buffer.from('WA'), Buffer.from(exports.PROTOCOL_VERSION)]);
38
22
  /** from: https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url */
39
23
  exports.URL_REGEX = /(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/;
40
24
  exports.WA_CERT_DETAILS = {
@@ -1,3 +1,2 @@
1
- export * from './abstract-socket-client';
2
- export * from './mobile-socket-client';
3
- export * from './web-socket-client';
1
+ export * from './types';
2
+ export * from './websocket';
@@ -14,6 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./abstract-socket-client"), exports);
18
- __exportStar(require("./mobile-socket-client"), exports);
19
- __exportStar(require("./web-socket-client"), exports);
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./websocket"), exports);
@@ -1,5 +1,5 @@
1
1
  import WebSocket from 'ws';
2
- import { AbstractSocketClient } from './abstract-socket-client';
2
+ import { AbstractSocketClient } from './types';
3
3
  export declare class WebSocketClient extends AbstractSocketClient {
4
4
  protected socket: WebSocket | null;
5
5
  get isOpen(): boolean;
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.WebSocketClient = void 0;
7
7
  const ws_1 = __importDefault(require("ws"));
8
8
  const Defaults_1 = require("../../Defaults");
9
- const abstract_socket_client_1 = require("./abstract-socket-client");
10
- class WebSocketClient extends abstract_socket_client_1.AbstractSocketClient {
9
+ const types_1 = require("./types");
10
+ class WebSocketClient extends types_1.AbstractSocketClient {
11
11
  constructor() {
12
12
  super(...arguments);
13
13
  this.socket = null;
@@ -146,7 +146,7 @@ export declare const makeBusinessSocket: (config: SocketConfig) => {
146
146
  fromMe?: boolean | undefined;
147
147
  }[], star: boolean) => Promise<void>;
148
148
  type: "md";
149
- ws: any;
149
+ ws: import("./Client").WebSocketClient;
150
150
  ev: import("../Types").BaileysEventEmitter & {
151
151
  process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
152
152
  buffer(): void;
@@ -3,8 +3,8 @@
3
3
  import { Boom } from '@hapi/boom';
4
4
  import { proto } from '../../WAProto';
5
5
  import { ChatModification, MessageUpsertType, SocketConfig, WABusinessProfile, WAMediaUpload, WAPatchCreate, WAPresence, WAPrivacyCallValue, WAPrivacyGroupAddValue, WAPrivacyOnlineValue, WAPrivacyValue, WAReadReceiptsValue } from '../Types';
6
- import { BinaryNode } from '../WABinary';
7
6
  import { LabelActionBody } from '../Types/Label';
7
+ import { BinaryNode } from '../WABinary';
8
8
  export declare const makeChatsSocket: (config: SocketConfig) => {
9
9
  processingMutex: {
10
10
  mutex<T>(code: () => T | Promise<T>): Promise<T>;
@@ -60,7 +60,7 @@ export declare const makeChatsSocket: (config: SocketConfig) => {
60
60
  fromMe?: boolean;
61
61
  }[], star: boolean) => Promise<void>;
62
62
  type: "md";
63
- ws: any;
63
+ ws: import("./Client").WebSocketClient;
64
64
  ev: import("../Types").BaileysEventEmitter & {
65
65
  process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
66
66
  buffer(): void;
@@ -897,14 +897,13 @@ const makeChatsSocket = (config) => {
897
897
  sendPresenceUpdate(markOnlineOnConnect ? 'available' : 'unavailable')
898
898
  .catch(error => onUnexpectedError(error, 'presence update requests'));
899
899
  }
900
- if (receivedPendingNotifications) {
901
- // if we don't have the app state key
900
+ if (receivedPendingNotifications && // if we don't have the app state key
902
901
  // we keep buffering events until we finally have
903
902
  // the key and can sync the messages
904
- if (!((_a = authState.creds) === null || _a === void 0 ? void 0 : _a.myAppStateKeyId) && !config.mobile) {
905
- ev.buffer();
906
- needToFlushWithAppStateSync = true;
907
- }
903
+ // todo scrutinize
904
+ !((_a = authState.creds) === null || _a === void 0 ? void 0 : _a.myAppStateKeyId)) {
905
+ ev.buffer();
906
+ needToFlushWithAppStateSync = true;
908
907
  }
909
908
  });
910
909
  return {
@@ -68,12 +68,6 @@ export declare const makeGroupsSocket: (config: SocketConfig) => {
68
68
  }[]>;
69
69
  fetchStatus: (jid: string) => Promise<{
70
70
  status: string | undefined;
71
- /**
72
- * revoke a v4 invite for someone
73
- * @param groupJid group jid
74
- * @param invitedJid jid of person you invited
75
- * @returns true if successful
76
- */
77
71
  setAt: Date;
78
72
  } | undefined>;
79
73
  updateProfilePicture: (jid: string, content: import("../Types").WAMediaUpload) => Promise<void>;
@@ -105,7 +99,7 @@ export declare const makeGroupsSocket: (config: SocketConfig) => {
105
99
  fromMe?: boolean | undefined;
106
100
  }[], star: boolean) => Promise<void>;
107
101
  type: "md";
108
- ws: any;
102
+ ws: import("./Client").WebSocketClient;
109
103
  ev: import("../Types").BaileysEventEmitter & {
110
104
  process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
111
105
  buffer(): void;
@@ -3,8 +3,6 @@
3
3
  /// <reference types="node" />
4
4
  import { UserFacingSocketConfig } from '../Types';
5
5
  declare const makeWASocket: (config: UserFacingSocketConfig) => {
6
- register: (code: string) => Promise<import("./registration").ExistsResponse>;
7
- requestRegistrationCode: (registrationOptions?: import("./registration").RegistrationOptions | undefined) => Promise<import("./registration").ExistsResponse>;
8
6
  logger: import("pino").Logger<never, boolean>;
9
7
  getOrderDetails: (orderId: string, tokenBase64: string) => Promise<import("../Types").OrderDetails>;
10
8
  getCatalog: ({ jid, limit, cursor }: import("../Types").GetCatalogOptions) => Promise<{
@@ -19,12 +17,12 @@ declare const makeWASocket: (config: UserFacingSocketConfig) => {
19
17
  deleted: number;
20
18
  }>;
21
19
  productUpdate: (productId: string, update: import("../Types").ProductUpdate) => Promise<import("../Types").Product>;
22
- sendMessageAck: ({ tag, attrs, content }: import("../index").BinaryNode) => Promise<void>;
23
- sendRetryRequest: (node: import("../index").BinaryNode, forceIncludeKeys?: boolean) => Promise<void>;
20
+ sendMessageAck: ({ tag, attrs, content }: import("..").BinaryNode) => Promise<void>;
21
+ sendRetryRequest: (node: import("..").BinaryNode, forceIncludeKeys?: boolean) => Promise<void>;
24
22
  rejectCall: (callId: string, callFrom: string) => Promise<void>;
25
23
  fetchMessageHistory: (count: number, oldestMsgKey: import("../Types").WAMessageKey, oldestMsgTimestamp: number | import("long").Long) => Promise<string>;
26
24
  requestPlaceholderResend: (messageKey: import("../Types").WAMessageKey) => Promise<string | undefined>;
27
- getPrivacyTokens: (jids: string[]) => Promise<import("../index").BinaryNode>;
25
+ getPrivacyTokens: (jids: string[]) => Promise<import("..").BinaryNode>;
28
26
  assertSessions: (jids: string[], force: boolean) => Promise<boolean>;
29
27
  relayMessage: (jid: string, message: import("../Types").WAProto.IMessage, { messageId: msgId, participant, additionalAttributes, additionalNodes, useUserDevicesCache, useCachedGroupMetadata, statusJidList }: import("../Types").MessageRelayOptions) => Promise<string>;
30
28
  sendReceipt: (jid: string, participant: string | undefined, messageIds: string[], type: import("../Types").MessageReceiptType) => Promise<void>;
@@ -39,10 +37,10 @@ declare const makeWASocket: (config: UserFacingSocketConfig) => {
39
37
  createParticipantNodes: (jids: string[], message: import("../Types").WAProto.IMessage, extraAttrs?: {
40
38
  [key: string]: string;
41
39
  } | undefined) => Promise<{
42
- nodes: import("../index").BinaryNode[];
40
+ nodes: import("..").BinaryNode[];
43
41
  shouldIncludeDeviceIdentity: boolean;
44
42
  }>;
45
- getUSyncDevices: (jids: string[], useCache: boolean, ignoreZeroDevices: boolean) => Promise<import("../index").JidWithDevice[]>;
43
+ getUSyncDevices: (jids: string[], useCache: boolean, ignoreZeroDevices: boolean) => Promise<import("..").JidWithDevice[]>;
46
44
  updateMediaMessage: (message: import("../Types").WAProto.IWebMessageInfo) => Promise<import("../Types").WAProto.IWebMessageInfo>;
47
45
  sendMessage: (jid: string, content: import("../Types").AnyMessageContent, options?: import("../Types").MiscMessageGenerationOptions) => Promise<import("../Types").WAProto.WebMessageInfo | undefined>;
48
46
  subscribeNewsletterUpdates: (jid: string) => Promise<{
@@ -80,7 +78,7 @@ declare const makeWASocket: (config: UserFacingSocketConfig) => {
80
78
  groupParticipantsUpdate: (jid: string, participants: string[], action: import("../Types").ParticipantAction) => Promise<{
81
79
  status: string;
82
80
  jid: string;
83
- content: import("../index").BinaryNode;
81
+ content: import("..").BinaryNode;
84
82
  }[]>;
85
83
  groupUpdateDescription: (jid: string, description?: string | undefined) => Promise<void>;
86
84
  groupInviteCode: (jid: string) => Promise<string | undefined>;
@@ -147,7 +145,7 @@ declare const makeWASocket: (config: UserFacingSocketConfig) => {
147
145
  fromMe?: boolean | undefined;
148
146
  }[], star: boolean) => Promise<void>;
149
147
  type: "md";
150
- ws: any;
148
+ ws: import("./Client").WebSocketClient;
151
149
  ev: import("../Types").BaileysEventEmitter & {
152
150
  process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
153
151
  buffer(): void;
@@ -162,11 +160,11 @@ declare const makeWASocket: (config: UserFacingSocketConfig) => {
162
160
  signalRepository: import("../Types").SignalRepository;
163
161
  user: import("../Types").Contact | undefined;
164
162
  generateMessageTag: () => string;
165
- query: (node: import("../index").BinaryNode, timeoutMs?: number | undefined) => Promise<import("../index").BinaryNode>;
163
+ query: (node: import("..").BinaryNode, timeoutMs?: number | undefined) => Promise<import("..").BinaryNode>;
166
164
  waitForMessage: <T_2>(msgId: string, timeoutMs?: number | undefined) => Promise<T_2>;
167
165
  waitForSocketOpen: () => Promise<void>;
168
166
  sendRawMessage: (data: Uint8Array | Buffer) => Promise<void>;
169
- sendNode: (frame: import("../index").BinaryNode) => Promise<void>;
167
+ sendNode: (frame: import("..").BinaryNode) => Promise<void>;
170
168
  logout: (msg?: string | undefined) => Promise<void>;
171
169
  end: (error: Error | undefined) => void;
172
170
  onUnexpectedError: (err: Error | import("@hapi/boom").Boom<any>, msg: string) => void;
@@ -174,6 +172,6 @@ declare const makeWASocket: (config: UserFacingSocketConfig) => {
174
172
  uploadPreKeysToServerIfRequired: () => Promise<void>;
175
173
  requestPairingCode: (phoneNumber: string) => Promise<string>;
176
174
  waitForConnectionUpdate: (check: (u: Partial<import("../Types").ConnectionState>) => boolean | undefined, timeoutMs?: number | undefined) => Promise<void>;
177
- sendWAMBuffer: (wamBuffer: Buffer) => Promise<import("../index").BinaryNode>;
175
+ sendWAMBuffer: (wamBuffer: Buffer) => Promise<import("..").BinaryNode>;
178
176
  };
179
177
  export default makeWASocket;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const Defaults_1 = require("../Defaults");
4
- const registration_1 = require("./registration");
4
+ const business_1 = require("./business");
5
5
  // export the last socket layer
6
- const makeWASocket = (config) => ((0, registration_1.makeRegistrationSocket)({
6
+ const makeWASocket = (config) => ((0, business_1.makeBusinessSocket)({
7
7
  ...Defaults_1.DEFAULT_CONNECTION_CONFIG,
8
8
  ...config
9
9
  }));
@@ -9,7 +9,7 @@ export declare const makeMessagesRecvSocket: (config: SocketConfig) => {
9
9
  sendRetryRequest: (node: BinaryNode, forceIncludeKeys?: boolean) => Promise<void>;
10
10
  rejectCall: (callId: string, callFrom: string) => Promise<void>;
11
11
  fetchMessageHistory: (count: number, oldestMsgKey: WAMessageKey, oldestMsgTimestamp: number | Long) => Promise<string>;
12
- requestPlaceholderResend: (messageKey: WAMessageKey) => Promise<'RESOLVED' | string | undefined>;
12
+ requestPlaceholderResend: (messageKey: WAMessageKey) => Promise<string | undefined>;
13
13
  getPrivacyTokens: (jids: string[]) => Promise<BinaryNode>;
14
14
  assertSessions: (jids: string[], force: boolean) => Promise<boolean>;
15
15
  relayMessage: (jid: string, message: proto.IMessage, { messageId: msgId, participant, additionalAttributes, additionalNodes, useUserDevicesCache, useCachedGroupMetadata, statusJidList }: MessageRelayOptions) => Promise<string>;
@@ -133,7 +133,7 @@ export declare const makeMessagesRecvSocket: (config: SocketConfig) => {
133
133
  fromMe?: boolean | undefined;
134
134
  }[], star: boolean) => Promise<void>;
135
135
  type: "md";
136
- ws: any;
136
+ ws: import("./Client").WebSocketClient;
137
137
  ev: import("../Types").BaileysEventEmitter & {
138
138
  process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
139
139
  buffer(): void;
@@ -513,8 +513,7 @@ const makeMessagesRecvSocket = (config) => {
513
513
  await authState.keys.set({ 'sender-key-memory': { [remoteJid]: null } });
514
514
  }
515
515
  logger.debug({ participant, sendToAll }, 'forced new session for retry recp');
516
- for (let i = 0; i < msgs.length; i++) {
517
- const msg = msgs[i];
516
+ for (const [i, msg] of msgs.entries()) {
518
517
  if (msg) {
519
518
  updateSendMessageAgainCount(ids[i], participant);
520
519
  const msgRelayOpts = { messageId: ids[i] };
@@ -674,10 +673,8 @@ const makeMessagesRecvSocket = (config) => {
674
673
  if (response && ((_a = msg === null || msg === void 0 ? void 0 : msg.messageStubParameters) === null || _a === void 0 ? void 0 : _a[0]) === Utils_1.NO_MESSAGE_FOUND_ERROR_TEXT) {
675
674
  msg.messageStubParameters = [Utils_1.NO_MESSAGE_FOUND_ERROR_TEXT, response];
676
675
  }
677
- if (((_c = (_b = msg.message) === null || _b === void 0 ? void 0 : _b.protocolMessage) === null || _c === void 0 ? void 0 : _c.type) === WAProto_1.proto.Message.ProtocolMessage.Type.SHARE_PHONE_NUMBER) {
678
- if (node.attrs.sender_pn) {
679
- ev.emit('chats.phoneNumberShare', { lid: node.attrs.from, jid: node.attrs.sender_pn });
680
- }
676
+ if (((_c = (_b = msg.message) === null || _b === void 0 ? void 0 : _b.protocolMessage) === null || _c === void 0 ? void 0 : _c.type) === WAProto_1.proto.Message.ProtocolMessage.Type.SHARE_PHONE_NUMBER && node.attrs.sender_pn) {
677
+ ev.emit('chats.phoneNumberShare', { lid: node.attrs.from, jid: node.attrs.sender_pn });
681
678
  }
682
679
  try {
683
680
  await Promise.all([
@@ -126,7 +126,7 @@ export declare const makeMessagesSocket: (config: SocketConfig) => {
126
126
  fromMe?: boolean | undefined;
127
127
  }[], star: boolean) => Promise<void>;
128
128
  type: "md";
129
- ws: any;
129
+ ws: import("./Client").WebSocketClient;
130
130
  ev: import("../Types").BaileysEventEmitter & {
131
131
  process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
132
132
  buffer(): void;
@@ -391,14 +391,13 @@ const makeMessagesSocket = (config) => {
391
391
  });
392
392
  }
393
393
  else {
394
- const { user: meUser, device: meDevice } = (0, WABinary_1.jidDecode)(meId);
394
+ const { user: meUser } = (0, WABinary_1.jidDecode)(meId);
395
395
  if (!participant) {
396
396
  devices.push({ user });
397
- // do not send message to self if the device is 0 (mobile)
398
- if (!((additionalAttributes === null || additionalAttributes === void 0 ? void 0 : additionalAttributes['category']) === 'peer' && user === meUser)) {
399
- if (meDevice !== undefined && meDevice !== 0) {
400
- devices.push({ user: meUser });
401
- }
397
+ if (user !== meUser) {
398
+ devices.push({ user: meUser });
399
+ }
400
+ if ((additionalAttributes === null || additionalAttributes === void 0 ? void 0 : additionalAttributes['category']) !== 'peer') {
402
401
  const additionalDevices = await getUSyncDevices([meId, jid], !!useUserDevicesCache, true);
403
402
  devices.push(...additionalDevices);
404
403
  }
@@ -445,7 +444,7 @@ const makeMessagesSocket = (config) => {
445
444
  tag: 'message',
446
445
  attrs: {
447
446
  id: msgId,
448
- type: 'text',
447
+ type: getMessageType(message),
449
448
  ...(additionalAttributes || {})
450
449
  },
451
450
  content: binaryNodeContent
@@ -531,6 +530,12 @@ const makeMessagesSocket = (config) => {
531
530
  return 'text';
532
531
  }
533
532
  };
533
+ const getMessageType = (message) => {
534
+ if (message.pollCreationMessage || message.pollCreationMessageV2 || message.pollCreationMessageV3) {
535
+ return 'poll';
536
+ }
537
+ return 'text';
538
+ };
534
539
  const getMediaType = (message) => {
535
540
  if (message.imageMessage) {
536
541
  return 'image';
@@ -742,7 +747,9 @@ const makeMessagesSocket = (config) => {
742
747
  const isDeleteMsg = 'delete' in content && !!content.delete;
743
748
  const isEditMsg = 'edit' in content && !!content.edit;
744
749
  const isPinMsg = 'pin' in content && !!content.pin;
750
+ const isPollMessage = 'poll' in content && !!content.poll;
745
751
  const additionalAttributes = {};
752
+ const additionalNodes = [];
746
753
  // required for delete
747
754
  if (isDeleteMsg) {
748
755
  // if the chat is a group, and I am not the author, then delete the message as an admin
@@ -759,13 +766,21 @@ const makeMessagesSocket = (config) => {
759
766
  else if (isPinMsg) {
760
767
  additionalAttributes.edit = '2';
761
768
  }
769
+ else if (isPollMessage) {
770
+ additionalNodes.push({
771
+ tag: 'meta',
772
+ attrs: {
773
+ polltype: 'creation'
774
+ },
775
+ });
776
+ }
762
777
  if (mediaHandle) {
763
778
  additionalAttributes['media_id'] = mediaHandle;
764
779
  }
765
780
  if ('cachedGroupMetadata' in options) {
766
781
  console.warn('cachedGroupMetadata in sendMessage are deprecated, now cachedGroupMetadata is part of the socket config.');
767
782
  }
768
- await relayMessage(jid, fullMsg.message, { messageId: fullMsg.key.id, useCachedGroupMetadata: options.useCachedGroupMetadata, additionalAttributes, statusJidList: options.statusJidList });
783
+ await relayMessage(jid, fullMsg.message, { messageId: fullMsg.key.id, useCachedGroupMetadata: options.useCachedGroupMetadata, additionalAttributes, statusJidList: options.statusJidList, additionalNodes });
769
784
  if (config.emitOwnEvents) {
770
785
  process.nextTick(() => {
771
786
  processingMutex.mutex(() => (upsertMessage(fullMsg, 'append')));
@@ -111,7 +111,7 @@ export declare const makeNewsletterSocket: (config: SocketConfig) => {
111
111
  fromMe?: boolean | undefined;
112
112
  }[], star: boolean) => Promise<void>;
113
113
  type: "md";
114
- ws: any;
114
+ ws: import("./Client").WebSocketClient;
115
115
  ev: import("../Types").BaileysEventEmitter & {
116
116
  process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
117
117
  buffer(): void;