lordceaser-baileys 2.0.37 → 2.0.39

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 (439) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +660 -1073
  3. package/WAProto/GenerateStatics.sh +4 -3
  4. package/WAProto/WAProto.proto +359 -2494
  5. package/WAProto/index.d.ts +31460 -8461
  6. package/WAProto/index.js +96236 -92883
  7. package/WASignalGroup/GroupProtocol.js +1697 -0
  8. package/WASignalGroup/ciphertext_message.js +16 -0
  9. package/WASignalGroup/group_cipher.js +120 -0
  10. package/WASignalGroup/group_session_builder.js +46 -0
  11. package/WASignalGroup/index.js +5 -0
  12. package/WASignalGroup/keyhelper.js +21 -0
  13. package/WASignalGroup/protobufs.js +3 -0
  14. package/WASignalGroup/queue_job.js +69 -0
  15. package/WASignalGroup/sender_chain_key.js +50 -0
  16. package/WASignalGroup/sender_key_distribution_message.js +78 -0
  17. package/WASignalGroup/sender_key_message.js +92 -0
  18. package/WASignalGroup/sender_key_name.js +70 -0
  19. package/WASignalGroup/sender_key_record.js +56 -0
  20. package/WASignalGroup/sender_key_state.js +129 -0
  21. package/{lib/Signal/Group/sender-message-key.js → WASignalGroup/sender_message_key.js} +16 -3
  22. package/lib/Defaults/baileys-version.json +3 -0
  23. package/lib/Defaults/index.d.ts +245 -37
  24. package/lib/Defaults/index.js +74 -82
  25. package/lib/Defaults/phonenumber-mcc.json +223 -0
  26. package/lib/Signal/libsignal.d.ts +3 -5
  27. package/lib/Signal/libsignal.js +80 -359
  28. package/lib/Socket/Client/{types.d.ts → abstract-socket-client.d.ts} +5 -4
  29. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  30. package/lib/Socket/Client/index.d.ts +3 -3
  31. package/lib/Socket/Client/index.js +19 -3
  32. package/lib/Socket/Client/mobile-socket-client.d.ts +13 -0
  33. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  34. package/lib/Socket/Client/{websocket.d.ts → web-socket-client.d.ts} +2 -3
  35. package/lib/Socket/Client/web-socket-client.js +62 -0
  36. package/lib/Socket/business.d.ts +87 -156
  37. package/lib/Socket/business.js +43 -162
  38. package/lib/Socket/chats.d.ts +40 -82
  39. package/lib/Socket/chats.js +284 -603
  40. package/lib/Socket/groups.d.ts +58 -96
  41. package/lib/Socket/groups.js +82 -115
  42. package/lib/Socket/index.d.ts +94 -204
  43. package/lib/Socket/index.js +9 -11
  44. package/lib/Socket/messages-recv.d.ts +77 -145
  45. package/lib/Socket/messages-recv.js +400 -1305
  46. package/lib/Socket/messages-send.d.ts +70 -141
  47. package/lib/Socket/messages-send.js +249 -717
  48. package/lib/Socket/registration.d.ts +242 -0
  49. package/lib/Socket/registration.js +166 -0
  50. package/lib/Socket/socket.d.ts +18 -34
  51. package/lib/Socket/socket.js +206 -557
  52. package/lib/Store/index.d.ts +3 -0
  53. package/lib/Store/index.js +10 -0
  54. package/lib/Store/make-cache-manager-store.d.ts +14 -0
  55. package/lib/Store/make-cache-manager-store.js +83 -0
  56. package/lib/Store/make-in-memory-store.d.ts +118 -0
  57. package/lib/Store/make-in-memory-store.js +422 -0
  58. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  59. package/lib/Store/make-ordered-dictionary.js +81 -0
  60. package/lib/Store/object-repository.d.ts +10 -0
  61. package/lib/Store/object-repository.js +27 -0
  62. package/lib/Types/Auth.d.ts +12 -19
  63. package/lib/Types/Auth.js +2 -2
  64. package/lib/Types/Call.d.ts +1 -3
  65. package/lib/Types/Call.js +2 -2
  66. package/lib/Types/Chat.d.ts +14 -31
  67. package/lib/Types/Chat.js +4 -8
  68. package/lib/Types/Contact.d.ts +1 -8
  69. package/lib/Types/Contact.js +2 -2
  70. package/lib/Types/Events.d.ts +17 -101
  71. package/lib/Types/Events.js +2 -2
  72. package/lib/Types/GroupMetadata.d.ts +3 -18
  73. package/lib/Types/GroupMetadata.js +2 -2
  74. package/lib/Types/Label.d.ts +0 -1
  75. package/lib/Types/Label.js +5 -3
  76. package/lib/Types/LabelAssociation.d.ts +0 -1
  77. package/lib/Types/LabelAssociation.js +5 -3
  78. package/lib/Types/Message.d.ts +29 -81
  79. package/lib/Types/Message.js +9 -11
  80. package/lib/Types/Product.d.ts +1 -2
  81. package/lib/Types/Product.js +2 -2
  82. package/lib/Types/Signal.d.ts +2 -32
  83. package/lib/Types/Signal.js +2 -2
  84. package/lib/Types/Socket.d.ts +26 -46
  85. package/lib/Types/Socket.js +2 -3
  86. package/lib/Types/State.d.ts +2 -72
  87. package/lib/Types/State.js +2 -56
  88. package/lib/Types/index.d.ts +13 -16
  89. package/lib/Types/index.js +30 -15
  90. package/lib/Utils/auth-utils.d.ts +6 -12
  91. package/lib/Utils/auth-utils.js +143 -239
  92. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  93. package/lib/Utils/baileys-event-stream.js +63 -0
  94. package/lib/Utils/business.d.ts +2 -3
  95. package/lib/Utils/business.js +69 -66
  96. package/lib/Utils/chat-utils.d.ts +23 -52
  97. package/lib/Utils/chat-utils.js +248 -380
  98. package/lib/Utils/crypto.d.ts +21 -17
  99. package/lib/Utils/crypto.js +92 -57
  100. package/lib/Utils/decode-wa-message.d.ts +8 -54
  101. package/lib/Utils/decode-wa-message.js +57 -186
  102. package/lib/Utils/event-buffer.d.ts +8 -9
  103. package/lib/Utils/event-buffer.js +76 -178
  104. package/lib/Utils/generics.d.ts +23 -26
  105. package/lib/Utils/generics.js +166 -165
  106. package/lib/Utils/history.d.ts +11 -16
  107. package/lib/Utils/history.js +53 -93
  108. package/lib/Utils/index.d.ts +17 -22
  109. package/lib/Utils/index.js +33 -22
  110. package/lib/Utils/link-preview.d.ts +5 -5
  111. package/lib/Utils/link-preview.js +24 -16
  112. package/lib/Utils/logger.d.ts +3 -11
  113. package/lib/Utils/logger.js +7 -3
  114. package/lib/Utils/lt-hash.d.ts +12 -8
  115. package/lib/Utils/lt-hash.js +46 -3
  116. package/lib/Utils/make-mutex.d.ts +2 -4
  117. package/lib/Utils/make-mutex.js +34 -24
  118. package/lib/Utils/messages-media.d.ts +35 -61
  119. package/lib/Utils/messages-media.js +301 -415
  120. package/lib/Utils/messages.d.ts +18 -32
  121. package/lib/Utils/messages.js +261 -396
  122. package/lib/Utils/noise-handler.d.ts +13 -12
  123. package/lib/Utils/noise-handler.js +98 -144
  124. package/lib/Utils/process-message.d.ts +12 -30
  125. package/lib/Utils/process-message.js +163 -439
  126. package/lib/Utils/signal.d.ts +5 -20
  127. package/lib/Utils/signal.js +74 -114
  128. package/lib/Utils/use-multi-file-auth-state.d.ts +1 -2
  129. package/lib/Utils/use-multi-file-auth-state.js +33 -61
  130. package/lib/Utils/validate-connection.d.ts +6 -6
  131. package/lib/Utils/validate-connection.js +114 -119
  132. package/lib/WABinary/constants.d.ts +4 -5
  133. package/lib/WABinary/constants.js +20 -1281
  134. package/lib/WABinary/decode.d.ts +4 -4
  135. package/lib/WABinary/decode.js +43 -51
  136. package/lib/WABinary/encode.d.ts +3 -3
  137. package/lib/WABinary/encode.js +44 -32
  138. package/lib/WABinary/generic-utils.d.ts +6 -6
  139. package/lib/WABinary/generic-utils.js +43 -46
  140. package/lib/WABinary/index.d.ts +5 -6
  141. package/lib/WABinary/index.js +21 -6
  142. package/lib/WABinary/jid-utils.d.ts +6 -23
  143. package/lib/WABinary/jid-utils.js +39 -73
  144. package/lib/WABinary/types.d.ts +1 -2
  145. package/lib/WABinary/types.js +2 -2
  146. package/lib/WAM/BinaryInfo.d.ts +11 -3
  147. package/lib/WAM/BinaryInfo.js +5 -2
  148. package/lib/WAM/constants.d.ts +3 -5
  149. package/lib/WAM/constants.js +11958 -19461
  150. package/lib/WAM/encode.d.ts +3 -3
  151. package/lib/WAM/encode.js +22 -17
  152. package/lib/WAM/index.d.ts +3 -4
  153. package/lib/WAM/index.js +19 -4
  154. package/lib/index.d.ts +8 -9
  155. package/lib/index.js +30 -11
  156. package/package.json +2 -2
  157. package/WAProto/WAProto/GenerateStatics.sh +0 -3
  158. package/WAProto/WAProto/WAProto.proto +0 -5479
  159. package/WAProto/WAProto/fix-imports.js +0 -85
  160. package/WAProto/WAProto/index.d.ts +0 -14017
  161. package/WAProto/WAProto/index.js +0 -97691
  162. package/WAProto/fix-imports.js +0 -85
  163. package/lib/Defaults/index.d.ts.map +0 -1
  164. package/lib/Defaults/index.js.map +0 -1
  165. package/lib/Signal/Group/ciphertext-message.d.ts +0 -10
  166. package/lib/Signal/Group/ciphertext-message.d.ts.map +0 -1
  167. package/lib/Signal/Group/ciphertext-message.js +0 -12
  168. package/lib/Signal/Group/ciphertext-message.js.map +0 -1
  169. package/lib/Signal/Group/group-session-builder.d.ts +0 -15
  170. package/lib/Signal/Group/group-session-builder.d.ts.map +0 -1
  171. package/lib/Signal/Group/group-session-builder.js +0 -30
  172. package/lib/Signal/Group/group-session-builder.js.map +0 -1
  173. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  174. package/lib/Signal/Group/group_cipher.d.ts.map +0 -1
  175. package/lib/Signal/Group/group_cipher.js +0 -82
  176. package/lib/Signal/Group/group_cipher.js.map +0 -1
  177. package/lib/Signal/Group/index.d.ts +0 -12
  178. package/lib/Signal/Group/index.d.ts.map +0 -1
  179. package/lib/Signal/Group/index.js +0 -12
  180. package/lib/Signal/Group/index.js.map +0 -1
  181. package/lib/Signal/Group/keyhelper.d.ts +0 -11
  182. package/lib/Signal/Group/keyhelper.d.ts.map +0 -1
  183. package/lib/Signal/Group/keyhelper.js +0 -18
  184. package/lib/Signal/Group/keyhelper.js.map +0 -1
  185. package/lib/Signal/Group/sender-chain-key.d.ts +0 -14
  186. package/lib/Signal/Group/sender-chain-key.d.ts.map +0 -1
  187. package/lib/Signal/Group/sender-chain-key.js +0 -26
  188. package/lib/Signal/Group/sender-chain-key.js.map +0 -1
  189. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -17
  190. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +0 -1
  191. package/lib/Signal/Group/sender-key-distribution-message.js +0 -63
  192. package/lib/Signal/Group/sender-key-distribution-message.js.map +0 -1
  193. package/lib/Signal/Group/sender-key-message.d.ts +0 -19
  194. package/lib/Signal/Group/sender-key-message.d.ts.map +0 -1
  195. package/lib/Signal/Group/sender-key-message.js +0 -66
  196. package/lib/Signal/Group/sender-key-message.js.map +0 -1
  197. package/lib/Signal/Group/sender-key-name.d.ts +0 -18
  198. package/lib/Signal/Group/sender-key-name.d.ts.map +0 -1
  199. package/lib/Signal/Group/sender-key-name.js +0 -48
  200. package/lib/Signal/Group/sender-key-name.js.map +0 -1
  201. package/lib/Signal/Group/sender-key-record.d.ts +0 -31
  202. package/lib/Signal/Group/sender-key-record.d.ts.map +0 -1
  203. package/lib/Signal/Group/sender-key-record.js +0 -41
  204. package/lib/Signal/Group/sender-key-record.js.map +0 -1
  205. package/lib/Signal/Group/sender-key-state.d.ts +0 -39
  206. package/lib/Signal/Group/sender-key-state.d.ts.map +0 -1
  207. package/lib/Signal/Group/sender-key-state.js +0 -84
  208. package/lib/Signal/Group/sender-key-state.js.map +0 -1
  209. package/lib/Signal/Group/sender-message-key.d.ts +0 -12
  210. package/lib/Signal/Group/sender-message-key.d.ts.map +0 -1
  211. package/lib/Signal/Group/sender-message-key.js.map +0 -1
  212. package/lib/Signal/libsignal.d.ts.map +0 -1
  213. package/lib/Signal/libsignal.js.map +0 -1
  214. package/lib/Signal/lid-mapping.d.ts +0 -23
  215. package/lib/Signal/lid-mapping.d.ts.map +0 -1
  216. package/lib/Signal/lid-mapping.js +0 -277
  217. package/lib/Signal/lid-mapping.js.map +0 -1
  218. package/lib/Socket/Client/index.d.ts.map +0 -1
  219. package/lib/Socket/Client/index.js.map +0 -1
  220. package/lib/Socket/Client/types.d.ts.map +0 -1
  221. package/lib/Socket/Client/types.js +0 -11
  222. package/lib/Socket/Client/types.js.map +0 -1
  223. package/lib/Socket/Client/websocket.d.ts.map +0 -1
  224. package/lib/Socket/Client/websocket.js +0 -54
  225. package/lib/Socket/Client/websocket.js.map +0 -1
  226. package/lib/Socket/business.d.ts.map +0 -1
  227. package/lib/Socket/business.js.map +0 -1
  228. package/lib/Socket/chats.d.ts.map +0 -1
  229. package/lib/Socket/chats.js.map +0 -1
  230. package/lib/Socket/communities.d.ts +0 -273
  231. package/lib/Socket/communities.d.ts.map +0 -1
  232. package/lib/Socket/communities.js +0 -431
  233. package/lib/Socket/communities.js.map +0 -1
  234. package/lib/Socket/groups.d.ts.map +0 -1
  235. package/lib/Socket/groups.js.map +0 -1
  236. package/lib/Socket/index.d.ts.map +0 -1
  237. package/lib/Socket/index.js.map +0 -1
  238. package/lib/Socket/messages-recv.d.ts.map +0 -1
  239. package/lib/Socket/messages-recv.js.map +0 -1
  240. package/lib/Socket/messages-send.d.ts.map +0 -1
  241. package/lib/Socket/messages-send.js.map +0 -1
  242. package/lib/Socket/mex.d.ts +0 -3
  243. package/lib/Socket/mex.d.ts.map +0 -1
  244. package/lib/Socket/mex.js +0 -42
  245. package/lib/Socket/mex.js.map +0 -1
  246. package/lib/Socket/newsletter.d.ts +0 -170
  247. package/lib/Socket/newsletter.d.ts.map +0 -1
  248. package/lib/Socket/newsletter.js +0 -181
  249. package/lib/Socket/newsletter.js.map +0 -1
  250. package/lib/Socket/socket.d.ts.map +0 -1
  251. package/lib/Socket/socket.js.map +0 -1
  252. package/lib/Types/Auth.d.ts.map +0 -1
  253. package/lib/Types/Auth.js.map +0 -1
  254. package/lib/Types/Bussines.d.ts +0 -25
  255. package/lib/Types/Bussines.d.ts.map +0 -1
  256. package/lib/Types/Bussines.js +0 -2
  257. package/lib/Types/Bussines.js.map +0 -1
  258. package/lib/Types/Call.d.ts.map +0 -1
  259. package/lib/Types/Call.js.map +0 -1
  260. package/lib/Types/Chat.d.ts.map +0 -1
  261. package/lib/Types/Chat.js.map +0 -1
  262. package/lib/Types/Contact.d.ts.map +0 -1
  263. package/lib/Types/Contact.js.map +0 -1
  264. package/lib/Types/Events.d.ts.map +0 -1
  265. package/lib/Types/Events.js.map +0 -1
  266. package/lib/Types/GroupMetadata.d.ts.map +0 -1
  267. package/lib/Types/GroupMetadata.js.map +0 -1
  268. package/lib/Types/Label.d.ts.map +0 -1
  269. package/lib/Types/Label.js.map +0 -1
  270. package/lib/Types/LabelAssociation.d.ts.map +0 -1
  271. package/lib/Types/LabelAssociation.js.map +0 -1
  272. package/lib/Types/Message.d.ts.map +0 -1
  273. package/lib/Types/Message.js.map +0 -1
  274. package/lib/Types/Mex.d.ts +0 -141
  275. package/lib/Types/Mex.d.ts.map +0 -1
  276. package/lib/Types/Mex.js +0 -37
  277. package/lib/Types/Mex.js.map +0 -1
  278. package/lib/Types/Product.d.ts.map +0 -1
  279. package/lib/Types/Product.js.map +0 -1
  280. package/lib/Types/Signal.d.ts.map +0 -1
  281. package/lib/Types/Signal.js.map +0 -1
  282. package/lib/Types/Socket.d.ts.map +0 -1
  283. package/lib/Types/Socket.js.map +0 -1
  284. package/lib/Types/State.d.ts.map +0 -1
  285. package/lib/Types/State.js.map +0 -1
  286. package/lib/Types/USync.d.ts +0 -26
  287. package/lib/Types/USync.d.ts.map +0 -1
  288. package/lib/Types/USync.js +0 -2
  289. package/lib/Types/USync.js.map +0 -1
  290. package/lib/Types/index.d.ts.map +0 -1
  291. package/lib/Types/index.js.map +0 -1
  292. package/lib/Utils/auth-utils.d.ts.map +0 -1
  293. package/lib/Utils/auth-utils.js.map +0 -1
  294. package/lib/Utils/browser-utils.d.ts +0 -4
  295. package/lib/Utils/browser-utils.d.ts.map +0 -1
  296. package/lib/Utils/browser-utils.js +0 -29
  297. package/lib/Utils/browser-utils.js.map +0 -1
  298. package/lib/Utils/business.d.ts.map +0 -1
  299. package/lib/Utils/business.js.map +0 -1
  300. package/lib/Utils/chat-utils.d.ts.map +0 -1
  301. package/lib/Utils/chat-utils.js.map +0 -1
  302. package/lib/Utils/companion-reg-client-utils.d.ts +0 -17
  303. package/lib/Utils/companion-reg-client-utils.d.ts.map +0 -1
  304. package/lib/Utils/companion-reg-client-utils.js +0 -35
  305. package/lib/Utils/companion-reg-client-utils.js.map +0 -1
  306. package/lib/Utils/crypto.d.ts.map +0 -1
  307. package/lib/Utils/crypto.js.map +0 -1
  308. package/lib/Utils/decode-wa-message.d.ts.map +0 -1
  309. package/lib/Utils/decode-wa-message.js.map +0 -1
  310. package/lib/Utils/event-buffer.d.ts.map +0 -1
  311. package/lib/Utils/event-buffer.js.map +0 -1
  312. package/lib/Utils/generics.d.ts.map +0 -1
  313. package/lib/Utils/generics.js.map +0 -1
  314. package/lib/Utils/history.d.ts.map +0 -1
  315. package/lib/Utils/history.js.map +0 -1
  316. package/lib/Utils/identity-change-handler.d.ts +0 -44
  317. package/lib/Utils/identity-change-handler.d.ts.map +0 -1
  318. package/lib/Utils/identity-change-handler.js +0 -50
  319. package/lib/Utils/identity-change-handler.js.map +0 -1
  320. package/lib/Utils/index.d.ts.map +0 -1
  321. package/lib/Utils/index.js.map +0 -1
  322. package/lib/Utils/link-preview.d.ts.map +0 -1
  323. package/lib/Utils/link-preview.js.map +0 -1
  324. package/lib/Utils/logger.d.ts.map +0 -1
  325. package/lib/Utils/logger.js.map +0 -1
  326. package/lib/Utils/lt-hash.d.ts.map +0 -1
  327. package/lib/Utils/lt-hash.js.map +0 -1
  328. package/lib/Utils/make-mutex.d.ts.map +0 -1
  329. package/lib/Utils/make-mutex.js.map +0 -1
  330. package/lib/Utils/message-retry-manager.d.ts +0 -115
  331. package/lib/Utils/message-retry-manager.d.ts.map +0 -1
  332. package/lib/Utils/message-retry-manager.js +0 -265
  333. package/lib/Utils/message-retry-manager.js.map +0 -1
  334. package/lib/Utils/messages-media.d.ts.map +0 -1
  335. package/lib/Utils/messages-media.js.map +0 -1
  336. package/lib/Utils/messages.d.ts.map +0 -1
  337. package/lib/Utils/messages.js.map +0 -1
  338. package/lib/Utils/noise-handler.d.ts.map +0 -1
  339. package/lib/Utils/noise-handler.js.map +0 -1
  340. package/lib/Utils/offline-node-processor.d.ts +0 -17
  341. package/lib/Utils/offline-node-processor.d.ts.map +0 -1
  342. package/lib/Utils/offline-node-processor.js +0 -40
  343. package/lib/Utils/offline-node-processor.js.map +0 -1
  344. package/lib/Utils/pre-key-manager.d.ts +0 -28
  345. package/lib/Utils/pre-key-manager.d.ts.map +0 -1
  346. package/lib/Utils/pre-key-manager.js +0 -106
  347. package/lib/Utils/pre-key-manager.js.map +0 -1
  348. package/lib/Utils/process-message.d.ts.map +0 -1
  349. package/lib/Utils/process-message.js.map +0 -1
  350. package/lib/Utils/reporting-utils.d.ts +0 -11
  351. package/lib/Utils/reporting-utils.d.ts.map +0 -1
  352. package/lib/Utils/reporting-utils.js +0 -258
  353. package/lib/Utils/reporting-utils.js.map +0 -1
  354. package/lib/Utils/signal.d.ts.map +0 -1
  355. package/lib/Utils/signal.js.map +0 -1
  356. package/lib/Utils/stanza-ack.d.ts +0 -11
  357. package/lib/Utils/stanza-ack.d.ts.map +0 -1
  358. package/lib/Utils/stanza-ack.js +0 -38
  359. package/lib/Utils/stanza-ack.js.map +0 -1
  360. package/lib/Utils/sync-action-utils.d.ts +0 -19
  361. package/lib/Utils/sync-action-utils.d.ts.map +0 -1
  362. package/lib/Utils/sync-action-utils.js +0 -49
  363. package/lib/Utils/sync-action-utils.js.map +0 -1
  364. package/lib/Utils/tc-token-utils.d.ts +0 -37
  365. package/lib/Utils/tc-token-utils.d.ts.map +0 -1
  366. package/lib/Utils/tc-token-utils.js +0 -164
  367. package/lib/Utils/tc-token-utils.js.map +0 -1
  368. package/lib/Utils/use-multi-file-auth-state.d.ts.map +0 -1
  369. package/lib/Utils/use-multi-file-auth-state.js.map +0 -1
  370. package/lib/Utils/validate-connection.d.ts.map +0 -1
  371. package/lib/Utils/validate-connection.js.map +0 -1
  372. package/lib/WABinary/constants.d.ts.map +0 -1
  373. package/lib/WABinary/constants.js.map +0 -1
  374. package/lib/WABinary/decode.d.ts.map +0 -1
  375. package/lib/WABinary/decode.js.map +0 -1
  376. package/lib/WABinary/encode.d.ts.map +0 -1
  377. package/lib/WABinary/encode.js.map +0 -1
  378. package/lib/WABinary/generic-utils.d.ts.map +0 -1
  379. package/lib/WABinary/generic-utils.js.map +0 -1
  380. package/lib/WABinary/index.d.ts.map +0 -1
  381. package/lib/WABinary/index.js.map +0 -1
  382. package/lib/WABinary/jid-utils.d.ts.map +0 -1
  383. package/lib/WABinary/jid-utils.js.map +0 -1
  384. package/lib/WABinary/types.d.ts.map +0 -1
  385. package/lib/WABinary/types.js.map +0 -1
  386. package/lib/WAM/BinaryInfo.d.ts.map +0 -1
  387. package/lib/WAM/BinaryInfo.js.map +0 -1
  388. package/lib/WAM/constants.d.ts.map +0 -1
  389. package/lib/WAM/constants.js.map +0 -1
  390. package/lib/WAM/encode.d.ts.map +0 -1
  391. package/lib/WAM/encode.js.map +0 -1
  392. package/lib/WAM/index.d.ts.map +0 -1
  393. package/lib/WAM/index.js.map +0 -1
  394. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -10
  395. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +0 -1
  396. package/lib/WAUSync/Protocols/USyncContactProtocol.js +0 -52
  397. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +0 -1
  398. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -23
  399. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +0 -1
  400. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +0 -54
  401. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +0 -1
  402. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -13
  403. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +0 -1
  404. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -27
  405. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +0 -1
  406. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -13
  407. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +0 -1
  408. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +0 -38
  409. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +0 -1
  410. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +0 -10
  411. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +0 -1
  412. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +0 -25
  413. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +0 -1
  414. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -26
  415. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +0 -1
  416. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +0 -51
  417. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +0 -1
  418. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -10
  419. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +0 -1
  420. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +0 -29
  421. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +0 -1
  422. package/lib/WAUSync/Protocols/index.d.ts +0 -6
  423. package/lib/WAUSync/Protocols/index.d.ts.map +0 -1
  424. package/lib/WAUSync/Protocols/index.js +0 -6
  425. package/lib/WAUSync/Protocols/index.js.map +0 -1
  426. package/lib/WAUSync/USyncQuery.d.ts +0 -30
  427. package/lib/WAUSync/USyncQuery.d.ts.map +0 -1
  428. package/lib/WAUSync/USyncQuery.js +0 -98
  429. package/lib/WAUSync/USyncQuery.js.map +0 -1
  430. package/lib/WAUSync/USyncUser.d.ts +0 -17
  431. package/lib/WAUSync/USyncUser.d.ts.map +0 -1
  432. package/lib/WAUSync/USyncUser.js +0 -31
  433. package/lib/WAUSync/USyncUser.js.map +0 -1
  434. package/lib/WAUSync/index.d.ts +0 -4
  435. package/lib/WAUSync/index.d.ts.map +0 -1
  436. package/lib/WAUSync/index.js +0 -4
  437. package/lib/WAUSync/index.js.map +0 -1
  438. package/lib/index.d.ts.map +0 -1
  439. package/lib/index.js.map +0 -1
@@ -1,87 +1,33 @@
1
- import { Boom } from '@hapi/boom';
2
- import { proto } from '../../WAProto/index.js';
3
- import { WAMessageStubType } from '../Types/index.js';
4
- import { getContentType, normalizeMessageContent } from '../Utils/messages.js';
5
- import { areJidsSameUser, isHostedLidUser, isHostedPnUser, isJidBroadcast, isJidStatusBroadcast, isLidUser, jidDecode, jidEncode, jidNormalizedUser } from '../WABinary/index.js';
6
- import { aesDecryptGCM, hmacSign } from './crypto.js';
7
- import { getKeyAuthor, toNumber } from './generics.js';
8
- import { downloadAndProcessHistorySyncNotification } from './history.js';
9
- import { buildMergedTcTokenIndexWrite, resolveTcTokenJid } from './tc-token-utils.js';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decryptPollVote = exports.getChatId = exports.shouldIncrementChatUnread = exports.isRealMessage = exports.cleanMessage = void 0;
4
+ const WAProto_1 = require("../../WAProto");
5
+ const Types_1 = require("../Types");
6
+ const messages_1 = require("../Utils/messages");
7
+ const WABinary_1 = require("../WABinary");
8
+ const crypto_1 = require("./crypto");
9
+ const generics_1 = require("./generics");
10
+ const history_1 = require("./history");
10
11
  const REAL_MSG_STUB_TYPES = new Set([
11
- WAMessageStubType.CALL_MISSED_GROUP_VIDEO,
12
- WAMessageStubType.CALL_MISSED_GROUP_VOICE,
13
- WAMessageStubType.CALL_MISSED_VIDEO,
14
- WAMessageStubType.CALL_MISSED_VOICE
12
+ Types_1.WAMessageStubType.CALL_MISSED_GROUP_VIDEO,
13
+ Types_1.WAMessageStubType.CALL_MISSED_GROUP_VOICE,
14
+ Types_1.WAMessageStubType.CALL_MISSED_VIDEO,
15
+ Types_1.WAMessageStubType.CALL_MISSED_VOICE
16
+ ]);
17
+ const REAL_MSG_REQ_ME_STUB_TYPES = new Set([
18
+ Types_1.WAMessageStubType.GROUP_PARTICIPANT_ADD
15
19
  ]);
16
- const REAL_MSG_REQ_ME_STUB_TYPES = new Set([WAMessageStubType.GROUP_PARTICIPANT_ADD]);
17
- async function storeTcTokensFromHistorySync(chats, signalRepository, keyStore, logger) {
18
- const getLIDForPN = signalRepository.lidMapping.getLIDForPN.bind(signalRepository.lidMapping);
19
- const candidates = [];
20
- for (const chat of chats) {
21
- const ts = chat.tcTokenTimestamp ? toNumber(chat.tcTokenTimestamp) : 0;
22
- if (chat.tcToken?.length && ts > 0) {
23
- const jid = jidNormalizedUser(chat.id);
24
- const storageJid = await resolveTcTokenJid(jid, getLIDForPN);
25
- candidates.push({
26
- storageJid,
27
- token: Buffer.from(chat.tcToken),
28
- ts,
29
- senderTs: chat.tcTokenSenderTimestamp ? toNumber(chat.tcTokenSenderTimestamp) : undefined
30
- });
31
- }
32
- }
33
- if (!candidates.length) {
34
- return;
35
- }
36
- const jids = candidates.map(c => c.storageJid);
37
- const existing = await keyStore.get('tctoken', jids);
38
- const entries = {};
39
- for (const c of candidates) {
40
- const existingEntry = existing[c.storageJid];
41
- const existingTs = existingEntry?.timestamp ? Number(existingEntry.timestamp) : 0;
42
- if (existingTs > 0 && existingTs >= c.ts) {
43
- continue;
44
- }
45
- entries[c.storageJid] = {
46
- ...existingEntry,
47
- token: c.token,
48
- timestamp: String(c.ts),
49
- ...(c.senderTs !== undefined ? { senderTimestamp: c.senderTs } : {})
50
- };
51
- }
52
- if (Object.keys(entries).length) {
53
- logger?.debug({ count: Object.keys(entries).length }, 'storing tctokens from history sync');
54
- try {
55
- // Include updated __index so cross-session pruning picks these JIDs up.
56
- const indexWrite = await buildMergedTcTokenIndexWrite(keyStore, Object.keys(entries));
57
- await keyStore.set({ tctoken: { ...entries, ...indexWrite } });
58
- }
59
- catch (err) {
60
- logger?.warn({ err }, 'failed to store tctokens from history sync');
61
- }
62
- }
63
- }
64
20
  /** Cleans a received message to further processing */
65
- export const cleanMessage = (message, meId, meLid) => {
21
+ const cleanMessage = (message, meId) => {
66
22
  // ensure remoteJid and participant doesn't have device or agent in it
67
- if (isHostedPnUser(message.key.remoteJid) || isHostedLidUser(message.key.remoteJid)) {
68
- message.key.remoteJid = jidEncode(jidDecode(message.key?.remoteJid)?.user, isHostedPnUser(message.key.remoteJid) ? 's.whatsapp.net' : 'lid');
69
- }
70
- else {
71
- message.key.remoteJid = jidNormalizedUser(message.key.remoteJid);
72
- }
73
- if (isHostedPnUser(message.key.participant) || isHostedLidUser(message.key.participant)) {
74
- message.key.participant = jidEncode(jidDecode(message.key.participant)?.user, isHostedPnUser(message.key.participant) ? 's.whatsapp.net' : 'lid');
75
- }
76
- else {
77
- message.key.participant = jidNormalizedUser(message.key.participant);
78
- }
79
- const content = normalizeMessageContent(message.message);
23
+ message.key.remoteJid = (0, WABinary_1.jidNormalizedUser)(message.key.remoteJid);
24
+ message.key.participant = message.key.participant ? (0, WABinary_1.jidNormalizedUser)(message.key.participant) : undefined;
25
+ const content = (0, messages_1.normalizeMessageContent)(message.message);
80
26
  // if the message has a reaction, ensure fromMe & remoteJid are from our perspective
81
- if (content?.reactionMessage) {
27
+ if (content === null || content === void 0 ? void 0 : content.reactionMessage) {
82
28
  normaliseKey(content.reactionMessage.key);
83
29
  }
84
- if (content?.pollUpdateMessage) {
30
+ if (content === null || content === void 0 ? void 0 : content.pollUpdateMessage) {
85
31
  normaliseKey(content.pollUpdateMessage.pollCreationMessageKey);
86
32
  }
87
33
  function normaliseKey(msgKey) {
@@ -91,59 +37,54 @@ export const cleanMessage = (message, meId, meLid) => {
91
37
  // if the sender believed the message being reacted to is not from them
92
38
  // we've to correct the key to be from them, or some other participant
93
39
  msgKey.fromMe = !msgKey.fromMe
94
- ? areJidsSameUser(msgKey.participant || msgKey.remoteJid, meId) ||
95
- areJidsSameUser(msgKey.participant || msgKey.remoteJid, meLid)
96
- : // if the message being reacted to, was from them
97
- // fromMe automatically becomes false
98
- false;
40
+ ? (0, WABinary_1.areJidsSameUser)(msgKey.participant || msgKey.remoteJid, meId)
41
+ // if the message being reacted to, was from them
42
+ // fromMe automatically becomes false
43
+ : false;
99
44
  // set the remoteJid to being the same as the chat the message came from
100
- // TODO: investigate inconsistencies
101
45
  msgKey.remoteJid = message.key.remoteJid;
102
46
  // set participant of the message
103
47
  msgKey.participant = msgKey.participant || message.key.participant;
104
48
  }
105
49
  }
106
50
  };
107
- // TODO: target:audit AUDIT THIS FUNCTION AGAIN
108
- export const isRealMessage = (message) => {
109
- const normalizedContent = normalizeMessageContent(message.message);
110
- const hasSomeContent = !!getContentType(normalizedContent);
111
- return ((!!normalizedContent ||
112
- REAL_MSG_STUB_TYPES.has(message.messageStubType) ||
113
- REAL_MSG_REQ_ME_STUB_TYPES.has(message.messageStubType)) &&
114
- hasSomeContent &&
115
- !normalizedContent?.protocolMessage &&
116
- !normalizedContent?.reactionMessage &&
117
- !normalizedContent?.pollUpdateMessage);
51
+ exports.cleanMessage = cleanMessage;
52
+ const isRealMessage = (message, meId) => {
53
+ var _a;
54
+ const normalizedContent = (0, messages_1.normalizeMessageContent)(message.message);
55
+ const hasSomeContent = !!(0, messages_1.getContentType)(normalizedContent);
56
+ return (!!normalizedContent
57
+ || REAL_MSG_STUB_TYPES.has(message.messageStubType)
58
+ || (REAL_MSG_REQ_ME_STUB_TYPES.has(message.messageStubType)
59
+ && ((_a = message.messageStubParameters) === null || _a === void 0 ? void 0 : _a.some(p => (0, WABinary_1.areJidsSameUser)(meId, p)))))
60
+ && hasSomeContent
61
+ && !(normalizedContent === null || normalizedContent === void 0 ? void 0 : normalizedContent.protocolMessage)
62
+ && !(normalizedContent === null || normalizedContent === void 0 ? void 0 : normalizedContent.reactionMessage)
63
+ && !(normalizedContent === null || normalizedContent === void 0 ? void 0 : normalizedContent.pollUpdateMessage);
118
64
  };
119
- export const shouldIncrementChatUnread = (message) => !message.key.fromMe && !message.messageStubType;
65
+ exports.isRealMessage = isRealMessage;
66
+ const shouldIncrementChatUnread = (message) => (!message.key.fromMe && !message.messageStubType);
67
+ exports.shouldIncrementChatUnread = shouldIncrementChatUnread;
120
68
  /**
121
69
  * Get the ID of the chat from the given key.
122
70
  * Typically -- that'll be the remoteJid, but for broadcasts, it'll be the participant
123
71
  */
124
- export const getChatId = ({ remoteJid, participant, fromMe }) => {
125
- if (!remoteJid) {
126
- throw new Boom('Cannot derive chat id: message key is missing remoteJid', {
127
- data: { remoteJid, participant, fromMe }
128
- });
129
- }
130
- if (isJidBroadcast(remoteJid) && !isJidStatusBroadcast(remoteJid) && !fromMe) {
131
- if (!participant) {
132
- throw new Boom('Cannot derive chat id: broadcast message key is missing participant', {
133
- data: { remoteJid, fromMe }
134
- });
135
- }
72
+ const getChatId = ({ remoteJid, participant, fromMe }) => {
73
+ if ((0, WABinary_1.isJidBroadcast)(remoteJid)
74
+ && !(0, WABinary_1.isJidStatusBroadcast)(remoteJid)
75
+ && !fromMe) {
136
76
  return participant;
137
77
  }
138
78
  return remoteJid;
139
79
  };
80
+ exports.getChatId = getChatId;
140
81
  /**
141
82
  * Decrypt a poll vote
142
83
  * @param vote encrypted vote
143
84
  * @param ctx additional info about the poll required for decryption
144
85
  * @returns list of SHA256 options
145
86
  */
146
- export function decryptPollVote({ encPayload, encIv }, { pollCreatorJid, pollMsgId, pollEncKey, voterJid }) {
87
+ function decryptPollVote({ encPayload, encIv }, { pollCreatorJid, pollMsgId, pollEncKey, voterJid, }) {
147
88
  const sign = Buffer.concat([
148
89
  toBinary(pollMsgId),
149
90
  toBinary(pollCreatorJid),
@@ -151,107 +92,52 @@ export function decryptPollVote({ encPayload, encIv }, { pollCreatorJid, pollMsg
151
92
  toBinary('Poll Vote'),
152
93
  new Uint8Array([1])
153
94
  ]);
154
- const key0 = hmacSign(pollEncKey, new Uint8Array(32), 'sha256');
155
- const decKey = hmacSign(sign, key0, 'sha256');
95
+ const key0 = (0, crypto_1.hmacSign)(pollEncKey, new Uint8Array(32), 'sha256');
96
+ const decKey = (0, crypto_1.hmacSign)(sign, key0, 'sha256');
156
97
  const aad = toBinary(`${pollMsgId}\u0000${voterJid}`);
157
- const decrypted = aesDecryptGCM(encPayload, decKey, encIv, aad);
158
- return proto.Message.PollVoteMessage.decode(decrypted);
159
- function toBinary(txt) {
160
- return Buffer.from(txt);
161
- }
162
- }
163
- /**
164
- * Decrypt an event response
165
- * @param response encrypted event response
166
- * @param ctx additional info about the event required for decryption
167
- * @returns event response message
168
- */
169
- export function decryptEventResponse({ encPayload, encIv }, { eventCreatorJid, eventMsgId, eventEncKey, responderJid }) {
170
- const sign = Buffer.concat([
171
- toBinary(eventMsgId),
172
- toBinary(eventCreatorJid),
173
- toBinary(responderJid),
174
- toBinary('Event Response'),
175
- new Uint8Array([1])
176
- ]);
177
- const key0 = hmacSign(eventEncKey, new Uint8Array(32), 'sha256');
178
- const decKey = hmacSign(sign, key0, 'sha256');
179
- const aad = toBinary(`${eventMsgId}\u0000${responderJid}`);
180
- const decrypted = aesDecryptGCM(encPayload, decKey, encIv, aad);
181
- return proto.Message.EventResponseMessage.decode(decrypted);
98
+ const decrypted = (0, crypto_1.aesDecryptGCM)(encPayload, decKey, encIv, aad);
99
+ return WAProto_1.proto.Message.PollVoteMessage.decode(decrypted);
182
100
  function toBinary(txt) {
183
101
  return Buffer.from(txt);
184
102
  }
185
103
  }
186
- const processMessage = async (message, { shouldProcessHistoryMsg, placeholderResendCache, ev, creds, signalRepository, keyStore, logger, options, getMessage }) => {
104
+ exports.decryptPollVote = decryptPollVote;
105
+ const processMessage = async (message, { shouldProcessHistoryMsg, placeholderResendCache, ev, creds, keyStore, logger, options, getMessage }) => {
106
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
187
107
  const meId = creds.me.id;
188
108
  const { accountSettings } = creds;
189
- const chat = { id: jidNormalizedUser(getChatId(message.key)) };
190
- const isRealMsg = isRealMessage(message);
109
+ const chat = { id: (0, WABinary_1.jidNormalizedUser)((0, exports.getChatId)(message.key)) };
110
+ const isRealMsg = (0, exports.isRealMessage)(message, meId);
191
111
  if (isRealMsg) {
192
- chat.messages = [{ message }];
193
- chat.conversationTimestamp = toNumber(message.messageTimestamp);
112
+ chat.conversationTimestamp = (0, generics_1.toNumber)(message.messageTimestamp);
194
113
  // only increment unread count if not CIPHERTEXT and from another person
195
- if (shouldIncrementChatUnread(message)) {
114
+ if ((0, exports.shouldIncrementChatUnread)(message)) {
196
115
  chat.unreadCount = (chat.unreadCount || 0) + 1;
197
116
  }
198
117
  }
199
- const content = normalizeMessageContent(message.message);
118
+ const content = (0, messages_1.normalizeMessageContent)(message.message);
200
119
  // unarchive chat if it's a real message, or someone reacted to our message
201
120
  // and we've the unarchive chats setting on
202
- if ((isRealMsg || content?.reactionMessage?.key?.fromMe) && accountSettings?.unarchiveChats) {
121
+ if ((isRealMsg || ((_b = (_a = content === null || content === void 0 ? void 0 : content.reactionMessage) === null || _a === void 0 ? void 0 : _a.key) === null || _b === void 0 ? void 0 : _b.fromMe))
122
+ && (accountSettings === null || accountSettings === void 0 ? void 0 : accountSettings.unarchiveChats)) {
203
123
  chat.archived = false;
204
124
  chat.readOnly = false;
205
125
  }
206
- const protocolMsg = content?.protocolMessage;
126
+ const protocolMsg = content === null || content === void 0 ? void 0 : content.protocolMessage;
207
127
  if (protocolMsg) {
208
- // Mirror whatsmeow's `handleProtocolMessage` guard, but applied only to
209
- // the protocol message types that originate from our own device — an
210
- // attacker could otherwise spoof any of these to manipulate local state.
211
- //
212
- // Self-only types (drop if `!fromMe`):
213
- // - HISTORY_SYNC_NOTIFICATION (our phone driving history sync)
214
- // - APP_STATE_SYNC_KEY_SHARE (key share between our devices)
215
- // - LID_MIGRATION_MAPPING_SYNC (server-initiated via our phone)
216
- // - PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE (response from our phone to our PDO request)
217
- //
218
- // Cross-user types (must NOT be dropped — legitimately arrive from others):
219
- // - REVOKE
220
- // - MESSAGE_EDIT
221
- // - EPHEMERAL_SETTING
222
- // - GROUP_MEMBER_LABEL_CHANGE
223
- //
224
- // See https://github.com/tulir/whatsmeow/blob/8d3700152a/message.go#L842-L845
225
- // for the reference architecture — whatsmeow's `handleProtocolMessage`
226
- // only contains self-only types because edits are unwrapped from
227
- // `EditedMessage` BEFORE this dispatch and revokes aren't routed here.
228
- const SELF_ONLY_TYPES = new Set([
229
- proto.Message.ProtocolMessage.Type.HISTORY_SYNC_NOTIFICATION,
230
- proto.Message.ProtocolMessage.Type.APP_STATE_SYNC_KEY_SHARE,
231
- proto.Message.ProtocolMessage.Type.LID_MIGRATION_MAPPING_SYNC,
232
- proto.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE
233
- ]);
234
- if (protocolMsg.type !== null &&
235
- protocolMsg.type !== undefined &&
236
- SELF_ONLY_TYPES.has(protocolMsg.type) &&
237
- !message.key.fromMe) {
238
- logger?.warn({ msgId: message.key.id, type: protocolMsg.type, from: message.key.participant || message.key.remoteJid }, 'dropping spoofed self-only protocolMessage from non-self origin');
239
- return;
240
- }
241
128
  switch (protocolMsg.type) {
242
- case proto.Message.ProtocolMessage.Type.HISTORY_SYNC_NOTIFICATION:
129
+ case WAProto_1.proto.Message.ProtocolMessage.Type.HISTORY_SYNC_NOTIFICATION:
243
130
  const histNotification = protocolMsg.historySyncNotification;
244
131
  const process = shouldProcessHistoryMsg;
245
- const isLatest = !creds.processedHistoryMessages?.length;
246
- logger?.info({
132
+ const isLatest = !((_c = creds.processedHistoryMessages) === null || _c === void 0 ? void 0 : _c.length);
133
+ logger === null || logger === void 0 ? void 0 : logger.info({
247
134
  histNotification,
248
135
  process,
249
136
  id: message.key.id,
250
- isLatest
137
+ isLatest,
251
138
  }, 'got history notification');
252
139
  if (process) {
253
- // TODO: investigate
254
- if (histNotification.syncType !== proto.HistorySync.HistorySyncType.ON_DEMAND) {
140
+ if (histNotification.syncType !== WAProto_1.proto.HistorySync.HistorySyncType.ON_DEMAND) {
255
141
  ev.emit('creds.update', {
256
142
  processedHistoryMessages: [
257
143
  ...(creds.processedHistoryMessages || []),
@@ -259,25 +145,19 @@ const processMessage = async (message, { shouldProcessHistoryMsg, placeholderRes
259
145
  ]
260
146
  });
261
147
  }
262
- const data = await downloadAndProcessHistorySyncNotification(histNotification, options, logger);
263
- if (data.lidPnMappings?.length) {
264
- logger?.debug({ count: data.lidPnMappings.length }, 'processing LID-PN mappings from history sync');
265
- await signalRepository.lidMapping
266
- .storeLIDPNMappings(data.lidPnMappings)
267
- .catch(err => logger?.warn({ err }, 'failed to store LID-PN mappings from history sync'));
268
- }
269
- await storeTcTokensFromHistorySync(data.chats, signalRepository, keyStore, logger);
148
+ const data = await (0, history_1.downloadAndProcessHistorySyncNotification)(histNotification, options);
270
149
  ev.emit('messaging-history.set', {
271
150
  ...data,
272
- isLatest: histNotification.syncType !== proto.HistorySync.HistorySyncType.ON_DEMAND ? isLatest : undefined,
273
- chunkOrder: histNotification.chunkOrder,
151
+ isLatest: histNotification.syncType !== WAProto_1.proto.HistorySync.HistorySyncType.ON_DEMAND
152
+ ? isLatest
153
+ : undefined,
274
154
  peerDataRequestSessionId: histNotification.peerDataRequestSessionId
275
155
  });
276
156
  }
277
157
  break;
278
- case proto.Message.ProtocolMessage.Type.APP_STATE_SYNC_KEY_SHARE:
158
+ case WAProto_1.proto.Message.ProtocolMessage.Type.APP_STATE_SYNC_KEY_SHARE:
279
159
  const keys = protocolMsg.appStateSyncKeyShare.keys;
280
- if (keys?.length) {
160
+ if (keys === null || keys === void 0 ? void 0 : keys.length) {
281
161
  let newAppStateSyncKeyId = '';
282
162
  await keyStore.transaction(async () => {
283
163
  const newKeys = [];
@@ -287,314 +167,163 @@ const processMessage = async (message, { shouldProcessHistoryMsg, placeholderRes
287
167
  await keyStore.set({ 'app-state-sync-key': { [strKeyId]: keyData } });
288
168
  newAppStateSyncKeyId = strKeyId;
289
169
  }
290
- logger?.info({ newAppStateSyncKeyId, newKeys }, 'injecting new app state sync keys');
291
- }, meId);
170
+ logger === null || logger === void 0 ? void 0 : logger.info({ newAppStateSyncKeyId, newKeys }, 'injecting new app state sync keys');
171
+ });
292
172
  ev.emit('creds.update', { myAppStateKeyId: newAppStateSyncKeyId });
293
173
  }
294
174
  else {
295
- logger?.info({ protocolMsg }, 'recv app state sync with 0 keys');
175
+ logger === null || logger === void 0 ? void 0 : logger.info({ protocolMsg }, 'recv app state sync with 0 keys');
296
176
  }
297
177
  break;
298
- case proto.Message.ProtocolMessage.Type.REVOKE:
178
+ case WAProto_1.proto.Message.ProtocolMessage.Type.REVOKE:
299
179
  ev.emit('messages.update', [
300
180
  {
301
181
  key: {
302
182
  ...message.key,
303
183
  id: protocolMsg.key.id
304
184
  },
305
- update: { message: null, messageStubType: WAMessageStubType.REVOKE, key: message.key }
185
+ update: { message: null, messageStubType: Types_1.WAMessageStubType.REVOKE, key: message.key }
306
186
  }
307
187
  ]);
308
188
  break;
309
- case proto.Message.ProtocolMessage.Type.EPHEMERAL_SETTING:
189
+ case WAProto_1.proto.Message.ProtocolMessage.Type.EPHEMERAL_SETTING:
310
190
  Object.assign(chat, {
311
- ephemeralSettingTimestamp: toNumber(message.messageTimestamp),
191
+ ephemeralSettingTimestamp: (0, generics_1.toNumber)(message.messageTimestamp),
312
192
  ephemeralExpiration: protocolMsg.ephemeralExpiration || null
313
193
  });
314
194
  break;
315
- case proto.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE:
195
+ case WAProto_1.proto.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE:
316
196
  const response = protocolMsg.peerDataOperationRequestResponseMessage;
317
197
  if (response) {
198
+ placeholderResendCache === null || placeholderResendCache === void 0 ? void 0 : placeholderResendCache.del(response.stanzaId);
318
199
  // TODO: IMPLEMENT HISTORY SYNC ETC (sticker uploads etc.).
319
- const peerDataOperationResult = response.peerDataOperationResult || [];
200
+ const { peerDataOperationResult } = response;
320
201
  for (const result of peerDataOperationResult) {
321
- const retryResponse = result?.placeholderMessageResendResponse;
322
- //eslint-disable-next-line max-depth
323
- if (!retryResponse?.webMessageInfoBytes) {
324
- continue;
325
- }
326
- //eslint-disable-next-line max-depth
327
- try {
328
- const webMessageInfo = proto.WebMessageInfo.decode(retryResponse.webMessageInfoBytes);
329
- const msgId = webMessageInfo.key?.id;
330
- // Retrieve cached original message data (preserves LID details,
331
- // timestamps, etc. that the phone may omit in its PDO response)
332
- const cachedData = msgId ? await placeholderResendCache?.get(msgId) : undefined;
333
- //eslint-disable-next-line max-depth
334
- if (msgId) {
335
- await placeholderResendCache?.del(msgId);
336
- }
337
- let finalMsg;
338
- //eslint-disable-next-line max-depth
339
- if (cachedData && typeof cachedData === 'object') {
340
- // Apply decoded message content onto cached metadata (preserves LID etc.)
341
- cachedData.message = webMessageInfo.message;
342
- //eslint-disable-next-line max-depth
343
- if (webMessageInfo.messageTimestamp) {
344
- cachedData.messageTimestamp = webMessageInfo.messageTimestamp;
345
- }
346
- finalMsg = cachedData;
347
- }
348
- else {
349
- finalMsg = webMessageInfo;
350
- }
351
- logger?.debug({ msgId, requestId: response.stanzaId }, 'received placeholder resend');
352
- ev.emit('messages.upsert', {
353
- messages: [finalMsg],
354
- type: 'notify',
355
- requestId: response.stanzaId
356
- });
357
- }
358
- catch (err) {
359
- logger?.warn({ err, stanzaId: response.stanzaId }, 'failed to decode placeholder resend response');
202
+ const { placeholderMessageResendResponse: retryResponse } = result;
203
+ if (retryResponse) {
204
+ const webMessageInfo = WAProto_1.proto.WebMessageInfo.decode(retryResponse.webMessageInfoBytes);
205
+ // wait till another upsert event is available, don't want it to be part of the PDO response message
206
+ setTimeout(() => {
207
+ ev.emit('messages.upsert', {
208
+ messages: [webMessageInfo],
209
+ type: 'notify',
210
+ requestId: response.stanzaId
211
+ });
212
+ }, 500);
360
213
  }
361
214
  }
362
215
  }
363
216
  break;
364
- case proto.Message.ProtocolMessage.Type.MESSAGE_EDIT:
365
- ev.emit('messages.update', [
366
- {
367
- // flip the sender / fromMe properties because they're in the perspective of the sender
368
- key: { ...message.key, id: protocolMsg.key?.id },
369
- update: {
370
- message: {
371
- editedMessage: {
372
- message: protocolMsg.editedMessage
373
- }
374
- },
375
- messageTimestamp: protocolMsg.timestampMs
376
- ? Math.floor(toNumber(protocolMsg.timestampMs) / 1000)
377
- : message.messageTimestamp
378
- }
379
- }
380
- ]);
381
- break;
382
- case proto.Message.ProtocolMessage.Type.GROUP_MEMBER_LABEL_CHANGE:
383
- const labelAssociationMsg = protocolMsg.memberLabel;
384
- if (labelAssociationMsg?.label) {
385
- ev.emit('group.member-tag.update', {
386
- groupId: chat.id,
387
- label: labelAssociationMsg.label,
388
- participant: message.key.participant,
389
- participantAlt: message.key.participantAlt,
390
- messageTimestamp: Number(message.messageTimestamp)
391
- });
392
- }
393
- break;
394
- case proto.Message.ProtocolMessage.Type.LID_MIGRATION_MAPPING_SYNC:
395
- const encodedPayload = protocolMsg.lidMigrationMappingSyncMessage?.encodedMappingPayload;
396
- const { pnToLidMappings, chatDbMigrationTimestamp } = proto.LIDMigrationMappingSyncPayload.decode(encodedPayload);
397
- logger?.debug({ pnToLidMappings, chatDbMigrationTimestamp }, 'got lid mappings and chat db migration timestamp');
398
- const pairs = [];
399
- for (const { pn, latestLid, assignedLid } of pnToLidMappings) {
400
- const lid = latestLid || assignedLid;
401
- pairs.push({ lid: `${lid}@lid`, pn: `${pn}@s.whatsapp.net` });
402
- }
403
- await signalRepository.lidMapping.storeLIDPNMappings(pairs);
404
- if (pairs.length) {
405
- for (const { pn, lid } of pairs) {
406
- await signalRepository.migrateSession(pn, lid);
407
- }
408
- }
409
217
  }
410
218
  }
411
- else if (content?.reactionMessage) {
219
+ else if (content === null || content === void 0 ? void 0 : content.reactionMessage) {
412
220
  const reaction = {
413
221
  ...content.reactionMessage,
414
- key: message.key
222
+ key: message.key,
415
223
  };
416
- ev.emit('messages.reaction', [
417
- {
224
+ ev.emit('messages.reaction', [{
418
225
  reaction,
419
- key: content.reactionMessage?.key
420
- }
421
- ]);
422
- }
423
- else if (content?.encEventResponseMessage) {
424
- const encEventResponse = content.encEventResponseMessage;
425
- const creationMsgKey = encEventResponse.eventCreationMessageKey;
426
- // we need to fetch the event creation message to get the event enc key
427
- const eventMsg = await getMessage(creationMsgKey);
428
- if (eventMsg) {
429
- try {
430
- const meIdNormalised = jidNormalizedUser(meId);
431
- // all jids need to be PN
432
- const eventCreatorKey = creationMsgKey.participant || creationMsgKey.remoteJid;
433
- const eventCreatorPn = isLidUser(eventCreatorKey)
434
- ? await signalRepository.lidMapping.getPNForLID(eventCreatorKey)
435
- : eventCreatorKey;
436
- const eventCreatorJid = getKeyAuthor({ remoteJid: jidNormalizedUser(eventCreatorPn), fromMe: meIdNormalised === eventCreatorPn }, meIdNormalised);
437
- const responderJid = getKeyAuthor(message.key, meIdNormalised);
438
- const eventEncKey = eventMsg?.messageContextInfo?.messageSecret;
439
- if (!eventEncKey) {
440
- logger?.warn({ creationMsgKey }, 'event response: missing messageSecret for decryption');
441
- }
442
- else {
443
- const responseMsg = decryptEventResponse(encEventResponse, {
444
- eventEncKey,
445
- eventCreatorJid,
446
- eventMsgId: creationMsgKey.id,
447
- responderJid
448
- });
449
- const eventResponse = {
450
- eventResponseMessageKey: message.key,
451
- senderTimestampMs: responseMsg.timestampMs,
452
- response: responseMsg
453
- };
454
- ev.emit('messages.update', [
455
- {
456
- key: creationMsgKey,
457
- update: {
458
- eventResponses: [eventResponse]
459
- }
460
- }
461
- ]);
462
- }
463
- }
464
- catch (err) {
465
- logger?.warn({ err, creationMsgKey }, 'failed to decrypt event response');
466
- }
467
- }
468
- else {
469
- logger?.warn({ creationMsgKey }, 'event creation message not found, cannot decrypt response');
470
- }
226
+ key: (_d = content.reactionMessage) === null || _d === void 0 ? void 0 : _d.key,
227
+ }]);
471
228
  }
472
229
  else if (message.messageStubType) {
473
- const jid = message.key?.remoteJid;
230
+ const jid = (_e = message.key) === null || _e === void 0 ? void 0 : _e.remoteJid;
474
231
  //let actor = whatsappID (message.participant)
475
232
  let participants;
476
- const emitParticipantsUpdate = (action) => ev.emit('group-participants.update', {
477
- id: jid,
478
- author: message.key.participant,
479
- authorPn: message.key.participantAlt,
480
- authorUsername: message.key.participantUsername,
481
- participants,
482
- action
483
- });
233
+ const emitParticipantsUpdate = (action) => (ev.emit('group-participants.update', { id: jid, author: message.participant, participants, action }));
484
234
  const emitGroupUpdate = (update) => {
485
- ev.emit('groups.update', [
486
- {
487
- id: jid,
488
- ...update,
489
- author: message.key.participant ?? undefined,
490
- authorPn: message.key.participantAlt,
491
- authorUsername: message.key.participantUsername
492
- }
493
- ]);
235
+ var _a;
236
+ ev.emit('groups.update', [{ id: jid, ...update, author: (_a = message.participant) !== null && _a !== void 0 ? _a : undefined }]);
494
237
  };
495
238
  const emitGroupRequestJoin = (participant, action, method) => {
496
- ev.emit('group.join-request', {
497
- id: jid,
498
- author: message.key.participant,
499
- authorPn: message.key.participantAlt,
500
- authorUsername: message.key.participantUsername,
501
- participant: participant.lid,
502
- participantPn: participant.pn,
503
- action,
504
- method: method
505
- });
239
+ ev.emit('group.join-request', { id: jid, author: message.participant, participant, action, method: method });
506
240
  };
507
- const participantsIncludesMe = () => participants.find(jid => areJidsSameUser(meId, jid.phoneNumber)); // ADD SUPPORT FOR LID
241
+ const participantsIncludesMe = () => participants.find(jid => (0, WABinary_1.areJidsSameUser)(meId, jid));
508
242
  switch (message.messageStubType) {
509
- case WAMessageStubType.GROUP_PARTICIPANT_CHANGE_NUMBER:
510
- participants = message.messageStubParameters.map((a) => JSON.parse(a)) || [];
243
+ case Types_1.WAMessageStubType.GROUP_PARTICIPANT_CHANGE_NUMBER:
244
+ participants = message.messageStubParameters || [];
511
245
  emitParticipantsUpdate('modify');
512
246
  break;
513
- case WAMessageStubType.GROUP_PARTICIPANT_LEAVE:
514
- case WAMessageStubType.GROUP_PARTICIPANT_REMOVE:
515
- participants = message.messageStubParameters.map((a) => JSON.parse(a)) || [];
247
+ case Types_1.WAMessageStubType.GROUP_PARTICIPANT_LEAVE:
248
+ case Types_1.WAMessageStubType.GROUP_PARTICIPANT_REMOVE:
249
+ participants = message.messageStubParameters || [];
516
250
  emitParticipantsUpdate('remove');
517
251
  // mark the chat read only if you left the group
518
252
  if (participantsIncludesMe()) {
519
253
  chat.readOnly = true;
520
254
  }
521
255
  break;
522
- case WAMessageStubType.GROUP_PARTICIPANT_ADD:
523
- case WAMessageStubType.GROUP_PARTICIPANT_INVITE:
524
- case WAMessageStubType.GROUP_PARTICIPANT_ADD_REQUEST_JOIN:
525
- participants = message.messageStubParameters.map((a) => JSON.parse(a)) || [];
256
+ case Types_1.WAMessageStubType.GROUP_PARTICIPANT_ADD:
257
+ case Types_1.WAMessageStubType.GROUP_PARTICIPANT_INVITE:
258
+ case Types_1.WAMessageStubType.GROUP_PARTICIPANT_ADD_REQUEST_JOIN:
259
+ participants = message.messageStubParameters || [];
526
260
  if (participantsIncludesMe()) {
527
261
  chat.readOnly = false;
528
262
  }
529
263
  emitParticipantsUpdate('add');
530
264
  break;
531
- case WAMessageStubType.GROUP_PARTICIPANT_DEMOTE:
532
- participants = message.messageStubParameters.map((a) => JSON.parse(a)) || [];
265
+ case Types_1.WAMessageStubType.GROUP_PARTICIPANT_DEMOTE:
266
+ participants = message.messageStubParameters || [];
533
267
  emitParticipantsUpdate('demote');
534
268
  break;
535
- case WAMessageStubType.GROUP_PARTICIPANT_PROMOTE:
536
- participants = message.messageStubParameters.map((a) => JSON.parse(a)) || [];
269
+ case Types_1.WAMessageStubType.GROUP_PARTICIPANT_PROMOTE:
270
+ participants = message.messageStubParameters || [];
537
271
  emitParticipantsUpdate('promote');
538
272
  break;
539
- case WAMessageStubType.GROUP_CHANGE_ANNOUNCE:
540
- const announceValue = message.messageStubParameters?.[0];
273
+ case Types_1.WAMessageStubType.GROUP_CHANGE_ANNOUNCE:
274
+ const announceValue = (_f = message.messageStubParameters) === null || _f === void 0 ? void 0 : _f[0];
541
275
  emitGroupUpdate({ announce: announceValue === 'true' || announceValue === 'on' });
542
276
  break;
543
- case WAMessageStubType.GROUP_CHANGE_RESTRICT:
544
- const restrictValue = message.messageStubParameters?.[0];
277
+ case Types_1.WAMessageStubType.GROUP_CHANGE_RESTRICT:
278
+ const restrictValue = (_g = message.messageStubParameters) === null || _g === void 0 ? void 0 : _g[0];
545
279
  emitGroupUpdate({ restrict: restrictValue === 'true' || restrictValue === 'on' });
546
280
  break;
547
- case WAMessageStubType.GROUP_CHANGE_SUBJECT:
548
- const name = message.messageStubParameters?.[0];
281
+ case Types_1.WAMessageStubType.GROUP_CHANGE_SUBJECT:
282
+ const name = (_h = message.messageStubParameters) === null || _h === void 0 ? void 0 : _h[0];
549
283
  chat.name = name;
550
284
  emitGroupUpdate({ subject: name });
551
285
  break;
552
- case WAMessageStubType.GROUP_CHANGE_DESCRIPTION:
553
- const description = message.messageStubParameters?.[0];
286
+ case Types_1.WAMessageStubType.GROUP_CHANGE_DESCRIPTION:
287
+ const description = (_j = message.messageStubParameters) === null || _j === void 0 ? void 0 : _j[0];
554
288
  chat.description = description;
555
289
  emitGroupUpdate({ desc: description });
556
290
  break;
557
- case WAMessageStubType.GROUP_CHANGE_INVITE_LINK:
558
- const code = message.messageStubParameters?.[0];
291
+ case Types_1.WAMessageStubType.GROUP_CHANGE_INVITE_LINK:
292
+ const code = (_k = message.messageStubParameters) === null || _k === void 0 ? void 0 : _k[0];
559
293
  emitGroupUpdate({ inviteCode: code });
560
294
  break;
561
- case WAMessageStubType.GROUP_MEMBER_ADD_MODE:
562
- const memberAddValue = message.messageStubParameters?.[0];
295
+ case Types_1.WAMessageStubType.GROUP_MEMBER_ADD_MODE:
296
+ const memberAddValue = (_l = message.messageStubParameters) === null || _l === void 0 ? void 0 : _l[0];
563
297
  emitGroupUpdate({ memberAddMode: memberAddValue === 'all_member_add' });
564
298
  break;
565
- case WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE:
566
- const approvalMode = message.messageStubParameters?.[0];
299
+ case Types_1.WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE:
300
+ const approvalMode = (_m = message.messageStubParameters) === null || _m === void 0 ? void 0 : _m[0];
567
301
  emitGroupUpdate({ joinApprovalMode: approvalMode === 'on' });
568
302
  break;
569
- case WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD: // TODO: Add other events
570
- const participant = JSON.parse(message.messageStubParameters?.[0]);
571
- const action = message.messageStubParameters?.[1];
572
- const method = message.messageStubParameters?.[2];
303
+ case Types_1.WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD:
304
+ const participant = (_o = message.messageStubParameters) === null || _o === void 0 ? void 0 : _o[0];
305
+ const action = (_p = message.messageStubParameters) === null || _p === void 0 ? void 0 : _p[1];
306
+ const method = (_q = message.messageStubParameters) === null || _q === void 0 ? void 0 : _q[2];
573
307
  emitGroupRequestJoin(participant, action, method);
574
308
  break;
575
309
  }
576
- } /* else if(content?.pollUpdateMessage) {
577
- const creationMsgKey = content.pollUpdateMessage.pollCreationMessageKey!
310
+ }
311
+ else if (content === null || content === void 0 ? void 0 : content.pollUpdateMessage) {
312
+ const creationMsgKey = content.pollUpdateMessage.pollCreationMessageKey;
578
313
  // we need to fetch the poll creation message to get the poll enc key
579
- // TODO: make standalone, remove getMessage reference
580
- // TODO: Remove entirely
581
- const pollMsg = await getMessage(creationMsgKey)
582
- if(pollMsg) {
583
- const meIdNormalised = jidNormalizedUser(meId)
584
- const pollCreatorJid = getKeyAuthor(creationMsgKey, meIdNormalised)
585
- const voterJid = getKeyAuthor(message.key, meIdNormalised)
586
- const pollEncKey = pollMsg.messageContextInfo?.messageSecret!
587
-
314
+ const pollMsg = await getMessage(creationMsgKey);
315
+ if (pollMsg) {
316
+ const meIdNormalised = (0, WABinary_1.jidNormalizedUser)(meId);
317
+ const pollCreatorJid = (0, generics_1.getKeyAuthor)(creationMsgKey, meIdNormalised);
318
+ const voterJid = (0, generics_1.getKeyAuthor)(message.key, meIdNormalised);
319
+ const pollEncKey = (_r = pollMsg.messageContextInfo) === null || _r === void 0 ? void 0 : _r.messageSecret;
588
320
  try {
589
- const voteMsg = decryptPollVote(
590
- content.pollUpdateMessage.vote!,
591
- {
592
- pollEncKey,
593
- pollCreatorJid,
594
- pollMsgId: creationMsgKey.id!,
595
- voterJid,
596
- }
597
- )
321
+ const voteMsg = decryptPollVote(content.pollUpdateMessage.vote, {
322
+ pollEncKey,
323
+ pollCreatorJid,
324
+ pollMsgId: creationMsgKey.id,
325
+ voterJid,
326
+ });
598
327
  ev.emit('messages.update', [
599
328
  {
600
329
  key: creationMsgKey,
@@ -603,28 +332,23 @@ const processMessage = async (message, { shouldProcessHistoryMsg, placeholderRes
603
332
  {
604
333
  pollUpdateMessageKey: message.key,
605
334
  vote: voteMsg,
606
- senderTimestampMs: (content.pollUpdateMessage.senderTimestampMs! as Long).toNumber(),
335
+ senderTimestampMs: content.pollUpdateMessage.senderTimestampMs.toNumber(),
607
336
  }
608
337
  ]
609
338
  }
610
339
  }
611
- ])
612
- } catch(err) {
613
- logger?.warn(
614
- { err, creationMsgKey },
615
- 'failed to decrypt poll vote'
616
- )
340
+ ]);
341
+ }
342
+ catch (err) {
343
+ logger === null || logger === void 0 ? void 0 : logger.warn({ err, creationMsgKey }, 'failed to decrypt poll vote');
617
344
  }
618
- } else {
619
- logger?.warn(
620
- { creationMsgKey },
621
- 'poll creation message not found, cannot decrypt update'
622
- )
623
345
  }
624
- } */
346
+ else {
347
+ logger === null || logger === void 0 ? void 0 : logger.warn({ creationMsgKey }, 'poll creation message not found, cannot decrypt update');
348
+ }
349
+ }
625
350
  if (Object.keys(chat).length > 1) {
626
351
  ev.emit('chats.update', [chat]);
627
352
  }
628
353
  };
629
- export default processMessage;
630
- //# sourceMappingURL=process-message.js.map
354
+ exports.default = processMessage;