@lynovratech/baileys 1.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 (787) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1312 -0
  3. package/WAProto/GenerateStatics.sh +3 -0
  4. package/WAProto/WAProto.proto +5479 -0
  5. package/WAProto/fix-imports.js +81 -0
  6. package/WAProto/index.d.ts +14017 -0
  7. package/WAProto/index.js +97687 -0
  8. package/engine-requirements.js +10 -0
  9. package/lib/cjs/Defaults/index.d.ts +74 -0
  10. package/lib/cjs/Defaults/index.d.ts.map +1 -0
  11. package/lib/cjs/Defaults/index.js +134 -0
  12. package/lib/cjs/Defaults/index.js.map +1 -0
  13. package/lib/cjs/Signal/Group/ciphertext-message.d.ts +10 -0
  14. package/lib/cjs/Signal/Group/ciphertext-message.d.ts.map +1 -0
  15. package/lib/cjs/Signal/Group/ciphertext-message.js +16 -0
  16. package/lib/cjs/Signal/Group/ciphertext-message.js.map +1 -0
  17. package/lib/cjs/Signal/Group/group-session-builder.d.ts +15 -0
  18. package/lib/cjs/Signal/Group/group-session-builder.d.ts.map +1 -0
  19. package/lib/cjs/Signal/Group/group-session-builder.js +65 -0
  20. package/lib/cjs/Signal/Group/group-session-builder.js.map +1 -0
  21. package/lib/cjs/Signal/Group/group_cipher.d.ts +17 -0
  22. package/lib/cjs/Signal/Group/group_cipher.d.ts.map +1 -0
  23. package/lib/cjs/Signal/Group/group_cipher.js +83 -0
  24. package/lib/cjs/Signal/Group/group_cipher.js.map +1 -0
  25. package/lib/cjs/Signal/Group/index.d.ts +12 -0
  26. package/lib/cjs/Signal/Group/index.d.ts.map +1 -0
  27. package/lib/cjs/Signal/Group/index.js +58 -0
  28. package/lib/cjs/Signal/Group/index.js.map +1 -0
  29. package/lib/cjs/Signal/Group/keyhelper.d.ts +11 -0
  30. package/lib/cjs/Signal/Group/keyhelper.d.ts.map +1 -0
  31. package/lib/cjs/Signal/Group/keyhelper.js +56 -0
  32. package/lib/cjs/Signal/Group/keyhelper.js.map +1 -0
  33. package/lib/cjs/Signal/Group/sender-chain-key.d.ts +14 -0
  34. package/lib/cjs/Signal/Group/sender-chain-key.d.ts.map +1 -0
  35. package/lib/cjs/Signal/Group/sender-chain-key.js +30 -0
  36. package/lib/cjs/Signal/Group/sender-chain-key.js.map +1 -0
  37. package/lib/cjs/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  38. package/lib/cjs/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  39. package/lib/cjs/Signal/Group/sender-key-distribution-message.js +67 -0
  40. package/lib/cjs/Signal/Group/sender-key-distribution-message.js.map +1 -0
  41. package/lib/cjs/Signal/Group/sender-key-message.d.ts +19 -0
  42. package/lib/cjs/Signal/Group/sender-key-message.d.ts.map +1 -0
  43. package/lib/cjs/Signal/Group/sender-key-message.js +70 -0
  44. package/lib/cjs/Signal/Group/sender-key-message.js.map +1 -0
  45. package/lib/cjs/Signal/Group/sender-key-name.d.ts +18 -0
  46. package/lib/cjs/Signal/Group/sender-key-name.d.ts.map +1 -0
  47. package/lib/cjs/Signal/Group/sender-key-name.js +52 -0
  48. package/lib/cjs/Signal/Group/sender-key-name.js.map +1 -0
  49. package/lib/cjs/Signal/Group/sender-key-record.d.ts +31 -0
  50. package/lib/cjs/Signal/Group/sender-key-record.d.ts.map +1 -0
  51. package/lib/cjs/Signal/Group/sender-key-record.js +45 -0
  52. package/lib/cjs/Signal/Group/sender-key-record.js.map +1 -0
  53. package/lib/cjs/Signal/Group/sender-key-state.d.ts +39 -0
  54. package/lib/cjs/Signal/Group/sender-key-state.d.ts.map +1 -0
  55. package/lib/cjs/Signal/Group/sender-key-state.js +88 -0
  56. package/lib/cjs/Signal/Group/sender-key-state.js.map +1 -0
  57. package/lib/cjs/Signal/Group/sender-message-key.d.ts +12 -0
  58. package/lib/cjs/Signal/Group/sender-message-key.d.ts.map +1 -0
  59. package/lib/cjs/Signal/Group/sender-message-key.js +30 -0
  60. package/lib/cjs/Signal/Group/sender-message-key.js.map +1 -0
  61. package/lib/cjs/Signal/jid-mapping.d.ts +50 -0
  62. package/lib/cjs/Signal/jid-mapping.d.ts.map +1 -0
  63. package/lib/cjs/Signal/jid-mapping.js +218 -0
  64. package/lib/cjs/Signal/jid-mapping.js.map +1 -0
  65. package/lib/cjs/Signal/libsignal.d.ts +7 -0
  66. package/lib/cjs/Signal/libsignal.d.ts.map +1 -0
  67. package/lib/cjs/Signal/libsignal.js +447 -0
  68. package/lib/cjs/Signal/libsignal.js.map +1 -0
  69. package/lib/cjs/Signal/lid-mapping.d.ts +6 -0
  70. package/lib/cjs/Signal/lid-mapping.d.ts.map +1 -0
  71. package/lib/cjs/Signal/lid-mapping.js +10 -0
  72. package/lib/cjs/Signal/lid-mapping.js.map +1 -0
  73. package/lib/cjs/Socket/Client/index.d.ts +3 -0
  74. package/lib/cjs/Socket/Client/index.d.ts.map +1 -0
  75. package/lib/cjs/Socket/Client/index.js +19 -0
  76. package/lib/cjs/Socket/Client/index.js.map +1 -0
  77. package/lib/cjs/Socket/Client/types.d.ts +16 -0
  78. package/lib/cjs/Socket/Client/types.d.ts.map +1 -0
  79. package/lib/cjs/Socket/Client/types.js +14 -0
  80. package/lib/cjs/Socket/Client/types.js.map +1 -0
  81. package/lib/cjs/Socket/Client/websocket.d.ts +13 -0
  82. package/lib/cjs/Socket/Client/websocket.d.ts.map +1 -0
  83. package/lib/cjs/Socket/Client/websocket.js +61 -0
  84. package/lib/cjs/Socket/Client/websocket.js.map +1 -0
  85. package/lib/cjs/Socket/business.d.ts +202 -0
  86. package/lib/cjs/Socket/business.d.ts.map +1 -0
  87. package/lib/cjs/Socket/business.js +383 -0
  88. package/lib/cjs/Socket/business.js.map +1 -0
  89. package/lib/cjs/Socket/chats.d.ts +111 -0
  90. package/lib/cjs/Socket/chats.d.ts.map +1 -0
  91. package/lib/cjs/Socket/chats.js +1006 -0
  92. package/lib/cjs/Socket/chats.js.map +1 -0
  93. package/lib/cjs/Socket/communities.d.ts +258 -0
  94. package/lib/cjs/Socket/communities.d.ts.map +1 -0
  95. package/lib/cjs/Socket/communities.js +439 -0
  96. package/lib/cjs/Socket/communities.js.map +1 -0
  97. package/lib/cjs/Socket/groups.d.ts +150 -0
  98. package/lib/cjs/Socket/groups.d.ts.map +1 -0
  99. package/lib/cjs/Socket/groups.js +335 -0
  100. package/lib/cjs/Socket/groups.js.map +1 -0
  101. package/lib/cjs/Socket/index.d.ts +245 -0
  102. package/lib/cjs/Socket/index.d.ts.map +1 -0
  103. package/lib/cjs/Socket/index.js +14 -0
  104. package/lib/cjs/Socket/index.js.map +1 -0
  105. package/lib/cjs/Socket/messages-recv.d.ts +187 -0
  106. package/lib/cjs/Socket/messages-recv.d.ts.map +1 -0
  107. package/lib/cjs/Socket/messages-recv.js +1325 -0
  108. package/lib/cjs/Socket/messages-recv.js.map +1 -0
  109. package/lib/cjs/Socket/messages-send.d.ts +183 -0
  110. package/lib/cjs/Socket/messages-send.d.ts.map +1 -0
  111. package/lib/cjs/Socket/messages-send.js +1046 -0
  112. package/lib/cjs/Socket/messages-send.js.map +1 -0
  113. package/lib/cjs/Socket/mex.d.ts +3 -0
  114. package/lib/cjs/Socket/mex.d.ts.map +1 -0
  115. package/lib/cjs/Socket/mex.js +46 -0
  116. package/lib/cjs/Socket/mex.js.map +1 -0
  117. package/lib/cjs/Socket/newsletter.d.ts +160 -0
  118. package/lib/cjs/Socket/newsletter.d.ts.map +1 -0
  119. package/lib/cjs/Socket/newsletter.js +185 -0
  120. package/lib/cjs/Socket/newsletter.js.map +1 -0
  121. package/lib/cjs/Socket/socket.d.ts +55 -0
  122. package/lib/cjs/Socket/socket.d.ts.map +1 -0
  123. package/lib/cjs/Socket/socket.js +940 -0
  124. package/lib/cjs/Socket/socket.js.map +1 -0
  125. package/lib/cjs/Types/Auth.d.ts +126 -0
  126. package/lib/cjs/Types/Auth.d.ts.map +1 -0
  127. package/lib/cjs/Types/Auth.js +3 -0
  128. package/lib/cjs/Types/Auth.js.map +1 -0
  129. package/lib/cjs/Types/Bussines.d.ts +25 -0
  130. package/lib/cjs/Types/Bussines.d.ts.map +1 -0
  131. package/lib/cjs/Types/Bussines.js +3 -0
  132. package/lib/cjs/Types/Bussines.js.map +1 -0
  133. package/lib/cjs/Types/Call.d.ts +15 -0
  134. package/lib/cjs/Types/Call.d.ts.map +1 -0
  135. package/lib/cjs/Types/Call.js +3 -0
  136. package/lib/cjs/Types/Call.js.map +1 -0
  137. package/lib/cjs/Types/Chat.d.ts +123 -0
  138. package/lib/cjs/Types/Chat.d.ts.map +1 -0
  139. package/lib/cjs/Types/Chat.js +11 -0
  140. package/lib/cjs/Types/Chat.js.map +1 -0
  141. package/lib/cjs/Types/Contact.d.ts +24 -0
  142. package/lib/cjs/Types/Contact.d.ts.map +1 -0
  143. package/lib/cjs/Types/Contact.js +3 -0
  144. package/lib/cjs/Types/Contact.js.map +1 -0
  145. package/lib/cjs/Types/Events.d.ts +241 -0
  146. package/lib/cjs/Types/Events.d.ts.map +1 -0
  147. package/lib/cjs/Types/Events.js +3 -0
  148. package/lib/cjs/Types/Events.js.map +1 -0
  149. package/lib/cjs/Types/GroupMetadata.d.ts +67 -0
  150. package/lib/cjs/Types/GroupMetadata.d.ts.map +1 -0
  151. package/lib/cjs/Types/GroupMetadata.js +3 -0
  152. package/lib/cjs/Types/GroupMetadata.js.map +1 -0
  153. package/lib/cjs/Types/Label.d.ts +47 -0
  154. package/lib/cjs/Types/Label.d.ts.map +1 -0
  155. package/lib/cjs/Types/Label.js +28 -0
  156. package/lib/cjs/Types/Label.js.map +1 -0
  157. package/lib/cjs/Types/LabelAssociation.d.ts +30 -0
  158. package/lib/cjs/Types/LabelAssociation.d.ts.map +1 -0
  159. package/lib/cjs/Types/LabelAssociation.js +10 -0
  160. package/lib/cjs/Types/LabelAssociation.js.map +1 -0
  161. package/lib/cjs/Types/Message.d.ts +310 -0
  162. package/lib/cjs/Types/Message.d.ts.map +1 -0
  163. package/lib/cjs/Types/Message.js +16 -0
  164. package/lib/cjs/Types/Message.js.map +1 -0
  165. package/lib/cjs/Types/Newsletter.d.ts +135 -0
  166. package/lib/cjs/Types/Newsletter.d.ts.map +1 -0
  167. package/lib/cjs/Types/Newsletter.js +34 -0
  168. package/lib/cjs/Types/Newsletter.js.map +1 -0
  169. package/lib/cjs/Types/Product.d.ts +79 -0
  170. package/lib/cjs/Types/Product.d.ts.map +1 -0
  171. package/lib/cjs/Types/Product.js +3 -0
  172. package/lib/cjs/Types/Product.js.map +1 -0
  173. package/lib/cjs/Types/Signal.d.ts +76 -0
  174. package/lib/cjs/Types/Signal.d.ts.map +1 -0
  175. package/lib/cjs/Types/Signal.js +3 -0
  176. package/lib/cjs/Types/Signal.js.map +1 -0
  177. package/lib/cjs/Types/Socket.d.ts +135 -0
  178. package/lib/cjs/Types/Socket.d.ts.map +1 -0
  179. package/lib/cjs/Types/Socket.js +3 -0
  180. package/lib/cjs/Types/Socket.js.map +1 -0
  181. package/lib/cjs/Types/State.d.ts +39 -0
  182. package/lib/cjs/Types/State.d.ts.map +1 -0
  183. package/lib/cjs/Types/State.js +15 -0
  184. package/lib/cjs/Types/State.js.map +1 -0
  185. package/lib/cjs/Types/USync.d.ts +26 -0
  186. package/lib/cjs/Types/USync.d.ts.map +1 -0
  187. package/lib/cjs/Types/USync.js +3 -0
  188. package/lib/cjs/Types/USync.js.map +1 -0
  189. package/lib/cjs/Types/index.d.ts +65 -0
  190. package/lib/cjs/Types/index.d.ts.map +1 -0
  191. package/lib/cjs/Types/index.js +43 -0
  192. package/lib/cjs/Types/index.js.map +1 -0
  193. package/lib/cjs/Utils/auth-utils.d.ts +19 -0
  194. package/lib/cjs/Utils/auth-utils.d.ts.map +1 -0
  195. package/lib/cjs/Utils/auth-utils.js +299 -0
  196. package/lib/cjs/Utils/auth-utils.js.map +1 -0
  197. package/lib/cjs/Utils/browser-utils.d.ts +4 -0
  198. package/lib/cjs/Utils/browser-utils.d.ts.map +1 -0
  199. package/lib/cjs/Utils/browser-utils.js +32 -0
  200. package/lib/cjs/Utils/browser-utils.js.map +1 -0
  201. package/lib/cjs/Utils/business.d.ts +23 -0
  202. package/lib/cjs/Utils/business.d.ts.map +1 -0
  203. package/lib/cjs/Utils/business.js +241 -0
  204. package/lib/cjs/Utils/business.js.map +1 -0
  205. package/lib/cjs/Utils/chat-utils.d.ts +70 -0
  206. package/lib/cjs/Utils/chat-utils.d.ts.map +1 -0
  207. package/lib/cjs/Utils/chat-utils.js +826 -0
  208. package/lib/cjs/Utils/chat-utils.js.map +1 -0
  209. package/lib/cjs/Utils/crypto.d.ts +37 -0
  210. package/lib/cjs/Utils/crypto.d.ts.map +1 -0
  211. package/lib/cjs/Utils/crypto.js +169 -0
  212. package/lib/cjs/Utils/crypto.js.map +1 -0
  213. package/lib/cjs/Utils/decode-wa-message.d.ts +48 -0
  214. package/lib/cjs/Utils/decode-wa-message.d.ts.map +1 -0
  215. package/lib/cjs/Utils/decode-wa-message.js +291 -0
  216. package/lib/cjs/Utils/decode-wa-message.js.map +1 -0
  217. package/lib/cjs/Utils/event-buffer.d.ts +34 -0
  218. package/lib/cjs/Utils/event-buffer.d.ts.map +1 -0
  219. package/lib/cjs/Utils/event-buffer.js +581 -0
  220. package/lib/cjs/Utils/event-buffer.js.map +1 -0
  221. package/lib/cjs/Utils/generics.d.ts +91 -0
  222. package/lib/cjs/Utils/generics.d.ts.map +1 -0
  223. package/lib/cjs/Utils/generics.js +416 -0
  224. package/lib/cjs/Utils/generics.js.map +1 -0
  225. package/lib/cjs/Utils/history.d.ts +22 -0
  226. package/lib/cjs/Utils/history.d.ts.map +1 -0
  227. package/lib/cjs/Utils/history.js +138 -0
  228. package/lib/cjs/Utils/history.js.map +1 -0
  229. package/lib/cjs/Utils/identity-change-handler.d.ts +38 -0
  230. package/lib/cjs/Utils/identity-change-handler.d.ts.map +1 -0
  231. package/lib/cjs/Utils/identity-change-handler.js +52 -0
  232. package/lib/cjs/Utils/identity-change-handler.js.map +1 -0
  233. package/lib/cjs/Utils/index.d.ts +21 -0
  234. package/lib/cjs/Utils/index.d.ts.map +1 -0
  235. package/lib/cjs/Utils/index.js +37 -0
  236. package/lib/cjs/Utils/index.js.map +1 -0
  237. package/lib/cjs/Utils/link-preview.d.ts +21 -0
  238. package/lib/cjs/Utils/link-preview.d.ts.map +1 -0
  239. package/lib/cjs/Utils/link-preview.js +122 -0
  240. package/lib/cjs/Utils/link-preview.js.map +1 -0
  241. package/lib/cjs/Utils/logger.d.ts +13 -0
  242. package/lib/cjs/Utils/logger.d.ts.map +1 -0
  243. package/lib/cjs/Utils/logger.js +8 -0
  244. package/lib/cjs/Utils/logger.js.map +1 -0
  245. package/lib/cjs/Utils/lt-hash.d.ts +8 -0
  246. package/lib/cjs/Utils/lt-hash.d.ts.map +1 -0
  247. package/lib/cjs/Utils/lt-hash.js +11 -0
  248. package/lib/cjs/Utils/lt-hash.js.map +1 -0
  249. package/lib/cjs/Utils/make-mutex.d.ts +9 -0
  250. package/lib/cjs/Utils/make-mutex.d.ts.map +1 -0
  251. package/lib/cjs/Utils/make-mutex.js +38 -0
  252. package/lib/cjs/Utils/make-mutex.js.map +1 -0
  253. package/lib/cjs/Utils/message-retry-manager.d.ts +110 -0
  254. package/lib/cjs/Utils/message-retry-manager.d.ts.map +1 -0
  255. package/lib/cjs/Utils/message-retry-manager.js +229 -0
  256. package/lib/cjs/Utils/message-retry-manager.js.map +1 -0
  257. package/lib/cjs/Utils/messages-media.d.ts +130 -0
  258. package/lib/cjs/Utils/messages-media.d.ts.map +1 -0
  259. package/lib/cjs/Utils/messages-media.js +835 -0
  260. package/lib/cjs/Utils/messages-media.js.map +1 -0
  261. package/lib/cjs/Utils/messages.d.ts +91 -0
  262. package/lib/cjs/Utils/messages.d.ts.map +1 -0
  263. package/lib/cjs/Utils/messages.js +902 -0
  264. package/lib/cjs/Utils/messages.js.map +1 -0
  265. package/lib/cjs/Utils/noise-handler.d.ts +20 -0
  266. package/lib/cjs/Utils/noise-handler.d.ts.map +1 -0
  267. package/lib/cjs/Utils/noise-handler.js +205 -0
  268. package/lib/cjs/Utils/noise-handler.js.map +1 -0
  269. package/lib/cjs/Utils/offline-node-processor.d.ts +17 -0
  270. package/lib/cjs/Utils/offline-node-processor.d.ts.map +1 -0
  271. package/lib/cjs/Utils/offline-node-processor.js +43 -0
  272. package/lib/cjs/Utils/offline-node-processor.js.map +1 -0
  273. package/lib/cjs/Utils/pre-key-manager.d.ts +28 -0
  274. package/lib/cjs/Utils/pre-key-manager.d.ts.map +1 -0
  275. package/lib/cjs/Utils/pre-key-manager.js +113 -0
  276. package/lib/cjs/Utils/pre-key-manager.js.map +1 -0
  277. package/lib/cjs/Utils/process-message.d.ts +60 -0
  278. package/lib/cjs/Utils/process-message.d.ts.map +1 -0
  279. package/lib/cjs/Utils/process-message.js +539 -0
  280. package/lib/cjs/Utils/process-message.js.map +1 -0
  281. package/lib/cjs/Utils/reporting-utils.d.ts +11 -0
  282. package/lib/cjs/Utils/reporting-utils.d.ts.map +1 -0
  283. package/lib/cjs/Utils/reporting-utils.js +262 -0
  284. package/lib/cjs/Utils/reporting-utils.js.map +1 -0
  285. package/lib/cjs/Utils/signal.d.ts +34 -0
  286. package/lib/cjs/Utils/signal.d.ts.map +1 -0
  287. package/lib/cjs/Utils/signal.js +171 -0
  288. package/lib/cjs/Utils/signal.js.map +1 -0
  289. package/lib/cjs/Utils/stanza-ack.d.ts +11 -0
  290. package/lib/cjs/Utils/stanza-ack.d.ts.map +1 -0
  291. package/lib/cjs/Utils/stanza-ack.js +41 -0
  292. package/lib/cjs/Utils/stanza-ack.js.map +1 -0
  293. package/lib/cjs/Utils/sync-action-utils.d.ts +19 -0
  294. package/lib/cjs/Utils/sync-action-utils.d.ts.map +1 -0
  295. package/lib/cjs/Utils/sync-action-utils.js +52 -0
  296. package/lib/cjs/Utils/sync-action-utils.js.map +1 -0
  297. package/lib/cjs/Utils/tc-token-utils.d.ts +12 -0
  298. package/lib/cjs/Utils/tc-token-utils.d.ts.map +1 -0
  299. package/lib/cjs/Utils/tc-token-utils.js +21 -0
  300. package/lib/cjs/Utils/tc-token-utils.js.map +1 -0
  301. package/lib/cjs/Utils/use-multi-file-auth-state.d.ts +13 -0
  302. package/lib/cjs/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  303. package/lib/cjs/Utils/use-multi-file-auth-state.js +125 -0
  304. package/lib/cjs/Utils/use-multi-file-auth-state.js.map +1 -0
  305. package/lib/cjs/Utils/validate-connection.d.ts +11 -0
  306. package/lib/cjs/Utils/validate-connection.d.ts.map +1 -0
  307. package/lib/cjs/Utils/validate-connection.js +209 -0
  308. package/lib/cjs/Utils/validate-connection.js.map +1 -0
  309. package/lib/cjs/WABinary/constants.d.ts +28 -0
  310. package/lib/cjs/WABinary/constants.d.ts.map +1 -0
  311. package/lib/cjs/WABinary/constants.js +1304 -0
  312. package/lib/cjs/WABinary/constants.js.map +1 -0
  313. package/lib/cjs/WABinary/decode.d.ts +7 -0
  314. package/lib/cjs/WABinary/decode.d.ts.map +1 -0
  315. package/lib/cjs/WABinary/decode.js +301 -0
  316. package/lib/cjs/WABinary/decode.js.map +1 -0
  317. package/lib/cjs/WABinary/encode.d.ts +3 -0
  318. package/lib/cjs/WABinary/encode.d.ts.map +1 -0
  319. package/lib/cjs/WABinary/encode.js +257 -0
  320. package/lib/cjs/WABinary/encode.js.map +1 -0
  321. package/lib/cjs/WABinary/generic-utils.d.ts +15 -0
  322. package/lib/cjs/WABinary/generic-utils.d.ts.map +1 -0
  323. package/lib/cjs/WABinary/generic-utils.js +125 -0
  324. package/lib/cjs/WABinary/generic-utils.js.map +1 -0
  325. package/lib/cjs/WABinary/index.d.ts +6 -0
  326. package/lib/cjs/WABinary/index.d.ts.map +1 -0
  327. package/lib/cjs/WABinary/index.js +22 -0
  328. package/lib/cjs/WABinary/index.js.map +1 -0
  329. package/lib/cjs/WABinary/jid-utils.d.ts +48 -0
  330. package/lib/cjs/WABinary/jid-utils.d.ts.map +1 -0
  331. package/lib/cjs/WABinary/jid-utils.js +115 -0
  332. package/lib/cjs/WABinary/jid-utils.js.map +1 -0
  333. package/lib/cjs/WABinary/types.d.ts +19 -0
  334. package/lib/cjs/WABinary/types.d.ts.map +1 -0
  335. package/lib/cjs/WABinary/types.js +3 -0
  336. package/lib/cjs/WABinary/types.js.map +1 -0
  337. package/lib/cjs/WAM/BinaryInfo.d.ts +9 -0
  338. package/lib/cjs/WAM/BinaryInfo.d.ts.map +1 -0
  339. package/lib/cjs/WAM/BinaryInfo.js +14 -0
  340. package/lib/cjs/WAM/BinaryInfo.js.map +1 -0
  341. package/lib/cjs/WAM/constants.d.ts +40 -0
  342. package/lib/cjs/WAM/constants.d.ts.map +1 -0
  343. package/lib/cjs/WAM/constants.js +22856 -0
  344. package/lib/cjs/WAM/constants.js.map +1 -0
  345. package/lib/cjs/WAM/encode.d.ts +3 -0
  346. package/lib/cjs/WAM/encode.d.ts.map +1 -0
  347. package/lib/cjs/WAM/encode.js +153 -0
  348. package/lib/cjs/WAM/encode.js.map +1 -0
  349. package/lib/cjs/WAM/index.d.ts +4 -0
  350. package/lib/cjs/WAM/index.d.ts.map +1 -0
  351. package/lib/cjs/WAM/index.js +20 -0
  352. package/lib/cjs/WAM/index.js.map +1 -0
  353. package/lib/cjs/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  354. package/lib/cjs/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  355. package/lib/cjs/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  356. package/lib/cjs/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  357. package/lib/cjs/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  358. package/lib/cjs/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  359. package/lib/cjs/WAUSync/Protocols/USyncDeviceProtocol.js +58 -0
  360. package/lib/cjs/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  361. package/lib/cjs/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  362. package/lib/cjs/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  363. package/lib/cjs/WAUSync/Protocols/USyncDisappearingModeProtocol.js +31 -0
  364. package/lib/cjs/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  365. package/lib/cjs/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  366. package/lib/cjs/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  367. package/lib/cjs/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  368. package/lib/cjs/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  369. package/lib/cjs/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  370. package/lib/cjs/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  371. package/lib/cjs/WAUSync/Protocols/UsyncBotProfileProtocol.js +54 -0
  372. package/lib/cjs/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  373. package/lib/cjs/WAUSync/Protocols/UsyncLIDProtocol.d.ts +17 -0
  374. package/lib/cjs/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  375. package/lib/cjs/WAUSync/Protocols/UsyncLIDProtocol.js +33 -0
  376. package/lib/cjs/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  377. package/lib/cjs/WAUSync/Protocols/index.d.ts +5 -0
  378. package/lib/cjs/WAUSync/Protocols/index.d.ts.map +1 -0
  379. package/lib/cjs/WAUSync/Protocols/index.js +21 -0
  380. package/lib/cjs/WAUSync/Protocols/index.js.map +1 -0
  381. package/lib/cjs/WAUSync/USyncQuery.d.ts +29 -0
  382. package/lib/cjs/WAUSync/USyncQuery.d.ts.map +1 -0
  383. package/lib/cjs/WAUSync/USyncQuery.js +97 -0
  384. package/lib/cjs/WAUSync/USyncQuery.js.map +1 -0
  385. package/lib/cjs/WAUSync/USyncUser.d.ts +13 -0
  386. package/lib/cjs/WAUSync/USyncUser.d.ts.map +1 -0
  387. package/lib/cjs/WAUSync/USyncUser.js +27 -0
  388. package/lib/cjs/WAUSync/USyncUser.js.map +1 -0
  389. package/lib/cjs/WAUSync/index.d.ts +4 -0
  390. package/lib/cjs/WAUSync/index.d.ts.map +1 -0
  391. package/lib/cjs/WAUSync/index.js +20 -0
  392. package/lib/cjs/WAUSync/index.js.map +1 -0
  393. package/lib/cjs/index.d.ts +12 -0
  394. package/lib/cjs/index.d.ts.map +1 -0
  395. package/lib/cjs/index.js +31 -0
  396. package/lib/cjs/index.js.map +1 -0
  397. package/lib/cjs/package.json +3 -0
  398. package/lib/esm/Defaults/index.d.ts +74 -0
  399. package/lib/esm/Defaults/index.d.ts.map +1 -0
  400. package/lib/esm/Defaults/index.js +128 -0
  401. package/lib/esm/Defaults/index.js.map +1 -0
  402. package/lib/esm/Signal/Group/ciphertext-message.d.ts +10 -0
  403. package/lib/esm/Signal/Group/ciphertext-message.d.ts.map +1 -0
  404. package/lib/esm/Signal/Group/ciphertext-message.js +12 -0
  405. package/lib/esm/Signal/Group/ciphertext-message.js.map +1 -0
  406. package/lib/esm/Signal/Group/group-session-builder.d.ts +15 -0
  407. package/lib/esm/Signal/Group/group-session-builder.d.ts.map +1 -0
  408. package/lib/esm/Signal/Group/group-session-builder.js +30 -0
  409. package/lib/esm/Signal/Group/group-session-builder.js.map +1 -0
  410. package/lib/esm/Signal/Group/group_cipher.d.ts +17 -0
  411. package/lib/esm/Signal/Group/group_cipher.d.ts.map +1 -0
  412. package/lib/esm/Signal/Group/group_cipher.js +82 -0
  413. package/lib/esm/Signal/Group/group_cipher.js.map +1 -0
  414. package/lib/esm/Signal/Group/index.d.ts +12 -0
  415. package/lib/esm/Signal/Group/index.d.ts.map +1 -0
  416. package/lib/esm/Signal/Group/index.js +12 -0
  417. package/lib/esm/Signal/Group/index.js.map +1 -0
  418. package/lib/esm/Signal/Group/keyhelper.d.ts +11 -0
  419. package/lib/esm/Signal/Group/keyhelper.d.ts.map +1 -0
  420. package/lib/esm/Signal/Group/keyhelper.js +18 -0
  421. package/lib/esm/Signal/Group/keyhelper.js.map +1 -0
  422. package/lib/esm/Signal/Group/sender-chain-key.d.ts +14 -0
  423. package/lib/esm/Signal/Group/sender-chain-key.d.ts.map +1 -0
  424. package/lib/esm/Signal/Group/sender-chain-key.js +26 -0
  425. package/lib/esm/Signal/Group/sender-chain-key.js.map +1 -0
  426. package/lib/esm/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  427. package/lib/esm/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  428. package/lib/esm/Signal/Group/sender-key-distribution-message.js +63 -0
  429. package/lib/esm/Signal/Group/sender-key-distribution-message.js.map +1 -0
  430. package/lib/esm/Signal/Group/sender-key-message.d.ts +19 -0
  431. package/lib/esm/Signal/Group/sender-key-message.d.ts.map +1 -0
  432. package/lib/esm/Signal/Group/sender-key-message.js +66 -0
  433. package/lib/esm/Signal/Group/sender-key-message.js.map +1 -0
  434. package/lib/esm/Signal/Group/sender-key-name.d.ts +18 -0
  435. package/lib/esm/Signal/Group/sender-key-name.d.ts.map +1 -0
  436. package/lib/esm/Signal/Group/sender-key-name.js +48 -0
  437. package/lib/esm/Signal/Group/sender-key-name.js.map +1 -0
  438. package/lib/esm/Signal/Group/sender-key-record.d.ts +31 -0
  439. package/lib/esm/Signal/Group/sender-key-record.d.ts.map +1 -0
  440. package/lib/esm/Signal/Group/sender-key-record.js +41 -0
  441. package/lib/esm/Signal/Group/sender-key-record.js.map +1 -0
  442. package/lib/esm/Signal/Group/sender-key-state.d.ts +39 -0
  443. package/lib/esm/Signal/Group/sender-key-state.d.ts.map +1 -0
  444. package/lib/esm/Signal/Group/sender-key-state.js +84 -0
  445. package/lib/esm/Signal/Group/sender-key-state.js.map +1 -0
  446. package/lib/esm/Signal/Group/sender-message-key.d.ts +12 -0
  447. package/lib/esm/Signal/Group/sender-message-key.d.ts.map +1 -0
  448. package/lib/esm/Signal/Group/sender-message-key.js +26 -0
  449. package/lib/esm/Signal/Group/sender-message-key.js.map +1 -0
  450. package/lib/esm/Signal/jid-mapping.d.ts +50 -0
  451. package/lib/esm/Signal/jid-mapping.d.ts.map +1 -0
  452. package/lib/esm/Signal/jid-mapping.js +214 -0
  453. package/lib/esm/Signal/jid-mapping.js.map +1 -0
  454. package/lib/esm/Signal/libsignal.d.ts +7 -0
  455. package/lib/esm/Signal/libsignal.d.ts.map +1 -0
  456. package/lib/esm/Signal/libsignal.js +413 -0
  457. package/lib/esm/Signal/libsignal.js.map +1 -0
  458. package/lib/esm/Signal/lid-mapping.d.ts +6 -0
  459. package/lib/esm/Signal/lid-mapping.d.ts.map +1 -0
  460. package/lib/esm/Signal/lid-mapping.js +6 -0
  461. package/lib/esm/Signal/lid-mapping.js.map +1 -0
  462. package/lib/esm/Socket/Client/index.d.ts +3 -0
  463. package/lib/esm/Socket/Client/index.d.ts.map +1 -0
  464. package/lib/esm/Socket/Client/index.js +3 -0
  465. package/lib/esm/Socket/Client/index.js.map +1 -0
  466. package/lib/esm/Socket/Client/types.d.ts +16 -0
  467. package/lib/esm/Socket/Client/types.d.ts.map +1 -0
  468. package/lib/esm/Socket/Client/types.js +11 -0
  469. package/lib/esm/Socket/Client/types.js.map +1 -0
  470. package/lib/esm/Socket/Client/websocket.d.ts +13 -0
  471. package/lib/esm/Socket/Client/websocket.d.ts.map +1 -0
  472. package/lib/esm/Socket/Client/websocket.js +54 -0
  473. package/lib/esm/Socket/Client/websocket.js.map +1 -0
  474. package/lib/esm/Socket/business.d.ts +202 -0
  475. package/lib/esm/Socket/business.d.ts.map +1 -0
  476. package/lib/esm/Socket/business.js +379 -0
  477. package/lib/esm/Socket/business.js.map +1 -0
  478. package/lib/esm/Socket/chats.d.ts +111 -0
  479. package/lib/esm/Socket/chats.d.ts.map +1 -0
  480. package/lib/esm/Socket/chats.js +999 -0
  481. package/lib/esm/Socket/chats.js.map +1 -0
  482. package/lib/esm/Socket/communities.d.ts +258 -0
  483. package/lib/esm/Socket/communities.d.ts.map +1 -0
  484. package/lib/esm/Socket/communities.js +431 -0
  485. package/lib/esm/Socket/communities.js.map +1 -0
  486. package/lib/esm/Socket/groups.d.ts +150 -0
  487. package/lib/esm/Socket/groups.d.ts.map +1 -0
  488. package/lib/esm/Socket/groups.js +330 -0
  489. package/lib/esm/Socket/groups.js.map +1 -0
  490. package/lib/esm/Socket/index.d.ts +245 -0
  491. package/lib/esm/Socket/index.d.ts.map +1 -0
  492. package/lib/esm/Socket/index.js +12 -0
  493. package/lib/esm/Socket/index.js.map +1 -0
  494. package/lib/esm/Socket/messages-recv.d.ts +187 -0
  495. package/lib/esm/Socket/messages-recv.d.ts.map +1 -0
  496. package/lib/esm/Socket/messages-recv.js +1319 -0
  497. package/lib/esm/Socket/messages-recv.js.map +1 -0
  498. package/lib/esm/Socket/messages-send.d.ts +183 -0
  499. package/lib/esm/Socket/messages-send.d.ts.map +1 -0
  500. package/lib/esm/Socket/messages-send.js +1039 -0
  501. package/lib/esm/Socket/messages-send.js.map +1 -0
  502. package/lib/esm/Socket/mex.d.ts +3 -0
  503. package/lib/esm/Socket/mex.d.ts.map +1 -0
  504. package/lib/esm/Socket/mex.js +42 -0
  505. package/lib/esm/Socket/mex.js.map +1 -0
  506. package/lib/esm/Socket/newsletter.d.ts +160 -0
  507. package/lib/esm/Socket/newsletter.d.ts.map +1 -0
  508. package/lib/esm/Socket/newsletter.js +181 -0
  509. package/lib/esm/Socket/newsletter.js.map +1 -0
  510. package/lib/esm/Socket/socket.d.ts +55 -0
  511. package/lib/esm/Socket/socket.d.ts.map +1 -0
  512. package/lib/esm/Socket/socket.js +936 -0
  513. package/lib/esm/Socket/socket.js.map +1 -0
  514. package/lib/esm/Types/Auth.d.ts +126 -0
  515. package/lib/esm/Types/Auth.d.ts.map +1 -0
  516. package/lib/esm/Types/Auth.js +2 -0
  517. package/lib/esm/Types/Auth.js.map +1 -0
  518. package/lib/esm/Types/Bussines.d.ts +25 -0
  519. package/lib/esm/Types/Bussines.d.ts.map +1 -0
  520. package/lib/esm/Types/Bussines.js +2 -0
  521. package/lib/esm/Types/Bussines.js.map +1 -0
  522. package/lib/esm/Types/Call.d.ts +15 -0
  523. package/lib/esm/Types/Call.d.ts.map +1 -0
  524. package/lib/esm/Types/Call.js +2 -0
  525. package/lib/esm/Types/Call.js.map +1 -0
  526. package/lib/esm/Types/Chat.d.ts +123 -0
  527. package/lib/esm/Types/Chat.d.ts.map +1 -0
  528. package/lib/esm/Types/Chat.js +8 -0
  529. package/lib/esm/Types/Chat.js.map +1 -0
  530. package/lib/esm/Types/Contact.d.ts +24 -0
  531. package/lib/esm/Types/Contact.d.ts.map +1 -0
  532. package/lib/esm/Types/Contact.js +2 -0
  533. package/lib/esm/Types/Contact.js.map +1 -0
  534. package/lib/esm/Types/Events.d.ts +241 -0
  535. package/lib/esm/Types/Events.d.ts.map +1 -0
  536. package/lib/esm/Types/Events.js +2 -0
  537. package/lib/esm/Types/Events.js.map +1 -0
  538. package/lib/esm/Types/GroupMetadata.d.ts +67 -0
  539. package/lib/esm/Types/GroupMetadata.d.ts.map +1 -0
  540. package/lib/esm/Types/GroupMetadata.js +2 -0
  541. package/lib/esm/Types/GroupMetadata.js.map +1 -0
  542. package/lib/esm/Types/Label.d.ts +47 -0
  543. package/lib/esm/Types/Label.d.ts.map +1 -0
  544. package/lib/esm/Types/Label.js +25 -0
  545. package/lib/esm/Types/Label.js.map +1 -0
  546. package/lib/esm/Types/LabelAssociation.d.ts +30 -0
  547. package/lib/esm/Types/LabelAssociation.d.ts.map +1 -0
  548. package/lib/esm/Types/LabelAssociation.js +7 -0
  549. package/lib/esm/Types/LabelAssociation.js.map +1 -0
  550. package/lib/esm/Types/Message.d.ts +310 -0
  551. package/lib/esm/Types/Message.d.ts.map +1 -0
  552. package/lib/esm/Types/Message.js +14 -0
  553. package/lib/esm/Types/Message.js.map +1 -0
  554. package/lib/esm/Types/Newsletter.d.ts +135 -0
  555. package/lib/esm/Types/Newsletter.d.ts.map +1 -0
  556. package/lib/esm/Types/Newsletter.js +31 -0
  557. package/lib/esm/Types/Newsletter.js.map +1 -0
  558. package/lib/esm/Types/Product.d.ts +79 -0
  559. package/lib/esm/Types/Product.d.ts.map +1 -0
  560. package/lib/esm/Types/Product.js +2 -0
  561. package/lib/esm/Types/Product.js.map +1 -0
  562. package/lib/esm/Types/Signal.d.ts +76 -0
  563. package/lib/esm/Types/Signal.d.ts.map +1 -0
  564. package/lib/esm/Types/Signal.js +2 -0
  565. package/lib/esm/Types/Signal.js.map +1 -0
  566. package/lib/esm/Types/Socket.d.ts +135 -0
  567. package/lib/esm/Types/Socket.d.ts.map +1 -0
  568. package/lib/esm/Types/Socket.js +3 -0
  569. package/lib/esm/Types/Socket.js.map +1 -0
  570. package/lib/esm/Types/State.d.ts +39 -0
  571. package/lib/esm/Types/State.d.ts.map +1 -0
  572. package/lib/esm/Types/State.js +13 -0
  573. package/lib/esm/Types/State.js.map +1 -0
  574. package/lib/esm/Types/USync.d.ts +26 -0
  575. package/lib/esm/Types/USync.d.ts.map +1 -0
  576. package/lib/esm/Types/USync.js +2 -0
  577. package/lib/esm/Types/USync.js.map +1 -0
  578. package/lib/esm/Types/index.d.ts +65 -0
  579. package/lib/esm/Types/index.d.ts.map +1 -0
  580. package/lib/esm/Types/index.js +26 -0
  581. package/lib/esm/Types/index.js.map +1 -0
  582. package/lib/esm/Utils/auth-utils.d.ts +19 -0
  583. package/lib/esm/Utils/auth-utils.d.ts.map +1 -0
  584. package/lib/esm/Utils/auth-utils.js +290 -0
  585. package/lib/esm/Utils/auth-utils.js.map +1 -0
  586. package/lib/esm/Utils/browser-utils.d.ts +4 -0
  587. package/lib/esm/Utils/browser-utils.d.ts.map +1 -0
  588. package/lib/esm/Utils/browser-utils.js +28 -0
  589. package/lib/esm/Utils/browser-utils.js.map +1 -0
  590. package/lib/esm/Utils/business.d.ts +23 -0
  591. package/lib/esm/Utils/business.d.ts.map +1 -0
  592. package/lib/esm/Utils/business.js +231 -0
  593. package/lib/esm/Utils/business.js.map +1 -0
  594. package/lib/esm/Utils/chat-utils.d.ts +70 -0
  595. package/lib/esm/Utils/chat-utils.d.ts.map +1 -0
  596. package/lib/esm/Utils/chat-utils.js +812 -0
  597. package/lib/esm/Utils/chat-utils.js.map +1 -0
  598. package/lib/esm/Utils/crypto.d.ts +37 -0
  599. package/lib/esm/Utils/crypto.d.ts.map +1 -0
  600. package/lib/esm/Utils/crypto.js +118 -0
  601. package/lib/esm/Utils/crypto.js.map +1 -0
  602. package/lib/esm/Utils/decode-wa-message.d.ts +48 -0
  603. package/lib/esm/Utils/decode-wa-message.d.ts.map +1 -0
  604. package/lib/esm/Utils/decode-wa-message.js +286 -0
  605. package/lib/esm/Utils/decode-wa-message.js.map +1 -0
  606. package/lib/esm/Utils/event-buffer.d.ts +34 -0
  607. package/lib/esm/Utils/event-buffer.d.ts.map +1 -0
  608. package/lib/esm/Utils/event-buffer.js +574 -0
  609. package/lib/esm/Utils/event-buffer.js.map +1 -0
  610. package/lib/esm/Utils/generics.d.ts +91 -0
  611. package/lib/esm/Utils/generics.d.ts.map +1 -0
  612. package/lib/esm/Utils/generics.js +384 -0
  613. package/lib/esm/Utils/generics.js.map +1 -0
  614. package/lib/esm/Utils/history.d.ts +22 -0
  615. package/lib/esm/Utils/history.d.ts.map +1 -0
  616. package/lib/esm/Utils/history.js +131 -0
  617. package/lib/esm/Utils/history.js.map +1 -0
  618. package/lib/esm/Utils/identity-change-handler.d.ts +38 -0
  619. package/lib/esm/Utils/identity-change-handler.d.ts.map +1 -0
  620. package/lib/esm/Utils/identity-change-handler.js +50 -0
  621. package/lib/esm/Utils/identity-change-handler.js.map +1 -0
  622. package/lib/esm/Utils/index.d.ts +21 -0
  623. package/lib/esm/Utils/index.d.ts.map +1 -0
  624. package/lib/esm/Utils/index.js +21 -0
  625. package/lib/esm/Utils/index.js.map +1 -0
  626. package/lib/esm/Utils/link-preview.d.ts +21 -0
  627. package/lib/esm/Utils/link-preview.d.ts.map +1 -0
  628. package/lib/esm/Utils/link-preview.js +85 -0
  629. package/lib/esm/Utils/link-preview.js.map +1 -0
  630. package/lib/esm/Utils/logger.d.ts +13 -0
  631. package/lib/esm/Utils/logger.d.ts.map +1 -0
  632. package/lib/esm/Utils/logger.js +3 -0
  633. package/lib/esm/Utils/logger.js.map +1 -0
  634. package/lib/esm/Utils/lt-hash.d.ts +8 -0
  635. package/lib/esm/Utils/lt-hash.d.ts.map +1 -0
  636. package/lib/esm/Utils/lt-hash.js +8 -0
  637. package/lib/esm/Utils/lt-hash.js.map +1 -0
  638. package/lib/esm/Utils/make-mutex.d.ts +9 -0
  639. package/lib/esm/Utils/make-mutex.d.ts.map +1 -0
  640. package/lib/esm/Utils/make-mutex.js +33 -0
  641. package/lib/esm/Utils/make-mutex.js.map +1 -0
  642. package/lib/esm/Utils/message-retry-manager.d.ts +110 -0
  643. package/lib/esm/Utils/message-retry-manager.d.ts.map +1 -0
  644. package/lib/esm/Utils/message-retry-manager.js +225 -0
  645. package/lib/esm/Utils/message-retry-manager.js.map +1 -0
  646. package/lib/esm/Utils/messages-media.d.ts +130 -0
  647. package/lib/esm/Utils/messages-media.d.ts.map +1 -0
  648. package/lib/esm/Utils/messages-media.js +774 -0
  649. package/lib/esm/Utils/messages-media.js.map +1 -0
  650. package/lib/esm/Utils/messages.d.ts +91 -0
  651. package/lib/esm/Utils/messages.d.ts.map +1 -0
  652. package/lib/esm/Utils/messages.js +878 -0
  653. package/lib/esm/Utils/messages.js.map +1 -0
  654. package/lib/esm/Utils/noise-handler.d.ts +20 -0
  655. package/lib/esm/Utils/noise-handler.d.ts.map +1 -0
  656. package/lib/esm/Utils/noise-handler.js +201 -0
  657. package/lib/esm/Utils/noise-handler.js.map +1 -0
  658. package/lib/esm/Utils/offline-node-processor.d.ts +17 -0
  659. package/lib/esm/Utils/offline-node-processor.d.ts.map +1 -0
  660. package/lib/esm/Utils/offline-node-processor.js +40 -0
  661. package/lib/esm/Utils/offline-node-processor.js.map +1 -0
  662. package/lib/esm/Utils/pre-key-manager.d.ts +28 -0
  663. package/lib/esm/Utils/pre-key-manager.d.ts.map +1 -0
  664. package/lib/esm/Utils/pre-key-manager.js +106 -0
  665. package/lib/esm/Utils/pre-key-manager.js.map +1 -0
  666. package/lib/esm/Utils/process-message.d.ts +60 -0
  667. package/lib/esm/Utils/process-message.d.ts.map +1 -0
  668. package/lib/esm/Utils/process-message.js +530 -0
  669. package/lib/esm/Utils/process-message.js.map +1 -0
  670. package/lib/esm/Utils/reporting-utils.d.ts +11 -0
  671. package/lib/esm/Utils/reporting-utils.d.ts.map +1 -0
  672. package/lib/esm/Utils/reporting-utils.js +258 -0
  673. package/lib/esm/Utils/reporting-utils.js.map +1 -0
  674. package/lib/esm/Utils/signal.d.ts +34 -0
  675. package/lib/esm/Utils/signal.d.ts.map +1 -0
  676. package/lib/esm/Utils/signal.js +159 -0
  677. package/lib/esm/Utils/signal.js.map +1 -0
  678. package/lib/esm/Utils/stanza-ack.d.ts +11 -0
  679. package/lib/esm/Utils/stanza-ack.d.ts.map +1 -0
  680. package/lib/esm/Utils/stanza-ack.js +38 -0
  681. package/lib/esm/Utils/stanza-ack.js.map +1 -0
  682. package/lib/esm/Utils/sync-action-utils.d.ts +19 -0
  683. package/lib/esm/Utils/sync-action-utils.d.ts.map +1 -0
  684. package/lib/esm/Utils/sync-action-utils.js +48 -0
  685. package/lib/esm/Utils/sync-action-utils.js.map +1 -0
  686. package/lib/esm/Utils/tc-token-utils.d.ts +12 -0
  687. package/lib/esm/Utils/tc-token-utils.d.ts.map +1 -0
  688. package/lib/esm/Utils/tc-token-utils.js +18 -0
  689. package/lib/esm/Utils/tc-token-utils.js.map +1 -0
  690. package/lib/esm/Utils/use-multi-file-auth-state.d.ts +13 -0
  691. package/lib/esm/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  692. package/lib/esm/Utils/use-multi-file-auth-state.js +121 -0
  693. package/lib/esm/Utils/use-multi-file-auth-state.js.map +1 -0
  694. package/lib/esm/Utils/validate-connection.d.ts +11 -0
  695. package/lib/esm/Utils/validate-connection.d.ts.map +1 -0
  696. package/lib/esm/Utils/validate-connection.js +202 -0
  697. package/lib/esm/Utils/validate-connection.js.map +1 -0
  698. package/lib/esm/WABinary/constants.d.ts +28 -0
  699. package/lib/esm/WABinary/constants.d.ts.map +1 -0
  700. package/lib/esm/WABinary/constants.js +1301 -0
  701. package/lib/esm/WABinary/constants.js.map +1 -0
  702. package/lib/esm/WABinary/decode.d.ts +7 -0
  703. package/lib/esm/WABinary/decode.d.ts.map +1 -0
  704. package/lib/esm/WABinary/decode.js +262 -0
  705. package/lib/esm/WABinary/decode.js.map +1 -0
  706. package/lib/esm/WABinary/encode.d.ts +3 -0
  707. package/lib/esm/WABinary/encode.d.ts.map +1 -0
  708. package/lib/esm/WABinary/encode.js +220 -0
  709. package/lib/esm/WABinary/encode.js.map +1 -0
  710. package/lib/esm/WABinary/generic-utils.d.ts +15 -0
  711. package/lib/esm/WABinary/generic-utils.d.ts.map +1 -0
  712. package/lib/esm/WABinary/generic-utils.js +113 -0
  713. package/lib/esm/WABinary/generic-utils.js.map +1 -0
  714. package/lib/esm/WABinary/index.d.ts +6 -0
  715. package/lib/esm/WABinary/index.d.ts.map +1 -0
  716. package/lib/esm/WABinary/index.js +6 -0
  717. package/lib/esm/WABinary/index.js.map +1 -0
  718. package/lib/esm/WABinary/jid-utils.d.ts +48 -0
  719. package/lib/esm/WABinary/jid-utils.d.ts.map +1 -0
  720. package/lib/esm/WABinary/jid-utils.js +96 -0
  721. package/lib/esm/WABinary/jid-utils.js.map +1 -0
  722. package/lib/esm/WABinary/types.d.ts +19 -0
  723. package/lib/esm/WABinary/types.d.ts.map +1 -0
  724. package/lib/esm/WABinary/types.js +2 -0
  725. package/lib/esm/WABinary/types.js.map +1 -0
  726. package/lib/esm/WAM/BinaryInfo.d.ts +9 -0
  727. package/lib/esm/WAM/BinaryInfo.d.ts.map +1 -0
  728. package/lib/esm/WAM/BinaryInfo.js +10 -0
  729. package/lib/esm/WAM/BinaryInfo.js.map +1 -0
  730. package/lib/esm/WAM/constants.d.ts +40 -0
  731. package/lib/esm/WAM/constants.d.ts.map +1 -0
  732. package/lib/esm/WAM/constants.js +22853 -0
  733. package/lib/esm/WAM/constants.js.map +1 -0
  734. package/lib/esm/WAM/encode.d.ts +3 -0
  735. package/lib/esm/WAM/encode.d.ts.map +1 -0
  736. package/lib/esm/WAM/encode.js +150 -0
  737. package/lib/esm/WAM/encode.js.map +1 -0
  738. package/lib/esm/WAM/index.d.ts +4 -0
  739. package/lib/esm/WAM/index.d.ts.map +1 -0
  740. package/lib/esm/WAM/index.js +4 -0
  741. package/lib/esm/WAM/index.js.map +1 -0
  742. package/lib/esm/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  743. package/lib/esm/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  744. package/lib/esm/WAUSync/Protocols/USyncContactProtocol.js +29 -0
  745. package/lib/esm/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  746. package/lib/esm/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  747. package/lib/esm/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  748. package/lib/esm/WAUSync/Protocols/USyncDeviceProtocol.js +54 -0
  749. package/lib/esm/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  750. package/lib/esm/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  751. package/lib/esm/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  752. package/lib/esm/WAUSync/Protocols/USyncDisappearingModeProtocol.js +27 -0
  753. package/lib/esm/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  754. package/lib/esm/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  755. package/lib/esm/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  756. package/lib/esm/WAUSync/Protocols/USyncStatusProtocol.js +38 -0
  757. package/lib/esm/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  758. package/lib/esm/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  759. package/lib/esm/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  760. package/lib/esm/WAUSync/Protocols/UsyncBotProfileProtocol.js +51 -0
  761. package/lib/esm/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  762. package/lib/esm/WAUSync/Protocols/UsyncLIDProtocol.d.ts +17 -0
  763. package/lib/esm/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  764. package/lib/esm/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
  765. package/lib/esm/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  766. package/lib/esm/WAUSync/Protocols/index.d.ts +5 -0
  767. package/lib/esm/WAUSync/Protocols/index.d.ts.map +1 -0
  768. package/lib/esm/WAUSync/Protocols/index.js +5 -0
  769. package/lib/esm/WAUSync/Protocols/index.js.map +1 -0
  770. package/lib/esm/WAUSync/USyncQuery.d.ts +29 -0
  771. package/lib/esm/WAUSync/USyncQuery.d.ts.map +1 -0
  772. package/lib/esm/WAUSync/USyncQuery.js +94 -0
  773. package/lib/esm/WAUSync/USyncQuery.js.map +1 -0
  774. package/lib/esm/WAUSync/USyncUser.d.ts +13 -0
  775. package/lib/esm/WAUSync/USyncUser.d.ts.map +1 -0
  776. package/lib/esm/WAUSync/USyncUser.js +23 -0
  777. package/lib/esm/WAUSync/USyncUser.js.map +1 -0
  778. package/lib/esm/WAUSync/index.d.ts +4 -0
  779. package/lib/esm/WAUSync/index.d.ts.map +1 -0
  780. package/lib/esm/WAUSync/index.js +4 -0
  781. package/lib/esm/WAUSync/index.js.map +1 -0
  782. package/lib/esm/index.d.ts +12 -0
  783. package/lib/esm/index.d.ts.map +1 -0
  784. package/lib/esm/index.js +11 -0
  785. package/lib/esm/index.js.map +1 -0
  786. package/lib/esm/package.json +3 -0
  787. package/package.json +129 -0
@@ -0,0 +1,902 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertMediaContent = exports.downloadMediaMessage = exports.aggregateMessageKeysNotFromMe = exports.updateMessageWithEventResponse = exports.updateMessageWithPollUpdate = exports.updateMessageWithReaction = exports.updateMessageWithReceipt = exports.getDevice = exports.extractMessageContent = exports.normalizeMessageContent = exports.getContentType = exports.generateWAMessage = exports.generateWAMessageFromContent = exports.generateWAMessageContent = exports.hasNonNullishProperty = exports.generateForwardMessageContent = exports.prepareDisappearingMessageSettingContent = exports.prepareWAMessageMedia = exports.generateLinkPreviewIfRequired = exports.extractUrlFromText = void 0;
4
+ exports.getAggregateVotesInPollMessage = getAggregateVotesInPollMessage;
5
+ exports.getAggregateResponsesInEventMessage = getAggregateResponsesInEventMessage;
6
+ const boom_1 = require("@hapi/boom");
7
+ const crypto_1 = require("crypto");
8
+ const fs_1 = require("fs");
9
+ const index_js_1 = require("../../WAProto/index.js");
10
+ const Defaults_1 = require("../Defaults");
11
+ const Types_1 = require("../Types");
12
+ const WABinary_1 = require("../WABinary");
13
+ const crypto_2 = require("./crypto");
14
+ const generics_1 = require("./generics");
15
+ const messages_media_1 = require("./messages-media");
16
+ const reporting_utils_1 = require("./reporting-utils");
17
+ const MIMETYPE_MAP = {
18
+ image: 'image/jpeg',
19
+ video: 'video/mp4',
20
+ document: 'application/pdf',
21
+ audio: 'audio/ogg; codecs=opus',
22
+ sticker: 'image/webp',
23
+ 'product-catalog-image': 'image/jpeg'
24
+ };
25
+ const MessageTypeProto = {
26
+ image: Types_1.WAProto.Message.ImageMessage,
27
+ video: Types_1.WAProto.Message.VideoMessage,
28
+ audio: Types_1.WAProto.Message.AudioMessage,
29
+ sticker: Types_1.WAProto.Message.StickerMessage,
30
+ document: Types_1.WAProto.Message.DocumentMessage
31
+ };
32
+ /**
33
+ * Uses a regex to test whether the string contains a URL, and returns the URL if it does.
34
+ * @param text eg. hello https://google.com
35
+ * @returns the URL, eg. https://google.com
36
+ */
37
+ const extractUrlFromText = (text) => text.match(Defaults_1.URL_REGEX)?.[0];
38
+ exports.extractUrlFromText = extractUrlFromText;
39
+ const generateLinkPreviewIfRequired = async (text, getUrlInfo, logger) => {
40
+ const url = (0, exports.extractUrlFromText)(text);
41
+ if (!!getUrlInfo && url) {
42
+ try {
43
+ const urlInfo = await getUrlInfo(url);
44
+ return urlInfo;
45
+ }
46
+ catch (error) {
47
+ // ignore if fails
48
+ logger?.warn({ trace: error.stack }, 'url generation failed');
49
+ }
50
+ }
51
+ };
52
+ exports.generateLinkPreviewIfRequired = generateLinkPreviewIfRequired;
53
+ const assertColor = async (color) => {
54
+ let assertedColor;
55
+ if (typeof color === 'number') {
56
+ assertedColor = color > 0 ? color : 0xffffffff + Number(color) + 1;
57
+ }
58
+ else {
59
+ let hex = color.trim().replace('#', '');
60
+ if (hex.length <= 6) {
61
+ hex = 'FF' + hex.padStart(6, '0');
62
+ }
63
+ assertedColor = parseInt(hex, 16);
64
+ return assertedColor;
65
+ }
66
+ };
67
+ const prepareWAMessageMedia = async (message, options) => {
68
+ const logger = options.logger;
69
+ let mediaType;
70
+ for (const key of Defaults_1.MEDIA_KEYS) {
71
+ if (key in message) {
72
+ mediaType = key;
73
+ }
74
+ }
75
+ if (!mediaType) {
76
+ throw new boom_1.Boom('Invalid media type', { statusCode: 400 });
77
+ }
78
+ const uploadData = {
79
+ ...message,
80
+ media: message[mediaType]
81
+ };
82
+ delete uploadData[mediaType];
83
+ // check if cacheable + generate cache key
84
+ const cacheableKey = typeof uploadData.media === 'object' &&
85
+ 'url' in uploadData.media &&
86
+ !!uploadData.media.url &&
87
+ !!options.mediaCache &&
88
+ mediaType + ':' + uploadData.media.url.toString();
89
+ if (mediaType === 'document' && !uploadData.fileName) {
90
+ uploadData.fileName = 'file';
91
+ }
92
+ if (!uploadData.mimetype) {
93
+ uploadData.mimetype = MIMETYPE_MAP[mediaType];
94
+ }
95
+ if (cacheableKey) {
96
+ const mediaBuff = await options.mediaCache.get(cacheableKey);
97
+ if (mediaBuff) {
98
+ logger?.debug({ cacheableKey }, 'got media cache hit');
99
+ const obj = index_js_1.proto.Message.decode(mediaBuff);
100
+ const key = `${mediaType}Message`;
101
+ Object.assign(obj[key], { ...uploadData, media: undefined });
102
+ return obj;
103
+ }
104
+ }
105
+ const isNewsletter = !!options.jid && (0, WABinary_1.isJidNewsletter)(options.jid);
106
+ if (isNewsletter) {
107
+ logger?.info({ key: cacheableKey }, 'Preparing raw media for newsletter');
108
+ const { filePath, fileSha256, fileLength } = await (0, messages_media_1.getRawMediaUploadData)(uploadData.media, options.mediaTypeOverride || mediaType, logger);
109
+ const fileSha256B64 = fileSha256.toString('base64');
110
+ const { mediaUrl, directPath } = await options.upload(filePath, {
111
+ fileEncSha256B64: fileSha256B64,
112
+ mediaType: mediaType,
113
+ timeoutMs: options.mediaUploadTimeoutMs
114
+ });
115
+ await fs_1.promises.unlink(filePath);
116
+ const obj = Types_1.WAProto.Message.fromObject({
117
+ // todo: add more support here
118
+ [`${mediaType}Message`]: MessageTypeProto[mediaType].fromObject({
119
+ url: mediaUrl,
120
+ directPath,
121
+ fileSha256,
122
+ fileLength,
123
+ ...uploadData,
124
+ media: undefined
125
+ })
126
+ });
127
+ if (uploadData.ptv) {
128
+ obj.ptvMessage = obj.videoMessage;
129
+ delete obj.videoMessage;
130
+ }
131
+ if (obj.stickerMessage) {
132
+ obj.stickerMessage.stickerSentTs = Date.now();
133
+ }
134
+ if (cacheableKey) {
135
+ logger?.debug({ cacheableKey }, 'set cache');
136
+ await options.mediaCache.set(cacheableKey, Types_1.WAProto.Message.encode(obj).finish());
137
+ }
138
+ return obj;
139
+ }
140
+ const requiresDurationComputation = mediaType === 'audio' && typeof uploadData.seconds === 'undefined';
141
+ const requiresThumbnailComputation = (mediaType === 'image' || mediaType === 'video') && typeof uploadData['jpegThumbnail'] === 'undefined';
142
+ const requiresWaveformProcessing = mediaType === 'audio' && uploadData.ptt === true && typeof uploadData.waveform === 'undefined';
143
+ const requiresAudioBackground = options.backgroundColor && mediaType === 'audio' && uploadData.ptt === true;
144
+ const requiresOriginalForSomeProcessing = requiresDurationComputation || requiresThumbnailComputation;
145
+ const { mediaKey, encFilePath, originalFilePath, fileEncSha256, fileSha256, fileLength } = await (0, messages_media_1.encryptedStream)(uploadData.media, options.mediaTypeOverride || mediaType, {
146
+ logger,
147
+ saveOriginalFileIfRequired: requiresOriginalForSomeProcessing,
148
+ opts: options.options
149
+ });
150
+ const fileEncSha256B64 = fileEncSha256.toString('base64');
151
+ const [{ mediaUrl, directPath }] = await Promise.all([
152
+ (async () => {
153
+ const result = await options.upload(encFilePath, {
154
+ fileEncSha256B64,
155
+ mediaType,
156
+ timeoutMs: options.mediaUploadTimeoutMs
157
+ });
158
+ logger?.debug({ mediaType, cacheableKey }, 'uploaded media');
159
+ return result;
160
+ })(),
161
+ (async () => {
162
+ try {
163
+ if (requiresThumbnailComputation) {
164
+ const { thumbnail, originalImageDimensions } = await (0, messages_media_1.generateThumbnail)(originalFilePath, mediaType, options);
165
+ uploadData.jpegThumbnail = thumbnail;
166
+ if (!uploadData.width && originalImageDimensions) {
167
+ uploadData.width = originalImageDimensions.width;
168
+ uploadData.height = originalImageDimensions.height;
169
+ logger?.debug('set dimensions');
170
+ }
171
+ logger?.debug('generated thumbnail');
172
+ }
173
+ if (requiresDurationComputation) {
174
+ uploadData.seconds = await (0, messages_media_1.getAudioDuration)(originalFilePath);
175
+ logger?.debug('computed audio duration');
176
+ }
177
+ if (requiresWaveformProcessing) {
178
+ uploadData.waveform = await (0, messages_media_1.getAudioWaveform)(originalFilePath, logger);
179
+ logger?.debug('processed waveform');
180
+ }
181
+ if (requiresAudioBackground) {
182
+ uploadData.backgroundArgb = await assertColor(options.backgroundColor);
183
+ logger?.debug('computed backgroundColor audio status');
184
+ }
185
+ }
186
+ catch (error) {
187
+ logger?.warn({ trace: error.stack }, 'failed to obtain extra info');
188
+ }
189
+ })()
190
+ ]).finally(async () => {
191
+ try {
192
+ await fs_1.promises.unlink(encFilePath);
193
+ if (originalFilePath) {
194
+ await fs_1.promises.unlink(originalFilePath);
195
+ }
196
+ logger?.debug('removed tmp files');
197
+ }
198
+ catch (error) {
199
+ logger?.warn('failed to remove tmp file');
200
+ }
201
+ });
202
+ const obj = Types_1.WAProto.Message.fromObject({
203
+ [`${mediaType}Message`]: MessageTypeProto[mediaType].fromObject({
204
+ url: mediaUrl,
205
+ directPath,
206
+ mediaKey,
207
+ fileEncSha256,
208
+ fileSha256,
209
+ fileLength,
210
+ mediaKeyTimestamp: (0, generics_1.unixTimestampSeconds)(),
211
+ ...uploadData,
212
+ media: undefined
213
+ })
214
+ });
215
+ if (uploadData.ptv) {
216
+ obj.ptvMessage = obj.videoMessage;
217
+ delete obj.videoMessage;
218
+ }
219
+ if (cacheableKey) {
220
+ logger?.debug({ cacheableKey }, 'set cache');
221
+ await options.mediaCache.set(cacheableKey, Types_1.WAProto.Message.encode(obj).finish());
222
+ }
223
+ return obj;
224
+ };
225
+ exports.prepareWAMessageMedia = prepareWAMessageMedia;
226
+ const prepareDisappearingMessageSettingContent = (ephemeralExpiration) => {
227
+ ephemeralExpiration = ephemeralExpiration || 0;
228
+ const content = {
229
+ ephemeralMessage: {
230
+ message: {
231
+ protocolMessage: {
232
+ type: Types_1.WAProto.Message.ProtocolMessage.Type.EPHEMERAL_SETTING,
233
+ ephemeralExpiration
234
+ }
235
+ }
236
+ }
237
+ };
238
+ return Types_1.WAProto.Message.fromObject(content);
239
+ };
240
+ exports.prepareDisappearingMessageSettingContent = prepareDisappearingMessageSettingContent;
241
+ /**
242
+ * Generate forwarded message content like WA does
243
+ * @param message the message to forward
244
+ * @param options.forceForward will show the message as forwarded even if it is from you
245
+ */
246
+ const generateForwardMessageContent = (message, forceForward) => {
247
+ let content = message.message;
248
+ if (!content) {
249
+ throw new boom_1.Boom('no content in message', { statusCode: 400 });
250
+ }
251
+ // hacky copy
252
+ content = (0, exports.normalizeMessageContent)(content);
253
+ content = index_js_1.proto.Message.decode(index_js_1.proto.Message.encode(content).finish());
254
+ let key = Object.keys(content)[0];
255
+ let score = content?.[key]?.contextInfo?.forwardingScore || 0;
256
+ score += message.key.fromMe && !forceForward ? 0 : 1;
257
+ if (key === 'conversation') {
258
+ content.extendedTextMessage = { text: content[key] };
259
+ delete content.conversation;
260
+ key = 'extendedTextMessage';
261
+ }
262
+ const key_ = content?.[key];
263
+ if (score > 0) {
264
+ key_.contextInfo = { forwardingScore: score, isForwarded: true };
265
+ }
266
+ else {
267
+ key_.contextInfo = {};
268
+ }
269
+ return content;
270
+ };
271
+ exports.generateForwardMessageContent = generateForwardMessageContent;
272
+ const hasNonNullishProperty = (message, key) => {
273
+ return (typeof message === 'object' &&
274
+ message !== null &&
275
+ key in message &&
276
+ message[key] !== null &&
277
+ message[key] !== undefined);
278
+ };
279
+ exports.hasNonNullishProperty = hasNonNullishProperty;
280
+ function hasOptionalProperty(obj, key) {
281
+ return typeof obj === 'object' && obj !== null && key in obj && obj[key] !== null;
282
+ }
283
+ const generateWAMessageContent = async (message, options) => {
284
+ var _a, _b;
285
+ let m = {};
286
+ if ((0, exports.hasNonNullishProperty)(message, 'text')) {
287
+ const extContent = { text: message.text };
288
+ let urlInfo = message.linkPreview;
289
+ if (typeof urlInfo === 'undefined') {
290
+ urlInfo = await (0, exports.generateLinkPreviewIfRequired)(message.text, options.getUrlInfo, options.logger);
291
+ }
292
+ if (urlInfo) {
293
+ extContent.matchedText = urlInfo['matched-text'];
294
+ extContent.jpegThumbnail = urlInfo.jpegThumbnail;
295
+ extContent.description = urlInfo.description;
296
+ extContent.title = urlInfo.title;
297
+ extContent.previewType = 0;
298
+ const img = urlInfo.highQualityThumbnail;
299
+ if (img) {
300
+ extContent.thumbnailDirectPath = img.directPath;
301
+ extContent.mediaKey = img.mediaKey;
302
+ extContent.mediaKeyTimestamp = img.mediaKeyTimestamp;
303
+ extContent.thumbnailWidth = img.width;
304
+ extContent.thumbnailHeight = img.height;
305
+ extContent.thumbnailSha256 = img.fileSha256;
306
+ extContent.thumbnailEncSha256 = img.fileEncSha256;
307
+ }
308
+ }
309
+ if (options.backgroundColor) {
310
+ extContent.backgroundArgb = await assertColor(options.backgroundColor);
311
+ }
312
+ if (options.font) {
313
+ extContent.font = options.font;
314
+ }
315
+ m.extendedTextMessage = extContent;
316
+ }
317
+ else if ((0, exports.hasNonNullishProperty)(message, 'contacts')) {
318
+ const contactLen = message.contacts.contacts.length;
319
+ if (!contactLen) {
320
+ throw new boom_1.Boom('require atleast 1 contact', { statusCode: 400 });
321
+ }
322
+ if (contactLen === 1) {
323
+ m.contactMessage = Types_1.WAProto.Message.ContactMessage.create(message.contacts.contacts[0]);
324
+ }
325
+ else {
326
+ m.contactsArrayMessage = Types_1.WAProto.Message.ContactsArrayMessage.create(message.contacts);
327
+ }
328
+ }
329
+ else if ((0, exports.hasNonNullishProperty)(message, 'location')) {
330
+ m.locationMessage = Types_1.WAProto.Message.LocationMessage.create(message.location);
331
+ }
332
+ else if ((0, exports.hasNonNullishProperty)(message, 'react')) {
333
+ if (!message.react.senderTimestampMs) {
334
+ message.react.senderTimestampMs = Date.now();
335
+ }
336
+ m.reactionMessage = Types_1.WAProto.Message.ReactionMessage.create(message.react);
337
+ }
338
+ else if ((0, exports.hasNonNullishProperty)(message, 'delete')) {
339
+ m.protocolMessage = {
340
+ key: message.delete,
341
+ type: Types_1.WAProto.Message.ProtocolMessage.Type.REVOKE
342
+ };
343
+ }
344
+ else if ((0, exports.hasNonNullishProperty)(message, 'forward')) {
345
+ m = (0, exports.generateForwardMessageContent)(message.forward, message.force);
346
+ }
347
+ else if ((0, exports.hasNonNullishProperty)(message, 'disappearingMessagesInChat')) {
348
+ const exp = typeof message.disappearingMessagesInChat === 'boolean'
349
+ ? message.disappearingMessagesInChat
350
+ ? Defaults_1.WA_DEFAULT_EPHEMERAL
351
+ : 0
352
+ : message.disappearingMessagesInChat;
353
+ m = (0, exports.prepareDisappearingMessageSettingContent)(exp);
354
+ }
355
+ else if ((0, exports.hasNonNullishProperty)(message, 'groupInvite')) {
356
+ m.groupInviteMessage = {};
357
+ m.groupInviteMessage.inviteCode = message.groupInvite.inviteCode;
358
+ m.groupInviteMessage.inviteExpiration = message.groupInvite.inviteExpiration;
359
+ m.groupInviteMessage.caption = message.groupInvite.text;
360
+ m.groupInviteMessage.groupJid = message.groupInvite.jid;
361
+ m.groupInviteMessage.groupName = message.groupInvite.subject;
362
+ //TODO: use built-in interface and get disappearing mode info etc.
363
+ //TODO: cache / use store!?
364
+ if (options.getProfilePicUrl) {
365
+ const pfpUrl = await options.getProfilePicUrl(message.groupInvite.jid, 'preview');
366
+ if (pfpUrl) {
367
+ const resp = await fetch(pfpUrl, { method: 'GET', dispatcher: options?.options?.dispatcher });
368
+ if (resp.ok) {
369
+ const buf = Buffer.from(await resp.arrayBuffer());
370
+ m.groupInviteMessage.jpegThumbnail = buf;
371
+ }
372
+ }
373
+ }
374
+ }
375
+ else if ((0, exports.hasNonNullishProperty)(message, 'pin')) {
376
+ m.pinInChatMessage = {};
377
+ m.messageContextInfo = {};
378
+ m.pinInChatMessage.key = message.pin;
379
+ m.pinInChatMessage.type = message.type;
380
+ m.pinInChatMessage.senderTimestampMs = Date.now();
381
+ m.messageContextInfo.messageAddOnDurationInSecs = message.type === 1 ? message.time || 86400 : 0;
382
+ }
383
+ else if ((0, exports.hasNonNullishProperty)(message, 'buttonReply')) {
384
+ switch (message.type) {
385
+ case 'template':
386
+ m.templateButtonReplyMessage = {
387
+ selectedDisplayText: message.buttonReply.displayText,
388
+ selectedId: message.buttonReply.id,
389
+ selectedIndex: message.buttonReply.index
390
+ };
391
+ break;
392
+ case 'plain':
393
+ m.buttonsResponseMessage = {
394
+ selectedButtonId: message.buttonReply.id,
395
+ selectedDisplayText: message.buttonReply.displayText,
396
+ type: index_js_1.proto.Message.ButtonsResponseMessage.Type.DISPLAY_TEXT
397
+ };
398
+ break;
399
+ }
400
+ }
401
+ else if (hasOptionalProperty(message, 'ptv') && message.ptv) {
402
+ const { videoMessage } = await (0, exports.prepareWAMessageMedia)({ video: message.video }, options);
403
+ m.ptvMessage = videoMessage;
404
+ }
405
+ else if ((0, exports.hasNonNullishProperty)(message, 'product')) {
406
+ const { imageMessage } = await (0, exports.prepareWAMessageMedia)({ image: message.product.productImage }, options);
407
+ m.productMessage = Types_1.WAProto.Message.ProductMessage.create({
408
+ ...message,
409
+ product: {
410
+ ...message.product,
411
+ productImage: imageMessage
412
+ }
413
+ });
414
+ }
415
+ else if ((0, exports.hasNonNullishProperty)(message, 'listReply')) {
416
+ m.listResponseMessage = { ...message.listReply };
417
+ }
418
+ else if ((0, exports.hasNonNullishProperty)(message, 'event')) {
419
+ m.eventMessage = {};
420
+ const startTime = Math.floor(message.event.startDate.getTime() / 1000);
421
+ if (message.event.call && options.getCallLink) {
422
+ const token = await options.getCallLink(message.event.call, { startTime });
423
+ m.eventMessage.joinLink = (message.event.call === 'audio' ? Defaults_1.CALL_AUDIO_PREFIX : Defaults_1.CALL_VIDEO_PREFIX) + token;
424
+ }
425
+ m.messageContextInfo = {
426
+ // encKey
427
+ messageSecret: message.event.messageSecret || (0, crypto_1.randomBytes)(32)
428
+ };
429
+ m.eventMessage.name = message.event.name;
430
+ m.eventMessage.description = message.event.description;
431
+ m.eventMessage.startTime = startTime;
432
+ m.eventMessage.endTime = message.event.endDate ? message.event.endDate.getTime() / 1000 : undefined;
433
+ m.eventMessage.isCanceled = message.event.isCancelled ?? false;
434
+ m.eventMessage.extraGuestsAllowed = message.event.extraGuestsAllowed;
435
+ m.eventMessage.isScheduleCall = message.event.isScheduleCall ?? false;
436
+ m.eventMessage.location = message.event.location;
437
+ }
438
+ else if ((0, exports.hasNonNullishProperty)(message, 'poll')) {
439
+ (_a = message.poll).selectableCount || (_a.selectableCount = 0);
440
+ (_b = message.poll).toAnnouncementGroup || (_b.toAnnouncementGroup = false);
441
+ if (!Array.isArray(message.poll.values)) {
442
+ throw new boom_1.Boom('Invalid poll values', { statusCode: 400 });
443
+ }
444
+ if (message.poll.selectableCount < 0 || message.poll.selectableCount > message.poll.values.length) {
445
+ throw new boom_1.Boom(`poll.selectableCount in poll should be >= 0 and <= ${message.poll.values.length}`, {
446
+ statusCode: 400
447
+ });
448
+ }
449
+ m.messageContextInfo = {
450
+ // encKey
451
+ messageSecret: message.poll.messageSecret || (0, crypto_1.randomBytes)(32)
452
+ };
453
+ const pollCreationMessage = {
454
+ name: message.poll.name,
455
+ selectableOptionsCount: message.poll.selectableCount,
456
+ options: message.poll.values.map(optionName => ({ optionName }))
457
+ };
458
+ if (message.poll.toAnnouncementGroup) {
459
+ // poll v2 is for community announcement groups (single select and multiple)
460
+ m.pollCreationMessageV2 = pollCreationMessage;
461
+ }
462
+ else {
463
+ if (message.poll.selectableCount === 1) {
464
+ //poll v3 is for single select polls
465
+ m.pollCreationMessageV3 = pollCreationMessage;
466
+ }
467
+ else {
468
+ // poll for multiple choice polls
469
+ m.pollCreationMessage = pollCreationMessage;
470
+ }
471
+ }
472
+ }
473
+ else if ((0, exports.hasNonNullishProperty)(message, 'sharePhoneNumber')) {
474
+ m.protocolMessage = {
475
+ type: index_js_1.proto.Message.ProtocolMessage.Type.SHARE_PHONE_NUMBER
476
+ };
477
+ }
478
+ else if ((0, exports.hasNonNullishProperty)(message, 'requestPhoneNumber')) {
479
+ m.requestPhoneNumberMessage = {};
480
+ }
481
+ else if ((0, exports.hasNonNullishProperty)(message, 'limitSharing')) {
482
+ m.protocolMessage = {
483
+ type: index_js_1.proto.Message.ProtocolMessage.Type.LIMIT_SHARING,
484
+ limitSharing: {
485
+ sharingLimited: message.limitSharing === true,
486
+ trigger: 1,
487
+ limitSharingSettingTimestamp: Date.now(),
488
+ initiatedByMe: true
489
+ }
490
+ };
491
+ }
492
+ else {
493
+ m = await (0, exports.prepareWAMessageMedia)(message, options);
494
+ }
495
+ if (hasOptionalProperty(message, 'viewOnce') && !!message.viewOnce) {
496
+ m = { viewOnceMessage: { message: m } };
497
+ }
498
+ if ((hasOptionalProperty(message, 'mentions') && message.mentions?.length) ||
499
+ (hasOptionalProperty(message, 'mentionAll') && message.mentionAll)) {
500
+ const messageType = Object.keys(m)[0];
501
+ const key = m[messageType];
502
+ if (key && 'contextInfo' in key) {
503
+ key.contextInfo = key.contextInfo || {};
504
+ if (message.mentions?.length) {
505
+ key.contextInfo.mentionedJid = message.mentions;
506
+ }
507
+ if (message.mentionAll) {
508
+ key.contextInfo.nonJidMentions = 1;
509
+ }
510
+ }
511
+ else if (key) {
512
+ key.contextInfo = {
513
+ mentionedJid: message.mentions,
514
+ nonJidMentions: message.mentionAll ? 1 : 0
515
+ };
516
+ }
517
+ }
518
+ if (hasOptionalProperty(message, 'edit')) {
519
+ m = {
520
+ protocolMessage: {
521
+ key: message.edit,
522
+ editedMessage: m,
523
+ timestampMs: Date.now(),
524
+ type: Types_1.WAProto.Message.ProtocolMessage.Type.MESSAGE_EDIT
525
+ }
526
+ };
527
+ }
528
+ if (hasOptionalProperty(message, 'contextInfo') && !!message.contextInfo) {
529
+ const messageType = Object.keys(m)[0];
530
+ const key = m[messageType];
531
+ if ('contextInfo' in key && !!key.contextInfo) {
532
+ key.contextInfo = { ...key.contextInfo, ...message.contextInfo };
533
+ }
534
+ else if (key) {
535
+ key.contextInfo = message.contextInfo;
536
+ }
537
+ }
538
+ if ((0, reporting_utils_1.shouldIncludeReportingToken)(m)) {
539
+ m.messageContextInfo = m.messageContextInfo || {};
540
+ if (!m.messageContextInfo.messageSecret) {
541
+ m.messageContextInfo.messageSecret = (0, crypto_1.randomBytes)(32);
542
+ }
543
+ }
544
+ return Types_1.WAProto.Message.create(m);
545
+ };
546
+ exports.generateWAMessageContent = generateWAMessageContent;
547
+ const generateWAMessageFromContent = (jid, message, options) => {
548
+ // set timestamp to now
549
+ // if not specified
550
+ if (!options.timestamp) {
551
+ options.timestamp = new Date();
552
+ }
553
+ const innerMessage = (0, exports.normalizeMessageContent)(message);
554
+ const key = (0, exports.getContentType)(innerMessage);
555
+ const timestamp = (0, generics_1.unixTimestampSeconds)(options.timestamp);
556
+ const { quoted, userJid } = options;
557
+ if (quoted && !(0, WABinary_1.isJidNewsletter)(jid)) {
558
+ const participant = quoted.key.fromMe
559
+ ? userJid // TODO: Add support for LIDs
560
+ : quoted.participant || quoted.key.participant || quoted.key.remoteJid;
561
+ let quotedMsg = (0, exports.normalizeMessageContent)(quoted.message);
562
+ const msgType = (0, exports.getContentType)(quotedMsg);
563
+ // strip any redundant properties
564
+ quotedMsg = index_js_1.proto.Message.create({ [msgType]: quotedMsg[msgType] });
565
+ const quotedContent = quotedMsg[msgType];
566
+ if (typeof quotedContent === 'object' && quotedContent && 'contextInfo' in quotedContent) {
567
+ delete quotedContent.contextInfo;
568
+ }
569
+ const contextInfo = ('contextInfo' in innerMessage[key] && innerMessage[key]?.contextInfo) || {};
570
+ contextInfo.participant = (0, WABinary_1.jidNormalizedUser)(participant);
571
+ contextInfo.stanzaId = quoted.key.id;
572
+ contextInfo.quotedMessage = quotedMsg;
573
+ // if a participant is quoted, then it must be a group
574
+ // hence, remoteJid of group must also be entered
575
+ if (jid !== quoted.key.remoteJid) {
576
+ contextInfo.remoteJid = quoted.key.remoteJid;
577
+ }
578
+ if (contextInfo && innerMessage[key]) {
579
+ /* @ts-ignore */
580
+ innerMessage[key].contextInfo = contextInfo;
581
+ }
582
+ }
583
+ if (
584
+ // if we want to send a disappearing message
585
+ !!options?.ephemeralExpiration &&
586
+ // and it's not a protocol message -- delete, toggle disappear message
587
+ key !== 'protocolMessage' &&
588
+ // already not converted to disappearing message
589
+ key !== 'ephemeralMessage' &&
590
+ // newsletters don't support ephemeral messages
591
+ !(0, WABinary_1.isJidNewsletter)(jid)) {
592
+ /* @ts-ignore */
593
+ innerMessage[key].contextInfo = {
594
+ ...(innerMessage[key].contextInfo || {}),
595
+ expiration: options.ephemeralExpiration || Defaults_1.WA_DEFAULT_EPHEMERAL
596
+ //ephemeralSettingTimestamp: options.ephemeralOptions.eph_setting_ts?.toString()
597
+ };
598
+ }
599
+ message = Types_1.WAProto.Message.create(message);
600
+ const messageJSON = {
601
+ key: {
602
+ remoteJid: jid,
603
+ fromMe: true,
604
+ id: options?.messageId || (0, generics_1.generateMessageIDV2)()
605
+ },
606
+ message: message,
607
+ messageTimestamp: timestamp,
608
+ messageStubParameters: [],
609
+ participant: (0, WABinary_1.isJidGroup)(jid) || (0, WABinary_1.isJidStatusBroadcast)(jid) ? userJid : undefined, // TODO: Add support for LIDs
610
+ status: Types_1.WAMessageStatus.PENDING
611
+ };
612
+ return Types_1.WAProto.WebMessageInfo.fromObject(messageJSON);
613
+ };
614
+ exports.generateWAMessageFromContent = generateWAMessageFromContent;
615
+ const generateWAMessage = async (jid, content, options) => {
616
+ // ensure msg ID is with every log
617
+ options.logger = options?.logger?.child({ msgId: options.messageId });
618
+ // Pass jid in the options to generateWAMessageContent
619
+ return (0, exports.generateWAMessageFromContent)(jid, await (0, exports.generateWAMessageContent)(content, { ...options, jid }), options);
620
+ };
621
+ exports.generateWAMessage = generateWAMessage;
622
+ /** Get the key to access the true type of content */
623
+ const getContentType = (content) => {
624
+ if (content) {
625
+ const keys = Object.keys(content);
626
+ const key = keys.find(k => (k === 'conversation' || k.includes('Message')) && k !== 'senderKeyDistributionMessage');
627
+ return key;
628
+ }
629
+ };
630
+ exports.getContentType = getContentType;
631
+ /**
632
+ * Normalizes ephemeral, view once messages to regular message content
633
+ * Eg. image messages in ephemeral messages, in view once messages etc.
634
+ * @param content
635
+ * @returns
636
+ */
637
+ const normalizeMessageContent = (content) => {
638
+ if (!content) {
639
+ return undefined;
640
+ }
641
+ // set max iterations to prevent an infinite loop
642
+ for (let i = 0; i < 5; i++) {
643
+ const inner = getFutureProofMessage(content);
644
+ if (!inner) {
645
+ break;
646
+ }
647
+ content = inner.message;
648
+ }
649
+ return content;
650
+ function getFutureProofMessage(message) {
651
+ return (message?.ephemeralMessage ||
652
+ message?.viewOnceMessage ||
653
+ message?.documentWithCaptionMessage ||
654
+ message?.viewOnceMessageV2 ||
655
+ message?.viewOnceMessageV2Extension ||
656
+ message?.editedMessage ||
657
+ message?.associatedChildMessage ||
658
+ message?.groupStatusMessage ||
659
+ message?.groupStatusMessageV2);
660
+ }
661
+ };
662
+ exports.normalizeMessageContent = normalizeMessageContent;
663
+ /**
664
+ * Extract the true message content from a message
665
+ * Eg. extracts the inner message from a disappearing message/view once message
666
+ */
667
+ const extractMessageContent = (content) => {
668
+ const extractFromTemplateMessage = (msg) => {
669
+ if (msg.imageMessage) {
670
+ return { imageMessage: msg.imageMessage };
671
+ }
672
+ else if (msg.documentMessage) {
673
+ return { documentMessage: msg.documentMessage };
674
+ }
675
+ else if (msg.videoMessage) {
676
+ return { videoMessage: msg.videoMessage };
677
+ }
678
+ else if (msg.locationMessage) {
679
+ return { locationMessage: msg.locationMessage };
680
+ }
681
+ else {
682
+ return {
683
+ conversation: 'contentText' in msg ? msg.contentText : 'hydratedContentText' in msg ? msg.hydratedContentText : ''
684
+ };
685
+ }
686
+ };
687
+ content = (0, exports.normalizeMessageContent)(content);
688
+ if (content?.buttonsMessage) {
689
+ return extractFromTemplateMessage(content.buttonsMessage);
690
+ }
691
+ if (content?.templateMessage?.hydratedFourRowTemplate) {
692
+ return extractFromTemplateMessage(content?.templateMessage?.hydratedFourRowTemplate);
693
+ }
694
+ if (content?.templateMessage?.hydratedTemplate) {
695
+ return extractFromTemplateMessage(content?.templateMessage?.hydratedTemplate);
696
+ }
697
+ if (content?.templateMessage?.fourRowTemplate) {
698
+ return extractFromTemplateMessage(content?.templateMessage?.fourRowTemplate);
699
+ }
700
+ return content;
701
+ };
702
+ exports.extractMessageContent = extractMessageContent;
703
+ /**
704
+ * Returns the device predicted by message ID
705
+ */
706
+ const getDevice = (id) => /^3A.{18}$/.test(id)
707
+ ? 'ios'
708
+ : /^3E.{20}$/.test(id)
709
+ ? 'web'
710
+ : /^(.{21}|.{32})$/.test(id)
711
+ ? 'android'
712
+ : /^(3F|.{18}$)/.test(id)
713
+ ? 'desktop'
714
+ : 'unknown';
715
+ exports.getDevice = getDevice;
716
+ /** Upserts a receipt in the message */
717
+ const updateMessageWithReceipt = (msg, receipt) => {
718
+ msg.userReceipt = msg.userReceipt || [];
719
+ const recp = msg.userReceipt.find(m => m.userJid === receipt.userJid);
720
+ if (recp) {
721
+ Object.assign(recp, receipt);
722
+ }
723
+ else {
724
+ msg.userReceipt.push(receipt);
725
+ }
726
+ };
727
+ exports.updateMessageWithReceipt = updateMessageWithReceipt;
728
+ /** Update the message with a new reaction */
729
+ const updateMessageWithReaction = (msg, reaction) => {
730
+ const authorID = (0, generics_1.getKeyAuthor)(reaction.key);
731
+ const reactions = (msg.reactions || []).filter(r => (0, generics_1.getKeyAuthor)(r.key) !== authorID);
732
+ reaction.text = reaction.text || '';
733
+ reactions.push(reaction);
734
+ msg.reactions = reactions;
735
+ };
736
+ exports.updateMessageWithReaction = updateMessageWithReaction;
737
+ /** Update the message with a new poll update */
738
+ const updateMessageWithPollUpdate = (msg, update) => {
739
+ const authorID = (0, generics_1.getKeyAuthor)(update.pollUpdateMessageKey);
740
+ const reactions = (msg.pollUpdates || []).filter(r => (0, generics_1.getKeyAuthor)(r.pollUpdateMessageKey) !== authorID);
741
+ if (update.vote?.selectedOptions?.length) {
742
+ reactions.push(update);
743
+ }
744
+ msg.pollUpdates = reactions;
745
+ };
746
+ exports.updateMessageWithPollUpdate = updateMessageWithPollUpdate;
747
+ /** Update the message with a new event response */
748
+ const updateMessageWithEventResponse = (msg, update) => {
749
+ const authorID = (0, generics_1.getKeyAuthor)(update.eventResponseMessageKey);
750
+ const responses = (msg.eventResponses || []).filter(r => (0, generics_1.getKeyAuthor)(r.eventResponseMessageKey) !== authorID);
751
+ responses.push(update);
752
+ msg.eventResponses = responses;
753
+ };
754
+ exports.updateMessageWithEventResponse = updateMessageWithEventResponse;
755
+ /**
756
+ * Aggregates all poll updates in a poll.
757
+ * @param msg the poll creation message
758
+ * @param meId your jid
759
+ * @returns A list of options & their voters
760
+ */
761
+ function getAggregateVotesInPollMessage({ message, pollUpdates }, meId) {
762
+ const opts = message?.pollCreationMessage?.options ||
763
+ message?.pollCreationMessageV2?.options ||
764
+ message?.pollCreationMessageV3?.options ||
765
+ [];
766
+ const voteHashMap = opts.reduce((acc, opt) => {
767
+ const hash = (0, crypto_2.sha256)(Buffer.from(opt.optionName || '')).toString();
768
+ acc[hash] = {
769
+ name: opt.optionName || '',
770
+ voters: []
771
+ };
772
+ return acc;
773
+ }, {});
774
+ for (const update of pollUpdates || []) {
775
+ const { vote } = update;
776
+ if (!vote) {
777
+ continue;
778
+ }
779
+ for (const option of vote.selectedOptions || []) {
780
+ const hash = option.toString();
781
+ let data = voteHashMap[hash];
782
+ if (!data) {
783
+ voteHashMap[hash] = {
784
+ name: 'Unknown',
785
+ voters: []
786
+ };
787
+ data = voteHashMap[hash];
788
+ }
789
+ voteHashMap[hash].voters.push((0, generics_1.getKeyAuthor)(update.pollUpdateMessageKey, meId));
790
+ }
791
+ }
792
+ return Object.values(voteHashMap);
793
+ }
794
+ /**
795
+ * Aggregates all event responses in an event message.
796
+ * @param msg the event creation message
797
+ * @param meId your jid
798
+ * @returns A list of response types & their responders
799
+ */
800
+ function getAggregateResponsesInEventMessage({ eventResponses }, meId) {
801
+ const responseTypes = ['GOING', 'NOT_GOING', 'MAYBE'];
802
+ const responseMap = {};
803
+ for (const type of responseTypes) {
804
+ responseMap[type] = {
805
+ response: type,
806
+ responders: []
807
+ };
808
+ }
809
+ for (const update of eventResponses || []) {
810
+ const responseType = update.eventResponse || 'UNKNOWN';
811
+ if (responseType !== 'UNKNOWN' && responseMap[responseType]) {
812
+ responseMap[responseType].responders.push((0, generics_1.getKeyAuthor)(update.eventResponseMessageKey, meId));
813
+ }
814
+ }
815
+ return Object.values(responseMap);
816
+ }
817
+ /** Given a list of message keys, aggregates them by chat & sender. Useful for sending read receipts in bulk */
818
+ const aggregateMessageKeysNotFromMe = (keys) => {
819
+ const keyMap = {};
820
+ for (const { remoteJid, id, participant, fromMe } of keys) {
821
+ if (!fromMe) {
822
+ const uqKey = `${remoteJid}:${participant || ''}`;
823
+ if (!keyMap[uqKey]) {
824
+ keyMap[uqKey] = {
825
+ jid: remoteJid,
826
+ participant: participant,
827
+ messageIds: []
828
+ };
829
+ }
830
+ keyMap[uqKey].messageIds.push(id);
831
+ }
832
+ }
833
+ return Object.values(keyMap);
834
+ };
835
+ exports.aggregateMessageKeysNotFromMe = aggregateMessageKeysNotFromMe;
836
+ const REUPLOAD_REQUIRED_STATUS = [410, 404];
837
+ /**
838
+ * Downloads the given message. Throws an error if it's not a media message
839
+ */
840
+ const downloadMediaMessage = async (message, type, options, ctx) => {
841
+ const result = await downloadMsg().catch(async (error) => {
842
+ if (ctx &&
843
+ typeof error?.status === 'number' && // treat errors with status as HTTP failures requiring reupload
844
+ REUPLOAD_REQUIRED_STATUS.includes(error.status)) {
845
+ ctx.logger.info({ key: message.key }, 'sending reupload media request...');
846
+ // request reupload
847
+ message = await ctx.reuploadRequest(message);
848
+ const result = await downloadMsg();
849
+ return result;
850
+ }
851
+ throw error;
852
+ });
853
+ return result;
854
+ async function downloadMsg() {
855
+ const mContent = (0, exports.extractMessageContent)(message.message);
856
+ if (!mContent) {
857
+ throw new boom_1.Boom('No message present', { statusCode: 400, data: message });
858
+ }
859
+ const contentType = (0, exports.getContentType)(mContent);
860
+ let mediaType = contentType?.replace('Message', '');
861
+ const media = mContent[contentType];
862
+ if (!media || typeof media !== 'object' || (!('url' in media) && !('thumbnailDirectPath' in media))) {
863
+ throw new boom_1.Boom(`"${contentType}" message is not a media message`);
864
+ }
865
+ let download;
866
+ if ('thumbnailDirectPath' in media && !('url' in media)) {
867
+ download = {
868
+ directPath: media.thumbnailDirectPath,
869
+ mediaKey: media.mediaKey
870
+ };
871
+ mediaType = 'thumbnail-link';
872
+ }
873
+ else {
874
+ download = media;
875
+ }
876
+ const stream = await (0, messages_media_1.downloadContentFromMessage)(download, mediaType, options);
877
+ if (type === 'buffer') {
878
+ const bufferArray = [];
879
+ for await (const chunk of stream) {
880
+ bufferArray.push(chunk);
881
+ }
882
+ return Buffer.concat(bufferArray);
883
+ }
884
+ return stream;
885
+ }
886
+ };
887
+ exports.downloadMediaMessage = downloadMediaMessage;
888
+ /** Checks whether the given message is a media message; if it is returns the inner content */
889
+ const assertMediaContent = (content) => {
890
+ content = (0, exports.extractMessageContent)(content);
891
+ const mediaContent = content?.documentMessage ||
892
+ content?.imageMessage ||
893
+ content?.videoMessage ||
894
+ content?.audioMessage ||
895
+ content?.stickerMessage;
896
+ if (!mediaContent) {
897
+ throw new boom_1.Boom('given message is not a media message', { statusCode: 400, data: content });
898
+ }
899
+ return mediaContent;
900
+ };
901
+ exports.assertMediaContent = assertMediaContent;
902
+ //# sourceMappingURL=messages.js.map