@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
@@ -37,6 +37,44 @@ const waLabelAssociationKey = {
37
37
 
38
38
  const makeMessagesDictionary = () => Store_1.makeOrderedDictionary(waMessageID)
39
39
 
40
+ const ENCRYPTED_STORE_MARKER = 'xazbails-store-v1'
41
+
42
+ const deriveStoreKey = secret => {
43
+ const { createHash } = require('crypto')
44
+ return createHash('sha256').update(String(secret)).digest()
45
+ }
46
+
47
+ const encryptStoreJSON = (jsonStr, secret) => {
48
+ const { createCipheriv, randomBytes } = require('crypto')
49
+ const key = deriveStoreKey(secret)
50
+ const iv = randomBytes(12)
51
+ const cipher = createCipheriv('aes-256-gcm', key, iv)
52
+ const encrypted = Buffer.concat([cipher.update(jsonStr, 'utf-8'), cipher.final()])
53
+ const authTag = cipher.getAuthTag()
54
+ return JSON.stringify({
55
+ marker: ENCRYPTED_STORE_MARKER,
56
+ iv: iv.toString('base64'),
57
+ authTag: authTag.toString('base64'),
58
+ data: encrypted.toString('base64')
59
+ })
60
+ }
61
+
62
+ const decryptStoreJSON = (fileStr, secret) => {
63
+ const parsed = JSON.parse(fileStr)
64
+ if (parsed.marker !== ENCRYPTED_STORE_MARKER) {
65
+ // not an encrypted store file -- assume it's already plain JSON
66
+ return fileStr
67
+ }
68
+ const { createDecipheriv } = require('crypto')
69
+ const key = deriveStoreKey(secret)
70
+ const iv = Buffer.from(parsed.iv, 'base64')
71
+ const authTag = Buffer.from(parsed.authTag, 'base64')
72
+ const decipher = createDecipheriv('aes-256-gcm', key, iv)
73
+ decipher.setAuthTag(authTag)
74
+ const decrypted = Buffer.concat([decipher.update(Buffer.from(parsed.data, 'base64')), decipher.final()])
75
+ return decrypted.toString('utf-8')
76
+ }
77
+
40
78
  const makeInMemoryStore = config => {
41
79
  const socket = config.socket
42
80
  const chatKey = config.chatKey || waChatKey(true)
@@ -55,6 +93,19 @@ const makeInMemoryStore = config => {
55
93
  const state = { connection: 'close' }
56
94
  const labels = new object_repository_1.ObjectRepository()
57
95
  const labelAssociations = new KeyedDB(labelAssociationKey, labelAssociationKey.key)
96
+ const maxMessagesPerChat = config.maxMessagesPerChat
97
+ const trimMessagesIfNeeded = jid => {
98
+ if (!maxMessagesPerChat) return
99
+ const list = messages[jid]
100
+ if (!list || list.array.length <= maxMessagesPerChat) return
101
+ while (list.array.length > maxMessagesPerChat) {
102
+ let oldest = list.array[0]
103
+ for (const m of list.array) {
104
+ if ((m.messageTimestamp || 0) < (oldest.messageTimestamp || 0)) oldest = m
105
+ }
106
+ list.remove(oldest)
107
+ }
108
+ }
58
109
  const assertMessageList = jid => {
59
110
  if (!messages[jid]) {
60
111
  messages[jid] = makeMessagesDictionary()
@@ -74,7 +125,12 @@ const makeInMemoryStore = config => {
74
125
  labels.upsertById(label.id, label)
75
126
  }
76
127
  }
77
-
128
+ /**
129
+ * binds to a BaileysEventEmitter.
130
+ * It listens to all events and constructs a state that you can query accurate data from.
131
+ * Eg. can use the store to fetch chats, contacts, messages etc.
132
+ * @param ev typically the event emitter from the socket connection
133
+ */
78
134
  const bind = ev => {
79
135
  ev.on('connection.update', update => {
80
136
  Object.assign(state, update)
@@ -83,8 +139,8 @@ const makeInMemoryStore = config => {
83
139
  'messaging-history.set',
84
140
  ({ chats: newChats, contacts: newContacts, messages: newMessages, isLatest, syncType }) => {
85
141
  if (syncType === WAProto_1.proto.HistorySync.HistorySyncType.ON_DEMAND) {
86
-
87
- return
142
+ return // FOR NOW,
143
+ //TODO: HANDLE
88
144
  }
89
145
  if (isLatest) {
90
146
  chats.clear()
@@ -105,6 +161,7 @@ const makeInMemoryStore = config => {
105
161
  const jid = msg.key.remoteJid
106
162
  const list = assertMessageList(jid)
107
163
  list.upsert(msg, 'prepend')
164
+ trimMessagesIfNeeded(jid)
108
165
  }
109
166
  logger.debug({ messages: newMessages.length }, 'synced messages')
110
167
  }
@@ -127,7 +184,7 @@ const makeInMemoryStore = config => {
127
184
  ]
128
185
  })
129
186
  )
130
- contact = contacts[contactHashes.find(([, b]) => b === update.id?.[0]) || '']
187
+ contact = contacts[contactHashes.find(([, b]) => b === update.id?.[0]) || ''] // find contact by attrs.hash, when user is not saved as a contact
131
188
  }
132
189
  if (contact) {
133
190
  if (update.imgUrl === 'changed') {
@@ -162,7 +219,7 @@ const makeInMemoryStore = config => {
162
219
  if (label.deleted) {
163
220
  return labels.deleteById(label.id)
164
221
  }
165
-
222
+ // WhatsApp can store only up to 20 labels
166
223
  if (labels.count() < 20) {
167
224
  return labels.upsertById(label.id, label)
168
225
  }
@@ -199,6 +256,7 @@ const makeInMemoryStore = config => {
199
256
  const jid = WABinary_1.jidNormalizedUser(msg.key.remoteJid)
200
257
  const list = assertMessageList(jid)
201
258
  list.upsert(msg, 'append')
259
+ trimMessagesIfNeeded(jid)
202
260
  if (type === 'notify' && !chats.get(jid)) {
203
261
  ev.emit('chats.upsert', [
204
262
  {
@@ -364,7 +422,10 @@ const makeInMemoryStore = config => {
364
422
  contacts,
365
423
  messages,
366
424
  labels,
367
- labelAssociations
425
+ labelAssociations,
426
+ groupMetadata,
427
+ presences,
428
+ state
368
429
  })
369
430
  const fromJSON = json => {
370
431
  chats.upsert(...json.chats)
@@ -376,6 +437,16 @@ const makeInMemoryStore = config => {
376
437
  for (const msg of json.messages[jid]) {
377
438
  list.upsert(WAProto_1.proto.WebMessageInfo.fromObject(msg), 'append')
378
439
  }
440
+ trimMessagesIfNeeded(jid)
441
+ }
442
+ if (json.groupMetadata) {
443
+ Object.assign(groupMetadata, json.groupMetadata)
444
+ }
445
+ if (json.presences) {
446
+ Object.assign(presences, json.presences)
447
+ }
448
+ if (json.state) {
449
+ Object.assign(state, json.state)
379
450
  }
380
451
  }
381
452
  return {
@@ -388,7 +459,7 @@ const makeInMemoryStore = config => {
388
459
  labels,
389
460
  labelAssociations,
390
461
  bind,
391
-
462
+ /** loads messages from the store, if not found -- uses the legacy connection */
392
463
  loadMessages: async (jid, count, cursor) => {
393
464
  const list = assertMessageList(jid)
394
465
  const mode = !cursor || 'before' in cursor ? 'before' : 'after'
@@ -404,22 +475,35 @@ const makeInMemoryStore = config => {
404
475
  }
405
476
  const diff = count - messages.length
406
477
  if (diff < 0) {
407
- messages = messages.slice(-count)
478
+ messages = messages.slice(-count) // get the last X messages
408
479
  }
409
480
  } else {
410
481
  messages = []
411
482
  }
412
483
  return messages
413
484
  },
414
-
485
+ /**
486
+ * Get all available labels for profile
487
+ *
488
+ * Keep in mind that the list is formed from predefined tags and tags
489
+ * that were "caught" during their editing.
490
+ */
415
491
  getLabels: () => {
416
492
  return labels
417
493
  },
418
-
494
+ /**
495
+ * Get labels for chat
496
+ *
497
+ * @returns Label IDs
498
+ **/
419
499
  getChatLabels: chatId => {
420
500
  return labelAssociations.filter(la => la.chatId === chatId).all()
421
501
  },
422
-
502
+ /**
503
+ * Get labels for message
504
+ *
505
+ * @returns Label IDs
506
+ **/
423
507
  getMessageLabels: messageId => {
424
508
  const associations = labelAssociations.filter(la => la.messageId === messageId).all()
425
509
  return associations.map(({ labelId }) => labelId)
@@ -434,7 +518,7 @@ const makeInMemoryStore = config => {
434
518
  if (!contact) {
435
519
  return suki?.profilePictureUrl(jid)
436
520
  }
437
- if (contact.imgUrl === undefined) {
521
+ if (typeof contact.imgUrl === 'undefined') {
438
522
  contact.imgUrl = await suki?.profilePictureUrl(jid)
439
523
  }
440
524
  return contact.imgUrl
@@ -448,15 +532,15 @@ const makeInMemoryStore = config => {
448
532
  }
449
533
  return groupMetadata[jid]
450
534
  },
451
-
452
-
453
-
454
-
455
-
456
-
457
-
458
-
459
-
535
+ // fetchBroadcastListInfo: async(jid: string, sock: WASocket | undefined) => {
536
+ // if(!groupMetadata[jid]) {
537
+ // const metadata = await sock?.getBroadcastListInfo(jid)
538
+ // if(metadata) {
539
+ // groupMetadata[jid] = metadata
540
+ // }
541
+ // }
542
+ // return groupMetadata[jid]
543
+ // },
460
544
  fetchMessageReceipts: async ({ remoteJid, id }) => {
461
545
  const list = messages[remoteJid]
462
546
  const msg = list?.get(id)
@@ -465,19 +549,51 @@ const makeInMemoryStore = config => {
465
549
  toJSON,
466
550
  fromJSON,
467
551
  writeToFile: path => {
468
-
552
+ // require fs here so that in case "fs" is not available -- the app does not crash
469
553
  const { writeFileSync } = require('fs')
470
- writeFileSync(path, JSON.stringify(toJSON()))
554
+ const jsonStr = JSON.stringify(toJSON())
555
+ writeFileSync(path, config.encryptionKey ? encryptStoreJSON(jsonStr, config.encryptionKey) : jsonStr)
471
556
  },
472
557
  readFromFile: path => {
473
-
558
+ // require fs here so that in case "fs" is not available -- the app does not crash
474
559
  const { readFileSync, existsSync } = require('fs')
475
560
  if (existsSync(path)) {
476
561
  logger.debug({ path }, 'reading from file')
477
- const jsonStr = readFileSync(path, { encoding: 'utf-8' })
562
+ const fileStr = readFileSync(path, { encoding: 'utf-8' })
563
+ const jsonStr = config.encryptionKey ? decryptStoreJSON(fileStr, config.encryptionKey) : fileStr
478
564
  const json = JSON.parse(jsonStr)
479
565
  fromJSON(json)
480
566
  }
567
+ },
568
+ /**
569
+ * Periodically writes the store to `path` every `intervalMs` (default 30s),
570
+ * and does one final write when the bound socket closes (if `registerSocketEndHandler`
571
+ * is available on it). Returns a function that stops the auto-save.
572
+ */
573
+ startAutoSave: (path, intervalMs = 30000) => {
574
+ const timer = setInterval(() => {
575
+ try {
576
+ const { writeFileSync } = require('fs')
577
+ const jsonStr = JSON.stringify(toJSON())
578
+ writeFileSync(path, config.encryptionKey ? encryptStoreJSON(jsonStr, config.encryptionKey) : jsonStr)
579
+ } catch (error) {
580
+ logger.warn({ error, path }, 'failed to auto-save store')
581
+ }
582
+ }, intervalMs)
583
+ if (timer.unref) timer.unref()
584
+ if (socket && typeof socket.registerSocketEndHandler === 'function') {
585
+ socket.registerSocketEndHandler(async () => {
586
+ try {
587
+ const { writeFileSync } = require('fs')
588
+ const jsonStr = JSON.stringify(toJSON())
589
+ writeFileSync(path, config.encryptionKey ? encryptStoreJSON(jsonStr, config.encryptionKey) : jsonStr)
590
+ logger.debug({ path }, 'final store flush on socket end')
591
+ } catch (error) {
592
+ logger.warn({ error, path }, 'failed to flush store on socket end')
593
+ }
594
+ })
595
+ }
596
+ return () => clearInterval(timer)
481
597
  }
482
598
  }
483
599
  }
package/lib/Types/Auth.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
  Object.defineProperty(exports, '__esModule', { value: true })
3
3
 
4
-
4
+ // Factory functions for creating auth-related objects
5
5
  function createKeyPair(publicKey, privateKey) {
6
6
  return {
7
7
  public: publicKey,
@@ -18,7 +18,7 @@ function createSignedKeyPair(keyPair, signature, keyId, timestampS) {
18
18
  }
19
19
  }
20
20
 
21
-
21
+ // Export type definitions (for documentation purposes)
22
22
  exports.SignalDataTypeMap = {
23
23
  'pre-key': 'KeyPair',
24
24
  session: 'Uint8Array',
@@ -33,6 +33,6 @@ exports.SignalDataTypeMap = {
33
33
  exports.SignalDataSet = undefined
34
34
  exports.Awaitable = undefined
35
35
 
36
-
36
+ // Export the factory functions
37
37
  exports.createKeyPair = createKeyPair
38
38
  exports.createSignedKeyPair = createSignedKeyPair
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
  Object.defineProperty(exports, '__esModule', { value: true })
3
3
  exports.LabelColor = void 0
4
-
4
+ /** WhatsApp has 20 predefined colors */
5
5
  var LabelColor
6
6
  ;(function (LabelColor) {
7
7
  LabelColor[(LabelColor['Color1'] = 0)] = 'Color1'
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
  Object.defineProperty(exports, '__esModule', { value: true })
3
3
  exports.LabelAssociationType = void 0
4
-
4
+ /** Association type */
5
5
  var LabelAssociationType
6
6
  ;(function (LabelAssociationType) {
7
7
  LabelAssociationType['Chat'] = 'label_jid'
@@ -0,0 +1,112 @@
1
+ 'use strict'
2
+ Object.defineProperty(exports, '__esModule', { value: true })
3
+ exports.QueryIds = exports.XWAPaths = void 0
4
+ var XWAPaths
5
+ ;(function (XWAPaths) {
6
+ XWAPaths['xwa2_newsletter_create'] = 'xwa2_newsletter_create'
7
+ XWAPaths['xwa2_newsletter_subscribers'] = 'xwa2_newsletter_subscribers'
8
+ XWAPaths['xwa2_newsletter_view'] = 'xwa2_newsletter_view'
9
+ XWAPaths['xwa2_newsletter_metadata'] = 'xwa2_newsletter'
10
+ XWAPaths['xwa2_newsletter_admin_count'] = 'xwa2_newsletter_admin'
11
+ XWAPaths['xwa2_newsletter_mute_v2'] = 'xwa2_newsletter_mute_v2'
12
+ XWAPaths['xwa2_newsletter_unmute_v2'] = 'xwa2_newsletter_unmute_v2'
13
+ XWAPaths['xwa2_newsletter_follow'] = 'xwa2_newsletter_follow'
14
+ XWAPaths['xwa2_newsletter_unfollow'] = 'xwa2_newsletter_unfollow'
15
+ XWAPaths['xwa2_newsletter_join_v2'] = 'xwa2_newsletter_join_v2'
16
+ XWAPaths['xwa2_newsletter_leave_v2'] = 'xwa2_newsletter_leave_v2'
17
+ XWAPaths['xwa2_newsletter_change_owner'] = 'xwa2_newsletter_change_owner'
18
+ XWAPaths['xwa2_newsletter_demote'] = 'xwa2_newsletter_demote'
19
+ XWAPaths['xwa2_newsletter_delete_v2'] = 'xwa2_newsletter_delete_v2'
20
+ XWAPaths['xwa2_fetch_account_reachout_timelock'] = 'xwa2_fetch_account_reachout_timelock'
21
+ XWAPaths['xwa2_message_capping_info'] = 'xwa2_message_capping_info'
22
+ XWAPaths['xwa2_newsletter_subscribed'] = 'xwa2_newsletter_subscribed'
23
+ XWAPaths['xwa2_newsletter_update'] = 'xwa2_newsletter_update'
24
+ XWAPaths['xwa2_newsletter_admin'] = 'xwa2_newsletter_admin'
25
+ XWAPaths['xwa2_newsletter_admin_invite_create'] = 'xwa2_newsletter_admin_invite_create'
26
+ XWAPaths['xwa2_newsletter_admin_invite_revoke'] = 'xwa2_newsletter_admin_invite_revoke'
27
+ XWAPaths['xwa2_newsletter_admin_invite_accept'] = 'xwa2_newsletter_admin_invite_accept'
28
+ XWAPaths['xwa2_newsletter_admin_profile_update'] = 'xwa2_newsletter_admin_profile_update'
29
+ XWAPaths['xwa2_newsletter_admin_insights'] = 'xwa2_newsletter_admin_insights'
30
+ XWAPaths['xwa2_newsletter_following'] = 'xwa2_newsletter_following'
31
+ XWAPaths['xwa2_newsletter_create_verified'] = 'xwa2_newsletter_create_verified'
32
+ XWAPaths['xwa2_newsletter_enforcements'] = 'xwa2_newsletter_enforcements'
33
+ XWAPaths['xwa2_newsletter_user_reports'] = 'xwa2_newsletter_user_reports'
34
+ XWAPaths['xwa2_newsletter_create_report_appeal'] = 'xwa2_newsletter_create_report_appeal'
35
+ XWAPaths['xwa2_newsletter_link_preview_check'] = 'xwa2_newsletter_link_preview_check'
36
+ XWAPaths['xwa2_newsletter_update_verification'] = 'xwa2_newsletter_update_verification'
37
+ XWAPaths['xwa2_newsletter_label_paid_partnership'] = 'xwa2_newsletter_label_paid_partnership'
38
+ XWAPaths['xwa2_newsletter_log_exposures'] = 'xwa2_newsletter_log_exposures'
39
+ XWAPaths['xwa2_newsletter_update_user_setting'] = 'xwa2_newsletter_update_user_setting'
40
+ XWAPaths['xwa2_newsletter_ranking_features'] = 'xwa2_newsletter_ranking_features'
41
+ XWAPaths['xwa2_newsletter_block_user'] = 'xwa2_newsletter_block_user'
42
+ XWAPaths['xwa2_newsletters_directory_list'] = 'xwa2_newsletters_directory_list'
43
+ XWAPaths['xwa2_newsletters_directory_search'] = 'xwa2_newsletters_directory_search'
44
+ XWAPaths['xwa2_newsletters_directory_category_preview'] = 'xwa2_newsletters_directory_category_preview'
45
+ XWAPaths['xwa2_newsletters_search'] = 'xwa2_newsletters_search'
46
+ XWAPaths['xwa2_newsletters_recommended'] = 'xwa2_newsletters_recommended'
47
+ XWAPaths['xwa2_newsletters_similar'] = 'xwa2_newsletters_similar'
48
+ XWAPaths['xwa2_newsletters_poll_voter_list'] = 'xwa2_newsletters_poll_voter_list'
49
+ XWAPaths['xwa2_newsletters_reaction_sender_list'] = 'xwa2_newsletters_reaction_sender_list'
50
+ XWAPaths['xwa2_wamo_afs_age_collection'] = 'xwa2_wamo_afs_age_collection'
51
+ XWAPaths['xwa2_wamo_asset_collection'] = 'xwa2_wamo_asset_collection'
52
+ XWAPaths['xwa2_wamo_fetch_adhoc_notice_by_id'] = 'xwa2_wamo_fetch_adhoc_notice_by_id'
53
+ XWAPaths['xwa2_wamo_fetch_identity_token'] = 'xwa2_wamo_fetch_identity_token'
54
+ XWAPaths['xwa2_wamo_sub_get_compliance_info'] = 'xwa2_wamo_sub_get_compliance_info'
55
+ XWAPaths['xwa2_wamo_user_id_version'] = 'xwa2_wamo_user_id_version'
56
+ XWAPaths['xwa2_wamo_set_user_id_version'] = 'xwa2_wamo_set_user_id_version'
57
+ })((XWAPaths = exports.XWAPaths || (exports.XWAPaths = {})))
58
+ var QueryIds
59
+ ;(function (QueryIds) {
60
+ QueryIds['CREATE'] = '8823471724422422'
61
+ QueryIds['METADATA'] = '26099060629688646'
62
+ QueryIds['UPDATE_METADATA'] = '25976052865358570'
63
+ QueryIds['SUBSCRIBERS'] = '9783111038412085'
64
+ QueryIds['FOLLOW'] = '24404358912487870'
65
+ QueryIds['UNFOLLOW'] = '9767147403369991'
66
+ QueryIds['MUTE'] = '29766401636284406'
67
+ QueryIds['UNMUTE'] = '9864994326891137'
68
+ QueryIds['ADMIN_COUNT'] = '7130823597031706'
69
+ QueryIds['CHANGE_OWNER'] = '7341777602580933'
70
+ QueryIds['DEMOTE'] = '6551828931592903'
71
+ QueryIds['DELETE'] = '30062808666639665'
72
+ QueryIds['REACHOUT_TIMELOCK'] = '23983697327930364'
73
+ QueryIds['MESSAGE_CAPPING_INFO'] = '24503548349331633'
74
+ QueryIds['FETCH_SUBSCRIBE'] = '6388546374527196'
75
+ QueryIds['LEAVE'] = '9784043202933196'
76
+ QueryIds['ADMIN_INVITE'] = '7148599488585196'
77
+ QueryIds['ADMIN_INVITE_REVOKE'] = '6345824195482235'
78
+ QueryIds['ADMIN_INVITE_ACCEPT'] = '6345824195482236'
79
+ QueryIds['ADMIN_METADATA'] = '6895563180530100'
80
+ QueryIds['ADMIN_PROFILE_UPDATE'] = '6895563180530101'
81
+ QueryIds['INSIGHTS'] = '6243647912368353'
82
+ QueryIds['FOLLOWING_LIST'] = '6388546374527197'
83
+ QueryIds['CREATE_VERIFIED'] = '8823471724422423'
84
+ QueryIds['ENFORCEMENTS'] = '7130823597031707'
85
+ QueryIds['USER_REPORTS'] = '9783111038412086'
86
+ QueryIds['CREATE_REPORT_APPEAL'] = '6551828931592904'
87
+ QueryIds['LINK_PREVIEW_CHECK'] = '24404358912487871'
88
+ QueryIds['UPDATE_VERIFICATION'] = '25976052865358571'
89
+ QueryIds['LABEL_PAID_PARTNERSHIP'] = '7341777602580934'
90
+ QueryIds['LOG_EXPOSURES'] = '9864994326891138'
91
+ QueryIds['UPDATE_USER_SETTING'] = '29766401636284407'
92
+ QueryIds['RANKING_FEATURES'] = '7130823597031708'
93
+ QueryIds['BLOCK_USER'] = '6345824195482237'
94
+ QueryIds['DIRECTORY_LIST'] = '6388546374527198'
95
+ QueryIds['DIRECTORY_SEARCH'] = '6388546374527199'
96
+ QueryIds['DIRECTORY_CATEGORY_PREVIEW'] = '6388546374527200'
97
+ QueryIds['SEARCH'] = '26099060629688647'
98
+ QueryIds['RECOMMENDED'] = '26099060629688648'
99
+ QueryIds['SIMILAR'] = '26099060629688649'
100
+ QueryIds['POLL_VOTER_LIST'] = '9783111038412087'
101
+ QueryIds['REACTION_SENDERS_LIST'] = '9783111038412088'
102
+ QueryIds['WAMO_ENABLE_SUB'] = '7148599488585197'
103
+ QueryIds['WAMO_DISABLE_SUB'] = '7148599488585198'
104
+ QueryIds['WAMO_CHANGE_SUB'] = '7148599488585199'
105
+ QueryIds['WAMO_AFS_AGE_COLLECTION'] = '6895563180530102'
106
+ QueryIds['WAMO_ASSET_COLLECTION'] = '6895563180530103'
107
+ QueryIds['WAMO_FETCH_ADHOC_NOTICE'] = '6895563180530104'
108
+ QueryIds['WAMO_FETCH_IDENTITY_TOKEN'] = '6895563180530105'
109
+ QueryIds['WAMO_SUB_COMPLIANCE_INFO'] = '6895563180530106'
110
+ QueryIds['WAMO_USER_ID_VERSION'] = '6895563180530107'
111
+ QueryIds['WAMO_SET_USER_ID_VERSION'] = '6895563180530108'
112
+ })((QueryIds = exports.QueryIds || (exports.QueryIds = {})))