@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,39 +1,34 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.makeMessagesRecvSocket = void 0;
7
- const node_cache_1 = __importDefault(require("@cacheable/node-cache"));
8
- const boom_1 = require("@hapi/boom");
9
- const crypto_1 = require("crypto");
10
- const WAProto_1 = require("../../WAProto");
11
- const Defaults_1 = require("../Defaults");
12
- const Types_1 = require("../Types");
13
- const Utils_1 = require("../Utils");
14
- const make_mutex_1 = require("../Utils/make-mutex");
15
- const WABinary_1 = require("../WABinary");
16
- const groups_1 = require("./groups");
17
- const messages_send_1 = require("./messages-send");
18
- const makeMessagesRecvSocket = (config) => {
1
+ import NodeCache from '@cacheable/node-cache';
2
+ import { Boom } from '@hapi/boom';
3
+ import { randomBytes } from 'crypto';
4
+ import Long from 'long';
5
+ import { proto } from '../../WAProto/index.js';
6
+ import { DEFAULT_CACHE_TTLS, KEY_BUNDLE_TYPE, MIN_PREKEY_COUNT } from '../Defaults/index.js';
7
+ import { WAMessageStatus, WAMessageStubType } from '../Types/index.js';
8
+ import { aesDecryptCTR, aesEncryptGCM, cleanMessage, Curve, decodeMediaRetryNode, decodeMessageNode, decryptMessageNode, delay, derivePairingCodeKey, encodeBigEndian, encodeSignedDeviceIdentity, getCallStatusFromNode, getHistoryMsg, getNextPreKeys, getStatusFromReceiptType, hkdf, MISSING_KEYS_ERROR_TEXT, NACK_REASONS, NO_MESSAGE_FOUND_ERROR_TEXT, unixTimestampSeconds, xmppPreKey, xmppSignedPreKey } from '../Utils/index.js';
9
+ import { makeMutex } from '../Utils/make-mutex.js';
10
+ import { areJidsSameUser, getAllBinaryNodeChildren, getBinaryNodeChild, getBinaryNodeChildBuffer, getBinaryNodeChildren, getBinaryNodeChildString, isJidGroup, isJidStatusBroadcast, isJidUser, isLidUser, jidDecode, jidNormalizedUser, S_WHATSAPP_NET } from '../WABinary/index.js';
11
+ import { extractGroupMetadata } from './groups.js';
12
+ import { makeMessagesSocket } from './messages-send.js';
13
+ export const makeMessagesRecvSocket = (config) => {
19
14
  const { logger, retryRequestDelayMs, maxMsgRetryCount, getMessage, shouldIgnoreJid } = config;
20
- const sock = (0, messages_send_1.makeMessagesSocket)(config);
15
+ const sock = makeMessagesSocket(config);
21
16
  const { ev, authState, ws, processingMutex, signalRepository, query, upsertMessage, resyncAppState, onUnexpectedError, assertSessions, sendNode, relayMessage, sendReceipt, uploadPreKeys, sendPeerDataOperationMessage } = sock;
22
17
  /** this mutex ensures that each retryRequest will wait for the previous one to finish */
23
- const retryMutex = (0, make_mutex_1.makeMutex)();
18
+ const retryMutex = makeMutex();
24
19
  const msgRetryCache = config.msgRetryCounterCache ||
25
- new node_cache_1.default({
26
- stdTTL: Defaults_1.DEFAULT_CACHE_TTLS.MSG_RETRY, // 1 hour
20
+ new NodeCache({
21
+ stdTTL: DEFAULT_CACHE_TTLS.MSG_RETRY, // 1 hour
27
22
  useClones: false
28
23
  });
29
24
  const callOfferCache = config.callOfferCache ||
30
- new node_cache_1.default({
31
- stdTTL: Defaults_1.DEFAULT_CACHE_TTLS.CALL_OFFER, // 5 mins
25
+ new NodeCache({
26
+ stdTTL: DEFAULT_CACHE_TTLS.CALL_OFFER, // 5 mins
32
27
  useClones: false
33
28
  });
34
29
  const placeholderResendCache = config.placeholderResendCache ||
35
- new node_cache_1.default({
36
- stdTTL: Defaults_1.DEFAULT_CACHE_TTLS.MSG_RETRY, // 1 hour
30
+ new NodeCache({
31
+ stdTTL: DEFAULT_CACHE_TTLS.MSG_RETRY, // 1 hour
37
32
  useClones: false
38
33
  });
39
34
  let sendActiveReceipts = false;
@@ -56,10 +51,10 @@ const makeMessagesRecvSocket = (config) => {
56
51
  stanza.attrs.recipient = attrs.recipient;
57
52
  }
58
53
  if (!!attrs.type &&
59
- (tag !== 'message' || (0, WABinary_1.getBinaryNodeChild)({ tag, attrs, content }, 'unavailable') || errorCode !== 0)) {
54
+ (tag !== 'message' || getBinaryNodeChild({ tag, attrs, content }, 'unavailable') || errorCode !== 0)) {
60
55
  stanza.attrs.type = attrs.type;
61
56
  }
62
- if (tag === 'message' && (0, WABinary_1.getBinaryNodeChild)({ tag, attrs, content }, 'unavailable')) {
57
+ if (tag === 'message' && getBinaryNodeChild({ tag, attrs, content }, 'unavailable')) {
63
58
  stanza.attrs.from = authState.creds.me.id;
64
59
  }
65
60
  logger.debug({ recv: { tag, attrs }, sent: stanza.attrs }, 'sent ack');
@@ -87,10 +82,10 @@ const makeMessagesRecvSocket = (config) => {
87
82
  await query(stanza);
88
83
  };
89
84
  const sendRetryRequest = async (node, forceIncludeKeys = false) => {
90
- const { fullMessage } = (0, Utils_1.decodeMessageNode)(node, authState.creds.me.id, authState.creds.me.lid || '');
85
+ const { fullMessage } = decodeMessageNode(node, authState.creds.me.id, authState.creds.me.lid || '');
91
86
  const { key: msgKey } = fullMessage;
92
87
  const msgId = msgKey.id;
93
- const key = `${msgId}:${msgKey === null || msgKey === void 0 ? void 0 : msgKey.participant}`;
88
+ const key = `${msgId}:${msgKey?.participant}`;
94
89
  let retryCount = msgRetryCache.get(key) || 0;
95
90
  if (retryCount >= maxMsgRetryCount) {
96
91
  logger.debug({ retryCount, msgId }, 'reached retry limit, clearing');
@@ -105,7 +100,7 @@ const makeMessagesRecvSocket = (config) => {
105
100
  const msgId = await requestPlaceholderResend(msgKey);
106
101
  logger.debug(`sendRetryRequest: requested placeholder resend for message ${msgId}`);
107
102
  }
108
- const deviceIdentity = (0, Utils_1.encodeSignedDeviceIdentity)(account, true);
103
+ const deviceIdentity = encodeSignedDeviceIdentity(account, true);
109
104
  await authState.keys.transaction(async () => {
110
105
  const receipt = {
111
106
  tag: 'receipt',
@@ -127,7 +122,7 @@ const makeMessagesRecvSocket = (config) => {
127
122
  {
128
123
  tag: 'registration',
129
124
  attrs: {},
130
- content: (0, Utils_1.encodeBigEndian)(authState.creds.registrationId)
125
+ content: encodeBigEndian(authState.creds.registrationId)
131
126
  }
132
127
  ]
133
128
  };
@@ -138,7 +133,7 @@ const makeMessagesRecvSocket = (config) => {
138
133
  receipt.attrs.participant = node.attrs.participant;
139
134
  }
140
135
  if (retryCount > 1 || forceIncludeKeys) {
141
- const { update, preKeys } = await (0, Utils_1.getNextPreKeys)(authState, 1);
136
+ const { update, preKeys } = await getNextPreKeys(authState, 1);
142
137
  const [keyId] = Object.keys(preKeys);
143
138
  const key = preKeys[+keyId];
144
139
  const content = receipt.content;
@@ -146,10 +141,10 @@ const makeMessagesRecvSocket = (config) => {
146
141
  tag: 'keys',
147
142
  attrs: {},
148
143
  content: [
149
- { tag: 'type', attrs: {}, content: Buffer.from(Defaults_1.KEY_BUNDLE_TYPE) },
144
+ { tag: 'type', attrs: {}, content: Buffer.from(KEY_BUNDLE_TYPE) },
150
145
  { tag: 'identity', attrs: {}, content: identityKey.public },
151
- (0, Utils_1.xmppPreKey)(key, +keyId),
152
- (0, Utils_1.xmppSignedPreKey)(signedPreKey),
146
+ xmppPreKey(key, +keyId),
147
+ xmppSignedPreKey(signedPreKey),
153
148
  { tag: 'device-identity', attrs: {}, content: deviceIdentity }
154
149
  ]
155
150
  });
@@ -161,17 +156,17 @@ const makeMessagesRecvSocket = (config) => {
161
156
  };
162
157
  const handleEncryptNotification = async (node) => {
163
158
  const from = node.attrs.from;
164
- if (from === WABinary_1.S_WHATSAPP_NET) {
165
- const countChild = (0, WABinary_1.getBinaryNodeChild)(node, 'count');
159
+ if (from === S_WHATSAPP_NET) {
160
+ const countChild = getBinaryNodeChild(node, 'count');
166
161
  const count = +countChild.attrs.value;
167
- const shouldUploadMorePreKeys = count < Defaults_1.MIN_PREKEY_COUNT;
162
+ const shouldUploadMorePreKeys = count < MIN_PREKEY_COUNT;
168
163
  logger.debug({ count, shouldUploadMorePreKeys }, 'recv pre-key count');
169
164
  if (shouldUploadMorePreKeys) {
170
165
  await uploadPreKeys();
171
166
  }
172
167
  }
173
168
  else {
174
- const identityNode = (0, WABinary_1.getBinaryNodeChild)(node, 'identity');
169
+ const identityNode = getBinaryNodeChild(node, 'identity');
175
170
  if (identityNode) {
176
171
  logger.info({ jid: from }, 'identity changed');
177
172
  // not handling right now
@@ -183,12 +178,11 @@ const makeMessagesRecvSocket = (config) => {
183
178
  }
184
179
  };
185
180
  const handleGroupNotification = (participant, child, msg) => {
186
- var _a, _b, _c, _d;
187
- const participantJid = ((_b = (_a = (0, WABinary_1.getBinaryNodeChild)(child, 'participant')) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.jid) || participant;
188
- switch (child === null || child === void 0 ? void 0 : child.tag) {
181
+ const participantJid = getBinaryNodeChild(child, 'participant')?.attrs?.jid || participant;
182
+ switch (child?.tag) {
189
183
  case 'create':
190
- const metadata = (0, groups_1.extractGroupMetadata)(child);
191
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_CREATE;
184
+ const metadata = extractGroupMetadata(child);
185
+ msg.messageStubType = WAMessageStubType.GROUP_CREATE;
192
186
  msg.messageStubParameters = [metadata.subject];
193
187
  msg.key = { participant: metadata.owner };
194
188
  ev.emit('chats.upsert', [
@@ -209,15 +203,15 @@ const makeMessagesRecvSocket = (config) => {
209
203
  case 'not_ephemeral':
210
204
  msg.message = {
211
205
  protocolMessage: {
212
- type: WAProto_1.proto.Message.ProtocolMessage.Type.EPHEMERAL_SETTING,
206
+ type: proto.Message.ProtocolMessage.Type.EPHEMERAL_SETTING,
213
207
  ephemeralExpiration: +(child.attrs.expiration || 0)
214
208
  }
215
209
  };
216
210
  break;
217
211
  case 'modify':
218
- const oldNumber = (0, WABinary_1.getBinaryNodeChildren)(child, 'participant').map(p => p.attrs.jid);
212
+ const oldNumber = getBinaryNodeChildren(child, 'participant').map(p => p.attrs.jid);
219
213
  msg.messageStubParameters = oldNumber || [];
220
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_PARTICIPANT_CHANGE_NUMBER;
214
+ msg.messageStubType = WAMessageStubType.GROUP_PARTICIPANT_CHANGE_NUMBER;
221
215
  break;
222
216
  case 'promote':
223
217
  case 'demote':
@@ -225,74 +219,73 @@ const makeMessagesRecvSocket = (config) => {
225
219
  case 'add':
226
220
  case 'leave':
227
221
  const stubType = `GROUP_PARTICIPANT_${child.tag.toUpperCase()}`;
228
- msg.messageStubType = Types_1.WAMessageStubType[stubType];
229
- const participants = (0, WABinary_1.getBinaryNodeChildren)(child, 'participant').map(p => p.attrs.jid);
222
+ msg.messageStubType = WAMessageStubType[stubType];
223
+ const participants = getBinaryNodeChildren(child, 'participant').map(p => p.attrs.jid);
230
224
  if (participants.length === 1 &&
231
225
  // if recv. "remove" message and sender removed themselves
232
226
  // mark as left
233
- (0, WABinary_1.areJidsSameUser)(participants[0], participant) &&
227
+ areJidsSameUser(participants[0], participant) &&
234
228
  child.tag === 'remove') {
235
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_PARTICIPANT_LEAVE;
229
+ msg.messageStubType = WAMessageStubType.GROUP_PARTICIPANT_LEAVE;
236
230
  }
237
231
  msg.messageStubParameters = participants;
238
232
  break;
239
233
  case 'subject':
240
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_CHANGE_SUBJECT;
234
+ msg.messageStubType = WAMessageStubType.GROUP_CHANGE_SUBJECT;
241
235
  msg.messageStubParameters = [child.attrs.subject];
242
236
  break;
243
237
  case 'description':
244
- const description = (_d = (_c = (0, WABinary_1.getBinaryNodeChild)(child, 'body')) === null || _c === void 0 ? void 0 : _c.content) === null || _d === void 0 ? void 0 : _d.toString();
245
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_CHANGE_DESCRIPTION;
238
+ const description = getBinaryNodeChild(child, 'body')?.content?.toString();
239
+ msg.messageStubType = WAMessageStubType.GROUP_CHANGE_DESCRIPTION;
246
240
  msg.messageStubParameters = description ? [description] : undefined;
247
241
  break;
248
242
  case 'announcement':
249
243
  case 'not_announcement':
250
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_CHANGE_ANNOUNCE;
244
+ msg.messageStubType = WAMessageStubType.GROUP_CHANGE_ANNOUNCE;
251
245
  msg.messageStubParameters = [child.tag === 'announcement' ? 'on' : 'off'];
252
246
  break;
253
247
  case 'locked':
254
248
  case 'unlocked':
255
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_CHANGE_RESTRICT;
249
+ msg.messageStubType = WAMessageStubType.GROUP_CHANGE_RESTRICT;
256
250
  msg.messageStubParameters = [child.tag === 'locked' ? 'on' : 'off'];
257
251
  break;
258
252
  case 'invite':
259
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_CHANGE_INVITE_LINK;
253
+ msg.messageStubType = WAMessageStubType.GROUP_CHANGE_INVITE_LINK;
260
254
  msg.messageStubParameters = [child.attrs.code];
261
255
  break;
262
256
  case 'member_add_mode':
263
257
  const addMode = child.content;
264
258
  if (addMode) {
265
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_MEMBER_ADD_MODE;
259
+ msg.messageStubType = WAMessageStubType.GROUP_MEMBER_ADD_MODE;
266
260
  msg.messageStubParameters = [addMode.toString()];
267
261
  }
268
262
  break;
269
263
  case 'membership_approval_mode':
270
- const approvalMode = (0, WABinary_1.getBinaryNodeChild)(child, 'group_join');
264
+ const approvalMode = getBinaryNodeChild(child, 'group_join');
271
265
  if (approvalMode) {
272
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE;
266
+ msg.messageStubType = WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE;
273
267
  msg.messageStubParameters = [approvalMode.attrs.state];
274
268
  }
275
269
  break;
276
270
  case 'created_membership_requests':
277
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD;
271
+ msg.messageStubType = WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD;
278
272
  msg.messageStubParameters = [participantJid, 'created', child.attrs.request_method];
279
273
  break;
280
274
  case 'revoked_membership_requests':
281
- const isDenied = (0, WABinary_1.areJidsSameUser)(participantJid, participant);
282
- msg.messageStubType = Types_1.WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD;
275
+ const isDenied = areJidsSameUser(participantJid, participant);
276
+ msg.messageStubType = WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD;
283
277
  msg.messageStubParameters = [participantJid, isDenied ? 'revoked' : 'rejected'];
284
278
  break;
285
279
  }
286
280
  };
287
281
  const processNotification = async (node) => {
288
- var _a, _b, _c;
289
282
  const result = {};
290
- const [child] = (0, WABinary_1.getAllBinaryNodeChildren)(node);
283
+ const [child] = getAllBinaryNodeChildren(node);
291
284
  const nodeType = node.attrs.type;
292
- const from = (0, WABinary_1.jidNormalizedUser)(node.attrs.from);
285
+ const from = jidNormalizedUser(node.attrs.from);
293
286
  switch (nodeType) {
294
287
  case 'privacy_token':
295
- const tokenList = (0, WABinary_1.getBinaryNodeChildren)(child, 'token');
288
+ const tokenList = getBinaryNodeChildren(child, 'token');
296
289
  for (const { attrs, content } of tokenList) {
297
290
  const jid = attrs.jid;
298
291
  ev.emit('chats.update', [
@@ -314,45 +307,45 @@ const makeMessagesRecvSocket = (config) => {
314
307
  handleGroupNotification(node.attrs.participant, child, result);
315
308
  break;
316
309
  case 'mediaretry':
317
- const event = (0, Utils_1.decodeMediaRetryNode)(node);
310
+ const event = decodeMediaRetryNode(node);
318
311
  ev.emit('messages.media-update', [event]);
319
312
  break;
320
313
  case 'encrypt':
321
314
  await handleEncryptNotification(node);
322
315
  break;
323
316
  case 'devices':
324
- const devices = (0, WABinary_1.getBinaryNodeChildren)(child, 'device');
325
- if ((0, WABinary_1.areJidsSameUser)(child.attrs.jid, authState.creds.me.id)) {
317
+ const devices = getBinaryNodeChildren(child, 'device');
318
+ if (areJidsSameUser(child.attrs.jid, authState.creds.me.id)) {
326
319
  const deviceJids = devices.map(d => d.attrs.jid);
327
320
  logger.info({ deviceJids }, 'got my own devices');
328
321
  }
329
322
  break;
330
323
  case 'server_sync':
331
- const update = (0, WABinary_1.getBinaryNodeChild)(node, 'collection');
324
+ const update = getBinaryNodeChild(node, 'collection');
332
325
  if (update) {
333
326
  const name = update.attrs.name;
334
327
  await resyncAppState([name], false);
335
328
  }
336
329
  break;
337
330
  case 'picture':
338
- const setPicture = (0, WABinary_1.getBinaryNodeChild)(node, 'set');
339
- const delPicture = (0, WABinary_1.getBinaryNodeChild)(node, 'delete');
331
+ const setPicture = getBinaryNodeChild(node, 'set');
332
+ const delPicture = getBinaryNodeChild(node, 'delete');
340
333
  ev.emit('contacts.update', [
341
334
  {
342
- id: (0, WABinary_1.jidNormalizedUser)((_a = node === null || node === void 0 ? void 0 : node.attrs) === null || _a === void 0 ? void 0 : _a.from) || ((_c = (_b = (setPicture || delPicture)) === null || _b === void 0 ? void 0 : _b.attrs) === null || _c === void 0 ? void 0 : _c.hash) || '',
335
+ id: jidNormalizedUser(node?.attrs?.from) || (setPicture || delPicture)?.attrs?.hash || '',
343
336
  imgUrl: setPicture ? 'changed' : 'removed'
344
337
  }
345
338
  ]);
346
- if ((0, WABinary_1.isJidGroup)(from)) {
339
+ if (isJidGroup(from)) {
347
340
  const node = setPicture || delPicture;
348
- result.messageStubType = Types_1.WAMessageStubType.GROUP_CHANGE_ICON;
341
+ result.messageStubType = WAMessageStubType.GROUP_CHANGE_ICON;
349
342
  if (setPicture) {
350
343
  result.messageStubParameters = [setPicture.attrs.id];
351
344
  }
352
- result.participant = node === null || node === void 0 ? void 0 : node.attrs.author;
345
+ result.participant = node?.attrs.author;
353
346
  result.key = {
354
347
  ...(result.key || {}),
355
- participant: setPicture === null || setPicture === void 0 ? void 0 : setPicture.attrs.author
348
+ participant: setPicture?.attrs.author
356
349
  };
357
350
  }
358
351
  break;
@@ -372,7 +365,7 @@ const makeMessagesRecvSocket = (config) => {
372
365
  });
373
366
  }
374
367
  else if (child.tag === 'blocklist') {
375
- const blocklists = (0, WABinary_1.getBinaryNodeChildren)(child, 'item');
368
+ const blocklists = getBinaryNodeChildren(child, 'item');
376
369
  for (const { attrs } of blocklists) {
377
370
  const blocklist = [attrs.jid];
378
371
  const type = attrs.action === 'block' ? 'add' : 'remove';
@@ -381,15 +374,15 @@ const makeMessagesRecvSocket = (config) => {
381
374
  }
382
375
  break;
383
376
  case 'link_code_companion_reg':
384
- const linkCodeCompanionReg = (0, WABinary_1.getBinaryNodeChild)(node, 'link_code_companion_reg');
385
- const ref = toRequiredBuffer((0, WABinary_1.getBinaryNodeChildBuffer)(linkCodeCompanionReg, 'link_code_pairing_ref'));
386
- const primaryIdentityPublicKey = toRequiredBuffer((0, WABinary_1.getBinaryNodeChildBuffer)(linkCodeCompanionReg, 'primary_identity_pub'));
387
- const primaryEphemeralPublicKeyWrapped = toRequiredBuffer((0, WABinary_1.getBinaryNodeChildBuffer)(linkCodeCompanionReg, 'link_code_pairing_wrapped_primary_ephemeral_pub'));
377
+ const linkCodeCompanionReg = getBinaryNodeChild(node, 'link_code_companion_reg');
378
+ const ref = toRequiredBuffer(getBinaryNodeChildBuffer(linkCodeCompanionReg, 'link_code_pairing_ref'));
379
+ const primaryIdentityPublicKey = toRequiredBuffer(getBinaryNodeChildBuffer(linkCodeCompanionReg, 'primary_identity_pub'));
380
+ const primaryEphemeralPublicKeyWrapped = toRequiredBuffer(getBinaryNodeChildBuffer(linkCodeCompanionReg, 'link_code_pairing_wrapped_primary_ephemeral_pub'));
388
381
  const codePairingPublicKey = await decipherLinkPublicKey(primaryEphemeralPublicKeyWrapped);
389
- const companionSharedKey = Utils_1.Curve.sharedKey(authState.creds.pairingEphemeralKeyPair.private, codePairingPublicKey);
390
- const random = (0, crypto_1.randomBytes)(32);
391
- const linkCodeSalt = (0, crypto_1.randomBytes)(32);
392
- const linkCodePairingExpanded = await (0, Utils_1.hkdf)(companionSharedKey, 32, {
382
+ const companionSharedKey = Curve.sharedKey(authState.creds.pairingEphemeralKeyPair.private, codePairingPublicKey);
383
+ const random = randomBytes(32);
384
+ const linkCodeSalt = randomBytes(32);
385
+ const linkCodePairingExpanded = await hkdf(companionSharedKey, 32, {
393
386
  salt: linkCodeSalt,
394
387
  info: 'link_code_pairing_key_bundle_encryption_key'
395
388
  });
@@ -398,16 +391,16 @@ const makeMessagesRecvSocket = (config) => {
398
391
  primaryIdentityPublicKey,
399
392
  random
400
393
  ]);
401
- const encryptIv = (0, crypto_1.randomBytes)(12);
402
- const encrypted = (0, Utils_1.aesEncryptGCM)(encryptPayload, linkCodePairingExpanded, encryptIv, Buffer.alloc(0));
394
+ const encryptIv = randomBytes(12);
395
+ const encrypted = aesEncryptGCM(encryptPayload, linkCodePairingExpanded, encryptIv, Buffer.alloc(0));
403
396
  const encryptedPayload = Buffer.concat([linkCodeSalt, encryptIv, encrypted]);
404
- const identitySharedKey = Utils_1.Curve.sharedKey(authState.creds.signedIdentityKey.private, primaryIdentityPublicKey);
397
+ const identitySharedKey = Curve.sharedKey(authState.creds.signedIdentityKey.private, primaryIdentityPublicKey);
405
398
  const identityPayload = Buffer.concat([companionSharedKey, identitySharedKey, random]);
406
- authState.creds.advSecretKey = (await (0, Utils_1.hkdf)(identityPayload, 32, { info: 'adv_secret' })).toString('base64');
399
+ authState.creds.advSecretKey = (await hkdf(identityPayload, 32, { info: 'adv_secret' })).toString('base64');
407
400
  await query({
408
401
  tag: 'iq',
409
402
  attrs: {
410
- to: WABinary_1.S_WHATSAPP_NET,
403
+ to: S_WHATSAPP_NET,
411
404
  type: 'set',
412
405
  id: sock.generateMessageTag(),
413
406
  xmlns: 'md'
@@ -449,14 +442,14 @@ const makeMessagesRecvSocket = (config) => {
449
442
  async function decipherLinkPublicKey(data) {
450
443
  const buffer = toRequiredBuffer(data);
451
444
  const salt = buffer.slice(0, 32);
452
- const secretKey = await (0, Utils_1.derivePairingCodeKey)(authState.creds.pairingCode, salt);
445
+ const secretKey = await derivePairingCodeKey(authState.creds.pairingCode, salt);
453
446
  const iv = buffer.slice(32, 48);
454
447
  const payload = buffer.slice(48, 80);
455
- return (0, Utils_1.aesDecryptCTR)(payload, secretKey, iv);
448
+ return aesDecryptCTR(payload, secretKey, iv);
456
449
  }
457
450
  function toRequiredBuffer(data) {
458
451
  if (data === undefined) {
459
- throw new boom_1.Boom('Invalid buffer', { statusCode: 400 });
452
+ throw new Boom('Invalid buffer', { statusCode: 400 });
460
453
  }
461
454
  return data instanceof Buffer ? data : Buffer.from(data);
462
455
  }
@@ -471,7 +464,6 @@ const makeMessagesRecvSocket = (config) => {
471
464
  msgRetryCache.set(key, newValue);
472
465
  };
473
466
  const sendMessagesAgain = async (key, ids, retryNode) => {
474
- var _a;
475
467
  // todo: implement a cache to store the last 256 sent messages (copy whatsmeow)
476
468
  const msgs = await Promise.all(ids.map(id => getMessage({ ...key, id })));
477
469
  const remoteJid = key.remoteJid;
@@ -479,9 +471,9 @@ const makeMessagesRecvSocket = (config) => {
479
471
  // if it's the primary jid sending the request
480
472
  // just re-send the message to everyone
481
473
  // prevents the first message decryption failure
482
- const sendToAll = !((_a = (0, WABinary_1.jidDecode)(participant)) === null || _a === void 0 ? void 0 : _a.device);
474
+ const sendToAll = !jidDecode(participant)?.device;
483
475
  await assertSessions([participant], true);
484
- if ((0, WABinary_1.isJidGroup)(remoteJid)) {
476
+ if (isJidGroup(remoteJid)) {
485
477
  await authState.keys.set({ 'sender-key-memory': { [remoteJid]: null } });
486
478
  }
487
479
  logger.debug({ participant, sendToAll }, 'forced new session for retry recp');
@@ -506,11 +498,10 @@ const makeMessagesRecvSocket = (config) => {
506
498
  }
507
499
  };
508
500
  const handleReceipt = async (node) => {
509
- var _a, _b;
510
501
  const { attrs, content } = node;
511
502
  const isLid = attrs.from.includes('lid');
512
- const isNodeFromMe = (0, WABinary_1.areJidsSameUser)(attrs.participant || attrs.from, isLid ? (_a = authState.creds.me) === null || _a === void 0 ? void 0 : _a.lid : (_b = authState.creds.me) === null || _b === void 0 ? void 0 : _b.id);
513
- const remoteJid = !isNodeFromMe || (0, WABinary_1.isJidGroup)(attrs.from) ? attrs.from : attrs.recipient;
503
+ const isNodeFromMe = areJidsSameUser(attrs.participant || attrs.from, isLid ? authState.creds.me?.lid : authState.creds.me?.id);
504
+ const remoteJid = !isNodeFromMe || isJidGroup(attrs.from) ? attrs.from : attrs.recipient;
514
505
  const fromMe = !attrs.recipient || ((attrs.type === 'retry' || attrs.type === 'sender') && isNodeFromMe);
515
506
  const key = {
516
507
  remoteJid,
@@ -525,24 +516,24 @@ const makeMessagesRecvSocket = (config) => {
525
516
  }
526
517
  const ids = [attrs.id];
527
518
  if (Array.isArray(content)) {
528
- const items = (0, WABinary_1.getBinaryNodeChildren)(content[0], 'item');
519
+ const items = getBinaryNodeChildren(content[0], 'item');
529
520
  ids.push(...items.map(i => i.attrs.id));
530
521
  }
531
522
  try {
532
523
  await Promise.all([
533
524
  processingMutex.mutex(async () => {
534
- const status = (0, Utils_1.getStatusFromReceiptType)(attrs.type);
525
+ const status = getStatusFromReceiptType(attrs.type);
535
526
  if (typeof status !== 'undefined' &&
536
527
  // basically, we only want to know when a message from us has been delivered to/read by the other person
537
528
  // or another device of ours has read some messages
538
- (status >= WAProto_1.proto.WebMessageInfo.Status.SERVER_ACK || !isNodeFromMe)) {
539
- if ((0, WABinary_1.isJidGroup)(remoteJid) || (0, WABinary_1.isJidStatusBroadcast)(remoteJid)) {
529
+ (status >= proto.WebMessageInfo.Status.SERVER_ACK || !isNodeFromMe)) {
530
+ if (isJidGroup(remoteJid) || isJidStatusBroadcast(remoteJid)) {
540
531
  if (attrs.participant) {
541
- const updateKey = status === WAProto_1.proto.WebMessageInfo.Status.DELIVERY_ACK ? 'receiptTimestamp' : 'readTimestamp';
532
+ const updateKey = status === proto.WebMessageInfo.Status.DELIVERY_ACK ? 'receiptTimestamp' : 'readTimestamp';
542
533
  ev.emit('message-receipt.update', ids.map(id => ({
543
534
  key: { ...key, id },
544
535
  receipt: {
545
- userJid: (0, WABinary_1.jidNormalizedUser)(attrs.participant),
536
+ userJid: jidNormalizedUser(attrs.participant),
546
537
  [updateKey]: +attrs.t
547
538
  }
548
539
  })));
@@ -558,7 +549,7 @@ const makeMessagesRecvSocket = (config) => {
558
549
  if (attrs.type === 'retry') {
559
550
  // correctly set who is asking for the retry
560
551
  key.participant = key.participant || attrs.from;
561
- const retryNode = (0, WABinary_1.getBinaryNodeChild)(node, 'retry');
552
+ const retryNode = getBinaryNodeChild(node, 'retry');
562
553
  if (willSendMessageAgain(ids[0], key.participant)) {
563
554
  if (key.fromMe) {
564
555
  try {
@@ -594,10 +585,9 @@ const makeMessagesRecvSocket = (config) => {
594
585
  try {
595
586
  await Promise.all([
596
587
  processingMutex.mutex(async () => {
597
- var _a;
598
588
  const msg = await processNotification(node);
599
589
  if (msg) {
600
- const fromMe = (0, WABinary_1.areJidsSameUser)(node.attrs.participant || remoteJid, authState.creds.me.id);
590
+ const fromMe = areJidsSameUser(node.attrs.participant || remoteJid, authState.creds.me.id);
601
591
  msg.key = {
602
592
  remoteJid,
603
593
  fromMe,
@@ -605,9 +595,9 @@ const makeMessagesRecvSocket = (config) => {
605
595
  id: node.attrs.id,
606
596
  ...(msg.key || {})
607
597
  };
608
- (_a = msg.participant) !== null && _a !== void 0 ? _a : (msg.participant = node.attrs.participant);
598
+ msg.participant ?? (msg.participant = node.attrs.participant);
609
599
  msg.messageTimestamp = +node.attrs.t;
610
- const fullMsg = WAProto_1.proto.WebMessageInfo.fromObject(msg);
600
+ const fullMsg = proto.WebMessageInfo.fromObject(msg);
611
601
  await upsertMessage(fullMsg, 'append');
612
602
  }
613
603
  })
@@ -618,13 +608,12 @@ const makeMessagesRecvSocket = (config) => {
618
608
  }
619
609
  };
620
610
  const handleMessage = async (node) => {
621
- var _a, _b, _c;
622
611
  if (shouldIgnoreJid(node.attrs.from) && node.attrs.from !== '@s.whatsapp.net') {
623
612
  logger.debug({ key: node.attrs.key }, 'ignored message');
624
613
  await sendMessageAck(node);
625
614
  return;
626
615
  }
627
- const encNode = (0, WABinary_1.getBinaryNodeChild)(node, 'enc');
616
+ const encNode = getBinaryNodeChild(node, 'enc');
628
617
  // TODO: temporary fix for crashes and issues resulting of failed msmsg decryption
629
618
  if (encNode && encNode.attrs.type === 'msmsg') {
630
619
  logger.debug({ key: node.attrs.key }, 'ignored msmsg');
@@ -632,9 +621,9 @@ const makeMessagesRecvSocket = (config) => {
632
621
  return;
633
622
  }
634
623
  let response;
635
- if ((0, WABinary_1.getBinaryNodeChild)(node, 'unavailable') && !encNode) {
624
+ if (getBinaryNodeChild(node, 'unavailable') && !encNode) {
636
625
  await sendMessageAck(node);
637
- const { key } = (0, Utils_1.decodeMessageNode)(node, authState.creds.me.id, authState.creds.me.lid || '').fullMessage;
626
+ const { key } = decodeMessageNode(node, authState.creds.me.id, authState.creds.me.lid || '').fullMessage;
638
627
  response = await requestPlaceholderResend(key);
639
628
  if (response === 'RESOLVED') {
640
629
  return;
@@ -646,33 +635,32 @@ const makeMessagesRecvSocket = (config) => {
646
635
  placeholderResendCache.del(node.attrs.id);
647
636
  }
648
637
  }
649
- const { fullMessage: msg, category, author, decrypt } = (0, Utils_1.decryptMessageNode)(node, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, logger);
650
- if (response && ((_a = msg === null || msg === void 0 ? void 0 : msg.messageStubParameters) === null || _a === void 0 ? void 0 : _a[0]) === Utils_1.NO_MESSAGE_FOUND_ERROR_TEXT) {
651
- msg.messageStubParameters = [Utils_1.NO_MESSAGE_FOUND_ERROR_TEXT, response];
638
+ const { fullMessage: msg, category, author, decrypt } = decryptMessageNode(node, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, logger);
639
+ if (response && msg?.messageStubParameters?.[0] === NO_MESSAGE_FOUND_ERROR_TEXT) {
640
+ msg.messageStubParameters = [NO_MESSAGE_FOUND_ERROR_TEXT, response];
652
641
  }
653
- if (((_c = (_b = msg.message) === null || _b === void 0 ? void 0 : _b.protocolMessage) === null || _c === void 0 ? void 0 : _c.type) === WAProto_1.proto.Message.ProtocolMessage.Type.SHARE_PHONE_NUMBER &&
642
+ if (msg.message?.protocolMessage?.type === proto.Message.ProtocolMessage.Type.SHARE_PHONE_NUMBER &&
654
643
  node.attrs.sender_pn) {
655
644
  ev.emit('chats.phoneNumberShare', { lid: node.attrs.from, jid: node.attrs.sender_pn });
656
645
  }
657
646
  try {
658
647
  await Promise.all([
659
648
  processingMutex.mutex(async () => {
660
- var _a;
661
649
  await decrypt();
662
650
  // message failed to decrypt
663
- if (msg.messageStubType === WAProto_1.proto.WebMessageInfo.StubType.CIPHERTEXT) {
664
- if (((_a = msg === null || msg === void 0 ? void 0 : msg.messageStubParameters) === null || _a === void 0 ? void 0 : _a[0]) === Utils_1.MISSING_KEYS_ERROR_TEXT) {
665
- return sendMessageAck(node, Utils_1.NACK_REASONS.ParsingError);
651
+ if (msg.messageStubType === proto.WebMessageInfo.StubType.CIPHERTEXT) {
652
+ if (msg?.messageStubParameters?.[0] === MISSING_KEYS_ERROR_TEXT) {
653
+ return sendMessageAck(node, NACK_REASONS.ParsingError);
666
654
  }
667
655
  retryMutex.mutex(async () => {
668
656
  if (ws.isOpen) {
669
- if ((0, WABinary_1.getBinaryNodeChild)(node, 'unavailable')) {
657
+ if (getBinaryNodeChild(node, 'unavailable')) {
670
658
  return;
671
659
  }
672
- const encNode = (0, WABinary_1.getBinaryNodeChild)(node, 'enc');
660
+ const encNode = getBinaryNodeChild(node, 'enc');
673
661
  await sendRetryRequest(node, !encNode);
674
662
  if (retryRequestDelayMs) {
675
- await (0, Utils_1.delay)(retryRequestDelayMs);
663
+ await delay(retryRequestDelayMs);
676
664
  }
677
665
  }
678
666
  else {
@@ -692,7 +680,7 @@ const makeMessagesRecvSocket = (config) => {
692
680
  // message was sent by us from a different device
693
681
  type = 'sender';
694
682
  // need to specially handle this case
695
- if ((0, WABinary_1.isJidUser)(msg.key.remoteJid)) {
683
+ if (isJidUser(msg.key.remoteJid)) {
696
684
  participant = author;
697
685
  }
698
686
  }
@@ -701,13 +689,13 @@ const makeMessagesRecvSocket = (config) => {
701
689
  }
702
690
  await sendReceipt(msg.key.remoteJid, participant, [msg.key.id], type);
703
691
  // send ack for history message
704
- const isAnyHistoryMsg = (0, Utils_1.getHistoryMsg)(msg.message);
692
+ const isAnyHistoryMsg = getHistoryMsg(msg.message);
705
693
  if (isAnyHistoryMsg) {
706
- const jid = (0, WABinary_1.jidNormalizedUser)(msg.key.remoteJid);
694
+ const jid = jidNormalizedUser(msg.key.remoteJid);
707
695
  await sendReceipt(jid, undefined, [msg.key.id], 'hist_sync');
708
696
  }
709
697
  }
710
- (0, Utils_1.cleanMessage)(msg, authState.creds.me.id);
698
+ cleanMessage(msg, authState.creds.me.id);
711
699
  await sendMessageAck(node);
712
700
  await upsertMessage(msg, node.attrs.offline ? 'append' : 'notify');
713
701
  })
@@ -718,9 +706,8 @@ const makeMessagesRecvSocket = (config) => {
718
706
  }
719
707
  };
720
708
  const fetchMessageHistory = async (count, oldestMsgKey, oldestMsgTimestamp) => {
721
- var _a;
722
- if (!((_a = authState.creds.me) === null || _a === void 0 ? void 0 : _a.id)) {
723
- throw new boom_1.Boom('Not authenticated');
709
+ if (!authState.creds.me?.id) {
710
+ throw new Boom('Not authenticated');
724
711
  }
725
712
  const pdoMessage = {
726
713
  historySyncOnDemandRequest: {
@@ -730,24 +717,23 @@ const makeMessagesRecvSocket = (config) => {
730
717
  oldestMsgTimestampMs: oldestMsgTimestamp,
731
718
  onDemandMsgCount: count
732
719
  },
733
- peerDataOperationRequestType: WAProto_1.proto.Message.PeerDataOperationRequestType.HISTORY_SYNC_ON_DEMAND
720
+ peerDataOperationRequestType: proto.Message.PeerDataOperationRequestType.HISTORY_SYNC_ON_DEMAND
734
721
  };
735
722
  return sendPeerDataOperationMessage(pdoMessage);
736
723
  };
737
724
  const requestPlaceholderResend = async (messageKey) => {
738
- var _a;
739
- if (!((_a = authState.creds.me) === null || _a === void 0 ? void 0 : _a.id)) {
740
- throw new boom_1.Boom('Not authenticated');
725
+ if (!authState.creds.me?.id) {
726
+ throw new Boom('Not authenticated');
741
727
  }
742
- if (placeholderResendCache.get(messageKey === null || messageKey === void 0 ? void 0 : messageKey.id)) {
728
+ if (placeholderResendCache.get(messageKey?.id)) {
743
729
  logger.debug({ messageKey }, 'already requested resend');
744
730
  return;
745
731
  }
746
732
  else {
747
- placeholderResendCache.set(messageKey === null || messageKey === void 0 ? void 0 : messageKey.id, true);
733
+ placeholderResendCache.set(messageKey?.id, true);
748
734
  }
749
- await (0, Utils_1.delay)(5000);
750
- if (!placeholderResendCache.get(messageKey === null || messageKey === void 0 ? void 0 : messageKey.id)) {
735
+ await delay(5000);
736
+ if (!placeholderResendCache.get(messageKey?.id)) {
751
737
  logger.debug({ messageKey }, 'message received while resend requested');
752
738
  return 'RESOLVED';
753
739
  }
@@ -757,22 +743,41 @@ const makeMessagesRecvSocket = (config) => {
757
743
  messageKey
758
744
  }
759
745
  ],
760
- peerDataOperationRequestType: WAProto_1.proto.Message.PeerDataOperationRequestType.PLACEHOLDER_MESSAGE_RESEND
746
+ peerDataOperationRequestType: proto.Message.PeerDataOperationRequestType.PLACEHOLDER_MESSAGE_RESEND
761
747
  };
762
748
  setTimeout(() => {
763
- if (placeholderResendCache.get(messageKey === null || messageKey === void 0 ? void 0 : messageKey.id)) {
749
+ if (placeholderResendCache.get(messageKey?.id)) {
764
750
  logger.debug({ messageKey }, 'PDO message without response after 15 seconds. Phone possibly offline');
765
- placeholderResendCache.del(messageKey === null || messageKey === void 0 ? void 0 : messageKey.id);
751
+ placeholderResendCache.del(messageKey?.id);
766
752
  }
767
753
  }, 15000);
768
754
  return sendPeerDataOperationMessage(pdoMessage);
769
755
  };
770
756
  const handleCall = async (node) => {
757
+ let status;
771
758
  const { attrs } = node;
772
- const [infoChild] = (0, WABinary_1.getAllBinaryNodeChildren)(node);
759
+ const [infoChild] = getAllBinaryNodeChildren(node);
760
+ if (!infoChild) {
761
+ throw new Boom('Missing call info in call node');
762
+ }
773
763
  const callId = infoChild.attrs['call-id'];
774
764
  const from = infoChild.attrs.from || infoChild.attrs['call-creator'];
775
- const status = (0, Utils_1.getCallStatusFromNode)(infoChild);
765
+ status = getCallStatusFromNode(infoChild);
766
+ if (isLidUser(from) && infoChild.tag === 'relaylatency') {
767
+ const verify = callOfferCache.get(callId);
768
+ if (!verify) {
769
+ status = 'offer';
770
+ const callLid = {
771
+ chatId: attrs.from,
772
+ from,
773
+ id: callId,
774
+ date: new Date(+attrs.t * 1000),
775
+ offline: !!attrs.offline,
776
+ status
777
+ };
778
+ callOfferCache.set(callId, callLid);
779
+ }
780
+ }
776
781
  const call = {
777
782
  chatId: attrs.from,
778
783
  from,
@@ -782,7 +787,7 @@ const makeMessagesRecvSocket = (config) => {
782
787
  status
783
788
  };
784
789
  if (status === 'offer') {
785
- call.isVideo = !!(0, WABinary_1.getBinaryNodeChild)(infoChild, 'video');
790
+ call.isVideo = !!getBinaryNodeChild(infoChild, 'video');
786
791
  call.isGroup = infoChild.attrs.type === 'group' || !!infoChild.attrs['group-jid'];
787
792
  call.groupJid = infoChild.attrs['group-jid'];
788
793
  callOfferCache.set(call.id, call);
@@ -823,7 +828,7 @@ const makeMessagesRecvSocket = (config) => {
823
828
  {
824
829
  key,
825
830
  update: {
826
- status: Types_1.WAMessageStatus.ERROR,
831
+ status: WAMessageStatus.ERROR,
827
832
  messageStubParameters: [attrs.error]
828
833
  }
829
834
  }
@@ -883,9 +888,8 @@ const makeMessagesRecvSocket = (config) => {
883
888
  };
884
889
  // Handles newsletter notifications
885
890
  async function handleNewsletterNotification(node) {
886
- var _a;
887
891
  const from = node.attrs.from;
888
- const [child] = (0, WABinary_1.getAllBinaryNodeChildren)(node);
892
+ const child = getAllBinaryNodeChildren(node)[0];
889
893
  const author = node.attrs.participant;
890
894
  logger.info({ from, child }, 'got newsletter notification');
891
895
  switch (child.tag) {
@@ -894,7 +898,7 @@ const makeMessagesRecvSocket = (config) => {
894
898
  id: from,
895
899
  server_id: child.attrs.message_id,
896
900
  reaction: {
897
- code: (0, WABinary_1.getBinaryNodeChildString)(child, 'reaction'),
901
+ code: getBinaryNodeChildString(child, 'reaction'),
898
902
  count: 1
899
903
  }
900
904
  };
@@ -904,7 +908,7 @@ const makeMessagesRecvSocket = (config) => {
904
908
  const viewUpdate = {
905
909
  id: from,
906
910
  server_id: child.attrs.message_id,
907
- count: parseInt(((_a = child.content) === null || _a === void 0 ? void 0 : _a.toString()) || '0', 10)
911
+ count: parseInt(child.content?.toString() || '0', 10)
908
912
  };
909
913
  ev.emit('newsletter.view', viewUpdate);
910
914
  break;
@@ -919,14 +923,14 @@ const makeMessagesRecvSocket = (config) => {
919
923
  ev.emit('newsletter-participants.update', participantUpdate);
920
924
  break;
921
925
  case 'update':
922
- const settingsNode = (0, WABinary_1.getBinaryNodeChild)(child, 'settings');
926
+ const settingsNode = getBinaryNodeChild(child, 'settings');
923
927
  if (settingsNode) {
924
928
  const update = {};
925
- const nameNode = (0, WABinary_1.getBinaryNodeChild)(settingsNode, 'name');
926
- if (nameNode === null || nameNode === void 0 ? void 0 : nameNode.content)
929
+ const nameNode = getBinaryNodeChild(settingsNode, 'name');
930
+ if (nameNode?.content)
927
931
  update.name = nameNode.content.toString();
928
- const descriptionNode = (0, WABinary_1.getBinaryNodeChild)(settingsNode, 'description');
929
- if (descriptionNode === null || descriptionNode === void 0 ? void 0 : descriptionNode.content)
932
+ const descriptionNode = getBinaryNodeChild(settingsNode, 'description');
933
+ if (descriptionNode?.content)
930
934
  update.description = descriptionNode.content.toString();
931
935
  ev.emit('newsletter-settings.update', {
932
936
  id: from,
@@ -935,14 +939,14 @@ const makeMessagesRecvSocket = (config) => {
935
939
  }
936
940
  break;
937
941
  case 'message':
938
- const plaintextNode = (0, WABinary_1.getBinaryNodeChild)(child, 'plaintext');
939
- if (plaintextNode === null || plaintextNode === void 0 ? void 0 : plaintextNode.content) {
942
+ const plaintextNode = getBinaryNodeChild(child, 'plaintext');
943
+ if (plaintextNode?.content) {
940
944
  try {
941
945
  const contentBuf = typeof plaintextNode.content === 'string'
942
946
  ? Buffer.from(plaintextNode.content, 'binary')
943
947
  : Buffer.from(plaintextNode.content);
944
- const messageProto = WAProto_1.proto.Message.decode(contentBuf);
945
- const fullMessage = WAProto_1.proto.WebMessageInfo.fromObject({
948
+ const messageProto = proto.Message.decode(contentBuf);
949
+ const fullMessage = proto.WebMessageInfo.fromObject({
946
950
  key: {
947
951
  remoteJid: from,
948
952
  id: child.attrs.message_id || child.attrs.server_id,
@@ -966,8 +970,8 @@ const makeMessagesRecvSocket = (config) => {
966
970
  }
967
971
  // Handles mex newsletter notifications
968
972
  async function handleMexNewsletterNotification(node) {
969
- const mexNode = (0, WABinary_1.getBinaryNodeChild)(node, 'mex');
970
- if (!(mexNode === null || mexNode === void 0 ? void 0 : mexNode.content)) {
973
+ const mexNode = getBinaryNodeChild(node, 'mex');
974
+ if (!mexNode?.content) {
971
975
  logger.warn({ node }, 'Invalid mex newsletter notification');
972
976
  return;
973
977
  }
@@ -979,8 +983,8 @@ const makeMessagesRecvSocket = (config) => {
979
983
  logger.error({ err: error, node }, 'Failed to parse mex newsletter notification');
980
984
  return;
981
985
  }
982
- const operation = data === null || data === void 0 ? void 0 : data.operation;
983
- const updates = data === null || data === void 0 ? void 0 : data.updates;
986
+ const operation = data?.operation;
987
+ const updates = data?.updates;
984
988
  if (!updates || !operation) {
985
989
  logger.warn({ data }, 'Invalid mex newsletter notification content');
986
990
  return;
@@ -1032,6 +1036,9 @@ const makeMessagesRecvSocket = (config) => {
1032
1036
  handleBadAck(node).catch(error => onUnexpectedError(error, 'handling bad ack'));
1033
1037
  });
1034
1038
  ev.on('call', ([call]) => {
1039
+ if (!call) {
1040
+ return;
1041
+ }
1035
1042
  // missed call + group call notification message generation
1036
1043
  if (call.status === 'timeout' || (call.status === 'offer' && call.isGroup)) {
1037
1044
  const msg = {
@@ -1040,22 +1047,22 @@ const makeMessagesRecvSocket = (config) => {
1040
1047
  id: call.id,
1041
1048
  fromMe: false
1042
1049
  },
1043
- messageTimestamp: (0, Utils_1.unixTimestampSeconds)(call.date)
1050
+ messageTimestamp: unixTimestampSeconds(call.date)
1044
1051
  };
1045
1052
  if (call.status === 'timeout') {
1046
1053
  if (call.isGroup) {
1047
1054
  msg.messageStubType = call.isVideo
1048
- ? Types_1.WAMessageStubType.CALL_MISSED_GROUP_VIDEO
1049
- : Types_1.WAMessageStubType.CALL_MISSED_GROUP_VOICE;
1055
+ ? WAMessageStubType.CALL_MISSED_GROUP_VIDEO
1056
+ : WAMessageStubType.CALL_MISSED_GROUP_VOICE;
1050
1057
  }
1051
1058
  else {
1052
- msg.messageStubType = call.isVideo ? Types_1.WAMessageStubType.CALL_MISSED_VIDEO : Types_1.WAMessageStubType.CALL_MISSED_VOICE;
1059
+ msg.messageStubType = call.isVideo ? WAMessageStubType.CALL_MISSED_VIDEO : WAMessageStubType.CALL_MISSED_VOICE;
1053
1060
  }
1054
1061
  }
1055
1062
  else {
1056
1063
  msg.message = { call: { callKey: Buffer.from(call.id) } };
1057
1064
  }
1058
- const protoMsg = WAProto_1.proto.WebMessageInfo.fromObject(msg);
1065
+ const protoMsg = proto.WebMessageInfo.fromObject(msg);
1059
1066
  upsertMessage(protoMsg, call.offline ? 'append' : 'notify');
1060
1067
  }
1061
1068
  });
@@ -1074,4 +1081,4 @@ const makeMessagesRecvSocket = (config) => {
1074
1081
  requestPlaceholderResend
1075
1082
  };
1076
1083
  };
1077
- exports.makeMessagesRecvSocket = makeMessagesRecvSocket;
1084
+ //# sourceMappingURL=messages-recv.js.map