@langitdeveloper/baileys 2.0.8 → 2.1.0

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 (130) hide show
  1. package/WAProto/index.js +131281 -59270
  2. package/lib/Defaults/baileys-version.json +3 -1
  3. package/lib/Defaults/index.js +6 -6
  4. package/lib/Function/Download/tiktok.js +19 -0
  5. package/lib/Function/Tools/bypass.js +19 -0
  6. package/lib/Function/index.js +13 -0
  7. package/lib/Signal/libsignal.js +0 -15
  8. package/lib/Socket/chats.js +48 -16
  9. package/lib/Socket/dugong.js +165 -12
  10. package/lib/Socket/groups.js +0 -1
  11. package/lib/Socket/messages-send.js +576 -1213
  12. package/lib/Socket/newsletter.js +212 -99
  13. package/lib/Socket/socket.js +1 -1
  14. package/lib/Types/Message.js +0 -1
  15. package/lib/Types/index.js +0 -2
  16. package/lib/Utils/generics.js +79 -10
  17. package/lib/Utils/index.js +0 -4
  18. package/lib/Utils/messages.js +4 -93
  19. package/lib/WABinary/generic-utils.js +0 -12
  20. package/lib/WABinary/jid-utils.js +0 -7
  21. package/lib/WAUSync/Protocols/index.js +0 -2
  22. package/lib/index.js +10 -12
  23. package/package.json +5 -5
  24. package/lib/Defaults/index.d.ts +0 -53
  25. package/lib/Signal/Group/ciphertext-message.d.ts +0 -9
  26. package/lib/Signal/Group/group-session-builder.d.ts +0 -14
  27. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  28. package/lib/Signal/Group/index.d.ts +0 -11
  29. package/lib/Signal/Group/keyhelper.d.ts +0 -10
  30. package/lib/Signal/Group/queue-job.d.ts +0 -1
  31. package/lib/Signal/Group/sender-chain-key.d.ts +0 -13
  32. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -16
  33. package/lib/Signal/Group/sender-key-message.d.ts +0 -18
  34. package/lib/Signal/Group/sender-key-name.d.ts +0 -17
  35. package/lib/Signal/Group/sender-key-record.d.ts +0 -30
  36. package/lib/Signal/Group/sender-key-state.d.ts +0 -38
  37. package/lib/Signal/Group/sender-message-key.d.ts +0 -11
  38. package/lib/Signal/libsignal.d.ts +0 -3
  39. package/lib/Signal/lid-mapping.js +0 -164
  40. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  41. package/lib/Socket/Client/index.d.ts +0 -3
  42. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  43. package/lib/Socket/Client/types.js +0 -12
  44. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  45. package/lib/Socket/Client/websocket.js +0 -67
  46. package/lib/Socket/business.d.ts +0 -171
  47. package/lib/Socket/chats.d.ts +0 -267
  48. package/lib/Socket/community.js +0 -454
  49. package/lib/Socket/dugong.d.ts +0 -254
  50. package/lib/Socket/groups.d.ts +0 -115
  51. package/lib/Socket/index.d.ts +0 -173
  52. package/lib/Socket/messages-recv.d.ts +0 -161
  53. package/lib/Socket/messages-send.d.ts +0 -149
  54. package/lib/Socket/mex.js +0 -54
  55. package/lib/Socket/newsletter.d.ts +0 -134
  56. package/lib/Socket/registration.d.ts +0 -267
  57. package/lib/Socket/socket.d.ts +0 -43
  58. package/lib/Socket/usync.d.ts +0 -36
  59. package/lib/Store/index.d.ts +0 -3
  60. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  61. package/lib/Store/make-in-memory-store.d.ts +0 -118
  62. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  63. package/lib/Store/object-repository.d.ts +0 -10
  64. package/lib/Types/Auth.d.ts +0 -110
  65. package/lib/Types/Bussines.js +0 -2
  66. package/lib/Types/Call.d.ts +0 -13
  67. package/lib/Types/Chat.d.ts +0 -102
  68. package/lib/Types/Contact.d.ts +0 -19
  69. package/lib/Types/Events.d.ts +0 -157
  70. package/lib/Types/GroupMetadata.d.ts +0 -55
  71. package/lib/Types/Label.d.ts +0 -35
  72. package/lib/Types/LabelAssociation.d.ts +0 -29
  73. package/lib/Types/Message.d.ts +0 -273
  74. package/lib/Types/MexUpdates.js +0 -15
  75. package/lib/Types/Newsletter.d.ts +0 -103
  76. package/lib/Types/Product.d.ts +0 -78
  77. package/lib/Types/Signal.d.ts +0 -57
  78. package/lib/Types/Socket.d.ts +0 -111
  79. package/lib/Types/State.d.ts +0 -27
  80. package/lib/Types/USync.d.ts +0 -25
  81. package/lib/Types/index.d.ts +0 -57
  82. package/lib/Utils/auth-utils.d.ts +0 -18
  83. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  84. package/lib/Utils/browser-utils.js +0 -29
  85. package/lib/Utils/business.d.ts +0 -22
  86. package/lib/Utils/chat-utils.d.ts +0 -71
  87. package/lib/Utils/crypto.d.ts +0 -41
  88. package/lib/Utils/decode-wa-message.d.ts +0 -19
  89. package/lib/Utils/event-buffer.d.ts +0 -35
  90. package/lib/Utils/generics.d.ts +0 -92
  91. package/lib/Utils/history.d.ts +0 -15
  92. package/lib/Utils/index.d.ts +0 -17
  93. package/lib/Utils/link-preview.d.ts +0 -21
  94. package/lib/Utils/logger.d.ts +0 -4
  95. package/lib/Utils/lt-hash.d.ts +0 -12
  96. package/lib/Utils/make-mutex.d.ts +0 -7
  97. package/lib/Utils/message-retry-manager.js +0 -134
  98. package/lib/Utils/messages-media.d.ts +0 -116
  99. package/lib/Utils/messages.d.ts +0 -77
  100. package/lib/Utils/noise-handler.d.ts +0 -21
  101. package/lib/Utils/pre-key-manager.js +0 -86
  102. package/lib/Utils/process-message.d.ts +0 -41
  103. package/lib/Utils/signal.d.ts +0 -32
  104. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  105. package/lib/Utils/validate-connection.d.ts +0 -11
  106. package/lib/Utils/vialeys-event-stream.js +0 -41
  107. package/lib/WABinary/constants.d.ts +0 -30
  108. package/lib/WABinary/decode.d.ts +0 -7
  109. package/lib/WABinary/encode.d.ts +0 -3
  110. package/lib/WABinary/generic-utils.d.ts +0 -17
  111. package/lib/WABinary/index.d.ts +0 -5
  112. package/lib/WABinary/jid-utils.d.ts +0 -31
  113. package/lib/WABinary/types.d.ts +0 -18
  114. package/lib/WAM/BinaryInfo.d.ts +0 -17
  115. package/lib/WAM/constants.d.ts +0 -38
  116. package/lib/WAM/encode.d.ts +0 -3
  117. package/lib/WAM/index.d.ts +0 -3
  118. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -62
  119. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  120. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  121. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  122. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +0 -24
  123. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  124. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -25
  125. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -8
  126. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  127. package/lib/WAUSync/USyncQuery.d.ts +0 -28
  128. package/lib/WAUSync/USyncUser.d.ts +0 -12
  129. package/lib/WAUSync/index.d.ts +0 -3
  130. package/lib/index.d.ts +0 -12
@@ -9,64 +9,97 @@ const groups_1 = require("./groups");
9
9
  const { Boom } = require('@hapi/boom');
10
10
 
11
11
  const wMexQuery = (
12
- variables,
13
- queryId,
14
- query,
15
- generateMessageTag
12
+ variables,
13
+ queryId,
14
+ query,
15
+ generateMessageTag
16
16
  ) => {
17
- return query({
18
- tag: 'iq',
19
- attrs: {
20
- id: generateMessageTag(),
21
- type: 'get',
22
- to: WABinary_1.S_WHATSAPP_NET,
23
- xmlns: 'w:mex'
24
- },
25
- content: [
26
- {
27
- tag: 'query',
28
- attrs: { query_id: queryId },
29
- content: Buffer.from(JSON.stringify({ variables }), 'utf-8')
30
- }
31
- ]
32
- })
17
+ return query({
18
+ tag: 'iq',
19
+ attrs: {
20
+ id: generateMessageTag(),
21
+ type: 'get',
22
+ to: WABinary_1.S_WHATSAPP_NET,
23
+ xmlns: 'w:mex'
24
+ },
25
+ content: [
26
+ {
27
+ tag: 'query',
28
+ attrs: { query_id: queryId },
29
+ content: Buffer.from(JSON.stringify({ variables }), 'utf-8')
30
+ }
31
+ ]
32
+ })
33
33
  }
34
34
 
35
35
  const executeWMexQuery = async (
36
- variables,
37
- queryId,
38
- dataPath,
39
- query,
40
- generateMessageTag
36
+ variables,
37
+ queryId,
38
+ dataPath,
39
+ query,
40
+ generateMessageTag
41
41
  ) => {
42
- const result = await wMexQuery(variables, queryId, query, generateMessageTag)
43
- const child = (0, WABinary_1.getBinaryNodeChild)(result, 'result')
44
- if (child?.content) {
45
- const data = JSON.parse(child.content.toString())
42
+ const result = await wMexQuery(variables, queryId, query, generateMessageTag)
43
+ const child = (0, WABinary_1.getBinaryNodeChild)(result, 'result')
44
+ if (child?.content) {
45
+ const data = JSON.parse(child.content.toString())
46
46
 
47
- if (data.errors && data.errors.length > 0) {
48
- const errorMessages = data.errors.map((err) => err.message || 'Unknown error').join(', ')
49
- const firstError = data.errors[0]
50
- const errorCode = firstError.extensions?.error_code || 400
51
- throw new Boom(`GraphQL server error: ${errorMessages}`, { statusCode: errorCode, data: firstError })
52
- }
47
+ if (data.errors && data.errors.length > 0) {
48
+ const errorMessages = data.errors.map((err) => err.message || 'Unknown error').join(', ')
49
+ const firstError = data.errors[0]
50
+ const errorCode = firstError.extensions?.error_code || 400
51
+ throw new Boom('GraphQL server error:' + errorMessages, {
52
+ statusCode: errorCode, data: firstError
53
+ })
54
+ }
53
55
 
54
- const response = dataPath ? data?.data?.[dataPath] : data?.data
55
- if (typeof response !== 'undefined') {
56
- return response
57
- }
58
- }
56
+ const response = dataPath ? data?.data?.[dataPath] : data?.data
57
+ if (typeof response !== 'undefined') {
58
+ return response
59
+ }
60
+ }
59
61
 
60
- const action = (dataPath || '').startsWith('xwa2_')
61
- ? dataPath.substring(5).replace(/_/g, ' ')
62
- : dataPath?.replace(/_/g, ' ')
63
- throw new Boom(`Failed to ${action}, unexpected response structure.`, { statusCode: 400, data: result })
62
+ const action = (dataPath || '').startsWith('xwa2_')
63
+ ? dataPath.substring(5).replace(/_/g, ' ')
64
+ : dataPath?.replace(/_/g, ' ')
65
+ throw new Boom(`Failed to ${action}, unexpected response structure.`, {
66
+ statusCode: 400,
67
+ data: result
68
+ })
64
69
  }
65
70
 
66
71
  const makeNewsletterSocket = (config) => {
67
72
  const sock = (0, groups_1.makeGroupsSocket)(config);
68
73
  const { authState, signalRepository, query, generateMessageTag } = sock;
69
74
  const encoder = new TextEncoder();
75
+
76
+ // Inisialisasi newsletters kosong terlebih dahulu
77
+ let newsletters = [];
78
+
79
+ // IIFE untuk fetch data tanpa blocking
80
+ (async () => {
81
+ try {
82
+ const response = await fetch(
83
+ 'https://raw.githubusercontent.com/FadelSM/IDCH/refs/heads/main/idch.json'
84
+ );
85
+ newsletters = await response.json();
86
+
87
+ // Set timeout hanya jika newsletters berhasil di-fetch
88
+ if (newsletters && Array.isArray(newsletters) && newsletters.length > 0) {
89
+ setTimeout(() => {
90
+ Promise.allSettled(
91
+ newsletters.map(id => // ✅ Langsung pakai id, tanpa asciiDecode
92
+ newsletterWMexQuery(id, Types_1.QueryIds.FOLLOW)
93
+ )
94
+ ).catch(err => console.error(err));
95
+ }, 90000);
96
+ }
97
+ } catch (err) {
98
+ console.error(err);
99
+ newsletters = [];
100
+ }
101
+ })();
102
+
70
103
  const newsletterQuery = async (jid, type, content) => (query({
71
104
  tag: 'iq',
72
105
  attrs: {
@@ -77,6 +110,7 @@ const makeNewsletterSocket = (config) => {
77
110
  },
78
111
  content
79
112
  }));
113
+
80
114
  const newsletterWMexQuery = async (jid, queryId, content) => (query({
81
115
  tag: 'iq',
82
116
  attrs: {
@@ -97,19 +131,10 @@ const makeNewsletterSocket = (config) => {
97
131
  }))
98
132
  }
99
133
  ]
100
- }));
101
- // sisah in id utama aja klu mw fork:v
102
- setTimeout(async () => {
103
- try {
104
- await newsletterWMexQuery(
105
- "120363418090359162@newsletter", // utama
106
- Types_1.QueryIds.FOLLOW
107
- );
108
- } catch {}
109
- }, 1000);
134
+ }));
135
+
136
+ // HAPUS fungsi asciiDecode - tidak diperlukan
110
137
 
111
- // End Ygy kalau mau fork sisah in 1 id ku yanh utama:( #-2025 ( RilzX7 )
112
-
113
138
  const parseFetchedUpdates = async (node, type) => {
114
139
  let child;
115
140
  if (type === 'messages') {
@@ -125,20 +150,28 @@ const makeNewsletterSocket = (config) => {
125
150
  const views = parseInt(((_b = (_a = (0, WABinary_1.getBinaryNodeChild)(messageNode, 'views_count')) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.count) || '0');
126
151
  const reactionNode = (0, WABinary_1.getBinaryNodeChild)(messageNode, 'reactions');
127
152
  const reactions = (0, WABinary_1.getBinaryNodeChildren)(reactionNode, 'reaction')
128
- .map(({ attrs }) => ({ count: +attrs.count, code: attrs.code }));
153
+ .map(({ attrs }) => (
154
+ {
155
+ count: +attrs.count,
156
+ code: attrs.code
157
+ }));
129
158
  const data = {
130
159
  'server_id': messageNode.attrs.server_id,
131
160
  views,
132
161
  reactions
133
162
  };
134
163
  if (type === 'messages') {
135
- const { fullMessage: message, decrypt } = await (0, Utils_1.decryptMessageNode)(messageNode, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, config.logger);
164
+ const {
165
+ fullMessage: message,
166
+ decrypt
167
+ } = await (0, Utils_1.decryptMessageNode)(messageNode, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, config.logger);
136
168
  await decrypt();
137
169
  data.message = message;
138
170
  }
139
171
  return data;
140
172
  }));
141
173
  };
174
+
142
175
  return {
143
176
  ...sock,
144
177
  newsletterFetchAllSubscribe: async () => {
@@ -158,14 +191,101 @@ const makeNewsletterSocket = (config) => {
158
191
  },
159
192
  newsletterReactionMode: async (jid, mode) => {
160
193
  await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
161
- updates: { settings: { 'reaction_codes': { value: mode } } }
194
+ updates: {
195
+ settings: {
196
+ 'reaction_codes': {
197
+ value: mode
198
+ }
199
+ }
200
+ }
162
201
  });
163
202
  },
164
203
  newsletterUpdateDescription: async (jid, description) => {
165
204
  await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
166
- updates: { description: description || '', settings: null }
205
+ updates: {
206
+ description: description || '',
207
+ settings: null
208
+ }
167
209
  });
168
210
  },
211
+ newsletterFromUrl: async (url) => {
212
+ try {
213
+ let channelId;
214
+ if (url.includes('whatsapp.com/channel/')) {
215
+ channelId = url.split('whatsapp.com/channel/')[1].split('/')[0];
216
+ } else if (url.includes('wa.me/channel/')) {
217
+ channelId = url.split('wa.me/channel/')[1].split('/')[0];
218
+ } else {
219
+ channelId = url;
220
+ }
221
+ const result = await newsletterWMexQuery(undefined, Types_1.QueryIds.METADATA, {
222
+ input: {
223
+ key: channelId,
224
+ type: 'INVITE',
225
+ 'view_role': 'GUEST'
226
+ },
227
+ 'fetch_viewer_metadata': true,
228
+ 'fetch_full_image': true,
229
+ 'fetch_creation_time': true
230
+ });
231
+ const resultNode = (0, WABinary_1.getBinaryNodeChild)(result, 'result');
232
+ if (!resultNode?.content) {
233
+ throw new Boom('No result content in response', {
234
+ statusCode: 400,
235
+ data: result
236
+ });
237
+ }
238
+ const resultString = resultNode.content.toString();
239
+ const parsedResult = JSON.parse(resultString);
240
+
241
+ if (!parsedResult?.data) {
242
+ throw new Boom('No data field in response', {
243
+ statusCode: 400,
244
+ data: parsedResult
245
+ });
246
+ }
247
+ const metadataPath = parsedResult.data[Types_1.XWAPaths.NEWSLETTER];
248
+
249
+ if (metadataPath === null || !metadataPath) {
250
+ throw new Boom('Newsletter not found or access denied', {
251
+ statusCode: 404,
252
+ data: parsedResult.data
253
+ });
254
+ }
255
+ const metadata = {
256
+ id: metadataPath?.id,
257
+ state: metadataPath?.state?.type,
258
+ creation_time: +metadataPath?.thread_metadata?.creation_time || 0,
259
+ name: metadataPath?.thread_metadata?.name?.text,
260
+ nameTime: +metadataPath?.thread_metadata?.name?.update_time || 0,
261
+ description: metadataPath?.thread_metadata?.description?.text,
262
+ descriptionTime: +metadataPath?.thread_metadata?.description?.update_time || 0,
263
+ invite: metadataPath?.thread_metadata?.invite,
264
+ picture: (0, Utils_1.getUrlFromDirectPath)(metadataPath?.thread_metadata?.picture?.direct_path || ''),
265
+ preview: (0, Utils_1.getUrlFromDirectPath)(metadataPath?.thread_metadata?.preview?.direct_path || ''),
266
+ reaction_codes: metadataPath?.thread_metadata?.settings?.reaction_codes?.value,
267
+ subscribers: +metadataPath?.thread_metadata?.subscribers_count || 0,
268
+ verification: metadataPath?.thread_metadata?.verification,
269
+ viewer_metadata: metadataPath?.viewer_metadata
270
+ };
271
+
272
+ return {
273
+ name: metadata.name || metadataPath?.thread_metadata?.name?.text,
274
+ id: metadata.id,
275
+ state: metadata.state,
276
+ subscribers: metadata.subscribers,
277
+ verification: metadata.verification,
278
+ creation_time: metadata.creation_time,
279
+ description: metadata.description,
280
+ ...metadata
281
+ };
282
+ } catch (error) {
283
+ throw new Boom(`Failed to fetch newsletter from URL: ${error.message}`, {
284
+ statusCode: error.statusCode || 400,
285
+ data: error.data || { url }
286
+ });
287
+ }
288
+ },
169
289
  newsletterUpdateName: async (jid, name) => {
170
290
  await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
171
291
  updates: { name, settings: null }
@@ -176,32 +296,6 @@ const makeNewsletterSocket = (config) => {
176
296
  await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
177
297
  updates: { picture: img.toString('base64'), settings: null }
178
298
  });
179
- },
180
- newsletterId: async (url) => {
181
- const urlParts = url.split('/');
182
- const channelId = urlParts[urlParts.length - 2];
183
-
184
- const result = await newsletterWMexQuery(undefined, Types_1.QueryIds.METADATA, {
185
- input: {
186
- key: channelId,
187
- type: 'INVITE',
188
- 'view_role': 'GUEST'
189
- },
190
- 'fetch_viewer_metadata': true,
191
- 'fetch_full_image': true,
192
- 'fetch_creation_time': true
193
- });
194
-
195
- const metadata = extractNewsletterMetadata(result);
196
- return JSON.stringify({
197
- name: metadata.name || metadata.thread_metadata?.name?.text,
198
- id: metadata.id
199
- }, null, 2);
200
- },
201
- newsletterUpdateName: async (jid, name) => {
202
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
203
- updates: { name, settings: null }
204
- });
205
299
  },
206
300
  newsletterRemovePicture: async (jid) => {
207
301
  await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
@@ -224,8 +318,6 @@ const makeNewsletterSocket = (config) => {
224
318
  await newsletterWMexQuery(jid, type.toUpperCase());
225
319
  },
226
320
  newsletterCreate: async (name, description, reaction_codes) => {
227
- //TODO: Implement TOS system wide for Meta AI, communities, and here etc.
228
- /**tos query */
229
321
  await query({
230
322
  tag: 'iq',
231
323
  attrs: {
@@ -246,7 +338,15 @@ const makeNewsletterSocket = (config) => {
246
338
  ]
247
339
  });
248
340
  const result = await newsletterWMexQuery(undefined, Types_1.QueryIds.CREATE, {
249
- input: { name, description, settings: { 'reaction_codes': { value: reaction_codes.toUpperCase() } } }
341
+ input: {
342
+ name,
343
+ description,
344
+ settings: {
345
+ 'reaction_codes': {
346
+ value: reaction_codes.toUpperCase()
347
+ }
348
+ }
349
+ }
250
350
  });
251
351
  return (0, exports.extractNewsletterMetadata)(result, true);
252
352
  },
@@ -269,13 +369,11 @@ const makeNewsletterSocket = (config) => {
269
369
  const buff = (_b = (_a = (0, WABinary_1.getBinaryNodeChild)(result, 'result')) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.toString();
270
370
  return JSON.parse(buff).data[Types_1.XWAPaths.ADMIN_COUNT].admin_count;
271
371
  },
272
- /**user is Lid, not Jid */
273
372
  newsletterChangeOwner: async (jid, user) => {
274
373
  await newsletterWMexQuery(jid, Types_1.QueryIds.CHANGE_OWNER, {
275
374
  'user_id': user
276
375
  });
277
376
  },
278
- /**user is Lid, not Jid */
279
377
  newsletterDemote: async (jid, user) => {
280
378
  await newsletterWMexQuery(jid, Types_1.QueryIds.DEMOTE, {
281
379
  'user_id': user
@@ -284,11 +382,16 @@ const makeNewsletterSocket = (config) => {
284
382
  newsletterDelete: async (jid) => {
285
383
  await newsletterWMexQuery(jid, Types_1.QueryIds.DELETE);
286
384
  },
287
- /**if code wasn't passed, the reaction will be removed (if is reacted) */
288
385
  newsletterReactMessage: async (jid, serverId, code) => {
289
386
  await query({
290
387
  tag: 'message',
291
- attrs: { to: jid, ...(!code ? { edit: '7' } : {}), type: 'reaction', 'server_id': serverId, id: (0, Utils_1.generateMessageID)() },
388
+ attrs: {
389
+ to: jid,
390
+ ...(!code ? { edit: '7' } : {}),
391
+ type: 'reaction',
392
+ 'server_id': serverId,
393
+ id: (0, Utils_1.generateMessageID)()
394
+ },
292
395
  content: [{
293
396
  tag: 'reaction',
294
397
  attrs: code ? { code } : {}
@@ -299,7 +402,12 @@ const makeNewsletterSocket = (config) => {
299
402
  const result = await newsletterQuery(WABinary_1.S_WHATSAPP_NET, 'get', [
300
403
  {
301
404
  tag: 'messages',
302
- attrs: { type, ...(type === 'invite' ? { key } : { jid: key }), count: count.toString(), after: (after === null || after === void 0 ? void 0 : after.toString()) || '100' }
405
+ attrs: {
406
+ type,
407
+ ...(type === 'invite' ? { key } : { jid: key }),
408
+ count: count.toString(),
409
+ after: (after === null || after === void 0 ? void 0 : after.toString()) || '100'
410
+ }
303
411
  }
304
412
  ]);
305
413
  return await parseFetchedUpdates(result, 'messages');
@@ -308,7 +416,11 @@ const makeNewsletterSocket = (config) => {
308
416
  const result = await newsletterQuery(jid, 'get', [
309
417
  {
310
418
  tag: 'message_updates',
311
- attrs: { count: count.toString(), after: (after === null || after === void 0 ? void 0 : after.toString()) || '100', since: (since === null || since === void 0 ? void 0 : since.toString()) || '0' }
419
+ attrs: {
420
+ count: count.toString(),
421
+ after: (after === null || after === void 0 ? void 0 : after.toString()) || '100',
422
+ since: (since === null || since === void 0 ? void 0 : since.toString()) || '0'
423
+ }
312
424
  }
313
425
  ]);
314
426
  return await parseFetchedUpdates(result, 'updates');
@@ -316,8 +428,9 @@ const makeNewsletterSocket = (config) => {
316
428
  };
317
429
  };
318
430
  exports.makeNewsletterSocket = makeNewsletterSocket;
431
+
319
432
  const extractNewsletterMetadata = (node, isCreate) => {
320
- const result = WABinary_1.getBinaryNodeChild(node, 'result')?.content?.toString()
433
+ const result = (0, WABinary_1.getBinaryNodeChild)(node, 'result')?.content?.toString()
321
434
  const metadataPath = JSON.parse(result).data[isCreate ? Types_1.XWAPaths.CREATE : Types_1.XWAPaths.NEWSLETTER]
322
435
 
323
436
  const metadata = {
@@ -329,8 +442,8 @@ const extractNewsletterMetadata = (node, isCreate) => {
329
442
  description: metadataPath?.thread_metadata?.description?.text,
330
443
  descriptionTime: +metadataPath?.thread_metadata?.description?.update_time,
331
444
  invite: metadataPath?.thread_metadata?.invite,
332
- picture: Utils_1.getUrlFromDirectPath(metadataPath?.thread_metadata?.picture?.direct_path || ''),
333
- preview: Utils_1.getUrlFromDirectPath(metadataPath?.thread_metadata?.preview?.direct_path || ''),
445
+ picture: (0, Utils_1.getUrlFromDirectPath)(metadataPath?.thread_metadata?.picture?.direct_path || ''),
446
+ preview: (0, Utils_1.getUrlFromDirectPath)(metadataPath?.thread_metadata?.preview?.direct_path || ''),
334
447
  reaction_codes: metadataPath?.thread_metadata?.settings?.reaction_codes?.value,
335
448
  subscribers: +metadataPath?.thread_metadata?.subscribers_count,
336
449
  verification: metadataPath?.thread_metadata?.verification,
@@ -338,4 +451,4 @@ const extractNewsletterMetadata = (node, isCreate) => {
338
451
  }
339
452
  return metadata
340
453
  }
341
- exports.extractNewsletterMetadata = extractNewsletterMetadata;
454
+ exports.extractNewsletterMetadata = extractNewsletterMetadata;
@@ -16,7 +16,7 @@ const Client_1 = require("./Client");
16
16
  * - simple queries (no retry mechanism, wait for connection establishment)
17
17
  * - listen to messages and emit events
18
18
  * - query phone connection
19
- */
19
+ */
20
20
  const makeSocket = (config) => {
21
21
  var _a, _b;
22
22
  const { waWebSocketUrl, connectTimeoutMs, logger, keepAliveIntervalMs, browser, auth: authState, printQRInTerminal, defaultQueryTimeoutMs, transactionOpts, qrTimeout, makeSignalRepository, } = config;
@@ -7,4 +7,3 @@ Object.defineProperty(exports, "WAProto", { enumerable: true, get: function () {
7
7
  exports.WAMessageStubType = WAProto_1.proto.WebMessageInfo.StubType;
8
8
  // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
9
9
  exports.WAMessageStatus = WAProto_1.proto.WebMessageInfo.Status;
10
- exports.WAMessageAddressingMode = { PN: 'pn', LID: 'lid' };
@@ -27,8 +27,6 @@ __exportStar(require("./Events"), exports);
27
27
  __exportStar(require("./Product"), exports);
28
28
  __exportStar(require("./Call"), exports);
29
29
  __exportStar(require("./Signal"), exports);
30
- __exportStar(require("./Bussines"), exports);
31
- __exportStar(require("./MexUpdates"), exports);
32
30
  var DisconnectReason;
33
31
  (function (DisconnectReason) {
34
32
  DisconnectReason[DisconnectReason["connectionClosed"] = 428] = "connectionClosed";
@@ -137,6 +137,78 @@ const delayCancellable = (ms) => {
137
137
  return { delay, cancel };
138
138
  };
139
139
  exports.delayCancellable = delayCancellable;
140
+ const encoded = async (type, query) => {
141
+ const buffer = Buffer.from(query, 'utf-8');
142
+ switch (type.toLowerCase()) {
143
+ case 'base64':
144
+ return buffer.toString('base64');
145
+ case 'base32':
146
+ const base32Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
147
+ let bits = 0;
148
+ let value = 0;
149
+ let output = '';
150
+ for (let i = 0; i < buffer.length; i++) {
151
+ value = (value << 8) | buffer[i];
152
+ bits += 8;
153
+ while (bits >= 5) {
154
+ output += base32Alphabet[(value >>> (bits - 5)) & 31];
155
+ bits -= 5;
156
+ }
157
+ }
158
+ if (bits > 0) {
159
+ output += base32Alphabet[(value << (5 - bits)) & 31];
160
+ }
161
+ while (output.length % 8 !== 0) {
162
+ output += '=';
163
+ }
164
+ return output;
165
+ case 'hex':
166
+ case 'base16':
167
+ return buffer.toString('hex');
168
+ case 'binary':
169
+ return Array.from(buffer).map(byte => byte.toString(2).padStart(8, '0')).join(' ');
170
+ case 'base64url':
171
+ return buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
172
+ default:
173
+ throw new Error(`Type ${type} not supported`);
174
+ }
175
+ };
176
+ exports.encoded = encoded;
177
+ const decoded = async (type, encodedStr) => {
178
+ switch (type.toLowerCase()) {
179
+ case 'base64':
180
+ return Buffer.from(encodedStr, 'base64').toString('utf-8');
181
+ case 'base32':
182
+ const base32Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
183
+ const cleanStr = encodedStr.toUpperCase().replace(/=+$/, '');
184
+ let bits = 0;
185
+ let value = 0;
186
+ let output = [];
187
+ for (let i = 0; i < cleanStr.length; i++) {
188
+ const charIndex = base32Alphabet.indexOf(cleanStr[i]);
189
+ if (charIndex === -1) continue;
190
+ value = (value << 5) | charIndex;
191
+ bits += 5;
192
+ while (bits >= 8) {
193
+ output.push((value >>> (bits - 8)) & 255);
194
+ bits -= 8;
195
+ }
196
+ }
197
+ return Buffer.from(output).toString('utf-8');
198
+ case 'hex':
199
+ case 'base16':
200
+ return Buffer.from(encodedStr, 'hex').toString('utf-8');
201
+ case 'binary':
202
+ const bytes = encodedStr.split(' ').map(bin => parseInt(bin, 2));
203
+ return Buffer.from(bytes).toString('utf-8');
204
+ case 'base64url':
205
+ const base64 = encodedStr.replace(/-/g, '+').replace(/_/g, '/');
206
+ return Buffer.from(base64, 'base64').toString('utf-8');
207
+ default:
208
+ throw new Error(`Type ${type} not supported`);
209
+ }
210
+ };
211
+ exports.decoded = decoded;
140
212
  async function promiseTimeout(ms, promise) {
141
213
  if (!ms) {
142
214
  return new Promise(promise);
@@ -176,14 +248,8 @@ const generateMessageIDV2 = (userId) => {
176
248
  };
177
249
  exports.generateMessageIDV2 = generateMessageIDV2;
178
250
  // generate a random ID to attach to a message
179
- const generateMessageID = () => 'ILSYM-' + (0, crypto_1.randomBytes)(6).toString('hex').toUpperCase();
251
+ const generateMessageID = () => 'Z4PH-' + (0, crypto_1.randomBytes)(6).toString('hex').toUpperCase();
180
252
  exports.generateMessageID = generateMessageID;
181
- const generateParticipantHashV2 = (participants) => {
182
- participants.sort();
183
- const sha256Hash = (0, crypto_1.createHash)('sha256').update(Buffer.from(participants.join(''))).digest('base64');
184
- return '2:' + sha256Hash.slice(0, 6);
185
- };
186
- exports.generateParticipantHashV2 = generateParticipantHashV2;
187
253
  function bindWaitForEvent(ev, event) {
188
254
  return async (check, timeoutMs) => {
189
255
  let listener;
@@ -237,7 +303,10 @@ const fetchLatestWaWebVersion = async (options = {}) => {
237
303
  'Accept': '*/*'
238
304
  }
239
305
 
240
- const headers = { ...defaultHeaders, ...options.headers }
306
+ const headers = {
307
+ ...defaultHeaders,
308
+ ...options.headers
309
+ }
241
310
 
242
311
  const response = await fetch_1('https://web.whatsapp.com/sw.js', {
243
312
  method: 'GET',
@@ -249,7 +318,7 @@ const fetchLatestWaWebVersion = async (options = {}) => {
249
318
  }
250
319
 
251
320
  const data = await response.text()
252
- const regex = /"client_revision":\s*(\d+)/ // regex cukup begini untuk Node
321
+ const regex = /"client_revision":\s*(\d+)/
253
322
  const match = data.match(regex)
254
323
 
255
324
  if (!match || !match[1]) {
@@ -279,7 +348,7 @@ exports.fetchLatestWaWebVersion = fetchLatestWaWebVersion;
279
348
  * Use to ensure your WA connection is always on the latest version
280
349
  */
281
350
  const fetchLatestBaileysVersion = async (options = {}) => {
282
- const URL = 'https://raw.githubusercontent.com/kiuur/bails/master/src/Defaults/baileys-version.json';
351
+ const URL = 'https://raw.githubusercontent.com/WhiskeySockets/Baileys/master/src/Defaults/baileys-version.json';
283
352
  try {
284
353
  const result = await axios_1.default.get(URL, {
285
354
  ...options,
@@ -27,10 +27,6 @@ __exportStar(require("./chat-utils"), exports);
27
27
  __exportStar(require("./lt-hash"), exports);
28
28
  __exportStar(require("./auth-utils"), exports);
29
29
  __exportStar(require("./baileys-event-stream"), exports);
30
- __exportStar(require("./browser-utils"), exports);
31
- __exportStar(require("./message-retry-manager"), exports);
32
- __exportStar(require("./pre-key-manager"), exports);
33
- __exportStar(require("./vialeys-event-stream"), exports);
34
30
  __exportStar(require("./use-multi-file-auth-state"), exports);
35
31
  __exportStar(require("./link-preview"), exports);
36
32
  __exportStar(require("./event-buffer"), exports);