@pontalabs/baileys 1.0.4 → 1.0.6

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