@violetix/baileys 0.0.0-stage → 0.3.18

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 (452) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +2843 -2
  3. package/WAProto/index.d.ts +15932 -0
  4. package/WAProto/index.js +115856 -0
  5. package/engine-requirements.js +13 -0
  6. package/lib/Defaults/index.d.ts +145 -0
  7. package/lib/Defaults/index.d.ts.map +1 -0
  8. package/lib/Defaults/index.js +157 -0
  9. package/lib/Defaults/index.js.map +1 -0
  10. package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
  11. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  12. package/lib/Signal/Group/ciphertext-message.js +12 -0
  13. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  14. package/lib/Signal/Group/group-session-builder.d.ts +8 -0
  15. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  16. package/lib/Signal/Group/group-session-builder.js +30 -0
  17. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  18. package/lib/Signal/Group/group_cipher.d.ts +11 -0
  19. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  20. package/lib/Signal/Group/group_cipher.js +82 -0
  21. package/lib/Signal/Group/group_cipher.js.map +1 -0
  22. package/lib/Signal/Group/index.d.ts +12 -0
  23. package/lib/Signal/Group/index.d.ts.map +1 -0
  24. package/lib/Signal/Group/index.js +12 -0
  25. package/lib/Signal/Group/index.js.map +1 -0
  26. package/lib/Signal/Group/keyhelper.d.ts +7 -0
  27. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  28. package/lib/Signal/Group/keyhelper.js +18 -0
  29. package/lib/Signal/Group/keyhelper.js.map +1 -0
  30. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  31. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  32. package/lib/Signal/Group/sender-chain-key.js +26 -0
  33. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  34. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  35. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  36. package/lib/Signal/Group/sender-key-distribution-message.js +63 -0
  37. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  38. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  39. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  40. package/lib/Signal/Group/sender-key-message.js +66 -0
  41. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  42. package/lib/Signal/Group/sender-key-name.d.ts +12 -0
  43. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  44. package/lib/Signal/Group/sender-key-name.js +48 -0
  45. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  46. package/lib/Signal/Group/sender-key-record.d.ts +13 -0
  47. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  48. package/lib/Signal/Group/sender-key-record.js +41 -0
  49. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  50. package/lib/Signal/Group/sender-key-state.d.ts +17 -0
  51. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  52. package/lib/Signal/Group/sender-key-state.js +84 -0
  53. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  54. package/lib/Signal/Group/sender-message-key.d.ts +12 -0
  55. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  56. package/lib/Signal/Group/sender-message-key.js +26 -0
  57. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  58. package/lib/Signal/libsignal.d.ts +55 -0
  59. package/lib/Signal/libsignal.d.ts.map +1 -0
  60. package/lib/Signal/libsignal.js +403 -0
  61. package/lib/Signal/libsignal.js.map +1 -0
  62. package/lib/Signal/lid-mapping.d.ts +21 -0
  63. package/lib/Signal/lid-mapping.d.ts.map +1 -0
  64. package/lib/Signal/lid-mapping.js +277 -0
  65. package/lib/Signal/lid-mapping.js.map +1 -0
  66. package/lib/Socket/Client/index.d.ts +3 -0
  67. package/lib/Socket/Client/index.d.ts.map +1 -0
  68. package/lib/Socket/Client/index.js +3 -0
  69. package/lib/Socket/Client/index.js.map +1 -0
  70. package/lib/Socket/Client/types.d.ts +6 -0
  71. package/lib/Socket/Client/types.d.ts.map +1 -0
  72. package/lib/Socket/Client/types.js +93 -0
  73. package/lib/Socket/Client/types.js.map +1 -0
  74. package/lib/Socket/Client/websocket.d.ts +13 -0
  75. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  76. package/lib/Socket/Client/websocket.js +57 -0
  77. package/lib/Socket/Client/websocket.js.map +1 -0
  78. package/lib/Socket/business.d.ts +428 -0
  79. package/lib/Socket/business.d.ts.map +1 -0
  80. package/lib/Socket/business.js +380 -0
  81. package/lib/Socket/business.js.map +1 -0
  82. package/lib/Socket/chats.d.ts +176 -0
  83. package/lib/Socket/chats.d.ts.map +1 -0
  84. package/lib/Socket/chats.js +1238 -0
  85. package/lib/Socket/chats.js.map +1 -0
  86. package/lib/Socket/communities.d.ts +595 -0
  87. package/lib/Socket/communities.d.ts.map +1 -0
  88. package/lib/Socket/communities.js +432 -0
  89. package/lib/Socket/communities.js.map +1 -0
  90. package/lib/Socket/graphql.js +908 -0
  91. package/lib/Socket/groups.d.ts +318 -0
  92. package/lib/Socket/groups.d.ts.map +1 -0
  93. package/lib/Socket/groups.js +364 -0
  94. package/lib/Socket/groups.js.map +1 -0
  95. package/lib/Socket/index.d.ts +940 -0
  96. package/lib/Socket/index.d.ts.map +1 -0
  97. package/lib/Socket/index.js +19 -0
  98. package/lib/Socket/index.js.map +1 -0
  99. package/lib/Socket/interop.js +562 -0
  100. package/lib/Socket/managed-account.js +210 -0
  101. package/lib/Socket/messages-recv.d.ts +367 -0
  102. package/lib/Socket/messages-recv.d.ts.map +1 -0
  103. package/lib/Socket/messages-recv.js +2199 -0
  104. package/lib/Socket/messages-recv.js.map +1 -0
  105. package/lib/Socket/messages-send.d.ts +364 -0
  106. package/lib/Socket/messages-send.d.ts.map +1 -0
  107. package/lib/Socket/messages-send.js +1501 -0
  108. package/lib/Socket/messages-send.js.map +1 -0
  109. package/lib/Socket/mex.d.ts +2 -0
  110. package/lib/Socket/mex.d.ts.map +1 -0
  111. package/lib/Socket/mex.js +42 -0
  112. package/lib/Socket/mex.js.map +1 -0
  113. package/lib/Socket/newsletter.d.ts +315 -0
  114. package/lib/Socket/newsletter.d.ts.map +1 -0
  115. package/lib/Socket/newsletter.js +235 -0
  116. package/lib/Socket/newsletter.js.map +1 -0
  117. package/lib/Socket/privacy.js +448 -0
  118. package/lib/Socket/registration.js +430 -0
  119. package/lib/Socket/socket.d.ts +93 -0
  120. package/lib/Socket/socket.d.ts.map +1 -0
  121. package/lib/Socket/socket.js +1272 -0
  122. package/lib/Socket/socket.js.map +1 -0
  123. package/lib/Store/index.d.ts +4 -0
  124. package/lib/Store/index.d.ts.map +1 -0
  125. package/lib/Store/index.js +4 -0
  126. package/lib/Store/index.js.map +1 -0
  127. package/lib/Store/make-in-memory-store.d.ts +63 -0
  128. package/lib/Store/make-in-memory-store.d.ts.map +1 -0
  129. package/lib/Store/make-in-memory-store.js +462 -0
  130. package/lib/Store/make-in-memory-store.js.map +1 -0
  131. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  132. package/lib/Store/make-ordered-dictionary.d.ts.map +1 -0
  133. package/lib/Store/make-ordered-dictionary.js +79 -0
  134. package/lib/Store/make-ordered-dictionary.js.map +1 -0
  135. package/lib/Store/object-repository.d.ts +11 -0
  136. package/lib/Store/object-repository.d.ts.map +1 -0
  137. package/lib/Store/object-repository.js +24 -0
  138. package/lib/Store/object-repository.js.map +1 -0
  139. package/lib/Types/Auth.d.ts +60 -0
  140. package/lib/Types/Auth.d.ts.map +1 -0
  141. package/lib/Types/Auth.js +2 -0
  142. package/lib/Types/Auth.js.map +1 -0
  143. package/lib/Types/Bussines.d.ts +9 -0
  144. package/lib/Types/Bussines.d.ts.map +1 -0
  145. package/lib/Types/Bussines.js +2 -0
  146. package/lib/Types/Bussines.js.map +1 -0
  147. package/lib/Types/Call.d.ts +22 -0
  148. package/lib/Types/Call.d.ts.map +1 -0
  149. package/lib/Types/Call.js +2 -0
  150. package/lib/Types/Call.js.map +1 -0
  151. package/lib/Types/Chat.d.ts +3 -0
  152. package/lib/Types/Chat.d.ts.map +1 -0
  153. package/lib/Types/Chat.js +8 -0
  154. package/lib/Types/Chat.js.map +1 -0
  155. package/lib/Types/Contact.d.ts +11 -0
  156. package/lib/Types/Contact.d.ts.map +1 -0
  157. package/lib/Types/Contact.js +2 -0
  158. package/lib/Types/Contact.js.map +1 -0
  159. package/lib/Types/Events.d.ts +41 -0
  160. package/lib/Types/Events.d.ts.map +1 -0
  161. package/lib/Types/Events.js +2 -0
  162. package/lib/Types/Events.js.map +1 -0
  163. package/lib/Types/GroupMetadata.d.ts +36 -0
  164. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  165. package/lib/Types/GroupMetadata.js +2 -0
  166. package/lib/Types/GroupMetadata.js.map +1 -0
  167. package/lib/Types/Label.d.ts +3 -0
  168. package/lib/Types/Label.d.ts.map +1 -0
  169. package/lib/Types/Label.js +25 -0
  170. package/lib/Types/Label.js.map +1 -0
  171. package/lib/Types/LabelAssociation.d.ts +3 -0
  172. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  173. package/lib/Types/LabelAssociation.js +7 -0
  174. package/lib/Types/LabelAssociation.js.map +1 -0
  175. package/lib/Types/Message.d.ts +22 -0
  176. package/lib/Types/Message.d.ts.map +1 -0
  177. package/lib/Types/Message.js +18 -0
  178. package/lib/Types/Message.js.map +1 -0
  179. package/lib/Types/Mex.d.ts +3 -0
  180. package/lib/Types/Mex.d.ts.map +1 -0
  181. package/lib/Types/Mex.js +49 -0
  182. package/lib/Types/Mex.js.map +1 -0
  183. package/lib/Types/Product.d.ts +5 -0
  184. package/lib/Types/Product.d.ts.map +1 -0
  185. package/lib/Types/Product.js +2 -0
  186. package/lib/Types/Product.js.map +1 -0
  187. package/lib/Types/RichType.d.ts +3 -0
  188. package/lib/Types/RichType.d.ts.map +1 -0
  189. package/lib/Types/RichType.js +23 -0
  190. package/lib/Types/RichType.js.map +1 -0
  191. package/lib/Types/Signal.d.ts +10 -0
  192. package/lib/Types/Signal.d.ts.map +1 -0
  193. package/lib/Types/Signal.js +2 -0
  194. package/lib/Types/Signal.js.map +1 -0
  195. package/lib/Types/Socket.d.ts +33 -0
  196. package/lib/Types/Socket.d.ts.map +1 -0
  197. package/lib/Types/Socket.js +2 -0
  198. package/lib/Types/Socket.js.map +1 -0
  199. package/lib/Types/State.d.ts +6 -0
  200. package/lib/Types/State.d.ts.map +1 -0
  201. package/lib/Types/State.js +56 -0
  202. package/lib/Types/State.js.map +1 -0
  203. package/lib/Types/USync.d.ts +9 -0
  204. package/lib/Types/USync.d.ts.map +1 -0
  205. package/lib/Types/USync.js +2 -0
  206. package/lib/Types/USync.js.map +1 -0
  207. package/lib/Types/index.d.ts +16 -0
  208. package/lib/Types/index.d.ts.map +1 -0
  209. package/lib/Types/index.js +26 -0
  210. package/lib/Types/index.js.map +1 -0
  211. package/lib/Utils/async-utils.js +7 -0
  212. package/lib/Utils/auth-utils.d.ts +59 -0
  213. package/lib/Utils/auth-utils.d.ts.map +1 -0
  214. package/lib/Utils/auth-utils.js +306 -0
  215. package/lib/Utils/auth-utils.js.map +1 -0
  216. package/lib/Utils/browser-utils.d.ts +10 -0
  217. package/lib/Utils/browser-utils.d.ts.map +1 -0
  218. package/lib/Utils/browser-utils.js +29 -0
  219. package/lib/Utils/browser-utils.js.map +1 -0
  220. package/lib/Utils/business.d.ts +50 -0
  221. package/lib/Utils/business.d.ts.map +1 -0
  222. package/lib/Utils/business.js +231 -0
  223. package/lib/Utils/business.js.map +1 -0
  224. package/lib/Utils/chat-utils.d.ts +409 -0
  225. package/lib/Utils/chat-utils.d.ts.map +1 -0
  226. package/lib/Utils/chat-utils.js +872 -0
  227. package/lib/Utils/chat-utils.js.map +1 -0
  228. package/lib/Utils/companion-reg-client-utils.d.ts +10 -0
  229. package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
  230. package/lib/Utils/companion-reg-client-utils.js +69 -0
  231. package/lib/Utils/companion-reg-client-utils.js.map +1 -0
  232. package/lib/Utils/crypto-worker.js +20 -0
  233. package/lib/Utils/crypto.d.ts +40 -0
  234. package/lib/Utils/crypto.d.ts.map +1 -0
  235. package/lib/Utils/crypto.js +118 -0
  236. package/lib/Utils/crypto.js.map +1 -0
  237. package/lib/Utils/decode-wa-message.d.ts +85 -0
  238. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  239. package/lib/Utils/decode-wa-message.js +467 -0
  240. package/lib/Utils/decode-wa-message.js.map +1 -0
  241. package/lib/Utils/event-buffer.d.ts +13 -0
  242. package/lib/Utils/event-buffer.d.ts.map +1 -0
  243. package/lib/Utils/event-buffer.js +651 -0
  244. package/lib/Utils/event-buffer.js.map +1 -0
  245. package/lib/Utils/generics.d.ts +64 -0
  246. package/lib/Utils/generics.d.ts.map +1 -0
  247. package/lib/Utils/generics.js +442 -0
  248. package/lib/Utils/generics.js.map +1 -0
  249. package/lib/Utils/history.d.ts +77 -0
  250. package/lib/Utils/history.d.ts.map +1 -0
  251. package/lib/Utils/history.js +188 -0
  252. package/lib/Utils/history.js.map +1 -0
  253. package/lib/Utils/identity-change-handler.d.ts +14 -0
  254. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  255. package/lib/Utils/identity-change-handler.js +50 -0
  256. package/lib/Utils/identity-change-handler.js.map +1 -0
  257. package/lib/Utils/index.d.ts +26 -0
  258. package/lib/Utils/index.d.ts.map +1 -0
  259. package/lib/Utils/index.js +26 -0
  260. package/lib/Utils/index.js.map +1 -0
  261. package/lib/Utils/link-preview.d.ts +13 -0
  262. package/lib/Utils/link-preview.d.ts.map +1 -0
  263. package/lib/Utils/link-preview.js +85 -0
  264. package/lib/Utils/link-preview.js.map +1 -0
  265. package/lib/Utils/listener-guard.js +48 -0
  266. package/lib/Utils/logger.d.ts +3 -0
  267. package/lib/Utils/logger.d.ts.map +1 -0
  268. package/lib/Utils/logger.js +3 -0
  269. package/lib/Utils/logger.js.map +1 -0
  270. package/lib/Utils/lt-hash.d.ts +7 -0
  271. package/lib/Utils/lt-hash.d.ts.map +1 -0
  272. package/lib/Utils/lt-hash.js +8 -0
  273. package/lib/Utils/lt-hash.js.map +1 -0
  274. package/lib/Utils/make-mutex.d.ts +7 -0
  275. package/lib/Utils/make-mutex.d.ts.map +1 -0
  276. package/lib/Utils/make-mutex.js +33 -0
  277. package/lib/Utils/make-mutex.js.map +1 -0
  278. package/lib/Utils/message-retry-manager.d.ts +80 -0
  279. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  280. package/lib/Utils/message-retry-manager.js +285 -0
  281. package/lib/Utils/message-retry-manager.js.map +1 -0
  282. package/lib/Utils/messages-media.d.ts +166 -0
  283. package/lib/Utils/messages-media.d.ts.map +1 -0
  284. package/lib/Utils/messages-media.js +957 -0
  285. package/lib/Utils/messages-media.js.map +1 -0
  286. package/lib/Utils/messages.d.ts +46 -0
  287. package/lib/Utils/messages.d.ts.map +1 -0
  288. package/lib/Utils/messages.js +1887 -0
  289. package/lib/Utils/messages.js.map +1 -0
  290. package/lib/Utils/meta-ai-msmsg.d.ts +12 -0
  291. package/lib/Utils/meta-ai-msmsg.js +124 -0
  292. package/lib/Utils/noise-handler.d.ts +21 -0
  293. package/lib/Utils/noise-handler.d.ts.map +1 -0
  294. package/lib/Utils/noise-handler.js +206 -0
  295. package/lib/Utils/noise-handler.js.map +1 -0
  296. package/lib/Utils/offline-node-processor.d.ts +10 -0
  297. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  298. package/lib/Utils/offline-node-processor.js +40 -0
  299. package/lib/Utils/offline-node-processor.js.map +1 -0
  300. package/lib/Utils/pre-key-manager.d.ts +26 -0
  301. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  302. package/lib/Utils/pre-key-manager.js +106 -0
  303. package/lib/Utils/pre-key-manager.js.map +1 -0
  304. package/lib/Utils/process-message.d.ts +102 -0
  305. package/lib/Utils/process-message.d.ts.map +1 -0
  306. package/lib/Utils/process-message.js +798 -0
  307. package/lib/Utils/process-message.js.map +1 -0
  308. package/lib/Utils/reporting-utils.d.ts +13 -0
  309. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  310. package/lib/Utils/reporting-utils.js +258 -0
  311. package/lib/Utils/reporting-utils.js.map +1 -0
  312. package/lib/Utils/rich-message-utils.d.ts +49 -0
  313. package/lib/Utils/rich-message-utils.d.ts.map +1 -0
  314. package/lib/Utils/rich-message-utils.js +369 -0
  315. package/lib/Utils/rich-message-utils.js.map +1 -0
  316. package/lib/Utils/session-queue.js +33 -0
  317. package/lib/Utils/signal.d.ts +83 -0
  318. package/lib/Utils/signal.d.ts.map +1 -0
  319. package/lib/Utils/signal.js +201 -0
  320. package/lib/Utils/signal.js.map +1 -0
  321. package/lib/Utils/stanza-ack.d.ts +22 -0
  322. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  323. package/lib/Utils/stanza-ack.js +72 -0
  324. package/lib/Utils/stanza-ack.js.map +1 -0
  325. package/lib/Utils/sync-action-utils.d.ts +3 -0
  326. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  327. package/lib/Utils/sync-action-utils.js +49 -0
  328. package/lib/Utils/sync-action-utils.js.map +1 -0
  329. package/lib/Utils/tc-token-utils.d.ts +30 -0
  330. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  331. package/lib/Utils/tc-token-utils.js +164 -0
  332. package/lib/Utils/tc-token-utils.js.map +1 -0
  333. package/lib/Utils/use-multi-file-auth-state.d.ts +12 -0
  334. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  335. package/lib/Utils/use-multi-file-auth-state.js +175 -0
  336. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  337. package/lib/Utils/use-single-file-auth-state.d.ts +11 -0
  338. package/lib/Utils/use-single-file-auth-state.d.ts.map +1 -0
  339. package/lib/Utils/use-single-file-auth-state.js +109 -0
  340. package/lib/Utils/use-single-file-auth-state.js.map +1 -0
  341. package/lib/Utils/use-sqlite-auth-state.d.ts +11 -0
  342. package/lib/Utils/use-sqlite-auth-state.d.ts.map +1 -0
  343. package/lib/Utils/use-sqlite-auth-state.js +109 -0
  344. package/lib/Utils/use-sqlite-auth-state.js.map +1 -0
  345. package/lib/Utils/validate-connection.d.ts +44 -0
  346. package/lib/Utils/validate-connection.d.ts.map +1 -0
  347. package/lib/Utils/validate-connection.js +210 -0
  348. package/lib/Utils/validate-connection.js.map +1 -0
  349. package/lib/Utils/worker-pool.js +73 -0
  350. package/lib/WABinary/constants.d.ts +62 -0
  351. package/lib/WABinary/constants.d.ts.map +1 -0
  352. package/lib/WABinary/constants.js +1467 -0
  353. package/lib/WABinary/constants.js.map +1 -0
  354. package/lib/WABinary/decode.d.ts +10 -0
  355. package/lib/WABinary/decode.d.ts.map +1 -0
  356. package/lib/WABinary/decode.js +262 -0
  357. package/lib/WABinary/decode.js.map +1 -0
  358. package/lib/WABinary/encode.d.ts +3 -0
  359. package/lib/WABinary/encode.d.ts.map +1 -0
  360. package/lib/WABinary/encode.js +220 -0
  361. package/lib/WABinary/encode.js.map +1 -0
  362. package/lib/WABinary/generic-utils.d.ts +77 -0
  363. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  364. package/lib/WABinary/generic-utils.js +226 -0
  365. package/lib/WABinary/generic-utils.js.map +1 -0
  366. package/lib/WABinary/index.d.ts +6 -0
  367. package/lib/WABinary/index.d.ts.map +1 -0
  368. package/lib/WABinary/index.js +6 -0
  369. package/lib/WABinary/index.js.map +1 -0
  370. package/lib/WABinary/jid-utils.d.ts +29 -0
  371. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  372. package/lib/WABinary/jid-utils.js +96 -0
  373. package/lib/WABinary/jid-utils.js.map +1 -0
  374. package/lib/WABinary/types.d.ts +6 -0
  375. package/lib/WABinary/types.d.ts.map +1 -0
  376. package/lib/WABinary/types.js +2 -0
  377. package/lib/WABinary/types.js.map +1 -0
  378. package/lib/WAM/BinaryInfo.d.ts +8 -0
  379. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  380. package/lib/WAM/BinaryInfo.js +10 -0
  381. package/lib/WAM/BinaryInfo.js.map +1 -0
  382. package/lib/WAM/constants.d.ts +34927 -0
  383. package/lib/WAM/constants.d.ts.map +1 -0
  384. package/lib/WAM/constants.js +22853 -0
  385. package/lib/WAM/constants.js.map +1 -0
  386. package/lib/WAM/encode.d.ts +2 -0
  387. package/lib/WAM/encode.d.ts.map +1 -0
  388. package/lib/WAM/encode.js +150 -0
  389. package/lib/WAM/encode.js.map +1 -0
  390. package/lib/WAM/index.d.ts +4 -0
  391. package/lib/WAM/index.d.ts.map +1 -0
  392. package/lib/WAM/index.js +4 -0
  393. package/lib/WAM/index.js.map +1 -0
  394. package/lib/WAUSync/Protocols/USyncBusinessProtocol.d.ts +8 -0
  395. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +99 -0
  396. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +37 -0
  397. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  398. package/lib/WAUSync/Protocols/USyncContactProtocol.js +53 -0
  399. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  400. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  401. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  402. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +54 -0
  403. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  404. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  405. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  406. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +27 -0
  407. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  408. package/lib/WAUSync/Protocols/USyncFeatureProtocol.d.ts +9 -0
  409. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +70 -0
  410. package/lib/WAUSync/Protocols/USyncPictureProtocol.d.ts +12 -0
  411. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +28 -0
  412. package/lib/WAUSync/Protocols/USyncSidelistProtocol.d.ts +10 -0
  413. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +25 -0
  414. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  415. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  416. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +38 -0
  417. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  418. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.d.ts +11 -0
  419. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +34 -0
  420. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  421. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
  422. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +31 -0
  423. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
  424. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +39 -0
  425. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  426. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +51 -0
  427. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  428. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +15 -0
  429. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  430. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
  431. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  432. package/lib/WAUSync/Protocols/index.d.ts +11 -0
  433. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  434. package/lib/WAUSync/Protocols/index.js +11 -0
  435. package/lib/WAUSync/Protocols/index.js.map +1 -0
  436. package/lib/WAUSync/USyncQuery.d.ts +32 -0
  437. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  438. package/lib/WAUSync/USyncQuery.js +185 -0
  439. package/lib/WAUSync/USyncQuery.js.map +1 -0
  440. package/lib/WAUSync/USyncUser.d.ts +25 -0
  441. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  442. package/lib/WAUSync/USyncUser.js +48 -0
  443. package/lib/WAUSync/USyncUser.js.map +1 -0
  444. package/lib/WAUSync/index.d.ts +4 -0
  445. package/lib/WAUSync/index.d.ts.map +1 -0
  446. package/lib/WAUSync/index.js +4 -0
  447. package/lib/WAUSync/index.js.map +1 -0
  448. package/lib/index.d.ts +12 -0
  449. package/lib/index.d.ts.map +1 -0
  450. package/lib/index.js +12 -0
  451. package/lib/index.js.map +1 -0
  452. package/package.json +122 -5
@@ -0,0 +1,318 @@
1
+ export function makeGroupsSocket(config: any): {
2
+ groupQuery: (jid: any, type: any, content: any) => Promise<any>;
3
+ groupMetadata: (jid: any) => Promise<{
4
+ id: any;
5
+ notify: any;
6
+ addressingMode: any;
7
+ subject: any;
8
+ subjectOwner: any;
9
+ subjectOwnerPn: any;
10
+ subjectOwnerUsername: any;
11
+ subjectTime: number;
12
+ size: any;
13
+ creation: number;
14
+ owner: string | undefined;
15
+ ownerPn: string | undefined;
16
+ ownerUsername: any;
17
+ owner_country_code: any;
18
+ desc: any;
19
+ descId: any;
20
+ descOwner: string | undefined;
21
+ descOwnerPn: string | undefined;
22
+ descOwnerUsername: any;
23
+ descTime: number | undefined;
24
+ linkedParent: any;
25
+ restrict: boolean;
26
+ announce: boolean;
27
+ isCommunity: boolean;
28
+ isCommunityAnnounce: boolean;
29
+ joinApprovalMode: boolean;
30
+ memberAddMode: boolean;
31
+ participants: any;
32
+ ephemeralDuration: number | undefined;
33
+ }>;
34
+ groupCreate: (subject: any, participants: any) => Promise<{
35
+ id: any;
36
+ notify: any;
37
+ addressingMode: any;
38
+ subject: any;
39
+ subjectOwner: any;
40
+ subjectOwnerPn: any;
41
+ subjectOwnerUsername: any;
42
+ subjectTime: number;
43
+ size: any;
44
+ creation: number;
45
+ owner: string | undefined;
46
+ ownerPn: string | undefined;
47
+ ownerUsername: any;
48
+ owner_country_code: any;
49
+ desc: any;
50
+ descId: any;
51
+ descOwner: string | undefined;
52
+ descOwnerPn: string | undefined;
53
+ descOwnerUsername: any;
54
+ descTime: number | undefined;
55
+ linkedParent: any;
56
+ restrict: boolean;
57
+ announce: boolean;
58
+ isCommunity: boolean;
59
+ isCommunityAnnounce: boolean;
60
+ joinApprovalMode: boolean;
61
+ memberAddMode: boolean;
62
+ participants: any;
63
+ ephemeralDuration: number | undefined;
64
+ }>;
65
+ groupLeave: (id: any) => Promise<void>;
66
+ groupUpdateSubject: (jid: any, subject: any) => Promise<void>;
67
+ groupRequestParticipantsList: (jid: any) => Promise<any>;
68
+ groupRequestParticipantsUpdate: (jid: any, participants: any, action: any) => Promise<any>;
69
+ groupParticipantsUpdate: (jid: any, participants: any, action: any) => Promise<any>;
70
+ groupUpdateDescription: (jid: any, description: any) => Promise<void>;
71
+ groupInviteCode: (jid: any) => Promise<any>;
72
+ groupRevokeInvite: (jid: any) => Promise<any>;
73
+ groupAcceptInvite: (code: any) => Promise<any>;
74
+ /**
75
+ * revoke a v4 invite for someone
76
+ * @param groupJid group jid
77
+ * @param invitedJid jid of person you invited
78
+ * @returns true if successful
79
+ */
80
+ groupRevokeInviteV4: (groupJid: any, invitedJid: any) => Promise<boolean>;
81
+ /**
82
+ * accept a GroupInviteMessage
83
+ * @param key the key of the invite message, or optionally only provide the jid of the person who sent the invite
84
+ * @param inviteMessage the message to accept
85
+ */
86
+ groupAcceptInviteV4: (...args: any[]) => Promise<any>;
87
+ groupGetInviteInfo: (code: any) => Promise<{
88
+ id: any;
89
+ notify: any;
90
+ addressingMode: any;
91
+ subject: any;
92
+ subjectOwner: any;
93
+ subjectOwnerPn: any;
94
+ subjectOwnerUsername: any;
95
+ subjectTime: number;
96
+ size: any;
97
+ creation: number;
98
+ owner: string | undefined;
99
+ ownerPn: string | undefined;
100
+ ownerUsername: any;
101
+ owner_country_code: any;
102
+ desc: any;
103
+ descId: any;
104
+ descOwner: string | undefined;
105
+ descOwnerPn: string | undefined;
106
+ descOwnerUsername: any;
107
+ descTime: number | undefined;
108
+ linkedParent: any;
109
+ restrict: boolean;
110
+ announce: boolean;
111
+ isCommunity: boolean;
112
+ isCommunityAnnounce: boolean;
113
+ joinApprovalMode: boolean;
114
+ memberAddMode: boolean;
115
+ participants: any;
116
+ ephemeralDuration: number | undefined;
117
+ }>;
118
+ groupToggleEphemeral: (jid: any, ephemeralExpiration: any) => Promise<void>;
119
+ groupSettingUpdate: (jid: any, setting: any) => Promise<void>;
120
+ groupMemberAddMode: (jid: any, mode: any) => Promise<void>;
121
+ groupJoinApprovalMode: (jid: any, mode: any) => Promise<void>;
122
+ groupFetchAllParticipating: () => Promise<{}>;
123
+ findUserId: (pnLid: any) => Promise<{
124
+ lid: undefined;
125
+ phoneNumber: undefined;
126
+ }>;
127
+ serverProps: {
128
+ privacyTokenOn1to1: boolean;
129
+ profilePicPrivacyToken: boolean;
130
+ lidTrustedTokenIssueToLid: boolean;
131
+ };
132
+ createCallLink: (type: any, event: any, timeoutMs: any) => Promise<any>;
133
+ getBotListV2: () => Promise<{
134
+ jid: any;
135
+ personaId: any;
136
+ }[]>;
137
+ messageMutex: {
138
+ mutex(code: any): any;
139
+ };
140
+ receiptMutex: {
141
+ mutex(code: any): any;
142
+ };
143
+ appStatePatchMutex: {
144
+ mutex(code: any): any;
145
+ };
146
+ notificationMutex: {
147
+ mutex(code: any): any;
148
+ };
149
+ fetchPrivacySettings: (force?: boolean) => Promise<any>;
150
+ upsertMessage: (...args: any[]) => Promise<any>;
151
+ appPatch: (patchCreate: any) => Promise<void>;
152
+ sendPresenceUpdate: (type: any, toJid: any) => Promise<void>;
153
+ presenceSubscribe: (toJid: any) => Promise<void>;
154
+ profilePictureUrl: (jid: any, type?: string, timeoutMs?: number, shouldIncludeTcToken?: boolean) => Promise<any>;
155
+ fetchBlocklist: () => Promise<any>;
156
+ fetchStatus: (...jids: any[]) => Promise<any>;
157
+ fetchDisappearingDuration: (...jids: any[]) => Promise<any>;
158
+ updateProfilePicture: (jid: any, content: any, dimensions: any) => Promise<void>;
159
+ removeProfilePicture: (jid: any) => Promise<void>;
160
+ updateProfileStatus: (status: any) => Promise<void>;
161
+ updateProfileName: (name: any) => Promise<void>;
162
+ updateBlockStatus: (jid: any, action: any) => Promise<void>;
163
+ updateDisableLinkPreviewsPrivacy: (isPreviewsDisabled: any) => Promise<void>;
164
+ updateCallPrivacy: (value: any) => Promise<void>;
165
+ updateMessagesPrivacy: (value: any) => Promise<void>;
166
+ updateLastSeenPrivacy: (value: any) => Promise<void>;
167
+ updateOnlinePrivacy: (value: any) => Promise<void>;
168
+ updateProfilePicturePrivacy: (value: any) => Promise<void>;
169
+ updateStatusPrivacy: (value: any) => Promise<void>;
170
+ updateReadReceiptsPrivacy: (value: any) => Promise<void>;
171
+ updateGroupsAddPrivacy: (value: any) => Promise<void>;
172
+ updateDefaultDisappearingMode: (duration: any) => Promise<void>;
173
+ getBusinessProfile: (jid: any) => Promise<{
174
+ wid: any;
175
+ address: any;
176
+ description: any;
177
+ website: any[];
178
+ email: any;
179
+ category: any;
180
+ business_hours: {
181
+ timezone: any;
182
+ business_config: any;
183
+ };
184
+ } | undefined>;
185
+ resyncAppState: (...args: any[]) => Promise<any>;
186
+ chatModify: (mod: any, jid: any) => Promise<void>;
187
+ cleanDirtyBits: (type: any, fromTimestamp: any) => Promise<void>;
188
+ addOrEditContact: (jid: any, contact: any) => Promise<void>;
189
+ removeContact: (jid: any) => Promise<void>;
190
+ placeholderResendCache: any;
191
+ addLabel: (jid: any, labels: any) => Promise<void>;
192
+ addChatLabel: (jid: any, labelId: any) => Promise<void>;
193
+ removeChatLabel: (jid: any, labelId: any) => Promise<void>;
194
+ addMessageLabel: (jid: any, messageId: any, labelId: any) => Promise<void>;
195
+ removeMessageLabel: (jid: any, messageId: any, labelId: any) => Promise<void>;
196
+ star: (jid: any, messages: any, star: any) => Promise<void>;
197
+ addOrEditQuickReply: (quickReply: any) => Promise<void>;
198
+ removeQuickReply: (timestamp: any) => Promise<void>;
199
+ type: string;
200
+ ws: import("./Client/websocket.js").WebSocketClient;
201
+ ev: {
202
+ process(handler: any): () => void;
203
+ emit(event: any, evData: any): any;
204
+ isBuffering(): boolean;
205
+ buffer: () => void;
206
+ flush: () => boolean;
207
+ createBufferedFunction(work: any): (...args: any[]) => Promise<any>;
208
+ on: (...args: any[]) => any;
209
+ off: (...args: any[]) => any;
210
+ removeAllListeners: (...args: any[]) => any;
211
+ destroy(): void;
212
+ };
213
+ authState: {
214
+ creds: any;
215
+ keys: {
216
+ get: (type: any, ids: any) => Promise<any>;
217
+ set: (data: any) => Promise<void>;
218
+ isInTransaction: () => boolean;
219
+ transaction: (work: any, key: any) => Promise<any>;
220
+ };
221
+ };
222
+ signalRepository: any;
223
+ user: any;
224
+ generateMessageTag: () => string;
225
+ query: (node: any, timeoutMs: any) => Promise<any>;
226
+ waitForMessage: (msgId: any, timeoutMs?: any) => Promise<any>;
227
+ waitForSocketOpen: () => Promise<void>;
228
+ sendRawMessage: (data: any) => Promise<void>;
229
+ sendNode: (frame: any) => Promise<void>;
230
+ logout: (msg: any) => Promise<void>;
231
+ end: (error: any) => Promise<void>;
232
+ registerSocketEndHandler: (handler: any) => void;
233
+ onUnexpectedError: (err: any, msg: any) => void;
234
+ uploadPreKeys: (count?: number) => Promise<void>;
235
+ uploadPreKeysToServerIfRequired: () => Promise<void>;
236
+ digestKeyBundle: () => Promise<void>;
237
+ rotateSignedPreKey: () => Promise<void>;
238
+ requestPairingCode: (phoneNumber: any, customPairingCode: any) => Promise<any>;
239
+ updateServerTimeOffset: ({ attrs }: {
240
+ attrs: any;
241
+ }) => void;
242
+ sendUnifiedSession: () => Promise<void>;
243
+ wamBuffer: import("../index.js").BinaryInfo;
244
+ waitForConnectionUpdate: (check: any, timeoutMs: any) => Promise<void>;
245
+ sendWAMBuffer: (wamBuffer: any) => Promise<any>;
246
+ executeUSyncQuery: (usyncQuery: any) => Promise<any>;
247
+ onWhatsApp: (...phoneNumber: any[]) => Promise<any>;
248
+ onWhatsAppUsername: (...queries: (string | {
249
+ username: string;
250
+ usernameKey?: string;
251
+ lid?: string;
252
+ })[]) => Promise<{
253
+ username: string;
254
+ jid: any;
255
+ exists: boolean;
256
+ keyRequired: boolean;
257
+ isBusiness: boolean;
258
+ pnJid: string | undefined;
259
+ }[]>;
260
+ fetchUsername: (...jids: any[]) => Promise<{
261
+ jid: any;
262
+ username: string | undefined;
263
+ }[]>;
264
+ checkUsername: (username: string, includeSuggestions?: boolean, sessionId?: string) => Promise<{
265
+ available: boolean;
266
+ username: string;
267
+ session_id: string;
268
+ suggestions?: string[];
269
+ rejectionReasons?: string[];
270
+ suggestionsEligible?: boolean;
271
+ }>;
272
+ setUsername: (username: string, options?: {
273
+ source?: string;
274
+ sessionId?: string;
275
+ pin?: string;
276
+ }) => Promise<any>;
277
+ deleteUsername: () => Promise<any>;
278
+ getMyUsername: () => Promise<any>;
279
+ setUsernamePin: (pin: string | null) => Promise<any>;
280
+ fetchAccountReachoutTimelock: () => Promise<{
281
+ isActive: boolean;
282
+ timeEnforcementEnds: Date | undefined;
283
+ enforcementType: any;
284
+ }>;
285
+ fetchNewChatMessageCap: () => Promise<any>;
286
+ };
287
+ export function extractGroupMetadata(result: any): {
288
+ id: any;
289
+ notify: any;
290
+ addressingMode: any;
291
+ subject: any;
292
+ subjectOwner: any;
293
+ subjectOwnerPn: any;
294
+ subjectOwnerUsername: any;
295
+ subjectTime: number;
296
+ size: any;
297
+ creation: number;
298
+ owner: string | undefined;
299
+ ownerPn: string | undefined;
300
+ ownerUsername: any;
301
+ owner_country_code: any;
302
+ desc: any;
303
+ descId: any;
304
+ descOwner: string | undefined;
305
+ descOwnerPn: string | undefined;
306
+ descOwnerUsername: any;
307
+ descTime: number | undefined;
308
+ linkedParent: any;
309
+ restrict: boolean;
310
+ announce: boolean;
311
+ isCommunity: boolean;
312
+ isCommunityAnnounce: boolean;
313
+ joinApprovalMode: boolean;
314
+ memberAddMode: boolean;
315
+ participants: any;
316
+ ephemeralDuration: number | undefined;
317
+ };
318
+ //# sourceMappingURL=groups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/Socket/groups.js"],"names":[],"mappings":"AAMO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoLC;;;;;OAKG;;IAOH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CA3DS,cAAR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgIX;AACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0EN"}
@@ -0,0 +1,364 @@
1
+ import { Boom } from '@hapi/boom';
2
+ import { proto } from '../../WAProto/index.js';
3
+ import { WAMessageAddressingMode, WAMessageStubType } from '../Types/index.js';
4
+ import { generateMessageIDV2, unixTimestampSeconds } from '../Utils/index.js';
5
+ import { getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString, isLidUser, isPnUser, jidEncode, jidNormalizedUser } from '../WABinary/index.js';
6
+ import { makeChatsSocket } from './chats.js';
7
+ export const makeGroupsSocket = (config) => {
8
+ const sock = makeChatsSocket(config);
9
+ const { authState, ev, query, upsertMessage } = sock;
10
+ const groupQuery = async (jid, type, content) => query({
11
+ tag: 'iq',
12
+ attrs: {
13
+ type,
14
+ xmlns: 'w:g2',
15
+ to: jid
16
+ },
17
+ content
18
+ });
19
+ const inflightGroupMetadata = new Map();
20
+ const groupMetadata = async (jid) => {
21
+ if (inflightGroupMetadata.has(jid)) {
22
+ return inflightGroupMetadata.get(jid);
23
+ }
24
+ const promise = groupQuery(jid, 'get', [{ tag: 'query', attrs: { request: 'interactive' } }])
25
+ .then(result => extractGroupMetadata(result))
26
+ .catch(() => null)
27
+ .finally(() => inflightGroupMetadata.delete(jid));
28
+ inflightGroupMetadata.set(jid, promise);
29
+ return promise;
30
+ };
31
+ const groupFetchAllParticipating = async () => {
32
+ const result = await query({
33
+ tag: 'iq',
34
+ attrs: {
35
+ to: '@g.us',
36
+ xmlns: 'w:g2',
37
+ type: 'get'
38
+ },
39
+ content: [
40
+ {
41
+ tag: 'participating',
42
+ attrs: {},
43
+ content: [
44
+ { tag: 'participants', attrs: {} },
45
+ { tag: 'description', attrs: {} }
46
+ ]
47
+ }
48
+ ]
49
+ });
50
+ const data = {};
51
+ const groupsChild = getBinaryNodeChild(result, 'groups');
52
+ if (groupsChild) {
53
+ const groups = getBinaryNodeChildren(groupsChild, 'group');
54
+ for (const groupNode of groups) {
55
+ const meta = extractGroupMetadata({
56
+ tag: 'result',
57
+ attrs: {},
58
+ content: [groupNode]
59
+ });
60
+ data[meta.id] = meta;
61
+ }
62
+ }
63
+ // TODO: properly parse LID / PN DATA
64
+ sock.ev.emit('groups.update', Object.values(data));
65
+ return data;
66
+ };
67
+ sock.ws.on('CB:ib,,dirty', async (node) => {
68
+ const { attrs } = getBinaryNodeChild(node, 'dirty');
69
+ if (attrs.type !== 'groups') {
70
+ return;
71
+ }
72
+ await groupFetchAllParticipating();
73
+ await sock.cleanDirtyBits('groups');
74
+ });
75
+ return {
76
+ ...sock,
77
+ groupQuery,
78
+ groupMetadata,
79
+ groupCreate: async (subject, participants) => {
80
+ const key = generateMessageIDV2();
81
+ const result = await groupQuery('@g.us', 'set', [
82
+ {
83
+ tag: 'create',
84
+ attrs: {
85
+ subject,
86
+ key
87
+ },
88
+ content: participants.map(jid => ({
89
+ tag: 'participant',
90
+ attrs: { jid }
91
+ }))
92
+ }
93
+ ]);
94
+ try {
95
+ return extractGroupMetadata(result);
96
+ } catch {
97
+ return null;
98
+ }
99
+ },
100
+ groupLeave: async (id) => {
101
+ await groupQuery('@g.us', 'set', [
102
+ {
103
+ tag: 'leave',
104
+ attrs: {},
105
+ content: [{ tag: 'group', attrs: { id } }]
106
+ }
107
+ ]);
108
+ },
109
+ groupUpdateSubject: async (jid, subject) => {
110
+ await groupQuery(jid, 'set', [
111
+ {
112
+ tag: 'subject',
113
+ attrs: {},
114
+ content: Buffer.from(subject, 'utf-8')
115
+ }
116
+ ]);
117
+ },
118
+ groupRequestParticipantsList: async (jid) => {
119
+ const result = await groupQuery(jid, 'get', [
120
+ {
121
+ tag: 'membership_approval_requests',
122
+ attrs: {}
123
+ }
124
+ ]);
125
+ const node = getBinaryNodeChild(result, 'membership_approval_requests');
126
+ const participants = getBinaryNodeChildren(node, 'membership_approval_request');
127
+ return participants.map(v => v.attrs);
128
+ },
129
+ groupRequestParticipantsUpdate: async (jid, participants, action) => {
130
+ const result = await groupQuery(jid, 'set', [
131
+ {
132
+ tag: 'membership_requests_action',
133
+ attrs: {},
134
+ content: [
135
+ {
136
+ tag: action,
137
+ attrs: {},
138
+ content: participants.map(jid => ({
139
+ tag: 'participant',
140
+ attrs: { jid }
141
+ }))
142
+ }
143
+ ]
144
+ }
145
+ ]);
146
+ const node = getBinaryNodeChild(result, 'membership_requests_action');
147
+ const nodeAction = getBinaryNodeChild(node, action);
148
+ const participantsAffected = getBinaryNodeChildren(nodeAction, 'participant');
149
+ return participantsAffected.map(p => {
150
+ return { status: p.attrs.error || '200', jid: p.attrs.jid };
151
+ });
152
+ },
153
+ groupParticipantsUpdate: async (jid, participants, action) => {
154
+ const result = await groupQuery(jid, 'set', [
155
+ {
156
+ tag: action,
157
+ attrs: {},
158
+ content: participants.map(jid => ({
159
+ tag: 'participant',
160
+ attrs: { jid }
161
+ }))
162
+ }
163
+ ]);
164
+ const node = getBinaryNodeChild(result, action);
165
+ const participantsAffected = getBinaryNodeChildren(node, 'participant');
166
+ return participantsAffected.map(p => {
167
+ return { status: p.attrs.error || '200', jid: p.attrs.jid, content: p };
168
+ });
169
+ },
170
+ groupUpdateDescription: async (jid, description) => {
171
+ const metadata = await groupMetadata(jid);
172
+ const prev = metadata.descId ?? null;
173
+ await groupQuery(jid, 'set', [
174
+ {
175
+ tag: 'description',
176
+ attrs: {
177
+ ...(description ? { id: generateMessageIDV2() } : { delete: 'true' }),
178
+ ...(prev ? { prev } : {})
179
+ },
180
+ content: description ? [{ tag: 'body', attrs: {}, content: Buffer.from(description, 'utf-8') }] : undefined
181
+ }
182
+ ]);
183
+ },
184
+ groupInviteCode: async (jid) => {
185
+ const result = await groupQuery(jid, 'get', [{ tag: 'invite', attrs: {} }]);
186
+ const inviteNode = getBinaryNodeChild(result, 'invite');
187
+ return inviteNode?.attrs.code;
188
+ },
189
+ groupRevokeInvite: async (jid) => {
190
+ const result = await groupQuery(jid, 'set', [{ tag: 'invite', attrs: {} }]);
191
+ const inviteNode = getBinaryNodeChild(result, 'invite');
192
+ return inviteNode?.attrs.code;
193
+ },
194
+ groupAcceptInvite: async (code) => {
195
+ const results = await groupQuery('@g.us', 'set', [{ tag: 'invite', attrs: { code } }]);
196
+ const result = getBinaryNodeChild(results, 'group');
197
+ return result?.attrs.jid;
198
+ },
199
+ /**
200
+ * revoke a v4 invite for someone
201
+ * @param groupJid group jid
202
+ * @param invitedJid jid of person you invited
203
+ * @returns true if successful
204
+ */
205
+ groupRevokeInviteV4: async (groupJid, invitedJid) => {
206
+ const result = await groupQuery(groupJid, 'set', [
207
+ { tag: 'revoke', attrs: {}, content: [{ tag: 'participant', attrs: { jid: invitedJid } }] }
208
+ ]);
209
+ return !!result;
210
+ },
211
+ /**
212
+ * accept a GroupInviteMessage
213
+ * @param key the key of the invite message, or optionally only provide the jid of the person who sent the invite
214
+ * @param inviteMessage the message to accept
215
+ */
216
+ groupAcceptInviteV4: ev.createBufferedFunction(async (key, inviteMessage) => {
217
+ key = typeof key === 'string' ? { remoteJid: key } : key;
218
+ const results = await groupQuery(inviteMessage.groupJid, 'set', [
219
+ {
220
+ tag: 'accept',
221
+ attrs: {
222
+ code: inviteMessage.inviteCode,
223
+ expiration: inviteMessage.inviteExpiration.toString(),
224
+ admin: key.remoteJid
225
+ }
226
+ }
227
+ ]);
228
+ // if we have the full message key
229
+ // update the invite message to be expired
230
+ if (key.id) {
231
+ // create new invite message that is expired
232
+ inviteMessage = proto.Message.GroupInviteMessage.fromObject(inviteMessage);
233
+ inviteMessage.inviteExpiration = 0;
234
+ inviteMessage.inviteCode = '';
235
+ ev.emit('messages.update', [
236
+ {
237
+ key,
238
+ update: {
239
+ message: {
240
+ groupInviteMessage: inviteMessage
241
+ }
242
+ }
243
+ }
244
+ ]);
245
+ }
246
+ // generate the group add message
247
+ await upsertMessage({
248
+ key: {
249
+ remoteJid: inviteMessage.groupJid,
250
+ id: generateMessageIDV2(sock.user?.id),
251
+ fromMe: false,
252
+ participant: key.remoteJid
253
+ },
254
+ messageStubType: WAMessageStubType.GROUP_PARTICIPANT_ADD,
255
+ messageStubParameters: [JSON.stringify(authState.creds.me)],
256
+ participant: key.remoteJid,
257
+ messageTimestamp: unixTimestampSeconds()
258
+ }, 'notify');
259
+ return results.attrs.from;
260
+ }),
261
+ groupGetInviteInfo: async (code) => {
262
+ const results = await groupQuery('@g.us', 'get', [{ tag: 'invite', attrs: { code } }]);
263
+ try {
264
+ return extractGroupMetadata(results);
265
+ } catch {
266
+ return null;
267
+ }
268
+ },
269
+ groupToggleEphemeral: async (jid, ephemeralExpiration) => {
270
+ const content = ephemeralExpiration
271
+ ? { tag: 'ephemeral', attrs: { expiration: ephemeralExpiration.toString() } }
272
+ : { tag: 'not_ephemeral', attrs: {} };
273
+ await groupQuery(jid, 'set', [content]);
274
+ },
275
+ groupSettingUpdate: async (jid, setting) => {
276
+ await groupQuery(jid, 'set', [{ tag: setting, attrs: {} }]);
277
+ },
278
+ groupMemberAddMode: async (jid, mode) => {
279
+ await groupQuery(jid, 'set', [{ tag: 'member_add_mode', attrs: {}, content: mode }]);
280
+ },
281
+ groupJoinApprovalMode: async (jid, mode) => {
282
+ await groupQuery(jid, 'set', [
283
+ { tag: 'membership_approval_mode', attrs: {}, content: [{ tag: 'group_join', attrs: { state: mode } }] }
284
+ ]);
285
+ },
286
+ groupFetchAllParticipating
287
+ };
288
+ };
289
+ export const extractGroupMetadata = (result) => {
290
+ const group = getBinaryNodeChild(result, 'group');
291
+ if (!group) {
292
+ // Mirror WAWeb: surface server/client errors with their code+text instead of crashing.
293
+ const errorNode = getBinaryNodeChild(result, 'error');
294
+ if (errorNode) {
295
+ const code = errorNode.attrs.code ? +errorNode.attrs.code : 500;
296
+ const text = errorNode.attrs.text || 'group metadata query failed';
297
+ throw new Boom(text, { statusCode: code, data: errorNode });
298
+ }
299
+ throw new Boom('Invalid group metadata response: missing <group> node', { data: result });
300
+ }
301
+ if (!group.attrs.id) {
302
+ throw new Boom('Invalid group metadata response: missing group id', { data: group });
303
+ }
304
+ const descChild = getBinaryNodeChild(group, 'description');
305
+ let desc;
306
+ let descId;
307
+ let descOwner;
308
+ let descOwnerPn;
309
+ let descOwnerUsername;
310
+ let descTime;
311
+ if (descChild) {
312
+ desc = getBinaryNodeChildString(descChild, 'body');
313
+ descOwner = descChild.attrs.participant ? jidNormalizedUser(descChild.attrs.participant) : undefined;
314
+ descOwnerPn = descChild.attrs.participant_pn ? jidNormalizedUser(descChild.attrs.participant_pn) : undefined;
315
+ descOwnerUsername = descChild.attrs.participant_username || undefined;
316
+ descTime = +descChild.attrs.t;
317
+ descId = descChild.attrs.id;
318
+ }
319
+ const groupId = group.attrs.id.includes('@') ? group.attrs.id : jidEncode(group.attrs.id, 'g.us');
320
+ const eph = getBinaryNodeChild(group, 'ephemeral')?.attrs.expiration;
321
+ const memberAddMode = getBinaryNodeChildString(group, 'member_add_mode') === 'all_member_add';
322
+ const metadata = {
323
+ id: groupId,
324
+ notify: group.attrs.notify,
325
+ addressingMode: group.attrs.addressing_mode === 'lid' ? WAMessageAddressingMode.LID : WAMessageAddressingMode.PN,
326
+ subject: group.attrs.subject,
327
+ subjectOwner: group.attrs.s_o,
328
+ subjectOwnerPn: group.attrs.s_o_pn,
329
+ subjectOwnerUsername: group.attrs.s_o_username,
330
+ subjectTime: +group.attrs.s_t,
331
+ size: group.attrs.size ? +group.attrs.size : getBinaryNodeChildren(group, 'participant').length,
332
+ creation: +group.attrs.creation,
333
+ owner: group.attrs.creator ? jidNormalizedUser(group.attrs.creator) : undefined,
334
+ ownerPn: group.attrs.creator_pn ? jidNormalizedUser(group.attrs.creator_pn) : undefined,
335
+ ownerUsername: group.attrs.creator_username || undefined,
336
+ owner_country_code: group.attrs.creator_country_code,
337
+ desc,
338
+ descId,
339
+ descOwner,
340
+ descOwnerPn,
341
+ descOwnerUsername,
342
+ descTime,
343
+ linkedParent: getBinaryNodeChild(group, 'linked_parent')?.attrs.jid || undefined,
344
+ restrict: !!getBinaryNodeChild(group, 'locked'),
345
+ announce: !!getBinaryNodeChild(group, 'announcement'),
346
+ isCommunity: !!getBinaryNodeChild(group, 'parent'),
347
+ isCommunityAnnounce: !!getBinaryNodeChild(group, 'default_sub_group'),
348
+ joinApprovalMode: !!getBinaryNodeChild(group, 'membership_approval_mode'),
349
+ memberAddMode,
350
+ participants: getBinaryNodeChildren(group, 'participant').map(({ attrs }) => {
351
+ // TODO: Store LID MAPPINGS
352
+ return {
353
+ id: attrs.jid,
354
+ phoneNumber: isLidUser(attrs.jid) && isPnUser(attrs.phone_number) ? attrs.phone_number : undefined,
355
+ lid: isPnUser(attrs.jid) && isLidUser(attrs.lid) ? attrs.lid : undefined,
356
+ username: attrs.participant_username || attrs.username || undefined,
357
+ admin: (attrs.type || null)
358
+ };
359
+ }),
360
+ ephemeralDuration: eph ? +eph : undefined
361
+ };
362
+ return metadata;
363
+ };
364
+ //# sourceMappingURL=groups.js.map