@badzz88/baileys 8.5.4 → 8.5.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 (107) hide show
  1. package/README.md +1 -1
  2. package/WAProto/WAProto.proto +75 -1256
  3. package/WAProto/index.d.ts +19729 -36122
  4. package/WAProto/index.js +132193 -178538
  5. package/engine-requirements.js +15 -7
  6. package/lib/Defaults/index.js +14 -22
  7. package/lib/Signal/Group/group_cipher.js +5 -5
  8. package/lib/Signal/Group/keyhelper.js +4 -4
  9. package/lib/Signal/Group/sender-chain-key.js +2 -2
  10. package/lib/Signal/Group/sender-key-distribution-message.js +1 -1
  11. package/lib/Signal/Group/sender-key-message.js +3 -3
  12. package/lib/Signal/Group/sender-key-record.js +1 -1
  13. package/lib/Signal/Group/sender-message-key.js +5 -5
  14. package/lib/Signal/libsignal.js +28 -39
  15. package/lib/Signal/lid-mapping.js +8 -28
  16. package/lib/Socket/aigroups.js +5 -5
  17. package/lib/Socket/business.js +11 -3
  18. package/lib/Socket/chats.js +319 -668
  19. package/lib/Socket/communities.js +89 -85
  20. package/lib/Socket/graphql.js +228 -435
  21. package/lib/Socket/groups.js +211 -132
  22. package/lib/Socket/index.js +7 -9
  23. package/lib/Socket/interactive-handler.js +60 -117
  24. package/lib/Socket/interop.js +175 -56
  25. package/lib/Socket/luxu.js +387 -0
  26. package/lib/Socket/managed-account.js +48 -79
  27. package/lib/Socket/messages-recv.js +340 -898
  28. package/lib/Socket/messages-send.js +160 -462
  29. package/lib/Socket/mex.js +53 -40
  30. package/lib/Socket/newsletter.js +295 -291
  31. package/lib/Socket/privacy.js +265 -77
  32. package/lib/Socket/registration.js +157 -164
  33. package/lib/Socket/socket.js +199 -181
  34. package/lib/Socket/text-router.js +83 -0
  35. package/lib/Socket/username.js +227 -144
  36. package/lib/Store/keyed-db.js +108 -0
  37. package/lib/Store/make-cache-manager-store.js +2 -2
  38. package/lib/Store/make-in-memory-store.js +141 -25
  39. package/lib/Types/Auth.js +3 -3
  40. package/lib/Types/Label.js +1 -1
  41. package/lib/Types/LabelAssociation.js +1 -1
  42. package/lib/Types/Mex.js +112 -0
  43. package/lib/Types/Newsletter.js +65 -96
  44. package/lib/Types/State.js +4 -4
  45. package/lib/Types/index.js +1 -1
  46. package/lib/Utils/auth-utils.js +57 -52
  47. package/lib/Utils/browser-utils.js +1 -1
  48. package/lib/Utils/business.js +6 -2
  49. package/lib/Utils/chat-utils.js +38 -102
  50. package/lib/Utils/command-loader.d.ts +31 -0
  51. package/lib/Utils/command-loader.js +100 -0
  52. package/lib/Utils/companion-reg-client-utils.js +42 -0
  53. package/lib/Utils/crypto.js +84 -54
  54. package/lib/Utils/curve25519-js.js +275 -0
  55. package/lib/Utils/decode-wa-message.js +83 -316
  56. package/lib/Utils/event-buffer.js +61 -37
  57. package/lib/Utils/generics.js +103 -157
  58. package/lib/Utils/group-history.js +12 -3
  59. package/lib/Utils/history.js +15 -15
  60. package/lib/Utils/index.js +5 -1
  61. package/lib/Utils/link-preview.js +8 -3
  62. package/lib/Utils/lt-hash.js +35 -2
  63. package/lib/Utils/make-mutex.js +1 -1
  64. package/lib/Utils/message-retry-manager.js +92 -27
  65. package/lib/Utils/messages-media.js +130 -159
  66. package/lib/Utils/messages.js +566 -144
  67. package/lib/Utils/meta-ai-msmsg.js +202 -62
  68. package/lib/Utils/native-bridge.js +82 -0
  69. package/lib/Utils/noise-handler.js +21 -19
  70. package/lib/Utils/offline-node-processor.js +8 -3
  71. package/lib/Utils/pre-key-manager.js +23 -13
  72. package/lib/Utils/process-message.js +106 -197
  73. package/lib/Utils/reporting-utils.js +2 -2
  74. package/lib/Utils/session-pool.d.ts +16 -0
  75. package/lib/Utils/session-pool.js +94 -0
  76. package/lib/Utils/signal.js +63 -28
  77. package/lib/Utils/stanza-ack.js +12 -39
  78. package/lib/Utils/sticker.d.ts +17 -0
  79. package/lib/Utils/sticker.js +145 -0
  80. package/lib/Utils/sync-action-utils.js +7 -4
  81. package/lib/Utils/tc-token-utils.js +25 -20
  82. package/lib/Utils/use-multi-file-auth-state.js +14 -30
  83. package/lib/Utils/validate-connection.js +19 -59
  84. package/lib/Utils/view-once-cache.d.ts +9 -0
  85. package/lib/Utils/view-once-cache.js +79 -0
  86. package/lib/WABinary/decode.js +16 -50
  87. package/lib/WABinary/encode.js +224 -54
  88. package/lib/WABinary/generic-utils.js +97 -7
  89. package/lib/WABinary/jid-utils.js +14 -27
  90. package/lib/WAM/encode.js +7 -7
  91. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +1 -58
  92. package/lib/WAUSync/Protocols/USyncContactProtocol.js +1 -7
  93. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +5 -13
  94. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +4 -1
  95. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +7 -20
  96. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +1 -1
  97. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +2 -2
  98. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +2 -7
  99. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +1 -1
  100. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +1 -2
  101. package/lib/WAUSync/Protocols/index.js +0 -1
  102. package/lib/WAUSync/USyncQuery.js +6 -77
  103. package/lib/WAUSync/USyncUser.js +8 -16
  104. package/lib/WAUSync/index.js +0 -1
  105. package/lib/antiban.js +854 -608
  106. package/lib/index.js +1 -1
  107. package/package.json +20 -16
@@ -5,86 +5,83 @@ exports.makeRegistrationSocket = void 0
5
5
  const { executeWMexQuery } = require('./mex')
6
6
 
7
7
  const REGISTRATION_MEX_IDS = {
8
-
9
- HAS_PASSWORD: '25379221318423478',
10
- SET_PASSWORD: '33855141324134176',
11
- CHECK_PASSWORD: '26881928138061632',
12
- DELETE_PASSWORD: '27247058691550586',
13
-
14
- PASSKEY_EXIST: '25188064727509430',
15
- PASSKEY_LIST_EXIST: '26930537423220681',
16
- PASSKEY_REQUEST_CHALLENGE: '26311497405176139',
17
- PASSKEY_VERIFY_CHALLENGE: '26876394218624479',
18
- PASSKEY_DELETE: '25225683640428243',
19
-
20
- REG_PASSKEY_START: '25415371271434748',
21
- REG_PASSKEY_FINISH: '24611221275218156',
22
- REG_PASSKEY_ENABLE: '25147880151540247',
23
- REG_PASSKEY_DISABLE: '27775237998742831',
24
- REG_PASSKEY_CLEAR: '25111972538494859',
25
- REG_PASSKEY_UPDATE_ENCRYPTION_STATUS: '24866837389649930',
26
-
27
- GET_REGISTRATION_UPSELLS: '24265038133175291',
28
- GET_DYNAMIC_REGISTRATION_UPSELLS: '32273353145641323',
29
- REGISTRATION_UPSELL_SHOWN: '25896605016620945',
30
- REGISTRATION_DYNAMIC_UPSELL_SHOWN: '25435755019399064',
31
- REG_ACCOUNT_TRANSFER_VERIFY_TOKEN: '7580940708621318',
32
-
33
- CONTACTS_UPLOAD: '26270332909283337',
34
- CONTACTS_BACKUP: '25507366408898459',
35
- CONTACTS_BACKUP_QUERY: '25885591041046968',
36
- SELF_CONTACTS: '25273846082242404',
37
- SUGGESTED_CONTACTS_V2: '31663643799945793',
38
- USYNC: '25973385702344488',
39
- USER_COUNTRY_CODE: '25292528387076991',
40
-
41
- AGE_COLLECTION: '33502711132676934',
42
- GET_AGE_EXPERIENCE: '26567868986241476',
43
- SET_AGE_EXPERIENCE: '26051006311231325',
44
- GET_UNKU_AGE_INFO: '34766883369623606',
45
- SUBMIT_AGE: '26049558371296621',
46
-
47
- GET_IMAGINE_ME_ONBOARDED: '25082125671408942',
48
- DELETE_IMAGINE_ME_ONBOARDING: '7106989772737677',
49
-
50
- FETCH_USER_NOTICES: '32114003924880386',
51
- REMOVE_REACHOUT_TIMELOCK: '25040013452293167',
52
- TOS_SET_RESULT: '25225843213776555',
53
- VALIDATE_VERIFIER_CONFIDENCE: '25879669248324812',
54
- WA_BINARY_DEMO: '25407430348912370',
55
- START_CHAT_CONTEXT_INTEGRITY: '26204539559207163',
56
- MESSAGE_CAPPING_OTE: '36625113040420390',
57
- MOBILE_CONFIG_CONSISTENCY: '34033663249614454',
58
- REMINDER_CREATE: '32149118614673399',
59
- REMINDER_DELETE: '25462476600019778',
60
- OHAI_KEY_CONFIG: '25069818679280758',
61
- REQUEST_PEER_LOGS_UPLOAD: '25383561471254437',
62
- HAS_BUSINESS_INTENT: '26322731900685133',
63
- ESCPS_MIGRATION: '25342222212064844',
64
- CREATE_ENFORCEMENT_APPEAL: '26933630359642347',
65
- GET_AUTO_CONF_CHALLENGE: '25578301865133112',
66
- GET_WA_OLD_RESPONSE: '25784374561179853',
67
- GET_WA_ME_LINK: '25001183556215266',
68
- FETCH_BOT_PKI_CRL: '26249576291319392',
69
- TEE_CHAT_TOKEN: '25920135234315276',
70
-
71
- GENERATE_LINKING_BUNDLE: '24469763446033134',
72
- GET_CACHEABLE_UNLINKED_BUNDLE: '26339420835710173',
73
- GET_UNLINKED_BUNDLE: '25515726664782894',
74
- GET_DSB_INFO: '24832343819719050',
75
-
76
- WAMO_USER_ID_VERSION: '24958410737155269',
77
- WAMO_SET_USER_ID_VERSION: '8148672891859281',
78
-
79
- WWW_CREATE_ACCESS_TOKEN: '7956082757804344',
80
- WWW_CREATE_USER: '8548056818544135',
81
- WWW_DELETE_USER: '7989555047767245',
82
- WWW_EXCHANGE_NONCE: '25727187160203620',
83
- WWW_GET_CERTIFICATES: '25094190163544446',
84
- WWW_GET_NONCE: '24635485196143064',
85
- WWW_TRADE_NONCES: '24184092467936760',
86
- WWW_TRIGGER_RECOVERY: '24896267680055094',
87
- WWW_VALIDATE_CANONICAL_USER: '25434261326170403'
8
+ // Password
9
+ HAS_PASSWORD: '25379221318423480', // HasPasswordQuery
10
+ SET_PASSWORD: '33855141324134176', // SetPasswordMutation
11
+ CHECK_PASSWORD: '26881928138061630', // CheckPasswordMutation
12
+ DELETE_PASSWORD: '27247058691550584', // DeletePasswordMutation
13
+ // Passkey (account-level)
14
+ PASSKEY_EXIST: '25188064727509430', // PasskeyExistResponseQuery
15
+ PASSKEY_LIST_EXIST: '26930537423220680', // PasskeyListExistResponseQuery
16
+ PASSKEY_REQUEST_CHALLENGE: '26311497405176140', // PasskeyRequestChallengeMutation
17
+ PASSKEY_VERIFY_CHALLENGE: '26876394218624480', // PasskeyVerifyChallengeMutation
18
+ PASSKEY_DELETE: '25225683640428244', // PasskeyDeleteMutation
19
+ // Passkey (registration flow)
20
+ REG_PASSKEY_START: '25415371271434748', // RegistrationPasskeyStartRegisterMutation
21
+ REG_PASSKEY_FINISH: '24611221275218156', // RegistrationPasskeyFinishRegisterMutation
22
+ REG_PASSKEY_ENABLE: '25147880151540250', // RegistrationPasskeyEnableMutation
23
+ REG_PASSKEY_DISABLE: '27775237998742830', // RegistrationPasskeyDisableMutation
24
+ REG_PASSKEY_CLEAR: '25111972538494860', // RegistrationPasskeyClear
25
+ REG_PASSKEY_UPDATE_ENCRYPTION_STATUS: '24866837389649930', // RegistrationPasskeyUpdateClientEncryptionStatusMutation
26
+ // Registration upsells
27
+ GET_REGISTRATION_UPSELLS: '24265038133175292', // GetRegistrationUpsells
28
+ GET_DYNAMIC_REGISTRATION_UPSELLS: '32273353145641324', // GetDynamicRegistrationUpsells
29
+ REGISTRATION_UPSELL_SHOWN: '25896605016620944', // RegistrationUpsellShown
30
+ REGISTRATION_DYNAMIC_UPSELL_SHOWN: '25435755019399064', // RegistrationDynamicUpsellShown
31
+ REG_ACCOUNT_TRANSFER_VERIFY_TOKEN: '7580940708621318', // RegAccountTransferVerifyTokenMutation
32
+ // Contacts
33
+ CONTACTS_UPLOAD: '26270332909283336', // ContactsUploadMutation
34
+ CONTACTS_BACKUP: '25507366408898460', // ContactsBackupMutation
35
+ CONTACTS_BACKUP_QUERY: '25885591041046970', // ContactsBackupQuery
36
+ SELF_CONTACTS: '25273846082242404', // SelfContactsQuery
37
+ SUGGESTED_CONTACTS_V2: '31663643799945790', // SuggestedContactsV2
38
+ USYNC: '25973385702344490', // UsyncQuery
39
+ USER_COUNTRY_CODE: '25292528387076990', // UserCountryCodeGet
40
+ // Age verification
41
+ AGE_COLLECTION: '33502711132676936', // AgeCollection
42
+ GET_AGE_EXPERIENCE: '26567868986241476', // GetAgeExperience
43
+ SET_AGE_EXPERIENCE: '26051006311231324', // SetAgeExperienceMutation
44
+ GET_UNKU_AGE_INFO: '34766883369623610', // GetUNKUAgeCollectionInfoQuery
45
+ SUBMIT_AGE: '26049558371296620', // SubmitAge
46
+ // Imagine Me
47
+ GET_IMAGINE_ME_ONBOARDED: '25082125671408944', // GetImagineMeOnboarded
48
+ DELETE_IMAGINE_ME_ONBOARDING: '7106989772737677', // DeleteImagineMeOnboarding
49
+ // Misc account
50
+ FETCH_USER_NOTICES: '32114003924880384', // FetchUserNoticesByID
51
+ REMOVE_REACHOUT_TIMELOCK: '25040013452293170', // RemoveAccountReachoutTimelock
52
+ TOS_SET_RESULT: '25225843213776556', // TosSetResult
53
+ VALIDATE_VERIFIER_CONFIDENCE: '25879669248324812', // ValidateVerifierConfidence
54
+ WA_BINARY_DEMO: '25407430348912370', // WABinaryDemoQuery
55
+ START_CHAT_CONTEXT_INTEGRITY: '26204539559207164', // StartChatContextIntegrityQuery
56
+ MESSAGE_CAPPING_OTE: '26903407272609800', // MessageCappingOteRequestMutation
57
+ MOBILE_CONFIG_CONSISTENCY: '34033663249614456', // MobileConfigConsistencyLoggingQuery
58
+ REMINDER_CREATE: '32149118614673400', // ReminderCreate
59
+ REMINDER_DELETE: '25462476600019776', // ReminderDelete
60
+ OHAI_KEY_CONFIG: '25069818679280760', // OhaiKeyConfigQuery
61
+ REQUEST_PEER_LOGS_UPLOAD: '25383561471254436', // RequestPeerLogsUploadForBugMutation
62
+ HAS_BUSINESS_INTENT: '26322731900685132', // HasBusinessIntent
63
+ ESCPS_MIGRATION: '25342222212064844', // EscpsMigration
64
+ CREATE_ENFORCEMENT_APPEAL: '25486243987721836', // CreateEnforcementAppeal
65
+ GET_AUTO_CONF_CHALLENGE: '25578301865133110', // GetAutoConfConfidenceChallenge
66
+ GET_WA_OLD_RESPONSE: '25784374561179852', // GetWaOldResponse
67
+ GET_WA_ME_LINK: '25001183556215264', // GetWaMeLinkQuery
68
+ FETCH_BOT_PKI_CRL: '26249576291319390', // FetchBotPKICRL
69
+ TEE_CHAT_TOKEN: '25920135234315276', // TeeChatParticipationGenerateToken
70
+ // Linking data bundles
71
+ GENERATE_LINKING_BUNDLE: '24469763446033136', // GenerateLinkingDataBundle
72
+ GET_CACHEABLE_UNLINKED_BUNDLE: '26339420835710172', // GetCacheableUnlinkedDataBundle
73
+ GET_UNLINKED_BUNDLE: '25515726664782896', // GetUnlinkedDataBundle
74
+ GET_DSB_INFO: '24832343819719050', // GetDsbInfo
75
+ // WWW / web companion
76
+ WWW_CREATE_ACCESS_TOKEN: '7956082757804344', // WWWCreateAccessToken
77
+ WWW_CREATE_USER: '8548056818544135', // WWWCreateUser
78
+ WWW_DELETE_USER: '7989555047767245', // WWWDeleteUser
79
+ WWW_EXCHANGE_NONCE: '25727187160203620', // WWWExchangeNonceForAccessToken
80
+ WWW_GET_CERTIFICATES: '25094190163544450', // WWWGetCertificates
81
+ WWW_GET_NONCE: '24635485196143064', // WWWGetNonceForCompanionDevice
82
+ WWW_TRADE_NONCES: '24184092467936760', // WWWTradeNonceForAccessTokens
83
+ WWW_TRIGGER_RECOVERY: '24896267680055096', // WWWTriggerAcountRecovery
84
+ WWW_VALIDATE_CANONICAL_USER: '25434261326170404' // WWWValidateCanonicalUser
88
85
  }
89
86
 
90
87
  const makeRegistrationSocket = sock => {
@@ -93,7 +90,7 @@ const makeRegistrationSocket = sock => {
93
90
  const mexQuery = (variables, queryId, dataPath) =>
94
91
  executeWMexQuery(variables, queryId, dataPath, query, generateMessageTag)
95
92
 
96
-
93
+ // ── Password ────────────────────────────────────────────────────────────
97
94
 
98
95
  const hasPassword = () => mexQuery({}, REGISTRATION_MEX_IDS.HAS_PASSWORD, 'xwa2_has_password')
99
96
 
@@ -109,7 +106,7 @@ const makeRegistrationSocket = sock => {
109
106
  const deletePassword = password =>
110
107
  mexQuery({ input: { password } }, REGISTRATION_MEX_IDS.DELETE_PASSWORD, 'xwa2_delete_password')
111
108
 
112
-
109
+ // ── Passkey (account-level) ─────────────────────────────────────────────
113
110
 
114
111
  const passkeyExists = () => mexQuery({}, REGISTRATION_MEX_IDS.PASSKEY_EXIST, 'xwa2_passkey_exist_response')
115
112
 
@@ -121,12 +118,7 @@ const makeRegistrationSocket = sock => {
121
118
 
122
119
  const passkeyVerifyChallenge = (credentialId, authenticatorData, clientDataJson, signature) =>
123
120
  mexQuery(
124
- {
125
- credential_id: credentialId,
126
- authenticator_data: authenticatorData,
127
- client_data_json: clientDataJson,
128
- signature
129
- },
121
+ { credential_id: credentialId, authenticator_data: authenticatorData, client_data_json: clientDataJson, signature },
130
122
  REGISTRATION_MEX_IDS.PASSKEY_VERIFY_CHALLENGE,
131
123
  'xwa2_passkey_verify_challenge'
132
124
  )
@@ -134,9 +126,10 @@ const makeRegistrationSocket = sock => {
134
126
  const passkeyDelete = credentialId =>
135
127
  mexQuery({ credential_id: credentialId }, REGISTRATION_MEX_IDS.PASSKEY_DELETE, 'xwa2_passkey_delete')
136
128
 
137
-
129
+ // ── Passkey (registration flow) ─────────────────────────────────────────
138
130
 
139
- const regPasskeyStart = () => mexQuery({}, REGISTRATION_MEX_IDS.REG_PASSKEY_START, 'xwa2_reg_passkey_start_register')
131
+ const regPasskeyStart = () =>
132
+ mexQuery({}, REGISTRATION_MEX_IDS.REG_PASSKEY_START, 'xwa2_reg_passkey_start_register')
140
133
 
141
134
  const regPasskeyFinish = (credentialId, attestationObject, clientDataJson) =>
142
135
  mexQuery(
@@ -145,11 +138,14 @@ const makeRegistrationSocket = sock => {
145
138
  'xwa2_reg_passkey_finish_register'
146
139
  )
147
140
 
148
- const regPasskeyEnable = () => mexQuery({}, REGISTRATION_MEX_IDS.REG_PASSKEY_ENABLE, 'xwa2_reg_passkey_enable')
141
+ const regPasskeyEnable = () =>
142
+ mexQuery({}, REGISTRATION_MEX_IDS.REG_PASSKEY_ENABLE, 'xwa2_reg_passkey_enable')
149
143
 
150
- const regPasskeyDisable = () => mexQuery({}, REGISTRATION_MEX_IDS.REG_PASSKEY_DISABLE, 'xwa2_reg_passkey_disable')
144
+ const regPasskeyDisable = () =>
145
+ mexQuery({}, REGISTRATION_MEX_IDS.REG_PASSKEY_DISABLE, 'xwa2_reg_passkey_disable')
151
146
 
152
- const regPasskeyClear = () => mexQuery({}, REGISTRATION_MEX_IDS.REG_PASSKEY_CLEAR, 'xwa2_reg_passkey_clear')
147
+ const regPasskeyClear = () =>
148
+ mexQuery({}, REGISTRATION_MEX_IDS.REG_PASSKEY_CLEAR, 'xwa2_reg_passkey_clear')
153
149
 
154
150
  const regPasskeyUpdateEncryptionStatus = encryptionEnabled =>
155
151
  mexQuery(
@@ -158,32 +154,24 @@ const makeRegistrationSocket = sock => {
158
154
  'xwa2_reg_passkey_update_encryption_status'
159
155
  )
160
156
 
161
-
157
+ // ── Registration upsells ────────────────────────────────────────────────
162
158
 
163
159
  const getRegistrationUpsells = () =>
164
- mexQuery({}, REGISTRATION_MEX_IDS.GET_REGISTRATION_UPSELLS, 'xwa2_dynamic_reg_upsells')
160
+ mexQuery({}, REGISTRATION_MEX_IDS.GET_REGISTRATION_UPSELLS, 'xwa2_get_registration_upsells')
165
161
 
166
162
  const getDynamicRegistrationUpsells = () =>
167
- mexQuery({}, REGISTRATION_MEX_IDS.GET_DYNAMIC_REGISTRATION_UPSELLS, 'xwa2_dynamic_reg_upsells')
163
+ mexQuery({}, REGISTRATION_MEX_IDS.GET_DYNAMIC_REGISTRATION_UPSELLS, 'xwa2_get_dynamic_registration_upsells')
168
164
 
169
165
  const registrationUpsellShown = upsellId =>
170
- mexQuery({ upsell_id: upsellId }, REGISTRATION_MEX_IDS.REGISTRATION_UPSELL_SHOWN, 'xwa2_reg_dynamic_upsell_shown')
166
+ mexQuery({ upsell_id: upsellId }, REGISTRATION_MEX_IDS.REGISTRATION_UPSELL_SHOWN, 'xwa2_registration_upsell_shown')
171
167
 
172
168
  const registrationDynamicUpsellShown = upsellId =>
173
- mexQuery(
174
- { upsell_id: upsellId },
175
- REGISTRATION_MEX_IDS.REGISTRATION_DYNAMIC_UPSELL_SHOWN,
176
- 'xwa2_reg_dynamic_upsell_shown'
177
- )
169
+ mexQuery({ upsell_id: upsellId }, REGISTRATION_MEX_IDS.REGISTRATION_DYNAMIC_UPSELL_SHOWN, 'xwa2_registration_dynamic_upsell_shown')
178
170
 
179
171
  const regAccountTransferVerifyToken = token =>
180
- mexQuery(
181
- { token },
182
- REGISTRATION_MEX_IDS.REG_ACCOUNT_TRANSFER_VERIFY_TOKEN,
183
- 'xwa2_reg_account_transfer_verify_token'
184
- )
172
+ mexQuery({ token }, REGISTRATION_MEX_IDS.REG_ACCOUNT_TRANSFER_VERIFY_TOKEN, 'xwa2_reg_account_transfer_verify_token')
185
173
 
186
-
174
+ // ── Contacts ────────────────────────────────────────────────────────────
187
175
 
188
176
  const contactsUpload = contacts =>
189
177
  mexQuery({ contacts }, REGISTRATION_MEX_IDS.CONTACTS_UPLOAD, 'xwa2_contacts_upload')
@@ -191,22 +179,28 @@ const makeRegistrationSocket = sock => {
191
179
  const contactsBackup = contacts =>
192
180
  mexQuery({ contacts }, REGISTRATION_MEX_IDS.CONTACTS_BACKUP, 'xwa2_contacts_backup')
193
181
 
194
- const contactsBackupQuery = () => mexQuery({}, REGISTRATION_MEX_IDS.CONTACTS_BACKUP_QUERY, 'xwa2_contacts_backup')
182
+ const contactsBackupQuery = () =>
183
+ mexQuery({}, REGISTRATION_MEX_IDS.CONTACTS_BACKUP_QUERY, 'xwa2_contacts_backup')
195
184
 
196
- const selfContactsQuery = () => mexQuery({}, REGISTRATION_MEX_IDS.SELF_CONTACTS, 'xwa2_self_contacts')
185
+ const selfContactsQuery = () =>
186
+ mexQuery({}, REGISTRATION_MEX_IDS.SELF_CONTACTS, 'xwa2_self_contacts')
197
187
 
198
188
  const suggestedContactsV2 = (limit = 20) =>
199
189
  mexQuery({ limit }, REGISTRATION_MEX_IDS.SUGGESTED_CONTACTS_V2, 'xwa2_suggested_contacts_v2')
200
190
 
201
- const usyncQuery = jids => mexQuery({ jids }, REGISTRATION_MEX_IDS.USYNC, 'xwa2_usync')
191
+ const usyncQuery = jids =>
192
+ mexQuery({ jids }, REGISTRATION_MEX_IDS.USYNC, 'xwa2_usync')
202
193
 
203
- const userCountryCodeGet = () => mexQuery({}, REGISTRATION_MEX_IDS.USER_COUNTRY_CODE, 'xwa2_user_country_code')
194
+ const userCountryCodeGet = () =>
195
+ mexQuery({}, REGISTRATION_MEX_IDS.USER_COUNTRY_CODE, 'xwa2_user_country_code')
204
196
 
205
-
197
+ // ── Age verification ─────────────────────────────────────────────────────
206
198
 
207
- const ageCollection = () => mexQuery({}, REGISTRATION_MEX_IDS.AGE_COLLECTION, 'xwa2_age_collection')
199
+ const ageCollection = () =>
200
+ mexQuery({}, REGISTRATION_MEX_IDS.AGE_COLLECTION, 'xwa2_age_collection')
208
201
 
209
- const getAgeExperience = () => mexQuery({}, REGISTRATION_MEX_IDS.GET_AGE_EXPERIENCE, 'xwa2_get_age_experience')
202
+ const getAgeExperience = () =>
203
+ mexQuery({}, REGISTRATION_MEX_IDS.GET_AGE_EXPERIENCE, 'xwa2_get_age_experience')
210
204
 
211
205
  const setAgeExperience = (birthYear, country = null) => {
212
206
  const input = { birth_year: birthYear }
@@ -214,7 +208,8 @@ const makeRegistrationSocket = sock => {
214
208
  return mexQuery({ input }, REGISTRATION_MEX_IDS.SET_AGE_EXPERIENCE, 'xwa2_set_age_experience')
215
209
  }
216
210
 
217
- const getUnkuAgeInfo = () => mexQuery({}, REGISTRATION_MEX_IDS.GET_UNKU_AGE_INFO, 'xwa2_get_unku_age_info')
211
+ const getUnkuAgeInfo = () =>
212
+ mexQuery({}, REGISTRATION_MEX_IDS.GET_UNKU_AGE_INFO, 'xwa2_get_unku_age_info')
218
213
 
219
214
  const submitAge = (birthYear, country = null) => {
220
215
  const input = { birth_year: birthYear }
@@ -222,7 +217,7 @@ const makeRegistrationSocket = sock => {
222
217
  return mexQuery({ input }, REGISTRATION_MEX_IDS.SUBMIT_AGE, 'xwa2_submit_age')
223
218
  }
224
219
 
225
-
220
+ // ── Imagine Me ───────────────────────────────────────────────────────────
226
221
 
227
222
  const getImagineMeOnboarded = () =>
228
223
  mexQuery({}, REGISTRATION_MEX_IDS.GET_IMAGINE_ME_ONBOARDED, 'xwa2_get_imagine_me_onboarded')
@@ -230,7 +225,7 @@ const makeRegistrationSocket = sock => {
230
225
  const deleteImagineMeOnboarding = () =>
231
226
  mexQuery({}, REGISTRATION_MEX_IDS.DELETE_IMAGINE_ME_ONBOARDING, 'xwa2_delete_imagine_me_onboarding')
232
227
 
233
-
228
+ // ── Misc account ─────────────────────────────────────────────────────────
234
229
 
235
230
  const fetchUserNoticesById = noticeIds =>
236
231
  mexQuery({ notice_ids: noticeIds }, REGISTRATION_MEX_IDS.FETCH_USER_NOTICES, 'xwa2_fetch_user_notices_by_id')
@@ -242,13 +237,10 @@ const makeRegistrationSocket = sock => {
242
237
  mexQuery({ tos_id: tosId, result }, REGISTRATION_MEX_IDS.TOS_SET_RESULT, 'xwa2_tos_set_result')
243
238
 
244
239
  const validateVerifierConfidence = (verifierId, confidence) =>
245
- mexQuery(
246
- { verifier_id: verifierId, confidence },
247
- REGISTRATION_MEX_IDS.VALIDATE_VERIFIER_CONFIDENCE,
248
- 'xwa2_autoconf_validate_confidence'
249
- )
240
+ mexQuery({ verifier_id: verifierId, confidence }, REGISTRATION_MEX_IDS.VALIDATE_VERIFIER_CONFIDENCE, 'xwa2_validate_verifier_confidence')
250
241
 
251
- const waBinaryDemoQuery = () => mexQuery({}, REGISTRATION_MEX_IDS.WA_BINARY_DEMO, 'xwa2_wa_binary_demo')
242
+ const waBinaryDemoQuery = () =>
243
+ mexQuery({}, REGISTRATION_MEX_IDS.WA_BINARY_DEMO, 'xwa2_wa_binary_demo')
252
244
 
253
245
  const startChatContextIntegrityQuery = jids =>
254
246
  mexQuery(
@@ -267,20 +259,23 @@ const makeRegistrationSocket = sock => {
267
259
  mexQuery(
268
260
  { input: { title, body, scheduled_time: scheduledTime } },
269
261
  REGISTRATION_MEX_IDS.REMINDER_CREATE,
270
- 'xwa2_reminder_set'
262
+ 'xwa2_reminder_create'
271
263
  )
272
264
 
273
265
  const reminderDelete = reminderId =>
274
266
  mexQuery({ reminder_id: reminderId }, REGISTRATION_MEX_IDS.REMINDER_DELETE, 'xwa2_reminder_delete')
275
267
 
276
- const ohaiKeyConfigQuery = () => mexQuery({}, REGISTRATION_MEX_IDS.OHAI_KEY_CONFIG, 'xwa2_ohai_key_config')
268
+ const ohaiKeyConfigQuery = () =>
269
+ mexQuery({}, REGISTRATION_MEX_IDS.OHAI_KEY_CONFIG, 'xwa2_ohai_key_config')
277
270
 
278
271
  const requestPeerLogsUpload = bugId =>
279
272
  mexQuery({ bug_id: bugId }, REGISTRATION_MEX_IDS.REQUEST_PEER_LOGS_UPLOAD, 'xwa2_request_peer_logs_upload')
280
273
 
281
- const hasBusinessIntent = () => mexQuery({}, REGISTRATION_MEX_IDS.HAS_BUSINESS_INTENT, 'xwa2_has_business_intent')
274
+ const hasBusinessIntent = () =>
275
+ mexQuery({}, REGISTRATION_MEX_IDS.HAS_BUSINESS_INTENT, 'xwa2_has_business_intent')
282
276
 
283
- const escpsMigration = () => mexQuery({}, REGISTRATION_MEX_IDS.ESCPS_MIGRATION, 'xwa2_escps_migration')
277
+ const escpsMigration = () =>
278
+ mexQuery({}, REGISTRATION_MEX_IDS.ESCPS_MIGRATION, 'xwa2_escps_migration')
284
279
 
285
280
  const createEnforcementAppeal = (reason, details = null) => {
286
281
  const input = { reason }
@@ -289,90 +284,90 @@ const makeRegistrationSocket = sock => {
289
284
  }
290
285
 
291
286
  const getAutoConfChallenge = () =>
292
- mexQuery({}, REGISTRATION_MEX_IDS.GET_AUTO_CONF_CHALLENGE, 'xwa2_autoconf_request_confidence_challenge')
287
+ mexQuery({}, REGISTRATION_MEX_IDS.GET_AUTO_CONF_CHALLENGE, 'xwa2_get_auto_conf_challenge')
293
288
 
294
- const getWaOldResponse = () => mexQuery({}, REGISTRATION_MEX_IDS.GET_WA_OLD_RESPONSE, 'xwa2_get_wa_old_response')
289
+ const getWaOldResponse = () =>
290
+ mexQuery({}, REGISTRATION_MEX_IDS.GET_WA_OLD_RESPONSE, 'xwa2_get_wa_old_response')
295
291
 
296
- const getWaMeLink = () => mexQuery({}, REGISTRATION_MEX_IDS.GET_WA_ME_LINK, 'xwa2_get_wa_me_link')
292
+ const getWaMeLink = () =>
293
+ mexQuery({}, REGISTRATION_MEX_IDS.GET_WA_ME_LINK, 'xwa2_get_wa_me_link')
297
294
 
298
- const fetchBotPkiCrl = () => mexQuery({}, REGISTRATION_MEX_IDS.FETCH_BOT_PKI_CRL, 'xwa2_fetch_bot_pki_crl')
295
+ const fetchBotPkiCrl = () =>
296
+ mexQuery({}, REGISTRATION_MEX_IDS.FETCH_BOT_PKI_CRL, 'xwa2_fetch_bot_pki_crl')
299
297
 
300
298
  const teeChatParticipationToken = (chatJid, participants) =>
301
- mexQuery({ chat_jid: chatJid, participants }, REGISTRATION_MEX_IDS.TEE_CHAT_TOKEN, 'xwa2_generate_wa_tee_gs_token')
299
+ mexQuery({ chat_jid: chatJid, participants }, REGISTRATION_MEX_IDS.TEE_CHAT_TOKEN, 'xwa2_tee_chat_participation_generate_token')
302
300
 
303
-
301
+ // ── Linking data bundles ─────────────────────────────────────────────────
304
302
 
305
303
  const generateLinkingBundle = () =>
306
- mexQuery({}, REGISTRATION_MEX_IDS.GENERATE_LINKING_BUNDLE, 'xwa2_waffle_generate_linking_data_bundle')
304
+ mexQuery({}, REGISTRATION_MEX_IDS.GENERATE_LINKING_BUNDLE, 'xwa2_generate_linking_bundle')
307
305
 
308
306
  const getCacheableUnlinkedBundle = () =>
309
307
  mexQuery({}, REGISTRATION_MEX_IDS.GET_CACHEABLE_UNLINKED_BUNDLE, 'xwa2_get_cacheable_unlinked_bundle')
310
308
 
311
- const getUnlinkedBundle = () => mexQuery({}, REGISTRATION_MEX_IDS.GET_UNLINKED_BUNDLE, 'xwa2_get_unlinked_bundle')
312
-
313
- const getDsbInfo = () => mexQuery({}, REGISTRATION_MEX_IDS.GET_DSB_INFO, 'xwa2_get_dsb_info')
314
-
315
- const wamoUserIdVersion = () => mexQuery({}, REGISTRATION_MEX_IDS.WAMO_USER_ID_VERSION, 'xwa2_wamo_user_id_version')
309
+ const getUnlinkedBundle = () =>
310
+ mexQuery({}, REGISTRATION_MEX_IDS.GET_UNLINKED_BUNDLE, 'xwa2_get_unlinked_bundle')
316
311
 
317
- const setWamoUserIdVersion = version =>
318
- mexQuery({ version }, REGISTRATION_MEX_IDS.WAMO_SET_USER_ID_VERSION, 'xwa2_wamo_user_id_version_set')
312
+ const getDsbInfo = () =>
313
+ mexQuery({}, REGISTRATION_MEX_IDS.GET_DSB_INFO, 'xwa2_get_dsb_info')
319
314
 
320
-
315
+ // ── WWW / web companion ──────────────────────────────────────────────────
321
316
 
322
317
  const wwwCreateAccessToken = (nonce, userId) =>
323
318
  mexQuery({ nonce, user_id: userId }, REGISTRATION_MEX_IDS.WWW_CREATE_ACCESS_TOKEN, 'xwa2_www_create_access_token')
324
319
 
325
- const wwwCreateUser = input => mexQuery({ input }, REGISTRATION_MEX_IDS.WWW_CREATE_USER, 'xwa2_www_create_user')
320
+ const wwwCreateUser = input =>
321
+ mexQuery({ input }, REGISTRATION_MEX_IDS.WWW_CREATE_USER, 'xwa2_www_create_user')
326
322
 
327
- const wwwDeleteUser = () => mexQuery({}, REGISTRATION_MEX_IDS.WWW_DELETE_USER, 'xwa2_www_delete_user')
323
+ const wwwDeleteUser = () =>
324
+ mexQuery({}, REGISTRATION_MEX_IDS.WWW_DELETE_USER, 'xwa2_www_delete_user')
328
325
 
329
326
  const wwwExchangeNonce = nonce =>
330
327
  mexQuery({ nonce }, REGISTRATION_MEX_IDS.WWW_EXCHANGE_NONCE, 'xwa2_www_exchange_nonce_for_access_token')
331
328
 
332
- const wwwGetCertificates = () => mexQuery({}, REGISTRATION_MEX_IDS.WWW_GET_CERTIFICATES, 'xwa2_www_get_certificates')
329
+ const wwwGetCertificates = () =>
330
+ mexQuery({}, REGISTRATION_MEX_IDS.WWW_GET_CERTIFICATES, 'xwa2_www_get_certificates')
333
331
 
334
- const wwwGetNonce = () => mexQuery({}, REGISTRATION_MEX_IDS.WWW_GET_NONCE, 'xwa2_ent_get_canonical_ent_device_nonce')
332
+ const wwwGetNonce = () =>
333
+ mexQuery({}, REGISTRATION_MEX_IDS.WWW_GET_NONCE, 'xwa2_www_get_nonce_for_companion_device')
335
334
 
336
335
  const wwwTradeNonces = nonces =>
337
336
  mexQuery({ nonces }, REGISTRATION_MEX_IDS.WWW_TRADE_NONCES, 'xwa2_www_trade_nonce_for_access_tokens')
338
337
 
339
338
  const wwwTriggerRecovery = phoneNumber =>
340
- mexQuery(
341
- { phone_number: phoneNumber },
342
- REGISTRATION_MEX_IDS.WWW_TRIGGER_RECOVERY,
343
- 'xwa2_www_trigger_account_recovery'
344
- )
339
+ mexQuery({ phone_number: phoneNumber }, REGISTRATION_MEX_IDS.WWW_TRIGGER_RECOVERY, 'xwa2_www_trigger_account_recovery')
345
340
 
346
341
  const wwwValidateCanonicalUser = token =>
347
342
  mexQuery({ token }, REGISTRATION_MEX_IDS.WWW_VALIDATE_CANONICAL_USER, 'xwa2_www_validate_canonical_user')
348
343
 
349
344
  return {
350
345
  ...sock,
351
-
346
+ // Password
352
347
  hasPassword,
353
348
  setPassword,
354
349
  checkPassword,
355
350
  deletePassword,
356
-
351
+ // Passkey account-level
357
352
  passkeyExists,
358
353
  passkeyListExists,
359
354
  passkeyRequestChallenge,
360
355
  passkeyVerifyChallenge,
361
356
  passkeyDelete,
362
-
357
+ // Passkey registration flow
363
358
  regPasskeyStart,
364
359
  regPasskeyFinish,
365
360
  regPasskeyEnable,
366
361
  regPasskeyDisable,
367
362
  regPasskeyClear,
368
363
  regPasskeyUpdateEncryptionStatus,
369
-
364
+ // Registration upsells
370
365
  getRegistrationUpsells,
371
366
  getDynamicRegistrationUpsells,
372
367
  registrationUpsellShown,
373
368
  registrationDynamicUpsellShown,
374
369
  regAccountTransferVerifyToken,
375
-
370
+ // Contacts
376
371
  contactsUpload,
377
372
  contactsBackup,
378
373
  contactsBackupQuery,
@@ -380,16 +375,16 @@ const makeRegistrationSocket = sock => {
380
375
  suggestedContactsV2,
381
376
  usyncQuery,
382
377
  userCountryCodeGet,
383
-
378
+ // Age
384
379
  ageCollection,
385
380
  getAgeExperience,
386
381
  setAgeExperience,
387
382
  getUnkuAgeInfo,
388
383
  submitAge,
389
-
384
+ // Imagine Me
390
385
  getImagineMeOnboarded,
391
386
  deleteImagineMeOnboarding,
392
-
387
+ // Misc account
393
388
  fetchUserNoticesById,
394
389
  removeAccountReachoutTimelock,
395
390
  tosSetResult,
@@ -410,14 +405,12 @@ const makeRegistrationSocket = sock => {
410
405
  getWaMeLink,
411
406
  fetchBotPkiCrl,
412
407
  teeChatParticipationToken,
413
-
408
+ // Linking
414
409
  generateLinkingBundle,
415
410
  getCacheableUnlinkedBundle,
416
411
  getUnlinkedBundle,
417
412
  getDsbInfo,
418
- wamoUserIdVersion,
419
- setWamoUserIdVersion,
420
-
413
+ // WWW
421
414
  wwwCreateAccessToken,
422
415
  wwwCreateUser,
423
416
  wwwDeleteUser,