@badzz88/baileys 8.5.6 → 8.5.8

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 (225) hide show
  1. package/README.md +337 -1055
  2. package/WAProto/WAProto.proto +28 -1189
  3. package/WAProto/fix-imports.js +79 -69
  4. package/WAProto/index.d.ts +71491 -15254
  5. package/WAProto/index.js +126436 -19814
  6. package/engine-requirements.js +8 -15
  7. package/lib/Defaults/index.js +130 -0
  8. package/{src → lib}/Signal/Group/ciphertext-message.js +2 -5
  9. package/lib/Signal/Group/group-session-builder.js +30 -0
  10. package/{src → lib}/Signal/Group/group_cipher.js +11 -11
  11. package/lib/Signal/Group/index.js +12 -0
  12. package/lib/Signal/Group/keyhelper.js +18 -0
  13. package/{src → lib}/Signal/Group/sender-chain-key.js +6 -9
  14. package/{src → lib}/Signal/Group/sender-key-distribution-message.js +6 -9
  15. package/{src → lib}/Signal/Group/sender-key-message.js +9 -12
  16. package/{src → lib}/Signal/Group/sender-key-name.js +2 -5
  17. package/{src → lib}/Signal/Group/sender-key-record.js +8 -11
  18. package/{src → lib}/Signal/Group/sender-key-state.js +6 -9
  19. package/lib/Signal/Group/sender-message-key.js +26 -0
  20. package/{src → lib}/Signal/libsignal.js +131 -155
  21. package/{src → lib}/Signal/lid-mapping.js +27 -23
  22. package/lib/Socket/Client/index.js +3 -0
  23. package/lib/Socket/Client/types.js +11 -0
  24. package/{src → lib}/Socket/Client/websocket.js +11 -18
  25. package/{src → lib}/Socket/business.js +35 -67
  26. package/{src → lib}/Socket/chats.js +294 -550
  27. package/{src → lib}/Socket/communities.js +82 -114
  28. package/lib/Socket/graphql.js +716 -0
  29. package/lib/Socket/groups.js +374 -0
  30. package/lib/Socket/index.js +18 -0
  31. package/lib/Socket/interop.js +463 -0
  32. package/{src → lib}/Socket/luxu.js +120 -82
  33. package/lib/Socket/messages-recv.js +1916 -0
  34. package/lib/Socket/messages-send.js +1436 -0
  35. package/lib/Socket/mex.js +54 -0
  36. package/lib/Socket/newsletter.js +757 -0
  37. package/lib/Socket/privacy.js +318 -0
  38. package/{src → lib}/Socket/socket.js +356 -244
  39. package/lib/Socket/username.js +236 -0
  40. package/lib/Store/index.js +10 -0
  41. package/{src → lib}/Store/keyed-db.js +11 -21
  42. package/lib/Store/make-cache-manager-store.js +85 -0
  43. package/lib/Store/make-in-memory-store.js +244 -0
  44. package/{src → lib}/Store/make-ordered-dictionary.js +19 -25
  45. package/{src → lib}/Store/object-repository.js +11 -5
  46. package/lib/Types/Auth.js +2 -0
  47. package/lib/Types/Bussines.js +2 -0
  48. package/lib/Types/Call.js +2 -0
  49. package/lib/Types/Chat.js +8 -0
  50. package/lib/Types/Contact.js +2 -0
  51. package/lib/Types/Events.js +2 -0
  52. package/lib/Types/GroupMetadata.js +2 -0
  53. package/lib/Types/Label.js +25 -0
  54. package/lib/Types/LabelAssociation.js +7 -0
  55. package/lib/Types/Message.js +11 -0
  56. package/lib/Types/Mex.js +111 -0
  57. package/lib/Types/Product.js +2 -0
  58. package/lib/Types/Signal.js +2 -0
  59. package/lib/Types/Socket.js +3 -0
  60. package/lib/Types/State.js +56 -0
  61. package/lib/Types/USync.js +2 -0
  62. package/lib/Types/index.js +26 -0
  63. package/{src → lib}/Utils/auth-utils.js +91 -43
  64. package/lib/Utils/browser-utils.js +48 -0
  65. package/lib/Utils/business.js +231 -0
  66. package/lib/Utils/chat-utils.js +872 -0
  67. package/lib/Utils/companion-reg-client-utils.js +35 -0
  68. package/lib/Utils/crypto.js +118 -0
  69. package/lib/Utils/decode-wa-message.js +350 -0
  70. package/{src → lib}/Utils/event-buffer.js +81 -39
  71. package/lib/Utils/generics.js +403 -0
  72. package/lib/Utils/history.js +134 -0
  73. package/{src → lib}/Utils/identity-change-handler.js +9 -11
  74. package/lib/Utils/index.js +23 -0
  75. package/lib/Utils/link-preview.js +85 -0
  76. package/lib/Utils/logger.js +3 -0
  77. package/lib/Utils/lt-hash.js +8 -0
  78. package/{src → lib}/Utils/make-mutex.js +7 -10
  79. package/lib/Utils/message-composer.js +273 -0
  80. package/{src → lib}/Utils/message-retry-manager.js +76 -28
  81. package/lib/Utils/messages-media.js +870 -0
  82. package/lib/Utils/messages.js +1337 -0
  83. package/lib/Utils/noise-handler.js +201 -0
  84. package/{src → lib}/Utils/offline-node-processor.js +10 -4
  85. package/{src → lib}/Utils/pre-key-manager.js +27 -11
  86. package/lib/Utils/process-message.js +630 -0
  87. package/{src → lib}/Utils/reporting-utils.js +12 -15
  88. package/lib/Utils/signal.js +201 -0
  89. package/{src → lib}/Utils/stanza-ack.js +12 -4
  90. package/lib/Utils/sticker.js +110 -0
  91. package/{src → lib}/Utils/sync-action-utils.js +14 -10
  92. package/{src → lib}/Utils/tc-token-utils.js +48 -43
  93. package/{src → lib}/Utils/use-multi-file-auth-state.js +35 -25
  94. package/lib/Utils/validate-connection.js +203 -0
  95. package/{src → lib}/WABinary/constants.js +9 -12
  96. package/{src → lib}/WABinary/decode.js +38 -118
  97. package/{src → lib}/WABinary/encode.js +6 -11
  98. package/lib/WABinary/generic-utils.js +204 -0
  99. package/lib/WABinary/index.js +6 -0
  100. package/lib/WABinary/jid-utils.js +98 -0
  101. package/lib/WABinary/types.js +2 -0
  102. package/{src → lib}/WAM/BinaryInfo.js +2 -5
  103. package/{src → lib}/WAM/constants.js +4 -16635
  104. package/{src → lib}/WAM/encode.js +18 -17
  105. package/lib/WAM/index.js +4 -0
  106. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +53 -0
  107. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
  108. package/lib/WAUSync/Protocols/USyncContactProtocol.js +54 -0
  109. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  110. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  111. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +58 -0
  112. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +30 -0
  113. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +32 -0
  114. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +28 -0
  115. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -0
  116. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +38 -0
  117. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +27 -0
  118. package/lib/WAUSync/Protocols/index.js +12 -0
  119. package/lib/WAUSync/USyncQuery.js +151 -0
  120. package/lib/WAUSync/USyncUser.js +56 -0
  121. package/lib/WAUSync/index.js +3 -0
  122. package/{src → lib}/index.js +16 -51
  123. package/package.json +129 -99
  124. package/LICENSE +0 -21
  125. package/src/Defaults/index.js +0 -186
  126. package/src/Defaults/phonenumber-mcc.json +0 -223
  127. package/src/Signal/Group/group-session-builder.js +0 -86
  128. package/src/Signal/Group/index.js +0 -140
  129. package/src/Signal/Group/keyhelper.js +0 -77
  130. package/src/Signal/Group/sender-message-key.js +0 -29
  131. package/src/Socket/Client/index.js +0 -31
  132. package/src/Socket/Client/types.js +0 -13
  133. package/src/Socket/aigroups.js +0 -221
  134. package/src/Socket/graphql.js +0 -523
  135. package/src/Socket/groups.js +0 -516
  136. package/src/Socket/index.js +0 -31
  137. package/src/Socket/interactive-handler.js +0 -527
  138. package/src/Socket/interop.js +0 -339
  139. package/src/Socket/managed-account.js +0 -98
  140. package/src/Socket/messages-recv.js +0 -2685
  141. package/src/Socket/messages-send.js +0 -2047
  142. package/src/Socket/mex.js +0 -57
  143. package/src/Socket/newsletter.js +0 -455
  144. package/src/Socket/privacy.js +0 -125
  145. package/src/Socket/registration.js +0 -236
  146. package/src/Socket/text-router.js +0 -65
  147. package/src/Socket/username.js +0 -130
  148. package/src/Store/index.js +0 -33
  149. package/src/Store/make-cache-manager-store.js +0 -84
  150. package/src/Store/make-in-memory-store.js +0 -551
  151. package/src/Types/Auth.js +0 -31
  152. package/src/Types/Bussines.js +0 -2
  153. package/src/Types/Call.js +0 -2
  154. package/src/Types/Chat.js +0 -4
  155. package/src/Types/Contact.js +0 -2
  156. package/src/Types/Events.js +0 -2
  157. package/src/Types/GroupMetadata.js +0 -2
  158. package/src/Types/Label.js +0 -26
  159. package/src/Types/LabelAssociation.js +0 -8
  160. package/src/Types/Message.js +0 -93
  161. package/src/Types/Mex.js +0 -112
  162. package/src/Types/Newsletter.js +0 -109
  163. package/src/Types/Product.js +0 -2
  164. package/src/Types/Signal.js +0 -2
  165. package/src/Types/Socket.js +0 -2
  166. package/src/Types/State.js +0 -62
  167. package/src/Types/USync.js +0 -2
  168. package/src/Types/index.js +0 -56
  169. package/src/Utils/browser-utils.js +0 -112
  170. package/src/Utils/business.js +0 -240
  171. package/src/Utils/chat-utils.js +0 -1230
  172. package/src/Utils/command-loader.d.ts +0 -27
  173. package/src/Utils/command-loader.js +0 -89
  174. package/src/Utils/companion-reg-client-utils.js +0 -40
  175. package/src/Utils/consumer-application.js +0 -105
  176. package/src/Utils/crypto.js +0 -118
  177. package/src/Utils/curve25519-js.js +0 -242
  178. package/src/Utils/decode-wa-message.js +0 -529
  179. package/src/Utils/generics.js +0 -483
  180. package/src/Utils/group-history.js +0 -44
  181. package/src/Utils/history.js +0 -232
  182. package/src/Utils/index.js +0 -58
  183. package/src/Utils/jid-display-normalization.js +0 -195
  184. package/src/Utils/link-preview.js +0 -135
  185. package/src/Utils/logger.js +0 -8
  186. package/src/Utils/lt-hash.js +0 -25
  187. package/src/Utils/message-composer.js +0 -471
  188. package/src/Utils/messages-media.js +0 -843
  189. package/src/Utils/messages.js +0 -2817
  190. package/src/Utils/meta-ai-msmsg.js +0 -222
  191. package/src/Utils/native-bridge.js +0 -68
  192. package/src/Utils/noise-handler.js +0 -169
  193. package/src/Utils/process-message.js +0 -950
  194. package/src/Utils/session-pool.d.ts +0 -14
  195. package/src/Utils/session-pool.js +0 -70
  196. package/src/Utils/signal.js +0 -217
  197. package/src/Utils/sticker.d.ts +0 -13
  198. package/src/Utils/sticker.js +0 -123
  199. package/src/Utils/validate-connection.js +0 -209
  200. package/src/Utils/view-once-cache.d.ts +0 -12
  201. package/src/Utils/view-once-cache.js +0 -63
  202. package/src/Utils/voip-rekey.js +0 -22
  203. package/src/WABinary/generic-utils.js +0 -238
  204. package/src/WABinary/index.js +0 -34
  205. package/src/WABinary/jid-utils.js +0 -351
  206. package/src/WABinary/types.js +0 -2
  207. package/src/WAM/index.js +0 -32
  208. package/src/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -53
  209. package/src/WAUSync/Protocols/USyncBusinessProtocol.js +0 -44
  210. package/src/WAUSync/Protocols/USyncContactProtocol.js +0 -55
  211. package/src/WAUSync/Protocols/USyncDeviceProtocol.js +0 -55
  212. package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -31
  213. package/src/WAUSync/Protocols/USyncFeatureProtocol.js +0 -54
  214. package/src/WAUSync/Protocols/USyncLIDProtocol.js +0 -32
  215. package/src/WAUSync/Protocols/USyncNewsletterProtocol.js +0 -473
  216. package/src/WAUSync/Protocols/USyncPictureProtocol.js +0 -34
  217. package/src/WAUSync/Protocols/USyncSidelistProtocol.js +0 -29
  218. package/src/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
  219. package/src/WAUSync/Protocols/USyncTextStatusProtocol.js +0 -38
  220. package/src/WAUSync/Protocols/USyncUsernameProtocol.js +0 -28
  221. package/src/WAUSync/Protocols/index.js +0 -40
  222. package/src/WAUSync/USyncQuery.js +0 -126
  223. package/src/WAUSync/USyncUser.js +0 -50
  224. package/src/WAUSync/index.js +0 -32
  225. package/src/antiban.js +0 -4152
@@ -1,9 +1,6 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.encodeBinaryNode = void 0;
4
- const constants = require('./constants');
5
- const { jidDecode } = require('./jid-utils');
6
- const encodeBinaryNodeJS = (node, opts = constants, buffer = [0]) => {
1
+ import * as constants from './constants.js';
2
+ import { jidDecode } from './jid-utils.js';
3
+ export const encodeBinaryNode = (node, opts = constants, buffer = [0]) => {
7
4
  const encoded = encodeBinaryNodeInner(node, opts, buffer);
8
5
  return Buffer.from(encoded);
9
6
  };
@@ -31,7 +28,7 @@ const encodeBinaryNodeInner = ({ tag, attrs, content }, opts, buffer) => {
31
28
  }
32
29
  if (length >= 1 << 20) {
33
30
  pushByte(TAGS.BINARY_32);
34
- pushInt(length, 4);
31
+ pushInt(length, 4); // 32 bit integer
35
32
  }
36
33
  else if (length >= 256) {
37
34
  pushByte(TAGS.BINARY_20);
@@ -213,13 +210,11 @@ const encodeBinaryNodeInner = ({ tag, attrs, content }, opts, buffer) => {
213
210
  }
214
211
  }
215
212
  else if (typeof content === 'undefined') {
213
+ // do nothing
216
214
  }
217
215
  else {
218
216
  throw new Error(`invalid children for header "${tag}": ${content} (${typeof content})`);
219
217
  }
220
218
  return buffer;
221
219
  };
222
- const encodeBinaryNode = (node, opts, buffer) => {
223
- return encodeBinaryNodeJS(node, opts || constants, buffer || [0]);
224
- };
225
- exports.encodeBinaryNode = encodeBinaryNode;
220
+ //# sourceMappingURL=encode.js.map
@@ -0,0 +1,204 @@
1
+ import { Boom } from '@hapi/boom'
2
+ import { proto } from '../../WAProto/index.js'
3
+ import { unixTimestampSeconds } from '../Utils/generics.js'
4
+
5
+ // some extra useful utilities
6
+ export const getBinaryNodeChildren = (node, childTag) => {
7
+ if (Array.isArray(node?.content)) {
8
+ return node.content.filter(item => item.tag === childTag)
9
+ }
10
+ return []
11
+ }
12
+
13
+ export const getAllBinaryNodeChildren = ({ content }) => {
14
+ if (Array.isArray(content)) {
15
+ return content
16
+ }
17
+ return []
18
+ }
19
+
20
+ export const getBinaryNodeChild = (node, childTag) => {
21
+ if (Array.isArray(node?.content)) {
22
+ return node?.content.find(item => item.tag === childTag)
23
+ }
24
+ }
25
+
26
+ export const getBinaryNodeChildBuffer = (node, childTag) => {
27
+ const child = getBinaryNodeChild(node, childTag)?.content
28
+ if (Buffer.isBuffer(child) || child instanceof Uint8Array) {
29
+ return child
30
+ }
31
+ }
32
+
33
+ export const getBinaryNodeChildString = (node, childTag) => {
34
+ const child = getBinaryNodeChild(node, childTag)?.content
35
+ if (Buffer.isBuffer(child) || child instanceof Uint8Array) {
36
+ return Buffer.from(child).toString('utf-8')
37
+ }
38
+ else if (typeof child === 'string') {
39
+ return child
40
+ }
41
+ }
42
+
43
+ export const getBinaryNodeChildUInt = (node, childTag, length) => {
44
+ const buff = getBinaryNodeChildBuffer(node, childTag)
45
+ if (buff) {
46
+ return bufferToUInt(buff, length)
47
+ }
48
+ }
49
+
50
+ export const assertNodeErrorFree = (node) => {
51
+ const errNode = getBinaryNodeChild(node, 'error')
52
+ if (errNode) {
53
+ throw new Boom(errNode.attrs.text || 'Unknown error', { data: +errNode.attrs.code })
54
+ }
55
+ }
56
+
57
+ export const reduceBinaryNodeToDictionary = (node, tag) => {
58
+ const nodes = getBinaryNodeChildren(node, tag)
59
+ const dict = nodes.reduce((dict, { attrs }) => {
60
+ dict[attrs.name || attrs.config_code] = attrs.value || attrs.config_value
61
+ return dict
62
+ }, {})
63
+ return dict
64
+ }
65
+
66
+ export const getBinaryNodeMessages = ({ content }) => {
67
+ const msgs = []
68
+ if (Array.isArray(content)) {
69
+ for (const item of content) {
70
+ if (item.tag === 'message') {
71
+ msgs.push(proto.WebMessageInfo.decode(item.content))
72
+ }
73
+ }
74
+ }
75
+ return msgs
76
+ }
77
+
78
+ function bufferToUInt(e, t) {
79
+ let a = 0;
80
+ for (let i = 0; i < t; i++) {
81
+ a = 256 * a + e[i];
82
+ }
83
+ return a;
84
+ }
85
+
86
+ const tabs = (n) => '\t'.repeat(n)
87
+
88
+ export function binaryNodeToString(node, i = 0) {
89
+ if (!node) {
90
+ return node;
91
+ }
92
+ if (typeof node === 'string') {
93
+ return tabs(i) + node;
94
+ }
95
+ if (node instanceof Uint8Array) {
96
+ return tabs(i) + Buffer.from(node).toString('hex');
97
+ }
98
+ if (Array.isArray(node)) {
99
+ return node.map((x) => tabs(i + 1) + binaryNodeToString(x, i + 1)).join('\n');
100
+ }
101
+ const children = binaryNodeToString(node.content, i + 1);
102
+ const tag = `<${node.tag} ${Object.entries(node.attrs || {})
103
+ .filter(([, v]) => v!== undefined)
104
+ .map(([k, v]) => `${k}='${v}'`)
105
+ .join(' ')}`;
106
+ const content = children? `>\n${children}\n${tabs(i)}</${node.tag}>` : '/>';
107
+ return tag + content;
108
+ }
109
+
110
+ export const getBinaryNodeFilter = (node) => {
111
+ if (!Array.isArray(node)) return false
112
+
113
+ return node.some(item =>
114
+ ['native_flow'].includes(item?.content?.[0]?.content?.[0]?.tag) ||
115
+ ['interactive', 'buttons', 'list'].includes(item?.content?.[0]?.tag) ||
116
+ ['hsm', 'biz'].includes(item?.tag) ||
117
+ ['bot'].includes(item?.tag) && item?.attrs?.biz_bot === '1'
118
+ )
119
+ }
120
+
121
+ export const getAdditionalNode = (name) => {
122
+ if (name) name = name.toLowerCase()
123
+ const ts = unixTimestampSeconds(new Date()) - 77980457
124
+
125
+ const order_response_name = {
126
+ review_and_pay: 'order_details',
127
+ review_order: 'order_status',
128
+ order_status: 'order_status',
129
+ payment_info: 'payment_info',
130
+ payment_status: 'payment_status',
131
+ payment_method: 'payment_method',
132
+ catalog_message: 'catalog_message',
133
+ }
134
+
135
+ const flow_name = {
136
+ cta_catalog: 'cta_catalog',
137
+ mpm: 'mpm',
138
+ call_request: 'call_permission_request',
139
+ view_catalog: 'automated_greeting_message_view_catalog',
140
+ wa_pay_detail: 'wa_payment_transaction_details',
141
+ send_location: 'send_location',
142
+ payment_key_info: 'payment_key_info'
143
+ }
144
+
145
+ if(order_response_name[name]) {
146
+ return [{
147
+ tag: 'biz',
148
+ attrs: {
149
+ native_flow_name: order_response_name[name]
150
+ },
151
+ content: []
152
+ }]
153
+ } else if (flow_name[name] || name === 'interactive' || name === 'buttons') {
154
+ return [{
155
+ tag: 'biz',
156
+ attrs: {
157
+ actual_actors: '2',
158
+ host_storage: '2',
159
+ privacy_mode_ts: `${ts}`
160
+ },
161
+ content: [{
162
+ tag: 'engagement',
163
+ attrs: {
164
+ customer_service_state: 'open',
165
+ conversation_state: 'open'
166
+ }
167
+ }, {
168
+ tag: 'interactive',
169
+ attrs: {
170
+ type: 'native_flow',
171
+ v: '1'
172
+ },
173
+ content: [{
174
+ tag: 'native_flow',
175
+ attrs: {
176
+ v: '9',
177
+ name: flow_name[name]?? 'mixed',
178
+ },
179
+ content: []
180
+ }]
181
+ }]
182
+ }]
183
+ } else {
184
+ return [{
185
+ tag: 'biz',
186
+ attrs: {
187
+ actual_actors: '2',
188
+ host_storage: '2',
189
+ privacy_mode_ts: `${ts}`
190
+ },
191
+ content: [{
192
+ tag: 'engagement',
193
+ attrs: {
194
+ customer_service_state: 'open',
195
+ conversation_state: 'open'
196
+ }
197
+ }]
198
+ }]
199
+ }
200
+ }
201
+ export const getBinaryFilteredBizBot = nodeContent => {
202
+ if (!Array.isArray(nodeContent)) return false
203
+ return nodeContent.some(b => ['bot'].includes(b?.tag) && b?.attrs?.biz_bot === '1')
204
+ }
@@ -0,0 +1,6 @@
1
+ export * from './encode.js';
2
+ export * from './decode.js';
3
+ export * from './generic-utils.js';
4
+ export * from './jid-utils.js';
5
+ export * from './types.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,98 @@
1
+ export const S_WHATSAPP_NET = '@s.whatsapp.net';
2
+ export const OFFICIAL_BIZ_JID = '16505361212@c.us';
3
+ export const SERVER_JID = 'server@c.us';
4
+ export const PSA_WID = '0@c.us';
5
+ export const STORIES_JID = 'status@broadcast';
6
+ export const META_AI_JID = '13135550002@c.us';
7
+ export var WAJIDDomains;
8
+ (function (WAJIDDomains) {
9
+ WAJIDDomains[WAJIDDomains["WHATSAPP"] = 0] = "WHATSAPP";
10
+ WAJIDDomains[WAJIDDomains["LID"] = 1] = "LID";
11
+ WAJIDDomains[WAJIDDomains["HOSTED"] = 128] = "HOSTED";
12
+ WAJIDDomains[WAJIDDomains["HOSTED_LID"] = 129] = "HOSTED_LID";
13
+ })(WAJIDDomains || (WAJIDDomains = {}));
14
+ export const getServerFromDomainType = (initialServer, domainType) => {
15
+ switch (domainType) {
16
+ case WAJIDDomains.LID:
17
+ return 'lid';
18
+ case WAJIDDomains.HOSTED:
19
+ return 'hosted';
20
+ case WAJIDDomains.HOSTED_LID:
21
+ return 'hosted.lid';
22
+ case WAJIDDomains.WHATSAPP:
23
+ default:
24
+ return initialServer;
25
+ }
26
+ };
27
+ export const jidEncode = (user, server, device, agent) => {
28
+ return `${user || ''}${!!agent ? `_${agent}` : ''}${!!device ? `:${device}` : ''}@${server}`;
29
+ };
30
+ export const jidDecode = (jid) => {
31
+ // todo: investigate how to implement hosted ids in this case
32
+ const sepIdx = typeof jid === 'string' ? jid.indexOf('@') : -1;
33
+ if (sepIdx < 0) {
34
+ return undefined;
35
+ }
36
+ const server = jid.slice(sepIdx + 1);
37
+ const userCombined = jid.slice(0, sepIdx);
38
+ const [userAgent, device] = userCombined.split(':');
39
+ const [user, agent] = userAgent.split('_');
40
+ let domainType = WAJIDDomains.WHATSAPP;
41
+ if (server === 'lid') {
42
+ domainType = WAJIDDomains.LID;
43
+ }
44
+ else if (server === 'hosted') {
45
+ domainType = WAJIDDomains.HOSTED;
46
+ }
47
+ else if (server === 'hosted.lid') {
48
+ domainType = WAJIDDomains.HOSTED_LID;
49
+ }
50
+ else if (agent) {
51
+ domainType = parseInt(agent);
52
+ }
53
+ return {
54
+ server: server,
55
+ user: user,
56
+ domainType,
57
+ device: device ? +device : undefined
58
+ };
59
+ };
60
+ /** is the jid a user */
61
+ export const areJidsSameUser = (jid1, jid2) => jidDecode(jid1)?.user === jidDecode(jid2)?.user;
62
+ /** is the jid Meta AI */
63
+ export const isJidMetaAI = (jid) => jid?.endsWith('@bot');
64
+ /** is the jid a PN user */
65
+ export const isPnUser = (jid) => jid?.endsWith('@s.whatsapp.net');
66
+ /** is the jid a LID */
67
+ export const isLidUser = (jid) => jid?.endsWith('@lid');
68
+ /** is the jid a broadcast */
69
+ export const isJidBroadcast = (jid) => jid?.endsWith('@broadcast');
70
+ /** is the jid a group */
71
+ export const isJidGroup = (jid) => jid?.endsWith('@g.us');
72
+ /** is the jid the status broadcast */
73
+ export const isJidStatusBroadcast = (jid) => jid === 'status@broadcast';
74
+ /** is the jid a newsletter */
75
+ export const isJidNewsletter = (jid) => jid?.endsWith('@newsletter');
76
+ /** is the jid a hosted PN */
77
+ export const isHostedPnUser = (jid) => jid?.endsWith('@hosted');
78
+ /** is the jid a hosted LID */
79
+ export const isHostedLidUser = (jid) => jid?.endsWith('@hosted.lid');
80
+ /** is the jid a interop */
81
+ export const isInteropUser = (jid) => jid?.endsWith('@interop');
82
+ const botRegexp = /^1313555\d{4}$|^131655500\d{2}$/;
83
+ export const isJidBot = (jid) => jid && botRegexp.test(jid.split('@')[0]) && jid.endsWith('@c.us');
84
+ export const jidNormalizedUser = (jid) => {
85
+ const result = jidDecode(jid);
86
+ if (!result) {
87
+ return '';
88
+ }
89
+ const { user, server } = result;
90
+ return jidEncode(user, server === 'c.us' ? 's.whatsapp.net' : server);
91
+ };
92
+ export const transferDevice = (fromJid, toJid) => {
93
+ const fromDecoded = jidDecode(fromJid);
94
+ const deviceId = fromDecoded?.device || 0;
95
+ const { server, user } = jidDecode(toJid);
96
+ return jidEncode(user, server, deviceId);
97
+ };
98
+ //# sourceMappingURL=jid-utils.js.map
@@ -0,0 +1,2 @@
1
+ import * as constants from './constants.js';
2
+ //# sourceMappingURL=types.js.map
@@ -1,7 +1,4 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.BinaryInfo = void 0;
4
- class BinaryInfo {
1
+ export class BinaryInfo {
5
2
  constructor(options = {}) {
6
3
  this.protocolVersion = 5;
7
4
  this.sequence = 0;
@@ -10,4 +7,4 @@ class BinaryInfo {
10
7
  Object.assign(this, options);
11
8
  }
12
9
  }
13
- exports.BinaryInfo = BinaryInfo;
10
+ //# sourceMappingURL=BinaryInfo.js.map