@pontalabs/baileys 1.0.5 → 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 +288 -142
  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 -472
  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,17 +1,8 @@
1
- "use strict"
2
-
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod }
5
- }
6
-
7
- Object.defineProperty(exports, "__esModule", { value: true })
8
-
9
- const events_1 = __importDefault(require("events"))
10
- const Types_1 = require("../Types")
11
- const generics_1 = require("./generics")
12
- const messages_1 = require("./messages")
13
- const process_message_1 = require("./process-message")
14
-
1
+ import EventEmitter from 'events';
2
+ import { WAMessageStatus } from '../Types/index.js';
3
+ import { trimUndefined } from './generics.js';
4
+ import { updateMessageWithReaction, updateMessageWithReceipt } from './messages.js';
5
+ import { isRealMessage, shouldIncrementChatUnread } from './process-message.js';
15
6
  const BUFFERABLE_EVENT = [
16
7
  'messaging-history.set',
17
8
  'chats.upsert',
@@ -22,155 +13,185 @@ const BUFFERABLE_EVENT = [
22
13
  'messages.upsert',
23
14
  'messages.update',
24
15
  'messages.delete',
25
- //'messages.poll',
26
16
  'messages.reaction',
27
17
  'message-receipt.update',
28
- 'groups.update',
29
- ]
30
-
31
- const BUFFERABLE_EVENT_SET = new Set(BUFFERABLE_EVENT)
32
-
18
+ 'groups.update'
19
+ ];
20
+ const BUFFERABLE_EVENT_SET = new Set(BUFFERABLE_EVENT);
33
21
  /**
34
22
  * The event buffer logically consolidates different events into a single event
35
23
  * making the data processing more efficient.
36
24
  */
37
- const makeEventBuffer = (logger) => {
38
- const ev = new events_1.default()
39
- const historyCache = new Set()
40
- let data = makeBufferData()
41
- let isBuffering = false
42
- let bufferTimeout = null
43
- let flushPendingTimeout = null
44
- let bufferCount = 0
45
- const MAX_HISTORY_CACHE_SIZE = 10000 // Limit the history cache size to prevent memory bloat
46
- const BUFFER_TIMEOUT_MS = 30000 // 30 seconds
47
-
25
+ export const makeEventBuffer = (logger) => {
26
+ const ev = new EventEmitter();
27
+ const historyCache = new Set();
28
+ let data = makeBufferData();
29
+ let isBuffering = false;
30
+ let bufferTimeout = null;
31
+ let flushPendingTimeout = null; // Add a specific timer for the debounced flush to prevent leak
32
+ let bufferCount = 0;
33
+ const MAX_HISTORY_CACHE_SIZE = 10000; // Limit the history cache size to prevent memory bloat
34
+ const BUFFER_TIMEOUT_MS = 30000; // 30 seconds
48
35
  // take the generic event and fire it as a baileys event
49
36
  ev.on('event', (map) => {
50
37
  for (const event in map) {
51
- ev.emit(event, map[event])
38
+ ev.emit(event, map[event]);
52
39
  }
53
- })
40
+ });
54
41
  function buffer() {
55
42
  if (!isBuffering) {
56
- logger.debug('Event buffer activated')
57
- isBuffering = true
58
- bufferCount++
59
-
60
- // Auto-flush after a timeout to prevent infinite buffering
43
+ logger.debug('Event buffer activated');
44
+ isBuffering = true;
45
+ bufferCount = 0;
61
46
  if (bufferTimeout) {
62
- clearTimeout(bufferTimeout)
47
+ clearTimeout(bufferTimeout);
63
48
  }
64
-
65
49
  bufferTimeout = setTimeout(() => {
66
50
  if (isBuffering) {
67
- logger.warn('Buffer timeout reached, auto-flushing')
68
- flush()
51
+ logger.warn('Buffer timeout reached, auto-flushing');
52
+ flush();
69
53
  }
70
- }, BUFFER_TIMEOUT_MS)
71
- }
72
- else {
73
- bufferCount++
54
+ }, BUFFER_TIMEOUT_MS);
74
55
  }
56
+ // Always increment count when requested
57
+ bufferCount++;
75
58
  }
76
59
  function flush() {
77
60
  if (!isBuffering) {
78
- return false
61
+ return false;
79
62
  }
80
-
81
- logger.debug({ bufferCount }, 'Flushing event buffer')
82
- isBuffering = false
83
- bufferCount = 0
84
-
85
- // Clear timeouts
63
+ logger.debug({ bufferCount }, 'Flushing event buffer');
64
+ isBuffering = false;
65
+ bufferCount = 0;
66
+ // Clear timeout
86
67
  if (bufferTimeout) {
87
- clearTimeout(bufferTimeout)
88
- bufferTimeout = null
68
+ clearTimeout(bufferTimeout);
69
+ bufferTimeout = null;
89
70
  }
90
71
  if (flushPendingTimeout) {
91
- clearTimeout(flushPendingTimeout)
92
- flushPendingTimeout = null
72
+ clearTimeout(flushPendingTimeout);
73
+ flushPendingTimeout = null;
93
74
  }
94
-
95
75
  // Clear history cache if it exceeds the max size
96
76
  if (historyCache.size > MAX_HISTORY_CACHE_SIZE) {
97
- logger.debug({ cacheSize: historyCache.size }, 'Clearing history cache')
98
- historyCache.clear()
77
+ logger.debug({ cacheSize: historyCache.size }, 'Clearing history cache');
78
+ historyCache.clear();
99
79
  }
100
-
101
- const newData = makeBufferData()
102
- const chatUpdates = Object.values(data.chatUpdates)
103
- let conditionalChatUpdatesLeft = 0
80
+ const newData = makeBufferData();
81
+ const chatUpdates = Object.values(data.chatUpdates);
82
+ let conditionalChatUpdatesLeft = 0;
104
83
  for (const update of chatUpdates) {
105
84
  if (update.conditional) {
106
- conditionalChatUpdatesLeft += 1
107
- newData.chatUpdates[update.id] = update
108
- delete data.chatUpdates[update.id]
85
+ conditionalChatUpdatesLeft += 1;
86
+ newData.chatUpdates[update.id] = update;
87
+ delete data.chatUpdates[update.id];
109
88
  }
110
89
  }
111
- const consolidatedData = consolidateEvents(data)
90
+ const consolidatedData = consolidateEvents(data);
112
91
  if (Object.keys(consolidatedData).length) {
113
- ev.emit('event', consolidatedData)
92
+ ev.emit('event', consolidatedData);
114
93
  }
115
- data = newData
116
- logger.trace({ conditionalChatUpdatesLeft }, 'released buffered events')
117
- return true
94
+ data = newData;
95
+ logger.trace({ conditionalChatUpdatesLeft }, 'released buffered events');
96
+ return true;
118
97
  }
119
98
  return {
120
99
  process(handler) {
121
- const listener = (map) => {
122
- handler(map)
123
- }
124
- ev.on('event', listener)
100
+ const listener = async (map) => {
101
+ await handler(map);
102
+ };
103
+ ev.on('event', listener);
125
104
  return () => {
126
- ev.off('event', listener)
127
- }
105
+ ev.off('event', listener);
106
+ };
128
107
  },
129
108
  emit(event, evData) {
109
+ // Check if this is a messages.upsert with a different type than what's buffered
110
+ // If so, flush the buffered messages first to avoid type overshadowing
111
+ if (event === 'messages.upsert') {
112
+ const { type } = evData;
113
+ const existingUpserts = Object.values(data.messageUpserts);
114
+ if (existingUpserts.length > 0) {
115
+ const bufferedType = existingUpserts[0].type;
116
+ if (bufferedType !== type) {
117
+ logger.debug({ bufferedType, newType: type }, 'messages.upsert type mismatch, emitting buffered messages');
118
+ // Emit the buffered messages with their correct type
119
+ ev.emit('event', {
120
+ 'messages.upsert': {
121
+ messages: existingUpserts.map(m => m.message),
122
+ type: bufferedType
123
+ }
124
+ });
125
+ // Clear the message upserts from the buffer
126
+ data.messageUpserts = {};
127
+ }
128
+ }
129
+ }
130
130
  if (isBuffering && BUFFERABLE_EVENT_SET.has(event)) {
131
- append(data, historyCache, event, evData, logger)
132
- return true
131
+ append(data, historyCache, event, evData, logger);
132
+ return true;
133
133
  }
134
- return ev.emit('event', { [event]: evData })
134
+ return ev.emit('event', { [event]: evData });
135
135
  },
136
136
  isBuffering() {
137
- return isBuffering
137
+ return isBuffering;
138
138
  },
139
139
  buffer,
140
140
  flush,
141
141
  createBufferedFunction(work) {
142
142
  return async (...args) => {
143
- buffer()
143
+ buffer();
144
144
  try {
145
- const result = await work(...args)
146
- return result
145
+ const result = await work(...args);
146
+ // If this is the only buffer, flush after a small delay
147
+ if (bufferCount === 1) {
148
+ setTimeout(() => {
149
+ if (isBuffering && bufferCount === 1) {
150
+ flush();
151
+ }
152
+ }, 100); // Small delay to allow nested buffers
153
+ }
154
+ return result;
147
155
  }
148
156
  catch (error) {
149
- throw error
157
+ throw error;
150
158
  }
151
159
  finally {
152
- bufferCount = Math.max(0, bufferCount - 1)
153
-
154
- if (bufferCount === 0 && isBuffering) {
155
- // Only schedule ONE flush timer at a time to prevent timer storms
160
+ bufferCount = Math.max(0, bufferCount - 1);
161
+ if (bufferCount === 0) {
162
+ // Only schedule ONE timeout, not 10,000
156
163
  if (!flushPendingTimeout) {
157
- flushPendingTimeout = setTimeout(() => {
158
- flushPendingTimeout = null
159
- if (isBuffering && bufferCount === 0) {
160
- flush()
161
- }
162
- }, 100)
164
+ flushPendingTimeout = setTimeout(flush, 100);
163
165
  }
164
166
  }
165
167
  }
166
- }
168
+ };
167
169
  },
168
170
  on: (...args) => ev.on(...args),
169
171
  off: (...args) => ev.off(...args),
170
172
  removeAllListeners: (...args) => ev.removeAllListeners(...args),
171
- }
172
- }
173
-
173
+ destroy() {
174
+ // Clear buffer timeout
175
+ if (bufferTimeout) {
176
+ clearTimeout(bufferTimeout);
177
+ bufferTimeout = null;
178
+ }
179
+ if (flushPendingTimeout) {
180
+ clearTimeout(flushPendingTimeout);
181
+ flushPendingTimeout = null;
182
+ }
183
+ // Clear history cache
184
+ historyCache.clear();
185
+ // Reset buffer data
186
+ data = makeBufferData();
187
+ isBuffering = false;
188
+ bufferCount = 0;
189
+ // Remove all listeners
190
+ ev.removeAllListeners();
191
+ logger.debug('Event buffer destroyed');
192
+ }
193
+ };
194
+ };
174
195
  const makeBufferData = () => {
175
196
  return {
176
197
  historySets: {
@@ -187,411 +208,415 @@ const makeBufferData = () => {
187
208
  contactUpdates: {},
188
209
  messageUpserts: {},
189
210
  messageUpdates: {},
190
- //messagePollings: {},
191
211
  messageReactions: {},
192
212
  messageDeletes: {},
193
213
  messageReceipts: {},
194
214
  groupUpdates: {}
195
- }
196
- }
197
-
198
- function append(data, historyCache, event, eventData, logger) {
199
- var _a, _b, _c
215
+ };
216
+ };
217
+ function append(data, historyCache, event,
218
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
219
+ eventData, logger) {
200
220
  switch (event) {
201
221
  case 'messaging-history.set':
202
222
  for (const chat of eventData.chats) {
203
- const existingChat = data.historySets.chats[chat.id]
223
+ const id = chat.id || '';
224
+ const existingChat = data.historySets.chats[id];
204
225
  if (existingChat) {
205
- existingChat.endOfHistoryTransferType = chat.endOfHistoryTransferType
226
+ existingChat.endOfHistoryTransferType = chat.endOfHistoryTransferType;
206
227
  }
207
- if (!existingChat && !historyCache.has(chat.id)) {
208
- data.historySets.chats[chat.id] = chat
209
- historyCache.add(chat.id)
210
- absorbingChatUpdate(chat)
228
+ if (!existingChat && !historyCache.has(id)) {
229
+ data.historySets.chats[id] = chat;
230
+ historyCache.add(id);
231
+ absorbingChatUpdate(chat);
211
232
  }
212
233
  }
213
234
  for (const contact of eventData.contacts) {
214
- const existingContact = data.historySets.contacts[contact.id]
235
+ const existingContact = data.historySets.contacts[contact.id];
215
236
  if (existingContact) {
216
- Object.assign(existingContact, generics_1.trimUndefined(contact))
237
+ Object.assign(existingContact, trimUndefined(contact));
217
238
  }
218
239
  else {
219
- const historyContactId = `c:${contact.id}`
220
- const hasAnyName = contact.notify || contact.name || contact.verifiedName
240
+ const historyContactId = `c:${contact.id}`;
241
+ const hasAnyName = contact.notify || contact.name || contact.verifiedName;
221
242
  if (!historyCache.has(historyContactId) || hasAnyName) {
222
- data.historySets.contacts[contact.id] = contact
223
- historyCache.add(historyContactId)
243
+ data.historySets.contacts[contact.id] = contact;
244
+ historyCache.add(historyContactId);
224
245
  }
225
246
  }
226
247
  }
227
248
  for (const message of eventData.messages) {
228
- const key = stringifyMessageKey(message.key)
229
- const existingMsg = data.historySets.messages[key]
249
+ const key = stringifyMessageKey(message.key);
250
+ const existingMsg = data.historySets.messages[key];
230
251
  if (!existingMsg && !historyCache.has(key)) {
231
- data.historySets.messages[key] = message
232
- historyCache.add(key)
252
+ data.historySets.messages[key] = message;
253
+ historyCache.add(key);
233
254
  }
234
255
  }
235
- data.historySets.empty = false
236
- data.historySets.syncType = eventData.syncType
237
- data.historySets.progress = eventData.progress
238
- data.historySets.peerDataRequestSessionId = eventData.peerDataRequestSessionId
239
- data.historySets.isLatest = eventData.isLatest || data.historySets.isLatest
240
- break
256
+ data.historySets.empty = false;
257
+ data.historySets.syncType = eventData.syncType;
258
+ if (eventData.pastParticipants?.length) {
259
+ const merged = new Map();
260
+ const sigOf = (p) => `${p.userJid || ''}:${p.leaveTs || ''}:${p.leaveReason || ''}`;
261
+ const ingest = (entry) => {
262
+ const key = entry.groupJid ?? JSON.stringify(entry);
263
+ const existing = merged.get(key);
264
+ if (!existing) {
265
+ merged.set(key, { ...entry, pastParticipants: [...(entry.pastParticipants || [])] });
266
+ return;
267
+ }
268
+ const seen = new Set((existing.pastParticipants || []).map(sigOf));
269
+ for (const p of entry.pastParticipants || []) {
270
+ const sig = sigOf(p);
271
+ if (!seen.has(sig)) {
272
+ existing.pastParticipants.push(p);
273
+ seen.add(sig);
274
+ }
275
+ }
276
+ };
277
+ for (const entry of data.historySets.pastParticipants || [])
278
+ ingest(entry);
279
+ for (const entry of eventData.pastParticipants)
280
+ ingest(entry);
281
+ data.historySets.pastParticipants = [...merged.values()];
282
+ }
283
+ data.historySets.progress = eventData.progress;
284
+ data.historySets.chunkOrder = eventData.chunkOrder;
285
+ data.historySets.peerDataRequestSessionId = eventData.peerDataRequestSessionId;
286
+ data.historySets.isLatest = eventData.isLatest || data.historySets.isLatest;
287
+ break;
241
288
  case 'chats.upsert':
242
289
  for (const chat of eventData) {
243
- let upsert = data.chatUpserts[chat.id]
244
- if (!upsert) {
245
- upsert = data.historySets[chat.id]
290
+ const id = chat.id || '';
291
+ let upsert = data.chatUpserts[id];
292
+ if (id && !upsert) {
293
+ upsert = data.historySets.chats[id];
246
294
  if (upsert) {
247
- logger.debug({ chatId: chat.id }, 'absorbed chat upsert in chat set')
295
+ logger.debug({ chatId: id }, 'absorbed chat upsert in chat set');
248
296
  }
249
297
  }
250
298
  if (upsert) {
251
- upsert = concatChats(upsert, chat)
299
+ upsert = concatChats(upsert, chat);
252
300
  }
253
301
  else {
254
- upsert = chat
255
- data.chatUpserts[chat.id] = upsert
302
+ upsert = chat;
303
+ data.chatUpserts[id] = upsert;
256
304
  }
257
- absorbingChatUpdate(upsert)
258
- if (data.chatDeletes.has(chat.id)) {
259
- data.chatDeletes.delete(chat.id)
305
+ absorbingChatUpdate(upsert);
306
+ if (data.chatDeletes.has(id)) {
307
+ data.chatDeletes.delete(id);
260
308
  }
261
309
  }
262
- break
310
+ break;
263
311
  case 'chats.update':
264
312
  for (const update of eventData) {
265
- const chatId = update.id
266
- const conditionMatches = update.conditional ? update.conditional(data) : true
313
+ const chatId = update.id;
314
+ const conditionMatches = update.conditional ? update.conditional(data) : true;
267
315
  if (conditionMatches) {
268
- delete update.conditional
316
+ delete update.conditional;
269
317
  // if there is an existing upsert, merge the update into it
270
- const upsert = data.historySets.chats[chatId] || data.chatUpserts[chatId]
318
+ const upsert = data.historySets.chats[chatId] || data.chatUpserts[chatId];
271
319
  if (upsert) {
272
- concatChats(upsert, update)
320
+ concatChats(upsert, update);
273
321
  }
274
322
  else {
275
323
  // merge the update into the existing update
276
- const chatUpdate = data.chatUpdates[chatId] || {}
277
- data.chatUpdates[chatId] = concatChats(chatUpdate, update)
324
+ const chatUpdate = data.chatUpdates[chatId] || {};
325
+ data.chatUpdates[chatId] = concatChats(chatUpdate, update);
278
326
  }
279
327
  }
280
328
  else if (conditionMatches === undefined) {
281
329
  // condition yet to be fulfilled
282
- data.chatUpdates[chatId] = update
330
+ data.chatUpdates[chatId] = update;
283
331
  }
284
332
  // otherwise -- condition not met, update is invalid
285
333
  // if the chat has been updated
286
334
  // ignore any existing chat delete
287
335
  if (data.chatDeletes.has(chatId)) {
288
- data.chatDeletes.delete(chatId)
336
+ data.chatDeletes.delete(chatId);
289
337
  }
290
338
  }
291
- break
339
+ break;
292
340
  case 'chats.delete':
293
341
  for (const chatId of eventData) {
294
342
  if (!data.chatDeletes.has(chatId)) {
295
- data.chatDeletes.add(chatId)
343
+ data.chatDeletes.add(chatId);
296
344
  }
297
345
  // remove any prior updates & upserts
298
346
  if (data.chatUpdates[chatId]) {
299
- delete data.chatUpdates[chatId]
347
+ delete data.chatUpdates[chatId];
300
348
  }
301
349
  if (data.chatUpserts[chatId]) {
302
- delete data.chatUpserts[chatId]
350
+ delete data.chatUpserts[chatId];
303
351
  }
304
352
  if (data.historySets.chats[chatId]) {
305
- delete data.historySets.chats[chatId]
353
+ delete data.historySets.chats[chatId];
306
354
  }
307
355
  }
308
- break
356
+ break;
309
357
  case 'contacts.upsert':
310
358
  for (const contact of eventData) {
311
- let upsert = data.contactUpserts[contact.id]
359
+ let upsert = data.contactUpserts[contact.id];
312
360
  if (!upsert) {
313
- upsert = data.historySets.contacts[contact.id]
361
+ upsert = data.historySets.contacts[contact.id];
314
362
  if (upsert) {
315
- logger.debug({ contactId: contact.id }, 'absorbed contact upsert in contact set')
363
+ logger.debug({ contactId: contact.id }, 'absorbed contact upsert in contact set');
316
364
  }
317
365
  }
318
366
  if (upsert) {
319
- upsert = Object.assign(upsert, generics_1.trimUndefined(contact))
367
+ upsert = Object.assign(upsert, trimUndefined(contact));
320
368
  }
321
369
  else {
322
- upsert = contact
323
- data.contactUpserts[contact.id] = upsert
370
+ upsert = contact;
371
+ data.contactUpserts[contact.id] = upsert;
324
372
  }
325
373
  if (data.contactUpdates[contact.id]) {
326
- upsert = Object.assign(data.contactUpdates[contact.id], generics_1.trimUndefined(contact))
327
- delete data.contactUpdates[contact.id]
374
+ upsert = Object.assign(data.contactUpdates[contact.id], trimUndefined(contact));
375
+ delete data.contactUpdates[contact.id];
328
376
  }
329
377
  }
330
- break
378
+ break;
331
379
  case 'contacts.update':
332
- const contactUpdates = eventData
380
+ const contactUpdates = eventData;
333
381
  for (const update of contactUpdates) {
334
- const id = update.id
382
+ const id = update.id;
335
383
  // merge into prior upsert
336
- const upsert = data.historySets.contacts[id] || data.contactUpserts[id]
384
+ const upsert = data.historySets.contacts[id] || data.contactUpserts[id];
337
385
  if (upsert) {
338
- Object.assign(upsert, update)
386
+ Object.assign(upsert, update);
339
387
  }
340
388
  else {
341
389
  // merge into prior update
342
- const contactUpdate = data.contactUpdates[id] || {}
343
- data.contactUpdates[id] = Object.assign(contactUpdate, update)
390
+ const contactUpdate = data.contactUpdates[id] || {};
391
+ data.contactUpdates[id] = Object.assign(contactUpdate, update);
344
392
  }
345
393
  }
346
- break
394
+ break;
347
395
  case 'messages.upsert':
348
- const { messages, type } = eventData
396
+ const { messages, type } = eventData;
349
397
  for (const message of messages) {
350
- const key = stringifyMessageKey(message.key)
351
- let existing = (_a = data.messageUpserts[key]) === null || _a === void 0 ? void 0 : _a.message
398
+ const key = stringifyMessageKey(message.key);
399
+ let existing = data.messageUpserts[key]?.message;
352
400
  if (!existing) {
353
- existing = data.historySets.messages[key]
401
+ existing = data.historySets.messages[key];
354
402
  if (existing) {
355
- logger.debug({ messageId: key }, 'absorbed message upsert in message set')
403
+ logger.debug({ messageId: key }, 'absorbed message upsert in message set');
356
404
  }
357
405
  }
358
406
  if (existing) {
359
- message.messageTimestamp = existing.messageTimestamp
407
+ message.messageTimestamp = existing.messageTimestamp;
360
408
  }
361
409
  if (data.messageUpdates[key]) {
362
- logger.debug('absorbed prior message update in message upsert')
363
- Object.assign(message, data.messageUpdates[key].update)
364
- delete data.messageUpdates[key]
410
+ logger.debug('absorbed prior message update in message upsert');
411
+ Object.assign(message, data.messageUpdates[key].update);
412
+ delete data.messageUpdates[key];
365
413
  }
366
414
  if (data.historySets.messages[key]) {
367
- data.historySets.messages[key] = message
415
+ data.historySets.messages[key] = message;
368
416
  }
369
417
  else {
370
418
  data.messageUpserts[key] = {
371
419
  message,
372
- type: type === 'notify' || ((_b = data.messageUpserts[key]) === null || _b === void 0 ? void 0 : _b.type) === 'notify'
373
- ? 'notify'
374
- : type
375
- }
420
+ type: type === 'notify' || data.messageUpserts[key]?.type === 'notify' ? 'notify' : type
421
+ };
376
422
  }
377
423
  }
378
- break
424
+ break;
379
425
  case 'messages.update':
380
- const msgUpdates = eventData
426
+ const msgUpdates = eventData;
381
427
  for (const { key, update } of msgUpdates) {
382
- const keyStr = stringifyMessageKey(key)
383
- const existing = data.historySets.messages[keyStr] || ((_c = data.messageUpserts[keyStr]) === null || _c === void 0 ? void 0 : _c.message)
428
+ const keyStr = stringifyMessageKey(key);
429
+ const existing = data.historySets.messages[keyStr] || data.messageUpserts[keyStr]?.message;
384
430
  if (existing) {
385
- Object.assign(existing, update)
431
+ Object.assign(existing, update);
386
432
  // if the message was received & read by us
387
433
  // the chat counter must have been incremented
388
434
  // so we need to decrement it
389
- if (update.status === Types_1.WAMessageStatus.READ && !key.fromMe) {
390
- decrementChatReadCounterIfMsgDidUnread(existing)
435
+ if (update.status === WAMessageStatus.READ && !key.fromMe) {
436
+ decrementChatReadCounterIfMsgDidUnread(existing);
391
437
  }
392
438
  }
393
439
  else {
394
- const msgUpdate = data.messageUpdates[keyStr] || { key, update: {} }
395
- Object.assign(msgUpdate.update, update)
396
- data.messageUpdates[keyStr] = msgUpdate
440
+ const msgUpdate = data.messageUpdates[keyStr] || { key, update: {} };
441
+ Object.assign(msgUpdate.update, update);
442
+ data.messageUpdates[keyStr] = msgUpdate;
397
443
  }
398
444
  }
399
- break
445
+ break;
400
446
  case 'messages.delete':
401
- const deleteData = eventData
447
+ const deleteData = eventData;
402
448
  if ('keys' in deleteData) {
403
- const { keys } = deleteData
449
+ const { keys } = deleteData;
404
450
  for (const key of keys) {
405
- const keyStr = stringifyMessageKey(key)
451
+ const keyStr = stringifyMessageKey(key);
406
452
  if (!data.messageDeletes[keyStr]) {
407
- data.messageDeletes[keyStr] = key
453
+ data.messageDeletes[keyStr] = key;
408
454
  }
409
455
  if (data.messageUpserts[keyStr]) {
410
- delete data.messageUpserts[keyStr]
456
+ delete data.messageUpserts[keyStr];
411
457
  }
412
458
  if (data.messageUpdates[keyStr]) {
413
- delete data.messageUpdates[keyStr]
459
+ delete data.messageUpdates[keyStr];
414
460
  }
415
461
  }
416
462
  }
417
463
  else {
418
464
  // TODO: add support
419
465
  }
420
- break
421
- // case 'messages.poll':
422
- // const pollUpdates = eventData
423
- // for(const { vote, pollUpdateMessageKey } of pollUpdates) {
424
- // const keyStr = stringifyMessageKey(pollUpdateMessageKey)
425
- // const existing = data.messagePollings[keyStr]
426
- // if(existing) {
427
- // messages_1.updateMessageWithPollUpdate(existing.message, pollUpdates)
428
- // } else {
429
- // data.messagePollings[keyStr] = data.messagePollings[keyStr]
430
- // || { pollUpdateMessageKey, pollUpdates: [] }
431
- // messages_1.updateMessageWithPollUpdate(data.messagePollings[keyStr], vote)
432
- // }
433
- // }
434
- // break
466
+ break;
435
467
  case 'messages.reaction':
436
- const reactions = eventData
468
+ const reactions = eventData;
437
469
  for (const { key, reaction } of reactions) {
438
- const keyStr = stringifyMessageKey(key)
439
- const existing = data.messageUpserts[keyStr]
470
+ const keyStr = stringifyMessageKey(key);
471
+ const existing = data.messageUpserts[keyStr];
440
472
  if (existing) {
441
- messages_1.updateMessageWithReaction(existing.message, reaction)
473
+ updateMessageWithReaction(existing.message, reaction);
442
474
  }
443
475
  else {
444
- data.messageReactions[keyStr] = data.messageReactions[keyStr]
445
- || { key, reactions: [] }
446
- messages_1.updateMessageWithReaction(data.messageReactions[keyStr], reaction)
476
+ data.messageReactions[keyStr] = data.messageReactions[keyStr] || { key, reactions: [] };
477
+ updateMessageWithReaction(data.messageReactions[keyStr], reaction);
447
478
  }
448
479
  }
449
- break
480
+ break;
450
481
  case 'message-receipt.update':
451
- const receipts = eventData
482
+ const receipts = eventData;
452
483
  for (const { key, receipt } of receipts) {
453
- const keyStr = stringifyMessageKey(key)
454
- const existing = data.messageUpserts[keyStr]
484
+ const keyStr = stringifyMessageKey(key);
485
+ const existing = data.messageUpserts[keyStr];
455
486
  if (existing) {
456
- messages_1.updateMessageWithReceipt(existing.message, receipt)
487
+ updateMessageWithReceipt(existing.message, receipt);
457
488
  }
458
489
  else {
459
- data.messageReceipts[keyStr] = data.messageReceipts[keyStr]
460
- || { key, userReceipt: [] }
461
- messages_1.updateMessageWithReceipt(data.messageReceipts[keyStr], receipt)
490
+ data.messageReceipts[keyStr] = data.messageReceipts[keyStr] || { key, userReceipt: [] };
491
+ updateMessageWithReceipt(data.messageReceipts[keyStr], receipt);
462
492
  }
463
493
  }
464
- break
494
+ break;
465
495
  case 'groups.update':
466
- const groupUpdates = eventData
496
+ const groupUpdates = eventData;
467
497
  for (const update of groupUpdates) {
468
- const id = update.id
469
- const groupUpdate = data.groupUpdates[id] || {}
498
+ const id = update.id;
499
+ const groupUpdate = data.groupUpdates[id] || {};
470
500
  if (!data.groupUpdates[id]) {
471
- data.groupUpdates[id] = Object.assign(groupUpdate, update)
501
+ data.groupUpdates[id] = Object.assign(groupUpdate, update);
472
502
  }
473
503
  }
474
- break
504
+ break;
475
505
  default:
476
- throw new Error(`"${event}" cannot be buffered`)
506
+ throw new Error(`"${event}" cannot be buffered`);
477
507
  }
478
508
  function absorbingChatUpdate(existing) {
479
- const chatId = existing.id
480
- const update = data.chatUpdates[chatId]
509
+ const chatId = existing.id || '';
510
+ const update = data.chatUpdates[chatId];
481
511
  if (update) {
482
- const conditionMatches = update.conditional ? update.conditional(data) : true
512
+ const conditionMatches = update.conditional ? update.conditional(data) : true;
483
513
  if (conditionMatches) {
484
- delete update.conditional
485
- logger.debug({ chatId }, 'absorbed chat update in existing chat')
486
- Object.assign(existing, concatChats(update, existing))
487
- delete data.chatUpdates[chatId]
514
+ delete update.conditional;
515
+ logger.debug({ chatId }, 'absorbed chat update in existing chat');
516
+ Object.assign(existing, concatChats(update, existing));
517
+ delete data.chatUpdates[chatId];
488
518
  }
489
519
  else if (conditionMatches === false) {
490
- logger.debug({ chatId }, 'chat update condition fail, removing')
491
- delete data.chatUpdates[chatId]
520
+ logger.debug({ chatId }, 'chat update condition fail, removing');
521
+ delete data.chatUpdates[chatId];
492
522
  }
493
523
  }
494
524
  }
495
525
  function decrementChatReadCounterIfMsgDidUnread(message) {
496
526
  // decrement chat unread counter
497
527
  // if the message has already been marked read by us
498
- const chatId = message.key.remoteJid
499
- const chat = data.chatUpdates[chatId] || data.chatUpserts[chatId]
500
- if (process_message_1.isRealMessage(message, '')
501
- && process_message_1.shouldIncrementChatUnread(message)
502
- && typeof (chat?.unreadCount) === 'number'
503
- && chat.unreadCount > 0) {
504
- logger.debug({ chatId: chat.id }, 'decrementing chat counter')
505
- chat.unreadCount -= 1
528
+ const chatId = message.key.remoteJid;
529
+ const chat = data.chatUpdates[chatId] || data.chatUpserts[chatId];
530
+ if (isRealMessage(message) &&
531
+ shouldIncrementChatUnread(message) &&
532
+ typeof chat?.unreadCount === 'number' &&
533
+ chat.unreadCount > 0) {
534
+ logger.debug({ chatId: chat.id }, 'decrementing chat counter');
535
+ chat.unreadCount -= 1;
506
536
  if (chat.unreadCount === 0) {
507
- delete chat.unreadCount
537
+ delete chat.unreadCount;
508
538
  }
509
539
  }
510
540
  }
511
541
  }
512
542
  function consolidateEvents(data) {
513
- const map = {}
543
+ const map = {};
514
544
  if (!data.historySets.empty) {
515
545
  map['messaging-history.set'] = {
516
546
  chats: Object.values(data.historySets.chats),
517
547
  messages: Object.values(data.historySets.messages),
518
548
  contacts: Object.values(data.historySets.contacts),
549
+ pastParticipants: data.historySets.pastParticipants,
519
550
  syncType: data.historySets.syncType,
520
551
  progress: data.historySets.progress,
521
552
  isLatest: data.historySets.isLatest,
553
+ chunkOrder: data.historySets.chunkOrder,
522
554
  peerDataRequestSessionId: data.historySets.peerDataRequestSessionId
523
- }
555
+ };
524
556
  }
525
- const chatUpsertList = Object.values(data.chatUpserts)
557
+ const chatUpsertList = Object.values(data.chatUpserts);
526
558
  if (chatUpsertList.length) {
527
- map['chats.upsert'] = chatUpsertList
559
+ map['chats.upsert'] = chatUpsertList;
528
560
  }
529
- const chatUpdateList = Object.values(data.chatUpdates)
561
+ const chatUpdateList = Object.values(data.chatUpdates);
530
562
  if (chatUpdateList.length) {
531
- map['chats.update'] = chatUpdateList
563
+ map['chats.update'] = chatUpdateList;
532
564
  }
533
- const chatDeleteList = Array.from(data.chatDeletes)
565
+ const chatDeleteList = Array.from(data.chatDeletes);
534
566
  if (chatDeleteList.length) {
535
- map['chats.delete'] = chatDeleteList
567
+ map['chats.delete'] = chatDeleteList;
536
568
  }
537
- const messageUpsertList = Object.values(data.messageUpserts)
569
+ const messageUpsertList = Object.values(data.messageUpserts);
538
570
  if (messageUpsertList.length) {
539
- const type = messageUpsertList[0].type
571
+ const type = messageUpsertList[0].type;
540
572
  map['messages.upsert'] = {
541
573
  messages: messageUpsertList.map(m => m.message),
542
574
  type
543
- }
575
+ };
544
576
  }
545
- const messageUpdateList = Object.values(data.messageUpdates)
577
+ const messageUpdateList = Object.values(data.messageUpdates);
546
578
  if (messageUpdateList.length) {
547
- map['messages.update'] = messageUpdateList
579
+ map['messages.update'] = messageUpdateList;
548
580
  }
549
- const messageDeleteList = Object.values(data.messageDeletes)
581
+ const messageDeleteList = Object.values(data.messageDeletes);
550
582
  if (messageDeleteList.length) {
551
- map['messages.delete'] = { keys: messageDeleteList }
583
+ map['messages.delete'] = { keys: messageDeleteList };
552
584
  }
553
- // const messagePollingList = Object.values(data.messagePollings).flatMap(({ vote, pollUpdateMessageKey }) => vote.flatMap(polling => ({ polling, pollUpdateMessageKey })))
554
- // if(messagePollingList.length) {
555
- // map['messages.poll'] = messagePollingList
556
- // }
557
- const messageReactionList = Object.values(data.messageReactions).flatMap(({ key, reactions }) => reactions.flatMap(reaction => ({ key, reaction })))
585
+ const messageReactionList = Object.values(data.messageReactions).flatMap(({ key, reactions }) => reactions.flatMap(reaction => ({ key, reaction })));
558
586
  if (messageReactionList.length) {
559
- map['messages.reaction'] = messageReactionList
587
+ map['messages.reaction'] = messageReactionList;
560
588
  }
561
- const messageReceiptList = Object.values(data.messageReceipts).flatMap(({ key, userReceipt }) => userReceipt.flatMap(receipt => ({ key, receipt })))
589
+ const messageReceiptList = Object.values(data.messageReceipts).flatMap(({ key, userReceipt }) => userReceipt.flatMap(receipt => ({ key, receipt })));
562
590
  if (messageReceiptList.length) {
563
- map['message-receipt.update'] = messageReceiptList
591
+ map['message-receipt.update'] = messageReceiptList;
564
592
  }
565
- const contactUpsertList = Object.values(data.contactUpserts)
593
+ const contactUpsertList = Object.values(data.contactUpserts);
566
594
  if (contactUpsertList.length) {
567
- map['contacts.upsert'] = contactUpsertList
595
+ map['contacts.upsert'] = contactUpsertList;
568
596
  }
569
- const contactUpdateList = Object.values(data.contactUpdates)
597
+ const contactUpdateList = Object.values(data.contactUpdates);
570
598
  if (contactUpdateList.length) {
571
- map['contacts.update'] = contactUpdateList
599
+ map['contacts.update'] = contactUpdateList;
572
600
  }
573
- const groupUpdateList = Object.values(data.groupUpdates)
601
+ const groupUpdateList = Object.values(data.groupUpdates);
574
602
  if (groupUpdateList.length) {
575
- map['groups.update'] = groupUpdateList
603
+ map['groups.update'] = groupUpdateList;
576
604
  }
577
- return map
605
+ return map;
578
606
  }
579
607
  function concatChats(a, b) {
580
608
  if (b.unreadCount === null && // neutralize unread counter
581
609
  a.unreadCount < 0) {
582
- a.unreadCount = undefined
583
- b.unreadCount = undefined
610
+ a.unreadCount = undefined;
611
+ b.unreadCount = undefined;
584
612
  }
585
613
  if (typeof a.unreadCount === 'number' && typeof b.unreadCount === 'number') {
586
- b = { ...b }
614
+ b = { ...b };
587
615
  if (b.unreadCount >= 0) {
588
- b.unreadCount = Math.max(b.unreadCount, 0) + Math.max(a.unreadCount, 0)
616
+ b.unreadCount = Math.max(b.unreadCount, 0) + Math.max(a.unreadCount, 0);
589
617
  }
590
618
  }
591
- return Object.assign(a, b)
592
- }
593
- const stringifyMessageKey = (key) => `${key.remoteJid},${key.id},${key.fromMe ? '1' : '0'}`
594
-
595
- module.exports = {
596
- makeEventBuffer
619
+ return Object.assign(a, b);
597
620
  }
621
+ const stringifyMessageKey = (key) => `${key.remoteJid},${key.id},${key.fromMe ? '1' : '0'}`;
622
+ //# sourceMappingURL=event-buffer.js.map