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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +1685 -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 +105 -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 +172 -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/banner.d.ts +28 -0
  198. package/lib/Utils/banner.d.ts.map +1 -0
  199. package/lib/Utils/banner.js +99 -0
  200. package/lib/Utils/banner.js.map +1 -0
  201. package/lib/Utils/browser-utils.d.ts +4 -0
  202. package/lib/Utils/browser-utils.d.ts.map +1 -0
  203. package/lib/Utils/browser-utils.js +29 -0
  204. package/lib/Utils/browser-utils.js.map +1 -0
  205. package/lib/Utils/business.d.ts +23 -0
  206. package/lib/Utils/business.d.ts.map +1 -0
  207. package/lib/Utils/business.js +231 -0
  208. package/lib/Utils/business.js.map +1 -0
  209. package/lib/Utils/button-builder.d.ts +10 -0
  210. package/lib/Utils/button-builder.d.ts.map +1 -0
  211. package/lib/Utils/button-builder.js +48 -0
  212. package/lib/Utils/button-builder.js.map +1 -0
  213. package/lib/Utils/chat-utils.d.ts +100 -0
  214. package/lib/Utils/chat-utils.d.ts.map +1 -0
  215. package/lib/Utils/chat-utils.js +872 -0
  216. package/lib/Utils/chat-utils.js.map +1 -0
  217. package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
  218. package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
  219. package/lib/Utils/companion-reg-client-utils.js +35 -0
  220. package/lib/Utils/companion-reg-client-utils.js.map +1 -0
  221. package/lib/Utils/console-filter.d.ts +10 -0
  222. package/lib/Utils/console-filter.d.ts.map +1 -0
  223. package/lib/Utils/console-filter.js +44 -0
  224. package/lib/Utils/console-filter.js.map +1 -0
  225. package/lib/Utils/crypto.d.ts +37 -0
  226. package/lib/Utils/crypto.d.ts.map +1 -0
  227. package/lib/Utils/crypto.js +118 -0
  228. package/lib/Utils/crypto.js.map +1 -0
  229. package/lib/Utils/decode-wa-message.d.ts +66 -0
  230. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  231. package/lib/Utils/decode-wa-message.js +317 -0
  232. package/lib/Utils/decode-wa-message.js.map +1 -0
  233. package/lib/Utils/event-buffer.d.ts +36 -0
  234. package/lib/Utils/event-buffer.d.ts.map +1 -0
  235. package/lib/Utils/event-buffer.js +622 -0
  236. package/lib/Utils/event-buffer.js.map +1 -0
  237. package/lib/Utils/generics.d.ts +92 -0
  238. package/lib/Utils/generics.d.ts.map +1 -0
  239. package/lib/Utils/generics.js +395 -0
  240. package/lib/Utils/generics.js.map +1 -0
  241. package/lib/Utils/group-cache.d.ts +22 -0
  242. package/lib/Utils/group-cache.d.ts.map +1 -0
  243. package/lib/Utils/group-cache.js +31 -0
  244. package/lib/Utils/group-cache.js.map +1 -0
  245. package/lib/Utils/group-fetch.d.ts +19 -0
  246. package/lib/Utils/group-fetch.d.ts.map +1 -0
  247. package/lib/Utils/group-fetch.js +43 -0
  248. package/lib/Utils/group-fetch.js.map +1 -0
  249. package/lib/Utils/group-tools.d.ts +38 -0
  250. package/lib/Utils/group-tools.d.ts.map +1 -0
  251. package/lib/Utils/group-tools.js +75 -0
  252. package/lib/Utils/group-tools.js.map +1 -0
  253. package/lib/Utils/helpers.d.ts +180 -0
  254. package/lib/Utils/helpers.d.ts.map +1 -0
  255. package/lib/Utils/helpers.js +279 -0
  256. package/lib/Utils/helpers.js.map +1 -0
  257. package/lib/Utils/history.d.ts +24 -0
  258. package/lib/Utils/history.d.ts.map +1 -0
  259. package/lib/Utils/history.js +134 -0
  260. package/lib/Utils/history.js.map +1 -0
  261. package/lib/Utils/identity-change-handler.d.ts +44 -0
  262. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  263. package/lib/Utils/identity-change-handler.js +50 -0
  264. package/lib/Utils/identity-change-handler.js.map +1 -0
  265. package/lib/Utils/index.d.ts +33 -0
  266. package/lib/Utils/index.d.ts.map +1 -0
  267. package/lib/Utils/index.js +33 -0
  268. package/lib/Utils/index.js.map +1 -0
  269. package/lib/Utils/insights.d.ts +80 -0
  270. package/lib/Utils/insights.d.ts.map +1 -0
  271. package/lib/Utils/insights.js +188 -0
  272. package/lib/Utils/insights.js.map +1 -0
  273. package/lib/Utils/link-preview.d.ts +21 -0
  274. package/lib/Utils/link-preview.d.ts.map +1 -0
  275. package/lib/Utils/link-preview.js +85 -0
  276. package/lib/Utils/link-preview.js.map +1 -0
  277. package/lib/Utils/logger.d.ts +13 -0
  278. package/lib/Utils/logger.d.ts.map +1 -0
  279. package/lib/Utils/logger.js +9 -0
  280. package/lib/Utils/logger.js.map +1 -0
  281. package/lib/Utils/lt-hash.d.ts +8 -0
  282. package/lib/Utils/lt-hash.d.ts.map +1 -0
  283. package/lib/Utils/lt-hash.js +8 -0
  284. package/lib/Utils/lt-hash.js.map +1 -0
  285. package/lib/Utils/make-mutex.d.ts +9 -0
  286. package/lib/Utils/make-mutex.d.ts.map +1 -0
  287. package/lib/Utils/make-mutex.js +33 -0
  288. package/lib/Utils/make-mutex.js.map +1 -0
  289. package/lib/Utils/mentions.d.ts +11 -0
  290. package/lib/Utils/mentions.d.ts.map +1 -0
  291. package/lib/Utils/mentions.js +29 -0
  292. package/lib/Utils/mentions.js.map +1 -0
  293. package/lib/Utils/message-retry-manager.d.ts +115 -0
  294. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  295. package/lib/Utils/message-retry-manager.js +265 -0
  296. package/lib/Utils/message-retry-manager.js.map +1 -0
  297. package/lib/Utils/message-store.d.ts +19 -0
  298. package/lib/Utils/message-store.d.ts.map +1 -0
  299. package/lib/Utils/message-store.js +26 -0
  300. package/lib/Utils/message-store.js.map +1 -0
  301. package/lib/Utils/messages-media.d.ts +133 -0
  302. package/lib/Utils/messages-media.d.ts.map +1 -0
  303. package/lib/Utils/messages-media.js +788 -0
  304. package/lib/Utils/messages-media.js.map +1 -0
  305. package/lib/Utils/messages.d.ts +95 -0
  306. package/lib/Utils/messages.d.ts.map +1 -0
  307. package/lib/Utils/messages.js +1094 -0
  308. package/lib/Utils/messages.js.map +1 -0
  309. package/lib/Utils/noise-handler.d.ts +20 -0
  310. package/lib/Utils/noise-handler.d.ts.map +1 -0
  311. package/lib/Utils/noise-handler.js +201 -0
  312. package/lib/Utils/noise-handler.js.map +1 -0
  313. package/lib/Utils/offline-node-processor.d.ts +17 -0
  314. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  315. package/lib/Utils/offline-node-processor.js +40 -0
  316. package/lib/Utils/offline-node-processor.js.map +1 -0
  317. package/lib/Utils/pre-key-manager.d.ts +28 -0
  318. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  319. package/lib/Utils/pre-key-manager.js +106 -0
  320. package/lib/Utils/pre-key-manager.js.map +1 -0
  321. package/lib/Utils/process-message.d.ts +60 -0
  322. package/lib/Utils/process-message.d.ts.map +1 -0
  323. package/lib/Utils/process-message.js +630 -0
  324. package/lib/Utils/process-message.js.map +1 -0
  325. package/lib/Utils/replies.d.ts +60 -0
  326. package/lib/Utils/replies.d.ts.map +1 -0
  327. package/lib/Utils/replies.js +154 -0
  328. package/lib/Utils/replies.js.map +1 -0
  329. package/lib/Utils/reporting-utils.d.ts +11 -0
  330. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  331. package/lib/Utils/reporting-utils.js +258 -0
  332. package/lib/Utils/reporting-utils.js.map +1 -0
  333. package/lib/Utils/send-queue.d.ts +50 -0
  334. package/lib/Utils/send-queue.d.ts.map +1 -0
  335. package/lib/Utils/send-queue.js +124 -0
  336. package/lib/Utils/send-queue.js.map +1 -0
  337. package/lib/Utils/signal.d.ts +47 -0
  338. package/lib/Utils/signal.d.ts.map +1 -0
  339. package/lib/Utils/signal.js +201 -0
  340. package/lib/Utils/signal.js.map +1 -0
  341. package/lib/Utils/stanza-ack.d.ts +11 -0
  342. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  343. package/lib/Utils/stanza-ack.js +38 -0
  344. package/lib/Utils/stanza-ack.js.map +1 -0
  345. package/lib/Utils/sync-action-utils.d.ts +19 -0
  346. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  347. package/lib/Utils/sync-action-utils.js +49 -0
  348. package/lib/Utils/sync-action-utils.js.map +1 -0
  349. package/lib/Utils/tc-token-utils.d.ts +37 -0
  350. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  351. package/lib/Utils/tc-token-utils.js +164 -0
  352. package/lib/Utils/tc-token-utils.js.map +1 -0
  353. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  354. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  355. package/lib/Utils/use-multi-file-auth-state.js +154 -0
  356. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  357. package/lib/Utils/validate-connection.d.ts +11 -0
  358. package/lib/Utils/validate-connection.d.ts.map +1 -0
  359. package/lib/Utils/validate-connection.js +210 -0
  360. package/lib/Utils/validate-connection.js.map +1 -0
  361. package/lib/Utils/wa-version.d.ts +33 -0
  362. package/lib/Utils/wa-version.d.ts.map +1 -0
  363. package/lib/Utils/wa-version.js +92 -0
  364. package/lib/Utils/wa-version.js.map +1 -0
  365. package/lib/WABinary/constants.d.ts +28 -0
  366. package/lib/WABinary/constants.d.ts.map +1 -0
  367. package/lib/WABinary/constants.js +1301 -0
  368. package/lib/WABinary/constants.js.map +1 -0
  369. package/lib/WABinary/decode.d.ts +7 -0
  370. package/lib/WABinary/decode.d.ts.map +1 -0
  371. package/lib/WABinary/decode.js +262 -0
  372. package/lib/WABinary/decode.js.map +1 -0
  373. package/lib/WABinary/encode.d.ts +3 -0
  374. package/lib/WABinary/encode.d.ts.map +1 -0
  375. package/lib/WABinary/encode.js +220 -0
  376. package/lib/WABinary/encode.js.map +1 -0
  377. package/lib/WABinary/generic-utils.d.ts +17 -0
  378. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  379. package/lib/WABinary/generic-utils.js +213 -0
  380. package/lib/WABinary/generic-utils.js.map +1 -0
  381. package/lib/WABinary/index.d.ts +6 -0
  382. package/lib/WABinary/index.d.ts.map +1 -0
  383. package/lib/WABinary/index.js +6 -0
  384. package/lib/WABinary/index.js.map +1 -0
  385. package/lib/WABinary/jid-utils.d.ts +48 -0
  386. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  387. package/lib/WABinary/jid-utils.js +96 -0
  388. package/lib/WABinary/jid-utils.js.map +1 -0
  389. package/lib/WABinary/types.d.ts +19 -0
  390. package/lib/WABinary/types.d.ts.map +1 -0
  391. package/lib/WABinary/types.js +2 -0
  392. package/lib/WABinary/types.js.map +1 -0
  393. package/lib/WAM/BinaryInfo.d.ts +9 -0
  394. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  395. package/lib/WAM/BinaryInfo.js +10 -0
  396. package/lib/WAM/BinaryInfo.js.map +1 -0
  397. package/lib/WAM/constants.d.ts +40 -0
  398. package/lib/WAM/constants.d.ts.map +1 -0
  399. package/lib/WAM/constants.js +22853 -0
  400. package/lib/WAM/constants.js.map +1 -0
  401. package/lib/WAM/encode.d.ts +3 -0
  402. package/lib/WAM/encode.d.ts.map +1 -0
  403. package/lib/WAM/encode.js +150 -0
  404. package/lib/WAM/encode.js.map +1 -0
  405. package/lib/WAM/index.d.ts +4 -0
  406. package/lib/WAM/index.d.ts.map +1 -0
  407. package/lib/WAM/index.js +4 -0
  408. package/lib/WAM/index.js.map +1 -0
  409. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  410. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  411. package/lib/WAUSync/Protocols/USyncContactProtocol.js +52 -0
  412. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  413. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  414. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  415. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +54 -0
  416. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  417. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  418. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  419. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +27 -0
  420. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  421. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  422. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  423. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +38 -0
  424. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  425. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  426. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
  427. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  428. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
  429. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  430. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  431. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +51 -0
  432. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  433. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
  434. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  435. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
  436. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  437. package/lib/WAUSync/Protocols/index.d.ts +6 -0
  438. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  439. package/lib/WAUSync/Protocols/index.js +6 -0
  440. package/lib/WAUSync/Protocols/index.js.map +1 -0
  441. package/lib/WAUSync/USyncQuery.d.ts +30 -0
  442. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  443. package/lib/WAUSync/USyncQuery.js +98 -0
  444. package/lib/WAUSync/USyncQuery.js.map +1 -0
  445. package/lib/WAUSync/USyncUser.d.ts +17 -0
  446. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  447. package/lib/WAUSync/USyncUser.js +31 -0
  448. package/lib/WAUSync/USyncUser.js.map +1 -0
  449. package/lib/WAUSync/index.d.ts +4 -0
  450. package/lib/WAUSync/index.d.ts.map +1 -0
  451. package/lib/WAUSync/index.js +4 -0
  452. package/lib/WAUSync/index.js.map +1 -0
  453. package/lib/index.d.ts +13 -0
  454. package/lib/index.d.ts.map +1 -0
  455. package/lib/index.js +12 -0
  456. package/lib/index.js.map +1 -0
  457. package/package.json +150 -3
@@ -0,0 +1,408 @@
1
+ import { Boom } from '@hapi/boom';
2
+ import { type UserFacingSocketConfig } from '../Types/index.js';
3
+ import makeWASocket from './index.js';
4
+ export type YuiSocket = ReturnType<typeof makeWASocket>;
5
+ export type SessionManagerOptions = {
6
+ /** folder where each session keeps its login: `<authDir>/<sessionId>/` */
7
+ authDir: string;
8
+ /** socket config shared by every session, or a function that builds it per session */
9
+ config?: Partial<UserFacingSocketConfig> | ((sessionId: string) => Partial<UserFacingSocketConfig>);
10
+ /** called every time a socket is created (also on reconnects): attach your event handlers here */
11
+ setup?: (sock: YuiSocket, sessionId: string) => void | Promise<void>;
12
+ /** reconnect by itself when the connection drops (not after a logout). Default true */
13
+ autoReconnect?: boolean;
14
+ /** first reconnect delay in ms, doubled each attempt up to `maxReconnectDelayMs`. Default 2000 */
15
+ reconnectDelayMs?: number;
16
+ maxReconnectDelayMs?: number;
17
+ /** replaceable for tests */
18
+ makeSocket?: (config: UserFacingSocketConfig) => YuiSocket;
19
+ sleep?: (ms: number) => Promise<void>;
20
+ };
21
+ export type StartSessionOptions = {
22
+ /** phone number (digits, with country code) to log in with a pairing code instead of a QR */
23
+ pairingNumber?: string;
24
+ /** extra socket config for this session only */
25
+ config?: Partial<UserFacingSocketConfig>;
26
+ };
27
+ export type SessionStatus = 'connecting' | 'open' | 'closed' | 'logged-out';
28
+ export type SessionInfo = {
29
+ id: string;
30
+ status: SessionStatus;
31
+ /** the logged-in account, once connected */
32
+ user: YuiSocket['user'];
33
+ reconnects: number;
34
+ };
35
+ export type SessionManagerEvents = {
36
+ /** a QR code to scan for this session */
37
+ 'session.qr': {
38
+ id: string;
39
+ qr: string;
40
+ };
41
+ /** a pairing code to type in WhatsApp > Linked devices > Link with phone number */
42
+ 'session.pairing-code': {
43
+ id: string;
44
+ code: string;
45
+ };
46
+ 'session.open': {
47
+ id: string;
48
+ user: YuiSocket['user'];
49
+ };
50
+ /** the connection dropped; `willReconnect` tells whether the manager will retry */
51
+ 'session.close': {
52
+ id: string;
53
+ reason: number | undefined;
54
+ willReconnect: boolean;
55
+ };
56
+ /** the account logged out (or removed the device): its saved login was deleted */
57
+ 'session.logged-out': {
58
+ id: string;
59
+ };
60
+ 'session.error': {
61
+ id: string;
62
+ error: unknown;
63
+ };
64
+ };
65
+ /**
66
+ * Runs several WhatsApp numbers in one process. Each session has its own login folder, its own
67
+ * socket and its own automatic reconnection.
68
+ */
69
+ export declare const makeSessionManager: (options: SessionManagerOptions) => {
70
+ /** Starts (or returns the already running) session. */
71
+ start: (id: string, startOptions?: StartSessionOptions) => Promise<YuiSocket | undefined>;
72
+ /** The live socket of a session. */
73
+ get: (id: string) => ({
74
+ communityMetadata: (jid: string) => Promise<import("../index.js").GroupMetadata>;
75
+ communityCreate: (subject: string, body: string) => Promise<import("../index.js").GroupMetadata | null>;
76
+ communityCreateGroup: (subject: string, participants: string[], parentCommunityJid: string) => Promise<import("../index.js").GroupMetadata | null>;
77
+ communityLeave: (id: string) => Promise<void>;
78
+ communityUpdateSubject: (jid: string, subject: string) => Promise<void>;
79
+ communityLinkGroup: (groupJid: string, parentCommunityJid: string) => Promise<void>;
80
+ communityUnlinkGroup: (groupJid: string, parentCommunityJid: string) => Promise<void>;
81
+ communityFetchLinkedGroups: (jid: string) => Promise<{
82
+ communityJid: string;
83
+ isCommunity: boolean;
84
+ linkedGroups: {
85
+ id: string | undefined;
86
+ subject: string;
87
+ creation: number | undefined;
88
+ owner: string | undefined;
89
+ size: number | undefined;
90
+ }[];
91
+ }>;
92
+ communityRequestParticipantsList: (jid: string) => Promise<{
93
+ [key: string]: string;
94
+ }[]>;
95
+ communityRequestParticipantsUpdate: (jid: string, participants: string[], action: "approve" | "reject") => Promise<{
96
+ status: string;
97
+ jid: string | undefined;
98
+ }[]>;
99
+ communityParticipantsUpdate: (jid: string, participants: string[], action: import("../index.js").ParticipantAction) => Promise<{
100
+ status: string;
101
+ jid: string | undefined;
102
+ content: import("../index.js").BinaryNode;
103
+ }[]>;
104
+ communityUpdateDescription: (jid: string, description?: string) => Promise<void>;
105
+ communityInviteCode: (jid: string) => Promise<string | undefined>;
106
+ communityRevokeInvite: (jid: string) => Promise<string | undefined>;
107
+ communityAcceptInvite: (code: string) => Promise<string | undefined>;
108
+ communityRevokeInviteV4: (communityJid: string, invitedJid: string) => Promise<boolean>;
109
+ communityAcceptInviteV4: (key: string | import("../index.js").WAMessageKey, inviteMessage: import("../index.js").proto.Message.IGroupInviteMessage) => Promise<any>;
110
+ communityGetInviteInfo: (code: string) => Promise<import("../index.js").GroupMetadata>;
111
+ communityToggleEphemeral: (jid: string, ephemeralExpiration: number) => Promise<void>;
112
+ communitySettingUpdate: (jid: string, setting: "announcement" | "not_announcement" | "locked" | "unlocked") => Promise<void>;
113
+ communityMemberAddMode: (jid: string, mode: "admin_add" | "all_member_add") => Promise<void>;
114
+ communityJoinApprovalMode: (jid: string, mode: "on" | "off") => Promise<void>;
115
+ communityFetchAllParticipating: () => Promise<{
116
+ [_: string]: import("../index.js").GroupMetadata;
117
+ }>;
118
+ logger: import("../Utils/logger.js").ILogger;
119
+ getOrderDetails: (orderId: string, tokenBase64: string) => Promise<import("../index.js").OrderDetails>;
120
+ getCatalog: ({ jid, limit, cursor }: import("../index.js").GetCatalogOptions) => Promise<{
121
+ products: import("../index.js").Product[];
122
+ nextPageCursor: string | undefined;
123
+ }>;
124
+ getCollections: (jid?: string, limit?: number) => Promise<{
125
+ collections: import("../index.js").CatalogCollection[];
126
+ }>;
127
+ productCreate: (create: import("../index.js").ProductCreate) => Promise<import("../index.js").Product>;
128
+ productDelete: (productIds: string[]) => Promise<{
129
+ deleted: number;
130
+ }>;
131
+ productUpdate: (productId: string, update: import("../index.js").ProductUpdate) => Promise<import("../index.js").Product>;
132
+ updateBussinesProfile: (args: import("../Types/Bussines.js").UpdateBussinesProfileProps) => Promise<any>;
133
+ updateCoverPhoto: (photo: import("../index.js").WAMediaUpload) => Promise<number>;
134
+ removeCoverPhoto: (id: string) => Promise<any>;
135
+ sendMessageAck: (node: import("../index.js").BinaryNode, errorCode?: number) => Promise<void>;
136
+ sendRetryRequest: (node: import("../index.js").BinaryNode, forceIncludeKeys?: boolean) => Promise<void>;
137
+ rejectCall: (callId: string, callFrom: string) => Promise<void>;
138
+ fetchMessageHistory: (count: number, oldestMsgKey: import("../index.js").WAMessageKey, oldestMsgTimestamp: number | import("long").default) => Promise<string>;
139
+ requestPlaceholderResend: (messageKey: import("../index.js").WAMessageKey, msgData?: Partial<import("../index.js").WAMessage>) => Promise<string | undefined>;
140
+ messageRetryManager: import("../index.js").MessageRetryManager | null;
141
+ userDevicesCache: import("../index.js").PossiblyExtendedCacheStore | import("@cacheable/node-cache").NodeCache<import("../index.js").JidWithDevice[]>;
142
+ devicesMutex: {
143
+ mutex<T>(code: () => Promise<T> | T): Promise<T>;
144
+ };
145
+ issuePrivacyTokens: (jids: string[], timestamp?: number) => Promise<any>;
146
+ assertSessions: (jids: string[], force?: boolean) => Promise<boolean>;
147
+ relayMessage: (jid: string, message: import("../index.js").proto.IMessage, { messageId: msgId, participant, additionalAttributes, additionalNodes, useUserDevicesCache, useCachedGroupMetadata, statusJidList }: import("../index.js").MessageRelayOptions) => Promise<string>;
148
+ sendReceipt: (jid: string, participant: string | undefined, messageIds: string[], type: import("../index.js").MessageReceiptType) => Promise<void>;
149
+ sendReceipts: (keys: import("../index.js").WAMessageKey[], type: import("../index.js").MessageReceiptType) => Promise<void>;
150
+ readMessages: (keys: import("../index.js").WAMessageKey[]) => Promise<void>;
151
+ refreshMediaConn: (forceGet?: boolean) => Promise<import("../index.js").MediaConnInfo>;
152
+ getMediaHost: () => string;
153
+ waUploadToServer: import("../index.js").WAMediaUploadFunction;
154
+ fetchPrivacySettings: (force?: boolean) => Promise<{
155
+ [_: string]: string;
156
+ }>;
157
+ sendPeerDataOperationMessage: (pdoMessage: import("../index.js").proto.Message.IPeerDataOperationRequestMessage) => Promise<string>;
158
+ createParticipantNodes: (recipientJids: string[], message: import("../index.js").proto.IMessage, extraAttrs?: import("../index.js").BinaryNode["attrs"], dsmMessage?: import("../index.js").proto.IMessage) => Promise<{
159
+ nodes: import("../index.js").BinaryNode[];
160
+ shouldIncludeDeviceIdentity: boolean;
161
+ }>;
162
+ getUSyncDevices: (jids: string[], useCache: boolean, ignoreZeroDevices: boolean) => Promise<(import("../index.js").JidWithDevice & {
163
+ jid: string;
164
+ })[]>;
165
+ updateMemberLabel: (jid: string, memberLabel: string) => Promise<string>;
166
+ updateMediaMessage: (message: import("../index.js").WAMessage) => Promise<import("../index.js").WAMessage>;
167
+ sendMessage: (jid: string, content: import("../index.js").AnyMessageContent, options?: import("../index.js").MiscMessageGenerationOptions) => Promise<import("../index.js").WAMessage | undefined>;
168
+ newsletterCreate: (name: string, description?: string) => Promise<import("../index.js").NewsletterMetadata>;
169
+ newsletterUpdate: (jid: string, updates: import("../index.js").NewsletterUpdate) => Promise<unknown>;
170
+ newsletterSubscribers: (jid: string) => Promise<{
171
+ subscribers: number;
172
+ }>;
173
+ newsletterMetadata: (type: "invite" | "jid", key: string) => Promise<import("../index.js").NewsletterMetadata | null>;
174
+ newsletterFollow: (jid: string) => Promise<unknown>;
175
+ newsletterUnfollow: (jid: string) => Promise<unknown>;
176
+ newsletterMute: (jid: string) => Promise<unknown>;
177
+ newsletterUnmute: (jid: string) => Promise<unknown>;
178
+ newsletterUpdateName: (jid: string, name: string) => Promise<unknown>;
179
+ newsletterUpdateDescription: (jid: string, description: string) => Promise<unknown>;
180
+ newsletterUpdatePicture: (jid: string, content: import("../index.js").WAMediaUpload) => Promise<unknown>;
181
+ newsletterRemovePicture: (jid: string) => Promise<unknown>;
182
+ newsletterReactMessage: (jid: string, serverId: string, reaction?: string) => Promise<void>;
183
+ newsletterFetchMessages: (jid: string, count: number, since: number, after: number) => Promise<any>;
184
+ subscribeNewsletterUpdates: (jid: string) => Promise<{
185
+ duration: string;
186
+ } | null>;
187
+ newsletterAdminCount: (jid: string) => Promise<number>;
188
+ newsletterChangeOwner: (jid: string, newOwnerJid: string) => Promise<void>;
189
+ newsletterDemote: (jid: string, userJid: string) => Promise<void>;
190
+ newsletterDelete: (jid: string) => Promise<void>;
191
+ groupMetadata: (jid: string) => Promise<import("../index.js").GroupMetadata>;
192
+ groupCreate: (subject: string, participants: string[]) => Promise<import("../index.js").GroupMetadata>;
193
+ groupLeave: (id: string) => Promise<void>;
194
+ groupUpdateSubject: (jid: string, subject: string) => Promise<void>;
195
+ groupRequestParticipantsList: (jid: string) => Promise<{
196
+ [key: string]: string;
197
+ }[]>;
198
+ groupRequestParticipantsUpdate: (jid: string, participants: string[], action: "approve" | "reject") => Promise<{
199
+ status: string;
200
+ jid: string | undefined;
201
+ }[]>;
202
+ groupParticipantsUpdate: (jid: string, participants: string[], action: import("../index.js").ParticipantAction) => Promise<{
203
+ status: string;
204
+ jid: string | undefined;
205
+ content: import("../index.js").BinaryNode;
206
+ }[]>;
207
+ groupUpdateDescription: (jid: string, description?: string) => Promise<void>;
208
+ groupInviteCode: (jid: string) => Promise<string | undefined>;
209
+ groupRevokeInvite: (jid: string) => Promise<string | undefined>;
210
+ groupAcceptInvite: (code: string) => Promise<string | undefined>;
211
+ groupRevokeInviteV4: (groupJid: string, invitedJid: string) => Promise<boolean>;
212
+ groupAcceptInviteV4: (key: string | import("../index.js").WAMessageKey, inviteMessage: import("../index.js").proto.Message.IGroupInviteMessage) => Promise<any>;
213
+ groupGetInviteInfo: (code: string) => Promise<import("../index.js").GroupMetadata>;
214
+ groupToggleEphemeral: (jid: string, ephemeralExpiration: number) => Promise<void>;
215
+ groupSettingUpdate: (jid: string, setting: "announcement" | "not_announcement" | "locked" | "unlocked") => Promise<void>;
216
+ groupMemberAddMode: (jid: string, mode: "admin_add" | "all_member_add") => Promise<void>;
217
+ groupJoinApprovalMode: (jid: string, mode: "on" | "off") => Promise<void>;
218
+ groupFetchAllParticipating: () => Promise<{
219
+ [_: string]: import("../index.js").GroupMetadata;
220
+ }>;
221
+ serverProps: {
222
+ privacyTokenOn1to1: boolean;
223
+ profilePicPrivacyToken: boolean;
224
+ lidTrustedTokenIssueToLid: boolean;
225
+ };
226
+ createCallLink: (type: "audio" | "video", event?: {
227
+ startTime: number;
228
+ }, timeoutMs?: number) => Promise<string | undefined>;
229
+ getBotListV2: () => Promise<import("../index.js").BotListInfo[]>;
230
+ messageMutex: {
231
+ mutex<T>(code: () => Promise<T> | T): Promise<T>;
232
+ };
233
+ receiptMutex: {
234
+ mutex<T>(code: () => Promise<T> | T): Promise<T>;
235
+ };
236
+ appStatePatchMutex: {
237
+ mutex<T>(code: () => Promise<T> | T): Promise<T>;
238
+ };
239
+ notificationMutex: {
240
+ mutex<T>(code: () => Promise<T> | T): Promise<T>;
241
+ };
242
+ upsertMessage: (msg: import("../index.js").WAMessage, type: import("../index.js").MessageUpsertType) => Promise<void>;
243
+ appPatch: (patchCreate: import("../index.js").WAPatchCreate) => Promise<void>;
244
+ sendPresenceUpdate: (type: import("../index.js").WAPresence, toJid?: string) => Promise<void>;
245
+ presenceSubscribe: (toJid: string) => Promise<void>;
246
+ profilePictureUrl: (jid: string, type?: "preview" | "image", timeoutMs?: number) => Promise<string | undefined>;
247
+ fetchBlocklist: () => Promise<(string | undefined)[]>;
248
+ fetchStatus: (...jids: string[]) => Promise<import("../index.js").USyncQueryResultList[] | undefined>;
249
+ fetchDisappearingDuration: (...jids: string[]) => Promise<import("../index.js").USyncQueryResultList[] | undefined>;
250
+ updateProfilePicture: (jid: string, content: import("../index.js").WAMediaUpload, dimensions?: {
251
+ width: number;
252
+ height: number;
253
+ }) => Promise<void>;
254
+ removeProfilePicture: (jid: string) => Promise<void>;
255
+ updateProfileStatus: (status: string) => Promise<void>;
256
+ updateProfileName: (name: string) => Promise<void>;
257
+ updateBlockStatus: (jid: string, action: "block" | "unblock") => Promise<void>;
258
+ updateDisableLinkPreviewsPrivacy: (isPreviewsDisabled: boolean) => Promise<void>;
259
+ updateCallPrivacy: (value: import("../index.js").WAPrivacyCallValue) => Promise<void>;
260
+ updateMessagesPrivacy: (value: import("../index.js").WAPrivacyMessagesValue) => Promise<void>;
261
+ updateLastSeenPrivacy: (value: import("../index.js").WAPrivacyValue) => Promise<void>;
262
+ updateOnlinePrivacy: (value: import("../index.js").WAPrivacyOnlineValue) => Promise<void>;
263
+ updateProfilePicturePrivacy: (value: import("../index.js").WAPrivacyValue) => Promise<void>;
264
+ updateStatusPrivacy: (value: import("../index.js").WAPrivacyValue) => Promise<void>;
265
+ updateReadReceiptsPrivacy: (value: import("../index.js").WAReadReceiptsValue) => Promise<void>;
266
+ updateGroupsAddPrivacy: (value: import("../index.js").WAPrivacyGroupAddValue) => Promise<void>;
267
+ updateDefaultDisappearingMode: (duration: number) => Promise<void>;
268
+ getBusinessProfile: (jid: string) => Promise<import("../index.js").WABusinessProfile | void>;
269
+ resyncAppState: (collections: readonly ("critical_unblock_low" | "regular_high" | "regular_low" | "critical_block" | "regular")[], isInitialSync: boolean) => Promise<void>;
270
+ chatModify: (mod: import("../index.js").ChatModification, jid: string) => Promise<void>;
271
+ cleanDirtyBits: (type: "account_sync" | "groups", fromTimestamp?: number | string) => Promise<void>;
272
+ addOrEditContact: (jid: string, contact: import("../index.js").proto.SyncActionValue.IContactAction) => Promise<void>;
273
+ removeContact: (jid: string) => Promise<void>;
274
+ placeholderResendCache: import("../index.js").CacheStore;
275
+ addLabel: (jid: string, labels: import("../Types/Label.js").LabelActionBody) => Promise<void>;
276
+ addChatLabel: (jid: string, labelId: string) => Promise<void>;
277
+ removeChatLabel: (jid: string, labelId: string) => Promise<void>;
278
+ addMessageLabel: (jid: string, messageId: string, labelId: string) => Promise<void>;
279
+ removeMessageLabel: (jid: string, messageId: string, labelId: string) => Promise<void>;
280
+ star: (jid: string, messages: {
281
+ id: string;
282
+ fromMe?: boolean;
283
+ }[], star: boolean) => Promise<void>;
284
+ addOrEditQuickReply: (quickReply: import("../Types/Bussines.js").QuickReplyAction) => Promise<void>;
285
+ removeQuickReply: (timestamp: string) => Promise<void>;
286
+ type: "md";
287
+ ws: import("./Client/index.js").WebSocketClient;
288
+ ev: import("../index.js").YuiEventEmitter & {
289
+ process(handler: (events: Partial<import("../index.js").YuiEventMap>) => void | Promise<void>): () => void;
290
+ buffer(): void;
291
+ createBufferedFunction<A extends any[], T>(work: (...args: A) => Promise<T>): (...args: A) => Promise<T>;
292
+ flush(): boolean;
293
+ isBuffering(): boolean;
294
+ destroy(): void;
295
+ };
296
+ authState: {
297
+ creds: import("../index.js").AuthenticationCreds;
298
+ keys: import("../index.js").SignalKeyStoreWithTransaction;
299
+ };
300
+ signalRepository: import("../index.js").SignalRepositoryWithLIDStore;
301
+ user: import("../index.js").Contact | undefined;
302
+ generateMessageTag: () => string;
303
+ query: (node: import("../index.js").BinaryNode, timeoutMs?: number) => Promise<any>;
304
+ waitForMessage: <T>(msgId: string, timeoutMs?: number | undefined) => Promise<T | undefined>;
305
+ waitForSocketOpen: () => Promise<void>;
306
+ sendRawMessage: (data: Uint8Array | Buffer) => Promise<void>;
307
+ sendNode: (frame: import("../index.js").BinaryNode) => Promise<void>;
308
+ logout: (msg?: string) => Promise<void>;
309
+ end: (error: Error | undefined) => Promise<void>;
310
+ registerSocketEndHandler: (handler: (error: Error | undefined) => void | Promise<void>) => void;
311
+ onUnexpectedError: (err: Error | Boom, msg: string) => void;
312
+ uploadPreKeys: (count?: number) => Promise<void>;
313
+ uploadPreKeysToServerIfRequired: () => Promise<void>;
314
+ digestKeyBundle: () => Promise<void>;
315
+ rotateSignedPreKey: () => Promise<void>;
316
+ requestPairingCode: (phoneNumber: string, customPairingCode?: string) => Promise<string>;
317
+ updateServerTimeOffset: ({ attrs }: import("../index.js").BinaryNode) => void;
318
+ sendUnifiedSession: () => Promise<void>;
319
+ wamBuffer: import("../index.js").BinaryInfo;
320
+ waitForConnectionUpdate: (check: (u: Partial<import("../index.js").ConnectionState>) => Promise<boolean | undefined>, timeoutMs?: number) => Promise<void>;
321
+ sendWAMBuffer: (wamBuffer: Buffer) => Promise<any>;
322
+ executeUSyncQuery: (usyncQuery: import("../index.js").USyncQuery) => Promise<import("../index.js").USyncQueryResult | undefined>;
323
+ onWhatsApp: (...phoneNumber: string[]) => Promise<{
324
+ jid: string;
325
+ exists: boolean;
326
+ }[] | undefined>;
327
+ fetchAccountReachoutTimelock: () => Promise<import("../index.js").ReachoutTimelockState>;
328
+ fetchNewChatMessageCap: () => Promise<import("../index.js").NewChatMessageCapInfo>;
329
+ } & {
330
+ getSender: (msg: import("../index.js").WAMessage) => Promise<import("../index.js").SenderInfo>;
331
+ reply: (msg: import("../index.js").WAMessage, content: string | {
332
+ [x: string]: unknown;
333
+ }, options?: import("../index.js").MiscMessageGenerationOptions) => Promise<import("../index.js").WAMessage | undefined>;
334
+ react: (msg: import("../index.js").WAMessage, emoji: string) => Promise<import("../index.js").WAMessage | undefined>;
335
+ sendSafe: (jid: string, content: string | {
336
+ [x: string]: unknown;
337
+ }, options?: import("../index.js").MiscMessageGenerationOptions, { timeoutMs }?: import("../index.js").SendSafeOptions) => Promise<import("../index.js").SendResult>;
338
+ sendButtons: (jid: string, { buttons, ...rest }: import("../index.js").SendButtonsOptions, options?: import("../index.js").MiscMessageGenerationOptions) => Promise<import("../index.js").WAMessage | undefined>;
339
+ sendCarousel: (jid: string, { cards, ...rest }: import("../index.js").SendCarouselOptions, options?: import("../index.js").MiscMessageGenerationOptions) => Promise<import("../index.js").WAMessage | undefined>;
340
+ disableButtons: (msg: import("../index.js").WAMessage, text?: string) => Promise<boolean>;
341
+ sendList: (jid: string, { sections, ...rest }: import("../index.js").SendListOptions, options?: import("../index.js").MiscMessageGenerationOptions) => Promise<import("../index.js").WAMessage | undefined>;
342
+ sendPoll: (jid: string, name: string, values: string[], poll?: Partial<Omit<import("../index.js").PollMessageOptions, "name" | "values">>, options?: import("../index.js").MiscMessageGenerationOptions) => Promise<import("../index.js").WAMessage | undefined>;
343
+ getPollVotes: (pollKey: import("../index.js").WAMessageKey | string) => {
344
+ pollKey: import("../index.js").WAMessageKey;
345
+ pollName: string;
346
+ votes: {
347
+ name: string;
348
+ voters: string[];
349
+ }[];
350
+ } | undefined;
351
+ downloadMedia: (msg: import("../index.js").WAMessage, options?: import("../index.js").DownloadMediaOptions) => Promise<Buffer>;
352
+ } & {
353
+ onReply: (matcher: import("../index.js").ReplyMatcher, run: import("../index.js").ReplyHandler, options?: import("../index.js").OnReplyOptions) => () => boolean;
354
+ onButton: (matcher: import("../index.js").ReplyMatcher, run: import("../index.js").ReplyHandler, options?: import("../index.js").OnReplyOptions) => () => boolean;
355
+ onList: (matcher: import("../index.js").ReplyMatcher, run: import("../index.js").ReplyHandler, options?: import("../index.js").OnReplyOptions) => () => boolean;
356
+ awaitReply: (msg: import("../index.js").WAMessage, { timeoutMs, filter }?: import("../index.js").AwaitReplyOptions) => Promise<import("../index.js").WAMessage | undefined>;
357
+ } & {
358
+ sendMessage: (jid: string, content: import("../index.js").AnyMessageContent, options?: import("../index.js").MiscMessageGenerationOptions) => Promise<import("../index.js").WAMessage | undefined>;
359
+ sendMessageNow: (jid: string, content: import("../index.js").AnyMessageContent, options?: import("../index.js").MiscMessageGenerationOptions) => Promise<import("../index.js").WAMessage | undefined>;
360
+ messageStore: {
361
+ save: (msg: Pick<import("../index.js").WAMessage, "key" | "message"> | null | undefined) => void;
362
+ get: (key: Pick<import("../index.js").WAMessageKey, "id">) => import("../index.js").proto.IMessage | undefined;
363
+ readonly size: number;
364
+ clear: () => void;
365
+ } | undefined;
366
+ groupCache: {
367
+ get: (jid: string) => import("../index.js").GroupMetadata | undefined;
368
+ set: (jid: string, data: import("../index.js").GroupMetadata) => void;
369
+ delete: (jid: string) => boolean;
370
+ clear: () => void;
371
+ readonly size: number;
372
+ } | undefined;
373
+ getAdmins: (groupJid: string) => Promise<import("../index.js").GroupParticipant[]>;
374
+ isAdmin: (groupJid: string, who: import("../index.js").GroupMember) => Promise<boolean>;
375
+ isBotAdmin: (groupJid: string) => Promise<boolean>;
376
+ kick: (groupJid: string, who: string | string[]) => Promise<unknown>;
377
+ addMembers: (groupJid: string, who: string | string[]) => Promise<unknown>;
378
+ promote: (groupJid: string, who: string | string[]) => Promise<unknown>;
379
+ demote: (groupJid: string, who: string | string[]) => Promise<unknown>;
380
+ getStats: () => import("../index.js").StatsSnapshot;
381
+ resetStats: () => void;
382
+ getMessageStatus: (message: string | Pick<import("../index.js").WAMessageKey, "id">) => import("../index.js").MessageDelivery | undefined;
383
+ health: ({ ping, timeoutMs }?: {
384
+ ping?: boolean;
385
+ timeoutMs?: number;
386
+ }) => Promise<import("../index.js").HealthReport>;
387
+ queue: {
388
+ readonly size: number;
389
+ clear: () => number;
390
+ };
391
+ }) | undefined;
392
+ /** Every session with its status. */
393
+ list: () => SessionInfo[];
394
+ /** Closes the connection but keeps the saved login, so `start(id)` brings it back. */
395
+ stop: (id: string) => Promise<boolean>;
396
+ /** Logs the number out of WhatsApp and deletes its saved login. */
397
+ logout: (id: string) => Promise<boolean>;
398
+ /** Ids that have a saved login in `authDir` (useful to restore everything on boot). */
399
+ saved: () => Promise<string[]>;
400
+ /** Starts every saved session. */
401
+ startAll: () => Promise<string[]>;
402
+ /** Stops every running session (call it on shutdown). */
403
+ stopAll: () => Promise<void>;
404
+ on: <K extends keyof SessionManagerEvents>(event: K, listener: (data: SessionManagerEvents[K]) => void) => /*elided*/ any;
405
+ off: <K extends keyof SessionManagerEvents>(event: K, listener: (data: SessionManagerEvents[K]) => void) => /*elided*/ any;
406
+ };
407
+ export type SessionManager = ReturnType<typeof makeSessionManager>;
408
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/Socket/session-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ import { Boom } from '@hapi/boom';
2
+ import { EventEmitter } from 'events';
3
+ import { promises as fs } from 'fs';
4
+ import path from 'path';
5
+ import { DisconnectReason } from '../Types/index.js';
6
+ import { useMultiFileAuthState } from '../Utils/use-multi-file-auth-state.js';
7
+ import makeWASocket from './index.js';
8
+ /** Session ids become folder names, so only safe characters are accepted. */
9
+ const VALID_ID = /^[A-Za-z0-9][\w.-]{0,63}$/;
10
+ /**
11
+ * Runs several WhatsApp numbers in one process. Each session has its own login folder, its own
12
+ * socket and its own automatic reconnection.
13
+ */
14
+ export const makeSessionManager = (options) => {
15
+ const emitter = new EventEmitter();
16
+ const sessions = new Map();
17
+ const makeSocket = options.makeSocket || makeWASocket;
18
+ const sleepFn = options.sleep;
19
+ const autoReconnect = options.autoReconnect ?? true;
20
+ const baseDelay = options.reconnectDelayMs ?? 2000;
21
+ const maxDelay = options.maxReconnectDelayMs ?? 30000;
22
+ const emit = (event, data) => emitter.emit(event, data);
23
+ const authPath = (id) => path.join(options.authDir, id);
24
+ const assertId = (id) => {
25
+ if (typeof id !== 'string' || !VALID_ID.test(id) || id.includes('..')) {
26
+ throw new Boom(`Invalid session id "${id}": use letters, numbers, "_", "-" or "."`, { statusCode: 400 });
27
+ }
28
+ };
29
+ const delay = (ms) => (sleepFn ? sleepFn(ms) : new Promise(resolve => setTimeout(resolve, ms)));
30
+ const connect = async (session) => {
31
+ session.status = 'connecting';
32
+ try {
33
+ const { state, saveCreds } = await useMultiFileAuthState(authPath(session.id));
34
+ const base = typeof options.config === 'function' ? options.config(session.id) : options.config || {};
35
+ const sock = makeSocket({ ...base, ...session.options.config, auth: state });
36
+ session.sock = sock;
37
+ let pairingAsked = false;
38
+ sock.ev.on('creds.update', saveCreds);
39
+ sock.ev.on('connection.update', async (update) => {
40
+ if (session.sock !== sock)
41
+ return; // an old socket that is still talking
42
+ const { connection, lastDisconnect, qr } = update;
43
+ if (qr) {
44
+ const number = session.options.pairingNumber;
45
+ if (number && !state.creds.registered) {
46
+ // the pairing code replaces the QR, and it can only be asked once per socket
47
+ if (!pairingAsked) {
48
+ pairingAsked = true;
49
+ try {
50
+ const code = await sock.requestPairingCode(number.replace(/\D/g, ''));
51
+ emit('session.pairing-code', { id: session.id, code });
52
+ }
53
+ catch (error) {
54
+ emit('session.error', { id: session.id, error });
55
+ }
56
+ }
57
+ }
58
+ else {
59
+ emit('session.qr', { id: session.id, qr });
60
+ }
61
+ }
62
+ if (connection === 'open') {
63
+ session.status = 'open';
64
+ session.reconnects = 0;
65
+ emit('session.open', { id: session.id, user: sock.user });
66
+ }
67
+ if (connection === 'close') {
68
+ const reason = lastDisconnect?.error?.output?.statusCode;
69
+ if (reason === DisconnectReason.loggedOut) {
70
+ session.status = 'logged-out';
71
+ session.stopped = true;
72
+ await fs.rm(authPath(session.id), { recursive: true, force: true }).catch(() => undefined);
73
+ emit('session.close', { id: session.id, reason, willReconnect: false });
74
+ emit('session.logged-out', { id: session.id });
75
+ return;
76
+ }
77
+ session.status = 'closed';
78
+ const willReconnect = autoReconnect && !session.stopped;
79
+ emit('session.close', { id: session.id, reason, willReconnect });
80
+ if (willReconnect) {
81
+ // "restart required" is a normal step of the first login: retry right away
82
+ const wait = reason === DisconnectReason.restartRequired ? 0 : Math.min(maxDelay, baseDelay * 2 ** session.reconnects);
83
+ session.reconnects += 1;
84
+ await delay(wait);
85
+ if (!session.stopped && session.sock === sock)
86
+ await connect(session);
87
+ }
88
+ }
89
+ });
90
+ await options.setup?.(sock, session.id);
91
+ }
92
+ catch (error) {
93
+ session.status = 'closed';
94
+ emit('session.error', { id: session.id, error });
95
+ }
96
+ };
97
+ const manager = {
98
+ /** Starts (or returns the already running) session. */
99
+ start: async (id, startOptions = {}) => {
100
+ assertId(id);
101
+ const existing = sessions.get(id);
102
+ if (existing && !existing.stopped)
103
+ return existing.sock;
104
+ const session = { id, status: 'connecting', reconnects: 0, stopped: false, options: startOptions };
105
+ sessions.set(id, session);
106
+ await connect(session);
107
+ return session.sock;
108
+ },
109
+ /** The live socket of a session. */
110
+ get: (id) => sessions.get(id)?.sock,
111
+ /** Every session with its status. */
112
+ list: () => [...sessions.values()].map(session => ({
113
+ id: session.id,
114
+ status: session.status,
115
+ user: session.sock?.user,
116
+ reconnects: session.reconnects
117
+ })),
118
+ /** Closes the connection but keeps the saved login, so `start(id)` brings it back. */
119
+ stop: async (id) => {
120
+ const session = sessions.get(id);
121
+ if (!session)
122
+ return false;
123
+ session.stopped = true;
124
+ session.status = 'closed';
125
+ try {
126
+ void session.sock?.end(undefined);
127
+ }
128
+ catch {
129
+ // already closed
130
+ }
131
+ sessions.delete(id);
132
+ return true;
133
+ },
134
+ /** Logs the number out of WhatsApp and deletes its saved login. */
135
+ logout: async (id) => {
136
+ assertId(id);
137
+ const session = sessions.get(id);
138
+ if (session) {
139
+ session.stopped = true;
140
+ try {
141
+ await session.sock?.logout();
142
+ }
143
+ catch {
144
+ // the socket may already be closed: the saved login is deleted below anyway
145
+ }
146
+ sessions.delete(id);
147
+ }
148
+ await fs.rm(authPath(id), { recursive: true, force: true });
149
+ return true;
150
+ },
151
+ /** Ids that have a saved login in `authDir` (useful to restore everything on boot). */
152
+ saved: async () => {
153
+ const entries = await fs.readdir(options.authDir, { withFileTypes: true }).catch(() => []);
154
+ return entries.filter(entry => entry.isDirectory() && VALID_ID.test(entry.name)).map(entry => entry.name);
155
+ },
156
+ /** Starts every saved session. */
157
+ startAll: async () => {
158
+ const ids = await manager.saved();
159
+ await Promise.all(ids.map(id => manager.start(id)));
160
+ return ids;
161
+ },
162
+ /** Stops every running session (call it on shutdown). */
163
+ stopAll: async () => {
164
+ await Promise.all([...sessions.keys()].map(id => manager.stop(id)));
165
+ },
166
+ on: (event, listener) => {
167
+ emitter.on(event, listener);
168
+ return manager;
169
+ },
170
+ off: (event, listener) => {
171
+ emitter.off(event, listener);
172
+ return manager;
173
+ }
174
+ };
175
+ return manager;
176
+ };
177
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/Socket/session-manager.ts"],"names":[],"mappings":"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"}