@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.
- package/README.md +1 -1
- package/WAProto/WAProto.proto +75 -1256
- package/WAProto/index.d.ts +19729 -36122
- package/WAProto/index.js +132193 -178538
- package/engine-requirements.js +15 -7
- package/lib/Defaults/index.js +14 -22
- package/lib/Signal/Group/group_cipher.js +5 -5
- package/lib/Signal/Group/keyhelper.js +4 -4
- package/lib/Signal/Group/sender-chain-key.js +2 -2
- package/lib/Signal/Group/sender-key-distribution-message.js +1 -1
- package/lib/Signal/Group/sender-key-message.js +3 -3
- package/lib/Signal/Group/sender-key-record.js +1 -1
- package/lib/Signal/Group/sender-message-key.js +5 -5
- package/lib/Signal/libsignal.js +28 -39
- package/lib/Signal/lid-mapping.js +8 -28
- package/lib/Socket/aigroups.js +5 -5
- package/lib/Socket/business.js +11 -3
- package/lib/Socket/chats.js +319 -668
- package/lib/Socket/communities.js +89 -85
- package/lib/Socket/graphql.js +228 -435
- package/lib/Socket/groups.js +211 -132
- package/lib/Socket/index.js +7 -9
- package/lib/Socket/interactive-handler.js +60 -117
- package/lib/Socket/interop.js +175 -56
- package/lib/Socket/luxu.js +387 -0
- package/lib/Socket/managed-account.js +48 -79
- package/lib/Socket/messages-recv.js +340 -898
- package/lib/Socket/messages-send.js +160 -462
- package/lib/Socket/mex.js +53 -40
- package/lib/Socket/newsletter.js +295 -291
- package/lib/Socket/privacy.js +265 -77
- package/lib/Socket/registration.js +157 -164
- package/lib/Socket/socket.js +199 -181
- package/lib/Socket/text-router.js +83 -0
- package/lib/Socket/username.js +227 -144
- package/lib/Store/keyed-db.js +108 -0
- package/lib/Store/make-cache-manager-store.js +2 -2
- package/lib/Store/make-in-memory-store.js +141 -25
- package/lib/Types/Auth.js +3 -3
- package/lib/Types/Label.js +1 -1
- package/lib/Types/LabelAssociation.js +1 -1
- package/lib/Types/Mex.js +112 -0
- package/lib/Types/Newsletter.js +65 -96
- package/lib/Types/State.js +4 -4
- package/lib/Types/index.js +1 -1
- package/lib/Utils/auth-utils.js +57 -52
- package/lib/Utils/browser-utils.js +1 -1
- package/lib/Utils/business.js +6 -2
- package/lib/Utils/chat-utils.js +38 -102
- package/lib/Utils/command-loader.d.ts +31 -0
- package/lib/Utils/command-loader.js +100 -0
- package/lib/Utils/companion-reg-client-utils.js +42 -0
- package/lib/Utils/crypto.js +84 -54
- package/lib/Utils/curve25519-js.js +275 -0
- package/lib/Utils/decode-wa-message.js +83 -316
- package/lib/Utils/event-buffer.js +61 -37
- package/lib/Utils/generics.js +103 -157
- package/lib/Utils/group-history.js +12 -3
- package/lib/Utils/history.js +15 -15
- package/lib/Utils/index.js +5 -1
- package/lib/Utils/link-preview.js +8 -3
- package/lib/Utils/lt-hash.js +35 -2
- package/lib/Utils/make-mutex.js +1 -1
- package/lib/Utils/message-retry-manager.js +92 -27
- package/lib/Utils/messages-media.js +130 -159
- package/lib/Utils/messages.js +566 -144
- package/lib/Utils/meta-ai-msmsg.js +202 -62
- package/lib/Utils/native-bridge.js +82 -0
- package/lib/Utils/noise-handler.js +21 -19
- package/lib/Utils/offline-node-processor.js +8 -3
- package/lib/Utils/pre-key-manager.js +23 -13
- package/lib/Utils/process-message.js +106 -197
- package/lib/Utils/reporting-utils.js +2 -2
- package/lib/Utils/session-pool.d.ts +16 -0
- package/lib/Utils/session-pool.js +94 -0
- package/lib/Utils/signal.js +63 -28
- package/lib/Utils/stanza-ack.js +12 -39
- package/lib/Utils/sticker.d.ts +17 -0
- package/lib/Utils/sticker.js +145 -0
- package/lib/Utils/sync-action-utils.js +7 -4
- package/lib/Utils/tc-token-utils.js +25 -20
- package/lib/Utils/use-multi-file-auth-state.js +14 -30
- package/lib/Utils/validate-connection.js +19 -59
- package/lib/Utils/view-once-cache.d.ts +9 -0
- package/lib/Utils/view-once-cache.js +79 -0
- package/lib/WABinary/decode.js +16 -50
- package/lib/WABinary/encode.js +224 -54
- package/lib/WABinary/generic-utils.js +97 -7
- package/lib/WABinary/jid-utils.js +14 -27
- package/lib/WAM/encode.js +7 -7
- package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +1 -58
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +1 -7
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +5 -13
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +4 -1
- package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +7 -20
- package/lib/WAUSync/Protocols/USyncPictureProtocol.js +1 -1
- package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +2 -2
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +2 -7
- package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +1 -1
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +1 -2
- package/lib/WAUSync/Protocols/index.js +0 -1
- package/lib/WAUSync/USyncQuery.js +6 -77
- package/lib/WAUSync/USyncUser.js +8 -16
- package/lib/WAUSync/index.js +0 -1
- package/lib/antiban.js +854 -608
- package/lib/index.js +1 -1
- 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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
package/lib/Types/Label.js
CHANGED
package/lib/Types/Mex.js
ADDED
|
@@ -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 = {})))
|