@badzz88/baileys 8.4.7 → 8.5.0
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/LICENSE +21 -0
- package/README.md +1055 -337
- package/WAProto/index.js +5 -5
- package/lib/Defaults/index.js +187 -127
- package/lib/Defaults/phonenumber-mcc.json +223 -0
- package/lib/Signal/Group/ciphertext-message.js +14 -11
- package/lib/Signal/Group/group-session-builder.js +91 -29
- package/lib/Signal/Group/group_cipher.js +88 -81
- package/lib/Signal/Group/index.js +136 -12
- package/lib/Signal/Group/keyhelper.js +70 -15
- package/lib/Signal/Group/sender-chain-key.js +31 -25
- package/lib/Signal/Group/sender-key-distribution-message.js +65 -62
- package/lib/Signal/Group/sender-key-message.js +68 -65
- package/lib/Signal/Group/sender-key-name.js +43 -41
- package/lib/Signal/Group/sender-key-record.js +43 -40
- package/lib/Signal/Group/sender-key-state.js +96 -83
- package/lib/Signal/Group/sender-message-key.js +29 -25
- package/lib/Signal/libsignal.js +483 -424
- package/lib/Signal/lid-mapping.js +261 -276
- package/lib/Socket/Client/index.js +30 -3
- package/lib/Socket/Client/types.js +12 -10
- package/lib/Socket/Client/websocket.js +61 -53
- package/lib/Socket/aigroups.js +240 -0
- package/lib/Socket/business.js +422 -379
- package/lib/Socket/chats.js +1816 -1193
- package/lib/Socket/communities.js +549 -431
- package/lib/Socket/graphql.js +656 -0
- package/lib/Socket/groups.js +764 -374
- package/lib/Socket/index.js +38 -11
- package/lib/Socket/interactive-handler.js +522 -0
- package/lib/Socket/interop.js +549 -0
- package/lib/Socket/luxu.js +6 -5
- package/lib/Socket/managed-account.js +183 -0
- package/lib/Socket/messages-recv.js +2439 -1915
- package/lib/Socket/messages-send.js +1642 -1242
- package/lib/Socket/mex.js +59 -40
- package/lib/Socket/newsletter.js +812 -249
- package/lib/Socket/privacy.js +449 -0
- package/lib/Socket/registration.js +427 -0
- package/lib/Socket/socket.js +1077 -965
- package/lib/Socket/text-router.js +83 -0
- package/lib/Socket/username.js +237 -140
- package/lib/Store/index.js +36 -10
- package/lib/Store/make-cache-manager-store.js +85 -80
- package/lib/Store/make-in-memory-store.js +591 -185
- package/lib/Store/make-ordered-dictionary.js +78 -72
- package/lib/Store/object-repository.js +25 -28
- package/lib/Types/Auth.js +38 -2
- package/lib/Types/Bussines.js +2 -2
- package/lib/Types/Call.js +2 -2
- package/lib/Types/Chat.js +4 -8
- package/lib/Types/Contact.js +2 -2
- package/lib/Types/Events.js +2 -2
- package/lib/Types/GroupMetadata.js +2 -2
- package/lib/Types/Label.js +26 -24
- package/lib/Types/LabelAssociation.js +8 -6
- package/lib/Types/Message.js +95 -11
- package/lib/Types/Mex.js +112 -37
- package/lib/Types/Newsletter.js +121 -0
- package/lib/Types/Product.js +2 -2
- package/lib/Types/Signal.js +2 -2
- package/lib/Types/Socket.js +2 -3
- package/lib/Types/State.js +70 -56
- package/lib/Types/USync.js +2 -2
- package/lib/Types/index.js +55 -26
- package/lib/Utils/auth-utils.js +292 -288
- package/lib/Utils/browser-utils.js +113 -48
- package/lib/Utils/business.js +240 -224
- package/lib/Utils/chat-utils.js +1205 -869
- 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 +41 -34
- package/lib/Utils/consumer-application.js +107 -0
- package/lib/Utils/crypto.js +144 -107
- package/lib/Utils/curve25519-js.js +275 -0
- package/lib/Utils/decode-wa-message.js +518 -308
- package/lib/Utils/event-buffer.js +596 -611
- package/lib/Utils/generics.js +514 -354
- package/lib/Utils/group-history.js +60 -0
- package/lib/Utils/history.js +244 -134
- package/lib/Utils/identity-change-handler.js +51 -49
- package/lib/Utils/index.js +57 -23
- package/lib/Utils/jid-display-normalization.js +218 -0
- package/lib/Utils/link-preview.js +135 -77
- package/lib/Utils/logger.js +9 -3
- package/lib/Utils/lt-hash.js +37 -6
- package/lib/Utils/make-mutex.js +36 -33
- package/lib/Utils/message-composer.js +439 -233
- package/lib/Utils/message-retry-manager.js +265 -260
- package/lib/Utils/messages-media.js +855 -747
- package/lib/Utils/messages.js +2528 -884
- package/lib/Utils/meta-ai-msmsg.js +262 -0
- package/lib/Utils/native-bridge.js +82 -0
- package/lib/Utils/noise-handler.js +195 -200
- package/lib/Utils/offline-node-processor.js +35 -33
- package/lib/Utils/pre-key-manager.js +103 -102
- package/lib/Utils/process-message.js +978 -560
- package/lib/Utils/reporting-utils.js +257 -253
- package/lib/Utils/session-pool.d.ts +16 -0
- package/lib/Utils/session-pool.js +94 -0
- package/lib/Utils/signal.js +218 -195
- package/lib/Utils/stanza-ack.js +31 -29
- package/lib/Utils/sticker.d.ts +17 -0
- package/lib/Utils/sticker.js +145 -0
- package/lib/Utils/sync-action-utils.js +50 -45
- package/lib/Utils/tc-token-utils.js +137 -139
- package/lib/Utils/use-multi-file-auth-state.js +109 -109
- package/lib/Utils/validate-connection.js +218 -202
- package/lib/Utils/view-once-cache.d.ts +9 -0
- package/lib/Utils/view-once-cache.js +79 -0
- package/lib/Utils/voip-rekey.js +22 -0
- package/lib/WABinary/constants.js +1302 -1299
- package/lib/WABinary/decode.js +343 -262
- package/lib/WABinary/encode.js +12 -4
- package/lib/WABinary/generic-utils.js +223 -187
- package/lib/WABinary/index.js +33 -6
- package/lib/WABinary/jid-utils.js +351 -88
- package/lib/WABinary/types.js +2 -2
- package/lib/WAM/BinaryInfo.js +12 -9
- package/lib/WAM/constants.js +39486 -22853
- package/lib/WAM/encode.js +132 -140
- package/lib/WAM/index.js +31 -4
- package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +55 -0
- package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +53 -51
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +56 -53
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +29 -26
- package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +59 -0
- package/lib/WAUSync/Protocols/USyncLIDProtocol.js +31 -0
- package/lib/WAUSync/Protocols/USyncPictureProtocol.js +32 -0
- package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +29 -0
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +38 -37
- package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +38 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +26 -24
- package/lib/WAUSync/Protocols/index.js +39 -6
- package/lib/WAUSync/USyncQuery.js +132 -97
- package/lib/WAUSync/USyncUser.js +49 -30
- package/lib/WAUSync/index.js +31 -4
- package/lib/antiban.js +4637 -0
- package/lib/index.js +48 -15
- package/package.json +55 -92
- package/lib/WAUSync/Protocols/USyncNewsletterProtocol.js +0 -263
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +0 -51
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +0 -29
|
@@ -1,27 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
1
|
+
'use strict'
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true })
|
|
3
|
+
exports.USyncDisappearingModeProtocol = void 0
|
|
4
|
+
const WABinary_1 = require('../../WABinary')
|
|
5
|
+
class USyncDisappearingModeProtocol {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.name = 'disappearing_mode'
|
|
8
|
+
}
|
|
9
|
+
getQueryElement() {
|
|
10
|
+
return {
|
|
11
|
+
tag: 'disappearing_mode',
|
|
12
|
+
attrs: {}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
getUserElement() {
|
|
16
|
+
return null
|
|
17
|
+
}
|
|
18
|
+
parser(node) {
|
|
19
|
+
if (node.tag === 'disappearing_mode') {
|
|
20
|
+
;(0, WABinary_1.assertNodeErrorFree)(node)
|
|
21
|
+
const duration = +node?.attrs.duration
|
|
22
|
+
const setAt = new Date(+(node?.attrs.t || 0) * 1000)
|
|
23
|
+
return {
|
|
24
|
+
duration,
|
|
25
|
+
setAt
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
26
29
|
}
|
|
27
|
-
|
|
30
|
+
exports.USyncDisappearingModeProtocol = USyncDisappearingModeProtocol
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true })
|
|
3
|
+
exports.USyncFeatureProtocol = exports.USYNC_FEATURES = void 0
|
|
4
|
+
const WABinary_1 = require('../../WABinary')
|
|
5
|
+
// Device feature flags that can be queried, ported from WhatsApp Web's
|
|
6
|
+
// WAWebUsyncFeature module.
|
|
7
|
+
exports.USYNC_FEATURES = [
|
|
8
|
+
'document',
|
|
9
|
+
'encrypt',
|
|
10
|
+
'encrypt_blist',
|
|
11
|
+
'encrypt_contact',
|
|
12
|
+
'encrypt_group_gen2',
|
|
13
|
+
'encrypt_image',
|
|
14
|
+
'encrypt_location',
|
|
15
|
+
'encrypt_url',
|
|
16
|
+
'encrypt_v2',
|
|
17
|
+
'voip',
|
|
18
|
+
'multi_agent'
|
|
19
|
+
]
|
|
20
|
+
class USyncFeatureProtocol {
|
|
21
|
+
/**
|
|
22
|
+
* @param {string[]} [features] feature names to query (defaults to all known)
|
|
23
|
+
*/
|
|
24
|
+
constructor(features) {
|
|
25
|
+
this.name = 'feature'
|
|
26
|
+
this.features = features && features.length ? features : exports.USYNC_FEATURES
|
|
27
|
+
}
|
|
28
|
+
getQueryElement() {
|
|
29
|
+
return {
|
|
30
|
+
tag: 'feature',
|
|
31
|
+
attrs: {},
|
|
32
|
+
content: this.features.map(feature => ({ tag: feature, attrs: {} }))
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
getUserElement() {
|
|
36
|
+
return null
|
|
37
|
+
}
|
|
38
|
+
parser(node) {
|
|
39
|
+
if (node.tag !== 'feature') {
|
|
40
|
+
return null
|
|
41
|
+
}
|
|
42
|
+
const errorNode = (0, WABinary_1.getBinaryNodeChild)(node, 'error')
|
|
43
|
+
if (errorNode) {
|
|
44
|
+
return {
|
|
45
|
+
errorCode: errorNode.attrs?.code ? +errorNode.attrs.code : undefined,
|
|
46
|
+
errorText: errorNode.attrs?.text
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const features = {}
|
|
50
|
+
const children = Array.isArray(node.content) ? node.content : []
|
|
51
|
+
for (const child of children) {
|
|
52
|
+
if (child?.attrs && child.attrs.value !== undefined) {
|
|
53
|
+
features[child.tag] = child.attrs.value
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return features
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.USyncFeatureProtocol = USyncFeatureProtocol
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true })
|
|
3
|
+
exports.USyncLIDProtocol = void 0
|
|
4
|
+
class USyncLIDProtocol {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'lid'
|
|
7
|
+
}
|
|
8
|
+
getQueryElement() {
|
|
9
|
+
return {
|
|
10
|
+
tag: 'lid',
|
|
11
|
+
attrs: {}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
getUserElement(user) {
|
|
15
|
+
if (user.lid) {
|
|
16
|
+
return {
|
|
17
|
+
tag: 'lid',
|
|
18
|
+
attrs: { jid: user.lid }
|
|
19
|
+
}
|
|
20
|
+
} else {
|
|
21
|
+
return null
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
parser(node) {
|
|
25
|
+
if (node.tag === 'lid') {
|
|
26
|
+
return node.attrs.val
|
|
27
|
+
}
|
|
28
|
+
return null
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.USyncLIDProtocol = USyncLIDProtocol
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true })
|
|
3
|
+
exports.USyncPictureProtocol = void 0
|
|
4
|
+
const WABinary_1 = require('../../WABinary')
|
|
5
|
+
class USyncPictureProtocol {
|
|
6
|
+
constructor(type = 'image') {
|
|
7
|
+
this.name = 'picture'
|
|
8
|
+
// "image" for full resolution, "preview" for thumbnail
|
|
9
|
+
this.type = type
|
|
10
|
+
}
|
|
11
|
+
getQueryElement() {
|
|
12
|
+
return {
|
|
13
|
+
tag: 'picture',
|
|
14
|
+
attrs: { type: this.type }
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
getUserElement(user) {
|
|
18
|
+
const attrs = {}
|
|
19
|
+
if (user.pictureId != null) attrs.id = String(user.pictureId)
|
|
20
|
+
return Object.keys(attrs).length > 0 ? { tag: 'picture', attrs } : null
|
|
21
|
+
}
|
|
22
|
+
parser(node) {
|
|
23
|
+
if (node.tag !== 'picture') return null
|
|
24
|
+
;(0, WABinary_1.assertNodeErrorFree)(node)
|
|
25
|
+
const id = node.attrs?.id ?? null
|
|
26
|
+
const directPath = node.attrs?.direct_path ?? null
|
|
27
|
+
const hash = node.attrs?.hash ?? null
|
|
28
|
+
if (!id && !directPath) return null
|
|
29
|
+
return { id, directPath, hash }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.USyncPictureProtocol = USyncPictureProtocol
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true })
|
|
3
|
+
exports.USyncSidelistProtocol = void 0
|
|
4
|
+
const WABinary_1 = require('../../WABinary')
|
|
5
|
+
class USyncSidelistProtocol {
|
|
6
|
+
constructor(useLidAddressing = true) {
|
|
7
|
+
this.name = 'sidelist'
|
|
8
|
+
// When true, sends addressing_mode="lid" — required for interop/LID-mode contacts
|
|
9
|
+
this.useLidAddressing = useLidAddressing
|
|
10
|
+
}
|
|
11
|
+
getQueryElement() {
|
|
12
|
+
const attrs = {}
|
|
13
|
+
if (this.useLidAddressing) attrs.addressing_mode = 'lid'
|
|
14
|
+
return { tag: 'sidelist', attrs }
|
|
15
|
+
}
|
|
16
|
+
getUserElement(user) {
|
|
17
|
+
if (user.sidelistDelete) {
|
|
18
|
+
return { tag: 'sidelist', attrs: { type: 'delete' } }
|
|
19
|
+
}
|
|
20
|
+
return null
|
|
21
|
+
}
|
|
22
|
+
parser(node) {
|
|
23
|
+
if (node.tag !== 'sidelist' && node.tag !== 'side_list') return null
|
|
24
|
+
;(0, WABinary_1.assertNodeErrorFree)(node)
|
|
25
|
+
// Returns minimal parsed data; the full side_list is parsed in USyncQuery
|
|
26
|
+
return { type: node.attrs?.type ?? null }
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.USyncSidelistProtocol = USyncSidelistProtocol
|
|
@@ -1,38 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
1
|
+
'use strict'
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true })
|
|
3
|
+
exports.USyncStatusProtocol = void 0
|
|
4
|
+
const WABinary_1 = require('../../WABinary')
|
|
5
|
+
class USyncStatusProtocol {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.name = 'status'
|
|
8
|
+
}
|
|
9
|
+
getQueryElement() {
|
|
10
|
+
return {
|
|
11
|
+
tag: 'status',
|
|
12
|
+
attrs: {}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
getUserElement() {
|
|
16
|
+
return null
|
|
17
|
+
}
|
|
18
|
+
parser(node) {
|
|
19
|
+
if (node.tag === 'status') {
|
|
20
|
+
;(0, WABinary_1.assertNodeErrorFree)(node)
|
|
21
|
+
let status = node?.content?.toString() ?? null
|
|
22
|
+
const setAt = new Date(+(node?.attrs.t || 0) * 1000)
|
|
23
|
+
if (!status) {
|
|
24
|
+
if (node.attrs?.code && +node.attrs.code === 401) {
|
|
25
|
+
status = ''
|
|
26
|
+
} else {
|
|
27
|
+
status = null
|
|
28
|
+
}
|
|
29
|
+
} else if (typeof status === 'string' && status.length === 0) {
|
|
30
|
+
status = null
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
status,
|
|
34
|
+
setAt
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
37
38
|
}
|
|
38
|
-
|
|
39
|
+
exports.USyncStatusProtocol = USyncStatusProtocol
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true })
|
|
3
|
+
exports.USyncTextStatusProtocol = void 0
|
|
4
|
+
const WABinary_1 = require('../../WABinary')
|
|
5
|
+
class USyncTextStatusProtocol {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.name = 'text_status'
|
|
8
|
+
}
|
|
9
|
+
getQueryElement() {
|
|
10
|
+
return {
|
|
11
|
+
tag: 'text_status',
|
|
12
|
+
attrs: {}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
getUserElement() {
|
|
16
|
+
return null
|
|
17
|
+
}
|
|
18
|
+
parser(node) {
|
|
19
|
+
if (node.tag !== 'text_status') return null
|
|
20
|
+
;(0, WABinary_1.assertNodeErrorFree)(node)
|
|
21
|
+
const lastUpdateTimeSec = node.attrs?.last_update_time ? +node.attrs.last_update_time : 0
|
|
22
|
+
const ephemeralDurationSec = node.attrs?.ephemeral_duration_sec ? +node.attrs.ephemeral_duration_sec : 0
|
|
23
|
+
const text = node.attrs?.text ?? null
|
|
24
|
+
const emojiNode = (0, WABinary_1.getBinaryNodeChild)(node, 'emoji')
|
|
25
|
+
const emoji = emojiNode?.attrs?.content ?? null
|
|
26
|
+
// expiry is lastUpdateTime + ephemeralDuration (both in ms); 0 means no expiry
|
|
27
|
+
const expiresAt = ephemeralDurationSec > 0
|
|
28
|
+
? new Date((lastUpdateTimeSec + ephemeralDurationSec) * 1000)
|
|
29
|
+
: null
|
|
30
|
+
return {
|
|
31
|
+
text,
|
|
32
|
+
emoji,
|
|
33
|
+
setAt: new Date(lastUpdateTimeSec * 1000),
|
|
34
|
+
expiresAt
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.USyncTextStatusProtocol = USyncTextStatusProtocol
|
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
'use strict'
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true })
|
|
3
|
+
exports.USyncUsernameProtocol = void 0
|
|
4
|
+
const WABinary_1 = require('../../WABinary')
|
|
5
|
+
class USyncUsernameProtocol {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.name = 'username'
|
|
8
|
+
}
|
|
9
|
+
getQueryElement() {
|
|
10
|
+
return {
|
|
11
|
+
tag: 'username',
|
|
12
|
+
attrs: {}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
getUserElement(user) {
|
|
16
|
+
void user
|
|
17
|
+
return null
|
|
18
|
+
}
|
|
19
|
+
parser(node) {
|
|
20
|
+
if (node.tag === 'username') {
|
|
21
|
+
;(0, WABinary_1.assertNodeErrorFree)(node)
|
|
22
|
+
return typeof node.content === 'string' ? node.content : null
|
|
23
|
+
}
|
|
24
|
+
return null
|
|
25
|
+
}
|
|
24
26
|
}
|
|
25
|
-
|
|
27
|
+
exports.USyncUsernameProtocol = USyncUsernameProtocol
|
|
@@ -1,6 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
'use strict'
|
|
2
|
+
var __createBinding =
|
|
3
|
+
(this && this.__createBinding) ||
|
|
4
|
+
(Object.create
|
|
5
|
+
? function (o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k)
|
|
8
|
+
if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () {
|
|
12
|
+
return m[k]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc)
|
|
17
|
+
}
|
|
18
|
+
: function (o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k
|
|
20
|
+
o[k2] = m[k]
|
|
21
|
+
})
|
|
22
|
+
var __exportStar =
|
|
23
|
+
(this && this.__exportStar) ||
|
|
24
|
+
function (m, exports) {
|
|
25
|
+
for (var p in m)
|
|
26
|
+
if (p !== 'default' && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p)
|
|
27
|
+
}
|
|
28
|
+
Object.defineProperty(exports, '__esModule', { value: true })
|
|
29
|
+
__exportStar(require('./USyncDeviceProtocol'), exports)
|
|
30
|
+
__exportStar(require('./USyncContactProtocol'), exports)
|
|
31
|
+
__exportStar(require('./USyncStatusProtocol'), exports)
|
|
32
|
+
__exportStar(require('./USyncDisappearingModeProtocol'), exports)
|
|
33
|
+
__exportStar(require('./USyncUsernameProtocol'), exports)
|
|
34
|
+
__exportStar(require('./USyncBotProfileProtocol'), exports)
|
|
35
|
+
__exportStar(require('./USyncBusinessProtocol'), exports)
|
|
36
|
+
__exportStar(require('./USyncPictureProtocol'), exports)
|
|
37
|
+
__exportStar(require('./USyncTextStatusProtocol'), exports)
|
|
38
|
+
__exportStar(require('./USyncSidelistProtocol'), exports)
|
|
39
|
+
__exportStar(require('./USyncFeatureProtocol'), exports)
|
|
@@ -1,98 +1,133 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
1
|
+
'use strict'
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true })
|
|
3
|
+
exports.USyncQuery = void 0
|
|
4
|
+
const WABinary_1 = require('../WABinary')
|
|
5
|
+
const USyncBotProfileProtocol_1 = require('./Protocols/USyncBotProfileProtocol')
|
|
6
|
+
const USyncLIDProtocol_1 = require('./Protocols/USyncLIDProtocol')
|
|
7
|
+
const USyncBusinessProtocol_1 = require('./Protocols/USyncBusinessProtocol')
|
|
8
|
+
const USyncPictureProtocol_1 = require('./Protocols/USyncPictureProtocol')
|
|
9
|
+
const USyncTextStatusProtocol_1 = require('./Protocols/USyncTextStatusProtocol')
|
|
10
|
+
const USyncSidelistProtocol_1 = require('./Protocols/USyncSidelistProtocol')
|
|
11
|
+
const USyncFeatureProtocol_1 = require('./Protocols/USyncFeatureProtocol')
|
|
12
|
+
const Protocols_1 = require('./Protocols')
|
|
13
|
+
class USyncQuery {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.protocols = []
|
|
16
|
+
this.users = []
|
|
17
|
+
this.context = 'interactive'
|
|
18
|
+
this.mode = 'query'
|
|
19
|
+
}
|
|
20
|
+
withMode(mode) {
|
|
21
|
+
this.mode = mode
|
|
22
|
+
return this
|
|
23
|
+
}
|
|
24
|
+
withContext(context) {
|
|
25
|
+
this.context = context
|
|
26
|
+
return this
|
|
27
|
+
}
|
|
28
|
+
withUser(user) {
|
|
29
|
+
this.users.push(user)
|
|
30
|
+
return this
|
|
31
|
+
}
|
|
32
|
+
parseUSyncQueryResult(result) {
|
|
33
|
+
if (!result || result.attrs.type !== 'result') {
|
|
34
|
+
return
|
|
35
|
+
}
|
|
36
|
+
const protocolMap = Object.fromEntries(
|
|
37
|
+
this.protocols.map(protocol => {
|
|
38
|
+
return [protocol.name, protocol.parser]
|
|
39
|
+
})
|
|
40
|
+
)
|
|
41
|
+
const queryResult = {
|
|
42
|
+
// TODO: implement errors etc.
|
|
43
|
+
list: [],
|
|
44
|
+
sideList: []
|
|
45
|
+
}
|
|
46
|
+
const usyncNode = (0, WABinary_1.getBinaryNodeChild)(result, 'usync')
|
|
47
|
+
//TODO: implement error backoff, refresh etc.
|
|
48
|
+
//TODO: see if there are any errors in the result node
|
|
49
|
+
//const resultNode = getBinaryNodeChild(usyncNode, 'result')
|
|
50
|
+
const parseUserNodes = nodes => {
|
|
51
|
+
return nodes.reduce((acc, node) => {
|
|
52
|
+
const id = node?.attrs.jid
|
|
53
|
+
if (id) {
|
|
54
|
+
const data = Array.isArray(node?.content)
|
|
55
|
+
? Object.fromEntries(
|
|
56
|
+
node.content
|
|
57
|
+
.map(content => {
|
|
58
|
+
const protocol = content.tag
|
|
59
|
+
const parser = protocolMap[protocol]
|
|
60
|
+
if (parser) {
|
|
61
|
+
return [protocol, parser(content)]
|
|
62
|
+
} else {
|
|
63
|
+
return [protocol, null]
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
.filter(([, b]) => b !== null)
|
|
67
|
+
)
|
|
68
|
+
: {}
|
|
69
|
+
acc.push({ ...data, id })
|
|
70
|
+
}
|
|
71
|
+
return acc
|
|
72
|
+
}, [])
|
|
73
|
+
}
|
|
74
|
+
const listNode = usyncNode ? (0, WABinary_1.getBinaryNodeChild)(usyncNode, 'list') : undefined
|
|
75
|
+
if (listNode?.content && Array.isArray(listNode.content)) {
|
|
76
|
+
queryResult.list = parseUserNodes(listNode.content)
|
|
77
|
+
}
|
|
78
|
+
const sideListNode = usyncNode ? (0, WABinary_1.getBinaryNodeChild)(usyncNode, 'side_list') : undefined
|
|
79
|
+
if (sideListNode?.content && Array.isArray(sideListNode.content)) {
|
|
80
|
+
queryResult.sideList = parseUserNodes(sideListNode.content)
|
|
81
|
+
}
|
|
82
|
+
return queryResult
|
|
83
|
+
}
|
|
84
|
+
withDeviceProtocol() {
|
|
85
|
+
this.protocols.push(new Protocols_1.USyncDeviceProtocol())
|
|
86
|
+
return this
|
|
87
|
+
}
|
|
88
|
+
withContactProtocol() {
|
|
89
|
+
this.protocols.push(new Protocols_1.USyncContactProtocol())
|
|
90
|
+
return this
|
|
91
|
+
}
|
|
92
|
+
withStatusProtocol() {
|
|
93
|
+
this.protocols.push(new Protocols_1.USyncStatusProtocol())
|
|
94
|
+
return this
|
|
95
|
+
}
|
|
96
|
+
withDisappearingModeProtocol() {
|
|
97
|
+
this.protocols.push(new Protocols_1.USyncDisappearingModeProtocol())
|
|
98
|
+
return this
|
|
99
|
+
}
|
|
100
|
+
withBotProfileProtocol() {
|
|
101
|
+
this.protocols.push(new USyncBotProfileProtocol_1.USyncBotProfileProtocol())
|
|
102
|
+
return this
|
|
103
|
+
}
|
|
104
|
+
withLIDProtocol() {
|
|
105
|
+
this.protocols.push(new USyncLIDProtocol_1.USyncLIDProtocol())
|
|
106
|
+
return this
|
|
107
|
+
}
|
|
108
|
+
withUsernameProtocol() {
|
|
109
|
+
this.protocols.push(new Protocols_1.USyncUsernameProtocol())
|
|
110
|
+
return this
|
|
111
|
+
}
|
|
112
|
+
withBusinessProtocol(profileVersion) {
|
|
113
|
+
this.protocols.push(new USyncBusinessProtocol_1.USyncBusinessProtocol(profileVersion))
|
|
114
|
+
return this
|
|
115
|
+
}
|
|
116
|
+
withPictureProtocol(type) {
|
|
117
|
+
this.protocols.push(new USyncPictureProtocol_1.USyncPictureProtocol(type))
|
|
118
|
+
return this
|
|
119
|
+
}
|
|
120
|
+
withTextStatusProtocol() {
|
|
121
|
+
this.protocols.push(new USyncTextStatusProtocol_1.USyncTextStatusProtocol())
|
|
122
|
+
return this
|
|
123
|
+
}
|
|
124
|
+
withSidelistProtocol(useLidAddressing) {
|
|
125
|
+
this.protocols.push(new USyncSidelistProtocol_1.USyncSidelistProtocol(useLidAddressing))
|
|
126
|
+
return this
|
|
127
|
+
}
|
|
128
|
+
withFeatureProtocol(features) {
|
|
129
|
+
this.protocols.push(new USyncFeatureProtocol_1.USyncFeatureProtocol(features))
|
|
130
|
+
return this
|
|
131
|
+
}
|
|
97
132
|
}
|
|
98
|
-
|
|
133
|
+
exports.USyncQuery = USyncQuery
|