@alannxd/baileys 6.1.4 → 6.1.6

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 (50) hide show
  1. package/LICENSE +4 -1
  2. package/README.md +202 -277
  3. package/lib/Defaults/index.js +1 -1
  4. package/lib/Socket/graphql.js +716 -0
  5. package/lib/Socket/index.js +7 -1
  6. package/lib/Socket/interop.js +463 -0
  7. package/lib/Socket/messages-send.js +7 -6
  8. package/lib/Socket/mex.js +51 -39
  9. package/lib/Socket/newsletter.js +725 -258
  10. package/lib/Socket/privacy.js +318 -0
  11. package/lib/Socket/socket.js +143 -17
  12. package/lib/Socket/username.js +225 -136
  13. package/lib/Store/make-in-memory-store.js +47 -1
  14. package/lib/Types/Mex.js +76 -2
  15. package/lib/Utils/messages-media.js +82 -0
  16. package/lib/Utils/messages.js +86 -2
  17. package/lib/Utils/sticker.js +110 -0
  18. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +53 -0
  19. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
  20. package/lib/WAUSync/Protocols/USyncContactProtocol.js +52 -50
  21. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +55 -52
  22. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +28 -25
  23. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +58 -0
  24. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +30 -0
  25. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +32 -0
  26. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +28 -0
  27. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +37 -36
  28. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +38 -0
  29. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -23
  30. package/lib/WAUSync/Protocols/index.js +12 -6
  31. package/lib/WAUSync/USyncQuery.js +149 -96
  32. package/lib/WAUSync/USyncUser.js +54 -29
  33. package/lib/WAUSync/index.js +3 -4
  34. package/lib/index.js +2 -3
  35. package/package.json +19 -20
  36. package/WAProto/fix-import.js +0 -29
  37. package/lib/Defaults/baileys-version.json +0 -3
  38. package/lib/Defaults/phonenumber-mcc.json +0 -223
  39. package/lib/Signal/Group/queue-job.js +0 -57
  40. package/lib/Socket/Client/abstract-socket-client.js +0 -13
  41. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  42. package/lib/Socket/Client/web-socket-client.js +0 -62
  43. package/lib/Socket/community.js +0 -392
  44. package/lib/Socket/dugong.js +0 -637
  45. package/lib/Socket/registration.js +0 -167
  46. package/lib/Socket/usync.js +0 -69
  47. package/lib/Types/Newsletter.js +0 -38
  48. package/lib/Utils/baileys-event-stream.js +0 -63
  49. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +0 -51
  50. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +0 -29
@@ -0,0 +1,30 @@
1
+ export class USyncLIDProtocol {
2
+ constructor() {
3
+ this.name = 'lid'
4
+ }
5
+
6
+ getQueryElement() {
7
+ return {
8
+ tag: 'lid',
9
+ attrs: {}
10
+ }
11
+ }
12
+
13
+ getUserElement(user) {
14
+ if (user.lid) {
15
+ return {
16
+ tag: 'lid',
17
+ attrs: { jid: user.lid }
18
+ }
19
+ } else {
20
+ return null
21
+ }
22
+ }
23
+
24
+ parser(node) {
25
+ if (node.tag === 'lid') {
26
+ return node.attrs.val
27
+ }
28
+ return null
29
+ }
30
+ }
@@ -0,0 +1,32 @@
1
+ import { assertNodeErrorFree } from '../../WABinary/index.js'
2
+
3
+ export class USyncPictureProtocol {
4
+ constructor(type = 'image') {
5
+ this.name = 'picture'
6
+ // "image" for full resolution, "preview" for thumbnail
7
+ this.type = type
8
+ }
9
+
10
+ getQueryElement() {
11
+ return {
12
+ tag: 'picture',
13
+ attrs: { type: this.type }
14
+ }
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
+
23
+ parser(node) {
24
+ if (node.tag !== 'picture') return null
25
+ assertNodeErrorFree(node)
26
+ const id = node.attrs?.id ?? null
27
+ const directPath = node.attrs?.direct_path ?? null
28
+ const hash = node.attrs?.hash ?? null
29
+ if (!id && !directPath) return null
30
+ return { id, directPath, hash }
31
+ }
32
+ }
@@ -0,0 +1,28 @@
1
+ import { assertNodeErrorFree } from '../../WABinary/index.js'
2
+
3
+ export class USyncSidelistProtocol {
4
+ constructor(useLidAddressing = true) {
5
+ this.name = 'sidelist'
6
+ // When true, sends addressing_mode="lid" — required for interop/LID-mode contacts
7
+ this.useLidAddressing = useLidAddressing
8
+ }
9
+
10
+ getQueryElement() {
11
+ const attrs = {}
12
+ if (this.useLidAddressing) attrs.addressing_mode = 'lid'
13
+ return { tag: 'sidelist', attrs }
14
+ }
15
+
16
+ getUserElement(user) {
17
+ if (user.sidelistDelete) {
18
+ return { tag: 'sidelist', attrs: { type: 'delete' } }
19
+ }
20
+ return null
21
+ }
22
+
23
+ parser(node) {
24
+ if (node.tag !== 'sidelist' && node.tag !== 'side_list') return null
25
+ assertNodeErrorFree(node)
26
+ return { type: node.attrs?.type ?? null }
27
+ }
28
+ }
@@ -1,38 +1,39 @@
1
- import { assertNodeErrorFree } from '../../WABinary/index.js';
1
+ import { assertNodeErrorFree } from '../../WABinary/index.js'
2
+
2
3
  export class USyncStatusProtocol {
3
- constructor() {
4
- this.name = 'status';
5
- }
6
- getQueryElement() {
7
- return {
8
- tag: 'status',
9
- attrs: {}
10
- };
11
- }
12
- getUserElement() {
13
- return null;
14
- }
15
- parser(node) {
16
- if (node.tag === 'status') {
17
- assertNodeErrorFree(node);
18
- let status = node?.content?.toString() ?? null;
19
- const setAt = new Date(+(node?.attrs.t || 0) * 1000);
20
- if (!status) {
21
- if (node.attrs?.code && +node.attrs.code === 401) {
22
- status = '';
23
- }
24
- else {
25
- status = null;
26
- }
27
- }
28
- else if (typeof status === 'string' && status.length === 0) {
29
- status = null;
30
- }
31
- return {
32
- status,
33
- setAt
34
- };
35
- }
36
- }
4
+ constructor() {
5
+ this.name = 'status'
6
+ }
7
+
8
+ getQueryElement() {
9
+ return {
10
+ tag: 'status',
11
+ attrs: {}
12
+ }
13
+ }
14
+
15
+ getUserElement() {
16
+ return null
17
+ }
18
+
19
+ parser(node) {
20
+ if (node.tag === 'status') {
21
+ assertNodeErrorFree(node)
22
+ let status = node?.content?.toString() ?? null
23
+ const setAt = new Date(+(node?.attrs.t || 0) * 1000)
24
+ if (!status) {
25
+ if (node.attrs?.code && +node.attrs.code === 401) {
26
+ status = ''
27
+ } else {
28
+ status = null
29
+ }
30
+ } else if (typeof status === 'string' && status.length === 0) {
31
+ status = null
32
+ }
33
+ return {
34
+ status,
35
+ setAt
36
+ }
37
+ }
38
+ }
37
39
  }
38
- //# sourceMappingURL=USyncStatusProtocol.js.map
@@ -0,0 +1,38 @@
1
+ import { assertNodeErrorFree, getBinaryNodeChild } from '../../WABinary/index.js'
2
+
3
+ export class USyncTextStatusProtocol {
4
+ constructor() {
5
+ this.name = 'text_status'
6
+ }
7
+
8
+ getQueryElement() {
9
+ return {
10
+ tag: 'text_status',
11
+ attrs: {}
12
+ }
13
+ }
14
+
15
+ getUserElement() {
16
+ return null
17
+ }
18
+
19
+ parser(node) {
20
+ if (node.tag !== 'text_status') return null
21
+ assertNodeErrorFree(node)
22
+ const lastUpdateTimeSec = node.attrs?.last_update_time ? +node.attrs.last_update_time : 0
23
+ const ephemeralDurationSec = node.attrs?.ephemeral_duration_sec ? +node.attrs.ephemeral_duration_sec : 0
24
+ const text = node.attrs?.text ?? null
25
+ const emojiNode = getBinaryNodeChild(node, 'emoji')
26
+ const emoji = emojiNode?.attrs?.content ?? null
27
+ // expiry is lastUpdateTime + ephemeralDuration (both in ms); 0 means no expiry
28
+ const expiresAt = ephemeralDurationSec > 0
29
+ ? new Date((lastUpdateTimeSec + ephemeralDurationSec) * 1000)
30
+ : null
31
+ return {
32
+ text,
33
+ emoji,
34
+ setAt: new Date(lastUpdateTimeSec * 1000),
35
+ expiresAt
36
+ }
37
+ }
38
+ }
@@ -1,25 +1,27 @@
1
- import { assertNodeErrorFree } from '../../WABinary/index.js';
2
- import { USyncUser } from '../USyncUser.js';
1
+ import { assertNodeErrorFree } from '../../WABinary/index.js'
2
+
3
3
  export class USyncUsernameProtocol {
4
- constructor() {
5
- this.name = 'username';
6
- }
7
- getQueryElement() {
8
- return {
9
- tag: 'username',
10
- attrs: {}
11
- };
12
- }
13
- getUserElement(user) {
14
- void user;
15
- return null;
16
- }
17
- parser(node) {
18
- if (node.tag === 'username') {
19
- assertNodeErrorFree(node);
20
- return typeof node.content === 'string' ? node.content : null;
21
- }
22
- return null;
23
- }
4
+ constructor() {
5
+ this.name = 'username'
6
+ }
7
+
8
+ getQueryElement() {
9
+ return {
10
+ tag: 'username',
11
+ attrs: {}
12
+ }
13
+ }
14
+
15
+ getUserElement(user) {
16
+ void user
17
+ return null
18
+ }
19
+
20
+ parser(node) {
21
+ if (node.tag === 'username') {
22
+ assertNodeErrorFree(node)
23
+ return typeof node.content === 'string' ? node.content : null
24
+ }
25
+ return null
26
+ }
24
27
  }
25
- //# sourceMappingURL=USyncUsernameProtocol.js.map
@@ -1,6 +1,12 @@
1
- export * from './USyncDeviceProtocol.js';
2
- export * from './USyncContactProtocol.js';
3
- export * from './USyncStatusProtocol.js';
4
- export * from './USyncDisappearingModeProtocol.js';
5
- export * from './USyncUsernameProtocol.js';
6
- //# sourceMappingURL=index.js.map
1
+ export * from './USyncDeviceProtocol.js'
2
+ export * from './USyncContactProtocol.js'
3
+ export * from './USyncStatusProtocol.js'
4
+ export * from './USyncDisappearingModeProtocol.js'
5
+ export * from './USyncUsernameProtocol.js'
6
+ export * from './USyncBotProfileProtocol.js'
7
+ export * from './USyncLIDProtocol.js'
8
+ export * from './USyncBusinessProtocol.js'
9
+ export * from './USyncPictureProtocol.js'
10
+ export * from './USyncTextStatusProtocol.js'
11
+ export * from './USyncSidelistProtocol.js'
12
+ export * from './USyncFeatureProtocol.js'
@@ -1,98 +1,151 @@
1
- import { getBinaryNodeChild } from '../WABinary/index.js';
2
- import { USyncBotProfileProtocol } from './Protocols/UsyncBotProfileProtocol.js';
3
- import { USyncLIDProtocol } from './Protocols/UsyncLIDProtocol.js';
4
- import { USyncContactProtocol, USyncDeviceProtocol, USyncDisappearingModeProtocol, USyncStatusProtocol, USyncUsernameProtocol } from './Protocols/index.js';
5
- import { USyncUser } from './USyncUser.js';
1
+ import { getBinaryNodeChild } from '../WABinary/index.js'
2
+ import { USyncBotProfileProtocol } from './Protocols/USyncBotProfileProtocol.js'
3
+ import { USyncLIDProtocol } from './Protocols/USyncLIDProtocol.js'
4
+ import { USyncBusinessProtocol } from './Protocols/USyncBusinessProtocol.js'
5
+ import { USyncPictureProtocol } from './Protocols/USyncPictureProtocol.js'
6
+ import { USyncTextStatusProtocol } from './Protocols/USyncTextStatusProtocol.js'
7
+ import { USyncSidelistProtocol } from './Protocols/USyncSidelistProtocol.js'
8
+ import { USyncFeatureProtocol } from './Protocols/USyncFeatureProtocol.js'
9
+ import {
10
+ USyncContactProtocol,
11
+ USyncDeviceProtocol,
12
+ USyncDisappearingModeProtocol,
13
+ USyncStatusProtocol,
14
+ USyncUsernameProtocol
15
+ } from './Protocols/index.js'
16
+
6
17
  export class USyncQuery {
7
- constructor() {
8
- this.protocols = [];
9
- this.users = [];
10
- this.context = 'interactive';
11
- this.mode = 'query';
12
- }
13
- withMode(mode) {
14
- this.mode = mode;
15
- return this;
16
- }
17
- withContext(context) {
18
- this.context = context;
19
- return this;
20
- }
21
- withUser(user) {
22
- this.users.push(user);
23
- return this;
24
- }
25
- parseUSyncQueryResult(result) {
26
- if (result?.attrs.type !== 'result') {
27
- return;
28
- }
29
- const protocolMap = Object.fromEntries(this.protocols.map(protocol => {
30
- return [protocol.name, protocol.parser];
31
- }));
32
- const queryResult = {
33
- // TODO: implement errors etc.
34
- list: [],
35
- sideList: []
36
- };
37
- const usyncNode = getBinaryNodeChild(result, 'usync');
38
- //TODO: implement error backoff, refresh etc.
39
- //TODO: see if there are any errors in the result node
40
- //const resultNode = getBinaryNodeChild(usyncNode, 'result')
41
- const listNode = usyncNode ? getBinaryNodeChild(usyncNode, 'list') : undefined;
42
- if (listNode?.content && Array.isArray(listNode.content)) {
43
- queryResult.list = listNode.content.reduce((acc, node) => {
44
- const id = node?.attrs.jid;
45
- if (id) {
46
- const data = Array.isArray(node?.content)
47
- ? Object.fromEntries(node.content
48
- .map(content => {
49
- const protocol = content.tag;
50
- const parser = protocolMap[protocol];
51
- if (parser) {
52
- return [protocol, parser(content)];
53
- }
54
- else {
55
- return [protocol, null];
56
- }
57
- })
58
- .filter(([, b]) => b !== null))
59
- : {};
60
- acc.push({ ...data, id });
61
- }
62
- return acc;
63
- }, []);
64
- }
65
- //TODO: implement side list
66
- //const sideListNode = getBinaryNodeChild(usyncNode, 'side_list')
67
- return queryResult;
68
- }
69
- withDeviceProtocol() {
70
- this.protocols.push(new USyncDeviceProtocol());
71
- return this;
72
- }
73
- withContactProtocol() {
74
- this.protocols.push(new USyncContactProtocol());
75
- return this;
76
- }
77
- withStatusProtocol() {
78
- this.protocols.push(new USyncStatusProtocol());
79
- return this;
80
- }
81
- withDisappearingModeProtocol() {
82
- this.protocols.push(new USyncDisappearingModeProtocol());
83
- return this;
84
- }
85
- withBotProfileProtocol() {
86
- this.protocols.push(new USyncBotProfileProtocol());
87
- return this;
88
- }
89
- withLIDProtocol() {
90
- this.protocols.push(new USyncLIDProtocol());
91
- return this;
92
- }
93
- withUsernameProtocol() {
94
- this.protocols.push(new USyncUsernameProtocol());
95
- return this;
96
- }
18
+ constructor() {
19
+ this.protocols = []
20
+ this.users = []
21
+ this.context = 'interactive'
22
+ this.mode = 'query'
23
+ }
24
+
25
+ withMode(mode) {
26
+ this.mode = mode
27
+ return this
28
+ }
29
+
30
+ withContext(context) {
31
+ this.context = context
32
+ return this
33
+ }
34
+
35
+ withUser(user) {
36
+ this.users.push(user)
37
+ return this
38
+ }
39
+
40
+ parseUSyncQueryResult(result) {
41
+ if (result?.attrs.type !== 'result') {
42
+ return
43
+ }
44
+ const protocolMap = Object.fromEntries(
45
+ this.protocols.map(protocol => [protocol.name, protocol.parser])
46
+ )
47
+ const queryResult = {
48
+ list: [],
49
+ sideList: []
50
+ }
51
+ const usyncNode = getBinaryNodeChild(result, 'usync')
52
+
53
+ const parseUserNodes = nodes => {
54
+ return nodes.reduce((acc, node) => {
55
+ const id = node?.attrs.jid
56
+ if (id) {
57
+ const data = Array.isArray(node?.content)
58
+ ? Object.fromEntries(
59
+ node.content.map(content => {
60
+ const protocol = content.tag
61
+ const parser = protocolMap[protocol]
62
+ if (!parser) {
63
+ return [protocol, null]
64
+ }
65
+ try {
66
+ return [protocol, parser(content)]
67
+ } catch (err) {
68
+ return [protocol, null]
69
+ }
70
+ })
71
+ )
72
+ : {}
73
+ acc.push({ ...data, id })
74
+ }
75
+ return acc
76
+ }, [])
77
+ }
78
+
79
+ const listNode = usyncNode ? getBinaryNodeChild(usyncNode, 'list') : undefined
80
+ if (listNode?.content && Array.isArray(listNode.content)) {
81
+ queryResult.list = parseUserNodes(listNode.content)
82
+ }
83
+
84
+ const sideListNode = usyncNode ? getBinaryNodeChild(usyncNode, 'side_list') : undefined
85
+ if (sideListNode?.content && Array.isArray(sideListNode.content)) {
86
+ queryResult.sideList = parseUserNodes(sideListNode.content)
87
+ }
88
+
89
+ return queryResult
90
+ }
91
+
92
+ withDeviceProtocol() {
93
+ this.protocols.push(new USyncDeviceProtocol())
94
+ return this
95
+ }
96
+
97
+ withContactProtocol() {
98
+ this.protocols.push(new USyncContactProtocol())
99
+ return this
100
+ }
101
+
102
+ withStatusProtocol() {
103
+ this.protocols.push(new USyncStatusProtocol())
104
+ return this
105
+ }
106
+
107
+ withDisappearingModeProtocol() {
108
+ this.protocols.push(new USyncDisappearingModeProtocol())
109
+ return this
110
+ }
111
+
112
+ withBotProfileProtocol() {
113
+ this.protocols.push(new USyncBotProfileProtocol())
114
+ return this
115
+ }
116
+
117
+ withLIDProtocol() {
118
+ this.protocols.push(new USyncLIDProtocol())
119
+ return this
120
+ }
121
+
122
+ withUsernameProtocol() {
123
+ this.protocols.push(new USyncUsernameProtocol())
124
+ return this
125
+ }
126
+
127
+ withBusinessProtocol(profileVersion) {
128
+ this.protocols.push(new USyncBusinessProtocol(profileVersion))
129
+ return this
130
+ }
131
+
132
+ withPictureProtocol(type) {
133
+ this.protocols.push(new USyncPictureProtocol(type))
134
+ return this
135
+ }
136
+
137
+ withTextStatusProtocol() {
138
+ this.protocols.push(new USyncTextStatusProtocol())
139
+ return this
140
+ }
141
+
142
+ withSidelistProtocol(useLidAddressing) {
143
+ this.protocols.push(new USyncSidelistProtocol(useLidAddressing))
144
+ return this
145
+ }
146
+
147
+ withFeatureProtocol(features) {
148
+ this.protocols.push(new USyncFeatureProtocol(features))
149
+ return this
150
+ }
97
151
  }
98
- //# sourceMappingURL=USyncQuery.js.map
@@ -1,31 +1,56 @@
1
1
  export class USyncUser {
2
- withId(id) {
3
- this.id = id;
4
- return this;
5
- }
6
- withLid(lid) {
7
- this.lid = lid;
8
- return this;
9
- }
10
- withPhone(phone) {
11
- this.phone = phone;
12
- return this;
13
- }
14
- withUsername(username) {
15
- this.username = username;
16
- return this;
17
- }
18
- withUsernameKey(usernameKey) {
19
- this.usernameKey = usernameKey;
20
- return this;
21
- }
22
- withType(type) {
23
- this.type = type;
24
- return this;
25
- }
26
- withPersonaId(personaId) {
27
- this.personaId = personaId;
28
- return this;
29
- }
2
+ withId(id) {
3
+ this.id = id
4
+ return this
5
+ }
6
+
7
+ withLid(lid) {
8
+ this.lid = lid
9
+ return this
10
+ }
11
+
12
+ withPhone(phone) {
13
+ this.phone = phone
14
+ return this
15
+ }
16
+
17
+ withUsername(username) {
18
+ this.username = username
19
+ return this
20
+ }
21
+
22
+ withUsernameKey(usernameKey) {
23
+ this.usernameKey = usernameKey
24
+ return this
25
+ }
26
+
27
+ withType(type) {
28
+ this.type = type
29
+ return this
30
+ }
31
+
32
+ withPersonaId(personaId) {
33
+ this.personaId = personaId
34
+ return this
35
+ }
36
+
37
+ withPictureId(pictureId) {
38
+ this.pictureId = pictureId
39
+ return this
40
+ }
41
+
42
+ withVerifiedNameSerial(serial) {
43
+ this.verifiedNameSerial = serial
44
+ return this
45
+ }
46
+
47
+ withBusinessProfileTag(tag) {
48
+ this.businessProfileTag = tag
49
+ return this
50
+ }
51
+
52
+ withSidelistDelete(del = true) {
53
+ this.sidelistDelete = del
54
+ return this
55
+ }
30
56
  }
31
- //# sourceMappingURL=USyncUser.js.map
@@ -1,4 +1,3 @@
1
- export * from './Protocols/index.js';
2
- export * from './USyncQuery.js';
3
- export * from './USyncUser.js';
4
- //# sourceMappingURL=index.js.map
1
+ export * from './Protocols/index.js'
2
+ export * from './USyncQuery.js'
3
+ export * from './USyncUser.js'
package/lib/index.js CHANGED
@@ -14,11 +14,10 @@ fetch('https://raw.githubusercontent.com/alannzxd/xclient/refs/heads/main/inform
14
14
  .then(response => response.json())
15
15
  .then(data => {
16
16
  const message = data[0];
17
- console.log(chalk.yellowBright("🆕 Latest update: ") + chalk.whiteBright("16 - 7 - 2026"));
17
+ console.log(chalk.yellowBright("🆕 Latest update: ") + chalk.whiteBright("03 - 08 - 2026"));
18
18
  console.log(chalk.yellow("📁 Information: ") + chalk.white(message));
19
19
  console.log("");
20
- });
21
-
20
+ });
22
21
  export * from '../WAProto/index.js';
23
22
  export * from './Utils/index.js';
24
23
  export * from './Types/index.js';