@d0v3riz/baileys 6.7.22 → 6.7.23

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 (356) hide show
  1. package/WAProto/GenerateStatics.sh +3 -2
  2. package/WAProto/fix-imports.js +29 -0
  3. package/WAProto/index.js +4136 -4138
  4. package/lib/Defaults/index.d.ts +3 -2
  5. package/lib/Defaults/index.d.ts.map +1 -0
  6. package/lib/Defaults/index.js +36 -40
  7. package/lib/Defaults/index.js.map +1 -0
  8. package/lib/Signal/Group/ciphertext-message.d.ts +1 -0
  9. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  10. package/lib/Signal/Group/ciphertext-message.js +2 -5
  11. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  12. package/lib/Signal/Group/group-session-builder.d.ts +4 -3
  13. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  14. package/lib/Signal/Group/group-session-builder.js +7 -41
  15. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  16. package/lib/Signal/Group/group_cipher.d.ts +3 -2
  17. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  18. package/lib/Signal/Group/group_cipher.js +14 -16
  19. package/lib/Signal/Group/group_cipher.js.map +1 -0
  20. package/lib/Signal/Group/index.d.ts +12 -11
  21. package/lib/Signal/Group/index.d.ts.map +1 -0
  22. package/lib/Signal/Group/index.js +12 -57
  23. package/lib/Signal/Group/index.js.map +1 -0
  24. package/lib/Signal/Group/keyhelper.d.ts +2 -1
  25. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  26. package/lib/Signal/Group/keyhelper.js +8 -44
  27. package/lib/Signal/Group/keyhelper.js.map +1 -0
  28. package/lib/Signal/Group/queue-job.d.ts +2 -0
  29. package/lib/Signal/Group/queue-job.d.ts.map +1 -0
  30. package/lib/Signal/Group/queue-job.js +5 -5
  31. package/lib/Signal/Group/queue-job.js.map +1 -0
  32. package/lib/Signal/Group/sender-chain-key.d.ts +2 -1
  33. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  34. package/lib/Signal/Group/sender-chain-key.js +7 -9
  35. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  36. package/lib/Signal/Group/sender-key-distribution-message.d.ts +2 -1
  37. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  38. package/lib/Signal/Group/sender-key-distribution-message.js +6 -9
  39. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  40. package/lib/Signal/Group/sender-key-message.d.ts +2 -1
  41. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  42. package/lib/Signal/Group/sender-key-message.js +10 -12
  43. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  44. package/lib/Signal/Group/sender-key-name.d.ts +1 -0
  45. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  46. package/lib/Signal/Group/sender-key-name.js +2 -5
  47. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  48. package/lib/Signal/Group/sender-key-record.d.ts +2 -1
  49. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  50. package/lib/Signal/Group/sender-key-record.js +9 -12
  51. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  52. package/lib/Signal/Group/sender-key-state.d.ts +3 -2
  53. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  54. package/lib/Signal/Group/sender-key-state.js +6 -9
  55. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  56. package/lib/Signal/Group/sender-message-key.d.ts +1 -0
  57. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  58. package/lib/Signal/Group/sender-message-key.js +5 -7
  59. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  60. package/lib/Signal/libsignal.d.ts +3 -2
  61. package/lib/Signal/libsignal.d.ts.map +1 -0
  62. package/lib/Signal/libsignal.js +22 -55
  63. package/lib/Signal/libsignal.js.map +1 -0
  64. package/lib/Socket/Client/index.d.ts +3 -2
  65. package/lib/Socket/Client/index.d.ts.map +1 -0
  66. package/lib/Socket/Client/index.js +3 -18
  67. package/lib/Socket/Client/index.js.map +1 -0
  68. package/lib/Socket/Client/types.d.ts +2 -1
  69. package/lib/Socket/Client/types.d.ts.map +1 -0
  70. package/lib/Socket/Client/types.js +4 -6
  71. package/lib/Socket/Client/types.js.map +1 -0
  72. package/lib/Socket/Client/websocket.d.ts +2 -1
  73. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  74. package/lib/Socket/Client/websocket.js +14 -26
  75. package/lib/Socket/Client/websocket.js.map +1 -0
  76. package/lib/Socket/business.d.ts +66 -64
  77. package/lib/Socket/business.d.ts.map +1 -0
  78. package/lib/Socket/business.js +32 -37
  79. package/lib/Socket/business.js.map +1 -0
  80. package/lib/Socket/chats.d.ts +21 -19
  81. package/lib/Socket/chats.d.ts.map +1 -0
  82. package/lib/Socket/chats.js +176 -141
  83. package/lib/Socket/chats.js.map +1 -0
  84. package/lib/Socket/communities.d.ts +219 -0
  85. package/lib/Socket/communities.d.ts.map +1 -0
  86. package/lib/Socket/communities.js +351 -0
  87. package/lib/Socket/communities.js.map +1 -0
  88. package/lib/Socket/groups.d.ts +37 -35
  89. package/lib/Socket/groups.d.ts.map +1 -0
  90. package/lib/Socket/groups.js +56 -63
  91. package/lib/Socket/groups.js.map +1 -0
  92. package/lib/Socket/index.d.ts +102 -70
  93. package/lib/Socket/index.d.ts.map +1 -0
  94. package/lib/Socket/index.js +16 -9
  95. package/lib/Socket/index.js.map +1 -0
  96. package/lib/Socket/messages-recv.d.ts +51 -49
  97. package/lib/Socket/messages-recv.d.ts.map +1 -0
  98. package/lib/Socket/messages-recv.js +180 -173
  99. package/lib/Socket/messages-recv.js.map +1 -0
  100. package/lib/Socket/messages-send.d.ts +48 -46
  101. package/lib/Socket/messages-send.d.ts.map +1 -0
  102. package/lib/Socket/messages-send.js +75 -84
  103. package/lib/Socket/messages-send.js.map +1 -0
  104. package/lib/Socket/mex.d.ts +2 -1
  105. package/lib/Socket/mex.d.ts.map +1 -0
  106. package/lib/Socket/mex.js +12 -16
  107. package/lib/Socket/mex.js.map +1 -0
  108. package/lib/Socket/newsletter.d.ts +46 -44
  109. package/lib/Socket/newsletter.d.ts.map +1 -0
  110. package/lib/Socket/newsletter.js +23 -27
  111. package/lib/Socket/newsletter.js.map +1 -0
  112. package/lib/Socket/socket.d.ts +13 -12
  113. package/lib/Socket/socket.d.ts.map +1 -0
  114. package/lib/Socket/socket.js +135 -115
  115. package/lib/Socket/socket.js.map +1 -0
  116. package/lib/Socket/usync.d.ts +15 -14
  117. package/lib/Socket/usync.d.ts.map +1 -0
  118. package/lib/Socket/usync.js +9 -11
  119. package/lib/Socket/usync.js.map +1 -0
  120. package/lib/Types/Auth.d.ts +4 -3
  121. package/lib/Types/Auth.d.ts.map +1 -0
  122. package/lib/Types/Auth.js +2 -2
  123. package/lib/Types/Auth.js.map +1 -0
  124. package/lib/Types/Call.d.ts +1 -0
  125. package/lib/Types/Call.d.ts.map +1 -0
  126. package/lib/Types/Call.js +2 -2
  127. package/lib/Types/Call.js.map +1 -0
  128. package/lib/Types/Chat.d.ts +10 -7
  129. package/lib/Types/Chat.d.ts.map +1 -0
  130. package/lib/Types/Chat.js +2 -4
  131. package/lib/Types/Chat.js.map +1 -0
  132. package/lib/Types/Contact.d.ts +1 -0
  133. package/lib/Types/Contact.d.ts.map +1 -0
  134. package/lib/Types/Contact.js +2 -2
  135. package/lib/Types/Contact.js.map +1 -0
  136. package/lib/Types/Events.d.ts +11 -10
  137. package/lib/Types/Events.d.ts.map +1 -0
  138. package/lib/Types/Events.js +2 -2
  139. package/lib/Types/Events.js.map +1 -0
  140. package/lib/Types/GroupMetadata.d.ts +3 -2
  141. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  142. package/lib/Types/GroupMetadata.js +2 -2
  143. package/lib/Types/GroupMetadata.js.map +1 -0
  144. package/lib/Types/Label.d.ts +1 -0
  145. package/lib/Types/Label.d.ts.map +1 -0
  146. package/lib/Types/Label.js +3 -5
  147. package/lib/Types/Label.js.map +1 -0
  148. package/lib/Types/LabelAssociation.d.ts +1 -0
  149. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  150. package/lib/Types/LabelAssociation.js +3 -5
  151. package/lib/Types/LabelAssociation.js.map +1 -0
  152. package/lib/Types/Message.d.ts +9 -7
  153. package/lib/Types/Message.d.ts.map +1 -0
  154. package/lib/Types/Message.js +7 -7
  155. package/lib/Types/Message.js.map +1 -0
  156. package/lib/Types/Newsletter.d.ts +1 -0
  157. package/lib/Types/Newsletter.d.ts.map +1 -0
  158. package/lib/Types/Newsletter.js +5 -7
  159. package/lib/Types/Newsletter.js.map +1 -0
  160. package/lib/Types/Product.d.ts +2 -1
  161. package/lib/Types/Product.d.ts.map +1 -0
  162. package/lib/Types/Product.js +2 -2
  163. package/lib/Types/Product.js.map +1 -0
  164. package/lib/Types/Signal.d.ts +2 -1
  165. package/lib/Types/Signal.d.ts.map +1 -0
  166. package/lib/Types/Signal.js +2 -2
  167. package/lib/Types/Signal.js.map +1 -0
  168. package/lib/Types/Socket.d.ts +8 -7
  169. package/lib/Types/Socket.d.ts.map +1 -0
  170. package/lib/Types/Socket.js +3 -2
  171. package/lib/Types/Socket.js.map +1 -0
  172. package/lib/Types/State.d.ts +14 -2
  173. package/lib/Types/State.d.ts.map +1 -0
  174. package/lib/Types/State.js +13 -2
  175. package/lib/Types/State.js.map +1 -0
  176. package/lib/Types/USync.d.ts +3 -2
  177. package/lib/Types/USync.d.ts.map +1 -0
  178. package/lib/Types/USync.js +2 -2
  179. package/lib/Types/USync.js.map +1 -0
  180. package/lib/Types/index.d.ts +15 -14
  181. package/lib/Types/index.d.ts.map +1 -0
  182. package/lib/Types/index.js +15 -31
  183. package/lib/Types/index.js.map +1 -0
  184. package/lib/Utils/auth-utils.d.ts +3 -2
  185. package/lib/Utils/auth-utils.d.ts.map +1 -0
  186. package/lib/Utils/auth-utils.js +25 -34
  187. package/lib/Utils/auth-utils.js.map +1 -0
  188. package/lib/Utils/baileys-event-stream.d.ts +2 -1
  189. package/lib/Utils/baileys-event-stream.d.ts.map +1 -0
  190. package/lib/Utils/baileys-event-stream.js +15 -22
  191. package/lib/Utils/baileys-event-stream.js.map +1 -0
  192. package/lib/Utils/business.d.ts +3 -2
  193. package/lib/Utils/business.d.ts.map +1 -0
  194. package/lib/Utils/business.js +61 -70
  195. package/lib/Utils/business.js.map +1 -0
  196. package/lib/Utils/chat-utils.d.ts +8 -7
  197. package/lib/Utils/chat-utils.d.ts.map +1 -0
  198. package/lib/Utils/chat-utils.js +130 -137
  199. package/lib/Utils/chat-utils.js.map +1 -0
  200. package/lib/Utils/crypto.d.ts +2 -1
  201. package/lib/Utils/crypto.d.ts.map +1 -0
  202. package/lib/Utils/crypto.js +37 -86
  203. package/lib/Utils/crypto.js.map +1 -0
  204. package/lib/Utils/decode-wa-message.d.ts +5 -4
  205. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  206. package/lib/Utils/decode-wa-message.js +38 -44
  207. package/lib/Utils/decode-wa-message.js.map +1 -0
  208. package/lib/Utils/event-buffer.d.ts +4 -4
  209. package/lib/Utils/event-buffer.d.ts.map +1 -0
  210. package/lib/Utils/event-buffer.js +37 -50
  211. package/lib/Utils/event-buffer.js.map +1 -0
  212. package/lib/Utils/generics.d.ts +9 -8
  213. package/lib/Utils/generics.d.ts.map +1 -0
  214. package/lib/Utils/generics.js +87 -114
  215. package/lib/Utils/generics.js.map +1 -0
  216. package/lib/Utils/history.d.ts +4 -3
  217. package/lib/Utils/history.d.ts.map +1 -0
  218. package/lib/Utils/history.js +32 -40
  219. package/lib/Utils/history.js.map +1 -0
  220. package/lib/Utils/index.d.ts +18 -17
  221. package/lib/Utils/index.d.ts.map +1 -0
  222. package/lib/Utils/index.js +18 -33
  223. package/lib/Utils/index.js.map +1 -0
  224. package/lib/Utils/link-preview.d.ts +4 -3
  225. package/lib/Utils/link-preview.d.ts.map +1 -0
  226. package/lib/Utils/link-preview.js +10 -47
  227. package/lib/Utils/link-preview.js.map +1 -0
  228. package/lib/Utils/logger.d.ts +8 -6
  229. package/lib/Utils/logger.d.ts.map +1 -0
  230. package/lib/Utils/logger.js +3 -7
  231. package/lib/Utils/logger.js.map +1 -0
  232. package/lib/Utils/lt-hash.d.ts +9 -8
  233. package/lib/Utils/lt-hash.d.ts.map +1 -0
  234. package/lib/Utils/lt-hash.js +23 -26
  235. package/lib/Utils/lt-hash.js.map +1 -0
  236. package/lib/Utils/make-mutex.d.ts +1 -0
  237. package/lib/Utils/make-mutex.d.ts.map +1 -0
  238. package/lib/Utils/make-mutex.js +5 -9
  239. package/lib/Utils/make-mutex.js.map +1 -0
  240. package/lib/Utils/messages-media.d.ts +11 -10
  241. package/lib/Utils/messages-media.d.ts.map +1 -0
  242. package/lib/Utils/messages-media.js +141 -203
  243. package/lib/Utils/messages-media.js.map +1 -0
  244. package/lib/Utils/messages.d.ts +7 -6
  245. package/lib/Utils/messages.d.ts.map +1 -0
  246. package/lib/Utils/messages.js +190 -199
  247. package/lib/Utils/messages.js.map +1 -0
  248. package/lib/Utils/noise-handler.d.ts +5 -4
  249. package/lib/Utils/noise-handler.d.ts.map +1 -0
  250. package/lib/Utils/noise-handler.js +22 -26
  251. package/lib/Utils/noise-handler.js.map +1 -0
  252. package/lib/Utils/process-message.d.ts +5 -4
  253. package/lib/Utils/process-message.d.ts.map +1 -0
  254. package/lib/Utils/process-message.js +95 -104
  255. package/lib/Utils/process-message.js.map +1 -0
  256. package/lib/Utils/signal.d.ts +5 -4
  257. package/lib/Utils/signal.d.ts.map +1 -0
  258. package/lib/Utils/signal.js +47 -52
  259. package/lib/Utils/signal.js.map +1 -0
  260. package/lib/Utils/use-multi-file-auth-state.d.ts +2 -1
  261. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  262. package/lib/Utils/use-multi-file-auth-state.js +23 -26
  263. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  264. package/lib/Utils/validate-connection.d.ts +4 -3
  265. package/lib/Utils/validate-connection.d.ts.map +1 -0
  266. package/lib/Utils/validate-connection.js +52 -58
  267. package/lib/Utils/validate-connection.js.map +1 -0
  268. package/lib/WABinary/constants.d.ts +1 -0
  269. package/lib/WABinary/constants.d.ts.map +1 -0
  270. package/lib/WABinary/constants.js +9 -11
  271. package/lib/WABinary/constants.js.map +1 -0
  272. package/lib/WABinary/decode.d.ts +2 -1
  273. package/lib/WABinary/decode.d.ts.map +1 -0
  274. package/lib/WABinary/decode.js +13 -51
  275. package/lib/WABinary/decode.js.map +1 -0
  276. package/lib/WABinary/encode.d.ts +2 -1
  277. package/lib/WABinary/encode.d.ts.map +1 -0
  278. package/lib/WABinary/encode.js +5 -41
  279. package/lib/WABinary/encode.js.map +1 -0
  280. package/lib/WABinary/generic-utils.d.ts +4 -3
  281. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  282. package/lib/WABinary/generic-utils.js +30 -38
  283. package/lib/WABinary/generic-utils.js.map +1 -0
  284. package/lib/WABinary/index.d.ts +6 -5
  285. package/lib/WABinary/index.d.ts.map +1 -0
  286. package/lib/WABinary/index.js +6 -21
  287. package/lib/WABinary/index.js.map +1 -0
  288. package/lib/WABinary/jid-utils.d.ts +1 -0
  289. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  290. package/lib/WABinary/jid-utils.js +21 -35
  291. package/lib/WABinary/jid-utils.js.map +1 -0
  292. package/lib/WABinary/types.d.ts +2 -1
  293. package/lib/WABinary/types.d.ts.map +1 -0
  294. package/lib/WABinary/types.js +2 -2
  295. package/lib/WABinary/types.js.map +1 -0
  296. package/lib/WAM/BinaryInfo.d.ts +2 -1
  297. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  298. package/lib/WAM/BinaryInfo.js +2 -5
  299. package/lib/WAM/BinaryInfo.js.map +1 -0
  300. package/lib/WAM/constants.d.ts +1 -0
  301. package/lib/WAM/constants.d.ts.map +1 -0
  302. package/lib/WAM/constants.js +4 -6
  303. package/lib/WAM/constants.js.map +1 -0
  304. package/lib/WAM/encode.d.ts +2 -1
  305. package/lib/WAM/encode.d.ts.map +1 -0
  306. package/lib/WAM/encode.js +12 -14
  307. package/lib/WAM/encode.js.map +1 -0
  308. package/lib/WAM/index.d.ts +4 -3
  309. package/lib/WAM/index.d.ts.map +1 -0
  310. package/lib/WAM/index.js +4 -19
  311. package/lib/WAM/index.js.map +1 -0
  312. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +4 -3
  313. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  314. package/lib/WAUSync/Protocols/USyncContactProtocol.js +6 -9
  315. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  316. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +3 -2
  317. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  318. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +9 -12
  319. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  320. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +3 -2
  321. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  322. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +6 -9
  323. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  324. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +3 -2
  325. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  326. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +7 -11
  327. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  328. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +4 -3
  329. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  330. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +19 -21
  331. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  332. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +3 -2
  333. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  334. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +2 -5
  335. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  336. package/lib/WAUSync/Protocols/index.d.ts +5 -4
  337. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  338. package/lib/WAUSync/Protocols/index.js +5 -20
  339. package/lib/WAUSync/Protocols/index.js.map +1 -0
  340. package/lib/WAUSync/USyncQuery.d.ts +4 -3
  341. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  342. package/lib/WAUSync/USyncQuery.js +18 -20
  343. package/lib/WAUSync/USyncQuery.js.map +1 -0
  344. package/lib/WAUSync/USyncUser.d.ts +6 -5
  345. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  346. package/lib/WAUSync/USyncUser.js +2 -5
  347. package/lib/WAUSync/USyncUser.js.map +1 -0
  348. package/lib/WAUSync/index.d.ts +4 -3
  349. package/lib/WAUSync/index.d.ts.map +1 -0
  350. package/lib/WAUSync/index.js +4 -19
  351. package/lib/WAUSync/index.js.map +1 -0
  352. package/lib/index.d.ts +9 -8
  353. package/lib/index.d.ts.map +1 -0
  354. package/lib/index.js +11 -30
  355. package/lib/index.js.map +1 -0
  356. package/package.json +26 -26
@@ -1,66 +1,63 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeSocket = void 0;
4
- const boom_1 = require("@hapi/boom");
5
- const crypto_1 = require("crypto");
6
- const url_1 = require("url");
7
- const util_1 = require("util");
8
- const WAProto_1 = require("../../WAProto");
9
- const Defaults_1 = require("../Defaults");
10
- const Types_1 = require("../Types");
11
- const Utils_1 = require("../Utils");
12
- const WABinary_1 = require("../WABinary");
13
- const Client_1 = require("./Client");
1
+ import { Boom } from '@hapi/boom';
2
+ import { randomBytes } from 'crypto';
3
+ import { URL } from 'url';
4
+ import { promisify } from 'util';
5
+ import { proto } from '../../WAProto/index.js';
6
+ import { DEF_CALLBACK_PREFIX, DEF_TAG_PREFIX, INITIAL_PREKEY_COUNT, MIN_PREKEY_COUNT, NOISE_WA_HEADER } from '../Defaults/index.js';
7
+ import { cleanupQueues } from '../Signal/Group/queue-job.js';
8
+ import { DisconnectReason } from '../Types/index.js';
9
+ import { addTransactionCapability, aesEncryptCTR, bindWaitForConnectionUpdate, bytesToCrockford, configureSuccessfulPairing, Curve, derivePairingCodeKey, generateLoginNode, generateMdTagPrefix, generateRegistrationNode, getCodeFromWSError, getErrorCodeFromStreamError, getNextPreKeysNode, getPlatformId, makeEventBuffer, makeNoiseHandler, promiseTimeout } from '../Utils/index.js';
10
+ import { assertNodeErrorFree, binaryNodeToString, encodeBinaryNode, getBinaryNodeChild, getBinaryNodeChildren, jidEncode, S_WHATSAPP_NET } from '../WABinary/index.js';
11
+ import { WebSocketClient } from './Client/index.js';
14
12
  /**
15
13
  * Connects to WA servers and performs:
16
14
  * - simple queries (no retry mechanism, wait for connection establishment)
17
15
  * - listen to messages and emit events
18
16
  * - query phone connection
19
17
  */
20
- const makeSocket = (config) => {
21
- var _a, _b;
18
+ export const makeSocket = (config) => {
22
19
  const { waWebSocketUrl, connectTimeoutMs, logger, keepAliveIntervalMs, browser, auth: authState, printQRInTerminal, defaultQueryTimeoutMs, transactionOpts, qrTimeout, makeSignalRepository } = config;
23
20
  if (printQRInTerminal) {
24
21
  console.warn('⚠️ The printQRInTerminal option has been deprecated. You will no longer receive QR codes in the terminal automatically. Please listen to the connection.update event yourself and handle the QR your way. You can remove this message by removing this opttion. This message will be removed in a future version.');
25
22
  }
26
- const url = typeof waWebSocketUrl === 'string' ? new url_1.URL(waWebSocketUrl) : waWebSocketUrl;
23
+ const url = typeof waWebSocketUrl === 'string' ? new URL(waWebSocketUrl) : waWebSocketUrl;
27
24
  if (config.mobile || url.protocol === 'tcp:') {
28
- throw new boom_1.Boom('Mobile API is not supported anymore', { statusCode: Types_1.DisconnectReason.loggedOut });
25
+ throw new Boom('Mobile API is not supported anymore', { statusCode: DisconnectReason.loggedOut });
29
26
  }
30
- if (url.protocol === 'wss' && ((_a = authState === null || authState === void 0 ? void 0 : authState.creds) === null || _a === void 0 ? void 0 : _a.routingInfo)) {
27
+ if (url.protocol === 'wss' && authState?.creds?.routingInfo) {
31
28
  url.searchParams.append('ED', authState.creds.routingInfo.toString('base64url'));
32
29
  }
33
- const ws = new Client_1.WebSocketClient(url, config);
30
+ const ws = new WebSocketClient(url, config);
34
31
  ws.connect();
35
- const ev = (0, Utils_1.makeEventBuffer)(logger);
32
+ const ev = makeEventBuffer(logger);
36
33
  /** ephemeral key pair used to encrypt/decrypt communication. Unique for each connection */
37
- const ephemeralKeyPair = Utils_1.Curve.generateKeyPair();
34
+ const ephemeralKeyPair = Curve.generateKeyPair();
38
35
  /** WA noise protocol wrapper */
39
- const noise = (0, Utils_1.makeNoiseHandler)({
36
+ const noise = makeNoiseHandler({
40
37
  keyPair: ephemeralKeyPair,
41
- NOISE_HEADER: Defaults_1.NOISE_WA_HEADER,
38
+ NOISE_HEADER: NOISE_WA_HEADER,
42
39
  logger,
43
- routingInfo: (_b = authState === null || authState === void 0 ? void 0 : authState.creds) === null || _b === void 0 ? void 0 : _b.routingInfo
40
+ routingInfo: authState?.creds?.routingInfo
44
41
  });
45
42
  const { creds } = authState;
46
43
  // add transaction capability
47
- const keys = (0, Utils_1.addTransactionCapability)(authState.keys, logger, transactionOpts);
44
+ const keys = addTransactionCapability(authState.keys, logger, transactionOpts);
48
45
  const signalRepository = makeSignalRepository({ creds, keys });
49
46
  let lastDateRecv;
50
47
  let epoch = 1;
51
48
  let keepAliveReq;
52
49
  let qrTimer;
53
50
  let closed = false;
54
- const uqTagId = (0, Utils_1.generateMdTagPrefix)();
51
+ const uqTagId = generateMdTagPrefix();
55
52
  const generateMessageTag = () => `${uqTagId}${epoch++}`;
56
- const sendPromise = (0, util_1.promisify)(ws.send);
53
+ const sendPromise = promisify(ws.send);
57
54
  /** send a raw buffer */
58
55
  const sendRawMessage = async (data) => {
59
56
  if (!ws.isOpen) {
60
- throw new boom_1.Boom('Connection Closed', { statusCode: Types_1.DisconnectReason.connectionClosed });
57
+ throw new Boom('Connection Closed', { statusCode: DisconnectReason.connectionClosed });
61
58
  }
62
59
  const bytes = noise.encodeFrame(data);
63
- await (0, Utils_1.promiseTimeout)(connectTimeoutMs, async (resolve, reject) => {
60
+ await promiseTimeout(connectTimeoutMs, async (resolve, reject) => {
64
61
  try {
65
62
  await sendPromise.call(ws, bytes);
66
63
  resolve();
@@ -73,9 +70,9 @@ const makeSocket = (config) => {
73
70
  /** send a binary node */
74
71
  const sendNode = (frame) => {
75
72
  if (logger.level === 'trace') {
76
- logger.trace({ xml: (0, WABinary_1.binaryNodeToString)(frame), msg: 'xml send' });
73
+ logger.trace({ xml: binaryNodeToString(frame), msg: 'xml send' });
77
74
  }
78
- const buff = (0, WABinary_1.encodeBinaryNode)(frame);
75
+ const buff = encodeBinaryNode(frame);
79
76
  return sendRawMessage(buff);
80
77
  };
81
78
  /** log & process any unexpected errors */
@@ -85,13 +82,13 @@ const makeSocket = (config) => {
85
82
  /** await the next incoming message */
86
83
  const awaitNextMessage = async (sendMsg) => {
87
84
  if (!ws.isOpen) {
88
- throw new boom_1.Boom('Connection Closed', {
89
- statusCode: Types_1.DisconnectReason.connectionClosed
85
+ throw new Boom('Connection Closed', {
86
+ statusCode: DisconnectReason.connectionClosed
90
87
  });
91
88
  }
92
89
  let onOpen;
93
90
  let onClose;
94
- const result = (0, Utils_1.promiseTimeout)(connectTimeoutMs, (resolve, reject) => {
91
+ const result = promiseTimeout(connectTimeoutMs, (resolve, reject) => {
95
92
  onOpen = resolve;
96
93
  onClose = mapWebSocketError(reject);
97
94
  ws.on('frame', onOpen);
@@ -116,21 +113,38 @@ const makeSocket = (config) => {
116
113
  let onRecv;
117
114
  let onErr;
118
115
  try {
119
- const result = await (0, Utils_1.promiseTimeout)(timeoutMs, (resolve, reject) => {
120
- onRecv = resolve;
116
+ const result = await promiseTimeout(timeoutMs, (resolve, reject) => {
117
+ onRecv = data => {
118
+ resolve(data);
119
+ };
121
120
  onErr = err => {
122
- reject(err || new boom_1.Boom('Connection Closed', { statusCode: Types_1.DisconnectReason.connectionClosed }));
121
+ reject(err ||
122
+ new Boom('Connection Closed', {
123
+ statusCode: DisconnectReason.connectionClosed
124
+ }));
123
125
  };
124
126
  ws.on(`TAG:${msgId}`, onRecv);
125
- ws.on('close', onErr); // if the socket closes, you'll never receive the message
126
- ws.off('error', onErr);
127
+ ws.on('close', onErr);
128
+ ws.on('error', onErr);
129
+ return () => reject(new Boom('Query Cancelled'));
127
130
  });
128
131
  return result;
129
132
  }
133
+ catch (error) {
134
+ // Catch timeout and return undefined instead of throwing
135
+ if (error instanceof Boom && error.output?.statusCode === DisconnectReason.timedOut) {
136
+ logger?.warn?.({ msgId }, 'timed out waiting for message');
137
+ return undefined;
138
+ }
139
+ throw error;
140
+ }
130
141
  finally {
131
- ws.off(`TAG:${msgId}`, onRecv);
132
- ws.off('close', onErr); // if the socket closes, you'll never receive the message
133
- ws.off('error', onErr);
142
+ if (onRecv)
143
+ ws.off(`TAG:${msgId}`, onRecv);
144
+ if (onErr) {
145
+ ws.off('close', onErr);
146
+ ws.off('error', onErr);
147
+ }
134
148
  }
135
149
  };
136
150
  /** send a query, and wait for its response. auto-generates message ID if not provided */
@@ -139,9 +153,14 @@ const makeSocket = (config) => {
139
153
  node.attrs.id = generateMessageTag();
140
154
  }
141
155
  const msgId = node.attrs.id;
142
- const [result] = await Promise.all([waitForMessage(msgId, timeoutMs), sendNode(node)]);
143
- if ('tag' in result) {
144
- (0, WABinary_1.assertNodeErrorFree)(result);
156
+ const result = await promiseTimeout(timeoutMs, async (resolve, reject) => {
157
+ const result = await waitForMessage(msgId, timeoutMs).catch(reject);
158
+ sendNode(node)
159
+ .then(() => resolve(result))
160
+ .catch(reject);
161
+ });
162
+ if (result && 'tag' in result) {
163
+ assertNodeErrorFree(result);
145
164
  }
146
165
  return result;
147
166
  };
@@ -150,24 +169,24 @@ const makeSocket = (config) => {
150
169
  let helloMsg = {
151
170
  clientHello: { ephemeral: ephemeralKeyPair.public }
152
171
  };
153
- helloMsg = WAProto_1.proto.HandshakeMessage.fromObject(helloMsg);
172
+ helloMsg = proto.HandshakeMessage.fromObject(helloMsg);
154
173
  logger.info({ browser, helloMsg }, 'connected to WA');
155
- const init = WAProto_1.proto.HandshakeMessage.encode(helloMsg).finish();
174
+ const init = proto.HandshakeMessage.encode(helloMsg).finish();
156
175
  const result = await awaitNextMessage(init);
157
- const handshake = WAProto_1.proto.HandshakeMessage.decode(result);
176
+ const handshake = proto.HandshakeMessage.decode(result);
158
177
  logger.trace({ handshake }, 'handshake recv from WA');
159
178
  const keyEnc = await noise.processHandshake(handshake, creds.noiseKey);
160
179
  let node;
161
180
  if (!creds.me) {
162
- node = (0, Utils_1.generateRegistrationNode)(creds, config);
181
+ node = generateRegistrationNode(creds, config);
163
182
  logger.info({ node }, 'not logged in, attempting registration...');
164
183
  }
165
184
  else {
166
- node = (0, Utils_1.generateLoginNode)(creds.me.id, config);
185
+ node = generateLoginNode(creds.me.id, config);
167
186
  logger.info({ node }, 'logging in...');
168
187
  }
169
- const payloadEnc = noise.encrypt(WAProto_1.proto.ClientPayload.encode(node).finish());
170
- await sendRawMessage(WAProto_1.proto.HandshakeMessage.encode({
188
+ const payloadEnc = noise.encrypt(proto.ClientPayload.encode(node).finish());
189
+ await sendRawMessage(proto.HandshakeMessage.encode({
171
190
  clientFinish: {
172
191
  static: keyEnc,
173
192
  payload: payloadEnc
@@ -183,18 +202,18 @@ const makeSocket = (config) => {
183
202
  id: generateMessageTag(),
184
203
  xmlns: 'encrypt',
185
204
  type: 'get',
186
- to: WABinary_1.S_WHATSAPP_NET
205
+ to: S_WHATSAPP_NET
187
206
  },
188
207
  content: [{ tag: 'count', attrs: {} }]
189
208
  });
190
- const countChild = (0, WABinary_1.getBinaryNodeChild)(result, 'count');
209
+ const countChild = getBinaryNodeChild(result, 'count');
191
210
  return +countChild.attrs.value;
192
211
  };
193
212
  /** generates and uploads a set of pre-keys to the server */
194
- const uploadPreKeys = async (count = Defaults_1.INITIAL_PREKEY_COUNT) => {
213
+ const uploadPreKeys = async (count = INITIAL_PREKEY_COUNT) => {
195
214
  await keys.transaction(async () => {
196
215
  logger.info({ count }, 'uploading pre-keys');
197
- const { update, node } = await (0, Utils_1.getNextPreKeysNode)({ creds, keys }, count);
216
+ const { update, node } = await getNextPreKeysNode({ creds, keys }, count);
198
217
  await query(node);
199
218
  ev.emit('creds.update', update);
200
219
  logger.info({ count }, 'uploaded pre-keys');
@@ -203,13 +222,12 @@ const makeSocket = (config) => {
203
222
  const uploadPreKeysToServerIfRequired = async () => {
204
223
  const preKeyCount = await getAvailablePreKeysOnServer();
205
224
  logger.info(`${preKeyCount} pre-keys found on server`);
206
- if (preKeyCount <= Defaults_1.MIN_PREKEY_COUNT) {
225
+ if (preKeyCount <= MIN_PREKEY_COUNT) {
207
226
  await uploadPreKeys();
208
227
  }
209
228
  };
210
229
  const onMessageReceived = (data) => {
211
230
  noise.decodeFrame(data, frame => {
212
- var _a;
213
231
  // reset ping timeout
214
232
  lastDateRecv = new Date();
215
233
  let anyTriggered = false;
@@ -218,21 +236,21 @@ const makeSocket = (config) => {
218
236
  if (!(frame instanceof Uint8Array)) {
219
237
  const msgId = frame.attrs.id;
220
238
  if (logger.level === 'trace') {
221
- logger.trace({ xml: (0, WABinary_1.binaryNodeToString)(frame), msg: 'recv xml' });
239
+ logger.trace({ xml: binaryNodeToString(frame), msg: 'recv xml' });
222
240
  }
223
241
  /* Check if this is a response to a message we sent */
224
- anyTriggered = ws.emit(`${Defaults_1.DEF_TAG_PREFIX}${msgId}`, frame) || anyTriggered;
242
+ anyTriggered = ws.emit(`${DEF_TAG_PREFIX}${msgId}`, frame) || anyTriggered;
225
243
  /* Check if this is a response to a message we are expecting */
226
244
  const l0 = frame.tag;
227
245
  const l1 = frame.attrs || {};
228
- const l2 = Array.isArray(frame.content) ? (_a = frame.content[0]) === null || _a === void 0 ? void 0 : _a.tag : '';
246
+ const l2 = Array.isArray(frame.content) ? frame.content[0]?.tag : '';
229
247
  for (const key of Object.keys(l1)) {
230
- anyTriggered = ws.emit(`${Defaults_1.DEF_CALLBACK_PREFIX}${l0},${key}:${l1[key]},${l2}`, frame) || anyTriggered;
231
- anyTriggered = ws.emit(`${Defaults_1.DEF_CALLBACK_PREFIX}${l0},${key}:${l1[key]}`, frame) || anyTriggered;
232
- anyTriggered = ws.emit(`${Defaults_1.DEF_CALLBACK_PREFIX}${l0},${key}`, frame) || anyTriggered;
248
+ anyTriggered = ws.emit(`${DEF_CALLBACK_PREFIX}${l0},${key}:${l1[key]},${l2}`, frame) || anyTriggered;
249
+ anyTriggered = ws.emit(`${DEF_CALLBACK_PREFIX}${l0},${key}:${l1[key]}`, frame) || anyTriggered;
250
+ anyTriggered = ws.emit(`${DEF_CALLBACK_PREFIX}${l0},${key}`, frame) || anyTriggered;
233
251
  }
234
- anyTriggered = ws.emit(`${Defaults_1.DEF_CALLBACK_PREFIX}${l0},,${l2}`, frame) || anyTriggered;
235
- anyTriggered = ws.emit(`${Defaults_1.DEF_CALLBACK_PREFIX}${l0}`, frame) || anyTriggered;
252
+ anyTriggered = ws.emit(`${DEF_CALLBACK_PREFIX}${l0},,${l2}`, frame) || anyTriggered;
253
+ anyTriggered = ws.emit(`${DEF_CALLBACK_PREFIX}${l0}`, frame) || anyTriggered;
236
254
  if (!anyTriggered && logger.level === 'debug') {
237
255
  logger.debug({ unhandled: true, msgId, fromMe: false, frame }, 'communication recv');
238
256
  }
@@ -241,11 +259,12 @@ const makeSocket = (config) => {
241
259
  };
242
260
  const end = (error) => {
243
261
  if (closed) {
244
- logger.trace({ trace: error === null || error === void 0 ? void 0 : error.stack }, 'connection already closed');
262
+ logger.trace({ trace: error?.stack }, 'connection already closed');
245
263
  return;
246
264
  }
265
+ cleanupQueues();
247
266
  closed = true;
248
- logger.info({ trace: error === null || error === void 0 ? void 0 : error.stack }, error ? 'connection errored' : 'connection closed');
267
+ logger.info({ trace: error?.stack }, error ? 'connection errored' : 'connection closed');
249
268
  clearInterval(keepAliveReq);
250
269
  clearTimeout(qrTimer);
251
270
  ws.removeAllListeners('close');
@@ -255,7 +274,7 @@ const makeSocket = (config) => {
255
274
  try {
256
275
  ws.close();
257
276
  }
258
- catch (_a) { }
277
+ catch { }
259
278
  }
260
279
  ev.emit('connection.update', {
261
280
  connection: 'close',
@@ -271,7 +290,7 @@ const makeSocket = (config) => {
271
290
  return;
272
291
  }
273
292
  if (ws.isClosed || ws.isClosing) {
274
- throw new boom_1.Boom('Connection Closed', { statusCode: Types_1.DisconnectReason.connectionClosed });
293
+ throw new Boom('Connection Closed', { statusCode: DisconnectReason.connectionClosed });
275
294
  }
276
295
  let onOpen;
277
296
  let onClose;
@@ -297,7 +316,7 @@ const makeSocket = (config) => {
297
316
  it could be that the network is down
298
317
  */
299
318
  if (diff > keepAliveIntervalMs + 5000) {
300
- end(new boom_1.Boom('Connection was lost', { statusCode: Types_1.DisconnectReason.connectionLost }));
319
+ end(new Boom('Connection was lost', { statusCode: DisconnectReason.connectionLost }));
301
320
  }
302
321
  else if (ws.isOpen) {
303
322
  // if its all good, send a keep alive request
@@ -305,7 +324,7 @@ const makeSocket = (config) => {
305
324
  tag: 'iq',
306
325
  attrs: {
307
326
  id: generateMessageTag(),
308
- to: WABinary_1.S_WHATSAPP_NET,
327
+ to: S_WHATSAPP_NET,
309
328
  type: 'get',
310
329
  xmlns: 'w:p'
311
330
  },
@@ -322,7 +341,7 @@ const makeSocket = (config) => {
322
341
  const sendPassiveIq = (tag) => query({
323
342
  tag: 'iq',
324
343
  attrs: {
325
- to: WABinary_1.S_WHATSAPP_NET,
344
+ to: S_WHATSAPP_NET,
326
345
  xmlns: 'passive',
327
346
  type: 'set'
328
347
  },
@@ -330,13 +349,12 @@ const makeSocket = (config) => {
330
349
  });
331
350
  /** logout & invalidate connection */
332
351
  const logout = async (msg) => {
333
- var _a;
334
- const jid = (_a = authState.creds.me) === null || _a === void 0 ? void 0 : _a.id;
352
+ const jid = authState.creds.me?.id;
335
353
  if (jid) {
336
354
  await sendNode({
337
355
  tag: 'iq',
338
356
  attrs: {
339
- to: WABinary_1.S_WHATSAPP_NET,
357
+ to: S_WHATSAPP_NET,
340
358
  type: 'set',
341
359
  id: generateMessageTag(),
342
360
  xmlns: 'md'
@@ -352,23 +370,23 @@ const makeSocket = (config) => {
352
370
  ]
353
371
  });
354
372
  }
355
- end(new boom_1.Boom(msg || 'Intentional Logout', { statusCode: Types_1.DisconnectReason.loggedOut }));
373
+ end(new Boom(msg || 'Intentional Logout', { statusCode: DisconnectReason.loggedOut }));
356
374
  };
357
375
  const requestPairingCode = async (phoneNumber, customPairingCode) => {
358
- const pairingCode = customPairingCode !== null && customPairingCode !== void 0 ? customPairingCode : (0, Utils_1.bytesToCrockford)((0, crypto_1.randomBytes)(5));
359
- if (customPairingCode && (customPairingCode === null || customPairingCode === void 0 ? void 0 : customPairingCode.length) !== 8) {
376
+ const pairingCode = customPairingCode ?? bytesToCrockford(randomBytes(5));
377
+ if (customPairingCode && customPairingCode?.length !== 8) {
360
378
  throw new Error('Custom pairing code must be exactly 8 chars');
361
379
  }
362
380
  authState.creds.pairingCode = pairingCode;
363
381
  authState.creds.me = {
364
- id: (0, WABinary_1.jidEncode)(phoneNumber, 's.whatsapp.net'),
382
+ id: jidEncode(phoneNumber, 's.whatsapp.net'),
365
383
  name: '~'
366
384
  };
367
385
  ev.emit('creds.update', authState.creds);
368
386
  await sendNode({
369
387
  tag: 'iq',
370
388
  attrs: {
371
- to: WABinary_1.S_WHATSAPP_NET,
389
+ to: S_WHATSAPP_NET,
372
390
  type: 'set',
373
391
  id: generateMessageTag(),
374
392
  xmlns: 'md'
@@ -379,7 +397,6 @@ const makeSocket = (config) => {
379
397
  attrs: {
380
398
  jid: authState.creds.me.id,
381
399
  stage: 'companion_hello',
382
- // eslint-disable-next-line camelcase
383
400
  should_show_push_notification: 'true'
384
401
  },
385
402
  content: [
@@ -396,7 +413,7 @@ const makeSocket = (config) => {
396
413
  {
397
414
  tag: 'companion_platform_id',
398
415
  attrs: {},
399
- content: (0, Utils_1.getPlatformId)(browser[1])
416
+ content: getPlatformId(browser[1])
400
417
  },
401
418
  {
402
419
  tag: 'companion_platform_display',
@@ -415,17 +432,17 @@ const makeSocket = (config) => {
415
432
  return authState.creds.pairingCode;
416
433
  };
417
434
  async function generatePairingKey() {
418
- const salt = (0, crypto_1.randomBytes)(32);
419
- const randomIv = (0, crypto_1.randomBytes)(16);
420
- const key = await (0, Utils_1.derivePairingCodeKey)(authState.creds.pairingCode, salt);
421
- const ciphered = (0, Utils_1.aesEncryptCTR)(authState.creds.pairingEphemeralKeyPair.public, key, randomIv);
435
+ const salt = randomBytes(32);
436
+ const randomIv = randomBytes(16);
437
+ const key = await derivePairingCodeKey(authState.creds.pairingCode, salt);
438
+ const ciphered = aesEncryptCTR(authState.creds.pairingEphemeralKeyPair.public, key, randomIv);
422
439
  return Buffer.concat([salt, randomIv, ciphered]);
423
440
  }
424
441
  const sendWAMBuffer = (wamBuffer) => {
425
442
  return query({
426
443
  tag: 'iq',
427
444
  attrs: {
428
- to: WABinary_1.S_WHATSAPP_NET,
445
+ to: S_WHATSAPP_NET,
429
446
  id: generateMessageTag(),
430
447
  xmlns: 'w:stats'
431
448
  },
@@ -449,22 +466,22 @@ const makeSocket = (config) => {
449
466
  }
450
467
  });
451
468
  ws.on('error', mapWebSocketError(end));
452
- ws.on('close', () => end(new boom_1.Boom('Connection Terminated', { statusCode: Types_1.DisconnectReason.connectionClosed })));
469
+ ws.on('close', () => end(new Boom('Connection Terminated', { statusCode: DisconnectReason.connectionClosed })));
453
470
  // the server terminated the connection
454
- ws.on('CB:xmlstreamend', () => end(new boom_1.Boom('Connection Terminated by Server', { statusCode: Types_1.DisconnectReason.connectionClosed })));
471
+ ws.on('CB:xmlstreamend', () => end(new Boom('Connection Terminated by Server', { statusCode: DisconnectReason.connectionClosed })));
455
472
  // QR gen
456
473
  ws.on('CB:iq,type:set,pair-device', async (stanza) => {
457
474
  const iq = {
458
475
  tag: 'iq',
459
476
  attrs: {
460
- to: WABinary_1.S_WHATSAPP_NET,
477
+ to: S_WHATSAPP_NET,
461
478
  type: 'result',
462
479
  id: stanza.attrs.id
463
480
  }
464
481
  };
465
482
  await sendNode(iq);
466
- const pairDeviceNode = (0, WABinary_1.getBinaryNodeChild)(stanza, 'pair-device');
467
- const refNodes = (0, WABinary_1.getBinaryNodeChildren)(pairDeviceNode, 'ref');
483
+ const pairDeviceNode = getBinaryNodeChild(stanza, 'pair-device');
484
+ const refNodes = getBinaryNodeChildren(pairDeviceNode, 'ref');
468
485
  const noiseKeyB64 = Buffer.from(creds.noiseKey.public).toString('base64');
469
486
  const identityKeyB64 = Buffer.from(creds.signedIdentityKey.public).toString('base64');
470
487
  const advB64 = creds.advSecretKey;
@@ -475,7 +492,7 @@ const makeSocket = (config) => {
475
492
  }
476
493
  const refNode = refNodes.shift();
477
494
  if (!refNode) {
478
- end(new boom_1.Boom('QR refs attempts ended', { statusCode: Types_1.DisconnectReason.timedOut }));
495
+ end(new Boom('QR refs attempts ended', { statusCode: DisconnectReason.timedOut }));
479
496
  return;
480
497
  }
481
498
  const ref = refNode.content.toString('utf-8');
@@ -491,7 +508,7 @@ const makeSocket = (config) => {
491
508
  ws.on('CB:iq,,pair-success', async (stanza) => {
492
509
  logger.debug('pair success recv');
493
510
  try {
494
- const { reply, creds: updatedCreds } = (0, Utils_1.configureSuccessfulPairing)(stanza, creds);
511
+ const { reply, creds: updatedCreds } = configureSuccessfulPairing(stanza, creds);
495
512
  logger.info({ me: updatedCreds.me, platform: updatedCreds.platform }, 'pairing configured successfully, expect to restart the connection...');
496
513
  ev.emit('creds.update', updatedCreds);
497
514
  ev.emit('connection.update', { isNewLogin: true, qr: undefined });
@@ -504,8 +521,13 @@ const makeSocket = (config) => {
504
521
  });
505
522
  // login complete
506
523
  ws.on('CB:success', async (node) => {
507
- await uploadPreKeysToServerIfRequired();
508
- await sendPassiveIq('active');
524
+ try {
525
+ await uploadPreKeysToServerIfRequired();
526
+ await sendPassiveIq('active');
527
+ }
528
+ catch (err) {
529
+ logger.warn({ err }, 'failed to send initial passive iq');
530
+ }
509
531
  logger.info('opened connection to WA');
510
532
  clearTimeout(qrTimer); // will never happen in all likelyhood -- but just in case WA sends success on first try
511
533
  ev.emit('creds.update', { me: { ...authState.creds.me, lid: node.attrs.lid } });
@@ -513,16 +535,16 @@ const makeSocket = (config) => {
513
535
  });
514
536
  ws.on('CB:stream:error', (node) => {
515
537
  logger.error({ node }, 'stream errored out');
516
- const { reason, statusCode } = (0, Utils_1.getErrorCodeFromStreamError)(node);
517
- end(new boom_1.Boom(`Stream Errored (${reason})`, { statusCode, data: node }));
538
+ const { reason, statusCode } = getErrorCodeFromStreamError(node);
539
+ end(new Boom(`Stream Errored (${reason})`, { statusCode, data: node }));
518
540
  });
519
541
  // stream fail, possible logout
520
542
  ws.on('CB:failure', (node) => {
521
543
  const reason = +(node.attrs.reason || 500);
522
- end(new boom_1.Boom('Connection Failure', { statusCode: reason, data: node.attrs }));
544
+ end(new Boom('Connection Failure', { statusCode: reason, data: node.attrs }));
523
545
  });
524
546
  ws.on('CB:ib,,downgrade_webclient', () => {
525
- end(new boom_1.Boom('Multi-device beta not joined', { statusCode: Types_1.DisconnectReason.multideviceMismatch }));
547
+ end(new Boom('Multi-device beta not joined', { statusCode: DisconnectReason.multideviceMismatch }));
526
548
  });
527
549
  ws.on('CB:ib,,offline_preview', (node) => {
528
550
  logger.info('offline preview received', JSON.stringify(node));
@@ -533,17 +555,16 @@ const makeSocket = (config) => {
533
555
  });
534
556
  });
535
557
  ws.on('CB:ib,,edge_routing', (node) => {
536
- const edgeRoutingNode = (0, WABinary_1.getBinaryNodeChild)(node, 'edge_routing');
537
- const routingInfo = (0, WABinary_1.getBinaryNodeChild)(edgeRoutingNode, 'routing_info');
538
- if (routingInfo === null || routingInfo === void 0 ? void 0 : routingInfo.content) {
539
- authState.creds.routingInfo = Buffer.from(routingInfo === null || routingInfo === void 0 ? void 0 : routingInfo.content);
558
+ const edgeRoutingNode = getBinaryNodeChild(node, 'edge_routing');
559
+ const routingInfo = getBinaryNodeChild(edgeRoutingNode, 'routing_info');
560
+ if (routingInfo?.content) {
561
+ authState.creds.routingInfo = Buffer.from(routingInfo?.content);
540
562
  ev.emit('creds.update', authState.creds);
541
563
  }
542
564
  });
543
565
  let didStartBuffer = false;
544
566
  process.nextTick(() => {
545
- var _a;
546
- if ((_a = creds.me) === null || _a === void 0 ? void 0 : _a.id) {
567
+ if (creds.me?.id) {
547
568
  // start buffering important events
548
569
  // if we're logged in
549
570
  ev.buffer();
@@ -553,8 +574,8 @@ const makeSocket = (config) => {
553
574
  });
554
575
  // called when all offline notifs are handled
555
576
  ws.on('CB:ib,,offline', (node) => {
556
- const child = (0, WABinary_1.getBinaryNodeChild)(node, 'offline');
557
- const offlineNotifs = +((child === null || child === void 0 ? void 0 : child.attrs.count) || 0);
577
+ const child = getBinaryNodeChild(node, 'offline');
578
+ const offlineNotifs = +(child?.attrs.count || 0);
558
579
  logger.info(`handled ${offlineNotifs} offline messages/notifications`);
559
580
  if (didStartBuffer) {
560
581
  ev.flush();
@@ -564,10 +585,9 @@ const makeSocket = (config) => {
564
585
  });
565
586
  // update credentials when required
566
587
  ev.on('creds.update', update => {
567
- var _a, _b;
568
- const name = (_a = update.me) === null || _a === void 0 ? void 0 : _a.name;
588
+ const name = update.me?.name;
569
589
  // if name has just been received
570
- if (((_b = creds.me) === null || _b === void 0 ? void 0 : _b.name) !== name) {
590
+ if (creds.me?.name !== name) {
571
591
  logger.debug({ name }, 'updated pushName');
572
592
  sendNode({
573
593
  tag: 'presence',
@@ -600,17 +620,17 @@ const makeSocket = (config) => {
600
620
  uploadPreKeysToServerIfRequired,
601
621
  requestPairingCode,
602
622
  /** Waits for the connection to WA to reach a state */
603
- waitForConnectionUpdate: (0, Utils_1.bindWaitForConnectionUpdate)(ev),
623
+ waitForConnectionUpdate: bindWaitForConnectionUpdate(ev),
604
624
  sendWAMBuffer
605
625
  };
606
626
  };
607
- exports.makeSocket = makeSocket;
608
627
  /**
609
628
  * map the websocket error to the right type
610
629
  * so it can be retried by the caller
611
630
  * */
612
631
  function mapWebSocketError(handler) {
613
632
  return (error) => {
614
- handler(new boom_1.Boom(`WebSocket Error (${error === null || error === void 0 ? void 0 : error.message})`, { statusCode: (0, Utils_1.getCodeFromWSError)(error), data: error }));
633
+ handler(new Boom(`WebSocket Error (${error?.message})`, { statusCode: getCodeFromWSError(error), data: error }));
615
634
  };
616
635
  }
636
+ //# sourceMappingURL=socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/Socket/socket.ts"],"names":[],"mappings":"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"}