@badzz88/baileys 8.5.6 → 8.5.8

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 (225) hide show
  1. package/README.md +337 -1055
  2. package/WAProto/WAProto.proto +28 -1189
  3. package/WAProto/fix-imports.js +79 -69
  4. package/WAProto/index.d.ts +71491 -15254
  5. package/WAProto/index.js +126436 -19814
  6. package/engine-requirements.js +8 -15
  7. package/lib/Defaults/index.js +130 -0
  8. package/{src → lib}/Signal/Group/ciphertext-message.js +2 -5
  9. package/lib/Signal/Group/group-session-builder.js +30 -0
  10. package/{src → lib}/Signal/Group/group_cipher.js +11 -11
  11. package/lib/Signal/Group/index.js +12 -0
  12. package/lib/Signal/Group/keyhelper.js +18 -0
  13. package/{src → lib}/Signal/Group/sender-chain-key.js +6 -9
  14. package/{src → lib}/Signal/Group/sender-key-distribution-message.js +6 -9
  15. package/{src → lib}/Signal/Group/sender-key-message.js +9 -12
  16. package/{src → lib}/Signal/Group/sender-key-name.js +2 -5
  17. package/{src → lib}/Signal/Group/sender-key-record.js +8 -11
  18. package/{src → lib}/Signal/Group/sender-key-state.js +6 -9
  19. package/lib/Signal/Group/sender-message-key.js +26 -0
  20. package/{src → lib}/Signal/libsignal.js +131 -155
  21. package/{src → lib}/Signal/lid-mapping.js +27 -23
  22. package/lib/Socket/Client/index.js +3 -0
  23. package/lib/Socket/Client/types.js +11 -0
  24. package/{src → lib}/Socket/Client/websocket.js +11 -18
  25. package/{src → lib}/Socket/business.js +35 -67
  26. package/{src → lib}/Socket/chats.js +294 -550
  27. package/{src → lib}/Socket/communities.js +82 -114
  28. package/lib/Socket/graphql.js +716 -0
  29. package/lib/Socket/groups.js +374 -0
  30. package/lib/Socket/index.js +18 -0
  31. package/lib/Socket/interop.js +463 -0
  32. package/{src → lib}/Socket/luxu.js +120 -82
  33. package/lib/Socket/messages-recv.js +1916 -0
  34. package/lib/Socket/messages-send.js +1436 -0
  35. package/lib/Socket/mex.js +54 -0
  36. package/lib/Socket/newsletter.js +757 -0
  37. package/lib/Socket/privacy.js +318 -0
  38. package/{src → lib}/Socket/socket.js +356 -244
  39. package/lib/Socket/username.js +236 -0
  40. package/lib/Store/index.js +10 -0
  41. package/{src → lib}/Store/keyed-db.js +11 -21
  42. package/lib/Store/make-cache-manager-store.js +85 -0
  43. package/lib/Store/make-in-memory-store.js +244 -0
  44. package/{src → lib}/Store/make-ordered-dictionary.js +19 -25
  45. package/{src → lib}/Store/object-repository.js +11 -5
  46. package/lib/Types/Auth.js +2 -0
  47. package/lib/Types/Bussines.js +2 -0
  48. package/lib/Types/Call.js +2 -0
  49. package/lib/Types/Chat.js +8 -0
  50. package/lib/Types/Contact.js +2 -0
  51. package/lib/Types/Events.js +2 -0
  52. package/lib/Types/GroupMetadata.js +2 -0
  53. package/lib/Types/Label.js +25 -0
  54. package/lib/Types/LabelAssociation.js +7 -0
  55. package/lib/Types/Message.js +11 -0
  56. package/lib/Types/Mex.js +111 -0
  57. package/lib/Types/Product.js +2 -0
  58. package/lib/Types/Signal.js +2 -0
  59. package/lib/Types/Socket.js +3 -0
  60. package/lib/Types/State.js +56 -0
  61. package/lib/Types/USync.js +2 -0
  62. package/lib/Types/index.js +26 -0
  63. package/{src → lib}/Utils/auth-utils.js +91 -43
  64. package/lib/Utils/browser-utils.js +48 -0
  65. package/lib/Utils/business.js +231 -0
  66. package/lib/Utils/chat-utils.js +872 -0
  67. package/lib/Utils/companion-reg-client-utils.js +35 -0
  68. package/lib/Utils/crypto.js +118 -0
  69. package/lib/Utils/decode-wa-message.js +350 -0
  70. package/{src → lib}/Utils/event-buffer.js +81 -39
  71. package/lib/Utils/generics.js +403 -0
  72. package/lib/Utils/history.js +134 -0
  73. package/{src → lib}/Utils/identity-change-handler.js +9 -11
  74. package/lib/Utils/index.js +23 -0
  75. package/lib/Utils/link-preview.js +85 -0
  76. package/lib/Utils/logger.js +3 -0
  77. package/lib/Utils/lt-hash.js +8 -0
  78. package/{src → lib}/Utils/make-mutex.js +7 -10
  79. package/lib/Utils/message-composer.js +273 -0
  80. package/{src → lib}/Utils/message-retry-manager.js +76 -28
  81. package/lib/Utils/messages-media.js +870 -0
  82. package/lib/Utils/messages.js +1337 -0
  83. package/lib/Utils/noise-handler.js +201 -0
  84. package/{src → lib}/Utils/offline-node-processor.js +10 -4
  85. package/{src → lib}/Utils/pre-key-manager.js +27 -11
  86. package/lib/Utils/process-message.js +630 -0
  87. package/{src → lib}/Utils/reporting-utils.js +12 -15
  88. package/lib/Utils/signal.js +201 -0
  89. package/{src → lib}/Utils/stanza-ack.js +12 -4
  90. package/lib/Utils/sticker.js +110 -0
  91. package/{src → lib}/Utils/sync-action-utils.js +14 -10
  92. package/{src → lib}/Utils/tc-token-utils.js +48 -43
  93. package/{src → lib}/Utils/use-multi-file-auth-state.js +35 -25
  94. package/lib/Utils/validate-connection.js +203 -0
  95. package/{src → lib}/WABinary/constants.js +9 -12
  96. package/{src → lib}/WABinary/decode.js +38 -118
  97. package/{src → lib}/WABinary/encode.js +6 -11
  98. package/lib/WABinary/generic-utils.js +204 -0
  99. package/lib/WABinary/index.js +6 -0
  100. package/lib/WABinary/jid-utils.js +98 -0
  101. package/lib/WABinary/types.js +2 -0
  102. package/{src → lib}/WAM/BinaryInfo.js +2 -5
  103. package/{src → lib}/WAM/constants.js +4 -16635
  104. package/{src → lib}/WAM/encode.js +18 -17
  105. package/lib/WAM/index.js +4 -0
  106. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +53 -0
  107. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
  108. package/lib/WAUSync/Protocols/USyncContactProtocol.js +54 -0
  109. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  110. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  111. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +58 -0
  112. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +30 -0
  113. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +32 -0
  114. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +28 -0
  115. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -0
  116. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +38 -0
  117. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +27 -0
  118. package/lib/WAUSync/Protocols/index.js +12 -0
  119. package/lib/WAUSync/USyncQuery.js +151 -0
  120. package/lib/WAUSync/USyncUser.js +56 -0
  121. package/lib/WAUSync/index.js +3 -0
  122. package/{src → lib}/index.js +16 -51
  123. package/package.json +129 -99
  124. package/LICENSE +0 -21
  125. package/src/Defaults/index.js +0 -186
  126. package/src/Defaults/phonenumber-mcc.json +0 -223
  127. package/src/Signal/Group/group-session-builder.js +0 -86
  128. package/src/Signal/Group/index.js +0 -140
  129. package/src/Signal/Group/keyhelper.js +0 -77
  130. package/src/Signal/Group/sender-message-key.js +0 -29
  131. package/src/Socket/Client/index.js +0 -31
  132. package/src/Socket/Client/types.js +0 -13
  133. package/src/Socket/aigroups.js +0 -221
  134. package/src/Socket/graphql.js +0 -523
  135. package/src/Socket/groups.js +0 -516
  136. package/src/Socket/index.js +0 -31
  137. package/src/Socket/interactive-handler.js +0 -527
  138. package/src/Socket/interop.js +0 -339
  139. package/src/Socket/managed-account.js +0 -98
  140. package/src/Socket/messages-recv.js +0 -2685
  141. package/src/Socket/messages-send.js +0 -2047
  142. package/src/Socket/mex.js +0 -57
  143. package/src/Socket/newsletter.js +0 -455
  144. package/src/Socket/privacy.js +0 -125
  145. package/src/Socket/registration.js +0 -236
  146. package/src/Socket/text-router.js +0 -65
  147. package/src/Socket/username.js +0 -130
  148. package/src/Store/index.js +0 -33
  149. package/src/Store/make-cache-manager-store.js +0 -84
  150. package/src/Store/make-in-memory-store.js +0 -551
  151. package/src/Types/Auth.js +0 -31
  152. package/src/Types/Bussines.js +0 -2
  153. package/src/Types/Call.js +0 -2
  154. package/src/Types/Chat.js +0 -4
  155. package/src/Types/Contact.js +0 -2
  156. package/src/Types/Events.js +0 -2
  157. package/src/Types/GroupMetadata.js +0 -2
  158. package/src/Types/Label.js +0 -26
  159. package/src/Types/LabelAssociation.js +0 -8
  160. package/src/Types/Message.js +0 -93
  161. package/src/Types/Mex.js +0 -112
  162. package/src/Types/Newsletter.js +0 -109
  163. package/src/Types/Product.js +0 -2
  164. package/src/Types/Signal.js +0 -2
  165. package/src/Types/Socket.js +0 -2
  166. package/src/Types/State.js +0 -62
  167. package/src/Types/USync.js +0 -2
  168. package/src/Types/index.js +0 -56
  169. package/src/Utils/browser-utils.js +0 -112
  170. package/src/Utils/business.js +0 -240
  171. package/src/Utils/chat-utils.js +0 -1230
  172. package/src/Utils/command-loader.d.ts +0 -27
  173. package/src/Utils/command-loader.js +0 -89
  174. package/src/Utils/companion-reg-client-utils.js +0 -40
  175. package/src/Utils/consumer-application.js +0 -105
  176. package/src/Utils/crypto.js +0 -118
  177. package/src/Utils/curve25519-js.js +0 -242
  178. package/src/Utils/decode-wa-message.js +0 -529
  179. package/src/Utils/generics.js +0 -483
  180. package/src/Utils/group-history.js +0 -44
  181. package/src/Utils/history.js +0 -232
  182. package/src/Utils/index.js +0 -58
  183. package/src/Utils/jid-display-normalization.js +0 -195
  184. package/src/Utils/link-preview.js +0 -135
  185. package/src/Utils/logger.js +0 -8
  186. package/src/Utils/lt-hash.js +0 -25
  187. package/src/Utils/message-composer.js +0 -471
  188. package/src/Utils/messages-media.js +0 -843
  189. package/src/Utils/messages.js +0 -2817
  190. package/src/Utils/meta-ai-msmsg.js +0 -222
  191. package/src/Utils/native-bridge.js +0 -68
  192. package/src/Utils/noise-handler.js +0 -169
  193. package/src/Utils/process-message.js +0 -950
  194. package/src/Utils/session-pool.d.ts +0 -14
  195. package/src/Utils/session-pool.js +0 -70
  196. package/src/Utils/signal.js +0 -217
  197. package/src/Utils/sticker.d.ts +0 -13
  198. package/src/Utils/sticker.js +0 -123
  199. package/src/Utils/validate-connection.js +0 -209
  200. package/src/Utils/view-once-cache.d.ts +0 -12
  201. package/src/Utils/view-once-cache.js +0 -63
  202. package/src/Utils/voip-rekey.js +0 -22
  203. package/src/WABinary/generic-utils.js +0 -238
  204. package/src/WABinary/index.js +0 -34
  205. package/src/WABinary/jid-utils.js +0 -351
  206. package/src/WABinary/types.js +0 -2
  207. package/src/WAM/index.js +0 -32
  208. package/src/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -53
  209. package/src/WAUSync/Protocols/USyncBusinessProtocol.js +0 -44
  210. package/src/WAUSync/Protocols/USyncContactProtocol.js +0 -55
  211. package/src/WAUSync/Protocols/USyncDeviceProtocol.js +0 -55
  212. package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -31
  213. package/src/WAUSync/Protocols/USyncFeatureProtocol.js +0 -54
  214. package/src/WAUSync/Protocols/USyncLIDProtocol.js +0 -32
  215. package/src/WAUSync/Protocols/USyncNewsletterProtocol.js +0 -473
  216. package/src/WAUSync/Protocols/USyncPictureProtocol.js +0 -34
  217. package/src/WAUSync/Protocols/USyncSidelistProtocol.js +0 -29
  218. package/src/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
  219. package/src/WAUSync/Protocols/USyncTextStatusProtocol.js +0 -38
  220. package/src/WAUSync/Protocols/USyncUsernameProtocol.js +0 -28
  221. package/src/WAUSync/Protocols/index.js +0 -40
  222. package/src/WAUSync/USyncQuery.js +0 -126
  223. package/src/WAUSync/USyncUser.js +0 -50
  224. package/src/WAUSync/index.js +0 -32
  225. package/src/antiban.js +0 -4152
@@ -0,0 +1,318 @@
1
+ import { executeWMexQuery } from './mex.js'
2
+
3
+ /**
4
+ * MEX query IDs for privacy, status/profile, account/auth, and misc operations.
5
+ * Source: assets/whatsapp-android-mex_client_persist_ids.json
6
+ */
7
+ const PRIVACY_MEX_IDS = {
8
+ // Privacy settings
9
+ GET_SETTINGS: '32774292262215380', // GetPrivacySettingsQuery
10
+ SET_SETTING: '26887749497493184', // SetPrivacySettingMutation
11
+ UPDATE_CONTACT_LIST: '26375158178762800', // UpdatePrivacyContactListMutation
12
+ GET_CONTACT_LIST: '25700444246275824', // GetPrivacyContactListQuery
13
+ // Status / profile
14
+ UPDATE_TEXT_STATUS: '25863197129975892', // UpdateTextStatus
15
+ GET_TEXT_STATUS_LIST: '25741205615468936', // GetTextStatusList
16
+ UPDATE_USER_STATUS: '7452341274886724', // UpdateUserStatus
17
+ FETCH_USER_PICTURE: '24983561624604410', // FetchUserPictureInfo
18
+ PROFILE_PICTURE_MUTATION: '24714239711610700', // ProfilePictureMutation
19
+ // Account / auth
20
+ ACCOUNT_LOGIN: '27298465499757130', // AccountLoginMutation
21
+ ACCOUNT_LOGOUT: '26863447609979190', // AccountLogoutMutation
22
+ MULTI_ACCOUNT_REVOKE: '25846242091639660', // MultiAccountRevokeAccount
23
+ ADD_MULTI_ACCOUNT_LINK: '25502812266025190', // AddMultiAccountLink
24
+ ADD_TRUSTED_DEVICE: '24522952587403290', // AddTrustedDeviceMutation
25
+ GET_TRUSTED_DEVICES: '25123358920671964', // GetTrustedDevicesQuery
26
+ UNTRUST_TRUSTED_DEVICE: '26574930682133620', // UntrustTrustedDeviceMutation
27
+ DELETE_TRUSTED_DEVICE: '33867503889559536', // DeleteTrustedDeviceMutation
28
+ // Misc
29
+ MOBILE_CONFIG_FETCH: '25676911271914596', // MobileConfigFetchQuery
30
+ NOTIFY_PUSH_NAME: '25900490552974544', // NotifyPushName
31
+ CONTACT_INTEGRITY: '25924358997169496', // ContactIntegrityQuery
32
+ BIZ_INTEGRITY: '25975613018777536', // BizIntegrityQuery
33
+ LINKED_PROFILES_SET: '25013968611531010', // LinkedProfilesSet
34
+ LINKED_PROFILES_REMOVE: '24537675509265524', // LinkedProfilesRemove
35
+ LINKED_PROFILES_UPDATE: '24876967165297616', // LinkedProfilesUpdate
36
+ MIGRATE_BLOCKLIST_LID: '25028600226770430', // MigrateBlocklistLid
37
+ QR_CODE_SCAN: '26287165600869744' // QRCodeScan
38
+ }
39
+
40
+ export const makePrivacySocket = sock => {
41
+ const { query, generateMessageTag } = sock
42
+
43
+ const mexQuery = (variables, queryId, dataPath) =>
44
+ executeWMexQuery(variables, queryId, dataPath, query, generateMessageTag)
45
+
46
+ // ── Privacy Settings ────────────────────────────────────────────────────
47
+
48
+ /**
49
+ * Fetch all privacy settings via MEX.
50
+ */
51
+ const getPrivacySettings = (jid, features = null) => {
52
+ const users = [{ jid, ...(features ? { privacy_features: features } : {}) }]
53
+ return mexQuery({ users }, PRIVACY_MEX_IDS.GET_SETTINGS, 'xwa2_fetch_wa_users')
54
+ }
55
+
56
+ /**
57
+ * Set a privacy setting via MEX.
58
+ * Features: "LAST_SEEN", "ONLINE", "PROFILE_PHOTO", "STATUS", "READ_RECEIPTS", "GROUPS", "CALLS", "SCREENSHOT", "LIVE_LOCATION"
59
+ * Settings: "ALL", "CONTACTS", "CONTACT_BLACKLIST", "NONE"
60
+ */
61
+ const setPrivacySetting = (feature, setting) =>
62
+ mexQuery({ feature, setting }, PRIVACY_MEX_IDS.SET_SETTING, 'xwa2_privacy_feature_update')
63
+
64
+ /**
65
+ * Update the contact list for a privacy setting.
66
+ */
67
+ const updatePrivacyContactList = (feature, setting, jids) =>
68
+ mexQuery(
69
+ { feature, setting, contacts: jids.map(jid => ({ jid })) },
70
+ PRIVACY_MEX_IDS.UPDATE_CONTACT_LIST,
71
+ 'xwa2_privacy_contact_list_update'
72
+ )
73
+
74
+ /**
75
+ * Fetch the contact list for a privacy setting.
76
+ */
77
+ const getPrivacyContactList = (feature, setting) =>
78
+ mexQuery({ feature, setting }, PRIVACY_MEX_IDS.GET_CONTACT_LIST, 'xwa2_privacy_contact_list')
79
+
80
+ // ── Status / Profile ───────────────────────────────────────────────────
81
+
82
+ /**
83
+ * Update own text status About via MEX.
84
+ */
85
+ const updateTextStatus = (text, emoji = null) => {
86
+ const input = { text }
87
+ if (emoji) input.emoji = { content: emoji }
88
+ return mexQuery({ text_status_input: input }, PRIVACY_MEX_IDS.UPDATE_TEXT_STATUS, 'xwa2_text_status_update')
89
+ }
90
+
91
+ /**
92
+ * Fetch text statuses About for a list of JIDs via MEX.
93
+ */
94
+ const getTextStatusList = (jids, lastUpdateTime = null) => {
95
+ const input = jids.map(jid => ({ jid, last_update_time: lastUpdateTime }))
96
+ return mexQuery({ input }, PRIVACY_MEX_IDS.GET_TEXT_STATUS_LIST, 'xwa2_text_status_list')
97
+ }
98
+
99
+ /**
100
+ * Update own user status string via MEX.
101
+ */
102
+ const updateUserStatus = status =>
103
+ mexQuery({ status }, PRIVACY_MEX_IDS.UPDATE_USER_STATUS, 'xwa2_update_user_status')
104
+
105
+ /**
106
+ * Fetch picture info for a user via MEX.
107
+ */
108
+ const fetchUserPictureInfo = jid =>
109
+ mexQuery({ jid }, PRIVACY_MEX_IDS.FETCH_USER_PICTURE, 'xwa2_fetch_user_picture_info')
110
+
111
+ /**
112
+ * Set own profile picture via MEX.
113
+ */
114
+ const setProfilePictureMex = (imageBase64, type = 'image') =>
115
+ mexQuery(
116
+ { input: { image: imageBase64, type } },
117
+ PRIVACY_MEX_IDS.PROFILE_PICTURE_MUTATION,
118
+ 'xwa2_profile_picture_mutation'
119
+ )
120
+
121
+ // ── Account / Auth ─────────────────────────────────────────────────────
122
+
123
+ /**
124
+ * Mark account as logged-in via MEX.
125
+ */
126
+ const accountLogin = phoneNumber =>
127
+ mexQuery({ input: { phone_number: phoneNumber } }, PRIVACY_MEX_IDS.ACCOUNT_LOGIN, 'xwa2_account_login')
128
+
129
+ /**
130
+ * Mark account as logged-out via MEX.
131
+ */
132
+ const accountLogout = (phoneNumber, enabledBiometric = false) =>
133
+ mexQuery(
134
+ { input: { phone_number: phoneNumber, enabled_biometric: enabledBiometric } },
135
+ PRIVACY_MEX_IDS.ACCOUNT_LOGOUT,
136
+ 'xwa2_account_logout'
137
+ )
138
+
139
+ /**
140
+ * Add a multi-account link via MEX.
141
+ */
142
+ const addMultiAccountLink = phoneNumber =>
143
+ mexQuery(
144
+ { input: { phone_number: phoneNumber } },
145
+ PRIVACY_MEX_IDS.ADD_MULTI_ACCOUNT_LINK,
146
+ 'xwa2_add_multi_account_link'
147
+ )
148
+
149
+ /**
150
+ * Add a trusted device via MEX.
151
+ */
152
+ const addTrustedDevice = (deviceId, deviceName) =>
153
+ mexQuery({ device_id: deviceId, device_name: deviceName }, PRIVACY_MEX_IDS.ADD_TRUSTED_DEVICE, 'xwa2_add_trusted_device')
154
+
155
+ /**
156
+ * Fetch list of trusted devices for the account via MEX.
157
+ */
158
+ const getTrustedDevices = () => mexQuery({}, PRIVACY_MEX_IDS.GET_TRUSTED_DEVICES, 'xwa2_get_trusted_devices')
159
+
160
+ /**
161
+ * Untrust a trusted device via MEX.
162
+ */
163
+ const untrustTrustedDevice = (deviceId, reason = 'USER_INITIATED') =>
164
+ mexQuery(
165
+ { device_id: deviceId, reason },
166
+ PRIVACY_MEX_IDS.UNTRUST_TRUSTED_DEVICE,
167
+ 'xwa2_untrust_trusted_device'
168
+ )
169
+
170
+ /**
171
+ * Delete a trusted device entirely via MEX.
172
+ */
173
+ const deleteTrustedDevice = deviceId =>
174
+ mexQuery({ device_id: deviceId }, PRIVACY_MEX_IDS.DELETE_TRUSTED_DEVICE, 'xwa2_delete_trusted_device')
175
+
176
+ /**
177
+ * Revoke multi-account link for a secondary account via MEX.
178
+ */
179
+ const revokeMultiAccount = accountJid =>
180
+ mexQuery({ account_jid: accountJid }, PRIVACY_MEX_IDS.MULTI_ACCOUNT_REVOKE, 'xwa2_multi_account_revoke')
181
+
182
+ // ── Misc ───────────────────────────────────────────────────────────────
183
+
184
+ /**
185
+ * Fetch mobile config via MEX.
186
+ */
187
+ const fetchMobileConfig = (apiVersion = 0, epRefreshId = 0, flags = '') =>
188
+ mexQuery(
189
+ { api_version: apiVersion, ep_refresh_id: epRefreshId, flags },
190
+ PRIVACY_MEX_IDS.MOBILE_CONFIG_FETCH,
191
+ 'xwa2_mobile_config_fetch'
192
+ )
193
+
194
+ /**
195
+ * Notify group members of your push name via MEX.
196
+ */
197
+ const notifyPushName = (groupJid, participants) =>
198
+ mexQuery(
199
+ {
200
+ input: {
201
+ group_jid: groupJid,
202
+ participants: participants.map(({ jid, pushName }) => ({ jid, push_name: pushName }))
203
+ }
204
+ },
205
+ PRIVACY_MEX_IDS.NOTIFY_PUSH_NAME,
206
+ 'xwa2_notify_push_name'
207
+ )
208
+
209
+ /**
210
+ * Run a contact integrity check via MEX.
211
+ */
212
+ const contactIntegrityQuery = (jids, useCase = 'START_CHAT_CONTEXT') =>
213
+ mexQuery(
214
+ { users: jids.map(jid => ({ jid })), use_case: useCase },
215
+ PRIVACY_MEX_IDS.CONTACT_INTEGRITY,
216
+ 'xwa2_fetch_wa_users'
217
+ )
218
+
219
+ /**
220
+ * Run a business integrity check via MEX.
221
+ */
222
+ const bizIntegrityQuery = jids =>
223
+ mexQuery(
224
+ { users: jids.map(jid => ({ jid })) },
225
+ PRIVACY_MEX_IDS.BIZ_INTEGRITY,
226
+ 'xwa2_fetch_wa_users'
227
+ )
228
+
229
+ /**
230
+ * Set linked social profiles FB IG via MEX.
231
+ */
232
+ const linkedProfilesSet = profiles => {
233
+ const mapped = profiles.map(p => {
234
+ const entry = { type: p.type }
235
+ if (p.vid) entry.vid = p.vid
236
+ else if (p.username) entry.username = p.username
237
+ return entry
238
+ })
239
+ return mexQuery({ profiles: mapped }, PRIVACY_MEX_IDS.LINKED_PROFILES_SET, 'xwa2_linked_profiles_set')
240
+ }
241
+
242
+ /**
243
+ * Remove linked social profiles via MEX.
244
+ */
245
+ const linkedProfilesRemove = types =>
246
+ mexQuery(
247
+ { profiles: types.map(type => ({ type })) },
248
+ PRIVACY_MEX_IDS.LINKED_PROFILES_REMOVE,
249
+ 'xwa2_linked_profiles_remove'
250
+ )
251
+
252
+ /**
253
+ * Update linked social profile visibility settings via MEX.
254
+ */
255
+ const linkedProfilesUpdate = profiles =>
256
+ mexQuery(
257
+ { profiles: profiles.map(({ type, showOnProfile }) => ({ type, show_on_profile: showOnProfile })) },
258
+ PRIVACY_MEX_IDS.LINKED_PROFILES_UPDATE,
259
+ 'xwa2_linked_profiles_update'
260
+ )
261
+
262
+ /**
263
+ * Migrate blocklist to LID addressing via MEX.
264
+ */
265
+ const migrateBlocklistLid = (jids, dhash = '', dirtyAck = true) =>
266
+ mexQuery(
267
+ {
268
+ input: {
269
+ blocklist: jids.map(jid => ({ jid })),
270
+ dhash,
271
+ dirty_ack: dirtyAck
272
+ }
273
+ },
274
+ PRIVACY_MEX_IDS.MIGRATE_BLOCKLIST_LID,
275
+ 'xwa2_migrate_blocklist_lid'
276
+ )
277
+
278
+ /**
279
+ * Scan a QR code via MEX.
280
+ */
281
+ const qrCodeScan = qrData =>
282
+ mexQuery({ qr_data: qrData }, PRIVACY_MEX_IDS.QR_CODE_SCAN, 'xwa2_qr_code_scan')
283
+
284
+ return {
285
+ ...sock,
286
+ // Privacy
287
+ getPrivacySettings,
288
+ setPrivacySetting,
289
+ updatePrivacyContactList,
290
+ getPrivacyContactList,
291
+ // Status / profile
292
+ updateTextStatus,
293
+ getTextStatusList,
294
+ updateUserStatus,
295
+ fetchUserPictureInfo,
296
+ setProfilePictureMex,
297
+ // Account / auth
298
+ accountLogin,
299
+ accountLogout,
300
+ addMultiAccountLink,
301
+ addTrustedDevice,
302
+ getTrustedDevices,
303
+ untrustTrustedDevice,
304
+ deleteTrustedDevice,
305
+ revokeMultiAccount,
306
+ // Misc
307
+ fetchMobileConfig,
308
+ notifyPushName,
309
+ contactIntegrityQuery,
310
+ bizIntegrityQuery,
311
+ linkedProfilesSet,
312
+ linkedProfilesRemove,
313
+ linkedProfilesUpdate,
314
+ migrateBlocklistLid,
315
+ qrCodeScan,
316
+ PRIVACY_MEX_IDS
317
+ }
318
+ }