@pontalabs/baileys 1.0.4 → 1.0.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 (447) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +267 -839
  3. package/WAProto/GenerateStatics.sh +3 -4
  4. package/WAProto/WAProto.proto +1215 -511
  5. package/WAProto/fix-imports.js +85 -0
  6. package/WAProto/index.d.ts +14017 -55
  7. package/WAProto/index.js +97689 -29
  8. package/engine-requirements.js +10 -0
  9. package/lib/Defaults/index.d.ts +72 -74
  10. package/lib/Defaults/index.d.ts.map +1 -0
  11. package/lib/Defaults/index.js +94 -108
  12. package/lib/Defaults/index.js.map +1 -0
  13. package/lib/Signal/Group/ciphertext-message.d.ts +8 -7
  14. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  15. package/lib/Signal/Group/ciphertext-message.js +9 -16
  16. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  17. package/lib/Signal/Group/group-session-builder.d.ts +11 -13
  18. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  19. package/lib/Signal/Group/group-session-builder.js +19 -61
  20. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  21. package/lib/Signal/Group/group_cipher.d.ts +14 -16
  22. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  23. package/lib/Signal/Group/group_cipher.js +41 -70
  24. package/lib/Signal/Group/group_cipher.js.map +1 -0
  25. package/lib/Signal/Group/index.d.ts +12 -11
  26. package/lib/Signal/Group/index.d.ts.map +1 -0
  27. package/lib/Signal/Group/index.js +12 -61
  28. package/lib/Signal/Group/index.js.map +1 -0
  29. package/lib/Signal/Group/keyhelper.d.ts +9 -14
  30. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  31. package/lib/Signal/Group/keyhelper.js +10 -58
  32. package/lib/Signal/Group/keyhelper.js.map +1 -0
  33. package/lib/Signal/Group/sender-chain-key.d.ts +13 -13
  34. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  35. package/lib/Signal/Group/sender-chain-key.js +13 -34
  36. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  37. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -16
  38. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  39. package/lib/Signal/Group/sender-key-distribution-message.js +28 -36
  40. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  41. package/lib/Signal/Group/sender-key-message.d.ts +18 -18
  42. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  43. package/lib/Signal/Group/sender-key-message.js +38 -45
  44. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  45. package/lib/Signal/Group/sender-key-name.d.ts +14 -15
  46. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  47. package/lib/Signal/Group/sender-key-name.js +20 -31
  48. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  49. package/lib/Signal/Group/sender-key-record.d.ts +24 -25
  50. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  51. package/lib/Signal/Group/sender-key-record.js +18 -35
  52. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  53. package/lib/Signal/Group/sender-key-state.d.ts +29 -34
  54. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  55. package/lib/Signal/Group/sender-key-state.js +37 -100
  56. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  57. package/lib/Signal/Group/sender-message-key.d.ts +11 -10
  58. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  59. package/lib/Signal/Group/sender-message-key.js +15 -22
  60. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  61. package/lib/Signal/libsignal.d.ts +5 -8
  62. package/lib/Signal/libsignal.d.ts.map +1 -0
  63. package/lib/Signal/libsignal.js +279 -121
  64. package/lib/Signal/libsignal.js.map +1 -0
  65. package/lib/Signal/lid-mapping.d.ts +23 -28
  66. package/lib/Signal/lid-mapping.d.ts.map +1 -0
  67. package/lib/Signal/lid-mapping.js +277 -184
  68. package/lib/Signal/lid-mapping.js.map +1 -0
  69. package/lib/Socket/Client/index.d.ts +3 -2
  70. package/lib/Socket/Client/index.d.ts.map +1 -0
  71. package/lib/Socket/Client/index.js +3 -22
  72. package/lib/Socket/Client/index.js.map +1 -0
  73. package/lib/Socket/Client/types.d.ts +15 -15
  74. package/lib/Socket/Client/types.d.ts.map +1 -0
  75. package/lib/Socket/Client/types.js +8 -15
  76. package/lib/Socket/Client/types.js.map +1 -0
  77. package/lib/Socket/Client/websocket.d.ts +12 -12
  78. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  79. package/lib/Socket/Client/websocket.js +29 -37
  80. package/lib/Socket/Client/websocket.js.map +1 -0
  81. package/lib/Socket/business.d.ts +208 -178
  82. package/lib/Socket/business.d.ts.map +1 -0
  83. package/lib/Socket/business.js +91 -127
  84. package/lib/Socket/business.js.map +1 -0
  85. package/lib/Socket/chats.d.ts +120 -93
  86. package/lib/Socket/chats.d.ts.map +1 -0
  87. package/lib/Socket/chats.js +727 -652
  88. package/lib/Socket/chats.js.map +1 -0
  89. package/lib/Socket/communities.d.ts +273 -0
  90. package/lib/Socket/communities.d.ts.map +1 -0
  91. package/lib/Socket/communities.js +431 -0
  92. package/lib/Socket/communities.js.map +1 -0
  93. package/lib/Socket/dugong.js +261 -0
  94. package/lib/Socket/dugong.js.bak +204 -0
  95. package/lib/Socket/groups.d.ts +143 -111
  96. package/lib/Socket/groups.d.ts.map +1 -0
  97. package/lib/Socket/groups.js +165 -177
  98. package/lib/Socket/groups.js.map +1 -0
  99. package/lib/Socket/index.d.ts +252 -183
  100. package/lib/Socket/index.d.ts.map +1 -0
  101. package/lib/Socket/index.js +38 -18
  102. package/lib/Socket/index.js.bak +44 -0
  103. package/lib/Socket/index.js.map +1 -0
  104. package/lib/Socket/messages-recv.d.ts +196 -167
  105. package/lib/Socket/messages-recv.d.ts.map +1 -0
  106. package/lib/Socket/messages-recv.js +1443 -1563
  107. package/lib/Socket/messages-recv.js.map +1 -0
  108. package/lib/Socket/messages-send.d.ts +192 -158
  109. package/lib/Socket/messages-send.d.ts.map +1 -0
  110. package/lib/Socket/messages-send.js +1102 -1208
  111. package/lib/Socket/messages-send.js.bak +1400 -0
  112. package/lib/Socket/messages-send.js.map +1 -0
  113. package/lib/Socket/mex.d.ts +3 -0
  114. package/lib/Socket/mex.d.ts.map +1 -0
  115. package/lib/Socket/mex.js +42 -0
  116. package/lib/Socket/mex.js.map +1 -0
  117. package/lib/Socket/newsletter.d.ts +163 -138
  118. package/lib/Socket/newsletter.d.ts.map +1 -0
  119. package/lib/Socket/newsletter.js +153 -249
  120. package/lib/Socket/newsletter.js.map +1 -0
  121. package/lib/Socket/socket.d.ts +50 -36
  122. package/lib/Socket/socket.d.ts.map +1 -0
  123. package/lib/Socket/socket.js +749 -820
  124. package/lib/Socket/socket.js.map +1 -0
  125. package/lib/Store/index.d.ts +4 -4
  126. package/lib/Store/index.d.ts.map +1 -0
  127. package/lib/Store/index.js +4 -24
  128. package/lib/Store/index.js.map +1 -0
  129. package/lib/Store/make-in-memory-store.d.ts +44 -104
  130. package/lib/Store/make-in-memory-store.d.ts.map +1 -0
  131. package/lib/Store/make-in-memory-store.js +199 -213
  132. package/lib/Store/make-in-memory-store.js.map +1 -0
  133. package/lib/Store/make-ordered-dictionary.d.ts +13 -12
  134. package/lib/Store/make-ordered-dictionary.d.ts.map +1 -0
  135. package/lib/Store/make-ordered-dictionary.js +38 -45
  136. package/lib/Store/make-ordered-dictionary.js.map +1 -0
  137. package/lib/Store/object-repository.d.ts +11 -10
  138. package/lib/Store/object-repository.d.ts.map +1 -0
  139. package/lib/Store/object-repository.js +9 -16
  140. package/lib/Store/object-repository.js.map +1 -0
  141. package/lib/Types/Auth.d.ts +93 -97
  142. package/lib/Types/Auth.d.ts.map +1 -0
  143. package/lib/Types/Auth.js +2 -3
  144. package/lib/Types/Auth.js.map +1 -0
  145. package/lib/Types/Bussines.d.ts +25 -0
  146. package/lib/Types/Bussines.d.ts.map +1 -0
  147. package/lib/Types/Bussines.js +2 -3
  148. package/lib/Types/Bussines.js.map +1 -0
  149. package/lib/Types/Call.d.ts +14 -13
  150. package/lib/Types/Call.d.ts.map +1 -0
  151. package/lib/Types/Call.js +2 -3
  152. package/lib/Types/Call.js.map +1 -0
  153. package/lib/Types/Chat.d.ts +78 -97
  154. package/lib/Types/Chat.d.ts.map +1 -0
  155. package/lib/Types/Chat.js +8 -9
  156. package/lib/Types/Chat.js.map +1 -0
  157. package/lib/Types/Contact.d.ts +12 -9
  158. package/lib/Types/Contact.d.ts.map +1 -0
  159. package/lib/Types/Contact.js +2 -3
  160. package/lib/Types/Contact.js.map +1 -0
  161. package/lib/Types/Events.d.ts +206 -176
  162. package/lib/Types/Events.d.ts.map +1 -0
  163. package/lib/Types/Events.js +2 -3
  164. package/lib/Types/Events.js.map +1 -0
  165. package/lib/Types/GroupMetadata.d.ts +53 -48
  166. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  167. package/lib/Types/GroupMetadata.js +2 -3
  168. package/lib/Types/GroupMetadata.js.map +1 -0
  169. package/lib/Types/Label.d.ts +13 -14
  170. package/lib/Types/Label.d.ts.map +1 -0
  171. package/lib/Types/Label.js +24 -30
  172. package/lib/Types/Label.js.map +1 -0
  173. package/lib/Types/LabelAssociation.d.ts +15 -20
  174. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  175. package/lib/Types/LabelAssociation.js +6 -12
  176. package/lib/Types/LabelAssociation.js.map +1 -0
  177. package/lib/Types/Message.d.ts +248 -412
  178. package/lib/Types/Message.d.ts.map +1 -0
  179. package/lib/Types/Message.js +17 -19
  180. package/lib/Types/Message.js.map +1 -0
  181. package/lib/Types/Mex.d.ts +141 -0
  182. package/lib/Types/Mex.d.ts.map +1 -0
  183. package/lib/Types/Mex.js +37 -0
  184. package/lib/Types/Mex.js.map +1 -0
  185. package/lib/Types/Product.d.ts +58 -71
  186. package/lib/Types/Product.d.ts.map +1 -0
  187. package/lib/Types/Product.js +2 -3
  188. package/lib/Types/Product.js.map +1 -0
  189. package/lib/Types/RichType.d.ts +3 -0
  190. package/lib/Types/RichType.d.ts.map +1 -0
  191. package/lib/Types/RichType.js +23 -0
  192. package/lib/Types/RichType.js.bak +23 -0
  193. package/lib/Types/RichType.js.map +1 -0
  194. package/lib/Types/Signal.d.ts +71 -82
  195. package/lib/Types/Signal.d.ts.map +1 -0
  196. package/lib/Types/Signal.js +2 -3
  197. package/lib/Types/Signal.js.map +1 -0
  198. package/lib/Types/Socket.d.ts +76 -81
  199. package/lib/Types/Socket.d.ts.map +1 -0
  200. package/lib/Types/Socket.js +3 -3
  201. package/lib/Types/Socket.js.map +1 -0
  202. package/lib/Types/State.d.ts +75 -19
  203. package/lib/Types/State.d.ts.map +1 -0
  204. package/lib/Types/State.js +56 -14
  205. package/lib/Types/State.js.map +1 -0
  206. package/lib/Types/USync.d.ts +8 -8
  207. package/lib/Types/USync.d.ts.map +1 -0
  208. package/lib/Types/USync.js +2 -3
  209. package/lib/Types/USync.js.map +1 -0
  210. package/lib/Types/index.d.ts +47 -62
  211. package/lib/Types/index.d.ts.map +1 -0
  212. package/lib/Types/index.js +26 -50
  213. package/lib/Types/index.js.map +1 -0
  214. package/lib/Utils/auth-utils.d.ts +13 -10
  215. package/lib/Utils/auth-utils.d.ts.map +1 -0
  216. package/lib/Utils/auth-utils.js +213 -454
  217. package/lib/Utils/auth-utils.js.map +1 -0
  218. package/lib/Utils/browser-utils.d.ts +4 -0
  219. package/lib/Utils/browser-utils.d.ts.map +1 -0
  220. package/lib/Utils/browser-utils.js +28 -0
  221. package/lib/Utils/browser-utils.js.map +1 -0
  222. package/lib/Utils/business.d.ts +14 -20
  223. package/lib/Utils/business.d.ts.map +1 -0
  224. package/lib/Utils/business.js +110 -134
  225. package/lib/Utils/business.js.map +1 -0
  226. package/lib/Utils/chat-utils.d.ts +88 -70
  227. package/lib/Utils/chat-utils.d.ts.map +1 -0
  228. package/lib/Utils/chat-utils.js +466 -403
  229. package/lib/Utils/chat-utils.js.map +1 -0
  230. package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
  231. package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
  232. package/lib/Utils/companion-reg-client-utils.js +35 -0
  233. package/lib/Utils/companion-reg-client-utils.js.map +1 -0
  234. package/lib/Utils/crypto.d.ts +27 -46
  235. package/lib/Utils/crypto.d.ts.map +1 -0
  236. package/lib/Utils/crypto.js +117 -188
  237. package/lib/Utils/crypto.js.map +1 -0
  238. package/lib/Utils/decode-wa-message.d.ts +58 -45
  239. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  240. package/lib/Utils/decode-wa-message.js +213 -303
  241. package/lib/Utils/decode-wa-message.js.map +1 -0
  242. package/lib/Utils/event-buffer.d.ts +14 -17
  243. package/lib/Utils/event-buffer.d.ts.map +1 -0
  244. package/lib/Utils/event-buffer.js +321 -296
  245. package/lib/Utils/event-buffer.js.map +1 -0
  246. package/lib/Utils/generics.d.ts +66 -92
  247. package/lib/Utils/generics.d.ts.map +1 -0
  248. package/lib/Utils/generics.js +270 -436
  249. package/lib/Utils/generics.js.map +1 -0
  250. package/lib/Utils/history.d.ts +24 -23
  251. package/lib/Utils/history.d.ts.map +1 -0
  252. package/lib/Utils/history.js +106 -76
  253. package/lib/Utils/history.js.map +1 -0
  254. package/lib/Utils/identity-change-handler.d.ts +44 -0
  255. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  256. package/lib/Utils/identity-change-handler.js +50 -0
  257. package/lib/Utils/identity-change-handler.js.map +1 -0
  258. package/lib/Utils/index.d.ts +24 -21
  259. package/lib/Utils/index.d.ts.map +1 -0
  260. package/lib/Utils/index.js +24 -41
  261. package/lib/Utils/index.js.map +1 -0
  262. package/lib/Utils/link-preview.d.ts +12 -14
  263. package/lib/Utils/link-preview.d.ts.map +1 -0
  264. package/lib/Utils/link-preview.js +40 -75
  265. package/lib/Utils/link-preview.js.map +1 -0
  266. package/lib/Utils/logger.d.ts +10 -11
  267. package/lib/Utils/logger.d.ts.map +1 -0
  268. package/lib/Utils/logger.js +3 -7
  269. package/lib/Utils/logger.js.map +1 -0
  270. package/lib/Utils/lt-hash.d.ts +8 -14
  271. package/lib/Utils/lt-hash.d.ts.map +1 -0
  272. package/lib/Utils/lt-hash.js +3 -53
  273. package/lib/Utils/lt-hash.js.map +1 -0
  274. package/lib/Utils/make-mutex.d.ts +7 -7
  275. package/lib/Utils/make-mutex.d.ts.map +1 -0
  276. package/lib/Utils/make-mutex.js +28 -44
  277. package/lib/Utils/make-mutex.js.map +1 -0
  278. package/lib/Utils/message-retry-manager.d.ts +115 -88
  279. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  280. package/lib/Utils/message-retry-manager.js +265 -160
  281. package/lib/Utils/message-retry-manager.js.map +1 -0
  282. package/lib/Utils/messages-media.d.ts +105 -107
  283. package/lib/Utils/messages-media.d.ts.map +1 -0
  284. package/lib/Utils/messages-media.js +548 -619
  285. package/lib/Utils/messages-media.js.bak +786 -0
  286. package/lib/Utils/messages-media.js.map +1 -0
  287. package/lib/Utils/messages.d.ts +52 -66
  288. package/lib/Utils/messages.d.ts.map +1 -0
  289. package/lib/Utils/messages.js +1730 -1558
  290. package/lib/Utils/messages.js.backup +1768 -0
  291. package/lib/Utils/messages.js.bak +1809 -0
  292. package/lib/Utils/messages.js.bak2 +893 -0
  293. package/lib/Utils/messages.js.bak3 +1183 -0
  294. package/lib/Utils/messages.js.map +1 -0
  295. package/lib/Utils/noise-handler.d.ts +18 -18
  296. package/lib/Utils/noise-handler.d.ts.map +1 -0
  297. package/lib/Utils/noise-handler.js +176 -130
  298. package/lib/Utils/noise-handler.js.map +1 -0
  299. package/lib/Utils/offline-node-processor.d.ts +17 -0
  300. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  301. package/lib/Utils/offline-node-processor.js +40 -0
  302. package/lib/Utils/offline-node-processor.js.map +1 -0
  303. package/lib/Utils/pre-key-manager.d.ts +28 -0
  304. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  305. package/lib/Utils/pre-key-manager.js +106 -0
  306. package/lib/Utils/pre-key-manager.js.map +1 -0
  307. package/lib/Utils/process-message.d.ts +43 -32
  308. package/lib/Utils/process-message.d.ts.map +1 -0
  309. package/lib/Utils/process-message.js +484 -282
  310. package/lib/Utils/process-message.js.map +1 -0
  311. package/lib/Utils/reporting-utils.d.ts +11 -0
  312. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  313. package/lib/Utils/reporting-utils.js +258 -0
  314. package/lib/Utils/reporting-utils.js.map +1 -0
  315. package/lib/Utils/rich-message-utils.d.ts +49 -0
  316. package/lib/Utils/rich-message-utils.d.ts.map +1 -0
  317. package/lib/Utils/rich-message-utils.js +1220 -724
  318. package/lib/Utils/rich-message-utils.js.backup +706 -0
  319. package/lib/Utils/rich-message-utils.js.bak +246 -0
  320. package/lib/Utils/rich-message-utils.js.map +1 -0
  321. package/lib/Utils/rich-message-utils.js.original +1332 -0
  322. package/lib/Utils/signal.d.ts +37 -32
  323. package/lib/Utils/signal.d.ts.map +1 -0
  324. package/lib/Utils/signal.js +140 -105
  325. package/lib/Utils/signal.js.map +1 -0
  326. package/lib/Utils/stanza-ack.d.ts +11 -0
  327. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  328. package/lib/Utils/stanza-ack.js +38 -0
  329. package/lib/Utils/stanza-ack.js.map +1 -0
  330. package/lib/Utils/sync-action-utils.d.ts +19 -0
  331. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  332. package/lib/Utils/sync-action-utils.js +49 -0
  333. package/lib/Utils/sync-action-utils.js.map +1 -0
  334. package/lib/Utils/tc-token-utils.d.ts +37 -0
  335. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  336. package/lib/Utils/tc-token-utils.js +163 -0
  337. package/lib/Utils/tc-token-utils.js.map +1 -0
  338. package/lib/Utils/use-multi-file-auth-state.d.ts +5 -5
  339. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  340. package/lib/Utils/use-multi-file-auth-state.js +70 -120
  341. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  342. package/lib/Utils/use-single-file-auth-state.d.ts +11 -13
  343. package/lib/Utils/use-single-file-auth-state.d.ts.map +1 -0
  344. package/lib/Utils/use-single-file-auth-state.js +92 -66
  345. package/lib/Utils/use-single-file-auth-state.js.map +1 -0
  346. package/lib/Utils/use-sqlite-auth-state.d.ts +11 -0
  347. package/lib/Utils/use-sqlite-auth-state.d.ts.map +1 -0
  348. package/lib/Utils/use-sqlite-auth-state.js +109 -0
  349. package/lib/Utils/use-sqlite-auth-state.js.map +1 -0
  350. package/lib/Utils/validate-connection.d.ts +11 -13
  351. package/lib/Utils/validate-connection.d.ts.map +1 -0
  352. package/lib/Utils/validate-connection.js +128 -113
  353. package/lib/Utils/validate-connection.js.map +1 -0
  354. package/lib/WABinary/constants.d.ts +25 -27
  355. package/lib/WABinary/constants.d.ts.map +1 -0
  356. package/lib/WABinary/constants.js +1451 -1292
  357. package/lib/WABinary/constants.js.bak +1373 -0
  358. package/lib/WABinary/constants.js.map +1 -0
  359. package/lib/WABinary/decode.d.ts +7 -9
  360. package/lib/WABinary/decode.d.ts.map +1 -0
  361. package/lib/WABinary/decode.js +163 -189
  362. package/lib/WABinary/decode.js.map +1 -0
  363. package/lib/WABinary/encode.d.ts +3 -3
  364. package/lib/WABinary/encode.d.ts.map +1 -0
  365. package/lib/WABinary/encode.js +110 -155
  366. package/lib/WABinary/encode.js.map +1 -0
  367. package/lib/WABinary/generic-utils.d.ts +14 -27
  368. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  369. package/lib/WABinary/generic-utils.js +177 -105
  370. package/lib/WABinary/generic-utils.js.map +1 -0
  371. package/lib/WABinary/index.d.ts +6 -5
  372. package/lib/WABinary/index.d.ts.map +1 -0
  373. package/lib/WABinary/index.js +6 -25
  374. package/lib/WABinary/index.js.map +1 -0
  375. package/lib/WABinary/jid-utils.d.ts +41 -51
  376. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  377. package/lib/WABinary/jid-utils.js +83 -120
  378. package/lib/WABinary/jid-utils.js.map +1 -0
  379. package/lib/WABinary/types.d.ts +10 -13
  380. package/lib/WABinary/types.d.ts.map +1 -0
  381. package/lib/WABinary/types.js +2 -3
  382. package/lib/WABinary/types.js.map +1 -0
  383. package/lib/WAM/BinaryInfo.d.ts +8 -15
  384. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  385. package/lib/WAM/BinaryInfo.js +7 -14
  386. package/lib/WAM/BinaryInfo.js.map +1 -0
  387. package/lib/WAM/constants.d.ts +30 -37
  388. package/lib/WAM/constants.d.ts.map +1 -0
  389. package/lib/WAM/constants.js +19193 -11711
  390. package/lib/WAM/constants.js.map +1 -0
  391. package/lib/WAM/encode.d.ts +3 -3
  392. package/lib/WAM/encode.d.ts.map +1 -0
  393. package/lib/WAM/encode.js +95 -109
  394. package/lib/WAM/encode.js.map +1 -0
  395. package/lib/WAM/index.d.ts +4 -3
  396. package/lib/WAM/index.d.ts.map +1 -0
  397. package/lib/WAM/index.js +4 -23
  398. package/lib/WAM/index.js.map +1 -0
  399. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -9
  400. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  401. package/lib/WAUSync/Protocols/USyncContactProtocol.js +37 -21
  402. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  403. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +19 -22
  404. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  405. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +18 -26
  406. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  407. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +11 -12
  408. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  409. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +12 -20
  410. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  411. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +11 -12
  412. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  413. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +16 -24
  414. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  415. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  416. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
  417. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  418. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
  419. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  420. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  421. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +51 -0
  422. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  423. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
  424. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  425. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
  426. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  427. package/lib/WAUSync/Protocols/index.d.ts +6 -6
  428. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  429. package/lib/WAUSync/Protocols/index.js +6 -26
  430. package/lib/WAUSync/Protocols/index.js.map +1 -0
  431. package/lib/WAUSync/USyncQuery.d.ts +27 -28
  432. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  433. package/lib/WAUSync/USyncQuery.js +68 -62
  434. package/lib/WAUSync/USyncQuery.js.map +1 -0
  435. package/lib/WAUSync/USyncUser.d.ts +15 -10
  436. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  437. package/lib/WAUSync/USyncUser.js +20 -19
  438. package/lib/WAUSync/USyncUser.js.map +1 -0
  439. package/lib/WAUSync/index.d.ts +4 -3
  440. package/lib/WAUSync/index.d.ts.map +1 -0
  441. package/lib/WAUSync/index.js +4 -23
  442. package/lib/WAUSync/index.js.map +1 -0
  443. package/lib/index.d.ts +11 -12
  444. package/lib/index.d.ts.map +1 -0
  445. package/lib/index.js +12 -39
  446. package/lib/index.js.map +1 -0
  447. package/package.json +86 -42
@@ -1,364 +1,196 @@
1
- "use strict"
2
-
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k
5
- var desc = Object.getOwnPropertyDescriptor(m, k)
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k] } }
8
- }
9
- Object.defineProperty(o, k2, desc)
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k
12
- o[k2] = m[k]
13
- }))
14
-
15
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
- Object.defineProperty(o, "default", { enumerable: true, value: v })
17
- }) : function(o, v) {
18
- o["default"] = v
19
- })
20
-
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod
23
- var result = {}
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k)
25
- __setModuleDefault(result, mod)
26
- return result
27
- }
28
-
29
- var __importDefault = (this && this.__importDefault) || function (mod) {
30
- return (mod && mod.__esModule) ? mod : { "default": mod }
31
- }
32
-
33
- Object.defineProperty(exports, "__esModule", { value: true })
34
-
35
- const boom_1 = require("@hapi/boom")
36
- const axios_1 = __importDefault(require("axios"))
37
- const crypto_1 = require("crypto")
38
- const crypto_2 = require("./crypto")
39
- const os_1 = require("os")
40
- const WAProto_1 = require("../../WAProto")
41
- const baileysVersion = [2, 3000, 1027934701];
42
- const Types_1 = require("../Types")
43
- const WABinary_1 = require("../WABinary")
44
-
45
- const COMPANION_PLATFORM_MAP = {
46
- 'Chrome': '49',
47
- 'Edge': '50',
48
- 'Firefox': '51',
49
- 'Opera': '53',
50
- 'Safari': '54',
51
- 'Brave': '1.79.112',
52
- 'Vivaldi': '6.2.3105.58',
53
- 'Tor': '12.5.3',
54
- 'Yandex': '23.7.1',
55
- 'Falkon': '22.08.3',
56
- 'Epiphany': '44.2'
57
- }
58
-
59
- const PLATFORM_MAP = {
60
- 'aix': 'AIX',
61
- 'darwin': 'Mac OS',
62
- 'win32': 'Windows',
63
- 'android': 'Android',
64
- 'freebsd': 'FreeBSD',
65
- 'openbsd': 'OpenBSD',
66
- 'sunos': 'Solaris',
67
- 'linux': 'Linux',
68
- 'ubuntu': 'Ubuntu',
69
- 'ios': 'iOS',
70
- 'baileys': 'Baileys',
71
- 'chromeos': 'Chrome OS',
72
- 'tizen': 'Tizen',
73
- 'watchos': 'watchOS',
74
- 'wearos': 'Wear OS',
75
- 'harmonyos': 'HarmonyOS',
76
- 'kaios': 'KaiOS',
77
- 'smarttv': 'Smart TV',
78
- 'raspberrypi': 'Raspberry Pi OS',
79
- 'symbian': 'Symbian',
80
- 'blackberry': 'Blackberry OS',
81
- 'windowsphone': 'Windows Phone'
82
- }
83
-
84
- const PLATFORM_VERSIONS = {
85
- 'ubuntu': '22.04.4',
86
- 'darwin': '18.5',
87
- 'win32': '10.0.22631',
88
- 'android': '14.0.0',
89
- 'freebsd': '13.2',
90
- 'openbsd': '7.3',
91
- 'sunos': '11',
92
- 'linux': '6.5',
93
- 'ios': '18.2',
94
- 'baileys': '6.5.0',
95
- 'chromeos': '117.0.5938.132',
96
- 'tizen': '6.5',
97
- 'watchos': '10.1',
98
- 'wearos': '4.1',
99
- 'harmonyos': '4.0.0',
100
- 'kaios': '3.1',
101
- 'smarttv': '23.3.1',
102
- 'raspberrypi': '11 (Bullseye)',
103
- 'symbian': '3',
104
- 'blackberry': '10.3.3',
105
- 'windowsphone': '8.1'
106
- }
107
-
108
- const Browsers = {
109
- ubuntu: (browser) => {
110
- return [PLATFORM_MAP['ubuntu'], browser, PLATFORM_VERSIONS['ubuntu']]
111
- },
112
- macOS: (browser) => {
113
- return [PLATFORM_MAP['darwin'], browser, PLATFORM_VERSIONS['darwin']]
114
- },
115
- windows: (browser) => {
116
- return [PLATFORM_MAP['win32'], browser, PLATFORM_VERSIONS['win32']]
117
- },
118
- linux: (browser) => {
119
- return [PLATFORM_MAP['linux'], browser, PLATFORM_VERSIONS['linux']]
120
- },
121
- solaris: (browser) => {
122
- return [PLATFORM_MAP['sunos'], browser, PLATFORM_VERSIONS['sunos']]
123
- },
124
- baileys: (browser) => {
125
- return [PLATFORM_MAP['baileys'], browser, PLATFORM_VERSIONS['baileys']]
126
- },
127
- android: (browser) => {
128
- return [PLATFORM_MAP['android'], browser, PLATFORM_VERSIONS['android']]
129
- },
130
- iOS: (browser) => {
131
- return [PLATFORM_MAP['ios'], browser, PLATFORM_VERSIONS['ios']]
132
- },
133
- kaiOS: (browser) => {
134
- return [PLATFORM_MAP['kaios'], browser, PLATFORM_VERSIONS['kaios']]
135
- },
136
- chromeOS: (browser) => {
137
- return [PLATFORM_MAP['chromeos'], browser, PLATFORM_VERSIONS['chromeos']]
138
- },
139
- appropriate: (browser) => {
140
- const platform = os_1.platform()
141
- const platformName = PLATFORM_MAP[platform] || 'Unknown OS'
142
- return [platformName, browser, PLATFORM_VERSIONS[platform] || 'latest']
143
- },
144
- custom: (platform, browser, version) => {
145
- const platformName = PLATFORM_MAP[platform.toLowerCase()] || platform
146
- return [platformName, browser, version || PLATFORM_VERSIONS[platform] || 'latest']
147
- }
148
- }
149
-
150
- const BufferJSON = {
1
+ import { Boom } from '@hapi/boom';
2
+ import { createHash, randomBytes } from 'crypto';
3
+ import { proto } from '../../WAProto/index.js';
4
+ const baileysVersion = [2, 3000, 1035194821];
5
+ import { DisconnectReason } from '../Types/index.js';
6
+ import { getAllBinaryNodeChildren, jidDecode } from '../WABinary/index.js';
7
+ import { sha256 } from './crypto.js';
8
+ export const BufferJSON = {
151
9
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
152
10
  replacer: (k, value) => {
153
11
  if (Buffer.isBuffer(value) || value instanceof Uint8Array || value?.type === 'Buffer') {
154
- return { type: 'Buffer', data: Buffer.from(value?.data || value).toString('base64') }
12
+ return { type: 'Buffer', data: Buffer.from(value?.data || value).toString('base64') };
155
13
  }
156
- return value
14
+ return value;
157
15
  },
158
16
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
159
17
  reviver: (_, value) => {
160
- if (typeof value === 'object' && !!value && (value.buffer === true || value.type === 'Buffer')) {
161
- const val = value.data || value.value
162
- return typeof val === 'string' ? Buffer.from(val, 'base64') : Buffer.from(val || [])
18
+ if (typeof value === 'object' && value !== null && value.type === 'Buffer' && typeof value.data === 'string') {
19
+ return Buffer.from(value.data, 'base64');
163
20
  }
164
- return value
21
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
22
+ const keys = Object.keys(value);
23
+ if (keys.length > 0 && keys.every(k => !isNaN(parseInt(k, 10)))) {
24
+ const values = Object.values(value);
25
+ if (values.every(v => typeof v === 'number')) {
26
+ return Buffer.from(values);
27
+ }
28
+ }
29
+ }
30
+ return value;
165
31
  }
166
- }
167
-
168
- const getPlatformId = (browser) => {
169
- const platformType = WAProto_1.proto.DeviceProps.PlatformType[browser.toUpperCase()]
170
- return platformType ? platformType.toString() : '1'
171
- }
172
-
173
- const getKeyAuthor = (key, meId = 'me') => {
174
- return key?.fromMe ? meId : key?.participant || key?.remoteJid || ''
175
- }
176
-
177
- const writeRandomPadMax16 = (msg) => {
178
- const pad = crypto_1.randomBytes(1)
179
- const padLength = (pad[0] & 0x0f) + 1
180
-
181
- return Buffer.concat([msg, Buffer.alloc(padLength, padLength)])
182
- }
183
-
184
- const unpadRandomMax16 = (e) => {
185
- const t = new Uint8Array(e)
32
+ };
33
+ export const getKeyAuthor = (key, meId = 'me') => (key?.fromMe ? meId : key?.participantAlt || key?.remoteJidAlt || key?.participant || key?.remoteJid) || '';
34
+ export const isStringNullOrEmpty = (value) =>
35
+ // eslint-disable-next-line eqeqeq
36
+ value == null || value === '';
37
+ export const writeRandomPadMax16 = (msg) => {
38
+ const pad = randomBytes(1);
39
+ const padLength = (pad[0] & 0x0f) + 1;
40
+ return Buffer.concat([msg, Buffer.alloc(padLength, padLength)]);
41
+ };
42
+ export const unpadRandomMax16 = (e) => {
43
+ const t = new Uint8Array(e);
186
44
  if (0 === t.length) {
187
- throw new Error('unpadPkcs7 given empty bytes')
45
+ throw new Error('unpadPkcs7 given empty bytes');
188
46
  }
189
- var r = t[t.length - 1]
47
+ var r = t[t.length - 1];
190
48
  if (r > t.length) {
191
- throw new Error(`unpad given ${t.length} bytes, but pad is ${r}`)
49
+ throw new Error(`unpad given ${t.length} bytes, but pad is ${r}`);
192
50
  }
193
- return new Uint8Array(t.buffer, t.byteOffset, t.length - r)
194
- }
195
-
196
- const encodeWAMessage = (message) => {
197
- return writeRandomPadMax16(WAProto_1.proto.Message.encode(message).finish())
198
- }
199
-
200
- const encodeNewsletterMessage = (message) => {
201
- return WAProto_1.proto.Message.encode(message).finish()
202
- }
203
-
204
- const generateRegistrationId = () => {
205
- return Uint16Array.from(crypto_1.randomBytes(2))[0] & 16383
206
- }
207
-
208
- const encodeBigEndian = (e, t = 4) => {
209
- let r = e
210
- const a = new Uint8Array(t)
51
+ return new Uint8Array(t.buffer, t.byteOffset, t.length - r);
52
+ };
53
+ // code is inspired by whatsmeow
54
+ export const generateParticipantHashV2 = (participants) => {
55
+ participants.sort();
56
+ const sha256Hash = sha256(Buffer.from(participants.join(''))).toString('base64');
57
+ return '2:' + sha256Hash.slice(0, 6);
58
+ };
59
+ export const encodeWAMessage = (message) => writeRandomPadMax16(proto.Message.encode(message).finish());
60
+ export const generateRegistrationId = () => {
61
+ return Uint16Array.from(randomBytes(2))[0] & 16383;
62
+ };
63
+ export const encodeBigEndian = (e, t = 4) => {
64
+ let r = e;
65
+ const a = new Uint8Array(t);
211
66
  for (let i = t - 1; i >= 0; i--) {
212
- a[i] = 255 & r
213
- r >>>= 8
67
+ a[i] = 255 & r;
68
+ r >>>= 8;
214
69
  }
215
- return a
216
- }
217
-
218
- const toNumber = (t) => ((typeof t === 'object' && t) ? ('toNumber' in t ? t.toNumber() : t.low) : t || 0)
219
-
70
+ return a;
71
+ };
72
+ export const toNumber = (t) => typeof t === 'object' && t ? ('toNumber' in t ? t.toNumber() : t.low) : t || 0;
220
73
  /** unix timestamp of a date in seconds */
221
- const unixTimestampSeconds = (date = new Date()) => Math.floor(date.getTime() / 1000)
222
-
223
- const debouncedTimeout = (intervalMs = 1000, task) => {
224
- let timeout
74
+ export const unixTimestampSeconds = (date = new Date()) => Math.floor(date.getTime() / 1000);
75
+ export const debouncedTimeout = (intervalMs = 1000, task) => {
76
+ let timeout;
225
77
  return {
226
78
  start: (newIntervalMs, newTask) => {
227
- task = newTask || task
228
- intervalMs = newIntervalMs || intervalMs
229
- timeout && clearTimeout(timeout)
230
- timeout = setTimeout(() => task?.(), intervalMs)
79
+ task = newTask || task;
80
+ intervalMs = newIntervalMs || intervalMs;
81
+ timeout && clearTimeout(timeout);
82
+ timeout = setTimeout(() => task?.(), intervalMs);
231
83
  },
232
84
  cancel: () => {
233
- timeout && clearTimeout(timeout)
234
- timeout = undefined
85
+ timeout && clearTimeout(timeout);
86
+ timeout = undefined;
235
87
  },
236
- setTask: (newTask) => task = newTask,
237
- setInterval: (newInterval) => intervalMs = newInterval
238
- }
239
- }
240
-
241
- const delay = (ms) => {
242
- return delayCancellable(ms).delay
243
- }
244
-
245
- const delayCancellable = (ms) => {
246
- const stack = new Error().stack
247
- let timeout
248
- let reject
88
+ setTask: (newTask) => (task = newTask),
89
+ setInterval: (newInterval) => (intervalMs = newInterval)
90
+ };
91
+ };
92
+ export const delay = (ms) => delayCancellable(ms).delay;
93
+ export const delayCancellable = (ms) => {
94
+ const stack = new Error().stack;
95
+ let timeout;
96
+ let reject;
249
97
  const delay = new Promise((resolve, _reject) => {
250
- timeout = setTimeout(resolve, ms)
251
- reject = _reject
252
- })
98
+ timeout = setTimeout(resolve, ms);
99
+ reject = _reject;
100
+ });
253
101
  const cancel = () => {
254
- clearTimeout(timeout)
255
- reject(new boom_1.Boom('Cancelled', {
102
+ clearTimeout(timeout);
103
+ reject(new Boom('Cancelled', {
256
104
  statusCode: 500,
257
105
  data: {
258
106
  stack
259
107
  }
260
- }))
261
- }
262
- return { delay, cancel }
263
- }
264
-
265
- async function promiseTimeout(ms, promise) {
108
+ }));
109
+ };
110
+ return { delay, cancel };
111
+ };
112
+ export async function promiseTimeout(ms, promise) {
266
113
  if (!ms) {
267
- return new Promise(promise)
114
+ return new Promise(promise);
268
115
  }
269
- const stack = new Error().stack
116
+ const stack = new Error().stack;
270
117
  // Create a promise that rejects in <ms> milliseconds
271
- const { delay, cancel } = delayCancellable(ms)
118
+ const { delay, cancel } = delayCancellable(ms);
272
119
  const p = new Promise((resolve, reject) => {
273
- delay.then(() => reject(new boom_1.Boom('Timed Out', {
274
- statusCode: Types_1.DisconnectReason.timedOut,
120
+ delay
121
+ .then(() => reject(new Boom('Timed Out', {
122
+ statusCode: DisconnectReason.timedOut,
275
123
  data: {
276
124
  stack
277
125
  }
278
- }))).catch(err => reject(err))
279
- promise(resolve, reject)
280
- }).finally(cancel)
281
- return p
282
- }
283
-
284
- const generateMessageID = (userId) => {
285
- const data = Buffer.alloc(8 + 20 + 16)
286
- data.writeBigUInt64BE(BigInt(Math.floor(Date.now() / 1000)))
126
+ })))
127
+ .catch(err => reject(err));
128
+ promise(resolve, reject);
129
+ }).finally(cancel);
130
+ return p;
131
+ }
132
+ // inspired from whatsmeow code
133
+ // https://github.com/tulir/whatsmeow/blob/64bc969fbe78d31ae0dd443b8d4c80a5d026d07a/send.go#L42
134
+ export const generateMessageIDV2 = (userId) => {
135
+ const data = Buffer.alloc(8 + 20 + 16);
136
+ data.writeBigUInt64BE(BigInt(Math.floor(Date.now() / 1000)));
287
137
  if (userId) {
288
- const id = WABinary_1.jidDecode(userId)
138
+ const id = jidDecode(userId);
289
139
  if (id?.user) {
290
- data.write(id.user, 8)
291
- data.write('@c.us', 8 + id.user.length)
140
+ data.write(id.user, 8);
141
+ data.write('@c.us', 8 + id.user.length);
292
142
  }
293
143
  }
294
- const random = crypto_1.randomBytes(20)
295
- random.copy(data, 28)
296
- const sha = asciiDecode([89, 85, 69, 80, 79, 78, 84, 65])
297
- const hash = crypto_1.createHash('sha256').update(data).digest()
298
- return sha + hash.toString('hex').toUpperCase().substring(0, 18)
299
- }
300
-
301
- // code is inspired by whatsmeow
302
- const generateParticipantHashV2 = (participants) => {
303
- participants.sort()
304
- const sha256Hash = crypto_2.sha256(Buffer.from(participants.join(''))).toString('base64')
305
- return '2:' + sha256Hash.slice(0, 6)
144
+ const random = randomBytes(16);
145
+ random.copy(data, 28);
146
+ const hash = createHash('sha256').update(data).digest();
147
+ return '3EB0' + hash.toString('hex').toUpperCase().substring(0, 18);
306
148
  };
307
-
308
- function bindWaitForEvent(ev, event) {
149
+ // generate a random ID to attach to a message
150
+ export const generateMessageID = () => '3EB0' + randomBytes(18).toString('hex').toUpperCase();
151
+ export function bindWaitForEvent(ev, event) {
309
152
  return async (check, timeoutMs) => {
310
- let listener
311
- let closeListener
312
- await (promiseTimeout(timeoutMs, (resolve, reject) => {
153
+ let listener;
154
+ let closeListener;
155
+ await promiseTimeout(timeoutMs, (resolve, reject) => {
313
156
  closeListener = ({ connection, lastDisconnect }) => {
314
157
  if (connection === 'close') {
315
- reject((lastDisconnect?.error)
316
- || new boom_1.Boom('Connection Closed', { statusCode: Types_1.DisconnectReason.connectionClosed }))
158
+ reject(lastDisconnect?.error || new Boom('Connection Closed', { statusCode: DisconnectReason.connectionClosed }));
317
159
  }
318
- }
319
- ev.on('connection.update', closeListener)
160
+ };
161
+ ev.on('connection.update', closeListener);
320
162
  listener = async (update) => {
321
163
  if (await check(update)) {
322
- resolve()
164
+ resolve();
323
165
  }
324
- }
325
- ev.on(event, listener)
166
+ };
167
+ ev.on(event, listener);
326
168
  }).finally(() => {
327
- ev.off(event, listener)
328
- ev.off('connection.update', closeListener)
329
- }))
330
- }
331
- }
332
-
333
- const bindWaitForConnectionUpdate = (ev) => {
334
- return bindWaitForEvent(ev, 'connection.update')
335
- }
336
-
337
- const printQRIfNecessaryListener = (ev, logger) => {
338
- ev.on('connection.update', async ({ qr }) => {
339
- if (qr) {
340
- const QR = await Promise.resolve().then(() => __importStar(require('qrcode-terminal'))).then(m => m.default || m)
341
- .catch(() => {
342
- logger.error('QR code terminal not added as dependency')
343
- })
344
- QR?.generate(qr, { small: true })
345
- }
346
- })
169
+ ev.off(event, listener);
170
+ ev.off('connection.update', closeListener);
171
+ });
172
+ };
347
173
  }
348
-
174
+ export const bindWaitForConnectionUpdate = (ev) => bindWaitForEvent(ev, 'connection.update');
349
175
  /**
350
176
  * utility that fetches latest baileys version from the master branch.
351
177
  * Use to ensure your WA connection is always on the latest version
352
178
  */
353
- const fetchLatestBaileysVersion = async (options = {}) => {
179
+ export const fetchLatestBaileysVersion = async (options = {}) => {
354
180
  const URL = 'https://raw.githubusercontent.com/WhiskeySockets/Baileys/master/src/Defaults/index.ts';
355
181
  try {
356
- const result = await axios_1.default.get(URL, {
357
- ...options,
358
- responseType: 'text'
182
+ const response = await fetch(URL, {
183
+ dispatcher: options.dispatcher,
184
+ method: 'GET',
185
+ headers: options.headers
359
186
  });
360
- const lines = result.data.split('\n');
361
- const versionLine = lines[6];
187
+ if (!response.ok) {
188
+ throw new Boom(`Failed to fetch latest Baileys version: ${response.statusText}`, { statusCode: response.status });
189
+ }
190
+ const text = await response.text();
191
+ // Extract version from line 7 (const version = [...])
192
+ const lines = text.split('\n');
193
+ const versionLine = lines[6]; // Line 7 (0-indexed)
362
194
  const versionMatch = versionLine.match(/const version = \[(\d+),\s*(\d+),\s*(\d+)\]/);
363
195
  if (versionMatch) {
364
196
  const version = [parseInt(versionMatch[1]), parseInt(versionMatch[2]), parseInt(versionMatch[3])];
@@ -366,10 +198,58 @@ const fetchLatestBaileysVersion = async (options = {}) => {
366
198
  version,
367
199
  isLatest: true
368
200
  };
369
- } else {
201
+ }
202
+ else {
370
203
  throw new Error('Could not parse version from Defaults/index.ts');
371
204
  }
372
- } catch (error) {
205
+ }
206
+ catch (error) {
207
+ return {
208
+ version: baileysVersion,
209
+ isLatest: false,
210
+ error
211
+ };
212
+ }
213
+ };
214
+ /**
215
+ * A utility that fetches the latest web version of whatsapp.
216
+ * Use to ensure your WA connection is always on the latest version
217
+ */
218
+ export const fetchLatestWaWebVersion = async (options = {}) => {
219
+ try {
220
+ // Absolute minimal headers required to bypass anti-bot detection
221
+ const defaultHeaders = {
222
+ 'sec-fetch-site': 'none',
223
+ 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'
224
+ };
225
+ const headers = { ...defaultHeaders, ...options.headers };
226
+ const response = await fetch('https://web.whatsapp.com/sw.js', {
227
+ ...options,
228
+ method: 'GET',
229
+ headers
230
+ });
231
+ if (!response.ok) {
232
+ throw new Boom(`Failed to fetch sw.js: ${response.statusText}`, { statusCode: response.status });
233
+ }
234
+ const data = await response.text();
235
+ const regex = /\\?"client_revision\\?":\s*(\d+)/;
236
+ const match = data.match(regex);
237
+ if (!match?.[1]) {
238
+ return {
239
+ version: baileysVersion,
240
+ isLatest: false,
241
+ error: {
242
+ message: 'Could not find client revision in the fetched content'
243
+ }
244
+ };
245
+ }
246
+ const clientRevision = match[1];
247
+ return {
248
+ version: [2, 3000, +clientRevision],
249
+ isLatest: true
250
+ };
251
+ }
252
+ catch (error) {
373
253
  return {
374
254
  version: baileysVersion,
375
255
  isLatest: false,
@@ -377,183 +257,137 @@ const fetchLatestBaileysVersion = async (options = {}) => {
377
257
  };
378
258
  }
379
259
  };
380
-
381
260
  /** unique message tag prefix for MD clients */
382
- const generateMdTagPrefix = () => {
383
- const bytes = crypto_1.randomBytes(4)
384
- return `${bytes.readUInt16BE()}.${bytes.readUInt16BE(2)}-`
385
- }
386
-
261
+ export const generateMdTagPrefix = () => {
262
+ const bytes = randomBytes(4);
263
+ return `${bytes.readUInt16BE()}.${bytes.readUInt16BE(2)}-`;
264
+ };
387
265
  const STATUS_MAP = {
388
- 'sender': WAProto_1.proto.WebMessageInfo.Status.SERVER_ACK,
389
- 'played': WAProto_1.proto.WebMessageInfo.Status.PLAYED,
390
- 'read': WAProto_1.proto.WebMessageInfo.Status.READ,
391
- 'read-self': WAProto_1.proto.WebMessageInfo.Status.READ
392
- }
393
-
266
+ sender: proto.WebMessageInfo.Status.SERVER_ACK,
267
+ played: proto.WebMessageInfo.Status.PLAYED,
268
+ read: proto.WebMessageInfo.Status.READ,
269
+ 'read-self': proto.WebMessageInfo.Status.READ
270
+ };
394
271
  /**
395
272
  * Given a type of receipt, returns what the new status of the message should be
396
273
  * @param type type from receipt
397
274
  */
398
- const getStatusFromReceiptType = (type) => {
399
- const status = STATUS_MAP[type]
275
+ export const getStatusFromReceiptType = (type) => {
276
+ const status = STATUS_MAP[type];
400
277
  if (typeof type === 'undefined') {
401
- return WAProto_1.proto.WebMessageInfo.Status.DELIVERY_ACK
278
+ return proto.WebMessageInfo.Status.DELIVERY_ACK;
402
279
  }
403
- return status
404
- }
405
-
280
+ return status;
281
+ };
406
282
  const CODE_MAP = {
407
- conflict: Types_1.DisconnectReason.connectionReplaced
408
- }
409
-
283
+ conflict: DisconnectReason.connectionReplaced
284
+ };
410
285
  /**
411
286
  * Stream errors generally provide a reason, map that to a baileys DisconnectReason
412
287
  * @param reason the string reason given, eg. "conflict"
413
288
  */
414
- const getErrorCodeFromStreamError = (node) => {
415
- const [reasonNode] = WABinary_1.getAllBinaryNodeChildren(node)
416
- let reason = reasonNode?.tag || 'unknown'
417
- const statusCode = +(node.attrs.code || CODE_MAP[reason] || Types_1.DisconnectReason.badSession)
418
- if (statusCode === Types_1.DisconnectReason.restartRequired) {
419
- reason = 'restart required'
289
+ export const getErrorCodeFromStreamError = (node) => {
290
+ const [reasonNode] = getAllBinaryNodeChildren(node);
291
+ let reason = reasonNode?.tag || 'unknown';
292
+ const statusCode = +(node.attrs.code || CODE_MAP[reason] || DisconnectReason.badSession);
293
+ if (statusCode === DisconnectReason.restartRequired) {
294
+ reason = 'restart required';
420
295
  }
421
296
  return {
422
297
  reason,
423
298
  statusCode
424
- }
425
- }
426
-
427
- const getCallStatusFromNode = ({ tag, attrs }) => {
428
- let status
299
+ };
300
+ };
301
+ export const getCallStatusFromNode = ({ tag, attrs }) => {
302
+ let status;
429
303
  switch (tag) {
430
304
  case 'offer':
431
305
  case 'offer_notice':
432
- status = 'offer'
433
- break
306
+ status = 'offer';
307
+ break;
434
308
  case 'terminate':
435
309
  if (attrs.reason === 'timeout') {
436
- status = 'timeout'
310
+ status = 'timeout';
437
311
  }
438
312
  else {
439
313
  //fired when accepted/rejected/timeout/caller hangs up
440
- status = 'terminate'
314
+ status = 'terminate';
441
315
  }
442
- break
316
+ break;
317
+ case 'preaccept':
318
+ status = 'preaccept';
319
+ break;
320
+ case 'transport':
321
+ status = 'transport';
322
+ break;
323
+ case 'relaylatency':
324
+ status = 'relaylatency';
325
+ break;
443
326
  case 'reject':
444
- status = 'reject'
445
- break
327
+ status = 'reject';
328
+ break;
446
329
  case 'accept':
447
- status = 'accept'
448
- break
330
+ status = 'accept';
331
+ break;
449
332
  default:
450
- status = 'ringing'
451
- break
333
+ status = 'ringing';
334
+ break;
452
335
  }
453
- return status
454
- }
455
-
456
- const getCodeFromWSError = (error) => {
457
- let statusCode = 500
458
- if (error?.message?.includes('Unexpected server response: ')) {
459
- const code = +(error?.message.slice('Unexpected server response: '.length))
336
+ return status;
337
+ };
338
+ const UNEXPECTED_SERVER_CODE_TEXT = 'Unexpected server response: ';
339
+ export const getCodeFromWSError = (error) => {
340
+ let statusCode = 500;
341
+ if (error?.message?.includes(UNEXPECTED_SERVER_CODE_TEXT)) {
342
+ const code = +error?.message.slice(UNEXPECTED_SERVER_CODE_TEXT.length);
460
343
  if (!Number.isNaN(code) && code >= 400) {
461
- statusCode = code
344
+ statusCode = code;
462
345
  }
463
346
  }
464
- else if (error?.code?.startsWith('E') || error?.message?.includes('time out')) {
465
- statusCode = 408
347
+ else if (
348
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
349
+ error?.code?.startsWith('E') ||
350
+ error?.message?.includes('timed out')) {
351
+ // handle ETIMEOUT, ENOTFOUND etc
352
+ statusCode = 408;
466
353
  }
467
- return statusCode
468
- }
469
-
354
+ return statusCode;
355
+ };
470
356
  /**
471
357
  * Is the given platform WA business
472
358
  * @param platform AuthenticationCreds.platform
473
359
  */
474
- const isWABusinessPlatform = (platform) => {
475
- return platform === 'smbi' || platform === 'smba'
476
- }
477
-
360
+ export const isWABusinessPlatform = (platform) => {
361
+ return platform === 'smbi' || platform === 'smba';
362
+ };
478
363
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
479
- function trimUndefined(obj) {
364
+ export function trimUndefined(obj) {
480
365
  for (const key in obj) {
481
366
  if (typeof obj[key] === 'undefined') {
482
- delete obj[key]
367
+ delete obj[key];
483
368
  }
484
369
  }
485
- return obj
370
+ return obj;
486
371
  }
487
-
488
- function bytesToCrockford(buffer) {
489
- let value = 0
490
- let bitCount = 0
491
- const crockford = []
372
+ const CROCKFORD_CHARACTERS = '123456789ABCDEFGHJKLMNPQRSTVWXYZ';
373
+ export function bytesToCrockford(buffer) {
374
+ let value = 0;
375
+ let bitCount = 0;
376
+ const crockford = [];
492
377
  for (const element of buffer) {
493
- value = (value << 8) | (element & 0xff)
494
- bitCount += 8
378
+ value = (value << 8) | (element & 0xff);
379
+ bitCount += 8;
495
380
  while (bitCount >= 5) {
496
- crockford.push('123456789ABCDEFGHJKLMNPQRSTVWXYZ'.charAt((value >>> (bitCount - 5)) & 31))
497
- bitCount -= 5
381
+ crockford.push(CROCKFORD_CHARACTERS.charAt((value >>> (bitCount - 5)) & 31));
382
+ bitCount -= 5;
498
383
  }
499
384
  }
500
385
  if (bitCount > 0) {
501
- crockford.push('123456789ABCDEFGHJKLMNPQRSTVWXYZ'.charAt((value << (5 - bitCount)) & 31))
386
+ crockford.push(CROCKFORD_CHARACTERS.charAt((value << (5 - bitCount)) & 31));
502
387
  }
503
- return crockford.join('')
504
- }
505
-
506
- const toUnicodeEscape = (text) => {
507
- return text.split("").map(char => "\\u" + char.charCodeAt(0).toString(16).padStart(4, "0")).join("")
508
- }
509
-
510
- const fromUnicodeEscape = (escapedText) => {
511
- return escapedText.replace(/\\u[\dA-Fa-f]{4}/g, match => String.fromCharCode(parseInt(match.slice(2), 16)))
512
- }
513
-
514
- const asciiEncode = (text) => {
515
- var encoded = text.split("").map(c => c.charCodeAt(0))
516
- return encoded
388
+ return crockford.join('');
517
389
  }
518
-
519
- const asciiDecode = (...codes) => {
520
- var codeArray = Array.isArray(codes[0]) ? codes[0] : codes
521
- return codeArray.map(c => String.fromCharCode(c)).join("")
390
+ export function encodeNewsletterMessage(message) {
391
+ return proto.Message.encode(message).finish();
522
392
  }
523
-
524
- module.exports = {
525
- Browsers,
526
- BufferJSON,
527
- getPlatformId,
528
- getKeyAuthor,
529
- writeRandomPadMax16,
530
- unpadRandomMax16,
531
- encodeWAMessage,
532
- encodeNewsletterMessage,
533
- generateRegistrationId,
534
- encodeBigEndian,
535
- toNumber,
536
- unixTimestampSeconds,
537
- debouncedTimeout,
538
- delay,
539
- delayCancellable,
540
- promiseTimeout,
541
- generateMessageID,
542
- generateParticipantHashV2,
543
- bindWaitForEvent,
544
- bindWaitForConnectionUpdate,
545
- printQRIfNecessaryListener,
546
- fetchLatestBaileysVersion,
547
- generateMdTagPrefix,
548
- getStatusFromReceiptType,
549
- getErrorCodeFromStreamError,
550
- getCallStatusFromNode,
551
- getCodeFromWSError,
552
- isWABusinessPlatform,
553
- trimUndefined,
554
- bytesToCrockford,
555
- toUnicodeEscape,
556
- fromUnicodeEscape,
557
- asciiEncode,
558
- asciiDecode
559
- }
393
+ //# sourceMappingURL=generics.js.map