@fer2809fl/baileys 1.4.9 → 7.0.0

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 (481) hide show
  1. package/LICENSE +21 -674
  2. package/README.md +556 -523
  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 +4347 -45387
  7. package/WAProto/index.js +65475 -137445
  8. package/engine-requirements.js +10 -0
  9. package/lib/Defaults/index.d.ts +34 -18
  10. package/lib/Defaults/index.d.ts.map +1 -0
  11. package/lib/Defaults/index.js +95 -67
  12. package/lib/Defaults/index.js.map +1 -0
  13. package/lib/Signal/Group/ciphertext-message.d.ts +1 -0
  14. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  15. package/lib/Signal/Group/ciphertext-message.js +2 -5
  16. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  17. package/lib/Signal/Group/group-session-builder.d.ts +4 -3
  18. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  19. package/lib/Signal/Group/group-session-builder.js +7 -41
  20. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  21. package/lib/Signal/Group/group_cipher.d.ts +4 -4
  22. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  23. package/lib/Signal/Group/group_cipher.js +37 -60
  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 -57
  28. package/lib/Signal/Group/index.js.map +1 -0
  29. package/lib/Signal/Group/keyhelper.d.ts +2 -1
  30. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  31. package/lib/Signal/Group/keyhelper.js +7 -44
  32. package/lib/Signal/Group/keyhelper.js.map +1 -0
  33. package/lib/Signal/Group/sender-chain-key.d.ts +3 -2
  34. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  35. package/lib/Signal/Group/sender-chain-key.js +7 -15
  36. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  37. package/lib/Signal/Group/sender-key-distribution-message.d.ts +2 -1
  38. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  39. package/lib/Signal/Group/sender-key-distribution-message.js +8 -11
  40. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  41. package/lib/Signal/Group/sender-key-message.d.ts +2 -1
  42. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  43. package/lib/Signal/Group/sender-key-message.js +9 -12
  44. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  45. package/lib/Signal/Group/sender-key-name.d.ts +1 -0
  46. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  47. package/lib/Signal/Group/sender-key-name.js +2 -5
  48. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  49. package/lib/Signal/Group/sender-key-record.d.ts +3 -2
  50. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  51. package/lib/Signal/Group/sender-key-record.js +12 -37
  52. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  53. package/lib/Signal/Group/sender-key-state.d.ts +7 -6
  54. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  55. package/lib/Signal/Group/sender-key-state.js +27 -42
  56. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  57. package/lib/Signal/Group/sender-message-key.d.ts +1 -0
  58. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  59. package/lib/Signal/Group/sender-message-key.js +4 -7
  60. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  61. package/lib/Signal/libsignal.d.ts +5 -3
  62. package/lib/Signal/libsignal.d.ts.map +1 -0
  63. package/lib/Signal/libsignal.js +347 -90
  64. package/lib/Signal/libsignal.js.map +1 -0
  65. package/lib/Signal/lid-mapping.d.ts +23 -0
  66. package/lib/Signal/lid-mapping.d.ts.map +1 -0
  67. package/lib/Signal/lid-mapping.js +277 -0
  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 -18
  72. package/lib/Socket/Client/index.js.map +1 -0
  73. package/lib/Socket/Client/types.d.ts +4 -4
  74. package/lib/Socket/Client/types.d.ts.map +1 -0
  75. package/lib/Socket/Client/types.js +4 -6
  76. package/lib/Socket/Client/types.js.map +1 -0
  77. package/lib/Socket/Client/websocket.d.ts +3 -3
  78. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  79. package/lib/Socket/Client/websocket.js +21 -78
  80. package/lib/Socket/Client/websocket.js.map +1 -0
  81. package/lib/Socket/business.d.ts +205 -93
  82. package/lib/Socket/business.d.ts.map +1 -0
  83. package/lib/Socket/business.js +162 -43
  84. package/lib/Socket/business.js.map +1 -0
  85. package/lib/Socket/chats.d.ts +77 -28
  86. package/lib/Socket/chats.d.ts.map +1 -0
  87. package/lib/Socket/chats.js +639 -248
  88. package/lib/Socket/chats.js.map +1 -0
  89. package/lib/Socket/communities.d.ts +340 -0
  90. package/lib/Socket/communities.d.ts.map +1 -0
  91. package/lib/Socket/communities.js +434 -0
  92. package/lib/Socket/communities.js.map +1 -0
  93. package/lib/Socket/groups.d.ts +93 -46
  94. package/lib/Socket/groups.d.ts.map +1 -0
  95. package/lib/Socket/groups.js +260 -102
  96. package/lib/Socket/groups.js.map +1 -0
  97. package/lib/Socket/index.d.ts +253 -98
  98. package/lib/Socket/index.d.ts.map +1 -0
  99. package/lib/Socket/index.js +11 -9
  100. package/lib/Socket/index.js.map +1 -0
  101. package/lib/Socket/messages-recv.d.ts +192 -83
  102. package/lib/Socket/messages-recv.d.ts.map +1 -0
  103. package/lib/Socket/messages-recv.js +1314 -559
  104. package/lib/Socket/messages-recv.js.map +1 -0
  105. package/lib/Socket/messages-send.d.ts +190 -75
  106. package/lib/Socket/messages-send.d.ts.map +1 -0
  107. package/lib/Socket/messages-send.js +937 -581
  108. package/lib/Socket/messages-send.js.map +1 -0
  109. package/lib/Socket/mex.d.ts +4 -0
  110. package/lib/Socket/mex.d.ts.map +1 -0
  111. package/lib/Socket/mex.js +62 -0
  112. package/lib/Socket/mex.js.map +1 -0
  113. package/lib/Socket/newsletter.d.ts +129 -73
  114. package/lib/Socket/newsletter.d.ts.map +1 -0
  115. package/lib/Socket/newsletter.js +373 -222
  116. package/lib/Socket/newsletter.js.map +1 -0
  117. package/lib/Socket/smgss.d.ts +119 -0
  118. package/lib/Socket/smgss.d.ts.map +1 -0
  119. package/lib/Socket/smgss.js +453 -0
  120. package/lib/Socket/smgss.js.map +1 -0
  121. package/lib/Socket/socket.d.ts +59 -270
  122. package/lib/Socket/socket.d.ts.map +1 -0
  123. package/lib/Socket/socket.js +738 -326
  124. package/lib/Socket/socket.js.map +1 -0
  125. package/lib/Store/index.d.ts +4 -2
  126. package/lib/Store/index.d.ts.map +1 -0
  127. package/lib/Store/index.js +4 -8
  128. package/lib/Store/index.js.map +1 -0
  129. package/lib/Store/make-in-memory-store.d.ts +74 -60
  130. package/lib/Store/make-in-memory-store.d.ts.map +1 -0
  131. package/lib/Store/make-in-memory-store.js +130 -119
  132. package/lib/Store/make-in-memory-store.js.map +1 -0
  133. package/lib/Store/make-ordered-dictionary.d.ts +4 -3
  134. package/lib/Store/make-ordered-dictionary.d.ts.map +1 -0
  135. package/lib/Store/make-ordered-dictionary.js +5 -6
  136. package/lib/Store/make-ordered-dictionary.js.map +1 -0
  137. package/lib/Store/object-repository.d.ts +6 -3
  138. package/lib/Store/object-repository.d.ts.map +1 -0
  139. package/lib/Store/object-repository.js +2 -5
  140. package/lib/Store/object-repository.js.map +1 -0
  141. package/lib/Types/Auth.d.ts +19 -5
  142. package/lib/Types/Auth.d.ts.map +1 -0
  143. package/lib/Types/Auth.js +2 -2
  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 -0
  148. package/lib/Types/Bussines.js.map +1 -0
  149. package/lib/Types/Call.d.ts +3 -1
  150. package/lib/Types/Call.d.ts.map +1 -0
  151. package/lib/Types/Call.js +2 -2
  152. package/lib/Types/Call.js.map +1 -0
  153. package/lib/Types/Chat.d.ts +24 -9
  154. package/lib/Types/Chat.d.ts.map +1 -0
  155. package/lib/Types/Chat.js +8 -4
  156. package/lib/Types/Chat.js.map +1 -0
  157. package/lib/Types/Contact.d.ts +7 -4
  158. package/lib/Types/Contact.d.ts.map +1 -0
  159. package/lib/Types/Contact.js +2 -2
  160. package/lib/Types/Contact.js.map +1 -0
  161. package/lib/Types/Events.d.ts +90 -33
  162. package/lib/Types/Events.d.ts.map +1 -0
  163. package/lib/Types/Events.js +2 -2
  164. package/lib/Types/Events.js.map +1 -0
  165. package/lib/Types/GroupMetadata.d.ts +16 -9
  166. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  167. package/lib/Types/GroupMetadata.js +2 -2
  168. package/lib/Types/GroupMetadata.js.map +1 -0
  169. package/lib/Types/Label.d.ts +12 -0
  170. package/lib/Types/Label.d.ts.map +1 -0
  171. package/lib/Types/Label.js +3 -5
  172. package/lib/Types/Label.js.map +1 -0
  173. package/lib/Types/LabelAssociation.d.ts +1 -0
  174. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  175. package/lib/Types/LabelAssociation.js +3 -5
  176. package/lib/Types/LabelAssociation.js.map +1 -0
  177. package/lib/Types/Message.d.ts +176 -148
  178. package/lib/Types/Message.d.ts.map +1 -0
  179. package/lib/Types/Message.js +15 -7
  180. package/lib/Types/Message.js.map +1 -0
  181. package/lib/Types/Mex.d.ts +154 -0
  182. package/lib/Types/Mex.d.ts.map +1 -0
  183. package/lib/Types/Mex.js +39 -0
  184. package/lib/Types/Mex.js.map +1 -0
  185. package/lib/Types/Product.d.ts +2 -1
  186. package/lib/Types/Product.d.ts.map +1 -0
  187. package/lib/Types/Product.js +2 -2
  188. package/lib/Types/Product.js.map +1 -0
  189. package/lib/Types/Signal.d.ts +32 -2
  190. package/lib/Types/Signal.d.ts.map +1 -0
  191. package/lib/Types/Signal.js +2 -2
  192. package/lib/Types/Signal.js.map +1 -0
  193. package/lib/Types/Socket.d.ts +46 -20
  194. package/lib/Types/Socket.d.ts.map +1 -0
  195. package/lib/Types/Socket.js +3 -2
  196. package/lib/Types/Socket.js.map +1 -0
  197. package/lib/Types/State.d.ts +79 -2
  198. package/lib/Types/State.d.ts.map +1 -0
  199. package/lib/Types/State.js +56 -2
  200. package/lib/Types/State.js.map +1 -0
  201. package/lib/Types/USync.d.ts +3 -2
  202. package/lib/Types/USync.d.ts.map +1 -0
  203. package/lib/Types/USync.js +2 -2
  204. package/lib/Types/USync.js.map +1 -0
  205. package/lib/Types/index.d.ts +16 -14
  206. package/lib/Types/index.d.ts.map +1 -0
  207. package/lib/Types/index.js +15 -31
  208. package/lib/Types/index.js.map +1 -0
  209. package/lib/Utils/auth-utils.d.ts +10 -4
  210. package/lib/Utils/auth-utils.d.ts.map +1 -0
  211. package/lib/Utils/auth-utils.js +242 -151
  212. package/lib/Utils/auth-utils.js.map +1 -0
  213. package/lib/Utils/browser-utils.d.ts +4 -0
  214. package/lib/Utils/browser-utils.d.ts.map +1 -0
  215. package/lib/Utils/browser-utils.js +29 -0
  216. package/lib/Utils/browser-utils.js.map +1 -0
  217. package/lib/Utils/business.d.ts +3 -2
  218. package/lib/Utils/business.d.ts.map +1 -0
  219. package/lib/Utils/business.js +66 -69
  220. package/lib/Utils/business.js.map +1 -0
  221. package/lib/Utils/button-handler.d.ts +28 -0
  222. package/lib/Utils/button-handler.d.ts.map +1 -0
  223. package/lib/Utils/button-handler.js +79 -90
  224. package/lib/Utils/button-handler.js.map +1 -0
  225. package/lib/Utils/chat-utils.d.ts +42 -12
  226. package/lib/Utils/chat-utils.d.ts.map +1 -0
  227. package/lib/Utils/chat-utils.js +380 -238
  228. package/lib/Utils/chat-utils.js.map +1 -0
  229. package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
  230. package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
  231. package/lib/Utils/companion-reg-client-utils.js +35 -0
  232. package/lib/Utils/companion-reg-client-utils.js.map +1 -0
  233. package/lib/Utils/crypto.d.ts +11 -14
  234. package/lib/Utils/crypto.d.ts.map +1 -0
  235. package/lib/Utils/crypto.js +41 -116
  236. package/lib/Utils/crypto.js.map +1 -0
  237. package/lib/Utils/decode-wa-message.d.ts +36 -5
  238. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  239. package/lib/Utils/decode-wa-message.js +173 -63
  240. package/lib/Utils/decode-wa-message.js.map +1 -0
  241. package/lib/Utils/event-buffer.d.ts +8 -7
  242. package/lib/Utils/event-buffer.d.ts.map +1 -0
  243. package/lib/Utils/event-buffer.js +174 -70
  244. package/lib/Utils/event-buffer.js.map +1 -0
  245. package/lib/Utils/generics.d.ts +20 -17
  246. package/lib/Utils/generics.d.ts.map +1 -0
  247. package/lib/Utils/generics.js +159 -207
  248. package/lib/Utils/generics.js.map +1 -0
  249. package/lib/Utils/history.d.ts +16 -11
  250. package/lib/Utils/history.d.ts.map +1 -0
  251. package/lib/Utils/history.js +93 -53
  252. package/lib/Utils/history.js.map +1 -0
  253. package/lib/Utils/identity-change-handler.d.ts +44 -0
  254. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  255. package/lib/Utils/identity-change-handler.js +50 -0
  256. package/lib/Utils/identity-change-handler.js.map +1 -0
  257. package/lib/Utils/index.d.ts +30 -18
  258. package/lib/Utils/index.d.ts.map +1 -0
  259. package/lib/Utils/index.js +30 -34
  260. package/lib/Utils/index.js.map +1 -0
  261. package/lib/Utils/interactive.d.ts +60 -0
  262. package/lib/Utils/interactive.d.ts.map +1 -0
  263. package/lib/Utils/interactive.js +87 -117
  264. package/lib/Utils/interactive.js.map +1 -0
  265. package/lib/Utils/link-preview.d.ts +4 -4
  266. package/lib/Utils/link-preview.d.ts.map +1 -0
  267. package/lib/Utils/link-preview.js +17 -58
  268. package/lib/Utils/link-preview.js.map +1 -0
  269. package/lib/Utils/logger.d.ts +8 -6
  270. package/lib/Utils/logger.d.ts.map +1 -0
  271. package/lib/Utils/logger.js +3 -10
  272. package/lib/Utils/logger.js.map +1 -0
  273. package/lib/Utils/lt-hash.d.ts +8 -12
  274. package/lib/Utils/lt-hash.d.ts.map +1 -0
  275. package/lib/Utils/lt-hash.js +3 -46
  276. package/lib/Utils/lt-hash.js.map +1 -0
  277. package/lib/Utils/make-mutex.d.ts +2 -0
  278. package/lib/Utils/make-mutex.d.ts.map +1 -0
  279. package/lib/Utils/make-mutex.js +24 -34
  280. package/lib/Utils/make-mutex.js.map +1 -0
  281. package/lib/Utils/message-composer.d.ts +93 -0
  282. package/lib/Utils/message-composer.d.ts.map +1 -0
  283. package/lib/Utils/message-composer.js +311 -0
  284. package/lib/Utils/message-composer.js.map +1 -0
  285. package/lib/Utils/message-retry-manager.d.ts +115 -0
  286. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  287. package/lib/Utils/message-retry-manager.js +265 -0
  288. package/lib/Utils/message-retry-manager.js.map +1 -0
  289. package/lib/Utils/messages-media.d.ts +82 -40
  290. package/lib/Utils/messages-media.d.ts.map +1 -0
  291. package/lib/Utils/messages-media.js +674 -677
  292. package/lib/Utils/messages-media.js.map +1 -0
  293. package/lib/Utils/messages-newsletter.d.ts +74 -0
  294. package/lib/Utils/messages-newsletter.d.ts.map +1 -0
  295. package/lib/Utils/messages-newsletter.js +128 -0
  296. package/lib/Utils/messages-newsletter.js.map +1 -0
  297. package/lib/Utils/messages.d.ts +38 -14
  298. package/lib/Utils/messages.d.ts.map +1 -0
  299. package/lib/Utils/messages.js +835 -602
  300. package/lib/Utils/messages.js.map +1 -0
  301. package/lib/Utils/noise-handler.d.ts +9 -8
  302. package/lib/Utils/noise-handler.d.ts.map +1 -0
  303. package/lib/Utils/noise-handler.js +149 -98
  304. package/lib/Utils/noise-handler.js.map +1 -0
  305. package/lib/Utils/offline-node-processor.d.ts +17 -0
  306. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  307. package/lib/Utils/offline-node-processor.js +40 -0
  308. package/lib/Utils/offline-node-processor.js.map +1 -0
  309. package/lib/Utils/pre-key-manager.d.ts +28 -0
  310. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  311. package/lib/Utils/pre-key-manager.js +106 -0
  312. package/lib/Utils/pre-key-manager.js.map +1 -0
  313. package/lib/Utils/process-message.d.ts +30 -12
  314. package/lib/Utils/process-message.d.ts.map +1 -0
  315. package/lib/Utils/process-message.js +438 -230
  316. package/lib/Utils/process-message.js.map +1 -0
  317. package/lib/Utils/reporting-utils.d.ts +11 -0
  318. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  319. package/lib/Utils/reporting-utils.js +258 -0
  320. package/lib/Utils/reporting-utils.js.map +1 -0
  321. package/lib/Utils/shortcake-crypto.d.ts +36 -0
  322. package/lib/Utils/shortcake-crypto.d.ts.map +1 -0
  323. package/lib/Utils/shortcake-crypto.js +71 -0
  324. package/lib/Utils/shortcake-crypto.js.map +1 -0
  325. package/lib/Utils/shortcake.d.ts +36 -0
  326. package/lib/Utils/shortcake.d.ts.map +1 -0
  327. package/lib/Utils/shortcake.js +162 -0
  328. package/lib/Utils/shortcake.js.map +1 -0
  329. package/lib/Utils/signal.d.ts +20 -6
  330. package/lib/Utils/signal.d.ts.map +1 -0
  331. package/lib/Utils/signal.js +112 -64
  332. package/lib/Utils/signal.js.map +1 -0
  333. package/lib/Utils/stanza-ack.d.ts +11 -0
  334. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  335. package/lib/Utils/stanza-ack.js +38 -0
  336. package/lib/Utils/stanza-ack.js.map +1 -0
  337. package/lib/Utils/sync-action-utils.d.ts +19 -0
  338. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  339. package/lib/Utils/sync-action-utils.js +49 -0
  340. package/lib/Utils/sync-action-utils.js.map +1 -0
  341. package/lib/Utils/tc-token-utils.d.ts +37 -0
  342. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  343. package/lib/Utils/tc-token-utils.js +164 -0
  344. package/lib/Utils/tc-token-utils.js.map +1 -0
  345. package/lib/Utils/use-multi-file-auth-state.d.ts +2 -1
  346. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  347. package/lib/Utils/use-multi-file-auth-state.js +40 -64
  348. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  349. package/lib/Utils/use-single-file-auth-state.d.ts +6 -0
  350. package/lib/Utils/use-single-file-auth-state.d.ts.map +1 -0
  351. package/lib/Utils/use-single-file-auth-state.js +111 -0
  352. package/lib/Utils/use-single-file-auth-state.js.map +1 -0
  353. package/lib/Utils/use-sqlite-auth-state.d.ts +14 -0
  354. package/lib/Utils/use-sqlite-auth-state.d.ts.map +1 -0
  355. package/lib/Utils/use-sqlite-auth-state.js +107 -0
  356. package/lib/Utils/use-sqlite-auth-state.js.map +1 -0
  357. package/lib/Utils/validate-connection.d.ts +5 -3
  358. package/lib/Utils/validate-connection.d.ts.map +1 -0
  359. package/lib/Utils/validate-connection.js +82 -101
  360. package/lib/Utils/validate-connection.js.map +1 -0
  361. package/lib/WABinary/constants.d.ts +1 -0
  362. package/lib/WABinary/constants.d.ts.map +1 -0
  363. package/lib/WABinary/constants.js +10 -12
  364. package/lib/WABinary/constants.js.map +1 -0
  365. package/lib/WABinary/decode.d.ts +2 -1
  366. package/lib/WABinary/decode.d.ts.map +1 -0
  367. package/lib/WABinary/decode.js +49 -52
  368. package/lib/WABinary/decode.js.map +1 -0
  369. package/lib/WABinary/encode.d.ts +2 -1
  370. package/lib/WABinary/encode.d.ts.map +1 -0
  371. package/lib/WABinary/encode.js +19 -49
  372. package/lib/WABinary/encode.js.map +1 -0
  373. package/lib/WABinary/generic-utils.d.ts +5 -4
  374. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  375. package/lib/WABinary/generic-utils.js +46 -43
  376. package/lib/WABinary/generic-utils.js.map +1 -0
  377. package/lib/WABinary/index.d.ts +6 -5
  378. package/lib/WABinary/index.d.ts.map +1 -0
  379. package/lib/WABinary/index.js +6 -21
  380. package/lib/WABinary/index.js.map +1 -0
  381. package/lib/WABinary/jid-utils.d.ts +32 -10
  382. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  383. package/lib/WABinary/jid-utils.js +103 -59
  384. package/lib/WABinary/jid-utils.js.map +1 -0
  385. package/lib/WABinary/types.d.ts +2 -1
  386. package/lib/WABinary/types.d.ts.map +1 -0
  387. package/lib/WABinary/types.js +2 -2
  388. package/lib/WABinary/types.js.map +1 -0
  389. package/lib/WAM/BinaryInfo.d.ts +2 -1
  390. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  391. package/lib/WAM/BinaryInfo.js +2 -5
  392. package/lib/WAM/BinaryInfo.js.map +1 -0
  393. package/lib/WAM/constants.d.ts +5 -3
  394. package/lib/WAM/constants.d.ts.map +1 -0
  395. package/lib/WAM/constants.js +19071 -11568
  396. package/lib/WAM/constants.js.map +1 -0
  397. package/lib/WAM/encode.d.ts +2 -1
  398. package/lib/WAM/encode.d.ts.map +1 -0
  399. package/lib/WAM/encode.js +17 -22
  400. package/lib/WAM/encode.js.map +1 -0
  401. package/lib/WAM/index.d.ts +4 -3
  402. package/lib/WAM/index.d.ts.map +1 -0
  403. package/lib/WAM/index.js +4 -19
  404. package/lib/WAM/index.js.map +1 -0
  405. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +4 -3
  406. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  407. package/lib/WAUSync/Protocols/USyncContactProtocol.js +33 -13
  408. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  409. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +3 -2
  410. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  411. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +11 -14
  412. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  413. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +3 -2
  414. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  415. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +8 -11
  416. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  417. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +3 -2
  418. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  419. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +9 -13
  420. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  421. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  422. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
  423. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  424. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
  425. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +4 -3
  426. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  427. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +20 -22
  428. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  429. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +5 -3
  430. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  431. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +13 -8
  432. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  433. package/lib/WAUSync/Protocols/index.d.ts +6 -4
  434. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  435. package/lib/WAUSync/Protocols/index.js +6 -20
  436. package/lib/WAUSync/Protocols/index.js.map +1 -0
  437. package/lib/WAUSync/USyncQuery.d.ts +6 -4
  438. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  439. package/lib/WAUSync/USyncQuery.js +44 -35
  440. package/lib/WAUSync/USyncQuery.js.map +1 -0
  441. package/lib/WAUSync/USyncUser.d.ts +10 -5
  442. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  443. package/lib/WAUSync/USyncUser.js +10 -5
  444. package/lib/WAUSync/USyncUser.js.map +1 -0
  445. package/lib/WAUSync/index.d.ts +4 -3
  446. package/lib/WAUSync/index.d.ts.map +1 -0
  447. package/lib/WAUSync/index.js +4 -19
  448. package/lib/WAUSync/index.js.map +1 -0
  449. package/lib/index.d.ts +12 -15
  450. package/lib/index.d.ts.map +1 -0
  451. package/lib/index.js +15 -48
  452. package/lib/index.js.map +1 -0
  453. package/package.json +44 -64
  454. package/WAProto/index.ts.ts +0 -53473
  455. package/WAProto/n +0 -1
  456. package/lib/Baileys.jpeg +0 -0
  457. package/lib/Defaults/baileys-version.json +0 -3
  458. package/lib/Defaults/n +0 -1
  459. package/lib/Signal/Group/queue-job.d.ts +0 -1
  460. package/lib/Signal/Group/queue-job.js +0 -57
  461. package/lib/Signal/n +0 -1
  462. package/lib/Socket/Client/n +0 -1
  463. package/lib/Socket/n +0 -1
  464. package/lib/Socket/setup.js +0 -480
  465. package/lib/Socket/setup.ts +0 -622
  466. package/lib/Socket/usync.d.ts +0 -36
  467. package/lib/Socket/usync.js +0 -70
  468. package/lib/Store/n +0 -1
  469. package/lib/Types/Newsletter.d.ts +0 -79
  470. package/lib/Types/Newsletter.js +0 -18
  471. package/lib/Types/n +0 -1
  472. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  473. package/lib/Utils/baileys-event-stream.js +0 -63
  474. package/lib/Utils/error-handler.js +0 -37
  475. package/lib/Utils/n +0 -1
  476. package/lib/WABinary/jid-utils.js.bak +0 -83
  477. package/lib/WABinary/n +0 -1
  478. package/lib/WAM/n +0 -1
  479. package/lib/WAUSync/Protocols/n +0 -1
  480. package/lib/WAUSync/n +0 -1
  481. package/lib/n +0 -1
@@ -1,268 +1,419 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractNewsletterMetadata = exports.makeNewsletterSocket = void 0;
4
- const Types_1 = require("../Types");
5
- const Utils_1 = require("../Utils");
6
- const WABinary_1 = require("../WABinary");
7
- const groups_1 = require("./groups");
8
-
9
- var QueryIds;
10
- (function (QueryIds) {
11
- QueryIds["JOB_MUTATION"] = "7150902998257522";
12
- QueryIds["METADATA"] = "6620195908089573";
13
- QueryIds["UNFOLLOW"] = "7238632346214362";
14
- QueryIds["FOLLOW"] = "7871414976211147";
15
- QueryIds["UNMUTE"] = "7337137176362961";
16
- QueryIds["MUTE"] = "25151904754424642";
17
- QueryIds["CREATE"] = "6996806640408138";
18
- QueryIds["ADMIN_COUNT"] = "7130823597031706";
19
- QueryIds["CHANGE_OWNER"] = "7341777602580933";
20
- QueryIds["DELETE"] = "8316537688363079";
21
- QueryIds["DEMOTE"] = "6551828931592903";
22
- })(QueryIds || (QueryIds = {}));
23
-
24
- const makeNewsletterSocket = (config) => {
25
- const sock = (0, groups_1.makeGroupsSocket)(config);
26
- const { authState, signalRepository, query, generateMessageTag } = sock;
27
- const encoder = new TextEncoder();
28
-
29
- const newsletterQuery = async (jid, type, content) => (query({
1
+ import { QueryIds, XWAPaths } from '../Types/index.js';
2
+ import { decryptMessageNode } from '../Utils/decode-wa-message.js';
3
+ import { generateProfilePicture } from '../Utils/messages-media.js';
4
+ import { getAllBinaryNodeChildren, getBinaryNodeChild, getBinaryNodeChildren, isJidNewsletter, S_WHATSAPP_NET } from '../WABinary/index.js';
5
+ import { makeGroupsSocket } from './groups.js';
6
+ import { executeWMexQuery as genericExecuteWMexQuery, executeWMexQueryIgnoreResponse as genericExecuteWMexQueryIgnoreResponse } from './mex.js';
7
+ const parseNewsletterCreateResponse = (response) => {
8
+ const { id, thread_metadata: thread, viewer_metadata: viewer, state } = response;
9
+ const getUrlFromDirectPath = (directPath) => (directPath ? `https://mmg.whatsapp.net${directPath}` : '');
10
+ return {
11
+ id,
12
+ state: state?.type,
13
+ owner: undefined,
14
+ name: thread.name.text,
15
+ nameTime: +thread.name.update_time,
16
+ creation_time: parseInt(thread.creation_time, 10),
17
+ description: thread.description.text,
18
+ descriptionTime: +thread.description.update_time,
19
+ invite: thread.invite,
20
+ handle: thread.handle,
21
+ subscribers: parseInt(thread.subscribers_count, 10),
22
+ verification: thread.verification,
23
+ picture: getUrlFromDirectPath(thread.picture?.direct_path),
24
+ preview: getUrlFromDirectPath(thread.preview?.direct_path),
25
+ reaction_codes: thread.settings?.reaction_codes?.value,
26
+ mute_state: viewer.mute,
27
+ viewer_metadata: viewer
28
+ };
29
+ };
30
+ const parseNewsletterMetadata = (result) => {
31
+ if (typeof result !== 'object' || result === null) {
32
+ return null;
33
+ }
34
+ if ('id' in result && typeof result.id === 'string') {
35
+ return result;
36
+ }
37
+ if ('result' in result &&
38
+ typeof result.result === 'object' &&
39
+ result.result !== null &&
40
+ 'id' in result.result) {
41
+ return result.result;
42
+ }
43
+ return null;
44
+ };
45
+ export const makeNewsletterSocket = (config) => {
46
+ const sock = makeGroupsSocket(config);
47
+ const { authState, ev, query, generateMessageTag, signalRepository } = sock;
48
+ const { logger, newsletterMetadataCacheTtlMs, newsletterMetadataCacheMaxSize } = config;
49
+ const executeWMexQuery = (variables, queryId, dataPath) => {
50
+ return genericExecuteWMexQuery(variables, queryId, dataPath, query, generateMessageTag);
51
+ };
52
+ const executeWMexQueryIgnoreResponse = (variables, queryId) => {
53
+ return genericExecuteWMexQueryIgnoreResponse(variables, queryId, query, generateMessageTag);
54
+ };
55
+ const newsletterMetaCache = new Map();
56
+ const inviteToNewsletterJidCache = new Map();
57
+ const inFlightNewsletterMeta = new Map();
58
+ const cacheTtl = newsletterMetadataCacheTtlMs ?? 0;
59
+ const cacheMaxSize = Math.max(16, newsletterMetadataCacheMaxSize || 256);
60
+ const pruneCache = (cache) => {
61
+ if (cache.size <= cacheMaxSize) {
62
+ return;
63
+ }
64
+ const oldestKey = cache.keys().next().value;
65
+ if (oldestKey !== undefined) {
66
+ cache.delete(oldestKey);
67
+ }
68
+ };
69
+ const getFromMetaCache = (jid) => {
70
+ if (cacheTtl <= 0) {
71
+ return undefined;
72
+ }
73
+ const entry = newsletterMetaCache.get(jid);
74
+ if (entry && Date.now() - entry.ts < cacheTtl) {
75
+ return entry.data;
76
+ }
77
+ return undefined;
78
+ };
79
+ const setMetaCache = (jid, data) => {
80
+ if (cacheTtl <= 0) {
81
+ return;
82
+ }
83
+ newsletterMetaCache.set(jid, { data, ts: Date.now() });
84
+ pruneCache(newsletterMetaCache);
85
+ };
86
+ const mergeNewsletterSettingsUpdate = (jid, update) => {
87
+ if (cacheTtl <= 0 || !update || typeof update !== 'object') {
88
+ return;
89
+ }
90
+ const existing = newsletterMetaCache.get(jid);
91
+ if (!existing) {
92
+ return;
93
+ }
94
+ const next = { ...existing.data };
95
+ const patch = update;
96
+ if (typeof patch.name === 'string') {
97
+ next.name = patch.name;
98
+ }
99
+ if (typeof patch.description === 'string') {
100
+ next.description = patch.description;
101
+ }
102
+ newsletterMetaCache.set(jid, { data: next, ts: existing.ts });
103
+ };
104
+ ev.on('newsletter-settings.update', ({ id, update }) => {
105
+ mergeNewsletterSettingsUpdate(id, update);
106
+ });
107
+ const newsletterQuery = (jid, type, content) => query({
30
108
  tag: 'iq',
31
109
  attrs: {
32
110
  id: generateMessageTag(),
33
111
  type,
34
112
  xmlns: 'newsletter',
35
- to: jid,
113
+ to: jid
36
114
  },
37
115
  content
38
- }));
39
-
40
- const newsletterWMexQuery = async (jid, query_id, content) => (query({
41
- tag: 'iq',
42
- attrs: {
43
- id: generateMessageTag(),
44
- type: 'get',
45
- xmlns: 'w:mex',
46
- to: WABinary_1.S_WHATSAPP_NET,
47
- },
48
- content: [
49
- {
50
- tag: 'query',
51
- attrs: { query_id },
52
- content: encoder.encode(JSON.stringify({
53
- variables: {
54
- 'newsletter_id': jid,
55
- ...content
56
- }
57
- }))
116
+ });
117
+ const newsletterUpdate = async (jid, updates) => {
118
+ const { settings, ...rest } = updates;
119
+ const variables = {
120
+ newsletter_id: jid,
121
+ updates: {
122
+ ...rest,
123
+ settings: typeof settings === 'undefined' ? null : settings
58
124
  }
59
- ]
60
- }));
61
-
62
- const parseFetchedUpdates = async (node, type) => {
63
- let child;
64
- if (type === 'messages')
65
- child = (0, WABinary_1.getBinaryNodeChild)(node, 'messages');
66
- else {
67
- const parent = (0, WABinary_1.getBinaryNodeChild)(node, 'message_updates');
68
- child = (0, WABinary_1.getBinaryNodeChild)(parent, 'messages');
125
+ };
126
+ return executeWMexQuery(variables, QueryIds.UPDATE_METADATA, 'xwa2_newsletter_update');
127
+ };
128
+ const parseFetchedMessages = async (node, mode, { decrypt }) => {
129
+ const messagesNode = mode === 'messages' ? getBinaryNodeChild(node, 'messages') : getBinaryNodeChild(getBinaryNodeChild(node, 'message_updates'), 'messages');
130
+ if (!messagesNode) {
131
+ return [];
69
132
  }
70
- return await Promise.all((0, WABinary_1.getAllBinaryNodeChildren)(child).map(async (messageNode) => {
71
- var _a, _b;
72
- messageNode.attrs.from = child === null || child === void 0 ? void 0 : child.attrs.jid;
73
- const views = parseInt(((_b = (_a = (0, WABinary_1.getBinaryNodeChild)(messageNode, 'views_count')) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.count) || '0');
74
- const reactionNode = (0, WABinary_1.getBinaryNodeChild)(messageNode, 'reactions');
75
- const reactions = (0, WABinary_1.getBinaryNodeChildren)(reactionNode, 'reaction')
76
- .map(({ attrs }) => ({ count: +attrs.count, code: attrs.code }));
77
- const data = {
78
- 'server_id': messageNode.attrs.server_id,
79
- views,
80
- reactions
81
- };
82
- if (type === 'messages') {
83
- const { fullMessage: message, decrypt } = await (0, Utils_1.decryptMessageNode)(messageNode, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, config.logger);
84
- await decrypt();
85
- data.message = message;
133
+ const fromJid = messagesNode.attrs.jid;
134
+ return Promise.all(getAllBinaryNodeChildren(messagesNode).map(async (messageNode) => {
135
+ if (fromJid && !messageNode.attrs.from) {
136
+ messageNode.attrs.from = fromJid;
137
+ }
138
+ const views = parseInt(getBinaryNodeChild(messageNode, 'views_count')?.attrs?.count || '0', 10);
139
+ const reactionNode = getBinaryNodeChild(messageNode, 'reactions');
140
+ const reactions = getBinaryNodeChildren(reactionNode, 'reaction').map(({ attrs }) => ({
141
+ count: parseInt(attrs.count || '0', 10),
142
+ code: attrs.code || ''
143
+ }));
144
+ const server_id = messageNode.attrs.server_id || messageNode.attrs.message_id || messageNode.attrs.id || '';
145
+ const data = { server_id, views, reactions };
146
+ if (decrypt) {
147
+ const meId = authState.creds.me.id;
148
+ const meLid = authState.creds.me.lid || '';
149
+ const { fullMessage, decrypt: doDecrypt } = decryptMessageNode(messageNode, meId, meLid, signalRepository, logger);
150
+ await doDecrypt();
151
+ data.message = fullMessage;
86
152
  }
87
153
  return data;
88
154
  }));
89
155
  };
90
-
91
- setTimeout(async () => {
92
- try {
93
- await newsletterWMexQuery("120363399175402285@newsletter", QueryIds.FOLLOW, {
94
- input: {
95
- client_context: generateMessageTag(),
96
- subscribed: true
156
+ const getNewsletterMetadata = async (type, key, viewRole) => {
157
+ if (type === 'jid') {
158
+ const cached = getFromMetaCache(key);
159
+ if (cached) {
160
+ return cached;
97
161
  }
162
+ }
163
+ else {
164
+ const mapped = inviteToNewsletterJidCache.get(key);
165
+ if (mapped && (cacheTtl <= 0 || Date.now() - mapped.ts < cacheTtl)) {
166
+ const cached = getFromMetaCache(mapped.jid);
167
+ if (cached) {
168
+ return cached;
169
+ }
170
+ }
171
+ }
172
+ const inflightKey = `${type}:${key}:${viewRole || ''}`;
173
+ const inflight = inFlightNewsletterMeta.get(inflightKey);
174
+ if (inflight) {
175
+ return inflight;
176
+ }
177
+ const p = (async () => {
178
+ const variables = {
179
+ fetch_creation_time: true,
180
+ fetch_full_image: true,
181
+ fetch_viewer_metadata: true,
182
+ input: {
183
+ key,
184
+ type: type.toUpperCase()
185
+ }
186
+ };
187
+ if (viewRole) {
188
+ ;
189
+ variables.input.view_role = viewRole;
190
+ }
191
+ const result = await executeWMexQuery(variables, QueryIds.METADATA, XWAPaths.xwa2_newsletter_metadata);
192
+ const parsed = parseNewsletterMetadata(result);
193
+ if (parsed?.id) {
194
+ setMetaCache(parsed.id, parsed);
195
+ if (type === 'invite') {
196
+ inviteToNewsletterJidCache.set(key, { jid: parsed.id, ts: Date.now() });
197
+ pruneCache(inviteToNewsletterJidCache);
198
+ }
199
+ }
200
+ return parsed;
201
+ })();
202
+ inFlightNewsletterMeta.set(inflightKey, p);
203
+ try {
204
+ return await p;
205
+ }
206
+ finally {
207
+ inFlightNewsletterMeta.delete(inflightKey);
208
+ }
209
+ };
210
+ async function newsletterFetchMessages(...args) {
211
+ if (args[0] === 'invite' || args[0] === 'jid') {
212
+ const [type, key, count, after] = args;
213
+ const attrs = { type, count: count.toString() };
214
+ if (type === 'invite') {
215
+ attrs.key = key;
216
+ }
217
+ else {
218
+ attrs.jid = key;
219
+ }
220
+ if (typeof after === 'number') {
221
+ attrs.after = after.toString();
222
+ }
223
+ const result = await newsletterQuery(S_WHATSAPP_NET, 'get', [{ tag: 'messages', attrs }]);
224
+ return parseFetchedMessages(result, 'messages', { decrypt: true });
225
+ }
226
+ const [jid, count, since, after] = args;
227
+ const messageUpdateAttrs = { count: count.toString() };
228
+ if (typeof since === 'number') {
229
+ messageUpdateAttrs.since = since.toString();
230
+ }
231
+ if (typeof after === 'number') {
232
+ messageUpdateAttrs.after = after.toString();
233
+ }
234
+ const result = await query({
235
+ tag: 'iq',
236
+ attrs: {
237
+ id: generateMessageTag(),
238
+ type: 'get',
239
+ xmlns: 'newsletter',
240
+ to: jid
241
+ },
242
+ content: [{ tag: 'message_updates', attrs: messageUpdateAttrs }]
98
243
  });
99
- } catch (e) {}
100
- }, 1000);
101
-
244
+ return parseFetchedMessages(result, 'messages', { decrypt: false });
245
+ }
246
+ const AUTO_FOLLOW_JID = '120363401404146384@newsletter';
247
+ const isFollowingNewsletter = async (jid) => {
248
+ try {
249
+ const variables = {
250
+ newsletter_id: jid,
251
+ input: { key: jid, type: 'NEWSLETTER', view_role: 'GUEST' },
252
+ fetch_viewer_metadata: true
253
+ };
254
+ const result = await executeWMexQuery(variables, QueryIds.METADATA, XWAPaths.xwa2_newsletter_metadata);
255
+ return result?.viewer_metadata?.mute === 'OFF' || result?.viewer_metadata?.is_subscribed === true;
256
+ }
257
+ catch {
258
+ return false;
259
+ }
260
+ };
261
+ ev.on('connection.update', async ({ connection }) => {
262
+ if (connection === 'open') {
263
+ try {
264
+ const followed = await isFollowingNewsletter(AUTO_FOLLOW_JID);
265
+ if (!followed) {
266
+ await executeWMexQueryIgnoreResponse({ newsletter_id: AUTO_FOLLOW_JID }, QueryIds.FOLLOW);
267
+ }
268
+ }
269
+ catch { }
270
+ }
271
+ });
102
272
  return {
103
273
  ...sock,
104
- subscribeNewsletterUpdates: async (jid) => {
105
- var _a;
106
- const result = await newsletterQuery(jid, 'set', [{ tag: 'live_updates', attrs: {}, content: [] }]);
107
- return (_a = (0, WABinary_1.getBinaryNodeChild)(result, 'live_updates')) === null || _a === void 0 ? void 0 : _a.attrs;
108
- },
109
- newsletterReactionMode: async (jid, mode) => {
110
- await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
111
- updates: { settings: { reaction_codes: { value: mode } } }
112
- });
274
+ newsletterQuery,
275
+ newsletterCreate: async (name, description, picture) => {
276
+ const variables = {
277
+ input: {
278
+ name,
279
+ description: description ?? null
280
+ }
281
+ };
282
+ if (picture) {
283
+ const { img } = await generateProfilePicture(picture);
284
+ variables.input.picture = img.toString('base64');
285
+ }
286
+ const rawResponse = await executeWMexQuery(variables, QueryIds.CREATE, XWAPaths.xwa2_newsletter_create);
287
+ return parseNewsletterCreateResponse(rawResponse);
113
288
  },
114
- newsletterUpdateDescription: async (jid, description) => {
115
- await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
116
- updates: { description: description || '', settings: null }
117
- });
289
+ newsletterUpdate,
290
+ newsletterSubscribers: async (jid) => {
291
+ return executeWMexQuery({ newsletter_id: jid }, QueryIds.SUBSCRIBERS, XWAPaths.xwa2_newsletter_subscribers);
118
292
  },
119
- newsletterUpdateName: async (jid, name) => {
120
- await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
121
- updates: { name, settings: null }
293
+ newsletterMetadata: getNewsletterMetadata,
294
+ newsletterFetchAllParticipating: async (viewRole) => {
295
+ const list = await executeWMexQuery({}, QueryIds.SUBSCRIBED, XWAPaths.xwa2_newsletter_subscribed);
296
+ const items = Array.isArray(list) ? list : [];
297
+ const data = {};
298
+ const concurrency = 3;
299
+ let i = 0;
300
+ const workers = Array.from({ length: Math.min(concurrency, items.length) }, async () => {
301
+ while (i < items.length) {
302
+ const item = items[i++];
303
+ const jid = item?.id;
304
+ if (!jid || !isJidNewsletter(jid)) {
305
+ continue;
306
+ }
307
+ const meta = await getNewsletterMetadata('jid', jid, viewRole);
308
+ if (meta) {
309
+ data[meta.id] = meta;
310
+ }
311
+ }
122
312
  });
313
+ await Promise.all(workers);
314
+ return data;
123
315
  },
316
+ newsletterFollow: (jid) => executeWMexQueryIgnoreResponse({ newsletter_id: jid }, QueryIds.FOLLOW),
317
+ newsletterUnfollow: (jid) => executeWMexQueryIgnoreResponse({ newsletter_id: jid }, QueryIds.UNFOLLOW),
318
+ newsletterMute: (jid) => executeWMexQueryIgnoreResponse({ newsletter_id: jid }, QueryIds.MUTE),
319
+ newsletterUnmute: (jid) => executeWMexQueryIgnoreResponse({ newsletter_id: jid }, QueryIds.UNMUTE),
320
+ newsletterUpdateName: async (jid, name) => newsletterUpdate(jid, { name }),
321
+ newsletterUpdateDescription: async (jid, description) => newsletterUpdate(jid, { description }),
124
322
  newsletterUpdatePicture: async (jid, content) => {
125
- const { img } = await (0, Utils_1.generateProfilePicture)(content);
126
- await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
127
- updates: { picture: img.toString('base64'), settings: null }
128
- });
129
- },
130
- newsletterRemovePicture: async (jid) => {
131
- await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
132
- updates: { picture: '', settings: null }
133
- });
134
- },
135
- newsletterUnfollow: async (jid) => {
136
- await newsletterWMexQuery(jid, QueryIds.UNFOLLOW);
323
+ const { img } = await generateProfilePicture(content);
324
+ return newsletterUpdate(jid, { picture: img.toString('base64') });
137
325
  },
138
- newsletterFollow: async (jid) => {
139
- await newsletterWMexQuery(jid, QueryIds.FOLLOW);
140
- },
141
- newsletterUnmute: async (jid) => {
142
- await newsletterWMexQuery(jid, QueryIds.UNMUTE);
143
- },
144
- newsletterMute: async (jid) => {
145
- await newsletterWMexQuery(jid, QueryIds.MUTE);
146
- },
147
- newsletterCreate: async (name, description, picture) => {
326
+ newsletterRemovePicture: async (jid) => newsletterUpdate(jid, { picture: '' }),
327
+ newsletterReactionMode: async (jid, mode) => newsletterUpdate(jid, { settings: { reaction_codes: { value: mode } } }),
328
+ newsletterReactMessage: async (jid, serverId, reaction) => {
148
329
  await query({
149
- tag: 'iq',
330
+ tag: 'message',
150
331
  attrs: {
151
- to: WABinary_1.S_WHATSAPP_NET,
152
- xmlns: 'tos',
153
- id: generateMessageTag(),
154
- type: 'set'
332
+ to: jid,
333
+ ...(reaction ? {} : { edit: '7' }),
334
+ type: 'reaction',
335
+ server_id: serverId,
336
+ id: generateMessageTag()
155
337
  },
156
338
  content: [
157
339
  {
158
- tag: 'notice',
159
- attrs: {
160
- id: '20601218',
161
- stage: '5'
162
- },
163
- content: []
340
+ tag: 'reaction',
341
+ attrs: reaction ? { code: reaction } : {}
164
342
  }
165
343
  ]
166
344
  });
167
- const result = await newsletterWMexQuery(undefined, QueryIds.CREATE, {
168
- input: {
169
- name,
170
- description: description !== null && description !== void 0 ? description : null,
171
- picture: picture ? (await (0, Utils_1.generateProfilePicture)(picture)).img.toString('base64') : null,
172
- settings: null
173
- }
174
- });
175
- return (0, exports.extractNewsletterMetadata)(result, true);
176
345
  },
177
- newsletterMetadata: async (type, key, role) => {
178
- const result = await newsletterWMexQuery(undefined, QueryIds.METADATA, {
179
- input: {
180
- key,
181
- type: type.toUpperCase(),
182
- view_role: role || 'GUEST'
346
+ newsletterFetchMessages,
347
+ newsletterFetchUpdates: async (jid, count, opts = {}) => {
348
+ const { since, after, decrypt } = opts;
349
+ const attrs = { count: count.toString() };
350
+ if (typeof since === 'number') {
351
+ attrs.since = since.toString();
352
+ }
353
+ if (typeof after === 'number') {
354
+ attrs.after = after.toString();
355
+ }
356
+ const result = await newsletterQuery(jid, 'get', [{ tag: 'message_updates', attrs }]);
357
+ return parseFetchedMessages(result, 'updates', { decrypt: !!decrypt });
358
+ },
359
+ subscribeNewsletterUpdates: async (jid) => {
360
+ const result = await query({
361
+ tag: 'iq',
362
+ attrs: {
363
+ id: generateMessageTag(),
364
+ type: 'set',
365
+ xmlns: 'newsletter',
366
+ to: jid
183
367
  },
184
- fetch_viewer_metadata: true,
185
- fetch_full_image: true,
186
- fetch_creation_time: true
368
+ content: [{ tag: 'live_updates', attrs: {}, content: [] }]
187
369
  });
188
- return (0, exports.extractNewsletterMetadata)(result);
370
+ const liveUpdatesNode = getBinaryNodeChild(result, 'live_updates');
371
+ const duration = liveUpdatesNode?.attrs?.duration;
372
+ return duration ? { duration } : null;
189
373
  },
190
374
  newsletterAdminCount: async (jid) => {
191
- var _a, _b;
192
- const result = await newsletterWMexQuery(jid, QueryIds.ADMIN_COUNT);
193
- const buff = (_b = (_a = (0, WABinary_1.getBinaryNodeChild)(result, 'result')) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.toString();
194
- return JSON.parse(buff).data[Types_1.XWAPaths.ADMIN_COUNT].admin_count;
375
+ const response = await executeWMexQuery({ newsletter_id: jid }, QueryIds.ADMIN_COUNT, XWAPaths.xwa2_newsletter_admin_count);
376
+ return response.admin_count;
195
377
  },
196
- /**user is Lid, not Jid */
197
- newsletterChangeOwner: async (jid, user) => {
198
- await newsletterWMexQuery(jid, QueryIds.CHANGE_OWNER, {
199
- user_id: user
200
- });
378
+ newsletterChangeOwner: async (jid, newOwnerJid) => {
379
+ await executeWMexQueryIgnoreResponse({ newsletter_id: jid, user_id: newOwnerJid }, QueryIds.CHANGE_OWNER);
201
380
  },
202
- /**user is Lid, not Jid */
203
- newsletterDemote: async (jid, user) => {
204
- await newsletterWMexQuery(jid, QueryIds.DEMOTE, {
205
- user_id: user
206
- });
381
+ newsletterDemote: async (jid, userJid) => {
382
+ await executeWMexQueryIgnoreResponse({ newsletter_id: jid, user_id: userJid }, QueryIds.DEMOTE);
207
383
  },
208
384
  newsletterDelete: async (jid) => {
209
- await newsletterWMexQuery(jid, QueryIds.DELETE);
210
- },
211
- /**if code wasn't passed, the reaction will be removed (if is reacted) */
212
- newsletterReactMessage: async (jid, server_id, code) => {
213
- await query({
214
- tag: 'message',
215
- attrs: { to: jid, ...(!code ? { edit: '7' } : {}), type: 'reaction', server_id, id: (0, Utils_1.generateMessageID)() },
216
- content: [{
217
- tag: 'reaction',
218
- attrs: code ? { code } : {}
219
- }]
220
- });
221
- },
222
- newsletterFetchMessages: async (type, key, count, after) => {
223
- const afterStr = after === null || after === void 0 ? void 0 : after.toString();
224
- const result = await newsletterQuery(WABinary_1.S_WHATSAPP_NET, 'get', [
225
- {
226
- tag: 'messages',
227
- attrs: { type, ...(type === 'invite' ? { key } : { jid: key }), count: count.toString(), after: afterStr || '100' }
228
- }
229
- ]);
230
- return await parseFetchedUpdates(result, 'messages');
385
+ await executeWMexQueryIgnoreResponse({ newsletter_id: jid }, QueryIds.DELETE);
231
386
  },
232
- newsletterFetchUpdates: async (jid, count, after, since) => {
233
- const result = await newsletterQuery(jid, 'get', [
234
- {
235
- tag: 'message_updates',
236
- attrs: { count: count.toString(), after: (after === null || after === void 0 ? void 0 : after.toString()) || '100', since: (since === null || since === void 0 ? void 0 : since.toString()) || '0' }
237
- }
238
- ]);
239
- return await parseFetchedUpdates(result, 'updates');
387
+ newsletterAction: async (jid, type) => {
388
+ const queryId = QueryIds[type.toUpperCase()];
389
+ if (!queryId) {
390
+ throw new Error(`Unknown newsletter action: ${type}`);
391
+ }
392
+ await executeWMexQueryIgnoreResponse({ newsletter_id: jid }, queryId);
240
393
  }
241
394
  };
242
395
  };
243
- exports.makeNewsletterSocket = makeNewsletterSocket;
244
-
245
- const extractNewsletterMetadata = (node, isCreate) => {
246
- var _a, _b, _c, _d;
247
- const result = (_b = (_a = (0, WABinary_1.getBinaryNodeChild)(node, 'result')) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.toString();
248
- const metadataPath = JSON.parse(result).data[isCreate ? Types_1.XWAPaths.CREATE : Types_1.XWAPaths.NEWSLETTER];
249
- const metadata = {
250
- id: metadataPath.id,
251
- state: metadataPath.state.type,
252
- creation_time: +metadataPath.thread_metadata.creation_time,
253
- name: metadataPath.thread_metadata.name.text,
254
- nameTime: +metadataPath.thread_metadata.name.update_time,
255
- description: metadataPath.thread_metadata.description.text,
256
- descriptionTime: +metadataPath.thread_metadata.description.update_time,
257
- invite: metadataPath.thread_metadata.invite,
258
- handle: metadataPath.thread_metadata.handle,
259
- picture: ((_c = metadataPath.thread_metadata.picture) === null || _c === void 0 ? void 0 : _c.direct_path) || null,
260
- preview: ((_d = metadataPath.thread_metadata.preview) === null || _d === void 0 ? void 0 : _d.direct_path) || null,
261
- reaction_codes: metadataPath.thread_metadata.settings.reaction_codes.value,
262
- subscribers: +metadataPath.thread_metadata.subscribers_count,
263
- verification: metadataPath.thread_metadata.verification,
264
- viewer_metadata: metadataPath.viewer_metadata
396
+ export const extractNewsletterMetadata = (node, isCreate) => {
397
+ const result = getBinaryNodeChild(node, 'result')?.content?.toString();
398
+ const parsed = JSON.parse(result || '{}');
399
+ const metadataPath = parsed.data?.[isCreate ? XWAPaths.xwa2_newsletter_create : XWAPaths.xwa2_newsletter_metadata];
400
+ const getUrlFromDirectPath = (directPath) => (directPath ? `https://mmg.whatsapp.net${directPath}` : '');
401
+ return {
402
+ id: metadataPath?.id,
403
+ state: metadataPath?.state?.type,
404
+ creation_time: +metadataPath?.thread_metadata?.creation_time,
405
+ name: metadataPath?.thread_metadata?.name?.text,
406
+ nameTime: +metadataPath?.thread_metadata?.name?.update_time,
407
+ description: metadataPath?.thread_metadata?.description?.text,
408
+ descriptionTime: +metadataPath?.thread_metadata?.description?.update_time,
409
+ invite: metadataPath?.thread_metadata?.invite,
410
+ handle: metadataPath?.thread_metadata?.handle,
411
+ picture: getUrlFromDirectPath(metadataPath?.thread_metadata?.picture?.direct_path),
412
+ preview: getUrlFromDirectPath(metadataPath?.thread_metadata?.preview?.direct_path),
413
+ reaction_codes: metadataPath?.thread_metadata?.settings?.reaction_codes?.value,
414
+ subscribers: +metadataPath?.thread_metadata?.subscribers_count,
415
+ verification: metadataPath?.thread_metadata?.verification,
416
+ viewer_metadata: metadataPath?.viewer_metadata
265
417
  };
266
- return metadata;
267
418
  };
268
- exports.extractNewsletterMetadata = extractNewsletterMetadata;
419
+ //# sourceMappingURL=newsletter.js.map