@queenanya/baileys 7.4.0 → 7.4.3
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/README.md +0 -10
- package/lib/Defaults/baileys-version.json +1 -1
- package/lib/Defaults/index.d.ts +0 -231
- package/lib/Defaults/index.js +3 -18
- package/lib/Socket/Client/index.d.ts +2 -3
- package/lib/Socket/Client/index.js +2 -3
- package/lib/Socket/Client/{web-socket-client.d.ts → websocket.d.ts} +1 -1
- package/lib/Socket/Client/{web-socket-client.js → websocket.js} +2 -2
- package/lib/Socket/business.d.ts +1 -1
- package/lib/Socket/chats.d.ts +2 -2
- package/lib/Socket/chats.js +5 -6
- package/lib/Socket/groups.d.ts +1 -7
- package/lib/Socket/index.d.ts +10 -12
- package/lib/Socket/index.js +2 -2
- package/lib/Socket/messages-recv.d.ts +2 -2
- package/lib/Socket/messages-recv.js +3 -6
- package/lib/Socket/messages-send.d.ts +1 -1
- package/lib/Socket/messages-send.js +23 -8
- package/lib/Socket/newsletter.d.ts +1 -1
- package/lib/Socket/socket.d.ts +2 -1
- package/lib/Socket/socket.js +9 -14
- package/lib/Store/make-in-memory-store.js +8 -10
- package/lib/Store/make-ordered-dictionary.js +2 -2
- package/lib/Types/Auth.d.ts +0 -6
- package/lib/Types/Chat.d.ts +7 -7
- package/lib/Types/Contact.d.ts +1 -1
- package/lib/Types/Message.d.ts +4 -2
- package/lib/Types/Socket.d.ts +3 -3
- package/lib/Utils/auth-utils.js +1 -7
- package/lib/Utils/chat-utils.d.ts +4 -4
- package/lib/Utils/chat-utils.js +25 -20
- package/lib/Utils/decode-wa-message.js +14 -3
- package/lib/Utils/event-buffer.js +7 -7
- package/lib/Utils/generics.d.ts +8 -4
- package/lib/Utils/generics.js +33 -6
- package/lib/Utils/history.d.ts +2 -2
- package/lib/Utils/link-preview.js +24 -1
- package/lib/Utils/make-mutex.js +1 -0
- package/lib/Utils/messages-media.d.ts +1 -1
- package/lib/Utils/messages-media.js +9 -16
- package/lib/Utils/messages.js +7 -11
- package/lib/Utils/noise-handler.d.ts +1 -2
- package/lib/Utils/noise-handler.js +5 -10
- package/lib/Utils/process-message.js +1 -0
- package/lib/Utils/signal.js +2 -0
- package/lib/Utils/use-multi-file-auth-state.js +1 -0
- package/lib/Utils/validate-connection.d.ts +0 -1
- package/lib/Utils/validate-connection.js +10 -44
- package/lib/WABinary/constants.js +5 -5
- package/lib/WABinary/encode.js +7 -5
- package/lib/WABinary/jid-utils.d.ts +1 -1
- package/lib/WABinary/jid-utils.js +1 -1
- package/lib/WAM/BinaryInfo.d.ts +2 -2
- package/lib/WAM/constants.d.ts +3 -2
- package/lib/WAM/encode.js +2 -2
- package/package.json +18 -21
- package/lib/Defaults/phonenumber-mcc.json +0 -223
- package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
- package/lib/Socket/Client/mobile-socket-client.js +0 -65
- package/lib/Socket/registration.d.ts +0 -271
- package/lib/Socket/registration.js +0 -166
- /package/lib/Socket/Client/{abstract-socket-client.d.ts → types.d.ts} +0 -0
- /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.
|
package/lib/Defaults/index.d.ts
CHANGED
|
@@ -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: {
|
package/lib/Defaults/index.js
CHANGED
|
@@ -3,38 +3,23 @@ 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.
|
|
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
|
-
|
|
23
|
-
|
|
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
|
-
]);
|
|
17
|
+
// export const WA_DEFAULT_EPHEMERAL = 7 * 24 * 60 * 60
|
|
18
|
+
exports.WA_DEFAULT_EPHEMERAL = 24 * 60 * 60;
|
|
32
19
|
exports.NOISE_MODE = 'Noise_XX_25519_AESGCM_SHA256\0\0\0\0';
|
|
33
20
|
exports.DICT_VERSION = 2;
|
|
34
21
|
exports.KEY_BUNDLE_TYPE = Buffer.from([5]);
|
|
35
22
|
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
23
|
/** from: https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url */
|
|
39
24
|
exports.URL_REGEX = /(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/;
|
|
40
25
|
exports.WA_CERT_DETAILS = {
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
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("./
|
|
18
|
-
__exportStar(require("./
|
|
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 './
|
|
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
|
|
10
|
-
class WebSocketClient extends
|
|
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;
|
package/lib/Socket/business.d.ts
CHANGED
|
@@ -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:
|
|
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;
|
package/lib/Socket/chats.d.ts
CHANGED
|
@@ -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:
|
|
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;
|
package/lib/Socket/chats.js
CHANGED
|
@@ -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
|
-
|
|
905
|
-
|
|
906
|
-
|
|
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 {
|
package/lib/Socket/groups.d.ts
CHANGED
|
@@ -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:
|
|
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;
|
package/lib/Socket/index.d.ts
CHANGED
|
@@ -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("
|
|
23
|
-
sendRetryRequest: (node: import("
|
|
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("
|
|
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("
|
|
40
|
+
nodes: import("..").BinaryNode[];
|
|
43
41
|
shouldIncludeDeviceIdentity: boolean;
|
|
44
42
|
}>;
|
|
45
|
-
getUSyncDevices: (jids: string[], useCache: boolean, ignoreZeroDevices: boolean) => Promise<import("
|
|
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("
|
|
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:
|
|
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("
|
|
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("
|
|
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("
|
|
175
|
+
sendWAMBuffer: (wamBuffer: Buffer) => Promise<import("..").BinaryNode>;
|
|
178
176
|
};
|
|
179
177
|
export default makeWASocket;
|
package/lib/Socket/index.js
CHANGED
|
@@ -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
|
|
4
|
+
const business_1 = require("./business");
|
|
5
5
|
// export the last socket layer
|
|
6
|
-
const makeWASocket = (config) => ((0,
|
|
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<
|
|
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:
|
|
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 (
|
|
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
|
-
|
|
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:
|
|
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
|
|
394
|
+
const { user: meUser } = (0, WABinary_1.jidDecode)(meId);
|
|
395
395
|
if (!participant) {
|
|
396
396
|
devices.push({ user });
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
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:
|
|
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:
|
|
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;
|