violetics 7.0.6-alpha → 7.0.8-alpha

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 (407) hide show
  1. package/LICENSE +1 -2
  2. package/README.md +456 -978
  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 +2728 -7894
  8. package/engine-requirements.js +7 -10
  9. package/index.cjs +196 -0
  10. package/index.d.ts +30 -0
  11. package/lib/Defaults/index.d.ts +74 -0
  12. package/lib/Defaults/index.d.ts.map +1 -0
  13. package/lib/Defaults/index.js +16 -25
  14. package/lib/Defaults/index.js.map +1 -0
  15. package/lib/Defaults/phonenumber-mcc.json +223 -0
  16. package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
  17. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  18. package/lib/Signal/Group/ciphertext-message.js +2 -1
  19. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  20. package/lib/Signal/Group/group-session-builder.d.ts +15 -0
  21. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  22. package/lib/Signal/Group/group-session-builder.js +2 -1
  23. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  24. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  25. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  26. package/lib/Signal/Group/group_cipher.js +2 -1
  27. package/lib/Signal/Group/group_cipher.js.map +1 -0
  28. package/lib/Signal/Group/index.d.ts +12 -0
  29. package/lib/Signal/Group/index.d.ts.map +1 -0
  30. package/lib/Signal/Group/index.js +2 -1
  31. package/lib/Signal/Group/index.js.map +1 -0
  32. package/lib/Signal/Group/keyhelper.d.ts +11 -0
  33. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  34. package/lib/Signal/Group/keyhelper.js +2 -1
  35. package/lib/Signal/Group/keyhelper.js.map +1 -0
  36. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  37. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  38. package/lib/Signal/Group/sender-chain-key.js +2 -1
  39. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  40. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  41. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  42. package/lib/Signal/Group/sender-key-distribution-message.js +2 -1
  43. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  44. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  45. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  46. package/lib/Signal/Group/sender-key-message.js +2 -1
  47. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  48. package/lib/Signal/Group/sender-key-name.d.ts +18 -0
  49. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  50. package/lib/Signal/Group/sender-key-name.js +2 -1
  51. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  52. package/lib/Signal/Group/sender-key-record.d.ts +31 -0
  53. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  54. package/lib/Signal/Group/sender-key-record.js +2 -1
  55. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  56. package/lib/Signal/Group/sender-key-state.d.ts +39 -0
  57. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  58. package/lib/Signal/Group/sender-key-state.js +2 -1
  59. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  60. package/lib/Signal/Group/sender-message-key.d.ts +12 -0
  61. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  62. package/lib/Signal/Group/sender-message-key.js +2 -1
  63. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  64. package/lib/Signal/libsignal.d.ts +5 -0
  65. package/lib/Signal/libsignal.d.ts.map +1 -0
  66. package/lib/Signal/libsignal.js +44 -8
  67. package/lib/Signal/libsignal.js.map +1 -0
  68. package/lib/Signal/lid-mapping.d.ts +19 -0
  69. package/lib/Signal/lid-mapping.d.ts.map +1 -0
  70. package/lib/Signal/lid-mapping.js +2 -1
  71. package/lib/Signal/lid-mapping.js.map +1 -0
  72. package/lib/Socket/Client/index.d.ts +3 -0
  73. package/lib/Socket/Client/index.d.ts.map +1 -0
  74. package/lib/Socket/Client/index.js +2 -1
  75. package/lib/Socket/Client/index.js.map +1 -0
  76. package/lib/Socket/Client/types.d.ts +16 -0
  77. package/lib/Socket/Client/types.d.ts.map +1 -0
  78. package/lib/Socket/Client/types.js +2 -1
  79. package/lib/Socket/Client/types.js.map +1 -0
  80. package/lib/Socket/Client/websocket.d.ts +13 -0
  81. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  82. package/lib/Socket/Client/websocket.js +3 -11
  83. package/lib/Socket/Client/websocket.js.map +1 -0
  84. package/lib/Socket/business.d.ts +202 -0
  85. package/lib/Socket/business.d.ts.map +1 -0
  86. package/lib/Socket/business.js +2 -1
  87. package/lib/Socket/business.js.map +1 -0
  88. package/lib/Socket/chats.d.ts +111 -0
  89. package/lib/Socket/chats.d.ts.map +1 -0
  90. package/lib/Socket/chats.js +155 -71
  91. package/lib/Socket/chats.js.map +1 -0
  92. package/lib/Socket/communities.d.ts +258 -0
  93. package/lib/Socket/communities.d.ts.map +1 -0
  94. package/lib/Socket/communities.js +2 -1
  95. package/lib/Socket/communities.js.map +1 -0
  96. package/lib/Socket/community.js +361 -0
  97. package/lib/Socket/groups.d.ts +150 -0
  98. package/lib/Socket/groups.d.ts.map +1 -0
  99. package/lib/Socket/groups.js +140 -9
  100. package/lib/Socket/groups.js.map +1 -0
  101. package/lib/Socket/index.d.ts +245 -0
  102. package/lib/Socket/index.d.ts.map +1 -0
  103. package/lib/Socket/index.js +2 -1
  104. package/lib/Socket/index.js.map +1 -0
  105. package/lib/Socket/messages-recv.d.ts +187 -0
  106. package/lib/Socket/messages-recv.d.ts.map +1 -0
  107. package/lib/Socket/messages-recv.js +481 -204
  108. package/lib/Socket/messages-recv.js.map +1 -0
  109. package/lib/Socket/messages-send.d.ts +183 -0
  110. package/lib/Socket/messages-send.d.ts.map +1 -0
  111. package/lib/Socket/messages-send.js +622 -233
  112. package/lib/Socket/messages-send.js.map +1 -0
  113. package/lib/Socket/mex.d.ts +3 -0
  114. package/lib/Socket/mex.d.ts.map +1 -0
  115. package/lib/Socket/mex.js +2 -1
  116. package/lib/Socket/mex.js.map +1 -0
  117. package/lib/Socket/newsletter.d.ts +160 -0
  118. package/lib/Socket/newsletter.d.ts.map +1 -0
  119. package/lib/Socket/newsletter.js +107 -68
  120. package/lib/Socket/newsletter.js.map +1 -0
  121. package/lib/Socket/socket.d.ts +55 -0
  122. package/lib/Socket/socket.d.ts.map +1 -0
  123. package/lib/Socket/socket.js +25 -26
  124. package/lib/Socket/socket.js.map +1 -0
  125. package/lib/Socket/usync.js +76 -0
  126. package/lib/Store/index.js +2 -1
  127. package/lib/Store/make-cache-manager-store.js +77 -0
  128. package/lib/Store/make-in-memory-store.js +44 -65
  129. package/lib/Store/make-ordered-dictionary.js +1 -1
  130. package/lib/Store/object-repository.js +1 -1
  131. package/lib/Types/Auth.d.ts +116 -0
  132. package/lib/Types/Auth.d.ts.map +1 -0
  133. package/lib/Types/Auth.js +2 -1
  134. package/lib/Types/Auth.js.map +1 -0
  135. package/lib/Types/Bussines.d.ts +25 -0
  136. package/lib/Types/Bussines.d.ts.map +1 -0
  137. package/lib/Types/Bussines.js +2 -1
  138. package/lib/Types/Bussines.js.map +1 -0
  139. package/lib/Types/Call.d.ts +15 -0
  140. package/lib/Types/Call.d.ts.map +1 -0
  141. package/lib/Types/Call.js +2 -1
  142. package/lib/Types/Call.js.map +1 -0
  143. package/lib/Types/Chat.d.ts +123 -0
  144. package/lib/Types/Chat.d.ts.map +1 -0
  145. package/lib/Types/Chat.js +2 -1
  146. package/lib/Types/Chat.js.map +1 -0
  147. package/lib/Types/Contact.d.ts +24 -0
  148. package/lib/Types/Contact.d.ts.map +1 -0
  149. package/lib/Types/Contact.js +2 -1
  150. package/lib/Types/Contact.js.map +1 -0
  151. package/lib/Types/Events.d.ts +237 -0
  152. package/lib/Types/Events.d.ts.map +1 -0
  153. package/lib/Types/Events.js +2 -1
  154. package/lib/Types/Events.js.map +1 -0
  155. package/lib/Types/GroupMetadata.d.ts +67 -0
  156. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  157. package/lib/Types/GroupMetadata.js +2 -1
  158. package/lib/Types/GroupMetadata.js.map +1 -0
  159. package/lib/Types/Label.d.ts +47 -0
  160. package/lib/Types/Label.d.ts.map +1 -0
  161. package/lib/Types/Label.js +2 -1
  162. package/lib/Types/Label.js.map +1 -0
  163. package/lib/Types/LabelAssociation.d.ts +30 -0
  164. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  165. package/lib/Types/LabelAssociation.js +2 -1
  166. package/lib/Types/LabelAssociation.js.map +1 -0
  167. package/lib/Types/Message.d.ts +305 -0
  168. package/lib/Types/Message.d.ts.map +1 -0
  169. package/lib/Types/Message.js +2 -8
  170. package/lib/Types/Message.js.map +1 -0
  171. package/lib/Types/MexUpdates.js +9 -0
  172. package/lib/Types/Newsletter.d.ts +135 -0
  173. package/lib/Types/Newsletter.d.ts.map +1 -0
  174. package/lib/Types/Newsletter.js +14 -4
  175. package/lib/Types/Newsletter.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 +2 -1
  179. package/lib/Types/Product.js.map +1 -0
  180. package/lib/Types/Signal.d.ts +76 -0
  181. package/lib/Types/Signal.d.ts.map +1 -0
  182. package/lib/Types/Signal.js +2 -1
  183. package/lib/Types/Signal.js.map +1 -0
  184. package/lib/Types/Socket.d.ts +133 -0
  185. package/lib/Types/Socket.d.ts.map +1 -0
  186. package/lib/Types/Socket.js +2 -1
  187. package/lib/Types/Socket.js.map +1 -0
  188. package/lib/Types/State.d.ts +39 -0
  189. package/lib/Types/State.d.ts.map +1 -0
  190. package/lib/Types/State.js +2 -1
  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 +2 -1
  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 +3 -1
  199. package/lib/Types/index.js.map +1 -0
  200. package/lib/Utils/audioToBuffer.js +31 -0
  201. package/lib/Utils/auth-utils.d.ts +19 -0
  202. package/lib/Utils/auth-utils.d.ts.map +1 -0
  203. package/lib/Utils/auth-utils.js +2 -1
  204. package/lib/Utils/auth-utils.js.map +1 -0
  205. package/lib/Utils/baileys-event-stream.js +54 -0
  206. package/lib/Utils/browser-utils.d.ts +4 -0
  207. package/lib/Utils/browser-utils.d.ts.map +1 -0
  208. package/lib/Utils/browser-utils.js +35 -22
  209. package/lib/Utils/browser-utils.js.map +1 -0
  210. package/lib/Utils/business.d.ts +23 -0
  211. package/lib/Utils/business.d.ts.map +1 -0
  212. package/lib/Utils/business.js +2 -1
  213. package/lib/Utils/business.js.map +1 -0
  214. package/lib/Utils/chat-utils.d.ts +70 -0
  215. package/lib/Utils/chat-utils.d.ts.map +1 -0
  216. package/lib/Utils/chat-utils.js +2 -1
  217. package/lib/Utils/chat-utils.js.map +1 -0
  218. package/lib/Utils/crypto.d.ts +37 -0
  219. package/lib/Utils/crypto.d.ts.map +1 -0
  220. package/lib/Utils/crypto.js +2 -1
  221. package/lib/Utils/crypto.js.map +1 -0
  222. package/lib/Utils/decode-wa-message.d.ts +48 -0
  223. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  224. package/lib/Utils/decode-wa-message.js +2 -1
  225. package/lib/Utils/decode-wa-message.js.map +1 -0
  226. package/lib/Utils/event-buffer.d.ts +34 -0
  227. package/lib/Utils/event-buffer.d.ts.map +1 -0
  228. package/lib/Utils/event-buffer.js +4 -3
  229. package/lib/Utils/event-buffer.js.map +1 -0
  230. package/lib/Utils/generics.d.ts +91 -0
  231. package/lib/Utils/generics.d.ts.map +1 -0
  232. package/lib/Utils/generics.js +34 -7
  233. package/lib/Utils/generics.js.map +1 -0
  234. package/lib/Utils/history.d.ts +22 -0
  235. package/lib/Utils/history.d.ts.map +1 -0
  236. package/lib/Utils/history.js +2 -1
  237. package/lib/Utils/history.js.map +1 -0
  238. package/lib/Utils/identity-change-handler.d.ts +37 -0
  239. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  240. package/lib/Utils/identity-change-handler.js +2 -1
  241. package/lib/Utils/identity-change-handler.js.map +1 -0
  242. package/lib/Utils/index.d.ts +22 -0
  243. package/lib/Utils/index.d.ts.map +1 -0
  244. package/lib/Utils/index.js +8 -1
  245. package/lib/Utils/index.js.map +1 -0
  246. package/lib/Utils/link-preview.d.ts +21 -0
  247. package/lib/Utils/link-preview.d.ts.map +1 -0
  248. package/lib/Utils/link-preview.js +2 -1
  249. package/lib/Utils/link-preview.js.map +1 -0
  250. package/lib/Utils/logger.d.ts +13 -0
  251. package/lib/Utils/logger.d.ts.map +1 -0
  252. package/lib/Utils/logger.js +2 -1
  253. package/lib/Utils/logger.js.map +1 -0
  254. package/lib/Utils/lt-hash.d.ts +8 -0
  255. package/lib/Utils/lt-hash.d.ts.map +1 -0
  256. package/lib/Utils/lt-hash.js +2 -1
  257. package/lib/Utils/lt-hash.js.map +1 -0
  258. package/lib/Utils/make-mutex.d.ts +9 -0
  259. package/lib/Utils/make-mutex.d.ts.map +1 -0
  260. package/lib/Utils/make-mutex.js +2 -1
  261. package/lib/Utils/make-mutex.js.map +1 -0
  262. package/lib/Utils/message-retry-manager.d.ts +110 -0
  263. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  264. package/lib/Utils/message-retry-manager.js +3 -2
  265. package/lib/Utils/message-retry-manager.js.map +1 -0
  266. package/lib/Utils/messages-media.d.ts +130 -0
  267. package/lib/Utils/messages-media.d.ts.map +1 -0
  268. package/lib/Utils/messages-media.js +186 -180
  269. package/lib/Utils/messages-media.js.map +1 -0
  270. package/lib/Utils/messages-newsletter.d.ts +84 -0
  271. package/lib/Utils/messages-newsletter.js +316 -0
  272. package/lib/Utils/messages.d.ts +92 -0
  273. package/lib/Utils/messages.d.ts.map +1 -0
  274. package/lib/Utils/messages.js +929 -1116
  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 +2 -7
  279. package/lib/Utils/noise-handler.js.map +1 -0
  280. package/lib/Utils/pre-key-manager.d.ts +28 -0
  281. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  282. package/lib/Utils/pre-key-manager.js +2 -1
  283. package/lib/Utils/pre-key-manager.js.map +1 -0
  284. package/lib/Utils/process-message.d.ts +60 -0
  285. package/lib/Utils/process-message.d.ts.map +1 -0
  286. package/lib/Utils/process-message.js +2 -1
  287. package/lib/Utils/process-message.js.map +1 -0
  288. package/lib/Utils/reporting-utils.d.ts +11 -0
  289. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  290. package/lib/Utils/reporting-utils.js +2 -1
  291. package/lib/Utils/reporting-utils.js.map +1 -0
  292. package/lib/Utils/resolve-jid.d.ts +43 -0
  293. package/lib/Utils/resolve-jid.js +101 -0
  294. package/lib/Utils/signal.d.ts +34 -0
  295. package/lib/Utils/signal.d.ts.map +1 -0
  296. package/lib/Utils/signal.js +2 -1
  297. package/lib/Utils/signal.js.map +1 -0
  298. package/lib/Utils/streamToBuffer.js +17 -0
  299. package/lib/Utils/sync-action-utils.d.ts +19 -0
  300. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  301. package/lib/Utils/sync-action-utils.js +2 -1
  302. package/lib/Utils/sync-action-utils.js.map +1 -0
  303. package/lib/Utils/tc-token-utils.d.ts +12 -0
  304. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  305. package/lib/Utils/tc-token-utils.js +2 -1
  306. package/lib/Utils/tc-token-utils.js.map +1 -0
  307. package/lib/Utils/use-mongo-file-auth-state.js +77 -0
  308. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  309. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  310. package/lib/Utils/use-multi-file-auth-state.js +2 -1
  311. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  312. package/lib/Utils/use-single-file-auth-state.js +74 -0
  313. package/lib/Utils/validate-connection.d.ts +11 -0
  314. package/lib/Utils/validate-connection.d.ts.map +1 -0
  315. package/lib/Utils/validate-connection.js +4 -10
  316. package/lib/Utils/validate-connection.js.map +1 -0
  317. package/lib/WABinary/constants.d.ts +28 -0
  318. package/lib/WABinary/constants.d.ts.map +1 -0
  319. package/lib/WABinary/constants.js +2 -1
  320. package/lib/WABinary/constants.js.map +1 -0
  321. package/lib/WABinary/decode.d.ts +7 -0
  322. package/lib/WABinary/decode.d.ts.map +1 -0
  323. package/lib/WABinary/decode.js +2 -1
  324. package/lib/WABinary/decode.js.map +1 -0
  325. package/lib/WABinary/encode.d.ts +3 -0
  326. package/lib/WABinary/encode.d.ts.map +1 -0
  327. package/lib/WABinary/encode.js +2 -1
  328. package/lib/WABinary/encode.js.map +1 -0
  329. package/lib/WABinary/generic-utils.d.ts +15 -0
  330. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  331. package/lib/WABinary/generic-utils.js +15 -97
  332. package/lib/WABinary/generic-utils.js.map +1 -0
  333. package/lib/WABinary/index.d.ts +6 -0
  334. package/lib/WABinary/index.d.ts.map +1 -0
  335. package/lib/WABinary/index.js +3 -1
  336. package/lib/WABinary/index.js.map +1 -0
  337. package/lib/WABinary/jid-utils.d.ts +48 -0
  338. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  339. package/lib/WABinary/jid-utils.js +4 -1
  340. package/lib/WABinary/jid-utils.js.map +1 -0
  341. package/lib/WABinary/types.d.ts +19 -0
  342. package/lib/WABinary/types.d.ts.map +1 -0
  343. package/lib/WABinary/types.js +2 -1
  344. package/lib/WABinary/types.js.map +1 -0
  345. package/lib/WAM/BinaryInfo.d.ts +9 -0
  346. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  347. package/lib/WAM/BinaryInfo.js +2 -1
  348. package/lib/WAM/BinaryInfo.js.map +1 -0
  349. package/lib/WAM/constants.d.ts +40 -0
  350. package/lib/WAM/constants.d.ts.map +1 -0
  351. package/lib/WAM/constants.js +2 -1
  352. package/lib/WAM/constants.js.map +1 -0
  353. package/lib/WAM/encode.d.ts +3 -0
  354. package/lib/WAM/encode.d.ts.map +1 -0
  355. package/lib/WAM/encode.js +2 -1
  356. package/lib/WAM/encode.js.map +1 -0
  357. package/lib/WAM/index.d.ts +4 -0
  358. package/lib/WAM/index.d.ts.map +1 -0
  359. package/lib/WAM/index.js +2 -1
  360. package/lib/WAM/index.js.map +1 -0
  361. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  362. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  363. package/lib/WAUSync/Protocols/USyncContactProtocol.js +2 -1
  364. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  365. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  366. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  367. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +2 -1
  368. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  369. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  370. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  371. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +2 -1
  372. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  373. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  374. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  375. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +2 -1
  376. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  377. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  378. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  379. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +2 -1
  380. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  381. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
  382. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  383. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +2 -1
  384. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  385. package/lib/WAUSync/Protocols/index.d.ts +5 -0
  386. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  387. package/lib/WAUSync/Protocols/index.js +3 -1
  388. package/lib/WAUSync/Protocols/index.js.map +1 -0
  389. package/lib/WAUSync/USyncQuery.d.ts +29 -0
  390. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  391. package/lib/WAUSync/USyncQuery.js +2 -1
  392. package/lib/WAUSync/USyncQuery.js.map +1 -0
  393. package/lib/WAUSync/USyncUser.d.ts +13 -0
  394. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  395. package/lib/WAUSync/USyncUser.js +2 -1
  396. package/lib/WAUSync/USyncUser.js.map +1 -0
  397. package/lib/WAUSync/index.d.ts +4 -0
  398. package/lib/WAUSync/index.d.ts.map +1 -0
  399. package/lib/WAUSync/index.js +2 -1
  400. package/lib/WAUSync/index.js.map +1 -0
  401. package/lib/index.d.ts +12 -0
  402. package/lib/index.d.ts.map +1 -0
  403. package/lib/index.js +22 -2
  404. package/lib/index.js.map +1 -0
  405. package/package.json +75 -72
  406. package/lib/Utils/offline-node-processor.js +0 -39
  407. package/lib/Utils/stanza-ack.js +0 -37
@@ -1,42 +1,27 @@
1
+ import { once } from 'events';
1
2
  import { Boom } from '@hapi/boom';
2
- import { spawn } from 'child_process';
3
3
  import * as Crypto from 'crypto';
4
- import { once } from 'events';
5
- import { createReadStream, createWriteStream, promises as fs, WriteStream } from 'fs';
4
+ import { createReadStream, createWriteStream, promises as fs } from 'fs';
6
5
  import { tmpdir } from 'os';
7
6
  import { join } from 'path';
8
7
  import { Readable, Transform } from 'stream';
9
8
  import { URL } from 'url';
10
9
  import { proto } from '../../WAProto/index.js';
11
- import { DEFAULT_ORIGIN, MEDIA_HKDF_KEY_MAPPING, MEDIA_PATH_MAP, NEWSLETTER_MEDIA_PATH_MAP } from '../Defaults/index.js';
10
+ import { DEFAULT_ORIGIN, MEDIA_HKDF_KEY_MAPPING, MEDIA_PATH_MAP } from '../Defaults/index.js';
12
11
  import { getBinaryNodeChild, getBinaryNodeChildBuffer, jidNormalizedUser } from '../WABinary/index.js';
13
12
  import { aesDecryptGCM, aesEncryptGCM, hkdf } from './crypto.js';
14
13
  import { generateMessageIDV2 } from './generics.js';
15
14
  const getTmpFilesDirectory = () => tmpdir();
16
- let imageProcessingLibrary;
17
- export const getImageProcessingLibrary = async () => {
18
- if (imageProcessingLibrary) {
19
- return imageProcessingLibrary;
20
- }
15
+ const getImageProcessingLibrary = async () => {
21
16
  //@ts-ignore
22
- const [sharp, image, jimp] = await Promise.all([
23
- import('sharp').catch(() => { }),
24
- import('@napi-rs/image').catch(() => { }),
25
- import('jimp').catch(() => { })
26
- ]);
17
+ const [jimp, sharp] = await Promise.all([import('jimp').catch(() => { }), import('sharp').catch(() => { })]);
27
18
  if (sharp) {
28
- imageProcessingLibrary = { sharp };
29
- }
30
- else if (image) {
31
- imageProcessingLibrary = { image };
19
+ return { sharp };
32
20
  }
33
- else if (jimp) {
34
- imageProcessingLibrary = { jimp };
35
- }
36
- else {
37
- throw new Boom('No image processing library available');
21
+ if (jimp) {
22
+ return { jimp };
38
23
  }
39
- return imageProcessingLibrary;
24
+ throw new Boom('No image processing library available');
40
25
  };
41
26
  export const hkdfInfoKey = (type) => {
42
27
  const hkdfInfo = MEDIA_HKDF_KEY_MAPPING[type];
@@ -44,7 +29,7 @@ export const hkdfInfoKey = (type) => {
44
29
  };
45
30
  export const getRawMediaUploadData = async (media, mediaType, logger) => {
46
31
  const { stream } = await getStream(media);
47
- logger?.debug('got stream for raw upload');
32
+
48
33
  const hasher = Crypto.createHash('sha256');
49
34
  const filePath = join(tmpdir(), mediaType + generateMessageIDV2());
50
35
  const fileWriteStream = createWriteStream(filePath);
@@ -61,7 +46,7 @@ export const getRawMediaUploadData = async (media, mediaType, logger) => {
61
46
  await once(fileWriteStream, 'finish');
62
47
  stream.destroy();
63
48
  const fileSha256 = hasher.digest();
64
- logger?.debug('hashed data for raw upload');
49
+
65
50
  return {
66
51
  filePath: filePath,
67
52
  fileSha256,
@@ -96,34 +81,7 @@ export async function getMediaKeys(buffer, mediaType) {
96
81
  macKey: expandedMediaKey.slice(48, 80)
97
82
  };
98
83
  }
99
- /** Extracts video thumb using FFMPEG */
100
- export const extractVideoThumb = async (path, time, size) => {
101
- const ff = spawn('ffmpeg', [
102
- '-loglevel', 'error',
103
- '-ss', String(time),
104
- '-i', path,
105
- '-map_metadata', '-1',
106
- '-vf', `scale=${size.width}:-1`,
107
- '-frames:v', '1',
108
- '-c:v', 'mjpeg',
109
- '-f', 'image2pipe',
110
- 'pipe:1'
111
- ], {
112
- stdio: ['ignore', 'pipe', 'pipe']
113
- });
114
- const stdoutChunks = [];
115
- const stderrChunks = [];
116
- ff.stdout.on('data', chunk => stdoutChunks.push(chunk));
117
- ff.stderr.on('data', chunk => stderrChunks.push(chunk));
118
- const [code] = await once(ff, 'close');
119
- if (code !== 0) {
120
- throw new Boom(
121
- `FFmpeg failed (code ${code}):\n` +
122
- Buffer.concat(stderrChunks).toString('utf8')
123
- );
124
- }
125
- return Buffer.concat(stdoutChunks);
126
- };
84
+
127
85
  export const extractImageThumb = async (bufferOrFilePath, width = 32) => {
128
86
  // TODO: Move entirely to sharp, removing jimp as it supports readable streams
129
87
  // This will have positive speed and performance impacts as well as minimizing RAM usage.
@@ -131,7 +89,7 @@ export const extractImageThumb = async (bufferOrFilePath, width = 32) => {
131
89
  bufferOrFilePath = await toBuffer(bufferOrFilePath);
132
90
  }
133
91
  const lib = await getImageProcessingLibrary();
134
- if ('sharp' in lib && lib.sharp?.default) {
92
+ if ('sharp' in lib && typeof lib.sharp?.default === 'function') {
135
93
  const img = lib.sharp.default(bufferOrFilePath);
136
94
  const dimensions = await img.metadata();
137
95
  const buffer = await img.resize(width).jpeg({ quality: 50 }).toBuffer();
@@ -143,22 +101,7 @@ export const extractImageThumb = async (bufferOrFilePath, width = 32) => {
143
101
  }
144
102
  };
145
103
  }
146
- else if ('image' in lib && lib.image?.Transformer) {
147
- if (!Buffer.isBuffer(bufferOrFilePath)) {
148
- bufferOrFilePath = await fs.readFile(bufferOrFilePath);
149
- }
150
- const img = new lib.image.Transformer(bufferOrFilePath);
151
- const dimensions = await img.metadata();
152
- const buffer = await img.resize(width, undefined, 0).jpeg(50);
153
- return {
154
- buffer,
155
- original: {
156
- width: dimensions.width,
157
- height: dimensions.height
158
- }
159
- };
160
- }
161
- else if ('jimp' in lib && lib.jimp?.Jimp) {
104
+ else if ('jimp' in lib && typeof lib.jimp?.Jimp === 'object') {
162
105
  const jimp = await lib.jimp.Jimp.read(bufferOrFilePath);
163
106
  const dimensions = {
164
107
  width: jimp.width,
@@ -179,7 +122,7 @@ export const extractImageThumb = async (bufferOrFilePath, width = 32) => {
179
122
  export const encodeBase64EncodedStringForUpload = (b64) => encodeURIComponent(b64.replace(/\+/g, '-').replace(/\//g, '_').replace(/\=+$/, ''));
180
123
  export const generateProfilePicture = async (mediaUpload, dimensions) => {
181
124
  let buffer;
182
- const { width: w = 720, height: h = 720 } = dimensions || {};
125
+ const { width: w = 640, height: h = 640 } = dimensions || {};
183
126
  if (Buffer.isBuffer(mediaUpload)) {
184
127
  buffer = mediaUpload;
185
128
  }
@@ -191,26 +134,20 @@ export const generateProfilePicture = async (mediaUpload, dimensions) => {
191
134
  }
192
135
  const lib = await getImageProcessingLibrary();
193
136
  let img;
194
- if ('sharp' in lib && lib.sharp?.default) {
137
+ if ('sharp' in lib && typeof lib.sharp?.default === 'function') {
195
138
  img = lib.sharp
196
139
  .default(buffer)
197
140
  .resize(w, h)
198
141
  .jpeg({
199
- quality: 80
200
- })
142
+ quality: 50
143
+ })
201
144
  .toBuffer();
202
145
  }
203
- else if ('image' in lib && lib.image?.Transformer) {
204
- img = new lib.image
205
- .Transformer(buffer)
206
- .resize(w, h, 0)
207
- .jpeg(80);
208
- }
209
- else if ('jimp' in lib && lib.jimp?.Jimp) {
146
+ else if ('jimp' in lib && typeof lib.jimp?.Jimp === 'function') {
210
147
  const jimp = await lib.jimp.Jimp.read(buffer);
211
148
  const min = Math.min(jimp.width, jimp.height);
212
149
  const cropped = jimp.crop({ x: 0, y: 0, w: min, h: min });
213
- img = cropped.resize({ w, h, mode: lib.jimp.ResizeStrategy.BILINEAR }).getBuffer('image/jpeg', { quality: 80 });
150
+ img = cropped.resize({ w, h, mode: lib.jimp.ResizeStrategy.BILINEAR }).getBuffer('image/jpeg', { quality: 50 });
214
151
  }
215
152
  else {
216
153
  throw new Boom('No image processing library available');
@@ -224,22 +161,34 @@ export const mediaMessageSHA256B64 = (message) => {
224
161
  const media = Object.values(message)[0];
225
162
  return media?.fileSha256 && Buffer.from(media.fileSha256).toString('base64');
226
163
  };
227
- export async function getAudioDuration(buffer) {
164
+ export async function getAudioDuration(buffer, mimeType) {
228
165
  const musicMetadata = await import('music-metadata');
229
166
  let metadata;
230
167
  const options = {
231
- duration: true
168
+ duration: true,
169
+ ...(mimeType ? { mimeType } : {})
232
170
  };
233
171
  if (Buffer.isBuffer(buffer)) {
234
- metadata = await musicMetadata.parseBuffer(buffer, undefined, options);
172
+ metadata = await musicMetadata.parseBuffer(buffer, mimeType || undefined, options);
235
173
  }
236
174
  else if (typeof buffer === 'string') {
237
- metadata = await musicMetadata.parseFile(buffer, options);
175
+ // parseFile tidak support mimeType langsung, tapi kita bisa baca sebagai buffer
176
+ // supaya mimeType hint bisa dipass — penting untuk m4a/aac yang nama filenya tanpa ekstensi
177
+ try {
178
+ metadata = await musicMetadata.parseFile(buffer, options);
179
+ } catch (_) {
180
+ // fallback: baca file sebagai buffer lalu parse dengan mimeType
181
+ const { readFileSync } = await import('fs');
182
+ const buf = readFileSync(buffer);
183
+ metadata = await musicMetadata.parseBuffer(buf, mimeType || undefined, options);
184
+ }
238
185
  }
239
186
  else {
240
- metadata = await musicMetadata.parseStream(buffer, undefined, options);
187
+ metadata = await musicMetadata.parseStream(buffer, mimeType || undefined, options);
241
188
  }
242
- return metadata.format.duration;
189
+ const dur = metadata.format.duration;
190
+ // Jangan return NaN/undefined — WhatsApp akan tampilkan "Loading..." kalau seconds invalid
191
+ return (typeof dur === 'number' && !isNaN(dur) && isFinite(dur)) ? Math.round(dur) : 0;
243
192
  }
244
193
  /**
245
194
  referenced from and modifying https://github.com/wppconnect-team/wa-js/blob/main/src/chat/functions/prepareAudioWaveform.ts
@@ -259,32 +208,34 @@ export async function getAudioWaveform(buffer, logger) {
259
208
  else {
260
209
  audioData = await toBuffer(buffer);
261
210
  }
211
+ // Skip audio-decode for large buffers (> 3MB)
212
+ if (audioData.length > 3 * 1024 * 1024) {
213
+ return undefined;
214
+ }
262
215
  const audioBuffer = await decoder(audioData);
263
- const rawData = audioBuffer.getChannelData(0); // We only need to work with one channel of data
264
- const samples = 64; // Number of samples we want to have in our final data set
265
- const blockSize = Math.floor(rawData.length / samples); // the number of samples in each subdivision
216
+ const rawData = audioBuffer.getChannelData(0);
217
+ const samples = 64;
218
+ const blockSize = Math.floor(rawData.length / samples);
266
219
  const filteredData = [];
267
220
  for (let i = 0; i < samples; i++) {
268
- const blockStart = blockSize * i; // the location of the first sample in the block
221
+ const blockStart = blockSize * i;
269
222
  let sum = 0;
270
223
  for (let j = 0; j < blockSize; j++) {
271
- sum = sum + Math.abs(rawData[blockStart + j]); // find the sum of all the samples in the block
224
+ sum = sum + Math.abs(rawData[blockStart + j]);
272
225
  }
273
- filteredData.push(sum / blockSize); // divide the sum by the block size to get the average
226
+ filteredData.push(sum / blockSize);
274
227
  }
275
- // This guarantees that the largest data point will be set to 1, and the rest of the data will scale proportionally.
276
228
  const multiplier = Math.pow(Math.max(...filteredData), -1);
277
229
  const normalizedData = filteredData.map(n => n * multiplier);
278
- // Generate waveform like WhatsApp
279
230
  const waveform = new Uint8Array(normalizedData.map(n => Math.floor(100 * n)));
280
231
  return waveform;
281
232
  }
282
233
  catch (e) {
283
- logger?.debug('Failed to generate waveform: ' + e);
284
234
  }
285
235
  }
236
+
286
237
  export const toReadable = (buffer) => {
287
- const readable = new Readable({ read: () => { } });
238
+ const readable = new Readable({ read: () => { }, highWaterMark: 64 * 1024 });
288
239
  readable.push(buffer);
289
240
  readable.push(null);
290
241
  return readable;
@@ -297,6 +248,9 @@ export const toBuffer = async (stream) => {
297
248
  stream.destroy();
298
249
  return Buffer.concat(chunks);
299
250
  };
251
+
252
+
253
+
300
254
  export const getStream = async (item, opts) => {
301
255
  if (Buffer.isBuffer(item)) {
302
256
  return { stream: toReadable(item), type: 'buffer' };
@@ -320,7 +274,7 @@ export async function generateThumbnail(file, mediaType, options) {
320
274
  let originalImageDimensions;
321
275
  if (mediaType === 'image') {
322
276
  const { buffer, original } = await extractImageThumb(file);
323
- thumbnail = buffer;
277
+ thumbnail = buffer.toString('base64');
324
278
  if (original.width && original.height) {
325
279
  originalImageDimensions = {
326
280
  width: original.width,
@@ -329,13 +283,7 @@ export async function generateThumbnail(file, mediaType, options) {
329
283
  }
330
284
  }
331
285
  else if (mediaType === 'video') {
332
- try {
333
- const buffer = await extractVideoThumb(file, '00:00:00', { width: 32, height: 32 });
334
- thumbnail = buffer;
335
- }
336
- catch (err) {
337
- options.logger?.debug('could not generate video thumb: ' + err);
338
- }
286
+ // Video thumbnail generation skipped (ffmpeg removed)
339
287
  }
340
288
  return {
341
289
  thumbnail,
@@ -354,34 +302,41 @@ export const getHttpStream = async (url, options = {}) => {
354
302
  // @ts-ignore Node18+ Readable.fromWeb exists
355
303
  return response.body instanceof Readable ? response.body : Readable.fromWeb(response.body);
356
304
  };
357
- export const encryptedStream = async (media, mediaType, { logger, saveOriginalFileIfRequired, opts } = {}) => {
305
+
306
+ export const encryptedStream = async (media, mediaType, { logger, saveOriginalFileIfRequired, opts, isPtt, forceOpus } = {}) => {
358
307
  const { stream, type } = await getStream(media, opts);
359
- logger?.debug('fetched media stream');
308
+ let finalStream = stream;
309
+ let opusConverted = false;
310
+
360
311
  const mediaKey = Crypto.randomBytes(32);
361
312
  const { cipherKey, iv, macKey } = await getMediaKeys(mediaKey, mediaType);
362
- const encFilePath = join(getTmpFilesDirectory(), mediaType + generateMessageIDV2() + '-enc');
363
- const encFileWriteStream = createWriteStream(encFilePath);
364
- let originalFileStream;
365
- let originalFilePath;
366
- if (saveOriginalFileIfRequired) {
367
- originalFilePath = join(getTmpFilesDirectory(), mediaType + generateMessageIDV2() + '-original');
368
- originalFileStream = createWriteStream(originalFilePath);
369
- }
313
+ const encWriteStream = new Readable({ read: () => {}, highWaterMark: 64 * 1024 });
314
+ let bodyPath;
315
+ let writeStream;
316
+ let didSaveToTmpPath = false;
317
+
318
+ if (type === 'file') {
319
+ bodyPath = media.url?.toString?.() || media.url;
320
+ } else if (saveOriginalFileIfRequired) {
321
+ bodyPath = join(getTmpFilesDirectory(), mediaType + generateMessageIDV2());
322
+ writeStream = createWriteStream(bodyPath);
323
+ didSaveToTmpPath = true;
324
+ }
325
+
370
326
  let fileLength = 0;
371
327
  const aes = Crypto.createCipheriv('aes-256-cbc', cipherKey, iv);
372
- const hmac = Crypto.createHmac('sha256', macKey).update(iv);
373
- const sha256Plain = Crypto.createHash('sha256');
374
- const sha256Enc = Crypto.createHash('sha256');
375
- const onChunk = async (buff) => {
376
- sha256Enc.update(buff);
377
- hmac.update(buff);
378
- // Handle backpressure: if write returns false, wait for drain
379
- if (!encFileWriteStream.write(buff)) {
380
- await once(encFileWriteStream, 'drain');
381
- }
328
+ let hmac = Crypto.createHmac('sha256', macKey).update(iv);
329
+ let sha256Plain = Crypto.createHash('sha256');
330
+ let sha256Enc = Crypto.createHash('sha256');
331
+
332
+ const onChunk = (buff) => {
333
+ sha256Enc = sha256Enc.update(buff);
334
+ hmac = hmac.update(buff);
335
+ encWriteStream.push(buff);
382
336
  };
337
+
383
338
  try {
384
- for await (const data of stream) {
339
+ for await (const data of finalStream) {
385
340
  fileLength += data.length;
386
341
  if (type === 'remote' &&
387
342
  opts?.maxContentLength &&
@@ -390,57 +345,48 @@ export const encryptedStream = async (media, mediaType, { logger, saveOriginalFi
390
345
  data: { media, type }
391
346
  });
392
347
  }
393
- if (originalFileStream) {
394
- if (!originalFileStream.write(data)) {
395
- await once(originalFileStream, 'drain');
348
+ sha256Plain = sha256Plain.update(data);
349
+ if (writeStream) {
350
+ if (!writeStream.write(data)) {
351
+ await once(writeStream, 'drain');
396
352
  }
397
353
  }
398
- sha256Plain.update(data);
399
- await onChunk(aes.update(data));
354
+ onChunk(aes.update(data));
400
355
  }
401
- await onChunk(aes.final());
356
+
357
+ onChunk(aes.final());
402
358
  const mac = hmac.digest().slice(0, 10);
403
- sha256Enc.update(mac);
359
+ sha256Enc = sha256Enc.update(mac);
404
360
  const fileSha256 = sha256Plain.digest();
405
361
  const fileEncSha256 = sha256Enc.digest();
406
- encFileWriteStream.write(mac);
407
- const encFinishPromise = once(encFileWriteStream, 'finish');
408
- const originalFinishPromise = originalFileStream ? once(originalFileStream, 'finish') : Promise.resolve();
409
- encFileWriteStream.end();
410
- originalFileStream?.end?.();
411
- stream.destroy();
412
- // Wait for write streams to fully flush to disk
413
- // This helps reduce memory pressure by allowing OS to release buffers
414
- await encFinishPromise;
415
- await originalFinishPromise;
416
- logger?.debug('encrypted data successfully');
362
+
363
+ encWriteStream.push(mac);
364
+ encWriteStream.push(null);
365
+ writeStream?.end();
366
+ if (writeStream) await once(writeStream, 'finish');
367
+ finalStream.destroy();
368
+
417
369
  return {
418
370
  mediaKey,
419
- originalFilePath,
420
- encFilePath,
371
+ encWriteStream,
372
+ bodyPath,
421
373
  mac,
422
374
  fileEncSha256,
423
375
  fileSha256,
424
- fileLength
376
+ fileLength,
377
+ didSaveToTmpPath,
378
+ opusConverted
425
379
  };
426
- }
427
- catch (error) {
428
- // destroy all streams with error
429
- encFileWriteStream.destroy();
430
- originalFileStream?.destroy?.();
380
+ } catch (error) {
381
+ encWriteStream.destroy();
382
+ writeStream?.destroy();
431
383
  aes.destroy();
432
384
  hmac.destroy();
433
385
  sha256Plain.destroy();
434
386
  sha256Enc.destroy();
435
387
  stream.destroy();
436
- try {
437
- await fs.unlink(encFilePath);
438
- if (originalFilePath) {
439
- await fs.unlink(originalFilePath);
440
- }
441
- }
442
- catch (err) {
443
- logger?.error({ err }, 'failed deleting tmp files');
388
+ if (didSaveToTmpPath) {
389
+ try { await fs.unlink(bodyPath); } catch (_) {}
444
390
  }
445
391
  throw error;
446
392
  }
@@ -666,16 +612,14 @@ const uploadWithFetch = async ({ url, filePath, headers, timeoutMs, agent }) =>
666
612
  */
667
613
  const uploadMedia = async (params, logger) => {
668
614
  if (isNodeRuntime()) {
669
- logger?.debug('Using Node.js https module for upload (avoids undici buffering bug)');
670
615
  return uploadWithNodeHttp(params);
671
616
  }
672
617
  else {
673
- logger?.debug('Using web-standard Fetch API for upload');
674
618
  return uploadWithFetch(params);
675
619
  }
676
620
  };
677
621
  export const getWAUploadToServer = ({ customUploadHosts, fetchAgent, logger, options }, refreshMediaConn) => {
678
- return async (filePath, { mediaType, fileEncSha256B64, timeoutMs, newsletter }) => {
622
+ return async (streamOrPath, { mediaType, fileEncSha256B64, timeoutMs, newsletter }) => {
679
623
  // send a query JSON to obtain the url & auth token to upload our media
680
624
  let uploadInfo = await refreshMediaConn(false);
681
625
  let urls;
@@ -693,29 +637,52 @@ export const getWAUploadToServer = ({ customUploadHosts, fetchAgent, logger, opt
693
637
  'Content-Type': 'application/octet-stream',
694
638
  Origin: DEFAULT_ORIGIN
695
639
  };
696
- for (const { hostname } of hosts) {
697
- logger.debug(`uploading to "${hostname}"`);
640
+ // Collect buffer from Readable stream or read from file path
641
+ let reqBuffer;
642
+ if (Buffer.isBuffer(streamOrPath)) {
643
+ reqBuffer = streamOrPath;
644
+ } else if (typeof streamOrPath === 'string') {
645
+ reqBuffer = await fs.readFile(streamOrPath);
646
+ } else {
647
+ // Readable stream
648
+ const chunks = [];
649
+ for await (const chunk of streamOrPath) chunks.push(chunk);
650
+ reqBuffer = Buffer.concat(chunks);
651
+ }
652
+ // Newsletter uses different upload path
653
+ let mediaPath = MEDIA_PATH_MAP[mediaType];
654
+ if (newsletter) {
655
+ mediaPath = mediaPath?.replace('/mms/', '/newsletter/newsletter-');
656
+ }
657
+ for (const { hostname, maxContentLengthBytes } of hosts) {
698
658
  const auth = encodeURIComponent(uploadInfo.auth);
699
- // vltcs@changes 06-02-26 --- Switch media path map for newsletter uploads
700
- const mediaPathMap = newsletter ? NEWSLETTER_MEDIA_PATH_MAP : MEDIA_PATH_MAP
701
- const url = `https://${hostname}${mediaPathMap[mediaType]}/${fileEncSha256B64}?auth=${auth}&token=${fileEncSha256B64}`;
659
+ const url = `https://${hostname}${mediaPath}/${fileEncSha256B64}?auth=${auth}&token=${fileEncSha256B64}`;
660
+
702
661
  let result;
703
662
  try {
704
- result = await uploadMedia({
705
- url,
706
- filePath,
707
- headers,
708
- timeoutMs,
709
- agent: fetchAgent
710
- }, logger);
663
+ // Upload buffer directly like wiley (avoids file I/O issues)
664
+ const axios = (await import('axios')).default;
665
+ const body = await axios.post(url, reqBuffer, {
666
+ ...options,
667
+ headers: {
668
+ ...headers,
669
+ },
670
+ httpsAgent: fetchAgent,
671
+ timeout: timeoutMs,
672
+ responseType: 'json',
673
+ maxBodyLength: Infinity,
674
+ maxContentLength: Infinity,
675
+ });
676
+ result = body.data;
677
+
711
678
  if (result?.url || result?.direct_path) {
712
679
  urls = {
713
680
  mediaUrl: result.url,
714
681
  directPath: result.direct_path,
682
+ handle: result.handle,
715
683
  meta_hmac: result.meta_hmac,
716
684
  fbid: result.fbid,
717
- ts: result.ts,
718
- handle: result.handle
685
+ ts: result.ts
719
686
  };
720
687
  break;
721
688
  }
@@ -726,6 +693,7 @@ export const getWAUploadToServer = ({ customUploadHosts, fetchAgent, logger, opt
726
693
  }
727
694
  catch (error) {
728
695
  const isLast = hostname === hosts[uploadInfo.hosts.length - 1]?.hostname;
696
+
729
697
  logger.warn({ trace: error?.stack, uploadResult: result }, `Error in uploading to ${hostname} ${isLast ? '' : ', retrying...'}`);
730
698
  }
731
699
  }
@@ -821,4 +789,42 @@ const MEDIA_RETRY_STATUS_MAP = {
821
789
  [proto.MediaRetryNotification.ResultType.DECRYPTION_ERROR]: 412,
822
790
  [proto.MediaRetryNotification.ResultType.NOT_FOUND]: 404,
823
791
  [proto.MediaRetryNotification.ResultType.GENERAL_ERROR]: 418
824
- };
792
+ };
793
+
794
+ export const prepareStream = async (media, mediaType, { logger, saveOriginalFileIfRequired, opts, isPtt, forceOpus } = {}) => {
795
+ const { stream, type } = await getStream(media, opts);
796
+ let buffer = await toBuffer(stream);
797
+
798
+ let opusConverted = false;
799
+
800
+ let bodyPath;
801
+ let didSaveToTmpPath = false;
802
+ try {
803
+ if (type === 'file') {
804
+ bodyPath = media.url?.toString?.() || media.url;
805
+ } else if (saveOriginalFileIfRequired) {
806
+ bodyPath = join(getTmpFilesDirectory(), mediaType + generateMessageIDV2());
807
+ const { writeFileSync } = await import('fs');
808
+ writeFileSync(bodyPath, buffer);
809
+ didSaveToTmpPath = true;
810
+ }
811
+ const fileLength = buffer.length;
812
+ const fileSha256 = Crypto.createHash('sha256').update(buffer).digest();
813
+ return {
814
+ mediaKey: undefined,
815
+ encWriteStream: buffer,
816
+ fileLength,
817
+ fileSha256,
818
+ fileEncSha256: undefined,
819
+ bodyPath,
820
+ didSaveToTmpPath,
821
+ opusConverted
822
+ };
823
+ } catch (error) {
824
+ if (didSaveToTmpPath && bodyPath) {
825
+ try { await fs.unlink(bodyPath); } catch (_) {}
826
+ }
827
+ throw error;
828
+ }
829
+ };
830
+ //# sourceMappingURL=messages-media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages-media.js","sourceRoot":"","sources":["../../src/Utils/messages-media.ts"],"names":[],"mappings":"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"}