@yui-bails/yui-bails 0.0.0-stage → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +1837 -2
  3. package/WAProto/GenerateStatics.sh +3 -0
  4. package/WAProto/WAProto.proto +5479 -0
  5. package/WAProto/fix-imports.js +85 -0
  6. package/WAProto/index.d.ts +14017 -0
  7. package/WAProto/index.js +97691 -0
  8. package/engine-requirements.js +10 -0
  9. package/lib/Defaults/index.d.ts +75 -0
  10. package/lib/Defaults/index.d.ts.map +1 -0
  11. package/lib/Defaults/index.js +139 -0
  12. package/lib/Defaults/index.js.map +1 -0
  13. package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
  14. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  15. package/lib/Signal/Group/ciphertext-message.js +12 -0
  16. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  17. package/lib/Signal/Group/group-session-builder.d.ts +15 -0
  18. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  19. package/lib/Signal/Group/group-session-builder.js +30 -0
  20. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  21. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  22. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  23. package/lib/Signal/Group/group_cipher.js +82 -0
  24. package/lib/Signal/Group/group_cipher.js.map +1 -0
  25. package/lib/Signal/Group/index.d.ts +12 -0
  26. package/lib/Signal/Group/index.d.ts.map +1 -0
  27. package/lib/Signal/Group/index.js +12 -0
  28. package/lib/Signal/Group/index.js.map +1 -0
  29. package/lib/Signal/Group/keyhelper.d.ts +11 -0
  30. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  31. package/lib/Signal/Group/keyhelper.js +18 -0
  32. package/lib/Signal/Group/keyhelper.js.map +1 -0
  33. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  34. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  35. package/lib/Signal/Group/sender-chain-key.js +26 -0
  36. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  37. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  38. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  39. package/lib/Signal/Group/sender-key-distribution-message.js +63 -0
  40. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  41. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  42. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  43. package/lib/Signal/Group/sender-key-message.js +66 -0
  44. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  45. package/lib/Signal/Group/sender-key-name.d.ts +18 -0
  46. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  47. package/lib/Signal/Group/sender-key-name.js +48 -0
  48. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  49. package/lib/Signal/Group/sender-key-record.d.ts +31 -0
  50. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  51. package/lib/Signal/Group/sender-key-record.js +41 -0
  52. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  53. package/lib/Signal/Group/sender-key-state.d.ts +39 -0
  54. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  55. package/lib/Signal/Group/sender-key-state.js +84 -0
  56. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  57. package/lib/Signal/Group/sender-message-key.d.ts +12 -0
  58. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  59. package/lib/Signal/Group/sender-message-key.js +26 -0
  60. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  61. package/lib/Signal/libsignal.d.ts +5 -0
  62. package/lib/Signal/libsignal.d.ts.map +1 -0
  63. package/lib/Signal/libsignal.js +431 -0
  64. package/lib/Signal/libsignal.js.map +1 -0
  65. package/lib/Signal/lid-mapping.d.ts +23 -0
  66. package/lib/Signal/lid-mapping.d.ts.map +1 -0
  67. package/lib/Signal/lid-mapping.js +277 -0
  68. package/lib/Signal/lid-mapping.js.map +1 -0
  69. package/lib/Socket/Client/index.d.ts +3 -0
  70. package/lib/Socket/Client/index.d.ts.map +1 -0
  71. package/lib/Socket/Client/index.js +3 -0
  72. package/lib/Socket/Client/index.js.map +1 -0
  73. package/lib/Socket/Client/types.d.ts +16 -0
  74. package/lib/Socket/Client/types.d.ts.map +1 -0
  75. package/lib/Socket/Client/types.js +11 -0
  76. package/lib/Socket/Client/types.js.map +1 -0
  77. package/lib/Socket/Client/websocket.d.ts +13 -0
  78. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  79. package/lib/Socket/Client/websocket.js +54 -0
  80. package/lib/Socket/Client/websocket.js.map +1 -0
  81. package/lib/Socket/business.d.ts +217 -0
  82. package/lib/Socket/business.d.ts.map +1 -0
  83. package/lib/Socket/business.js +379 -0
  84. package/lib/Socket/business.js.map +1 -0
  85. package/lib/Socket/chats.d.ts +125 -0
  86. package/lib/Socket/chats.d.ts.map +1 -0
  87. package/lib/Socket/chats.js +1198 -0
  88. package/lib/Socket/chats.js.map +1 -0
  89. package/lib/Socket/communities.d.ts +273 -0
  90. package/lib/Socket/communities.d.ts.map +1 -0
  91. package/lib/Socket/communities.js +431 -0
  92. package/lib/Socket/communities.js.map +1 -0
  93. package/lib/Socket/groups.d.ts +161 -0
  94. package/lib/Socket/groups.d.ts.map +1 -0
  95. package/lib/Socket/groups.js +347 -0
  96. package/lib/Socket/groups.js.map +1 -0
  97. package/lib/Socket/index.d.ts +322 -0
  98. package/lib/Socket/index.d.ts.map +1 -0
  99. package/lib/Socket/index.js +111 -0
  100. package/lib/Socket/index.js.map +1 -0
  101. package/lib/Socket/messages-recv.d.ts +203 -0
  102. package/lib/Socket/messages-recv.d.ts.map +1 -0
  103. package/lib/Socket/messages-recv.js +1772 -0
  104. package/lib/Socket/messages-recv.js.map +1 -0
  105. package/lib/Socket/messages-send.d.ts +199 -0
  106. package/lib/Socket/messages-send.d.ts.map +1 -0
  107. package/lib/Socket/messages-send.js +1159 -0
  108. package/lib/Socket/messages-send.js.map +1 -0
  109. package/lib/Socket/mex.d.ts +3 -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 +170 -0
  114. package/lib/Socket/newsletter.d.ts.map +1 -0
  115. package/lib/Socket/newsletter.js +181 -0
  116. package/lib/Socket/newsletter.js.map +1 -0
  117. package/lib/Socket/session-manager.d.ts +408 -0
  118. package/lib/Socket/session-manager.d.ts.map +1 -0
  119. package/lib/Socket/session-manager.js +177 -0
  120. package/lib/Socket/session-manager.js.map +1 -0
  121. package/lib/Socket/socket.d.ts +59 -0
  122. package/lib/Socket/socket.d.ts.map +1 -0
  123. package/lib/Socket/socket.js +1039 -0
  124. package/lib/Socket/socket.js.map +1 -0
  125. package/lib/Types/Auth.d.ts +117 -0
  126. package/lib/Types/Auth.d.ts.map +1 -0
  127. package/lib/Types/Auth.js +2 -0
  128. package/lib/Types/Auth.js.map +1 -0
  129. package/lib/Types/Bussines.d.ts +25 -0
  130. package/lib/Types/Bussines.d.ts.map +1 -0
  131. package/lib/Types/Bussines.js +2 -0
  132. package/lib/Types/Bussines.js.map +1 -0
  133. package/lib/Types/Call.d.ts +15 -0
  134. package/lib/Types/Call.d.ts.map +1 -0
  135. package/lib/Types/Call.js +2 -0
  136. package/lib/Types/Call.js.map +1 -0
  137. package/lib/Types/Chat.d.ts +124 -0
  138. package/lib/Types/Chat.d.ts.map +1 -0
  139. package/lib/Types/Chat.js +8 -0
  140. package/lib/Types/Chat.js.map +1 -0
  141. package/lib/Types/Contact.d.ts +26 -0
  142. package/lib/Types/Contact.d.ts.map +1 -0
  143. package/lib/Types/Contact.js +2 -0
  144. package/lib/Types/Contact.js.map +1 -0
  145. package/lib/Types/Events.d.ts +274 -0
  146. package/lib/Types/Events.d.ts.map +1 -0
  147. package/lib/Types/Events.js +2 -0
  148. package/lib/Types/Events.js.map +1 -0
  149. package/lib/Types/GroupMetadata.d.ts +71 -0
  150. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  151. package/lib/Types/GroupMetadata.js +2 -0
  152. package/lib/Types/GroupMetadata.js.map +1 -0
  153. package/lib/Types/Label.d.ts +47 -0
  154. package/lib/Types/Label.d.ts.map +1 -0
  155. package/lib/Types/Label.js +25 -0
  156. package/lib/Types/Label.js.map +1 -0
  157. package/lib/Types/LabelAssociation.d.ts +30 -0
  158. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  159. package/lib/Types/LabelAssociation.js +7 -0
  160. package/lib/Types/LabelAssociation.js.map +1 -0
  161. package/lib/Types/Message.d.ts +402 -0
  162. package/lib/Types/Message.d.ts.map +1 -0
  163. package/lib/Types/Message.js +11 -0
  164. package/lib/Types/Message.js.map +1 -0
  165. package/lib/Types/Mex.d.ts +141 -0
  166. package/lib/Types/Mex.d.ts.map +1 -0
  167. package/lib/Types/Mex.js +37 -0
  168. package/lib/Types/Mex.js.map +1 -0
  169. package/lib/Types/Product.d.ts +79 -0
  170. package/lib/Types/Product.d.ts.map +1 -0
  171. package/lib/Types/Product.js +2 -0
  172. package/lib/Types/Product.js.map +1 -0
  173. package/lib/Types/Signal.d.ts +87 -0
  174. package/lib/Types/Signal.d.ts.map +1 -0
  175. package/lib/Types/Signal.js +2 -0
  176. package/lib/Types/Signal.js.map +1 -0
  177. package/lib/Types/Socket.d.ts +188 -0
  178. package/lib/Types/Socket.d.ts.map +1 -0
  179. package/lib/Types/Socket.js +3 -0
  180. package/lib/Types/Socket.js.map +1 -0
  181. package/lib/Types/State.d.ts +97 -0
  182. package/lib/Types/State.d.ts.map +1 -0
  183. package/lib/Types/State.js +56 -0
  184. package/lib/Types/State.js.map +1 -0
  185. package/lib/Types/USync.d.ts +26 -0
  186. package/lib/Types/USync.d.ts.map +1 -0
  187. package/lib/Types/USync.js +2 -0
  188. package/lib/Types/USync.js.map +1 -0
  189. package/lib/Types/index.d.ts +66 -0
  190. package/lib/Types/index.d.ts.map +1 -0
  191. package/lib/Types/index.js +26 -0
  192. package/lib/Types/index.js.map +1 -0
  193. package/lib/Utils/auth-utils.d.ts +24 -0
  194. package/lib/Utils/auth-utils.d.ts.map +1 -0
  195. package/lib/Utils/auth-utils.js +302 -0
  196. package/lib/Utils/auth-utils.js.map +1 -0
  197. package/lib/Utils/automation.d.ts +34 -0
  198. package/lib/Utils/automation.d.ts.map +1 -0
  199. package/lib/Utils/automation.js +44 -0
  200. package/lib/Utils/automation.js.map +1 -0
  201. package/lib/Utils/banner.d.ts +28 -0
  202. package/lib/Utils/banner.d.ts.map +1 -0
  203. package/lib/Utils/banner.js +99 -0
  204. package/lib/Utils/banner.js.map +1 -0
  205. package/lib/Utils/browser-utils.d.ts +4 -0
  206. package/lib/Utils/browser-utils.d.ts.map +1 -0
  207. package/lib/Utils/browser-utils.js +29 -0
  208. package/lib/Utils/browser-utils.js.map +1 -0
  209. package/lib/Utils/business.d.ts +23 -0
  210. package/lib/Utils/business.d.ts.map +1 -0
  211. package/lib/Utils/business.js +231 -0
  212. package/lib/Utils/business.js.map +1 -0
  213. package/lib/Utils/button-builder.d.ts +10 -0
  214. package/lib/Utils/button-builder.d.ts.map +1 -0
  215. package/lib/Utils/button-builder.js +48 -0
  216. package/lib/Utils/button-builder.js.map +1 -0
  217. package/lib/Utils/chat-utils.d.ts +100 -0
  218. package/lib/Utils/chat-utils.d.ts.map +1 -0
  219. package/lib/Utils/chat-utils.js +872 -0
  220. package/lib/Utils/chat-utils.js.map +1 -0
  221. package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
  222. package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
  223. package/lib/Utils/companion-reg-client-utils.js +35 -0
  224. package/lib/Utils/companion-reg-client-utils.js.map +1 -0
  225. package/lib/Utils/console-filter.d.ts +10 -0
  226. package/lib/Utils/console-filter.d.ts.map +1 -0
  227. package/lib/Utils/console-filter.js +44 -0
  228. package/lib/Utils/console-filter.js.map +1 -0
  229. package/lib/Utils/crypto.d.ts +37 -0
  230. package/lib/Utils/crypto.d.ts.map +1 -0
  231. package/lib/Utils/crypto.js +118 -0
  232. package/lib/Utils/crypto.js.map +1 -0
  233. package/lib/Utils/decode-wa-message.d.ts +66 -0
  234. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  235. package/lib/Utils/decode-wa-message.js +317 -0
  236. package/lib/Utils/decode-wa-message.js.map +1 -0
  237. package/lib/Utils/event-buffer.d.ts +36 -0
  238. package/lib/Utils/event-buffer.d.ts.map +1 -0
  239. package/lib/Utils/event-buffer.js +622 -0
  240. package/lib/Utils/event-buffer.js.map +1 -0
  241. package/lib/Utils/generics.d.ts +92 -0
  242. package/lib/Utils/generics.d.ts.map +1 -0
  243. package/lib/Utils/generics.js +395 -0
  244. package/lib/Utils/generics.js.map +1 -0
  245. package/lib/Utils/group-cache.d.ts +22 -0
  246. package/lib/Utils/group-cache.d.ts.map +1 -0
  247. package/lib/Utils/group-cache.js +31 -0
  248. package/lib/Utils/group-cache.js.map +1 -0
  249. package/lib/Utils/group-fetch.d.ts +19 -0
  250. package/lib/Utils/group-fetch.d.ts.map +1 -0
  251. package/lib/Utils/group-fetch.js +43 -0
  252. package/lib/Utils/group-fetch.js.map +1 -0
  253. package/lib/Utils/group-tools.d.ts +38 -0
  254. package/lib/Utils/group-tools.d.ts.map +1 -0
  255. package/lib/Utils/group-tools.js +75 -0
  256. package/lib/Utils/group-tools.js.map +1 -0
  257. package/lib/Utils/helpers.d.ts +180 -0
  258. package/lib/Utils/helpers.d.ts.map +1 -0
  259. package/lib/Utils/helpers.js +279 -0
  260. package/lib/Utils/helpers.js.map +1 -0
  261. package/lib/Utils/history.d.ts +24 -0
  262. package/lib/Utils/history.d.ts.map +1 -0
  263. package/lib/Utils/history.js +134 -0
  264. package/lib/Utils/history.js.map +1 -0
  265. package/lib/Utils/identity-change-handler.d.ts +44 -0
  266. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  267. package/lib/Utils/identity-change-handler.js +50 -0
  268. package/lib/Utils/identity-change-handler.js.map +1 -0
  269. package/lib/Utils/index.d.ts +35 -0
  270. package/lib/Utils/index.d.ts.map +1 -0
  271. package/lib/Utils/index.js +35 -0
  272. package/lib/Utils/index.js.map +1 -0
  273. package/lib/Utils/insights.d.ts +80 -0
  274. package/lib/Utils/insights.d.ts.map +1 -0
  275. package/lib/Utils/insights.js +188 -0
  276. package/lib/Utils/insights.js.map +1 -0
  277. package/lib/Utils/link-preview.d.ts +21 -0
  278. package/lib/Utils/link-preview.d.ts.map +1 -0
  279. package/lib/Utils/link-preview.js +85 -0
  280. package/lib/Utils/link-preview.js.map +1 -0
  281. package/lib/Utils/logger.d.ts +13 -0
  282. package/lib/Utils/logger.d.ts.map +1 -0
  283. package/lib/Utils/logger.js +9 -0
  284. package/lib/Utils/logger.js.map +1 -0
  285. package/lib/Utils/lt-hash.d.ts +8 -0
  286. package/lib/Utils/lt-hash.d.ts.map +1 -0
  287. package/lib/Utils/lt-hash.js +8 -0
  288. package/lib/Utils/lt-hash.js.map +1 -0
  289. package/lib/Utils/make-mutex.d.ts +9 -0
  290. package/lib/Utils/make-mutex.d.ts.map +1 -0
  291. package/lib/Utils/make-mutex.js +33 -0
  292. package/lib/Utils/make-mutex.js.map +1 -0
  293. package/lib/Utils/mentions.d.ts +11 -0
  294. package/lib/Utils/mentions.d.ts.map +1 -0
  295. package/lib/Utils/mentions.js +29 -0
  296. package/lib/Utils/mentions.js.map +1 -0
  297. package/lib/Utils/message-retry-manager.d.ts +115 -0
  298. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  299. package/lib/Utils/message-retry-manager.js +265 -0
  300. package/lib/Utils/message-retry-manager.js.map +1 -0
  301. package/lib/Utils/message-store.d.ts +19 -0
  302. package/lib/Utils/message-store.d.ts.map +1 -0
  303. package/lib/Utils/message-store.js +26 -0
  304. package/lib/Utils/message-store.js.map +1 -0
  305. package/lib/Utils/messages-media.d.ts +133 -0
  306. package/lib/Utils/messages-media.d.ts.map +1 -0
  307. package/lib/Utils/messages-media.js +788 -0
  308. package/lib/Utils/messages-media.js.map +1 -0
  309. package/lib/Utils/messages.d.ts +95 -0
  310. package/lib/Utils/messages.d.ts.map +1 -0
  311. package/lib/Utils/messages.js +1094 -0
  312. package/lib/Utils/messages.js.map +1 -0
  313. package/lib/Utils/noise-handler.d.ts +20 -0
  314. package/lib/Utils/noise-handler.d.ts.map +1 -0
  315. package/lib/Utils/noise-handler.js +201 -0
  316. package/lib/Utils/noise-handler.js.map +1 -0
  317. package/lib/Utils/offline-node-processor.d.ts +17 -0
  318. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  319. package/lib/Utils/offline-node-processor.js +40 -0
  320. package/lib/Utils/offline-node-processor.js.map +1 -0
  321. package/lib/Utils/pre-key-manager.d.ts +28 -0
  322. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  323. package/lib/Utils/pre-key-manager.js +106 -0
  324. package/lib/Utils/pre-key-manager.js.map +1 -0
  325. package/lib/Utils/pretty-log.d.ts +33 -0
  326. package/lib/Utils/pretty-log.d.ts.map +1 -0
  327. package/lib/Utils/pretty-log.js +117 -0
  328. package/lib/Utils/pretty-log.js.map +1 -0
  329. package/lib/Utils/process-message.d.ts +60 -0
  330. package/lib/Utils/process-message.d.ts.map +1 -0
  331. package/lib/Utils/process-message.js +630 -0
  332. package/lib/Utils/process-message.js.map +1 -0
  333. package/lib/Utils/replies.d.ts +60 -0
  334. package/lib/Utils/replies.d.ts.map +1 -0
  335. package/lib/Utils/replies.js +154 -0
  336. package/lib/Utils/replies.js.map +1 -0
  337. package/lib/Utils/reporting-utils.d.ts +11 -0
  338. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  339. package/lib/Utils/reporting-utils.js +258 -0
  340. package/lib/Utils/reporting-utils.js.map +1 -0
  341. package/lib/Utils/send-queue.d.ts +50 -0
  342. package/lib/Utils/send-queue.d.ts.map +1 -0
  343. package/lib/Utils/send-queue.js +124 -0
  344. package/lib/Utils/send-queue.js.map +1 -0
  345. package/lib/Utils/signal.d.ts +47 -0
  346. package/lib/Utils/signal.d.ts.map +1 -0
  347. package/lib/Utils/signal.js +201 -0
  348. package/lib/Utils/signal.js.map +1 -0
  349. package/lib/Utils/stanza-ack.d.ts +11 -0
  350. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  351. package/lib/Utils/stanza-ack.js +38 -0
  352. package/lib/Utils/stanza-ack.js.map +1 -0
  353. package/lib/Utils/sync-action-utils.d.ts +19 -0
  354. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  355. package/lib/Utils/sync-action-utils.js +49 -0
  356. package/lib/Utils/sync-action-utils.js.map +1 -0
  357. package/lib/Utils/tc-token-utils.d.ts +37 -0
  358. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  359. package/lib/Utils/tc-token-utils.js +164 -0
  360. package/lib/Utils/tc-token-utils.js.map +1 -0
  361. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  362. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  363. package/lib/Utils/use-multi-file-auth-state.js +154 -0
  364. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  365. package/lib/Utils/validate-connection.d.ts +11 -0
  366. package/lib/Utils/validate-connection.d.ts.map +1 -0
  367. package/lib/Utils/validate-connection.js +210 -0
  368. package/lib/Utils/validate-connection.js.map +1 -0
  369. package/lib/Utils/wa-version.d.ts +33 -0
  370. package/lib/Utils/wa-version.d.ts.map +1 -0
  371. package/lib/Utils/wa-version.js +92 -0
  372. package/lib/Utils/wa-version.js.map +1 -0
  373. package/lib/WABinary/constants.d.ts +28 -0
  374. package/lib/WABinary/constants.d.ts.map +1 -0
  375. package/lib/WABinary/constants.js +1301 -0
  376. package/lib/WABinary/constants.js.map +1 -0
  377. package/lib/WABinary/decode.d.ts +7 -0
  378. package/lib/WABinary/decode.d.ts.map +1 -0
  379. package/lib/WABinary/decode.js +262 -0
  380. package/lib/WABinary/decode.js.map +1 -0
  381. package/lib/WABinary/encode.d.ts +3 -0
  382. package/lib/WABinary/encode.d.ts.map +1 -0
  383. package/lib/WABinary/encode.js +220 -0
  384. package/lib/WABinary/encode.js.map +1 -0
  385. package/lib/WABinary/generic-utils.d.ts +17 -0
  386. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  387. package/lib/WABinary/generic-utils.js +213 -0
  388. package/lib/WABinary/generic-utils.js.map +1 -0
  389. package/lib/WABinary/index.d.ts +6 -0
  390. package/lib/WABinary/index.d.ts.map +1 -0
  391. package/lib/WABinary/index.js +6 -0
  392. package/lib/WABinary/index.js.map +1 -0
  393. package/lib/WABinary/jid-utils.d.ts +48 -0
  394. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  395. package/lib/WABinary/jid-utils.js +96 -0
  396. package/lib/WABinary/jid-utils.js.map +1 -0
  397. package/lib/WABinary/types.d.ts +19 -0
  398. package/lib/WABinary/types.d.ts.map +1 -0
  399. package/lib/WABinary/types.js +2 -0
  400. package/lib/WABinary/types.js.map +1 -0
  401. package/lib/WAM/BinaryInfo.d.ts +9 -0
  402. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  403. package/lib/WAM/BinaryInfo.js +10 -0
  404. package/lib/WAM/BinaryInfo.js.map +1 -0
  405. package/lib/WAM/constants.d.ts +40 -0
  406. package/lib/WAM/constants.d.ts.map +1 -0
  407. package/lib/WAM/constants.js +22853 -0
  408. package/lib/WAM/constants.js.map +1 -0
  409. package/lib/WAM/encode.d.ts +3 -0
  410. package/lib/WAM/encode.d.ts.map +1 -0
  411. package/lib/WAM/encode.js +150 -0
  412. package/lib/WAM/encode.js.map +1 -0
  413. package/lib/WAM/index.d.ts +4 -0
  414. package/lib/WAM/index.d.ts.map +1 -0
  415. package/lib/WAM/index.js +4 -0
  416. package/lib/WAM/index.js.map +1 -0
  417. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  418. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  419. package/lib/WAUSync/Protocols/USyncContactProtocol.js +52 -0
  420. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  421. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  422. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  423. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +54 -0
  424. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  425. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  426. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  427. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +27 -0
  428. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  429. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  430. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  431. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +38 -0
  432. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  433. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  434. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
  435. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  436. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
  437. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  438. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  439. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +51 -0
  440. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  441. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
  442. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  443. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
  444. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  445. package/lib/WAUSync/Protocols/index.d.ts +6 -0
  446. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  447. package/lib/WAUSync/Protocols/index.js +6 -0
  448. package/lib/WAUSync/Protocols/index.js.map +1 -0
  449. package/lib/WAUSync/USyncQuery.d.ts +30 -0
  450. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  451. package/lib/WAUSync/USyncQuery.js +98 -0
  452. package/lib/WAUSync/USyncQuery.js.map +1 -0
  453. package/lib/WAUSync/USyncUser.d.ts +17 -0
  454. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  455. package/lib/WAUSync/USyncUser.js +31 -0
  456. package/lib/WAUSync/USyncUser.js.map +1 -0
  457. package/lib/WAUSync/index.d.ts +4 -0
  458. package/lib/WAUSync/index.d.ts.map +1 -0
  459. package/lib/WAUSync/index.js +4 -0
  460. package/lib/WAUSync/index.js.map +1 -0
  461. package/lib/index.d.ts +13 -0
  462. package/lib/index.d.ts.map +1 -0
  463. package/lib/index.js +12 -0
  464. package/lib/index.js.map +1 -0
  465. package/package.json +150 -3
@@ -0,0 +1,38 @@
1
+ import type { GroupMetadata, GroupParticipant, ParticipantAction, WAMessage } from '../Types/index.js';
2
+ import type { GroupMetadataCache } from './group-cache.js';
3
+ import type { SenderInfo } from './helpers.js';
4
+ /** Who to check or act on: a number, a jid, a message, or the result of `getSender` */
5
+ export type GroupMember = string | WAMessage | SenderInfo;
6
+ export type GroupToolsSocket = {
7
+ user?: {
8
+ id: string;
9
+ lid?: string;
10
+ } | undefined;
11
+ groupMetadata: (jid: string) => Promise<GroupMetadata>;
12
+ groupParticipantsUpdate: (jid: string, participants: string[], action: ParticipantAction) => Promise<unknown>;
13
+ };
14
+ /**
15
+ * Group permissions and moderation shortcuts that understand both identities WhatsApp uses
16
+ * (phone number and LID), so admin checks do not break when a group shows LIDs.
17
+ */
18
+ export declare const makeGroupTools: (sock: GroupToolsSocket, { cache, getSender }: {
19
+ cache?: GroupMetadataCache;
20
+ getSender: (msg: WAMessage) => Promise<SenderInfo>;
21
+ }) => {
22
+ /** Admins and super admins of a group. */
23
+ getAdmins: (groupJid: string) => Promise<GroupParticipant[]>;
24
+ /** Is this person (number, jid, message or sender) an admin of the group? */
25
+ isAdmin: (groupJid: string, who: GroupMember) => Promise<boolean>;
26
+ /** Is the bot itself an admin of the group? */
27
+ isBotAdmin: (groupJid: string) => Promise<boolean>;
28
+ /** Removes members (numbers or jids). The bot must be admin. */
29
+ kick: (groupJid: string, who: string | string[]) => Promise<unknown>;
30
+ /** Adds members. */
31
+ addMembers: (groupJid: string, who: string | string[]) => Promise<unknown>;
32
+ /** Makes members admins. */
33
+ promote: (groupJid: string, who: string | string[]) => Promise<unknown>;
34
+ /** Removes admin rights. */
35
+ demote: (groupJid: string, who: string | string[]) => Promise<unknown>;
36
+ };
37
+ export type GroupTools = ReturnType<typeof makeGroupTools>;
38
+ //# sourceMappingURL=group-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-tools.d.ts","sourceRoot":"","sources":["../../src/Utils/group-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAE7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C,uFAAuF;AACvF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAA;AAEzD,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;IAC/C,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IACtD,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC7G,CAAA;AAiBD;;;GAGG;AACH,eAAO,MAAM,cAAc,GAC1B,MAAM,gBAAgB,EACtB,sBAAsB;IAAE,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;CAAE;IA+BvG,0CAA0C;0BACd,MAAM;IAElC,6EAA6E;wBACnD,MAAM,OAAO,WAAW;IAUlD,+CAA+C;2BAClB,MAAM;IAUnC,gEAAgE;qBAC/C,MAAM,OAAO,MAAM,GAAG,MAAM,EAAE;IAC/C,oBAAoB;2BACG,MAAM,OAAO,MAAM,GAAG,MAAM,EAAE;IACrD,4BAA4B;wBACR,MAAM,OAAO,MAAM,GAAG,MAAM,EAAE;IAClD,4BAA4B;uBACT,MAAM,OAAO,MAAM,GAAG,MAAM,EAAE;CAElD,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA"}
@@ -0,0 +1,75 @@
1
+ import { Boom } from '@hapi/boom';
2
+ import { jidDecode } from '../WABinary/index.js';
3
+ /** the user part of a jid, or the digits of a phone number */
4
+ const identity = (value) => {
5
+ if (!value)
6
+ return undefined;
7
+ return value.includes('@') ? jidDecode(value)?.user : value.replace(/\D/g, '') || undefined;
8
+ };
9
+ const identitiesOf = (participant) => [participant.id, participant.lid, participant.phoneNumber].map(identity).filter((entry) => !!entry);
10
+ const isAdminParticipant = (participant) => !!(participant.admin || participant.isAdmin || participant.isSuperAdmin);
11
+ /** a number ("+51 910 227 479") or a jid becomes a jid */
12
+ const toJid = (value) => (value.includes('@') ? value : `${value.replace(/\D/g, '')}@s.whatsapp.net`);
13
+ /**
14
+ * Group permissions and moderation shortcuts that understand both identities WhatsApp uses
15
+ * (phone number and LID), so admin checks do not break when a group shows LIDs.
16
+ */
17
+ export const makeGroupTools = (sock, { cache, getSender }) => {
18
+ const metadata = async (groupJid) => {
19
+ const cached = cache?.get(groupJid);
20
+ if (cached)
21
+ return cached;
22
+ const fresh = await sock.groupMetadata(groupJid);
23
+ cache?.set(groupJid, fresh);
24
+ return fresh;
25
+ };
26
+ /** every identity (number, LID id) a member is known by */
27
+ const identitiesOfMember = async (who) => {
28
+ if (typeof who === 'string')
29
+ return [identity(who)].filter((entry) => !!entry);
30
+ const sender = 'key' in who ? await getSender(who) : who;
31
+ return [sender.number, sender.id].filter((entry) => !!entry);
32
+ };
33
+ const targets = (who) => (Array.isArray(who) ? who : [who]).map(toJid);
34
+ const act = async (groupJid, who, action) => {
35
+ const jids = targets(who);
36
+ if (!jids.length)
37
+ throw new Boom('Say who to act on', { statusCode: 400 });
38
+ const result = await sock.groupParticipantsUpdate(groupJid, jids, action);
39
+ cache?.delete(groupJid); // the member list just changed
40
+ return result;
41
+ };
42
+ return {
43
+ /** Admins and super admins of a group. */
44
+ getAdmins: async (groupJid) => (await metadata(groupJid)).participants.filter(isAdminParticipant),
45
+ /** Is this person (number, jid, message or sender) an admin of the group? */
46
+ isAdmin: async (groupJid, who) => {
47
+ const wanted = await identitiesOfMember(who);
48
+ if (!wanted.length)
49
+ return false;
50
+ const { participants } = await metadata(groupJid);
51
+ return participants
52
+ .filter(isAdminParticipant)
53
+ .some(participant => identitiesOf(participant).some(entry => wanted.includes(entry)));
54
+ },
55
+ /** Is the bot itself an admin of the group? */
56
+ isBotAdmin: async (groupJid) => {
57
+ const me = [sock.user?.id, sock.user?.lid].map(identity).filter((entry) => !!entry);
58
+ if (!me.length)
59
+ return false;
60
+ const { participants } = await metadata(groupJid);
61
+ return participants
62
+ .filter(isAdminParticipant)
63
+ .some(participant => identitiesOf(participant).some(entry => me.includes(entry)));
64
+ },
65
+ /** Removes members (numbers or jids). The bot must be admin. */
66
+ kick: (groupJid, who) => act(groupJid, who, 'remove'),
67
+ /** Adds members. */
68
+ addMembers: (groupJid, who) => act(groupJid, who, 'add'),
69
+ /** Makes members admins. */
70
+ promote: (groupJid, who) => act(groupJid, who, 'promote'),
71
+ /** Removes admin rights. */
72
+ demote: (groupJid, who) => act(groupJid, who, 'demote')
73
+ };
74
+ };
75
+ //# sourceMappingURL=group-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-tools.js","sourceRoot":"","sources":["../../src/Utils/group-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ import type { ButtonSpec, CarouselCard, MiscMessageGenerationOptions, PollMessageOptions, WAMessage, WAMessageKey } from '../Types/index.js';
2
+ /** Who wrote a message, with both of WhatsApp's identities resolved when possible */
3
+ export type SenderInfo = {
4
+ /** chat the message belongs to (group, private chat…) */
5
+ chat: string;
6
+ isGroup: boolean;
7
+ fromMe: boolean;
8
+ /** best jid to talk to the sender: the phone-number jid when known, otherwise the LID */
9
+ jid: string;
10
+ /** phone-number jid (`5191…@s.whatsapp.net`) when known */
11
+ pn: string | undefined;
12
+ /** LID jid (`2696…@lid`) when known */
13
+ lid: string | undefined;
14
+ /** phone number, digits only (`undefined` when only the LID is known) */
15
+ number: string | undefined;
16
+ /** WhatsApp's internal id: the user part of the LID (`undefined` when it is not known) */
17
+ id: string | undefined;
18
+ /** true when the number or the internal id is in `list` (numbers, ids or full jids) */
19
+ is: (list: string | string[]) => boolean;
20
+ };
21
+ type Me = {
22
+ id?: string;
23
+ lid?: string;
24
+ } | undefined;
25
+ /**
26
+ * Reads who sent a message using only the message itself (no network, no lookups).
27
+ * Use `sock.getSender(msg)` to also resolve the missing identity through WhatsApp's LID mapping.
28
+ */
29
+ export declare const getSenderIds: (msg: Pick<WAMessage, "key" | "participant">, me?: Me) => SenderInfo;
30
+ export type SendButtonsOptions = {
31
+ text?: string;
32
+ footer?: string;
33
+ title?: string;
34
+ buttons: ButtonSpec[];
35
+ /** classic buttons render in every client; `interactive` (default) uses native flow */
36
+ buttonsFormat?: 'interactive' | 'buttons';
37
+ };
38
+ export type SendCarouselOptions = {
39
+ cards: CarouselCard[];
40
+ text?: string;
41
+ title?: string;
42
+ footer?: string;
43
+ };
44
+ export type SendListOptions = {
45
+ text?: string;
46
+ title?: string;
47
+ footer?: string;
48
+ /** label of the button that opens the list */
49
+ buttonText?: string;
50
+ /** simple form: `{ title, rows: [{ id, title, description? }] }` */
51
+ sections: {
52
+ title?: string;
53
+ rows: {
54
+ id?: string;
55
+ rowId?: string;
56
+ title: string;
57
+ description?: string;
58
+ }[];
59
+ }[];
60
+ };
61
+ export type DownloadMediaOptions = {
62
+ /** download the media of the message this one replies to */
63
+ quoted?: boolean;
64
+ };
65
+ export type PollVotes = {
66
+ /** key of the poll message */
67
+ pollKey: WAMessageKey;
68
+ pollName: string;
69
+ /** every option with the people who chose it (the voters of an option can be empty) */
70
+ votes: {
71
+ name: string;
72
+ voters: string[];
73
+ }[];
74
+ /** the voter that triggered this update */
75
+ voter: string;
76
+ };
77
+ /**
78
+ * How a send ended:
79
+ * - `sent`: WhatsApp accepted it
80
+ * - `failed`: it definitely did not go out
81
+ * - `unknown`: it timed out or the connection dropped mid-send, so it may still be delivered
82
+ */
83
+ export type SendResult = {
84
+ status: 'sent';
85
+ message: WAMessage | undefined;
86
+ } | {
87
+ status: 'failed';
88
+ error: unknown;
89
+ } | {
90
+ status: 'unknown';
91
+ error: unknown;
92
+ settled: Promise<SendResult>;
93
+ };
94
+ export type SendSafeOptions = {
95
+ /** how long to wait before giving up with `unknown`, in ms. Default 20000 */
96
+ timeoutMs?: number;
97
+ };
98
+ type Content = Record<string, unknown>;
99
+ type SendFn = (jid: string, content: any, options?: MiscMessageGenerationOptions) => Promise<WAMessage | undefined>;
100
+ /** What `makeHelpers` needs from the socket (a subset, so it is easy to test) */
101
+ export type HelperSocket = {
102
+ user?: {
103
+ id: string;
104
+ lid?: string;
105
+ } | undefined;
106
+ ev: {
107
+ on: (event: any, listener: (...args: any[]) => void) => void;
108
+ emit: (event: any, data: any) => unknown;
109
+ };
110
+ sendMessage: SendFn;
111
+ updateMediaMessage: (message: WAMessage) => Promise<WAMessage>;
112
+ signalRepository?: {
113
+ lidMapping?: {
114
+ getPNForLID?: (lid: string) => Promise<string | null>;
115
+ getLIDForPN?: (pn: string) => Promise<string | null>;
116
+ };
117
+ };
118
+ };
119
+ export type HelperConfig = {
120
+ logger?: {
121
+ debug: (...args: any[]) => void;
122
+ warn: (...args: any[]) => void;
123
+ };
124
+ getMessage?: (key: WAMessageKey) => Promise<WAMessage['message'] | undefined>;
125
+ };
126
+ /**
127
+ * Shortcuts that every bot ends up writing by hand. `makeWASocket` already adds them
128
+ * to the socket, so normally you just call `sock.reply(msg, 'hi')`.
129
+ */
130
+ export declare const makeHelpers: (sock: HelperSocket, config?: HelperConfig) => {
131
+ /**
132
+ * Who sent the message: phone number, LID and WhatsApp's internal id, resolving the missing
133
+ * one through the LID mapping. Never throws.
134
+ */
135
+ getSender: (msg: WAMessage) => Promise<SenderInfo>;
136
+ /** Replies quoting the message. `content` can be a plain string. */
137
+ reply: (msg: WAMessage, content: string | Content, options?: MiscMessageGenerationOptions) => Promise<WAMessage | undefined>;
138
+ /** Reacts to a message with an emoji (empty string removes the reaction). */
139
+ react: (msg: WAMessage, emoji: string) => Promise<WAMessage | undefined>;
140
+ /**
141
+ * Like `sendMessage`, but never throws: it tells `sent`, `failed` or `unknown` apart.
142
+ * `unknown` means the connection dropped or the wait timed out, so the message may still
143
+ * arrive; its `settled` promise gives the final outcome.
144
+ */
145
+ sendSafe: (jid: string, content: string | Content, options?: MiscMessageGenerationOptions, { timeoutMs }?: SendSafeOptions) => Promise<SendResult>;
146
+ /** Sends a message with buttons. */
147
+ sendButtons: (jid: string, { buttons, ...rest }: SendButtonsOptions, options?: MiscMessageGenerationOptions) => Promise<WAMessage | undefined>;
148
+ /**
149
+ * Sends a carousel: up to 10 cards that scroll sideways, each with its own image or video,
150
+ * texts and buttons.
151
+ */
152
+ sendCarousel: (jid: string, { cards, ...rest }: SendCarouselOptions, options?: MiscMessageGenerationOptions) => Promise<WAMessage | undefined>;
153
+ /**
154
+ * Tries to remove the buttons from a message you sent (by editing it into plain text), so
155
+ * nobody taps them again. WhatsApp may refuse to edit some interactive messages: it returns
156
+ * `false` then. For a guaranteed "use once", pass `{ once: true }` to `onButton`.
157
+ */
158
+ disableButtons: (msg: WAMessage, text?: string) => Promise<boolean>;
159
+ /** Sends a list (dropdown) message. */
160
+ sendList: (jid: string, { sections, ...rest }: SendListOptions, options?: MiscMessageGenerationOptions) => Promise<WAMessage | undefined>;
161
+ /** Sends a poll and starts tracking its votes (see the `poll.votes` event and `getPollVotes`). */
162
+ sendPoll: (jid: string, name: string, values: string[], poll?: Partial<Omit<PollMessageOptions, "name" | "values">>, options?: MiscMessageGenerationOptions) => Promise<WAMessage | undefined>;
163
+ /** Current results of a poll created by (or seen by) this socket. */
164
+ getPollVotes: (pollKey: WAMessageKey | string) => {
165
+ pollKey: WAMessageKey;
166
+ pollName: string;
167
+ votes: {
168
+ name: string;
169
+ voters: string[];
170
+ }[];
171
+ } | undefined;
172
+ /**
173
+ * Downloads the media of a message (image, video, audio, document, sticker) in one call,
174
+ * re-requesting the upload from the phone when the file expired.
175
+ */
176
+ downloadMedia: (msg: WAMessage, options?: DownloadMediaOptions) => Promise<Buffer>;
177
+ };
178
+ export type Helpers = ReturnType<typeof makeHelpers>;
179
+ export {};
180
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/Utils/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,279 @@
1
+ import { Boom } from '@hapi/boom';
2
+ import { isJidGroup, isLidUser, isPnUser, jidDecode, jidNormalizedUser } from '../WABinary/index.js';
3
+ import { downloadMediaMessage, getAggregateVotesInPollMessage } from './messages.js';
4
+ const userPart = (jid) => (jid ? jidDecode(jid)?.user : undefined);
5
+ const clean = (value) => {
6
+ const digits = value.replace(/\D/g, '');
7
+ return digits || value.split('@')[0].split(':')[0];
8
+ };
9
+ /**
10
+ * Reads who sent a message using only the message itself (no network, no lookups).
11
+ * Use `sock.getSender(msg)` to also resolve the missing identity through WhatsApp's LID mapping.
12
+ */
13
+ export const getSenderIds = (msg, me) => {
14
+ const key = msg.key;
15
+ const chat = key.remoteJid || '';
16
+ const isGroup = !!isJidGroup(chat) || chat === 'status@broadcast';
17
+ const fromMe = !!key.fromMe;
18
+ let pn;
19
+ let lid;
20
+ if (fromMe && me) {
21
+ pn = me.id ? jidNormalizedUser(me.id) : undefined;
22
+ lid = me.lid ? jidNormalizedUser(me.lid) : undefined;
23
+ }
24
+ else {
25
+ const main = isGroup ? key.participant || msg.participant : key.remoteJid;
26
+ const alt = isGroup ? key.participantAlt : key.remoteJidAlt;
27
+ for (const candidate of [main, alt]) {
28
+ if (!candidate)
29
+ continue;
30
+ const normalized = jidNormalizedUser(candidate);
31
+ if (!pn && isPnUser(normalized))
32
+ pn = normalized;
33
+ else if (!lid && isLidUser(normalized))
34
+ lid = normalized;
35
+ }
36
+ }
37
+ return buildSender({ chat, isGroup, fromMe, pn, lid });
38
+ };
39
+ const buildSender = ({ chat, isGroup, fromMe, pn, lid }) => {
40
+ const number = userPart(pn);
41
+ const id = userPart(lid);
42
+ const known = [number, id].filter((value) => !!value);
43
+ return {
44
+ chat,
45
+ isGroup,
46
+ fromMe,
47
+ jid: pn || lid || '',
48
+ pn,
49
+ lid,
50
+ number,
51
+ id,
52
+ is: list => (Array.isArray(list) ? list : [list]).map(clean).some(entry => known.includes(entry))
53
+ };
54
+ };
55
+ /** errors that do not prove the message was not sent: the connection died or the wait ran out */
56
+ const UNCERTAIN_CODES = [408, 428, 440];
57
+ const MAX_TRACKED_POLLS = 200;
58
+ /**
59
+ * Shortcuts that every bot ends up writing by hand. `makeWASocket` already adds them
60
+ * to the socket, so normally you just call `sock.reply(msg, 'hi')`.
61
+ */
62
+ export const makeHelpers = (sock, config = {}) => {
63
+ const polls = new Map();
64
+ const pollIdOf = (key) => (key?.id ? `${key.remoteJid || ''}|${key.id}` : undefined);
65
+ const remember = (msg) => {
66
+ const id = pollIdOf(msg?.key);
67
+ const content = msg?.message;
68
+ if (!id || !content)
69
+ return;
70
+ if (!(content.pollCreationMessage || content.pollCreationMessageV2 || content.pollCreationMessageV3))
71
+ return;
72
+ if (!polls.has(id)) {
73
+ polls.set(id, { message: content, key: msg.key, updates: new Map() });
74
+ // forget the oldest polls so a long-running bot does not grow forever
75
+ if (polls.size > MAX_TRACKED_POLLS)
76
+ polls.delete(polls.keys().next().value);
77
+ }
78
+ };
79
+ const aggregate = (tracked, meId) => getAggregateVotesInPollMessage({ message: tracked.message, pollUpdates: [...tracked.updates.values()] }, meId).map(option => ({ name: option.name, voters: option.voters }));
80
+ const pollName = (message) => message?.pollCreationMessage?.name ||
81
+ message?.pollCreationMessageV2?.name ||
82
+ message?.pollCreationMessageV3?.name ||
83
+ '';
84
+ sock.ev.on('messages.upsert', ({ messages }) => {
85
+ for (const msg of messages || [])
86
+ remember(msg);
87
+ });
88
+ sock.ev.on('messages.update', async (updates) => {
89
+ for (const { key, update } of updates || []) {
90
+ const incoming = update?.pollUpdates;
91
+ const id = pollIdOf(key);
92
+ if (!incoming?.length || !id)
93
+ continue;
94
+ try {
95
+ let tracked = polls.get(id);
96
+ if (!tracked && config.getMessage) {
97
+ const stored = await config.getMessage(key);
98
+ if (stored) {
99
+ remember({ key, message: stored });
100
+ tracked = polls.get(id);
101
+ }
102
+ }
103
+ if (!tracked) {
104
+ config.logger?.debug({ key }, 'poll vote ignored: the poll message is unknown (provide getMessage)');
105
+ continue;
106
+ }
107
+ for (const vote of incoming) {
108
+ const voter = vote.pollUpdateMessageKey?.participant || vote.pollUpdateMessageKey?.remoteJid || '';
109
+ tracked.updates.set(voter, vote);
110
+ sock.ev.emit('poll.votes', {
111
+ pollKey: tracked.key,
112
+ pollName: pollName(tracked.message),
113
+ votes: aggregate(tracked, sock.user?.id),
114
+ voter
115
+ });
116
+ }
117
+ }
118
+ catch (error) {
119
+ config.logger?.warn({ error }, 'could not process a poll vote');
120
+ }
121
+ }
122
+ });
123
+ // ---- helpers ---------------------------------------------------------------
124
+ const toContent = (content) => (typeof content === 'string' ? { text: content } : content);
125
+ const chatOf = (msg) => {
126
+ const jid = msg.key.remoteJid;
127
+ if (!jid)
128
+ throw new Boom('The message has no chat (key.remoteJid)', { statusCode: 400 });
129
+ return jid;
130
+ };
131
+ return {
132
+ /**
133
+ * Who sent the message: phone number, LID and WhatsApp's internal id, resolving the missing
134
+ * one through the LID mapping. Never throws.
135
+ */
136
+ getSender: async (msg) => {
137
+ const base = getSenderIds(msg, sock.user);
138
+ let { pn, lid } = base;
139
+ try {
140
+ const mapping = sock.signalRepository?.lidMapping;
141
+ if (lid && !pn && mapping?.getPNForLID) {
142
+ const found = await mapping.getPNForLID(lid);
143
+ if (found)
144
+ pn = jidNormalizedUser(found);
145
+ }
146
+ else if (pn && !lid && mapping?.getLIDForPN) {
147
+ const found = await mapping.getLIDForPN(pn);
148
+ if (found)
149
+ lid = jidNormalizedUser(found);
150
+ }
151
+ }
152
+ catch (error) {
153
+ config.logger?.debug({ error }, 'could not resolve the sender through the LID mapping');
154
+ }
155
+ return buildSender({ chat: base.chat, isGroup: base.isGroup, fromMe: base.fromMe, pn, lid });
156
+ },
157
+ /** Replies quoting the message. `content` can be a plain string. */
158
+ reply: (msg, content, options = {}) => sock.sendMessage(chatOf(msg), toContent(content), { quoted: msg, ...options }),
159
+ /** Reacts to a message with an emoji (empty string removes the reaction). */
160
+ react: (msg, emoji) => sock.sendMessage(chatOf(msg), { react: { text: emoji, key: msg.key } }),
161
+ /**
162
+ * Like `sendMessage`, but never throws: it tells `sent`, `failed` or `unknown` apart.
163
+ * `unknown` means the connection dropped or the wait timed out, so the message may still
164
+ * arrive; its `settled` promise gives the final outcome.
165
+ */
166
+ sendSafe: async (jid, content, options, { timeoutMs = 20000 } = {}) => {
167
+ const run = Promise.resolve()
168
+ .then(() => sock.sendMessage(jid, toContent(content), options))
169
+ .then(message => ({ status: 'sent', message }))
170
+ .catch(error => {
171
+ const code = error?.output?.statusCode;
172
+ return UNCERTAIN_CODES.includes(code)
173
+ ? { status: 'unknown', error, settled: Promise.resolve({ status: 'failed', error }) }
174
+ : { status: 'failed', error };
175
+ });
176
+ let timer;
177
+ const timeout = new Promise(resolve => {
178
+ timer = setTimeout(() => {
179
+ const error = new Boom('Timed out waiting for the send to finish', { statusCode: 408 });
180
+ resolve({ status: 'unknown', error, settled: run });
181
+ }, timeoutMs);
182
+ });
183
+ try {
184
+ return await Promise.race([run, timeout]);
185
+ }
186
+ finally {
187
+ clearTimeout(timer);
188
+ }
189
+ },
190
+ /** Sends a message with buttons. */
191
+ sendButtons: (jid, { buttons, ...rest }, options) => {
192
+ if (!Array.isArray(buttons) || !buttons.length) {
193
+ throw new Boom('sendButtons needs at least one button', { statusCode: 400 });
194
+ }
195
+ return sock.sendMessage(jid, { ...rest, buttons }, options);
196
+ },
197
+ /**
198
+ * Sends a carousel: up to 10 cards that scroll sideways, each with its own image or video,
199
+ * texts and buttons.
200
+ */
201
+ sendCarousel: (jid, { cards, ...rest }, options) => {
202
+ if (!Array.isArray(cards) || !cards.length) {
203
+ throw new Boom('sendCarousel needs at least one card', { statusCode: 400 });
204
+ }
205
+ return sock.sendMessage(jid, { ...rest, carousel: cards }, options);
206
+ },
207
+ /**
208
+ * Tries to remove the buttons from a message you sent (by editing it into plain text), so
209
+ * nobody taps them again. WhatsApp may refuse to edit some interactive messages: it returns
210
+ * `false` then. For a guaranteed "use once", pass `{ once: true }` to `onButton`.
211
+ */
212
+ disableButtons: async (msg, text) => {
213
+ const content = msg.message?.interactiveMessage || msg.message?.buttonsMessage;
214
+ const original = (content && 'body' in content ? content.body?.text : undefined) ||
215
+ (content && 'contentText' in content ? content.contentText : undefined) ||
216
+ '';
217
+ try {
218
+ await sock.sendMessage(chatOf(msg), { text: text ?? (original || '✅'), edit: msg.key });
219
+ return true;
220
+ }
221
+ catch (error) {
222
+ config.logger?.debug({ error }, 'could not edit the message to disable its buttons');
223
+ return false;
224
+ }
225
+ },
226
+ /** Sends a list (dropdown) message. */
227
+ sendList: (jid, { sections, ...rest }, options) => {
228
+ if (!Array.isArray(sections) || !sections.length) {
229
+ throw new Boom('sendList needs at least one section', { statusCode: 400 });
230
+ }
231
+ const normalized = sections.map(section => ({
232
+ ...section,
233
+ rows: section.rows.map(({ id, rowId, ...row }) => ({ ...row, rowId: rowId ?? id ?? row.title }))
234
+ }));
235
+ return sock.sendMessage(jid, { buttonText: 'Ver opciones', ...rest, sections: normalized }, options);
236
+ },
237
+ /** Sends a poll and starts tracking its votes (see the `poll.votes` event and `getPollVotes`). */
238
+ sendPoll: async (jid, name, values, poll = {}, options) => {
239
+ const sent = await sock.sendMessage(jid, { poll: { name, values, selectableCount: 1, ...poll } }, options);
240
+ remember(sent);
241
+ return sent;
242
+ },
243
+ /** Current results of a poll created by (or seen by) this socket. */
244
+ getPollVotes: (pollKey) => {
245
+ const id = typeof pollKey === 'string' ? [...polls.keys()].find(entry => entry.endsWith(`|${pollKey}`)) : pollIdOf(pollKey);
246
+ const tracked = id ? polls.get(id) : undefined;
247
+ if (!tracked)
248
+ return undefined;
249
+ return {
250
+ pollKey: tracked.key,
251
+ pollName: pollName(tracked.message),
252
+ votes: aggregate(tracked, sock.user?.id)
253
+ };
254
+ },
255
+ /**
256
+ * Downloads the media of a message (image, video, audio, document, sticker) in one call,
257
+ * re-requesting the upload from the phone when the file expired.
258
+ */
259
+ downloadMedia: async (msg, options = {}) => {
260
+ let target = msg;
261
+ if (options.quoted) {
262
+ const content = msg.message || {};
263
+ const type = Object.keys(content).find(entry => content[entry]?.contextInfo);
264
+ const context = type ? content[type].contextInfo : undefined;
265
+ if (!context?.quotedMessage)
266
+ throw new Boom('The message does not reply to anything', { statusCode: 400 });
267
+ target = {
268
+ key: { remoteJid: msg.key.remoteJid, id: context.stanzaId, participant: context.participant },
269
+ message: context.quotedMessage
270
+ };
271
+ }
272
+ return downloadMediaMessage(target, 'buffer', {}, {
273
+ reuploadRequest: sock.updateMediaMessage,
274
+ logger: (config.logger || { debug() { }, warn() { } })
275
+ });
276
+ }
277
+ };
278
+ };
279
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/Utils/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { proto } from '../../WAProto/index.js';
2
+ import type { Chat, Contact, LIDMapping, WAMessage } from '../Types/index.js';
3
+ import type { ILogger } from './logger.js';
4
+ export declare const downloadHistory: (msg: proto.Message.IHistorySyncNotification, options: RequestInit) => Promise<proto.HistorySync>;
5
+ export declare const processHistoryMessage: (item: proto.IHistorySync, logger?: ILogger) => {
6
+ chats: Chat[];
7
+ contacts: Contact[];
8
+ messages: WAMessage[];
9
+ lidPnMappings: LIDMapping[];
10
+ pastParticipants: proto.IPastParticipants[] | null | undefined;
11
+ syncType: proto.HistorySync.HistorySyncType | null | undefined;
12
+ progress: number | null | undefined;
13
+ };
14
+ export declare const downloadAndProcessHistorySyncNotification: (msg: proto.Message.IHistorySyncNotification, options: RequestInit, logger?: ILogger) => Promise<{
15
+ chats: Chat[];
16
+ contacts: Contact[];
17
+ messages: WAMessage[];
18
+ lidPnMappings: LIDMapping[];
19
+ pastParticipants: proto.IPastParticipants[] | null | undefined;
20
+ syncType: proto.HistorySync.HistorySyncType | null | undefined;
21
+ progress: number | null | undefined;
22
+ }>;
23
+ export declare const getHistoryMsg: (message: proto.IMessage) => proto.Message.IHistorySyncNotification;
24
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/Utils/history.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAIpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAwB1C,eAAO,MAAM,eAAe,GAAU,KAAK,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,SAAS,WAAW,+BAYtG,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,MAAM,KAAK,CAAC,YAAY,EAAE,SAAS,OAAO;;;;;;;;CA6F/E,CAAA;AAED,eAAO,MAAM,yCAAyC,GACrD,KAAK,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAC3C,SAAS,WAAW,EACpB,SAAS,OAAO;;;;;;;;EAUhB,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,KAAK,CAAC,QAAQ,2CAKpD,CAAA"}