@neelegirl/baileys 1.5.3 → 1.5.4

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 (438) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +195 -195
  3. package/WAProto/GenerateStatics.sh +3 -0
  4. package/WAProto/WAProto.proto +478 -1153
  5. package/WAProto/fix-imports.js +29 -0
  6. package/WAProto/index.d.ts +2645 -51971
  7. package/WAProto/index.js +48649 -154035
  8. package/engine-requirements.js +10 -0
  9. package/lib/Defaults/index.d.ts +62 -78
  10. package/lib/Defaults/index.d.ts.map +1 -0
  11. package/lib/Defaults/index.js +115 -149
  12. package/lib/Defaults/index.js.map +1 -0
  13. package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
  14. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  15. package/lib/Signal/Group/ciphertext-message.js +12 -0
  16. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  17. package/lib/Signal/{WASignalGroup → Group}/group-session-builder.d.ts +11 -13
  18. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  19. package/lib/Signal/Group/group-session-builder.js +30 -0
  20. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  21. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  22. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  23. package/lib/Signal/{WASignalGroup → Group}/group_cipher.js +41 -70
  24. package/lib/Signal/Group/group_cipher.js.map +1 -0
  25. package/lib/Signal/Group/index.d.ts +12 -0
  26. package/lib/Signal/Group/index.d.ts.map +1 -0
  27. package/lib/Signal/Group/index.js +12 -0
  28. package/lib/Signal/Group/index.js.map +1 -0
  29. package/lib/Signal/Group/keyhelper.d.ts +11 -0
  30. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  31. package/lib/Signal/Group/keyhelper.js +18 -0
  32. package/lib/Signal/Group/keyhelper.js.map +1 -0
  33. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  34. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  35. package/lib/Signal/Group/sender-chain-key.js +26 -0
  36. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  37. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  38. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  39. package/lib/Signal/Group/sender-key-distribution-message.js +63 -0
  40. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  41. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  42. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  43. package/lib/Signal/Group/sender-key-message.js +66 -0
  44. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  45. package/lib/Signal/Group/sender-key-name.d.ts +18 -0
  46. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  47. package/lib/Signal/Group/sender-key-name.js +48 -0
  48. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  49. package/lib/Signal/Group/sender-key-record.d.ts +31 -0
  50. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  51. package/lib/Signal/Group/sender-key-record.js +41 -0
  52. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  53. package/lib/Signal/Group/sender-key-state.d.ts +39 -0
  54. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  55. package/lib/Signal/Group/sender-key-state.js +84 -0
  56. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  57. package/lib/Signal/Group/sender-message-key.d.ts +12 -0
  58. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  59. package/lib/Signal/{WASignalGroup/sender_message_key.js → Group/sender-message-key.js} +26 -39
  60. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  61. package/lib/Signal/libsignal.d.ts +5 -8
  62. package/lib/Signal/libsignal.d.ts.map +1 -0
  63. package/lib/Signal/libsignal.js +342 -391
  64. package/lib/Signal/libsignal.js.map +1 -0
  65. package/lib/Signal/lid-mapping.d.ts +23 -28
  66. package/lib/Signal/lid-mapping.d.ts.map +1 -0
  67. package/lib/Signal/lid-mapping.js +171 -184
  68. package/lib/Signal/lid-mapping.js.map +1 -0
  69. package/lib/Socket/Client/index.d.ts +3 -2
  70. package/lib/Socket/Client/index.d.ts.map +1 -0
  71. package/lib/Socket/Client/index.js +3 -22
  72. package/lib/Socket/Client/index.js.map +1 -0
  73. package/lib/Socket/Client/types.d.ts +15 -15
  74. package/lib/Socket/Client/types.d.ts.map +1 -0
  75. package/lib/Socket/Client/types.js +8 -15
  76. package/lib/Socket/Client/types.js.map +1 -0
  77. package/lib/Socket/Client/websocket.d.ts +12 -12
  78. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  79. package/lib/Socket/Client/websocket.js +24 -36
  80. package/lib/Socket/Client/websocket.js.map +1 -0
  81. package/lib/Socket/business.d.ts +178 -177
  82. package/lib/Socket/business.d.ts.map +1 -0
  83. package/lib/Socket/business.js +81 -120
  84. package/lib/Socket/business.js.map +1 -0
  85. package/lib/Socket/chats.d.ts +93 -92
  86. package/lib/Socket/chats.d.ts.map +1 -0
  87. package/lib/Socket/chats.js +462 -618
  88. package/lib/Socket/chats.js.map +1 -0
  89. package/lib/Socket/communities.d.ts +244 -223
  90. package/lib/Socket/communities.d.ts.map +1 -0
  91. package/lib/Socket/communities.js +431 -433
  92. package/lib/Socket/communities.js.map +1 -0
  93. package/lib/Socket/groups.d.ts +118 -110
  94. package/lib/Socket/groups.d.ts.map +1 -0
  95. package/lib/Socket/groups.js +148 -181
  96. package/lib/Socket/groups.js.map +1 -0
  97. package/lib/Socket/index.d.ts +222 -182
  98. package/lib/Socket/index.d.ts.map +1 -0
  99. package/lib/Socket/index.js +12 -18
  100. package/lib/Socket/index.js.map +1 -0
  101. package/lib/Socket/messages-recv.d.ts +165 -166
  102. package/lib/Socket/messages-recv.d.ts.map +1 -0
  103. package/lib/Socket/messages-recv.js +753 -1031
  104. package/lib/Socket/messages-recv.js.map +1 -0
  105. package/lib/Socket/messages-send.d.ts +161 -157
  106. package/lib/Socket/messages-send.d.ts.map +1 -0
  107. package/lib/Socket/messages-send.js +564 -1396
  108. package/lib/Socket/messages-send.js.map +1 -0
  109. package/lib/Socket/mex.d.ts +3 -2
  110. package/lib/Socket/mex.d.ts.map +1 -0
  111. package/lib/Socket/mex.js +42 -47
  112. package/lib/Socket/mex.js.map +1 -0
  113. package/lib/Socket/newsletter.d.ts +139 -137
  114. package/lib/Socket/newsletter.d.ts.map +1 -0
  115. package/lib/Socket/newsletter.js +181 -295
  116. package/lib/Socket/newsletter.js.map +1 -0
  117. package/lib/Socket/socket.d.ts +42 -36
  118. package/lib/Socket/socket.d.ts.map +1 -0
  119. package/lib/Socket/socket.js +487 -557
  120. package/lib/Socket/socket.js.map +1 -0
  121. package/lib/Types/Auth.d.ts +87 -97
  122. package/lib/Types/Auth.d.ts.map +1 -0
  123. package/lib/Types/Auth.js +2 -3
  124. package/lib/Types/Auth.js.map +1 -0
  125. package/lib/Types/Bussines.d.ts +25 -0
  126. package/lib/Types/Bussines.d.ts.map +1 -0
  127. package/lib/Types/Bussines.js +2 -3
  128. package/lib/Types/Bussines.js.map +1 -0
  129. package/lib/Types/Call.d.ts +13 -13
  130. package/lib/Types/Call.d.ts.map +1 -0
  131. package/lib/Types/Call.js +2 -3
  132. package/lib/Types/Call.js.map +1 -0
  133. package/lib/Types/Chat.d.ts +77 -97
  134. package/lib/Types/Chat.d.ts.map +1 -0
  135. package/lib/Types/Chat.js +8 -9
  136. package/lib/Types/Chat.js.map +1 -0
  137. package/lib/Types/Contact.d.ts +10 -9
  138. package/lib/Types/Contact.d.ts.map +1 -0
  139. package/lib/Types/Contact.js +2 -3
  140. package/lib/Types/Contact.js.map +1 -0
  141. package/lib/Types/Events.d.ts +151 -175
  142. package/lib/Types/Events.d.ts.map +1 -0
  143. package/lib/Types/Events.js +2 -3
  144. package/lib/Types/Events.js.map +1 -0
  145. package/lib/Types/GroupMetadata.d.ts +49 -48
  146. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  147. package/lib/Types/GroupMetadata.js +2 -3
  148. package/lib/Types/GroupMetadata.js.map +1 -0
  149. package/lib/Types/Label.d.ts +13 -14
  150. package/lib/Types/Label.d.ts.map +1 -0
  151. package/lib/Types/Label.js +24 -30
  152. package/lib/Types/Label.js.map +1 -0
  153. package/lib/Types/LabelAssociation.d.ts +15 -20
  154. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  155. package/lib/Types/LabelAssociation.js +6 -12
  156. package/lib/Types/LabelAssociation.js.map +1 -0
  157. package/lib/Types/Message.d.ts +231 -412
  158. package/lib/Types/Message.d.ts.map +1 -0
  159. package/lib/Types/Message.js +11 -19
  160. package/lib/Types/Message.js.map +1 -0
  161. package/lib/Types/Newsletter.d.ts +130 -104
  162. package/lib/Types/Newsletter.d.ts.map +1 -0
  163. package/lib/Types/Newsletter.js +31 -40
  164. package/lib/Types/Newsletter.js.map +1 -0
  165. package/lib/Types/Product.d.ts +58 -71
  166. package/lib/Types/Product.d.ts.map +1 -0
  167. package/lib/Types/Product.js +2 -3
  168. package/lib/Types/Product.js.map +1 -0
  169. package/lib/Types/Signal.d.ts +60 -82
  170. package/lib/Types/Signal.d.ts.map +1 -0
  171. package/lib/Types/Signal.js +2 -3
  172. package/lib/Types/Signal.js.map +1 -0
  173. package/lib/Types/Socket.d.ts +73 -81
  174. package/lib/Types/Socket.d.ts.map +1 -0
  175. package/lib/Types/Socket.js +3 -3
  176. package/lib/Types/Socket.js.map +1 -0
  177. package/lib/Types/State.d.ts +17 -19
  178. package/lib/Types/State.d.ts.map +1 -0
  179. package/lib/Types/State.js +13 -14
  180. package/lib/Types/State.js.map +1 -0
  181. package/lib/Types/USync.d.ts +8 -8
  182. package/lib/Types/USync.d.ts.map +1 -0
  183. package/lib/Types/USync.js +2 -3
  184. package/lib/Types/USync.js.map +1 -0
  185. package/lib/Types/index.d.ts +47 -62
  186. package/lib/Types/index.d.ts.map +1 -0
  187. package/lib/Types/index.js +26 -50
  188. package/lib/Types/index.js.map +1 -0
  189. package/lib/Utils/auth-utils.d.ts +19 -21
  190. package/lib/Utils/auth-utils.d.ts.map +1 -0
  191. package/lib/Utils/auth-utils.js +257 -528
  192. package/lib/Utils/auth-utils.js.map +1 -0
  193. package/lib/Utils/baileys-event-stream.d.ts +17 -18
  194. package/lib/Utils/baileys-event-stream.d.ts.map +1 -0
  195. package/lib/Utils/baileys-event-stream.js +56 -70
  196. package/lib/Utils/baileys-event-stream.js.map +1 -0
  197. package/lib/Utils/browser-utils.d.ts +4 -0
  198. package/lib/Utils/browser-utils.d.ts.map +1 -0
  199. package/lib/Utils/browser-utils.js +28 -0
  200. package/lib/Utils/browser-utils.js.map +1 -0
  201. package/lib/Utils/business.d.ts +23 -29
  202. package/lib/Utils/business.d.ts.map +1 -0
  203. package/lib/Utils/business.js +231 -255
  204. package/lib/Utils/business.js.map +1 -0
  205. package/lib/Utils/chat-utils.d.ts +70 -82
  206. package/lib/Utils/chat-utils.d.ts.map +1 -0
  207. package/lib/Utils/chat-utils.js +763 -809
  208. package/lib/Utils/chat-utils.js.map +1 -0
  209. package/lib/Utils/crypto.d.ts +41 -56
  210. package/lib/Utils/crypto.d.ts.map +1 -0
  211. package/lib/Utils/crypto.js +142 -189
  212. package/lib/Utils/crypto.js.map +1 -0
  213. package/lib/Utils/decode-wa-message.d.ts +48 -53
  214. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  215. package/lib/Utils/decode-wa-message.js +279 -323
  216. package/lib/Utils/decode-wa-message.js.map +1 -0
  217. package/lib/Utils/event-buffer.d.ts +34 -39
  218. package/lib/Utils/event-buffer.d.ts.map +1 -0
  219. package/lib/Utils/event-buffer.js +548 -595
  220. package/lib/Utils/event-buffer.js.map +1 -0
  221. package/lib/Utils/generics.d.ts +90 -131
  222. package/lib/Utils/generics.d.ts.map +1 -0
  223. package/lib/Utils/generics.js +381 -630
  224. package/lib/Utils/generics.js.map +1 -0
  225. package/lib/Utils/history.d.ts +19 -23
  226. package/lib/Utils/history.d.ts.map +1 -0
  227. package/lib/Utils/history.js +84 -104
  228. package/lib/Utils/history.js.map +1 -0
  229. package/lib/Utils/index.d.ts +20 -20
  230. package/lib/Utils/index.d.ts.map +1 -0
  231. package/lib/Utils/index.js +19 -40
  232. package/lib/Utils/index.js.map +1 -0
  233. package/lib/Utils/link-preview.d.ts +21 -23
  234. package/lib/Utils/link-preview.d.ts.map +1 -0
  235. package/lib/Utils/link-preview.js +85 -120
  236. package/lib/Utils/link-preview.js.map +1 -0
  237. package/lib/Utils/logger.d.ts +12 -13
  238. package/lib/Utils/logger.d.ts.map +1 -0
  239. package/lib/Utils/logger.js +3 -7
  240. package/lib/Utils/logger.js.map +1 -0
  241. package/lib/Utils/lt-hash.d.ts +13 -14
  242. package/lib/Utils/lt-hash.d.ts.map +1 -0
  243. package/lib/Utils/lt-hash.js +48 -58
  244. package/lib/Utils/lt-hash.js.map +1 -0
  245. package/lib/Utils/make-mutex.d.ts +8 -9
  246. package/lib/Utils/make-mutex.d.ts.map +1 -0
  247. package/lib/Utils/make-mutex.js +40 -49
  248. package/lib/Utils/make-mutex.js.map +1 -0
  249. package/lib/Utils/message-retry-manager.d.ts +82 -88
  250. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  251. package/lib/Utils/message-retry-manager.js +149 -160
  252. package/lib/Utils/message-retry-manager.js.map +1 -0
  253. package/lib/Utils/messages-media.d.ts +114 -135
  254. package/lib/Utils/messages-media.d.ts.map +1 -0
  255. package/lib/Utils/messages-media.js +663 -869
  256. package/lib/Utils/messages-media.js.map +1 -0
  257. package/lib/Utils/messages.d.ts +76 -105
  258. package/lib/Utils/messages.d.ts.map +1 -0
  259. package/lib/Utils/messages.js +820 -1745
  260. package/lib/Utils/messages.js.map +1 -0
  261. package/lib/Utils/noise-handler.d.ts +20 -21
  262. package/lib/Utils/noise-handler.d.ts.map +1 -0
  263. package/lib/Utils/noise-handler.js +147 -165
  264. package/lib/Utils/noise-handler.js.map +1 -0
  265. package/lib/Utils/pre-key-manager.d.ts +28 -0
  266. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  267. package/lib/Utils/pre-key-manager.js +106 -0
  268. package/lib/Utils/pre-key-manager.js.map +1 -0
  269. package/lib/Utils/process-message.d.ts +42 -49
  270. package/lib/Utils/process-message.d.ts.map +1 -0
  271. package/lib/Utils/process-message.js +413 -427
  272. package/lib/Utils/process-message.js.map +1 -0
  273. package/lib/Utils/signal.d.ts +34 -42
  274. package/lib/Utils/signal.d.ts.map +1 -0
  275. package/lib/Utils/signal.js +159 -166
  276. package/lib/Utils/signal.js.map +1 -0
  277. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -18
  278. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  279. package/lib/Utils/use-multi-file-auth-state.js +121 -238
  280. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  281. package/lib/Utils/validate-connection.d.ts +11 -13
  282. package/lib/Utils/validate-connection.d.ts.map +1 -0
  283. package/lib/Utils/validate-connection.js +195 -220
  284. package/lib/Utils/validate-connection.js.map +1 -0
  285. package/lib/WABinary/constants.d.ts +28 -30
  286. package/lib/WABinary/constants.d.ts.map +1 -0
  287. package/lib/WABinary/constants.js +1301 -1316
  288. package/lib/WABinary/constants.js.map +1 -0
  289. package/lib/WABinary/decode.d.ts +7 -9
  290. package/lib/WABinary/decode.d.ts.map +1 -0
  291. package/lib/WABinary/decode.js +238 -288
  292. package/lib/WABinary/decode.js.map +1 -0
  293. package/lib/WABinary/encode.d.ts +3 -3
  294. package/lib/WABinary/encode.d.ts.map +1 -0
  295. package/lib/WABinary/encode.js +216 -265
  296. package/lib/WABinary/encode.js.map +1 -0
  297. package/lib/WABinary/generic-utils.d.ts +15 -28
  298. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  299. package/lib/WABinary/generic-utils.js +102 -142
  300. package/lib/WABinary/generic-utils.js.map +1 -0
  301. package/lib/WABinary/index.d.ts +6 -5
  302. package/lib/WABinary/index.d.ts.map +1 -0
  303. package/lib/WABinary/index.js +6 -25
  304. package/lib/WABinary/index.js.map +1 -0
  305. package/lib/WABinary/jid-utils.d.ts +48 -58
  306. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  307. package/lib/WABinary/jid-utils.js +96 -104
  308. package/lib/WABinary/jid-utils.js.map +1 -0
  309. package/lib/WABinary/types.d.ts +19 -22
  310. package/lib/WABinary/types.d.ts.map +1 -0
  311. package/lib/WABinary/types.js +2 -3
  312. package/lib/WABinary/types.js.map +1 -0
  313. package/lib/WAM/BinaryInfo.d.ts +9 -16
  314. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  315. package/lib/WAM/BinaryInfo.js +10 -17
  316. package/lib/WAM/BinaryInfo.js.map +1 -0
  317. package/lib/WAM/constants.d.ts +40 -47
  318. package/lib/WAM/constants.d.ts.map +1 -0
  319. package/lib/WAM/constants.js +22853 -15371
  320. package/lib/WAM/constants.js.map +1 -0
  321. package/lib/WAM/encode.d.ts +3 -3
  322. package/lib/WAM/encode.d.ts.map +1 -0
  323. package/lib/WAM/encode.js +150 -164
  324. package/lib/WAM/encode.js.map +1 -0
  325. package/lib/WAM/index.d.ts +4 -3
  326. package/lib/WAM/index.d.ts.map +1 -0
  327. package/lib/WAM/index.js +4 -23
  328. package/lib/WAM/index.js.map +1 -0
  329. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -9
  330. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  331. package/lib/WAUSync/Protocols/USyncContactProtocol.js +12 -19
  332. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  333. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +19 -22
  334. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  335. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +18 -26
  336. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  337. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +11 -12
  338. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  339. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +12 -20
  340. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  341. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +11 -12
  342. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  343. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +16 -24
  344. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  345. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  346. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  347. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +51 -0
  348. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  349. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
  350. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  351. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
  352. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  353. package/lib/WAUSync/Protocols/index.d.ts +5 -6
  354. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  355. package/lib/WAUSync/Protocols/index.js +5 -26
  356. package/lib/WAUSync/Protocols/index.js.map +1 -0
  357. package/lib/WAUSync/USyncQuery.d.ts +26 -28
  358. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  359. package/lib/WAUSync/USyncQuery.js +64 -62
  360. package/lib/WAUSync/USyncQuery.js.map +1 -0
  361. package/lib/WAUSync/USyncUser.d.ts +11 -10
  362. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  363. package/lib/WAUSync/USyncUser.js +12 -19
  364. package/lib/WAUSync/USyncUser.js.map +1 -0
  365. package/lib/WAUSync/index.d.ts +4 -3
  366. package/lib/WAUSync/index.d.ts.map +1 -0
  367. package/lib/WAUSync/index.js +4 -23
  368. package/lib/WAUSync/index.js.map +1 -0
  369. package/lib/index.d.ts +12 -13
  370. package/lib/index.d.ts.map +1 -0
  371. package/lib/index.js +11 -33
  372. package/lib/index.js.map +1 -0
  373. package/package.json +99 -96
  374. package/lib/Defaults/baileys-version.json +0 -3
  375. package/lib/Defaults/phonenumber-mcc.json +0 -223
  376. package/lib/Signal/WASignalGroup/GroupProtocol.js +0 -1909
  377. package/lib/Signal/WASignalGroup/ciphertext-message.d.ts +0 -9
  378. package/lib/Signal/WASignalGroup/ciphertext-message.js +0 -19
  379. package/lib/Signal/WASignalGroup/ciphertext_message.js +0 -16
  380. package/lib/Signal/WASignalGroup/generate-proto.sh +0 -1
  381. package/lib/Signal/WASignalGroup/group-session-builder.js +0 -72
  382. package/lib/Signal/WASignalGroup/group.proto +0 -42
  383. package/lib/Signal/WASignalGroup/group_cipher.d.ts +0 -19
  384. package/lib/Signal/WASignalGroup/group_session_builder.js +0 -46
  385. package/lib/Signal/WASignalGroup/index.d.ts +0 -11
  386. package/lib/Signal/WASignalGroup/index.js +0 -61
  387. package/lib/Signal/WASignalGroup/keyhelper.d.ts +0 -16
  388. package/lib/Signal/WASignalGroup/keyhelper.js +0 -66
  389. package/lib/Signal/WASignalGroup/protobufs.js +0 -3
  390. package/lib/Signal/WASignalGroup/queue_job.js +0 -69
  391. package/lib/Signal/WASignalGroup/readme.md +0 -6
  392. package/lib/Signal/WASignalGroup/sender-chain-key.d.ts +0 -14
  393. package/lib/Signal/WASignalGroup/sender-chain-key.js +0 -47
  394. package/lib/Signal/WASignalGroup/sender-key-distribution-message.d.ts +0 -17
  395. package/lib/Signal/WASignalGroup/sender-key-distribution-message.js +0 -71
  396. package/lib/Signal/WASignalGroup/sender-key-message.d.ts +0 -19
  397. package/lib/Signal/WASignalGroup/sender-key-message.js +0 -73
  398. package/lib/Signal/WASignalGroup/sender-key-name.d.ts +0 -19
  399. package/lib/Signal/WASignalGroup/sender-key-name.js +0 -59
  400. package/lib/Signal/WASignalGroup/sender-key-record.d.ts +0 -32
  401. package/lib/Signal/WASignalGroup/sender-key-record.js +0 -58
  402. package/lib/Signal/WASignalGroup/sender-key-state.d.ts +0 -44
  403. package/lib/Signal/WASignalGroup/sender-key-state.js +0 -147
  404. package/lib/Signal/WASignalGroup/sender-message-key.d.ts +0 -11
  405. package/lib/Signal/WASignalGroup/sender-message-key.js +0 -33
  406. package/lib/Signal/WASignalGroup/sender_chain_key.js +0 -50
  407. package/lib/Signal/WASignalGroup/sender_key_distribution_message.js +0 -78
  408. package/lib/Signal/WASignalGroup/sender_key_message.js +0 -92
  409. package/lib/Signal/WASignalGroup/sender_key_name.js +0 -70
  410. package/lib/Signal/WASignalGroup/sender_key_record.js +0 -56
  411. package/lib/Signal/WASignalGroup/sender_key_state.js +0 -129
  412. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -15
  413. package/lib/Socket/Client/abstract-socket-client.js +0 -13
  414. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -12
  415. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  416. package/lib/Socket/usync.d.ts +0 -37
  417. package/lib/Socket/usync.js +0 -83
  418. package/lib/Store/index.d.ts +0 -4
  419. package/lib/Store/index.js +0 -24
  420. package/lib/Store/make-cache-manager-store.d.ts +0 -14
  421. package/lib/Store/make-cache-manager-store.js +0 -90
  422. package/lib/Store/make-in-memory-store.d.ts +0 -123
  423. package/lib/Store/make-in-memory-store.js +0 -429
  424. package/lib/Store/make-ordered-dictionary.d.ts +0 -12
  425. package/lib/Store/make-ordered-dictionary.js +0 -86
  426. package/lib/Store/object-repository.d.ts +0 -10
  427. package/lib/Store/object-repository.js +0 -31
  428. package/lib/Types/Bussiness.d.ts +0 -28
  429. package/lib/Types/MexUpdates.d.ts +0 -9
  430. package/lib/Types/MexUpdates.js +0 -18
  431. package/lib/Utils/use-mongo-file-auth-state.d.ts +0 -6
  432. package/lib/Utils/use-mongo-file-auth-state.js +0 -84
  433. package/lib/Utils/use-single-file-auth-state.d.ts +0 -13
  434. package/lib/Utils/use-single-file-auth-state.js +0 -80
  435. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.d.ts +0 -28
  436. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -69
  437. package/lib/WAUSync/Protocols/USyncLIDProtocol.d.ts +0 -10
  438. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +0 -38
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-wa-message.d.ts","sourceRoot":"","sources":["../../src/Utils/decode-wa-message.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAEN,KAAK,UAAU,EAWf,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAEvC,eAAO,MAAM,gBAAgB,GAAU,QAAQ,MAAM,EAAE,YAAY,4BAA4B,KAAG,OAAO,CAAC,MAAM,CAO/G,CAAA;AAuBD,eAAO,MAAM,2BAA2B,6BAA6B,CAAA;AACrE,eAAO,MAAM,uBAAuB,qCAAqC,CAAA;AAGzE,eAAO,MAAM,uBAAuB;;;;CAInC,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CAcxB,CAAA;AAWD,eAAO,MAAM,wBAAwB,GAAI,QAAQ,UAAU;;;;CA6B1D,CAAA;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;EAqGhF;AAED,eAAO,MAAM,kBAAkB,GAC9B,QAAQ,UAAU,EAClB,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,YAAY,4BAA4B,EACxC,QAAQ,OAAO;;;;;CAgHf,CAAA"}
@@ -1,323 +1,279 @@
1
- "use strict"
2
-
3
- Object.defineProperty(exports, "__esModule", { value: true })
4
-
5
- const boom_1 = require("@hapi/boom")
6
- const WAProto_1 = require("../../WAProto")
7
- const WABinary_1 = require("../WABinary")
8
- const generics_1 = require("./generics")
9
- const messages_1 = require("./messages")
10
-
11
- const NO_MESSAGE_FOUND_ERROR_TEXT = 'Message absent from node'
12
-
13
- const MISSING_KEYS_ERROR_TEXT = 'Key used already or never filled'
14
-
15
- // Retry configuration for failed decryption
16
- const DECRYPTION_RETRY_CONFIG = {
17
- maxRetries: 3,
18
- baseDelayMs: 100,
19
- sessionRecordErrors: ['No session record', 'SessionError: No session record']
20
- }
21
-
22
- const NACK_REASONS = {
23
- ParsingError: 487,
24
- UnrecognizedStanza: 488,
25
- UnrecognizedStanzaClass: 489,
26
- UnrecognizedStanzaType: 490,
27
- InvalidProtobuf: 491,
28
- InvalidHostedCompanionStanza: 493,
29
- MissingMessageSecret: 495,
30
- SignalErrorOldCounter: 496,
31
- MessageDeletedOnPeer: 499,
32
- UnhandledError: 500,
33
- UnsupportedAdminRevoke: 550,
34
- UnsupportedLIDGroup: 551,
35
- DBOperationFailed: 552
36
- }
37
-
38
- const extractAddressingContext = (stanza) => {
39
- let senderAlt
40
- let recipientAlt
41
-
42
- const sender = stanza.attrs.participant || stanza.attrs.from
43
- const addressingMode = stanza.attrs.addressing_mode || (sender?.endsWith('lid') ? 'lid' : 'pn')
44
-
45
- if (WABinary_1.isLidUser(sender)) {
46
- // Message is LID-addressed: sender is LID, extract corresponding PN
47
- // without device data
48
- senderAlt = stanza.attrs.participant_pn || stanza.attrs.sender_pn || stanza.attrs.peer_recipient_pn
49
- recipientAlt = stanza.attrs.recipient_pn
50
- // with device data
51
- if (sender && senderAlt)
52
- senderAlt = WABinary_1.transferDevice(sender, senderAlt)
53
- }
54
-
55
- else if (WABinary_1.isJidUser(sender)) {
56
- // Message is PN-addressed: sender is PN, extract corresponding LID
57
- // without device data
58
- senderAlt = stanza.attrs.participant_lid || stanza.attrs.sender_lid || stanza.attrs.peer_recipient_lid
59
- recipientAlt = stanza.attrs.recipient_lid
60
- //with device data
61
- if (sender && senderAlt)
62
- senderAlt = WABinary_1.transferDevice(sender, senderAlt)
63
- }
64
- return {
65
- addressingMode,
66
- senderAlt,
67
- recipientAlt
68
- }
69
- }
70
-
71
- const getDecryptionJid = async (sender, repository) => {
72
- if (!sender.includes('@s.whatsapp.net')) {
73
- return sender
74
- }
75
- return (await repository.lidMapping.getLIDForPN(sender))
76
- }
77
-
78
- const storeMappingFromEnvelope = async (stanza, sender, decryptionJid, repository, logger) => {
79
- const { senderAlt } = extractAddressingContext(stanza)
80
-
81
- if (senderAlt && WABinary_1.isLidUser(senderAlt) && WABinary_1.isJidUser(sender) && decryptionJid === sender) {
82
- try {
83
- await repository.lidMapping.storeLIDPNMappings([{ lid: senderAlt, pn: sender }])
84
- logger.debug({ sender, senderAlt }, 'Stored LID mapping from envelope')
85
- }
86
- catch (error) {
87
- logger.warn({ sender, senderAlt, error }, 'Failed to store LID mapping')
88
- }
89
- }
90
- }
91
-
92
- /**
93
- * Decode the received node as a message.
94
- * @note this will only parse the message, not decrypt it
95
- */
96
- function decodeMessageNode(stanza, meId, meLid) {
97
- let msgType
98
- let chatId
99
- let author
100
- const msgId = stanza.attrs.id
101
- const from = stanza.attrs.from
102
- const participant = stanza.attrs.participant
103
- const recipient = stanza.attrs.recipient
104
- const addressingContext = extractAddressingContext(stanza)
105
- const isMe = (jid) => WABinary_1.areJidsSameUser(jid, meId)
106
- const isMeLid = (jid) => WABinary_1.areJidsSameUser(jid, meLid)
107
- if (WABinary_1.isJidUser(from)) {
108
- if (recipient) {
109
- if (!isMe(from)) {
110
- throw new boom_1.Boom('receipient present, but msg not from me', { data: stanza })
111
- }
112
- chatId = recipient
113
- }
114
- else {
115
- chatId = from
116
- }
117
- msgType = 'chat'
118
- author = from
119
- }
120
- else if (WABinary_1.isLidUser(from)) {
121
- if (recipient) {
122
- if (!isMeLid(from)) {
123
- throw new boom_1.Boom('receipient present, but msg not from me', { data: stanza })
124
- }
125
- chatId = recipient
126
- }
127
- else {
128
- chatId = from
129
- }
130
- msgType = 'chat'
131
- author = from
132
- }
133
- else if (WABinary_1.isJidGroup(from)) {
134
- if (!participant) {
135
- throw new boom_1.Boom('No participant in group message')
136
- }
137
- msgType = 'group'
138
- author = participant
139
- chatId = from
140
- }
141
- else if (WABinary_1.isJidBroadcast(from)) {
142
- if (!participant) {
143
- throw new boom_1.Boom('No participant in group message')
144
- }
145
- const isParticipantMe = isMe(participant)
146
- if (WABinary_1.isJidStatusBroadcast(from)) {
147
- msgType = isParticipantMe ? 'direct_peer_status' : 'other_status'
148
- }
149
- else {
150
- msgType = isParticipantMe ? 'peer_broadcast' : 'other_broadcast'
151
- }
152
- chatId = from
153
- author = participant
154
- }
155
- else if (WABinary_1.isJidNewsletter(from)) {
156
- msgType = 'newsletter'
157
- chatId = from
158
- author = from
159
- }
160
- else {
161
- throw new boom_1.Boom('Unknown message type', { data: stanza })
162
- }
163
- // const fromMe = WABinary_1.isJidNewsletter(from) ? !!stanza.attrs?.is_sender : WABinary_1.isLidUser(from) ? isMeLid(stanza.attrs.participant || stanza.attrs.from) : isMe(stanza.attrs.participant || stanza.attrs.from)
164
- const senderJid = stanza.attrs.participant || stanza.attrs.from;
165
-
166
- const fromMe = WABinary_1.isJidNewsletter(stanza.attrs.from)
167
- ? !!stanza.attrs?.is_sender
168
- : WABinary_1.isLidUser(senderJid)
169
- ? (0, WABinary_1.areJidsSameUser)(senderJid, meLid)
170
- : (0, WABinary_1.areJidsSameUser)(senderJid, meId);
171
- const pushname = stanza?.attrs?.notify
172
- const key = {
173
- remoteJid: chatId,
174
- remoteJidAlt: !WABinary_1.isJidGroup(chatId) ? addressingContext.senderAlt : undefined,
175
- fromMe,
176
- id: msgId,
177
- participant,
178
- participantAlt: WABinary_1.isJidGroup(chatId) ? addressingContext.senderAlt : undefined,
179
- }
180
- const fullMessage = {
181
- key,
182
- messageTimestamp: +stanza.attrs.t,
183
- pushName: pushname,
184
- broadcast: WABinary_1.isJidBroadcast(from),
185
- newsletter: WABinary_1.isJidNewsletter(from),
186
- additionalAttributes: stanza.attrs,
187
- Owner: "Baron" // Non-WhatsApp attribute
188
- }
189
- if (msgType === 'newsletter') {
190
- fullMessage.newsletter_server_id = +stanza.attrs?.server_id
191
- }
192
- if (key.fromMe) {
193
- fullMessage.status = WAProto_1.proto.WebMessageInfo.Status.SERVER_ACK
194
- }
195
- if (!key.fromMe) {
196
- fullMessage.platform = messages_1.getDevice(key.id)
197
- }
198
- return {
199
- fullMessage,
200
- author,
201
- sender: msgType === 'chat' ? author : chatId
202
- }
203
- }
204
-
205
- const decryptMessageNode = (stanza, meId, meLid, repository, logger) => {
206
- const { fullMessage, author, sender } = decodeMessageNode(stanza, meId, meLid)
207
- return {
208
- fullMessage,
209
- category: stanza.attrs.category,
210
- author,
211
- async decrypt() {
212
- let decryptables = 0
213
- if (Array.isArray(stanza.content)) {
214
- for (const { tag, attrs, content } of stanza.content) {
215
- if (tag === 'verified_name' && content instanceof Uint8Array) {
216
- const cert = WAProto_1.proto.VerifiedNameCertificate.decode(content)
217
- const details = WAProto_1.proto.VerifiedNameCertificate.Details.decode(cert.details)
218
- fullMessage.verifiedBizName = details.verifiedName
219
- }
220
- if (tag === 'unavailable' && attrs.type === 'view_once') {
221
- fullMessage.key.isViewOnce = true; // TODO: remove from here and add a STUB TYPE
222
- }
223
- if (tag !== 'enc' && tag !== 'plaintext') {
224
- continue
225
- }
226
- if (!(content instanceof Uint8Array)) {
227
- continue
228
- }
229
- decryptables += 1
230
- let msgBuffer
231
- const user = WABinary_1.isJidUser(sender) ? sender : author // TODO: flaky logic
232
- const decryptionJid = await getDecryptionJid(user, repository)
233
-
234
- if (tag !== 'plaintext') {
235
- await storeMappingFromEnvelope(stanza, user, decryptionJid, repository, logger)
236
- }
237
- try {
238
- const e2eType = tag === 'plaintext' ? 'plaintext' : attrs.type
239
- switch (e2eType) {
240
- case 'skmsg':
241
- msgBuffer = await repository.decryptGroupMessage({
242
- group: sender,
243
- authorJid: author,
244
- msg: content
245
- })
246
- break
247
- case 'pkmsg':
248
- case 'msg':
249
- msgBuffer = await repository.decryptMessage({
250
- jid: decryptionJid,
251
- type: e2eType,
252
- ciphertext: content
253
- })
254
- break
255
- case 'plaintext':
256
- msgBuffer = content
257
- break
258
- default:
259
- throw new Error(`Unknown e2e type: ${e2eType}`)
260
- }
261
- let msg = WAProto_1.proto.Message.decode(e2eType !== 'plaintext' ? generics_1.unpadRandomMax16(msgBuffer) : msgBuffer)
262
- msg = msg.deviceSentMessage?.message || msg
263
- if (msg.senderKeyDistributionMessage) {
264
- //eslint-disable-next-line max-depth
265
- try {
266
- await repository.processSenderKeyDistributionMessage({
267
- authorJid: author,
268
- item: msg.senderKeyDistributionMessage
269
- })
270
- }
271
- catch (err) {
272
- logger.error({ key: fullMessage.key, err }, 'failed to decrypt message')
273
- }
274
- }
275
- if (fullMessage.message) {
276
- Object.assign(fullMessage.message, msg)
277
- }
278
- else {
279
- fullMessage.message = msg
280
- }
281
- }
282
- catch (err) {
283
- const errorContext = {
284
- key: fullMessage.key,
285
- err,
286
- messageType: tag === 'plaintext' ? 'plaintext' : attrs.type,
287
- sender,
288
- author,
289
- isSessionRecordError: isSessionRecordError(err)
290
- }
291
- logger.error(errorContext, 'failed to process sender key distribution message')
292
- fullMessage.messageStubType = WAProto_1.proto.WebMessageInfo.StubType.CIPHERTEXT
293
- fullMessage.messageStubParameters = [err.message.toString()]
294
- }
295
- }
296
- }
297
-
298
- // if nothing was found to decrypt
299
- if (!decryptables) {
300
- fullMessage.messageStubType = WAProto_1.proto.WebMessageInfo.StubType.CIPHERTEXT
301
- fullMessage.messageStubParameters = [NO_MESSAGE_FOUND_ERROR_TEXT]
302
- }
303
- }
304
- }
305
- }
306
-
307
- /**
308
- * Utility function to check if an error is related to missing session record
309
- */
310
- function isSessionRecordError(error) {
311
- const errorMessage = error?.message || error?.toString() || ''
312
- return DECRYPTION_RETRY_CONFIG.sessionRecordErrors.some(errorPattern => errorMessage.includes(errorPattern))
313
- }
314
-
315
- module.exports = {
316
- NACK_REASONS,
317
- decodeMessageNode,
318
- decryptMessageNode,
319
- extractAddressingContext,
320
- MISSING_KEYS_ERROR_TEXT,
321
- DECRYPTION_RETRY_CONFIG,
322
- NO_MESSAGE_FOUND_ERROR_TEXT
323
- }
1
+ import { Boom } from '@hapi/boom';
2
+ import { proto } from '../../WAProto/index.js';
3
+ import { areJidsSameUser, isHostedLidUser, isHostedPnUser, isJidBroadcast, isJidGroup, isJidMetaAI, isJidNewsletter, isJidStatusBroadcast, isLidUser, isPnUser
4
+ // transferDevice
5
+ } from '../WABinary/index.js';
6
+ import { unpadRandomMax16 } from './generics.js';
7
+ export const getDecryptionJid = async (sender, repository) => {
8
+ if (isLidUser(sender) || isHostedLidUser(sender)) {
9
+ return sender;
10
+ }
11
+ const mapped = await repository.lidMapping.getLIDForPN(sender);
12
+ return mapped || sender;
13
+ };
14
+ const storeMappingFromEnvelope = async (stanza, sender, repository, decryptionJid, logger) => {
15
+ // TODO: Handle hosted IDs
16
+ const { senderAlt } = extractAddressingContext(stanza);
17
+ if (senderAlt && isLidUser(senderAlt) && isPnUser(sender) && decryptionJid === sender) {
18
+ try {
19
+ await repository.lidMapping.storeLIDPNMappings([{ lid: senderAlt, pn: sender }]);
20
+ await repository.migrateSession(sender, senderAlt);
21
+ logger.debug({ sender, senderAlt }, 'Stored LID mapping from envelope');
22
+ }
23
+ catch (error) {
24
+ logger.warn({ sender, senderAlt, error }, 'Failed to store LID mapping');
25
+ }
26
+ }
27
+ };
28
+ export const NO_MESSAGE_FOUND_ERROR_TEXT = 'Message absent from node';
29
+ export const MISSING_KEYS_ERROR_TEXT = 'Key used already or never filled';
30
+ // Retry configuration for failed decryption
31
+ export const DECRYPTION_RETRY_CONFIG = {
32
+ maxRetries: 3,
33
+ baseDelayMs: 100,
34
+ sessionRecordErrors: ['No session record', 'SessionError: No session record']
35
+ };
36
+ export const NACK_REASONS = {
37
+ ParsingError: 487,
38
+ UnrecognizedStanza: 488,
39
+ UnrecognizedStanzaClass: 489,
40
+ UnrecognizedStanzaType: 490,
41
+ InvalidProtobuf: 491,
42
+ InvalidHostedCompanionStanza: 493,
43
+ MissingMessageSecret: 495,
44
+ SignalErrorOldCounter: 496,
45
+ MessageDeletedOnPeer: 499,
46
+ UnhandledError: 500,
47
+ UnsupportedAdminRevoke: 550,
48
+ UnsupportedLIDGroup: 551,
49
+ DBOperationFailed: 552
50
+ };
51
+ export const extractAddressingContext = (stanza) => {
52
+ let senderAlt;
53
+ let recipientAlt;
54
+ const sender = stanza.attrs.participant || stanza.attrs.from;
55
+ const addressingMode = stanza.attrs.addressing_mode || (sender?.endsWith('lid') ? 'lid' : 'pn');
56
+ if (addressingMode === 'lid') {
57
+ // Message is LID-addressed: sender is LID, extract corresponding PN
58
+ // without device data
59
+ senderAlt = stanza.attrs.participant_pn || stanza.attrs.sender_pn || stanza.attrs.peer_recipient_pn;
60
+ recipientAlt = stanza.attrs.recipient_pn;
61
+ // with device data
62
+ //if (sender && senderAlt) senderAlt = transferDevice(sender, senderAlt)
63
+ }
64
+ else {
65
+ // Message is PN-addressed: sender is PN, extract corresponding LID
66
+ // without device data
67
+ senderAlt = stanza.attrs.participant_lid || stanza.attrs.sender_lid || stanza.attrs.peer_recipient_lid;
68
+ recipientAlt = stanza.attrs.recipient_lid;
69
+ //with device data
70
+ //if (sender && senderAlt) senderAlt = transferDevice(sender, senderAlt)
71
+ }
72
+ return {
73
+ addressingMode,
74
+ senderAlt,
75
+ recipientAlt
76
+ };
77
+ };
78
+ /**
79
+ * Decode the received node as a message.
80
+ * @note this will only parse the message, not decrypt it
81
+ */
82
+ export function decodeMessageNode(stanza, meId, meLid) {
83
+ let msgType;
84
+ let chatId;
85
+ let author;
86
+ let fromMe = false;
87
+ const msgId = stanza.attrs.id;
88
+ const from = stanza.attrs.from;
89
+ const participant = stanza.attrs.participant;
90
+ const recipient = stanza.attrs.recipient;
91
+ const addressingContext = extractAddressingContext(stanza);
92
+ const isMe = (jid) => areJidsSameUser(jid, meId);
93
+ const isMeLid = (jid) => areJidsSameUser(jid, meLid);
94
+ if (isPnUser(from) || isLidUser(from) || isHostedLidUser(from) || isHostedPnUser(from)) {
95
+ if (recipient && !isJidMetaAI(recipient)) {
96
+ if (!isMe(from) && !isMeLid(from)) {
97
+ throw new Boom('receipient present, but msg not from me', { data: stanza });
98
+ }
99
+ if (isMe(from) || isMeLid(from)) {
100
+ fromMe = true;
101
+ }
102
+ chatId = recipient;
103
+ }
104
+ else {
105
+ chatId = from;
106
+ }
107
+ msgType = 'chat';
108
+ author = from;
109
+ }
110
+ else if (isJidGroup(from)) {
111
+ if (!participant) {
112
+ throw new Boom('No participant in group message');
113
+ }
114
+ if (isMe(participant) || isMeLid(participant)) {
115
+ fromMe = true;
116
+ }
117
+ msgType = 'group';
118
+ author = participant;
119
+ chatId = from;
120
+ }
121
+ else if (isJidBroadcast(from)) {
122
+ if (!participant) {
123
+ throw new Boom('No participant in group message');
124
+ }
125
+ const isParticipantMe = isMe(participant);
126
+ if (isJidStatusBroadcast(from)) {
127
+ msgType = isParticipantMe ? 'direct_peer_status' : 'other_status';
128
+ }
129
+ else {
130
+ msgType = isParticipantMe ? 'peer_broadcast' : 'other_broadcast';
131
+ }
132
+ fromMe = isParticipantMe;
133
+ chatId = from;
134
+ author = participant;
135
+ }
136
+ else if (isJidNewsletter(from)) {
137
+ msgType = 'newsletter';
138
+ chatId = from;
139
+ author = from;
140
+ if (isMe(from) || isMeLid(from)) {
141
+ fromMe = true;
142
+ }
143
+ }
144
+ else {
145
+ throw new Boom('Unknown message type', { data: stanza });
146
+ }
147
+ const pushname = stanza?.attrs?.notify;
148
+ const key = {
149
+ remoteJid: chatId,
150
+ remoteJidAlt: !isJidGroup(chatId) ? addressingContext.senderAlt : undefined,
151
+ fromMe,
152
+ id: msgId,
153
+ participant,
154
+ participantAlt: isJidGroup(chatId) ? addressingContext.senderAlt : undefined,
155
+ addressingMode: addressingContext.addressingMode,
156
+ ...(msgType === 'newsletter' && stanza.attrs.server_id ? { server_id: stanza.attrs.server_id } : {})
157
+ };
158
+ const fullMessage = {
159
+ key,
160
+ messageTimestamp: +stanza.attrs.t,
161
+ pushName: pushname,
162
+ broadcast: isJidBroadcast(from)
163
+ };
164
+ if (key.fromMe) {
165
+ fullMessage.status = proto.WebMessageInfo.Status.SERVER_ACK;
166
+ }
167
+ return {
168
+ fullMessage,
169
+ author,
170
+ sender: msgType === 'chat' ? author : chatId
171
+ };
172
+ }
173
+ export const decryptMessageNode = (stanza, meId, meLid, repository, logger) => {
174
+ const { fullMessage, author, sender } = decodeMessageNode(stanza, meId, meLid);
175
+ return {
176
+ fullMessage,
177
+ category: stanza.attrs.category,
178
+ author,
179
+ async decrypt() {
180
+ let decryptables = 0;
181
+ if (Array.isArray(stanza.content)) {
182
+ for (const { tag, attrs, content } of stanza.content) {
183
+ if (tag === 'verified_name' && content instanceof Uint8Array) {
184
+ const cert = proto.VerifiedNameCertificate.decode(content);
185
+ const details = proto.VerifiedNameCertificate.Details.decode(cert.details);
186
+ fullMessage.verifiedBizName = details.verifiedName;
187
+ }
188
+ if (tag === 'unavailable' && attrs.type === 'view_once') {
189
+ fullMessage.key.isViewOnce = true; // TODO: remove from here and add a STUB TYPE
190
+ }
191
+ if (tag !== 'enc' && tag !== 'plaintext') {
192
+ continue;
193
+ }
194
+ if (!(content instanceof Uint8Array)) {
195
+ continue;
196
+ }
197
+ decryptables += 1;
198
+ let msgBuffer;
199
+ const decryptionJid = await getDecryptionJid(author, repository);
200
+ if (tag !== 'plaintext') {
201
+ // TODO: Handle hosted devices
202
+ await storeMappingFromEnvelope(stanza, author, repository, decryptionJid, logger);
203
+ }
204
+ try {
205
+ const e2eType = tag === 'plaintext' ? 'plaintext' : attrs.type;
206
+ switch (e2eType) {
207
+ case 'skmsg':
208
+ msgBuffer = await repository.decryptGroupMessage({
209
+ group: sender,
210
+ authorJid: author,
211
+ msg: content
212
+ });
213
+ break;
214
+ case 'pkmsg':
215
+ case 'msg':
216
+ msgBuffer = await repository.decryptMessage({
217
+ jid: decryptionJid,
218
+ type: e2eType,
219
+ ciphertext: content
220
+ });
221
+ break;
222
+ case 'plaintext':
223
+ msgBuffer = content;
224
+ break;
225
+ default:
226
+ throw new Error(`Unknown e2e type: ${e2eType}`);
227
+ }
228
+ let msg = proto.Message.decode(e2eType !== 'plaintext' ? unpadRandomMax16(msgBuffer) : msgBuffer);
229
+ msg = msg.deviceSentMessage?.message || msg;
230
+ if (msg.senderKeyDistributionMessage) {
231
+ //eslint-disable-next-line max-depth
232
+ try {
233
+ await repository.processSenderKeyDistributionMessage({
234
+ authorJid: author,
235
+ item: msg.senderKeyDistributionMessage
236
+ });
237
+ }
238
+ catch (err) {
239
+ logger.error({ key: fullMessage.key, err }, 'failed to process sender key distribution message');
240
+ }
241
+ }
242
+ if (fullMessage.message) {
243
+ Object.assign(fullMessage.message, msg);
244
+ }
245
+ else {
246
+ fullMessage.message = msg;
247
+ }
248
+ }
249
+ catch (err) {
250
+ const errorContext = {
251
+ key: fullMessage.key,
252
+ err,
253
+ messageType: tag === 'plaintext' ? 'plaintext' : attrs.type,
254
+ sender,
255
+ author,
256
+ isSessionRecordError: isSessionRecordError(err)
257
+ };
258
+ logger.error(errorContext, 'failed to decrypt message');
259
+ fullMessage.messageStubType = proto.WebMessageInfo.StubType.CIPHERTEXT;
260
+ fullMessage.messageStubParameters = [err.message.toString()];
261
+ }
262
+ }
263
+ }
264
+ // if nothing was found to decrypt
265
+ if (!decryptables) {
266
+ fullMessage.messageStubType = proto.WebMessageInfo.StubType.CIPHERTEXT;
267
+ fullMessage.messageStubParameters = [NO_MESSAGE_FOUND_ERROR_TEXT];
268
+ }
269
+ }
270
+ };
271
+ };
272
+ /**
273
+ * Utility function to check if an error is related to missing session record
274
+ */
275
+ function isSessionRecordError(error) {
276
+ const errorMessage = error?.message || error?.toString() || '';
277
+ return DECRYPTION_RETRY_CONFIG.sessionRecordErrors.some(errorPattern => errorMessage.includes(errorPattern));
278
+ }
279
+ //# sourceMappingURL=decode-wa-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-wa-message.js","sourceRoot":"","sources":["../../src/Utils/decode-wa-message.ts"],"names":[],"mappings":"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"}