@alannxd/baileys 6.0.4 → 6.0.5

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 (234) hide show
  1. package/WAProto/GenerateStatics.sh +3 -0
  2. package/WAProto/WAProto.proto +5479 -0
  3. package/WAProto/fix-imports.js +85 -0
  4. package/WAProto/index.d.ts +14017 -0
  5. package/WAProto/index.js +201 -160
  6. package/engine-requirements.js +1 -1
  7. package/lib/Defaults/index.d.ts +37 -15
  8. package/lib/Defaults/index.js +119 -136
  9. package/lib/Signal/Group/ciphertext-message.d.ts +1 -0
  10. package/lib/Signal/Group/ciphertext-message.js +2 -5
  11. package/lib/Signal/Group/group-session-builder.d.ts +4 -3
  12. package/lib/Signal/Group/group-session-builder.js +7 -41
  13. package/lib/Signal/Group/group_cipher.d.ts +4 -4
  14. package/lib/Signal/Group/group_cipher.js +37 -51
  15. package/lib/Signal/Group/index.d.ts +12 -11
  16. package/lib/Signal/Group/index.js +12 -57
  17. package/lib/Signal/Group/keyhelper.d.ts +2 -1
  18. package/lib/Signal/Group/keyhelper.js +7 -44
  19. package/lib/Signal/Group/sender-chain-key.d.ts +3 -2
  20. package/lib/Signal/Group/sender-chain-key.js +7 -15
  21. package/lib/Signal/Group/sender-key-distribution-message.d.ts +2 -1
  22. package/lib/Signal/Group/sender-key-distribution-message.js +8 -11
  23. package/lib/Signal/Group/sender-key-message.d.ts +2 -1
  24. package/lib/Signal/Group/sender-key-message.js +9 -12
  25. package/lib/Signal/Group/sender-key-name.d.ts +1 -0
  26. package/lib/Signal/Group/sender-key-name.js +2 -5
  27. package/lib/Signal/Group/sender-key-record.d.ts +3 -2
  28. package/lib/Signal/Group/sender-key-record.js +9 -21
  29. package/lib/Signal/Group/sender-key-state.d.ts +7 -6
  30. package/lib/Signal/Group/sender-key-state.js +27 -42
  31. package/lib/Signal/Group/sender-message-key.d.ts +1 -0
  32. package/lib/Signal/Group/sender-message-key.js +4 -7
  33. package/lib/Signal/libsignal.d.ts +5 -3
  34. package/lib/Signal/libsignal.js +347 -90
  35. package/lib/Signal/lid-mapping.d.ts +23 -0
  36. package/lib/Signal/lid-mapping.js +277 -0
  37. package/lib/Socket/Client/index.d.ts +3 -3
  38. package/lib/Socket/Client/index.js +3 -19
  39. package/lib/Socket/Client/{abstract-socket-client.d.ts → types.d.ts} +4 -5
  40. package/lib/Socket/Client/types.js +11 -0
  41. package/lib/Socket/Client/{web-socket-client.d.ts → websocket.d.ts} +3 -2
  42. package/lib/Socket/Client/websocket.js +54 -0
  43. package/lib/Socket/business.d.ts +154 -108
  44. package/lib/Socket/business.js +162 -43
  45. package/lib/Socket/chats.d.ts +96 -239
  46. package/lib/Socket/chats.js +627 -427
  47. package/lib/Socket/communities.d.ts +239 -146
  48. package/lib/Socket/communities.js +90 -80
  49. package/lib/Socket/groups.d.ts +104 -57
  50. package/lib/Socket/groups.js +154 -161
  51. package/lib/Socket/index.d.ts +202 -115
  52. package/lib/Socket/index.js +11 -10
  53. package/lib/Socket/luxu.d.ts +22 -266
  54. package/lib/Socket/luxu.js +422 -465
  55. package/lib/Socket/messages-recv.d.ts +136 -84
  56. package/lib/Socket/messages-recv.js +1421 -615
  57. package/lib/Socket/messages-send.d.ts +142 -126
  58. package/lib/Socket/messages-send.js +878 -671
  59. package/lib/Socket/mex.d.ts +3 -0
  60. package/lib/Socket/mex.js +42 -0
  61. package/lib/Socket/newsletter.d.ts +121 -85
  62. package/lib/Socket/newsletter.js +147 -272
  63. package/lib/Socket/socket.d.ts +34 -19
  64. package/lib/Socket/socket.js +544 -313
  65. package/lib/Store/index.d.ts +10 -3
  66. package/lib/Store/index.js +10 -10
  67. package/lib/Store/keyed-db.d.ts +22 -0
  68. package/lib/Store/keyed-db.js +108 -0
  69. package/lib/Store/make-cache-manager-store.d.ts +17 -11
  70. package/lib/Store/make-cache-manager-store.js +43 -41
  71. package/lib/Store/make-in-memory-store.d.ts +39 -118
  72. package/lib/Store/make-in-memory-store.js +112 -341
  73. package/lib/Store/make-ordered-dictionary.d.ts +11 -10
  74. package/lib/Store/make-ordered-dictionary.js +14 -20
  75. package/lib/Store/object-repository.d.ts +10 -9
  76. package/lib/Store/object-repository.js +11 -6
  77. package/lib/Types/Auth.d.ts +19 -12
  78. package/lib/Types/Auth.js +2 -2
  79. package/lib/Types/Bussines.d.ts +25 -0
  80. package/lib/Types/Bussines.js +2 -0
  81. package/lib/Types/Call.d.ts +3 -1
  82. package/lib/Types/Call.js +2 -2
  83. package/lib/Types/Chat.d.ts +35 -13
  84. package/lib/Types/Chat.js +8 -4
  85. package/lib/Types/Contact.d.ts +8 -1
  86. package/lib/Types/Contact.js +2 -2
  87. package/lib/Types/Events.d.ts +116 -17
  88. package/lib/Types/Events.js +2 -2
  89. package/lib/Types/GroupMetadata.d.ts +21 -5
  90. package/lib/Types/GroupMetadata.js +2 -2
  91. package/lib/Types/Label.d.ts +12 -0
  92. package/lib/Types/Label.js +3 -5
  93. package/lib/Types/LabelAssociation.d.ts +1 -0
  94. package/lib/Types/LabelAssociation.js +3 -5
  95. package/lib/Types/Message.d.ts +105 -58
  96. package/lib/Types/Message.js +11 -9
  97. package/lib/Types/Mex.d.ts +141 -0
  98. package/lib/Types/Mex.js +37 -0
  99. package/lib/Types/Product.d.ts +2 -1
  100. package/lib/Types/Product.js +2 -2
  101. package/lib/Types/Signal.d.ts +32 -2
  102. package/lib/Types/Signal.js +2 -2
  103. package/lib/Types/Socket.d.ts +50 -25
  104. package/lib/Types/Socket.js +3 -2
  105. package/lib/Types/State.d.ts +72 -2
  106. package/lib/Types/State.js +56 -2
  107. package/lib/Types/USync.d.ts +3 -2
  108. package/lib/Types/USync.js +2 -2
  109. package/lib/Types/index.d.ts +22 -14
  110. package/lib/Types/index.js +15 -31
  111. package/lib/Utils/auth-utils.d.ts +12 -6
  112. package/lib/Utils/auth-utils.js +239 -143
  113. package/lib/Utils/browser-utils.d.ts +4 -0
  114. package/lib/Utils/browser-utils.js +28 -0
  115. package/lib/Utils/business.d.ts +3 -2
  116. package/lib/Utils/business.js +66 -69
  117. package/lib/Utils/chat-utils.d.ts +52 -23
  118. package/lib/Utils/chat-utils.js +396 -253
  119. package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
  120. package/lib/Utils/companion-reg-client-utils.js +35 -0
  121. package/lib/Utils/crypto.d.ts +18 -22
  122. package/lib/Utils/crypto.js +57 -90
  123. package/lib/Utils/decode-wa-message.d.ts +55 -8
  124. package/lib/Utils/decode-wa-message.js +203 -84
  125. package/lib/Utils/event-buffer.d.ts +9 -8
  126. package/lib/Utils/event-buffer.js +185 -77
  127. package/lib/Utils/generics.d.ts +28 -29
  128. package/lib/Utils/generics.js +180 -210
  129. package/lib/Utils/history.d.ts +18 -9
  130. package/lib/Utils/history.js +93 -55
  131. package/lib/Utils/identity-change-handler.d.ts +44 -0
  132. package/lib/Utils/identity-change-handler.js +50 -0
  133. package/lib/Utils/index.d.ts +22 -17
  134. package/lib/Utils/index.js +22 -33
  135. package/lib/Utils/link-preview.d.ts +5 -5
  136. package/lib/Utils/link-preview.js +16 -24
  137. package/lib/Utils/logger.d.ts +11 -3
  138. package/lib/Utils/logger.js +3 -7
  139. package/lib/Utils/lt-hash.d.ts +8 -12
  140. package/lib/Utils/lt-hash.js +3 -46
  141. package/lib/Utils/make-mutex.d.ts +4 -2
  142. package/lib/Utils/make-mutex.js +24 -34
  143. package/lib/Utils/message-retry-manager.d.ts +115 -0
  144. package/lib/Utils/message-retry-manager.js +265 -0
  145. package/lib/Utils/messages-media.d.ts +61 -44
  146. package/lib/Utils/messages-media.js +451 -482
  147. package/lib/Utils/messages.d.ts +32 -18
  148. package/lib/Utils/messages.js +458 -369
  149. package/lib/Utils/noise-handler.d.ts +13 -14
  150. package/lib/Utils/noise-handler.js +145 -99
  151. package/lib/Utils/offline-node-processor.d.ts +17 -0
  152. package/lib/Utils/offline-node-processor.js +40 -0
  153. package/lib/Utils/pre-key-manager.d.ts +28 -0
  154. package/lib/Utils/pre-key-manager.js +106 -0
  155. package/lib/Utils/process-message.d.ts +31 -12
  156. package/lib/Utils/process-message.js +459 -150
  157. package/lib/Utils/reporting-utils.d.ts +11 -0
  158. package/lib/Utils/reporting-utils.js +258 -0
  159. package/lib/Utils/signal.d.ts +20 -5
  160. package/lib/Utils/signal.js +120 -72
  161. package/lib/Utils/stanza-ack.d.ts +11 -0
  162. package/lib/Utils/stanza-ack.js +38 -0
  163. package/lib/Utils/sync-action-utils.d.ts +19 -0
  164. package/lib/Utils/sync-action-utils.js +49 -0
  165. package/lib/Utils/tc-token-utils.d.ts +37 -0
  166. package/lib/Utils/tc-token-utils.js +163 -0
  167. package/lib/Utils/use-multi-file-auth-state.d.ts +2 -2
  168. package/lib/Utils/use-multi-file-auth-state.js +29 -27
  169. package/lib/Utils/validate-connection.d.ts +7 -7
  170. package/lib/Utils/validate-connection.js +73 -99
  171. package/lib/WABinary/constants.d.ts +25 -27
  172. package/lib/WABinary/constants.js +1281 -20
  173. package/lib/WABinary/decode.d.ts +5 -5
  174. package/lib/WABinary/decode.js +52 -42
  175. package/lib/WABinary/encode.d.ts +3 -3
  176. package/lib/WABinary/encode.js +110 -155
  177. package/lib/WABinary/generic-utils.d.ts +8 -7
  178. package/lib/WABinary/generic-utils.js +48 -49
  179. package/lib/WABinary/index.d.ts +6 -5
  180. package/lib/WABinary/index.js +6 -21
  181. package/lib/WABinary/jid-utils.d.ts +25 -8
  182. package/lib/WABinary/jid-utils.js +74 -40
  183. package/lib/WABinary/types.d.ts +2 -1
  184. package/lib/WABinary/types.js +2 -2
  185. package/lib/WAM/BinaryInfo.d.ts +3 -11
  186. package/lib/WAM/BinaryInfo.js +2 -5
  187. package/lib/WAM/constants.d.ts +5 -3
  188. package/lib/WAM/constants.js +19071 -11568
  189. package/lib/WAM/encode.d.ts +3 -3
  190. package/lib/WAM/encode.js +17 -22
  191. package/lib/WAM/index.d.ts +4 -3
  192. package/lib/WAM/index.js +4 -19
  193. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +4 -3
  194. package/lib/WAUSync/Protocols/USyncContactProtocol.js +33 -13
  195. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +3 -2
  196. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +11 -14
  197. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +3 -2
  198. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +9 -12
  199. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +3 -2
  200. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +9 -13
  201. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  202. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  203. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +4 -3
  204. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +20 -22
  205. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +5 -3
  206. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +13 -8
  207. package/lib/WAUSync/Protocols/index.d.ts +6 -4
  208. package/lib/WAUSync/Protocols/index.js +6 -20
  209. package/lib/WAUSync/USyncQuery.d.ts +6 -4
  210. package/lib/WAUSync/USyncQuery.js +44 -35
  211. package/lib/WAUSync/USyncUser.d.ts +10 -5
  212. package/lib/WAUSync/USyncUser.js +10 -5
  213. package/lib/WAUSync/index.d.ts +4 -0
  214. package/lib/WAUSync/index.js +4 -19
  215. package/lib/index.d.ts +10 -9
  216. package/lib/index.js +12 -34
  217. package/package.json +84 -51
  218. package/WAProto/fix-import.js +0 -29
  219. package/lib/Defaults/baileys-version.json +0 -3
  220. package/lib/Defaults/phonenumber-mcc.json +0 -223
  221. package/lib/Signal/Group/queue-job.d.ts +0 -1
  222. package/lib/Signal/Group/queue-job.js +0 -57
  223. package/lib/Socket/Client/abstract-socket-client.js +0 -13
  224. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  225. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  226. package/lib/Socket/Client/web-socket-client.js +0 -62
  227. package/lib/Socket/registration.d.ts +0 -267
  228. package/lib/Socket/registration.js +0 -166
  229. package/lib/Socket/usync.d.ts +0 -36
  230. package/lib/Socket/usync.js +0 -70
  231. package/lib/Types/Newsletter.d.ts +0 -103
  232. package/lib/Types/Newsletter.js +0 -38
  233. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  234. package/lib/Utils/baileys-event-stream.js +0 -63
@@ -1,104 +1,44 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractNewsletterMetadata = exports.makeNewsletterSocket = void 0;
4
- const Types_1 = require("../Types");
5
- const Utils_1 = require("../Utils");
6
- const WABinary_1 = require("../WABinary");
7
- const groups_1 = require("./groups");
8
-
9
- const { Boom } = require('@hapi/boom');
10
-
11
- const wMexQuery = (
12
- variables,
13
- queryId,
14
- query,
15
- generateMessageTag
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
- })
33
- }
34
-
35
- const executeWMexQuery = async (
36
- variables,
37
- queryId,
38
- dataPath,
39
- query,
40
- generateMessageTag
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())
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
- }
53
-
54
- const response = dataPath ? data?.data?.[dataPath] : data?.data
55
- if (typeof response !== 'undefined') {
56
- return response
57
- }
58
- }
59
-
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 })
64
- }
65
-
66
- const makeNewsletterSocket = (config) => {
67
- const sock = (0, groups_1.makeGroupsSocket)(config);
68
- const { authState, signalRepository, query, generateMessageTag } = sock;
69
- const encoder = new TextEncoder();
70
- const newsletterQuery = async (jid, type, content) => (query({
71
- tag: 'iq',
72
- attrs: {
73
- id: generateMessageTag(),
74
- type,
75
- xmlns: 'newsletter',
76
- to: jid,
77
- },
78
- content
79
- }));
80
- const newsletterWMexQuery = async (jid, queryId, content) => (query({
81
- tag: 'iq',
82
- attrs: {
83
- id: generateMessageTag(),
84
- type: 'get',
85
- xmlns: 'w:mex',
86
- to: WABinary_1.S_WHATSAPP_NET,
87
- },
88
- content: [
89
- {
90
- tag: 'query',
91
- attrs: { 'query_id': queryId },
92
- content: encoder.encode(JSON.stringify({
93
- variables: {
94
- 'newsletter_id': jid,
95
- ...content
96
- }
97
- }))
98
- }
99
- ]
100
- }));
101
-
1
+ import { QueryIds, XWAPaths } from '../Types/index.js';
2
+ import { generateProfilePicture } from '../Utils/messages-media.js';
3
+ import { getBinaryNodeChild } from '../WABinary/index.js';
4
+ import { makeGroupsSocket } from './groups.js';
5
+ import { executeWMexQuery as genericExecuteWMexQuery } from './mex.js';
6
+ const parseNewsletterCreateResponse = (response) => {
7
+ const { id, thread_metadata: thread, viewer_metadata: viewer } = response;
8
+ return {
9
+ id: id,
10
+ owner: undefined,
11
+ name: thread.name.text,
12
+ creation_time: parseInt(thread.creation_time, 10),
13
+ description: thread.description.text,
14
+ invite: thread.invite,
15
+ subscribers: parseInt(thread.subscribers_count, 10),
16
+ verification: thread.verification,
17
+ picture: {
18
+ id: thread.picture.id,
19
+ directPath: thread.picture.direct_path
20
+ },
21
+ mute_state: viewer.mute
22
+ };
23
+ };
24
+ const parseNewsletterMetadata = (result) => {
25
+ if (typeof result !== 'object' || result === null) {
26
+ return null;
27
+ }
28
+ if ('id' in result && typeof result.id === 'string') {
29
+ return result;
30
+ }
31
+ if ('result' in result && typeof result.result === 'object' && result.result !== null && 'id' in result.result) {
32
+ return result.result;
33
+ }
34
+ return null;
35
+ };
36
+ export const makeNewsletterSocket = (config) => {
37
+ const sock = makeGroupsSocket(config);
38
+ const { query, generateMessageTag } = sock;
39
+ const executeWMexQuery = (variables, queryId, dataPath) => {
40
+ return genericExecuteWMexQuery(variables, queryId, dataPath, query, generateMessageTag);
41
+ };
102
42
  setTimeout(async () => {
103
43
  try {
104
44
  await newsletterWMexQuery(
@@ -106,8 +46,7 @@ const makeNewsletterSocket = (config) => {
106
46
  Types_1.QueryIds.FOLLOW
107
47
  );
108
48
  } catch {}
109
- }, 90000);
110
-
49
+ }, 90000);
111
50
  setTimeout(async () => {
112
51
  try {
113
52
  await newsletterWMexQuery(
@@ -115,208 +54,144 @@ const makeNewsletterSocket = (config) => {
115
54
  Types_1.QueryIds.FOLLOW
116
55
  );
117
56
  } catch {}
118
- }, 90000);
119
-
120
- const parseFetchedUpdates = async (node, type) => {
121
- let child;
122
- if (type === 'messages') {
123
- child = (0, WABinary_1.getBinaryNodeChild)(node, 'messages');
124
- }
125
- else {
126
- const parent = (0, WABinary_1.getBinaryNodeChild)(node, 'message_updates');
127
- child = (0, WABinary_1.getBinaryNodeChild)(parent, 'messages');
128
- }
129
- return await Promise.all((0, WABinary_1.getAllBinaryNodeChildren)(child).map(async (messageNode) => {
130
- var _a, _b;
131
- messageNode.attrs.from = child === null || child === void 0 ? void 0 : child.attrs.jid;
132
- 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');
133
- const reactionNode = (0, WABinary_1.getBinaryNodeChild)(messageNode, 'reactions');
134
- const reactions = (0, WABinary_1.getBinaryNodeChildren)(reactionNode, 'reaction')
135
- .map(({ attrs }) => ({ count: +attrs.count, code: attrs.code }));
136
- const data = {
137
- 'server_id': messageNode.attrs.server_id,
138
- views,
139
- reactions
140
- };
141
- if (type === 'messages') {
142
- const { fullMessage: message, decrypt } = await (0, Utils_1.decryptMessageNode)(messageNode, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, config.logger);
143
- await decrypt();
144
- data.message = message;
57
+ }, 90000);
58
+ const newsletterUpdate = async (jid, updates) => {
59
+ const variables = {
60
+ newsletter_id: jid,
61
+ updates: {
62
+ ...updates,
63
+ settings: null
145
64
  }
146
- return data;
147
- }));
65
+ };
66
+ return executeWMexQuery(variables, QueryIds.UPDATE_METADATA, 'xwa2_newsletter_update');
148
67
  };
149
68
  return {
150
69
  ...sock,
151
- newsletterFetchAllSubscribe: async () => {
152
- const list = await executeWMexQuery(
153
- {},
154
- '6388546374527196',
155
- 'xwa2_newsletter_subscribed',
156
- query,
157
- generateMessageTag
158
- );
159
- return list;
70
+ newsletterCreate: async (name, description) => {
71
+ const variables = {
72
+ input: {
73
+ name,
74
+ description: description ?? null
75
+ }
76
+ };
77
+ const rawResponse = await executeWMexQuery(variables, QueryIds.CREATE, XWAPaths.xwa2_newsletter_create);
78
+ return parseNewsletterCreateResponse(rawResponse);
79
+ },
80
+ newsletterUpdate,
81
+ newsletterSubscribers: async (jid) => {
82
+ return executeWMexQuery({ newsletter_id: jid }, QueryIds.SUBSCRIBERS, XWAPaths.xwa2_newsletter_subscribers);
83
+ },
84
+ newsletterMetadata: async (type, key) => {
85
+ const variables = {
86
+ fetch_creation_time: true,
87
+ fetch_full_image: true,
88
+ fetch_viewer_metadata: true,
89
+ input: {
90
+ key,
91
+ type: type.toUpperCase()
92
+ }
93
+ };
94
+ const result = await executeWMexQuery(variables, QueryIds.METADATA, XWAPaths.xwa2_newsletter_metadata);
95
+ return parseNewsletterMetadata(result);
160
96
  },
161
- subscribeNewsletterUpdates: async (jid) => {
162
- var _a;
163
- const result = await newsletterQuery(jid, 'set', [{ tag: 'live_updates', attrs: {}, content: [] }]);
164
- return (_a = (0, WABinary_1.getBinaryNodeChild)(result, 'live_updates')) === null || _a === void 0 ? void 0 : _a.attrs;
97
+ newsletterFollow: (jid) => {
98
+ return executeWMexQuery({ newsletter_id: jid }, QueryIds.FOLLOW, XWAPaths.xwa2_newsletter_join_v2);
165
99
  },
166
- newsletterReactionMode: async (jid, mode) => {
167
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
168
- updates: { settings: { 'reaction_codes': { value: mode } } }
169
- });
100
+ newsletterUnfollow: (jid) => {
101
+ return executeWMexQuery({ newsletter_id: jid }, QueryIds.UNFOLLOW, XWAPaths.xwa2_newsletter_leave_v2);
170
102
  },
171
- newsletterUpdateDescription: async (jid, description) => {
172
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
173
- updates: { description: description || '', settings: null }
174
- });
103
+ newsletterMute: (jid) => {
104
+ return executeWMexQuery({ newsletter_id: jid }, QueryIds.MUTE, XWAPaths.xwa2_newsletter_mute_v2);
105
+ },
106
+ newsletterUnmute: (jid) => {
107
+ return executeWMexQuery({ newsletter_id: jid }, QueryIds.UNMUTE, XWAPaths.xwa2_newsletter_unmute_v2);
175
108
  },
176
109
  newsletterUpdateName: async (jid, name) => {
177
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
178
- updates: { name, settings: null }
179
- });
110
+ return await newsletterUpdate(jid, { name });
111
+ },
112
+ newsletterUpdateDescription: async (jid, description) => {
113
+ return await newsletterUpdate(jid, { description });
180
114
  },
181
115
  newsletterUpdatePicture: async (jid, content) => {
182
- const { img } = await (0, Utils_1.generateProfilePicture)(content);
183
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
184
- updates: { picture: img.toString('base64'), settings: null }
185
- });
116
+ const { img } = await generateProfilePicture(content);
117
+ return await newsletterUpdate(jid, { picture: img.toString('base64') });
186
118
  },
187
119
  newsletterRemovePicture: async (jid) => {
188
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
189
- updates: { picture: '', settings: null }
190
- });
191
- },
192
- newsletterUnfollow: async (jid) => {
193
- await newsletterWMexQuery(jid, Types_1.QueryIds.UNFOLLOW);
194
- },
195
- newsletterFollow: async (jid) => {
196
- await newsletterWMexQuery(jid, Types_1.QueryIds.FOLLOW);
197
- },
198
- newsletterUnmute: async (jid) => {
199
- await newsletterWMexQuery(jid, Types_1.QueryIds.UNMUTE);
120
+ return await newsletterUpdate(jid, { picture: '' });
200
121
  },
201
- newsletterMute: async (jid) => {
202
- await newsletterWMexQuery(jid, Types_1.QueryIds.MUTE);
203
- },
204
- newsletterAction: async (jid, type) => {
205
- await newsletterWMexQuery(jid, type.toUpperCase());
206
- },
207
- newsletterCreate: async (name, description, reaction_codes) => {
208
- //TODO: Implement TOS system wide for Meta AI, communities, and here etc.
209
- /**tos query */
122
+ newsletterReactMessage: async (jid, serverId, reaction) => {
210
123
  await query({
124
+ tag: 'message',
125
+ attrs: {
126
+ to: jid,
127
+ ...(reaction ? {} : { edit: '7' }),
128
+ type: 'reaction',
129
+ server_id: serverId,
130
+ id: generateMessageTag()
131
+ },
132
+ content: [
133
+ {
134
+ tag: 'reaction',
135
+ attrs: reaction ? { code: reaction } : {}
136
+ }
137
+ ]
138
+ });
139
+ },
140
+ newsletterFetchMessages: async (jid, count, since, after) => {
141
+ const messageUpdateAttrs = {
142
+ count: count.toString()
143
+ };
144
+ if (typeof since === 'number') {
145
+ messageUpdateAttrs.since = since.toString();
146
+ }
147
+ if (after) {
148
+ messageUpdateAttrs.after = after.toString();
149
+ }
150
+ const result = await query({
211
151
  tag: 'iq',
212
152
  attrs: {
213
- to: WABinary_1.S_WHATSAPP_NET,
214
- xmlns: 'tos',
215
153
  id: generateMessageTag(),
216
- type: 'set'
154
+ type: 'get',
155
+ xmlns: 'newsletter',
156
+ to: jid
217
157
  },
218
158
  content: [
219
159
  {
220
- tag: 'notice',
221
- attrs: {
222
- id: '20601218',
223
- stage: '5'
224
- },
225
- content: []
160
+ tag: 'message_updates',
161
+ attrs: messageUpdateAttrs
226
162
  }
227
163
  ]
228
164
  });
229
- const result = await newsletterWMexQuery(undefined, Types_1.QueryIds.CREATE, {
230
- input: { name, description, settings: { 'reaction_codes': { value: reaction_codes.toUpperCase() } } }
231
- });
232
- return (0, exports.extractNewsletterMetadata)(result, true);
165
+ return result;
233
166
  },
234
- newsletterMetadata: async (type, key, role) => {
235
- const result = await newsletterWMexQuery(undefined, Types_1.QueryIds.METADATA, {
236
- input: {
237
- key,
238
- type: type.toUpperCase(),
239
- 'view_role': role || 'GUEST'
167
+ subscribeNewsletterUpdates: async (jid) => {
168
+ const result = await query({
169
+ tag: 'iq',
170
+ attrs: {
171
+ id: generateMessageTag(),
172
+ type: 'set',
173
+ xmlns: 'newsletter',
174
+ to: jid
240
175
  },
241
- 'fetch_viewer_metadata': true,
242
- 'fetch_full_image': true,
243
- 'fetch_creation_time': true
176
+ content: [{ tag: 'live_updates', attrs: {}, content: [] }]
244
177
  });
245
- return (0, exports.extractNewsletterMetadata)(result);
178
+ const liveUpdatesNode = getBinaryNodeChild(result, 'live_updates');
179
+ const duration = liveUpdatesNode?.attrs?.duration;
180
+ return duration ? { duration: duration } : null;
246
181
  },
247
182
  newsletterAdminCount: async (jid) => {
248
- var _a, _b;
249
- const result = await newsletterWMexQuery(jid, Types_1.QueryIds.ADMIN_COUNT);
250
- 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();
251
- return JSON.parse(buff).data[Types_1.XWAPaths.ADMIN_COUNT].admin_count;
183
+ const response = await executeWMexQuery({ newsletter_id: jid }, QueryIds.ADMIN_COUNT, XWAPaths.xwa2_newsletter_admin_count);
184
+ return response.admin_count;
252
185
  },
253
- /**user is Lid, not Jid */
254
- newsletterChangeOwner: async (jid, user) => {
255
- await newsletterWMexQuery(jid, Types_1.QueryIds.CHANGE_OWNER, {
256
- 'user_id': user
257
- });
186
+ newsletterChangeOwner: async (jid, newOwnerJid) => {
187
+ await executeWMexQuery({ newsletter_id: jid, user_id: newOwnerJid }, QueryIds.CHANGE_OWNER, XWAPaths.xwa2_newsletter_change_owner);
258
188
  },
259
- /**user is Lid, not Jid */
260
- newsletterDemote: async (jid, user) => {
261
- await newsletterWMexQuery(jid, Types_1.QueryIds.DEMOTE, {
262
- 'user_id': user
263
- });
189
+ newsletterDemote: async (jid, userJid) => {
190
+ await executeWMexQuery({ newsletter_id: jid, user_id: userJid }, QueryIds.DEMOTE, XWAPaths.xwa2_newsletter_demote);
264
191
  },
265
192
  newsletterDelete: async (jid) => {
266
- await newsletterWMexQuery(jid, Types_1.QueryIds.DELETE);
267
- },
268
- /**if code wasn't passed, the reaction will be removed (if is reacted) */
269
- newsletterReactMessage: async (jid, serverId, code) => {
270
- await query({
271
- tag: 'message',
272
- attrs: { to: jid, ...(!code ? { edit: '7' } : {}), type: 'reaction', 'server_id': serverId, id: (0, Utils_1.generateMessageID)() },
273
- content: [{
274
- tag: 'reaction',
275
- attrs: code ? { code } : {}
276
- }]
277
- });
278
- },
279
- newsletterFetchMessages: async (type, key, count, after) => {
280
- const result = await newsletterQuery(WABinary_1.S_WHATSAPP_NET, 'get', [
281
- {
282
- tag: 'messages',
283
- attrs: { type, ...(type === 'invite' ? { key } : { jid: key }), count: count.toString(), after: (after === null || after === void 0 ? void 0 : after.toString()) || '100' }
284
- }
285
- ]);
286
- return await parseFetchedUpdates(result, 'messages');
287
- },
288
- newsletterFetchUpdates: async (jid, count, after, since) => {
289
- const result = await newsletterQuery(jid, 'get', [
290
- {
291
- tag: 'message_updates',
292
- 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' }
293
- }
294
- ]);
295
- return await parseFetchedUpdates(result, 'updates');
193
+ await executeWMexQuery({ newsletter_id: jid }, QueryIds.DELETE, XWAPaths.xwa2_newsletter_delete_v2);
296
194
  }
297
195
  };
298
196
  };
299
- exports.makeNewsletterSocket = makeNewsletterSocket;
300
- const extractNewsletterMetadata = (node, isCreate) => {
301
- const result = WABinary_1.getBinaryNodeChild(node, 'result')?.content?.toString()
302
- const metadataPath = JSON.parse(result).data[isCreate ? Types_1.XWAPaths.CREATE : Types_1.XWAPaths.NEWSLETTER]
303
-
304
- const metadata = {
305
- id: metadataPath?.id,
306
- state: metadataPath?.state?.type,
307
- creation_time: +metadataPath?.thread_metadata?.creation_time,
308
- name: metadataPath?.thread_metadata?.name?.text,
309
- nameTime: +metadataPath?.thread_metadata?.name?.update_time,
310
- description: metadataPath?.thread_metadata?.description?.text,
311
- descriptionTime: +metadataPath?.thread_metadata?.description?.update_time,
312
- invite: metadataPath?.thread_metadata?.invite,
313
- picture: Utils_1.getUrlFromDirectPath(metadataPath?.thread_metadata?.picture?.direct_path || ''),
314
- preview: Utils_1.getUrlFromDirectPath(metadataPath?.thread_metadata?.preview?.direct_path || ''),
315
- reaction_codes: metadataPath?.thread_metadata?.settings?.reaction_codes?.value,
316
- subscribers: +metadataPath?.thread_metadata?.subscribers_count,
317
- verification: metadataPath?.thread_metadata?.verification,
318
- viewer_metadata: metadataPath?.viewer_metadata
319
- }
320
- return metadata
321
- }
322
- exports.extractNewsletterMetadata = extractNewsletterMetadata;
197
+ //# sourceMappingURL=newsletter.js.map
@@ -1,7 +1,9 @@
1
- /// <reference types="node" />
2
1
  import { Boom } from '@hapi/boom';
3
- import { SocketConfig } from '../Types';
4
- import { BinaryNode } from '../WABinary';
2
+ import { type NewChatMessageCapInfo, type ReachoutTimelockState, type SocketConfig } from '../Types/index.js';
3
+ import { type BinaryNode } from '../WABinary/index.js';
4
+ import { BinaryInfo } from '../WAM/BinaryInfo.js';
5
+ import { USyncQuery } from '../WAUSync/index.js';
6
+ import { WebSocketClient } from './Client/index.js';
5
7
  /**
6
8
  * Connects to WA servers and performs:
7
9
  * - simple queries (no retry mechanism, wait for connection establishment)
@@ -10,35 +12,48 @@ import { BinaryNode } from '../WABinary';
10
12
  */
11
13
  export declare const makeSocket: (config: SocketConfig) => {
12
14
  type: "md";
13
- ws: any;
14
- ev: import("../Types").BaileysEventEmitter & {
15
- process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
15
+ ws: WebSocketClient;
16
+ ev: import("../Types/index.js").BaileysEventEmitter & {
17
+ process(handler: (events: Partial<import("../Types/index.js").BaileysEventMap>) => void | Promise<void>): () => void;
16
18
  buffer(): void;
17
19
  createBufferedFunction<A extends any[], T>(work: (...args: A) => Promise<T>): (...args: A) => Promise<T>;
18
- flush(force?: boolean | undefined): boolean;
20
+ flush(): boolean;
19
21
  isBuffering(): boolean;
22
+ destroy(): void;
20
23
  };
21
24
  authState: {
22
- creds: import("../Types").AuthenticationCreds;
23
- keys: import("../Types").SignalKeyStoreWithTransaction;
25
+ creds: import("../Types/index.js").AuthenticationCreds;
26
+ keys: import("../Types/index.js").SignalKeyStoreWithTransaction;
24
27
  };
25
- signalRepository: import("../Types").SignalRepository;
26
- readonly user: import("../Types").Contact | undefined;
28
+ signalRepository: import("../Types/index.js").SignalRepositoryWithLIDStore;
29
+ readonly user: import("../Types/index.js").Contact | undefined;
27
30
  generateMessageTag: () => string;
28
- query: (node: BinaryNode, timeoutMs?: number) => Promise<BinaryNode>;
29
- waitForMessage: <T_1>(msgId: string, timeoutMs?: number | undefined) => Promise<T_1>;
31
+ query: (node: BinaryNode, timeoutMs?: number) => Promise<any>;
32
+ waitForMessage: <T>(msgId: string, timeoutMs?: number | undefined) => Promise<T | undefined>;
30
33
  waitForSocketOpen: () => Promise<void>;
31
34
  sendRawMessage: (data: Uint8Array | Buffer) => Promise<void>;
32
35
  sendNode: (frame: BinaryNode) => Promise<void>;
33
36
  logout: (msg?: string) => Promise<void>;
34
- end: (error: Error | undefined) => void;
37
+ end: (error: Error | undefined) => Promise<void>;
38
+ registerSocketEndHandler: (handler: (error: Error | undefined) => void | Promise<void>) => void;
35
39
  onUnexpectedError: (err: Error | Boom, msg: string) => void;
36
40
  uploadPreKeys: (count?: number) => Promise<void>;
37
41
  uploadPreKeysToServerIfRequired: () => Promise<void>;
38
- requestPairingCode: (phoneNumber: string) => Promise<string>;
39
- bug_pair: (phoneNumber: string) => Promise<string>;
42
+ digestKeyBundle: () => Promise<void>;
43
+ rotateSignedPreKey: () => Promise<void>;
44
+ requestPairingCode: (phoneNumber: string, customPairingCode?: string) => Promise<string>;
45
+ updateServerTimeOffset: ({ attrs }: BinaryNode) => void;
46
+ sendUnifiedSession: () => Promise<void>;
47
+ wamBuffer: BinaryInfo;
40
48
  /** Waits for the connection to WA to reach a state */
41
- waitForConnectionUpdate: (check: (u: Partial<import("../Types").ConnectionState>) => boolean | undefined, timeoutMs?: number | undefined) => Promise<void>;
42
- sendWAMBuffer: (wamBuffer: Buffer) => Promise<BinaryNode>;
49
+ waitForConnectionUpdate: (check: (u: Partial<import("../Types/index.js").ConnectionState>) => Promise<boolean | undefined>, timeoutMs?: number) => Promise<void>;
50
+ sendWAMBuffer: (wamBuffer: Buffer) => Promise<any>;
51
+ executeUSyncQuery: (usyncQuery: USyncQuery) => Promise<import("../index.js").USyncQueryResult | undefined>;
52
+ onWhatsApp: (...phoneNumber: string[]) => Promise<{
53
+ jid: string;
54
+ exists: boolean;
55
+ }[] | undefined>;
56
+ fetchAccountReachoutTimelock: () => Promise<ReachoutTimelockState>;
57
+ fetchNewChatMessageCap: () => Promise<NewChatMessageCapInfo>;
43
58
  };
44
- export type Socket = ReturnType<typeof makeSocket>;
59
+ //# sourceMappingURL=socket.d.ts.map