@bellachu/xteambail 2.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 (413) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -0
  3. package/WAProto/GenerateStatics.sh +3 -0
  4. package/WAProto/WAProto.proto +5479 -0
  5. package/WAProto/fix-imports.js +38 -0
  6. package/WAProto/index.d.ts +14017 -0
  7. package/WAProto/index.js +2213 -0
  8. package/engine-requirements.js +10 -0
  9. package/lib/Defaults/index.d.ts +75 -0
  10. package/lib/Defaults/index.d.ts.map +1 -0
  11. package/lib/Defaults/index.js +139 -0
  12. package/lib/Defaults/index.js.map +1 -0
  13. package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
  14. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  15. package/lib/Signal/Group/ciphertext-message.js +19 -0
  16. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  17. package/lib/Signal/Group/group-session-builder.d.ts +15 -0
  18. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  19. package/lib/Signal/Group/group-session-builder.js +38 -0
  20. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  21. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  22. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  23. package/lib/Signal/Group/group_cipher.js +87 -0
  24. package/lib/Signal/Group/group_cipher.js.map +1 -0
  25. package/lib/Signal/Group/index.d.ts +12 -0
  26. package/lib/Signal/Group/index.d.ts.map +1 -0
  27. package/lib/Signal/Group/index.js +79 -0
  28. package/lib/Signal/Group/index.js.map +1 -0
  29. package/lib/Signal/Group/keyhelper.d.ts +11 -0
  30. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  31. package/lib/Signal/Group/keyhelper.js +27 -0
  32. package/lib/Signal/Group/keyhelper.js.map +1 -0
  33. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  34. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  35. package/lib/Signal/Group/sender-chain-key.js +33 -0
  36. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  37. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  38. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  39. package/lib/Signal/Group/sender-key-distribution-message.js +62 -0
  40. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  41. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  42. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  43. package/lib/Signal/Group/sender-key-message.js +68 -0
  44. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  45. package/lib/Signal/Group/sender-key-name.d.ts +18 -0
  46. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  47. package/lib/Signal/Group/sender-key-name.js +54 -0
  48. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  49. package/lib/Signal/Group/sender-key-record.d.ts +31 -0
  50. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  51. package/lib/Signal/Group/sender-key-record.js +48 -0
  52. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  53. package/lib/Signal/Group/sender-key-state.d.ts +39 -0
  54. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  55. package/lib/Signal/Group/sender-key-state.js +88 -0
  56. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  57. package/lib/Signal/Group/sender-message-key.d.ts +12 -0
  58. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  59. package/lib/Signal/Group/sender-message-key.js +33 -0
  60. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  61. package/lib/Signal/libsignal.d.ts +5 -0
  62. package/lib/Signal/libsignal.d.ts.map +1 -0
  63. package/lib/Signal/libsignal.js +575 -0
  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 +309 -0
  68. package/lib/Signal/lid-mapping.js.map +1 -0
  69. package/lib/Socket/Client/index.d.ts +3 -0
  70. package/lib/Socket/Client/index.d.ts.map +1 -0
  71. package/lib/Socket/Client/index.js +27 -0
  72. package/lib/Socket/Client/index.js.map +1 -0
  73. package/lib/Socket/Client/types.d.ts +16 -0
  74. package/lib/Socket/Client/types.d.ts.map +1 -0
  75. package/lib/Socket/Client/types.js +18 -0
  76. package/lib/Socket/Client/types.js.map +1 -0
  77. package/lib/Socket/Client/websocket.d.ts +13 -0
  78. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  79. package/lib/Socket/Client/websocket.js +62 -0
  80. package/lib/Socket/Client/websocket.js.map +1 -0
  81. package/lib/Socket/business.d.ts +217 -0
  82. package/lib/Socket/business.d.ts.map +1 -0
  83. package/lib/Socket/business.js +368 -0
  84. package/lib/Socket/business.js.map +1 -0
  85. package/lib/Socket/chats.d.ts +124 -0
  86. package/lib/Socket/chats.d.ts.map +1 -0
  87. package/lib/Socket/chats.js +1340 -0
  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 +522 -0
  92. package/lib/Socket/communities.js.map +1 -0
  93. package/lib/Socket/groups.d.ts +161 -0
  94. package/lib/Socket/groups.d.ts.map +1 -0
  95. package/lib/Socket/groups.js +430 -0
  96. package/lib/Socket/groups.js.map +1 -0
  97. package/lib/Socket/index.d.ts +260 -0
  98. package/lib/Socket/index.d.ts.map +1 -0
  99. package/lib/Socket/index.js +11 -0
  100. package/lib/Socket/index.js.map +1 -0
  101. package/lib/Socket/luxu.js +422 -0
  102. package/lib/Socket/messages-recv.d.ts +203 -0
  103. package/lib/Socket/messages-recv.d.ts.map +1 -0
  104. package/lib/Socket/messages-recv.js +2374 -0
  105. package/lib/Socket/messages-recv.js.map +1 -0
  106. package/lib/Socket/messages-send.d.ts +199 -0
  107. package/lib/Socket/messages-send.d.ts.map +1 -0
  108. package/lib/Socket/messages-send.js +1502 -0
  109. package/lib/Socket/messages-send.js.map +1 -0
  110. package/lib/Socket/mex.d.ts +3 -0
  111. package/lib/Socket/mex.d.ts.map +1 -0
  112. package/lib/Socket/mex.js +55 -0
  113. package/lib/Socket/mex.js.map +1 -0
  114. package/lib/Socket/newsletter.d.ts +170 -0
  115. package/lib/Socket/newsletter.d.ts.map +1 -0
  116. package/lib/Socket/newsletter.js +238 -0
  117. package/lib/Socket/newsletter.js.map +1 -0
  118. package/lib/Socket/socket.d.ts +59 -0
  119. package/lib/Socket/socket.d.ts.map +1 -0
  120. package/lib/Socket/socket.js +1022 -0
  121. package/lib/Socket/socket.js.map +1 -0
  122. package/lib/Store/index.d.ts +3 -0
  123. package/lib/Store/index.js +10 -0
  124. package/lib/Store/make-cache-manager-store.d.ts +13 -0
  125. package/lib/Store/make-cache-manager-store.js +82 -0
  126. package/lib/Store/make-in-memory-store.d.ts +118 -0
  127. package/lib/Store/make-in-memory-store.js +429 -0
  128. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  129. package/lib/Store/make-ordered-dictionary.js +81 -0
  130. package/lib/Store/object-repository.d.ts +10 -0
  131. package/lib/Store/object-repository.js +27 -0
  132. package/lib/Types/Auth.d.ts +117 -0
  133. package/lib/Types/Auth.d.ts.map +1 -0
  134. package/lib/Types/Auth.js +5 -0
  135. package/lib/Types/Auth.js.map +1 -0
  136. package/lib/Types/Bussines.d.ts +25 -0
  137. package/lib/Types/Bussines.d.ts.map +1 -0
  138. package/lib/Types/Bussines.js +5 -0
  139. package/lib/Types/Bussines.js.map +1 -0
  140. package/lib/Types/Call.d.ts +15 -0
  141. package/lib/Types/Call.d.ts.map +1 -0
  142. package/lib/Types/Call.js +5 -0
  143. package/lib/Types/Call.js.map +1 -0
  144. package/lib/Types/Chat.d.ts +124 -0
  145. package/lib/Types/Chat.d.ts.map +1 -0
  146. package/lib/Types/Chat.js +8 -0
  147. package/lib/Types/Chat.js.map +1 -0
  148. package/lib/Types/Contact.d.ts +26 -0
  149. package/lib/Types/Contact.d.ts.map +1 -0
  150. package/lib/Types/Contact.js +5 -0
  151. package/lib/Types/Contact.js.map +1 -0
  152. package/lib/Types/Events.d.ts +256 -0
  153. package/lib/Types/Events.d.ts.map +1 -0
  154. package/lib/Types/Events.js +3 -0
  155. package/lib/Types/Events.js.map +1 -0
  156. package/lib/Types/GroupMetadata.d.ts +71 -0
  157. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  158. package/lib/Types/GroupMetadata.js +5 -0
  159. package/lib/Types/GroupMetadata.js.map +1 -0
  160. package/lib/Types/Label.d.ts +47 -0
  161. package/lib/Types/Label.d.ts.map +1 -0
  162. package/lib/Types/Label.js +31 -0
  163. package/lib/Types/Label.js.map +1 -0
  164. package/lib/Types/LabelAssociation.d.ts +30 -0
  165. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  166. package/lib/Types/LabelAssociation.js +13 -0
  167. package/lib/Types/LabelAssociation.js.map +1 -0
  168. package/lib/Types/Message.d.ts +320 -0
  169. package/lib/Types/Message.d.ts.map +1 -0
  170. package/lib/Types/Message.js +23 -0
  171. package/lib/Types/Message.js.map +1 -0
  172. package/lib/Types/Mex.d.ts +141 -0
  173. package/lib/Types/Mex.d.ts.map +1 -0
  174. package/lib/Types/Mex.js +43 -0
  175. package/lib/Types/Mex.js.map +1 -0
  176. package/lib/Types/Product.d.ts +79 -0
  177. package/lib/Types/Product.d.ts.map +1 -0
  178. package/lib/Types/Product.js +5 -0
  179. package/lib/Types/Product.js.map +1 -0
  180. package/lib/Types/Signal.d.ts +87 -0
  181. package/lib/Types/Signal.d.ts.map +1 -0
  182. package/lib/Types/Signal.js +3 -0
  183. package/lib/Types/Signal.js.map +1 -0
  184. package/lib/Types/Socket.d.ts +136 -0
  185. package/lib/Types/Socket.d.ts.map +1 -0
  186. package/lib/Types/Socket.js +4 -0
  187. package/lib/Types/Socket.js.map +1 -0
  188. package/lib/Types/State.d.ts +97 -0
  189. package/lib/Types/State.d.ts.map +1 -0
  190. package/lib/Types/State.js +62 -0
  191. package/lib/Types/State.js.map +1 -0
  192. package/lib/Types/USync.d.ts +26 -0
  193. package/lib/Types/USync.d.ts.map +1 -0
  194. package/lib/Types/USync.js +3 -0
  195. package/lib/Types/USync.js.map +1 -0
  196. package/lib/Types/index.d.ts +65 -0
  197. package/lib/Types/index.d.ts.map +1 -0
  198. package/lib/Types/index.js +167 -0
  199. package/lib/Types/index.js.map +1 -0
  200. package/lib/Utils/auth-utils.d.ts +24 -0
  201. package/lib/Utils/auth-utils.d.ts.map +1 -0
  202. package/lib/Utils/auth-utils.js +332 -0
  203. package/lib/Utils/auth-utils.js.map +1 -0
  204. package/lib/Utils/browser-utils.d.ts +4 -0
  205. package/lib/Utils/browser-utils.d.ts.map +1 -0
  206. package/lib/Utils/browser-utils.js +35 -0
  207. package/lib/Utils/browser-utils.js.map +1 -0
  208. package/lib/Utils/business.d.ts +23 -0
  209. package/lib/Utils/business.d.ts.map +1 -0
  210. package/lib/Utils/business.js +247 -0
  211. package/lib/Utils/business.js.map +1 -0
  212. package/lib/Utils/chat-utils.d.ts +100 -0
  213. package/lib/Utils/chat-utils.d.ts.map +1 -0
  214. package/lib/Utils/chat-utils.js +971 -0
  215. package/lib/Utils/chat-utils.js.map +1 -0
  216. package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
  217. package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
  218. package/lib/Utils/companion-reg-client-utils.js +43 -0
  219. package/lib/Utils/companion-reg-client-utils.js.map +1 -0
  220. package/lib/Utils/crypto.d.ts +37 -0
  221. package/lib/Utils/crypto.d.ts.map +1 -0
  222. package/lib/Utils/crypto.js +160 -0
  223. package/lib/Utils/crypto.js.map +1 -0
  224. package/lib/Utils/decode-wa-message.d.ts +66 -0
  225. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  226. package/lib/Utils/decode-wa-message.js +380 -0
  227. package/lib/Utils/decode-wa-message.js.map +1 -0
  228. package/lib/Utils/event-buffer.d.ts +36 -0
  229. package/lib/Utils/event-buffer.d.ts.map +1 -0
  230. package/lib/Utils/event-buffer.js +666 -0
  231. package/lib/Utils/event-buffer.js.map +1 -0
  232. package/lib/Utils/generics.d.ts +91 -0
  233. package/lib/Utils/generics.d.ts.map +1 -0
  234. package/lib/Utils/generics.js +449 -0
  235. package/lib/Utils/generics.js.map +1 -0
  236. package/lib/Utils/history.d.ts +24 -0
  237. package/lib/Utils/history.d.ts.map +1 -0
  238. package/lib/Utils/history.js +160 -0
  239. package/lib/Utils/history.js.map +1 -0
  240. package/lib/Utils/identity-change-handler.d.ts +44 -0
  241. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  242. package/lib/Utils/identity-change-handler.js +94 -0
  243. package/lib/Utils/identity-change-handler.js.map +1 -0
  244. package/lib/Utils/index.d.ts +22 -0
  245. package/lib/Utils/index.d.ts.map +1 -0
  246. package/lib/Utils/index.js +236 -0
  247. package/lib/Utils/index.js.map +1 -0
  248. package/lib/Utils/link-preview.d.ts +21 -0
  249. package/lib/Utils/link-preview.d.ts.map +1 -0
  250. package/lib/Utils/link-preview.js +102 -0
  251. package/lib/Utils/link-preview.js.map +1 -0
  252. package/lib/Utils/logger.d.ts +12 -0
  253. package/lib/Utils/logger.d.ts.map +1 -0
  254. package/lib/Utils/logger.js +11 -0
  255. package/lib/Utils/logger.js.map +1 -0
  256. package/lib/Utils/lt-hash.d.ts +8 -0
  257. package/lib/Utils/lt-hash.d.ts.map +1 -0
  258. package/lib/Utils/lt-hash.js +14 -0
  259. package/lib/Utils/lt-hash.js.map +1 -0
  260. package/lib/Utils/make-mutex.d.ts +9 -0
  261. package/lib/Utils/make-mutex.d.ts.map +1 -0
  262. package/lib/Utils/make-mutex.js +43 -0
  263. package/lib/Utils/make-mutex.js.map +1 -0
  264. package/lib/Utils/message-retry-manager.d.ts +115 -0
  265. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  266. package/lib/Utils/message-retry-manager.js +283 -0
  267. package/lib/Utils/message-retry-manager.js.map +1 -0
  268. package/lib/Utils/messages-media.d.ts +133 -0
  269. package/lib/Utils/messages-media.d.ts.map +1 -0
  270. package/lib/Utils/messages-media.js +914 -0
  271. package/lib/Utils/messages-media.js.map +1 -0
  272. package/lib/Utils/messages.d.ts +91 -0
  273. package/lib/Utils/messages.d.ts.map +1 -0
  274. package/lib/Utils/messages.js +963 -0
  275. package/lib/Utils/messages.js.map +1 -0
  276. package/lib/Utils/noise-handler.d.ts +20 -0
  277. package/lib/Utils/noise-handler.d.ts.map +1 -0
  278. package/lib/Utils/noise-handler.js +238 -0
  279. package/lib/Utils/noise-handler.js.map +1 -0
  280. package/lib/Utils/offline-node-processor.d.ts +17 -0
  281. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  282. package/lib/Utils/offline-node-processor.js +54 -0
  283. package/lib/Utils/offline-node-processor.js.map +1 -0
  284. package/lib/Utils/pre-key-manager.d.ts +28 -0
  285. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  286. package/lib/Utils/pre-key-manager.js +109 -0
  287. package/lib/Utils/pre-key-manager.js.map +1 -0
  288. package/lib/Utils/process-message.d.ts +60 -0
  289. package/lib/Utils/process-message.d.ts.map +1 -0
  290. package/lib/Utils/process-message.js +710 -0
  291. package/lib/Utils/process-message.js.map +1 -0
  292. package/lib/Utils/reporting-utils.d.ts +11 -0
  293. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  294. package/lib/Utils/reporting-utils.js +586 -0
  295. package/lib/Utils/reporting-utils.js.map +1 -0
  296. package/lib/Utils/signal.d.ts +47 -0
  297. package/lib/Utils/signal.d.ts.map +1 -0
  298. package/lib/Utils/signal.js +279 -0
  299. package/lib/Utils/signal.js.map +1 -0
  300. package/lib/Utils/stanza-ack.d.ts +11 -0
  301. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  302. package/lib/Utils/stanza-ack.js +47 -0
  303. package/lib/Utils/stanza-ack.js.map +1 -0
  304. package/lib/Utils/sync-action-utils.d.ts +19 -0
  305. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  306. package/lib/Utils/sync-action-utils.js +61 -0
  307. package/lib/Utils/sync-action-utils.js.map +1 -0
  308. package/lib/Utils/tc-token-utils.d.ts +37 -0
  309. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  310. package/lib/Utils/tc-token-utils.js +176 -0
  311. package/lib/Utils/tc-token-utils.js.map +1 -0
  312. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  313. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  314. package/lib/Utils/use-multi-file-auth-state.js +124 -0
  315. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  316. package/lib/Utils/validate-connection.d.ts +11 -0
  317. package/lib/Utils/validate-connection.d.ts.map +1 -0
  318. package/lib/Utils/validate-connection.js +229 -0
  319. package/lib/Utils/validate-connection.js.map +1 -0
  320. package/lib/WABinary/constants.d.ts +28 -0
  321. package/lib/WABinary/constants.d.ts.map +1 -0
  322. package/lib/WABinary/constants.js +42 -0
  323. package/lib/WABinary/constants.js.map +1 -0
  324. package/lib/WABinary/decode.d.ts +7 -0
  325. package/lib/WABinary/decode.d.ts.map +1 -0
  326. package/lib/WABinary/decode.js +271 -0
  327. package/lib/WABinary/decode.js.map +1 -0
  328. package/lib/WABinary/encode.d.ts +3 -0
  329. package/lib/WABinary/encode.d.ts.map +1 -0
  330. package/lib/WABinary/encode.js +226 -0
  331. package/lib/WABinary/encode.js.map +1 -0
  332. package/lib/WABinary/generic-utils.d.ts +15 -0
  333. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  334. package/lib/WABinary/generic-utils.js +219 -0
  335. package/lib/WABinary/generic-utils.js.map +1 -0
  336. package/lib/WABinary/index.d.ts +6 -0
  337. package/lib/WABinary/index.d.ts.map +1 -0
  338. package/lib/WABinary/index.js +60 -0
  339. package/lib/WABinary/index.js.map +1 -0
  340. package/lib/WABinary/jid-utils.d.ts +48 -0
  341. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  342. package/lib/WABinary/jid-utils.js +121 -0
  343. package/lib/WABinary/jid-utils.js.map +1 -0
  344. package/lib/WABinary/types.d.ts +19 -0
  345. package/lib/WABinary/types.d.ts.map +1 -0
  346. package/lib/WABinary/types.js +4 -0
  347. package/lib/WABinary/types.js.map +1 -0
  348. package/lib/WAM/BinaryInfo.d.ts +9 -0
  349. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  350. package/lib/WAM/BinaryInfo.js +17 -0
  351. package/lib/WAM/BinaryInfo.js.map +1 -0
  352. package/lib/WAM/constants.d.ts +40 -0
  353. package/lib/WAM/constants.d.ts.map +1 -0
  354. package/lib/WAM/constants.js +1 -0
  355. package/lib/WAM/constants.js.map +1 -0
  356. package/lib/WAM/encode.d.ts +3 -0
  357. package/lib/WAM/encode.d.ts.map +1 -0
  358. package/lib/WAM/encode.js +150 -0
  359. package/lib/WAM/encode.js.map +1 -0
  360. package/lib/WAM/index.d.ts +4 -0
  361. package/lib/WAM/index.d.ts.map +1 -0
  362. package/lib/WAM/index.js +38 -0
  363. package/lib/WAM/index.js.map +1 -0
  364. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  365. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  366. package/lib/WAUSync/Protocols/USyncContactProtocol.js +63 -0
  367. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  368. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  369. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  370. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +65 -0
  371. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  372. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  373. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  374. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +34 -0
  375. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  376. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  377. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  378. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +43 -0
  379. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  380. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  381. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
  382. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +32 -0
  383. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
  384. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  385. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  386. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +68 -0
  387. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  388. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
  389. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  390. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +37 -0
  391. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  392. package/lib/WAUSync/Protocols/index.d.ts +6 -0
  393. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  394. package/lib/WAUSync/Protocols/index.js +60 -0
  395. package/lib/WAUSync/Protocols/index.js.map +1 -0
  396. package/lib/WAUSync/USyncQuery.d.ts +30 -0
  397. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  398. package/lib/WAUSync/USyncQuery.js +103 -0
  399. package/lib/WAUSync/USyncQuery.js.map +1 -0
  400. package/lib/WAUSync/USyncUser.d.ts +17 -0
  401. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  402. package/lib/WAUSync/USyncUser.js +38 -0
  403. package/lib/WAUSync/USyncUser.js.map +1 -0
  404. package/lib/WAUSync/index.d.ts +4 -0
  405. package/lib/WAUSync/index.d.ts.map +1 -0
  406. package/lib/WAUSync/index.js +38 -0
  407. package/lib/WAUSync/index.js.map +1 -0
  408. package/lib/index.d.ts +13 -0
  409. package/lib/index.d.ts.map +1 -0
  410. package/lib/index.js +133 -0
  411. package/lib/index.js.map +1 -0
  412. package/package.json +72 -0
  413. package/scripts/patch-deps.js +35 -0
@@ -0,0 +1,1502 @@
1
+ Object.defineProperty(exports, "__esModule", {
2
+ value: true
3
+ });
4
+ exports.makeMessagesSocket = undefined;
5
+ var _nodeCache = _interopRequireDefault(require("@cacheable/node-cache"));
6
+ var _boom = require("@hapi/boom");
7
+ var _index = require("../../WAProto/index.js");
8
+ var _index2 = require("../Defaults/index.js");
9
+ var _index3 = require("../Utils/index.js");
10
+ var _linkPreview = require("../Utils/link-preview.js");
11
+ var _makeMutex = require("../Utils/make-mutex.js");
12
+ var _reportingUtils = require("../Utils/reporting-utils.js");
13
+ var _tcTokenUtils = require("../Utils/tc-token-utils.js");
14
+ var _index4 = require("../WABinary/index.js");
15
+ var _index5 = require("../WAUSync/index.js");
16
+ var _newsletter = require("./newsletter.js");
17
+ var _luxu = _interopRequireDefault(require("./luxu.js"));
18
+ function _interopRequireDefault(B) {
19
+ if (B && B.__esModule) {
20
+ return B;
21
+ } else {
22
+ return {
23
+ default: B
24
+ };
25
+ }
26
+ }
27
+ const makeMessagesSocket = B => {
28
+ const {
29
+ logger: m,
30
+ linkPreviewImageThumbnailWidth: ya,
31
+ generateHighQualityLinkPreview: za,
32
+ options: Aa,
33
+ patchMessageBeforeSending: T,
34
+ cachedGroupMetadata: ma,
35
+ enableRecentMessageCache: Ba,
36
+ maxMsgRetryCount: Ca,
37
+ aiLabel: aiLbl = true
38
+ } = B;
39
+ const K = (0, _newsletter.makeNewsletterSocket)(B);
40
+ const {
41
+ ev: na,
42
+ authState: u,
43
+ messageMutex: Da,
44
+ signalRepository: A,
45
+ upsertMessage: Ea,
46
+ query: da,
47
+ fetchPrivacySettings: oa,
48
+ sendNode: X,
49
+ groupMetadata: Fa,
50
+ groupToggleEphemeral: Ga,
51
+ registerSocketEndHandler: Ha
52
+ } = K;
53
+ const ea = A.lidMapping.getLIDForPN.bind(A.lidMapping);
54
+ const fa = new Set();
55
+ const E = B.userDevicesCache || new _nodeCache.default({
56
+ stdTTL: _index2.DEFAULT_CACHE_TTLS.USER_DEVICES,
57
+ useClones: false
58
+ });
59
+ const pa = (0, _makeMutex.makeMutex)();
60
+ const U = Ba ? new _index3.MessageRetryManager(m, Ca) : null;
61
+ const Ia = (0, _makeMutex.makeKeyedMutex)();
62
+ let Y;
63
+ let ha = _index3.DEF_MEDIA_HOST;
64
+ const qa = async (a = false) => {
65
+ const b = await Y;
66
+ if (!b || a || new Date().getTime() - b.fetchDate.getTime() > b.ttl * 1000) {
67
+ Y = (async () => {
68
+ var e = await da({
69
+ tag: "iq",
70
+ attrs: {
71
+ type: "set",
72
+ xmlns: "w:m",
73
+ to: _index4.S_WHATSAPP_NET
74
+ },
75
+ content: [{
76
+ tag: "media_conn",
77
+ attrs: {}
78
+ }]
79
+ });
80
+ e = (0, _index4.getBinaryNodeChild)(e, "media_conn");
81
+ e = {
82
+ hosts: (0, _index4.getBinaryNodeChildren)(e, "host").map(({
83
+ attrs: d
84
+ }) => ({
85
+ hostname: d.hostname,
86
+ maxContentLengthBytes: +d.maxContentLengthBytes
87
+ })),
88
+ auth: e.attrs.auth,
89
+ ttl: +e.attrs.ttl,
90
+ fetchDate: new Date()
91
+ };
92
+ m.debug("fetched media conn");
93
+ if (e.hosts[0]) {
94
+ ha = e.hosts[0].hostname;
95
+ }
96
+ return e;
97
+ })();
98
+ }
99
+ return Y;
100
+ };
101
+ const ra = async (a, b, e, d) => {
102
+ if (!e || e.length === 0) {
103
+ throw new _boom.Boom("missing ids in receipt");
104
+ }
105
+ const c = {
106
+ tag: "receipt",
107
+ attrs: {
108
+ id: e[0]
109
+ }
110
+ };
111
+ if (d === "read" || d === "read-self") {
112
+ c.attrs.t = (0, _index3.unixTimestampSeconds)().toString();
113
+ }
114
+ if (d === "sender" && ((0, _index4.isPnUser)(a) || (0, _index4.isLidUser)(a))) {
115
+ c.attrs.recipient = a;
116
+ c.attrs.to = b;
117
+ } else {
118
+ c.attrs.to = a;
119
+ if (b) {
120
+ c.attrs.participant = b;
121
+ }
122
+ }
123
+ if (d) {
124
+ c.attrs.type = d;
125
+ }
126
+ a = e.slice(1);
127
+ if (a.length) {
128
+ c.content = [{
129
+ tag: "list",
130
+ attrs: {},
131
+ content: a.map(k => ({
132
+ tag: "item",
133
+ attrs: {
134
+ id: k
135
+ }
136
+ }))
137
+ }];
138
+ }
139
+ m.debug({
140
+ attrs: c.attrs,
141
+ messageIds: e
142
+ }, "sending receipt for messages");
143
+ await X(c);
144
+ };
145
+ const sa = async (a, b) => {
146
+ a = (0, _index3.aggregateMessageKeysNotFromMe)(a);
147
+ for (const {
148
+ jid: e,
149
+ participant: d,
150
+ messageIds: c
151
+ } of a) {
152
+ await ra(e, d, c, b);
153
+ }
154
+ };
155
+ const ia = async (a, b, e) => {
156
+ const d = [];
157
+ if (!b) {
158
+ m.debug("not using cache for devices");
159
+ }
160
+ var c = [];
161
+ a = a.map(f => {
162
+ var h = (0, _index4.jidDecode)(f);
163
+ const n = h?.user;
164
+ h = h?.device;
165
+ if (typeof h === "number" && h >= 0 && n) {
166
+ d.push({
167
+ user: n,
168
+ device: h,
169
+ jid: f
170
+ });
171
+ return null;
172
+ }
173
+ f = (0, _index4.jidNormalizedUser)(f);
174
+ return {
175
+ jid: f,
176
+ user: n
177
+ };
178
+ }).filter(f => f !== null);
179
+ if (b && E.mget) {
180
+ var k = a.map(f => f?.user).filter(Boolean);
181
+ k = await E.mget(k);
182
+ }
183
+ for (const {
184
+ jid: f,
185
+ user: h
186
+ } of a) {
187
+ if (b) {
188
+ if (a = k?.[h] || (E.mget ? undefined : await E.get(h))) {
189
+ a = a.map(n => ({
190
+ ...n,
191
+ jid: (0, _index4.jidEncode)(n.user, n.server, n.device)
192
+ }));
193
+ d.push(...a);
194
+ m.trace({
195
+ user: h
196
+ }, "using cache for devices");
197
+ } else {
198
+ c.push(f);
199
+ }
200
+ } else {
201
+ c.push(f);
202
+ }
203
+ }
204
+ if (!c.length) {
205
+ return d;
206
+ }
207
+ b = new Set();
208
+ for (var q of c) {
209
+ if (((0, _index4.isLidUser)(q) || (0, _index4.isHostedLidUser)(q)) && (k = (0, _index4.jidDecode)(q)?.user)) {
210
+ b.add(k);
211
+ }
212
+ }
213
+ q = new _index5.USyncQuery().withContext("message").withDeviceProtocol().withLIDProtocol();
214
+ for (var x of c) {
215
+ q.withUser(new _index5.USyncUser().withId(x));
216
+ }
217
+ if (c = await K.executeUSyncQuery(q)) {
218
+ x = c.list.filter(h => !!h.lid);
219
+ if (x.length > 0) {
220
+ m.trace("Storing LID maps from device call");
221
+ await A.lidMapping.storeLIDPNMappings(x.map(h => ({
222
+ lid: h.lid,
223
+ pn: h.id
224
+ })));
225
+ try {
226
+ const h = x.map(n => n.lid);
227
+ if (h.length) {
228
+ await Z(h, true);
229
+ }
230
+ } catch (h) {
231
+ m.warn({
232
+ e: h,
233
+ count: x.length
234
+ }, "failed to assert sessions for newly mapped LIDs");
235
+ }
236
+ }
237
+ e = (0, _index3.extractDeviceJids)(c?.list, u.creds.me.id, u.creds.me.lid, e);
238
+ const f = {};
239
+ for (var v of e) {
240
+ f[v.user] = f[v.user] || [];
241
+ f[v.user]?.push(v);
242
+ }
243
+ for (const [h, n] of Object.entries(f)) {
244
+ v = b.has(h);
245
+ for (var g of n) {
246
+ e = v ? (0, _index4.jidEncode)(h, g.server, g.device) : (0, _index4.jidEncode)(g.user, g.server, g.device);
247
+ d.push({
248
+ ...g,
249
+ jid: e
250
+ });
251
+ m.debug({
252
+ user: g.user,
253
+ device: g.device,
254
+ finalJid: e,
255
+ usedLid: v
256
+ }, "Processed device with LID priority");
257
+ }
258
+ }
259
+ await pa.mutex(async () => {
260
+ if (E.mset) {
261
+ await E.mset(Object.entries(f).map(([h, n]) => ({
262
+ key: h,
263
+ value: n
264
+ })));
265
+ } else {
266
+ for (const h in f) {
267
+ if (f[h]) {
268
+ await E.set(h, f[h]);
269
+ }
270
+ }
271
+ }
272
+ });
273
+ g = {};
274
+ for (const [h, n] of Object.entries(f)) {
275
+ if (n && n.length > 0) {
276
+ g[h] = n.map(H => H.device?.toString() || "0");
277
+ }
278
+ }
279
+ if (Object.keys(g).length > 0) {
280
+ try {
281
+ await u.keys.set({
282
+ "device-list": g
283
+ });
284
+ m.debug({
285
+ userCount: Object.keys(g).length
286
+ }, "stored user device lists for bulk migration");
287
+ } catch (h) {
288
+ m.warn({
289
+ error: h
290
+ }, "failed to store user device lists");
291
+ }
292
+ }
293
+ }
294
+ return d;
295
+ };
296
+ const Z = async (a, b) => {
297
+ let e = false;
298
+ const d = [...new Set(a)];
299
+ var c = [];
300
+ m.debug({
301
+ jids: a
302
+ }, "assertSessions call with jids");
303
+ for (const k of d) {
304
+ if (!!b || !(await A.validateSession(k)).exists) {
305
+ c.push(k);
306
+ }
307
+ }
308
+ if (c.length) {
309
+ a = [...c.filter(k => !!(0, _index4.isLidUser)(k) || !!(0, _index4.isHostedLidUser)(k)), ...((await A.lidMapping.getLIDsForPNs(c.filter(k => !!(0, _index4.isPnUser)(k) || !!(0, _index4.isHostedPnUser)(k)))) || []).map(k => k.lid)];
310
+ m.debug({
311
+ jidsRequiringFetch: c,
312
+ wireJids: a
313
+ }, "fetching sessions");
314
+ c = await da({
315
+ tag: "iq",
316
+ attrs: {
317
+ xmlns: "encrypt",
318
+ type: "get",
319
+ to: _index4.S_WHATSAPP_NET
320
+ },
321
+ content: [{
322
+ tag: "key",
323
+ attrs: {},
324
+ content: a.map(k => {
325
+ k = {
326
+ jid: k
327
+ };
328
+ if (b) {
329
+ k.reason = "identity";
330
+ }
331
+ return {
332
+ tag: "user",
333
+ attrs: k
334
+ };
335
+ })
336
+ }]
337
+ });
338
+ await (0, _index3.parseAndInjectE2ESessions)(c, A);
339
+ e = true;
340
+ }
341
+ return e;
342
+ };
343
+ const aa = async (a, b, e, d) => {
344
+ if (!a.length) {
345
+ return {
346
+ nodes: [],
347
+ shouldIncludeDeviceIdentity: false
348
+ };
349
+ }
350
+ const c = await T(b, a);
351
+ b = Array.isArray(c) ? c : a.map(g => ({
352
+ recipientJid: g,
353
+ message: c
354
+ }));
355
+ let k = false;
356
+ const q = u.creds.me.id;
357
+ const x = u.creds.me?.lid;
358
+ const v = x ? (0, _index4.jidDecode)(x)?.user : null;
359
+ b = b.map(async ({
360
+ recipientJid: g,
361
+ message: f
362
+ }) => {
363
+ try {
364
+ if (!g) {
365
+ return null;
366
+ }
367
+ if (d) {
368
+ const {
369
+ user: n
370
+ } = (0, _index4.jidDecode)(g);
371
+ const {
372
+ user: H
373
+ } = (0, _index4.jidDecode)(q);
374
+ const V = g === q || x && g === x;
375
+ if ((n === H || v && n === v) && !V) {
376
+ f = d;
377
+ m.debug({
378
+ jid: g,
379
+ targetUser: n
380
+ }, "Using DSM for own device");
381
+ }
382
+ }
383
+ const h = (0, _index3.encodeWAMessage)(f);
384
+ return await Ia.mutex(g, async () => {
385
+ const {
386
+ type: n,
387
+ ciphertext: H
388
+ } = await A.encryptMessage({
389
+ jid: g,
390
+ data: h
391
+ });
392
+ if (n === "pkmsg") {
393
+ k = true;
394
+ }
395
+ return {
396
+ tag: "to",
397
+ attrs: {
398
+ jid: g
399
+ },
400
+ content: [{
401
+ tag: "enc",
402
+ attrs: {
403
+ v: "2",
404
+ type: n,
405
+ ...(e || {})
406
+ },
407
+ content: H
408
+ }]
409
+ };
410
+ });
411
+ } catch (h) {
412
+ m.error({
413
+ jid: g,
414
+ err: h
415
+ }, "Failed to encrypt for recipient");
416
+ return null;
417
+ }
418
+ });
419
+ b = (await Promise.all(b)).filter(g => g !== null);
420
+ if (a.length > 0 && b.length === 0) {
421
+ throw new _boom.Boom("All encryptions failed", {
422
+ statusCode: 500
423
+ });
424
+ }
425
+ return {
426
+ nodes: b,
427
+ shouldIncludeDeviceIdentity: k
428
+ };
429
+ };
430
+ const btnGetType = message => {
431
+ message = (0, _index3.normalizeMessageContent)(message) || message;
432
+ if (message.listMessage) return "list";
433
+ if (message.buttonsMessage) return "buttons";
434
+ if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === "review_and_pay") return "review_and_pay";
435
+ if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === "review_order") return "review_order";
436
+ if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === "payment_info") return "payment_info";
437
+ if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === "catalog_message") return "catalog_message";
438
+ if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === "payment_status") return "payment_status";
439
+ if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === "payment_method") return "payment_method";
440
+ if (message.interactiveMessage?.nativeFlowMessage?.buttons?.[0]?.name === "payment_key_info") return "payment_key_info";
441
+ if (message.interactiveMessage?.nativeFlowMessage) return "interactive";
442
+ return undefined;
443
+ };
444
+ const btnGetArgs = message => {
445
+ message = (0, _index3.normalizeMessageContent)(message) || message;
446
+ const nativeFlow = message.interactiveMessage?.nativeFlowMessage;
447
+ const firstButtonName = nativeFlow?.buttons?.[0]?.name;
448
+ const nativeFlowSpecials = ["mpm", "cta_catalog", "send_location", "call_permission_request", "wa_payment_transaction_details", "automated_greeting_message_view_catalog"];
449
+ if (nativeFlow && (firstButtonName === "review_and_pay" || firstButtonName === "payment_info")) {
450
+ return {
451
+ tag: "biz",
452
+ attrs: {
453
+ native_flow_name: firstButtonName === "review_and_pay" ? "order_details" : firstButtonName
454
+ }
455
+ };
456
+ }
457
+ if (nativeFlow && nativeFlowSpecials.includes(firstButtonName)) {
458
+ return {
459
+ tag: "biz",
460
+ attrs: {
461
+ actual_actors: "2",
462
+ host_storage: "2",
463
+ privacy_mode_ts: (0, _index3.unixTimestampSeconds)().toString()
464
+ },
465
+ content: [{
466
+ tag: "interactive",
467
+ attrs: {
468
+ type: "native_flow",
469
+ v: "1"
470
+ },
471
+ content: [{
472
+ tag: "native_flow",
473
+ attrs: {
474
+ v: "2",
475
+ name: firstButtonName
476
+ }
477
+ }]
478
+ }, {
479
+ tag: "quality_control",
480
+ attrs: {
481
+ source_type: "third_party"
482
+ }
483
+ }]
484
+ };
485
+ }
486
+ if (nativeFlow || message.buttonsMessage) {
487
+ return {
488
+ tag: "biz",
489
+ attrs: {
490
+ actual_actors: "2",
491
+ host_storage: "2",
492
+ privacy_mode_ts: (0, _index3.unixTimestampSeconds)().toString()
493
+ },
494
+ content: [{
495
+ tag: "interactive",
496
+ attrs: {
497
+ type: "native_flow",
498
+ v: "1"
499
+ },
500
+ content: [{
501
+ tag: "native_flow",
502
+ attrs: {
503
+ v: "9",
504
+ name: "mixed"
505
+ }
506
+ }]
507
+ }, {
508
+ tag: "quality_control",
509
+ attrs: {
510
+ source_type: "third_party"
511
+ }
512
+ }]
513
+ };
514
+ }
515
+ if (message.listMessage) {
516
+ return {
517
+ tag: "biz",
518
+ attrs: {
519
+ actual_actors: "2",
520
+ host_storage: "2",
521
+ privacy_mode_ts: (0, _index3.unixTimestampSeconds)().toString()
522
+ },
523
+ content: [{
524
+ tag: "list",
525
+ attrs: {
526
+ v: "2",
527
+ type: "product_list"
528
+ }
529
+ }, {
530
+ tag: "quality_control",
531
+ attrs: {
532
+ source_type: "third_party"
533
+ }
534
+ }]
535
+ };
536
+ }
537
+ return {
538
+ tag: "biz",
539
+ attrs: {
540
+ actual_actors: "2",
541
+ host_storage: "2",
542
+ privacy_mode_ts: (0, _index3.unixTimestampSeconds)().toString()
543
+ }
544
+ };
545
+ };
546
+ const btnConvertMessage = message => {
547
+ let content = (0, _index3.normalizeMessageContent)(message) || message;
548
+ if (content.listMessage) {
549
+ const list = content.listMessage;
550
+ content = {
551
+ interactiveMessage: {
552
+ nativeFlowMessage: {
553
+ buttons: [{
554
+ name: "single_select",
555
+ buttonParamsJson: JSON.stringify({
556
+ title: list.buttonText || "Select",
557
+ sections: (list.sections || []).map(section => ({
558
+ title: section.title || "",
559
+ highlight_label: "",
560
+ rows: (section.rows || []).map(row => ({
561
+ header: "",
562
+ title: row.title || "",
563
+ description: row.description || "",
564
+ id: row.rowId || row.id || ""
565
+ }))
566
+ }))
567
+ })
568
+ }],
569
+ messageParamsJson: "",
570
+ messageVersion: 1
571
+ },
572
+ body: {
573
+ text: list.description || ""
574
+ },
575
+ footer: list.footerText ? {
576
+ text: list.footerText
577
+ } : undefined,
578
+ header: list.title ? {
579
+ title: list.title,
580
+ hasMediaAttachment: false,
581
+ subtitle: ""
582
+ } : undefined,
583
+ contextInfo: list.contextInfo
584
+ }
585
+ };
586
+ } else if (content.buttonsMessage) {
587
+ const bMsg = content.buttonsMessage;
588
+ const buttons = (bMsg.buttons || []).map(btn => ({
589
+ name: "quick_reply",
590
+ buttonParamsJson: JSON.stringify({
591
+ display_text: btn.buttonText?.displayText || btn.buttonText || "",
592
+ id: btn.buttonId || btn.buttonText?.displayText || ""
593
+ })
594
+ }));
595
+ content = {
596
+ interactiveMessage: {
597
+ nativeFlowMessage: {
598
+ buttons,
599
+ messageParamsJson: "",
600
+ messageVersion: 1
601
+ },
602
+ body: {
603
+ text: bMsg.contentText || bMsg.text || ""
604
+ },
605
+ footer: bMsg.footerText ? {
606
+ text: bMsg.footerText
607
+ } : undefined,
608
+ header: bMsg.text ? {
609
+ title: bMsg.text,
610
+ hasMediaAttachment: false,
611
+ subtitle: ""
612
+ } : bMsg.imageMessage || bMsg.videoMessage || bMsg.documentMessage ? {
613
+ hasMediaAttachment: true,
614
+ ...bMsg.imageMessage ? {
615
+ imageMessage: bMsg.imageMessage
616
+ } : {},
617
+ ...bMsg.videoMessage ? {
618
+ videoMessage: bMsg.videoMessage
619
+ } : {}
620
+ } : undefined,
621
+ contextInfo: bMsg.contextInfo
622
+ }
623
+ };
624
+ } else if (content.templateMessage) {
625
+ const tmpl = content.templateMessage.hydratedTemplate || content.templateMessage.hydratedFourRowTemplate || content.templateMessage.fourRowTemplate;
626
+ if (tmpl) {
627
+ const buttons = (tmpl.hydratedButtons || []).map(hBtn => {
628
+ if (hBtn.quickReplyButton) {
629
+ return {
630
+ name: "quick_reply",
631
+ buttonParamsJson: JSON.stringify({
632
+ display_text: hBtn.quickReplyButton.displayText || "",
633
+ id: hBtn.quickReplyButton.id || hBtn.quickReplyButton.displayText || ""
634
+ })
635
+ };
636
+ }
637
+ if (hBtn.urlButton) {
638
+ return {
639
+ name: "cta_url",
640
+ buttonParamsJson: JSON.stringify({
641
+ display_text: hBtn.urlButton.displayText || "",
642
+ url: hBtn.urlButton.url || "",
643
+ merchant_url: hBtn.urlButton.url || ""
644
+ })
645
+ };
646
+ }
647
+ if (hBtn.callButton) {
648
+ return {
649
+ name: "cta_call",
650
+ buttonParamsJson: JSON.stringify({
651
+ display_text: hBtn.callButton.displayText || "",
652
+ phone_number: hBtn.callButton.phoneNumber || ""
653
+ })
654
+ };
655
+ }
656
+ return null;
657
+ }).filter(Boolean);
658
+ content = {
659
+ interactiveMessage: {
660
+ nativeFlowMessage: {
661
+ buttons,
662
+ messageParamsJson: "",
663
+ messageVersion: 1
664
+ },
665
+ body: {
666
+ text: tmpl.hydratedContentText || tmpl.contentText || ""
667
+ },
668
+ footer: tmpl.hydratedFooterText ? {
669
+ text: tmpl.hydratedFooterText
670
+ } : undefined,
671
+ header: tmpl.hydratedTitleText ? {
672
+ title: tmpl.hydratedTitleText,
673
+ hasMediaAttachment: false,
674
+ subtitle: ""
675
+ } : tmpl.imageMessage || tmpl.videoMessage || tmpl.documentMessage ? {
676
+ hasMediaAttachment: true,
677
+ ...tmpl.imageMessage ? {
678
+ imageMessage: tmpl.imageMessage
679
+ } : {},
680
+ ...tmpl.videoMessage ? {
681
+ videoMessage: tmpl.videoMessage
682
+ } : {}
683
+ } : undefined,
684
+ contextInfo: tmpl.contextInfo
685
+ }
686
+ };
687
+ }
688
+ }
689
+ return content;
690
+ };
691
+ const ca = async (a, b, {
692
+ messageId: e,
693
+ participant: d,
694
+ additionalAttributes: c,
695
+ additionalNodes: k,
696
+ useUserDevicesCache: q,
697
+ useCachedGroupMetadata: x,
698
+ statusJidList: v
699
+ }) => {
700
+ const g = (0, _index3.assertMeId)(u.creds);
701
+ const f = u.creds.me?.lid;
702
+ const h = d?.count !== undefined;
703
+ let n = h;
704
+ const {
705
+ user: H,
706
+ server: V
707
+ } = (0, _index4.jidDecode)(a);
708
+ const ba = V === "g.us";
709
+ const L = a === "status@broadcast";
710
+ const W = V === "lid";
711
+ const ja = V === "newsletter";
712
+ const ta = ba || L;
713
+ e = e || (0, _index3.generateMessageIDV2)(g);
714
+ q = q !== false;
715
+ x = x !== false && !L;
716
+ const N = [];
717
+ const r = L ? "status@broadcast" : a;
718
+ const O = [];
719
+ const F = [];
720
+ let R;
721
+ const ua = {
722
+ deviceSentMessage: {
723
+ destinationJid: r,
724
+ message: b
725
+ },
726
+ messageContextInfo: b.messageContextInfo
727
+ };
728
+ const P = {};
729
+ if (d) {
730
+ if (!ba && !L) {
731
+ c = {
732
+ ...c,
733
+ device_fanout: "false"
734
+ };
735
+ }
736
+ const {
737
+ user: l,
738
+ device: y
739
+ } = (0, _index4.jidDecode)(d.jid);
740
+ F.push({
741
+ user: l,
742
+ device: y,
743
+ jid: d.jid
744
+ });
745
+ }
746
+ await u.keys.transaction(async () => {
747
+ b = btnConvertMessage(b);
748
+ const btnType = btnGetType(b);
749
+ var l = va(b);
750
+ if (l) {
751
+ P.mediatype = l;
752
+ }
753
+ if (ja) {
754
+ var y = T ? await T(b, []) : b;
755
+ y = (0, _index3.encodeNewsletterMessage)(y);
756
+ O.push({
757
+ tag: "plaintext",
758
+ attrs: {},
759
+ content: y
760
+ });
761
+ y = {
762
+ tag: "message",
763
+ attrs: {
764
+ to: a,
765
+ id: e,
766
+ type: wa(b),
767
+ ...(c || {})
768
+ },
769
+ content: O
770
+ };
771
+ m.debug({
772
+ msgId: e
773
+ }, `sending newsletter message to ${a}`);
774
+ await X(y);
775
+ } else {
776
+ if ((0, _index3.normalizeMessageContent)(b)?.pinInChatMessage || (0, _index3.normalizeMessageContent)(b)?.reactionMessage) {
777
+ P["decrypt-fail"] = "hide";
778
+ }
779
+ if (ta && !h) {
780
+ const [w, z] = await Promise.all([(async () => {
781
+ let I = x && ma ? await ma(a) : undefined;
782
+ if (I && Array.isArray(I?.participants)) {
783
+ m.trace({
784
+ jid: a,
785
+ participants: I.participants.length
786
+ }, "using cached group metadata");
787
+ } else if (!L) {
788
+ I = await Fa(a);
789
+ }
790
+ return I;
791
+ })(), (async () => d || L ? {} : (await u.keys.get("sender-key-memory", [a]))[a] || {})()]);
792
+ l = w ? w.participants.map(I => I.id) : [];
793
+ if (w?.ephemeralDuration && w.ephemeralDuration > 0) {
794
+ c = {
795
+ ...c,
796
+ expiration: w.ephemeralDuration.toString()
797
+ };
798
+ }
799
+ if (L && v) {
800
+ l.push(...v);
801
+ }
802
+ l = await ia(l, !!q, false);
803
+ F.push(...l);
804
+ if (ba) {
805
+ c = {
806
+ ...c,
807
+ addressing_mode: w?.addressingMode || "lid"
808
+ };
809
+ }
810
+ l = await T(b);
811
+ if (Array.isArray(l)) {
812
+ throw new _boom.Boom("Per-jid patching is not supported in groups");
813
+ }
814
+ var C = (0, _index3.encodeWAMessage)(l);
815
+ R = l;
816
+ const {
817
+ ciphertext: Q,
818
+ senderKeyDistributionMessage: ka
819
+ } = await A.encryptGroupMessage({
820
+ group: r,
821
+ data: C,
822
+ meId: (c?.addressing_mode || w?.addressingMode || "lid") === "lid" && f ? f : g
823
+ });
824
+ l = [];
825
+ for (var p of F) {
826
+ C = p.jid;
827
+ if ((!z[C] || !!d) && !(0, _index4.isHostedLidUser)(C) && !(0, _index4.isHostedPnUser)(C) && p.device !== 99) {
828
+ l.push(C);
829
+ z[C] = true;
830
+ }
831
+ }
832
+ if (l.length) {
833
+ m.debug({
834
+ senderKeyJids: l
835
+ }, "sending new sender key");
836
+ p = {
837
+ senderKeyDistributionMessage: {
838
+ axolotlSenderKeyDistributionMessage: ka,
839
+ groupId: r
840
+ }
841
+ };
842
+ await Z(l);
843
+ p = await aa(l, p, P);
844
+ n = n || p.shouldIncludeDeviceIdentity;
845
+ N.push(...p.nodes);
846
+ }
847
+ O.push({
848
+ tag: "enc",
849
+ attrs: {
850
+ v: "2",
851
+ type: "skmsg",
852
+ ...P
853
+ },
854
+ content: Q
855
+ });
856
+ await u.keys.set({
857
+ "sender-key-memory": {
858
+ [a]: z
859
+ }
860
+ });
861
+ } else {
862
+ p = g;
863
+ if (W && f) {
864
+ p = f;
865
+ m.debug({
866
+ to: a,
867
+ ownId: p
868
+ }, "Using LID identity for @lid conversation");
869
+ } else {
870
+ m.debug({
871
+ to: a,
872
+ ownId: p
873
+ }, "Using PN identity for @s.whatsapp.net conversation");
874
+ }
875
+ ({
876
+ user: p
877
+ } = (0, _index4.jidDecode)(p));
878
+ if (!d) {
879
+ l = await T(b, [a]);
880
+ R = Array.isArray(l) ? l.find(M => M.recipientJid === a) || l[0] : l;
881
+ }
882
+ if (!h && !d) {
883
+ F.push({
884
+ user: H,
885
+ device: 0,
886
+ jid: (0, _index4.jidEncode)(H, W ? "lid" : "s.whatsapp.net", 0)
887
+ });
888
+ if (H !== p) {
889
+ p = W ? "lid" : "s.whatsapp.net";
890
+ l = W && f ? (0, _index4.jidDecode)(f).user : (0, _index4.jidDecode)(g).user;
891
+ F.push({
892
+ user: l,
893
+ device: 0,
894
+ jid: (0, _index4.jidEncode)(l, p, 0)
895
+ });
896
+ }
897
+ if (c?.category !== "peer") {
898
+ F.length = 0;
899
+ p = W && f ? (0, _index4.jidEncode)((0, _index4.jidDecode)(f)?.user, "lid", undefined) : (0, _index4.jidEncode)((0, _index4.jidDecode)(g)?.user, "s.whatsapp.net", undefined);
900
+ p = await ia([p, a], true, false);
901
+ F.push(...p);
902
+ m.debug({
903
+ deviceCount: F.length,
904
+ devices: F.map(M => `${M.user}:${M.device}@${(0, _index4.jidDecode)(M.jid)?.server}`)
905
+ }, "Device enumeration complete with unified addressing");
906
+ }
907
+ }
908
+ p = [];
909
+ l = [];
910
+ C = [];
911
+ const {
912
+ user: w
913
+ } = (0, _index4.jidDecode)(g);
914
+ const {
915
+ user: z
916
+ } = f ? (0, _index4.jidDecode)(f) : {
917
+ user: null
918
+ };
919
+ for (const {
920
+ user: M,
921
+ jid: S
922
+ } of F) {
923
+ if (S === g || f && S === f) {
924
+ m.debug({
925
+ jid: S,
926
+ meId: g,
927
+ meLid: f
928
+ }, "Skipping exact sender device (whatsmeow pattern)");
929
+ } else {
930
+ if (M === w || M === z) {
931
+ l.push(S);
932
+ } else {
933
+ C.push(S);
934
+ }
935
+ p.push(S);
936
+ }
937
+ }
938
+ await Z(p);
939
+ const [{
940
+ nodes: Q,
941
+ shouldIncludeDeviceIdentity: ka
942
+ }, {
943
+ nodes: I,
944
+ shouldIncludeDeviceIdentity: Ja
945
+ }] = await Promise.all([aa(l, ua || b, P), aa(C, b, P, ua)]);
946
+ N.push(...Q);
947
+ N.push(...I);
948
+ if (l.length > 0 || C.length > 0) {
949
+ P.phash = (0, _index3.generateParticipantHashV2)([...l, ...C]);
950
+ }
951
+ n = n || ka || Ja;
952
+ }
953
+ if (h) {
954
+ p = (0, _index4.isLidUser)(d.jid);
955
+ p = (0, _index4.areJidsSameUser)(d.jid, p ? f : g);
956
+ l = b;
957
+ if (ta) {
958
+ var t;
959
+ if (f && (await A.hasSenderKey({
960
+ group: r,
961
+ meId: f
962
+ }))) {
963
+ t = f;
964
+ } else if (await A.hasSenderKey({
965
+ group: r,
966
+ meId: g
967
+ })) {
968
+ t = g;
969
+ }
970
+ if (t) {
971
+ try {
972
+ var G = await A.getSenderKeyDistributionMessage({
973
+ group: r,
974
+ meId: t
975
+ });
976
+ l = {
977
+ ...b,
978
+ senderKeyDistributionMessage: {
979
+ groupId: r,
980
+ axolotlSenderKeyDistributionMessage: G
981
+ }
982
+ };
983
+ } catch (Q) {
984
+ m.warn({
985
+ err: Q,
986
+ jid: r
987
+ }, "failed to build SKDM for retry, sending without it");
988
+ }
989
+ }
990
+ }
991
+ t = p ? (0, _index3.encodeWAMessage)({
992
+ deviceSentMessage: {
993
+ destinationJid: r,
994
+ message: l
995
+ }
996
+ }) : (0, _index3.encodeWAMessage)(l);
997
+ const {
998
+ type: w,
999
+ ciphertext: z
1000
+ } = await A.encryptMessage({
1001
+ data: t,
1002
+ jid: d.jid
1003
+ });
1004
+ O.push({
1005
+ tag: "enc",
1006
+ attrs: {
1007
+ v: "2",
1008
+ type: w,
1009
+ ...(d.count ? {
1010
+ count: d.count.toString()
1011
+ } : {})
1012
+ },
1013
+ content: z
1014
+ });
1015
+ }
1016
+ if (N.length) {
1017
+ if (c?.category === "peer") {
1018
+ if (t = N[0]?.content?.[0]) {
1019
+ O.push(t);
1020
+ }
1021
+ } else {
1022
+ O.push({
1023
+ tag: "participants",
1024
+ attrs: {},
1025
+ content: N
1026
+ });
1027
+ }
1028
+ }
1029
+ t = {
1030
+ tag: "message",
1031
+ attrs: {
1032
+ id: e,
1033
+ to: r,
1034
+ type: wa(b),
1035
+ ...(c || {})
1036
+ },
1037
+ content: O
1038
+ };
1039
+ if (d) {
1040
+ if ((0, _index4.isJidGroup)(r)) {
1041
+ t.attrs.to = r;
1042
+ t.attrs.participant = d.jid;
1043
+ } else if ((0, _index4.areJidsSameUser)(d.jid, g)) {
1044
+ t.attrs.to = d.jid;
1045
+ t.attrs.recipient = r;
1046
+ } else {
1047
+ t.attrs.to = d.jid;
1048
+ }
1049
+ } else {
1050
+ t.attrs.to = r;
1051
+ }
1052
+ if (n) {
1053
+ t.content.push({
1054
+ tag: "device-identity",
1055
+ attrs: {},
1056
+ content: (0, _index3.encodeSignedDeviceIdentity)(u.creds.account, true)
1057
+ });
1058
+ m.debug({
1059
+ jid: a
1060
+ }, "adding device identity");
1061
+ }
1062
+ if (!ja && !h && R?.messageContextInfo?.messageSecret && (0, _reportingUtils.shouldIncludeReportingToken)(R)) {
1063
+ try {
1064
+ y = (0, _index3.encodeWAMessage)(R);
1065
+ var J = await (0, _reportingUtils.getMessageReportingToken)(y, R, {
1066
+ id: e,
1067
+ fromMe: true,
1068
+ remoteJid: r,
1069
+ participant: d?.jid
1070
+ });
1071
+ if (J) {
1072
+ t.content.push(J);
1073
+ m.trace({
1074
+ jid: a
1075
+ }, "added reporting token to message");
1076
+ }
1077
+ } catch (w) {
1078
+ m.warn({
1079
+ jid: a,
1080
+ trace: w?.stack
1081
+ }, "failed to attach reporting token");
1082
+ }
1083
+ }
1084
+ y = c?.category === "peer";
1085
+ var D = (y = !ba && !h && !L && !ja && !y) ? await (0, _tcTokenUtils.resolveTcTokenJid)(r, ea) : r;
1086
+ J = (y ? await u.keys.get("tctoken", [D]) : {})[D];
1087
+ G = J?.token;
1088
+ if (G?.length && (0, _tcTokenUtils.isTcTokenExpired)(J?.timestamp)) {
1089
+ m.debug({
1090
+ jid: r,
1091
+ timestamp: J?.timestamp
1092
+ }, "tctoken expired, clearing");
1093
+ G = undefined;
1094
+ p = J?.senderTimestamp !== undefined ? {
1095
+ token: Buffer.alloc(0),
1096
+ senderTimestamp: J.senderTimestamp
1097
+ } : null;
1098
+ try {
1099
+ await u.keys.set({
1100
+ tctoken: {
1101
+ [D]: p
1102
+ }
1103
+ });
1104
+ } catch (w) {
1105
+ m.debug({
1106
+ jid: r,
1107
+ err: w?.message
1108
+ }, "failed to persist tctoken expiry cleanup");
1109
+ }
1110
+ }
1111
+ if (G?.length && K.serverProps.privacyTokenOn1to1) {
1112
+ t.content.push({
1113
+ tag: "tctoken",
1114
+ attrs: {},
1115
+ content: G
1116
+ });
1117
+ }
1118
+ let btnNodesPushed = false;
1119
+ if (!ja && btnType) {
1120
+ const btnNode = btnGetArgs(b);
1121
+ const filteredButtons = (0, _index4.getBinaryNodeFilter)(k || []);
1122
+ if (filteredButtons) {
1123
+ t.content.push(...k);
1124
+ btnNodesPushed = true;
1125
+ } else if (btnNode) {
1126
+ t.content.push(btnNode);
1127
+ }
1128
+ }
1129
+ const btnPeerSend = c?.category === "peer";
1130
+ const btn1on1Send = !ba && !h && !L && !ja && !btnPeerSend;
1131
+ if (!ja && !aiLbl && btn1on1Send && (0, _index4.isPnUser)(r)) {
1132
+ const hasBizBot = (0, _index4.getBinaryFilteredBizBot)(k || []) || (0, _index4.getBinaryFilteredBizBot)(t.content || []);
1133
+ if (!hasBizBot) {
1134
+ t.content.push({
1135
+ tag: "bot",
1136
+ attrs: {
1137
+ biz_bot: "1"
1138
+ }
1139
+ });
1140
+ }
1141
+ } else if (!ja && aiLbl && !ba && !h && !L && !btnPeerSend) {
1142
+ const hasBizBot = (0, _index4.getBinaryFilteredBizBot)(k || []);
1143
+ if (!hasBizBot) {
1144
+ t.content.push({
1145
+ tag: "bot",
1146
+ attrs: {
1147
+ biz_bot: "1"
1148
+ }
1149
+ });
1150
+ }
1151
+ }
1152
+ if (k && k.length > 0 && !btnNodesPushed) {
1153
+ t.content.push(...k);
1154
+ }
1155
+ if (!btnNodesPushed && (G = Ka(b))) {
1156
+ t.content.push({
1157
+ tag: "biz",
1158
+ attrs: {},
1159
+ content: [{
1160
+ tag: G,
1161
+ attrs: La(b)
1162
+ }]
1163
+ });
1164
+ m.debug({
1165
+ jid: a
1166
+ }, "adding business node");
1167
+ }
1168
+ m.debug({
1169
+ msgId: e
1170
+ }, `sending message to ${N.length} devices`);
1171
+ await X(t);
1172
+ if (b?.messageContextInfo?.messageSecret) {
1173
+ (0, _index3.setBotMessageSecret)(e, b.messageContextInfo.messageSecret, r);
1174
+ }
1175
+ t = !!(0, _index3.normalizeMessageContent)(b)?.protocolMessage;
1176
+ G = r === _index4.PSA_WID || (0, _index4.isJidBot)(r) || (0, _index4.isJidMetaAI)(r);
1177
+ if (y && !t && !G && (0, _tcTokenUtils.shouldSendNewTcToken)(J?.senderTimestamp) && !fa.has(D)) {
1178
+ fa.add(D);
1179
+ const w = (0, _index3.unixTimestampSeconds)();
1180
+ y = A.lidMapping.getPNForLID.bind(A.lidMapping);
1181
+ (0, _tcTokenUtils.resolveIssuanceJid)(r, K.serverProps.lidTrustedTokenIssueToLid, ea, y).then(z => xa([z], w)).then(async z => {
1182
+ await (0, _tcTokenUtils.storeTcTokensFromIqResult)({
1183
+ result: z,
1184
+ fallbackJid: D,
1185
+ keys: u.keys,
1186
+ getLIDForPN: ea
1187
+ });
1188
+ z = (await u.keys.get("tctoken", [D]))[D];
1189
+ const Q = await (0, _tcTokenUtils.buildMergedTcTokenIndexWrite)(u.keys, [D]);
1190
+ await u.keys.set({
1191
+ tctoken: {
1192
+ [D]: {
1193
+ token: Buffer.alloc(0),
1194
+ ...z,
1195
+ senderTimestamp: w
1196
+ },
1197
+ ...Q
1198
+ }
1199
+ });
1200
+ }).catch(z => {
1201
+ m.debug({
1202
+ jid: r,
1203
+ err: z?.message
1204
+ }, "fire-and-forget tctoken issuance failed");
1205
+ }).finally(() => {
1206
+ fa.delete(D);
1207
+ });
1208
+ }
1209
+ if (U && !d) {
1210
+ U.addRecentMessage(r, e, b);
1211
+ }
1212
+ }
1213
+ }, g);
1214
+ return e;
1215
+ };
1216
+ const wa = a => (a = (0, _index3.normalizeMessageContent)(a)) ? a.reactionMessage || a.encReactionMessage ? "reaction" : a.pollCreationMessage || a.pollCreationMessageV2 || a.pollCreationMessageV3 || a.pollUpdateMessage ? "poll" : a.eventMessage ? "event" : va(a) !== "" ? "media" : "text" : "text";
1217
+ const va = a => a.imageMessage ? "image" : a.videoMessage ? a.videoMessage.gifPlayback ? "gif" : "video" : a.audioMessage ? a.audioMessage.ptt ? "ptt" : "audio" : a.contactMessage ? "vcard" : a.documentMessage ? "document" : a.contactsArrayMessage ? "contact_array" : a.liveLocationMessage ? "livelocation" : a.stickerMessage ? "sticker" : a.listMessage ? "list" : a.listResponseMessage ? "list_response" : a.buttonsResponseMessage ? "buttons_response" : a.orderMessage ? "order" : a.productMessage ? "product" : a.interactiveResponseMessage ? "native_flow_response" : a.groupInviteMessage ? "url" : "";
1218
+ const Ka = a => {
1219
+ if (a.buttonsMessage) {
1220
+ return "buttons";
1221
+ }
1222
+ if (a.buttonsResponseMessage) {
1223
+ return "buttons_response";
1224
+ }
1225
+ if (a.interactiveResponseMessage) {
1226
+ return "interactive_response";
1227
+ }
1228
+ if (a.listMessage) {
1229
+ return "list";
1230
+ }
1231
+ if (a.listResponseMessage) {
1232
+ return "list_response";
1233
+ }
1234
+ };
1235
+ const La = a => {
1236
+ if (a.templateMessage) {
1237
+ return {};
1238
+ }
1239
+ if (a.listMessage) {
1240
+ a = a.listMessage.listType;
1241
+ if (!a) {
1242
+ throw new boom_1.Boom("Expected list type inside message");
1243
+ }
1244
+ return {
1245
+ v: "2",
1246
+ type: ListType[a].toLowerCase()
1247
+ };
1248
+ }
1249
+ return {};
1250
+ };
1251
+ const xa = async (a, b) => {
1252
+ const e = (b ?? (0, _index3.unixTimestampSeconds)()).toString();
1253
+ return await da({
1254
+ tag: "iq",
1255
+ attrs: {
1256
+ to: _index4.S_WHATSAPP_NET,
1257
+ type: "set",
1258
+ xmlns: "privacy"
1259
+ },
1260
+ content: [{
1261
+ tag: "tokens",
1262
+ attrs: {},
1263
+ content: a.map(d => ({
1264
+ tag: "token",
1265
+ attrs: {
1266
+ jid: (0, _index4.jidNormalizedUser)(d),
1267
+ t: e,
1268
+ type: "trusted_contact"
1269
+ }
1270
+ }))
1271
+ }]
1272
+ });
1273
+ };
1274
+ const la = (0, _index3.getWAUploadToServer)(B, qa);
1275
+ const Ma = (0, _index3.bindWaitForEvent)(na, "messages.media-update");
1276
+ Ha(() => {
1277
+ if (!B.userDevicesCache && E.close) {
1278
+ E.close();
1279
+ }
1280
+ Y = undefined;
1281
+ if (U) {
1282
+ U.clear();
1283
+ }
1284
+ });
1285
+ return {
1286
+ ...K,
1287
+ userDevicesCache: E,
1288
+ devicesMutex: pa,
1289
+ issuePrivacyTokens: xa,
1290
+ assertSessions: Z,
1291
+ relayMessage: ca,
1292
+ sendReceipt: ra,
1293
+ sendReceipts: sa,
1294
+ readMessages: async a => {
1295
+ const b = (await oa()).readreceipts === "all" ? "read" : "read-self";
1296
+ await sa(a, b);
1297
+ },
1298
+ refreshMediaConn: qa,
1299
+ getMediaHost: () => ha,
1300
+ waUploadToServer: la,
1301
+ fetchPrivacySettings: oa,
1302
+ sendPeerDataOperationMessage: async a => {
1303
+ if (!u.creds.me?.id) {
1304
+ throw new _boom.Boom("Not authenticated");
1305
+ }
1306
+ a = {
1307
+ protocolMessage: {
1308
+ peerDataOperationRequestMessage: a,
1309
+ type: _index.proto.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_MESSAGE
1310
+ }
1311
+ };
1312
+ const b = (0, _index4.jidNormalizedUser)(u.creds.me.id);
1313
+ return await ca(b, a, {
1314
+ additionalAttributes: {
1315
+ category: "peer",
1316
+ push_priority: "high_force"
1317
+ },
1318
+ additionalNodes: [{
1319
+ tag: "meta",
1320
+ attrs: {
1321
+ appdata: "default"
1322
+ }
1323
+ }]
1324
+ });
1325
+ },
1326
+ createParticipantNodes: aa,
1327
+ getUSyncDevices: ia,
1328
+ messageRetryManager: U,
1329
+ updateMemberLabel: (a, b) => ca(a, {
1330
+ protocolMessage: {
1331
+ type: _index.proto.Message.ProtocolMessage.Type.GROUP_MEMBER_LABEL_CHANGE,
1332
+ memberLabel: {
1333
+ label: b?.slice(0, 30),
1334
+ labelTimestamp: (0, _index3.unixTimestampSeconds)()
1335
+ }
1336
+ }
1337
+ }, {
1338
+ additionalNodes: [{
1339
+ tag: "meta",
1340
+ attrs: {
1341
+ tag_reason: "user_update",
1342
+ appdata: "member_tag"
1343
+ },
1344
+ content: undefined
1345
+ }]
1346
+ }),
1347
+ updateMediaMessage: async a => {
1348
+ const b = (0, _index3.assertMediaContent)(a.message);
1349
+ const e = b.mediaKey;
1350
+ const d = (0, _index3.encryptMediaRetryRequest)(a.key, e, u.creds.me.id);
1351
+ let c = undefined;
1352
+ await Promise.all([X(d), Ma(async k => {
1353
+ if (k = k.find(q => q.key.id === a.key.id)) {
1354
+ if (k.error) {
1355
+ c = k.error;
1356
+ } else {
1357
+ try {
1358
+ const q = (0, _index3.decryptMediaRetryData)(k.media, e, k.key.id);
1359
+ if (q.result !== _index.proto.MediaRetryNotification.ResultType.SUCCESS) {
1360
+ throw new _boom.Boom(`Media re-upload failed by device (${_index.proto.MediaRetryNotification.ResultType[q.result]})`, {
1361
+ data: q,
1362
+ statusCode: (0, _index3.getStatusCodeForMediaRetry)(q.result) || 404
1363
+ });
1364
+ }
1365
+ b.directPath = q.directPath;
1366
+ b.url = (0, _index3.getUrlFromDirectPath)(b.directPath, ha);
1367
+ m.debug({
1368
+ directPath: q.directPath,
1369
+ key: k.key
1370
+ }, "media update successful");
1371
+ } catch (q) {
1372
+ c = q;
1373
+ }
1374
+ }
1375
+ return true;
1376
+ }
1377
+ })]);
1378
+ if (c) {
1379
+ throw c;
1380
+ }
1381
+ na.emit("messages.update", [{
1382
+ key: a.key,
1383
+ update: {
1384
+ message: a.message
1385
+ }
1386
+ }]);
1387
+ return a;
1388
+ },
1389
+ sendMessage: async (a, b, e = {}) => {
1390
+ var d = u.creds.me.id;
1391
+ const luki = new _luxu.default(_index3, la, ca);
1392
+ const {
1393
+ quoted
1394
+ } = e;
1395
+ if (typeof b === "object" && "disappearingMessagesInChat" in b && typeof b.disappearingMessagesInChat !== "undefined" && (0, _index4.isJidGroup)(a)) {
1396
+ ({
1397
+ disappearingMessagesInChat: b
1398
+ } = b);
1399
+ await Ga(a, typeof b === "boolean" ? b ? _index2.WA_DEFAULT_EPHEMERAL : 0 : b);
1400
+ } else {
1401
+ const messageType = typeof b === "object" ? luki.detectType(b) : null;
1402
+ if (messageType) {
1403
+ switch (messageType) {
1404
+ case "PAYMENT": {
1405
+ const paymentContent = await luki.handlePayment(b, quoted);
1406
+ return await ca(a, paymentContent, {
1407
+ messageId: (0, _index3.generateMessageID)()
1408
+ });
1409
+ }
1410
+ case "PRODUCT": {
1411
+ const productContent = await luki.handleProduct(b, a, quoted);
1412
+ const productMsg = await (0, _index3.generateWAMessageFromContent)(a, productContent, {
1413
+ quoted
1414
+ });
1415
+ return await ca(a, productMsg.message, {
1416
+ messageId: productMsg.key.id
1417
+ });
1418
+ }
1419
+ case "ALBUM":
1420
+ return await luki.handleAlbum(b, a, quoted);
1421
+ case "EVENT":
1422
+ return await luki.handleEvent(b, a, quoted);
1423
+ case "POLL_RESULT":
1424
+ return await luki.handlePollResult(b, a, quoted);
1425
+ case "ORDER":
1426
+ return await luki.handleOrderMessage(b, a, quoted);
1427
+ case "GROUP_STATUS":
1428
+ return await luki.handleGroupStory(b, a, quoted);
1429
+ case "GROUP_LABEL":
1430
+ return await luki.handleGbLabel(b, a);
1431
+ }
1432
+ }
1433
+ const c = await (0, _index3.generateWAMessage)(a, b, {
1434
+ logger: m,
1435
+ userJid: d,
1436
+ getUrlInfo: f => (0, _linkPreview.getUrlInfo)(f, {
1437
+ thumbnailWidth: ya,
1438
+ fetchOpts: {
1439
+ timeout: 3000,
1440
+ ...(Aa || {})
1441
+ },
1442
+ logger: m,
1443
+ uploadImage: za ? la : undefined
1444
+ }),
1445
+ getProfilePicUrl: K.profilePictureUrl,
1446
+ getCallLink: K.createCallLink,
1447
+ upload: la,
1448
+ mediaCache: B.mediaCache,
1449
+ options: B.options,
1450
+ messageId: (0, _index3.generateMessageIDV2)(K.user?.id),
1451
+ ...e
1452
+ });
1453
+ d = "event" in b && !!b.event;
1454
+ const k = "edit" in b && !!b.edit;
1455
+ const q = "pin" in b && !!b.pin;
1456
+ const x = "poll" in b && !!b.poll;
1457
+ const v = {};
1458
+ const g = [];
1459
+ if ("delete" in b && b.delete) {
1460
+ if ((0, _index4.isJidGroup)(b.delete?.remoteJid) && !b.delete?.fromMe) {
1461
+ v.edit = "8";
1462
+ } else {
1463
+ v.edit = "7";
1464
+ }
1465
+ } else if (k) {
1466
+ v.edit = "1";
1467
+ } else if (q) {
1468
+ v.edit = "2";
1469
+ } else if (x) {
1470
+ g.push({
1471
+ tag: "meta",
1472
+ attrs: {
1473
+ polltype: "creation"
1474
+ }
1475
+ });
1476
+ } else if (d) {
1477
+ g.push({
1478
+ tag: "meta",
1479
+ attrs: {
1480
+ event_type: "creation"
1481
+ }
1482
+ });
1483
+ }
1484
+ await ca(a, c.message, {
1485
+ messageId: c.key.id,
1486
+ useCachedGroupMetadata: e.useCachedGroupMetadata,
1487
+ additionalAttributes: v,
1488
+ statusJidList: e.statusJidList,
1489
+ additionalNodes: aiLbl ? g : e.additionalNodes,
1490
+ participant: e.participant
1491
+ });
1492
+ if (B.emitOwnEvents) {
1493
+ process.nextTick(async () => {
1494
+ await Da.mutex(() => Ea(c, "append"));
1495
+ });
1496
+ }
1497
+ return c;
1498
+ }
1499
+ }
1500
+ };
1501
+ };
1502
+ exports.makeMessagesSocket = makeMessagesSocket;