@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,164 @@
1
+ import { getBinaryNodeChild, getBinaryNodeChildren, isHostedLidUser, isHostedPnUser, isJidMetaAI, isLidUser, isPnUser, jidNormalizedUser } from '../WABinary/index.js';
2
+ // Same phone-number pattern as WABinary's isJidBot, applied against the user
3
+ // part so the check is invariant to @c.us ↔ @s.whatsapp.net normalization.
4
+ const BOT_PHONE_REGEX = /^1313555\d{4}$|^131655500\d{2}$/;
5
+ /**
6
+ * Mirrors WA Web's `Wid.isRegularUser()` (user ∧ ¬PSA ∧ ¬Bot). Used to gate tctoken
7
+ * storage against malformed notifications — WA Web filters server-side but we
8
+ * defend here for parity with `WAWebSetTcTokenChatAction.handleIncomingTcToken`.
9
+ * Works for both pre- and post-normalized JIDs (`@c.us` vs `@s.whatsapp.net`).
10
+ */
11
+ function isRegularUser(jid) {
12
+ if (!jid)
13
+ return false;
14
+ const user = jid.split('@')[0] ?? '';
15
+ if (user === '0')
16
+ return false; // PSA
17
+ if (BOT_PHONE_REGEX.test(user))
18
+ return false; // Bot by phone pattern
19
+ if (isJidMetaAI(jid))
20
+ return false; // MetaAI (@bot server)
21
+ return !!(isPnUser(jid) || isLidUser(jid) || isHostedPnUser(jid) || isHostedLidUser(jid) || jid.endsWith('@c.us'));
22
+ }
23
+ const TC_TOKEN_BUCKET_DURATION = 604800; // 7 days
24
+ const TC_TOKEN_NUM_BUCKETS = 4; // ~28-day rolling window
25
+ /** Sentinel key under `tctoken` store holding a JSON array of tracked storage JIDs for cross-session pruning. */
26
+ export const TC_TOKEN_INDEX_KEY = '__index';
27
+ /** Read the persisted tctoken JID index and return its entries (never contains the sentinel key itself). */
28
+ export async function readTcTokenIndex(keys) {
29
+ const data = await keys.get('tctoken', [TC_TOKEN_INDEX_KEY]);
30
+ const entry = data[TC_TOKEN_INDEX_KEY];
31
+ if (!entry?.token?.length)
32
+ return [];
33
+ try {
34
+ const parsed = JSON.parse(Buffer.from(entry.token).toString());
35
+ if (!Array.isArray(parsed))
36
+ return [];
37
+ return parsed.filter((j) => typeof j === 'string' && j.length > 0 && j !== TC_TOKEN_INDEX_KEY);
38
+ }
39
+ catch {
40
+ return [];
41
+ }
42
+ }
43
+ /** Build a SignalDataSet fragment that writes the merged index (persisted ∪ added) under the sentinel key. */
44
+ export async function buildMergedTcTokenIndexWrite(keys, addedJids) {
45
+ const persisted = await readTcTokenIndex(keys);
46
+ const merged = new Set(persisted);
47
+ for (const jid of addedJids) {
48
+ if (jid && jid !== TC_TOKEN_INDEX_KEY)
49
+ merged.add(jid);
50
+ }
51
+ return {
52
+ [TC_TOKEN_INDEX_KEY]: { token: Buffer.from(JSON.stringify([...merged])) }
53
+ };
54
+ }
55
+ // WA Web has separate sender/receiver AB props for these but they're identical today
56
+ export function isTcTokenExpired(timestamp) {
57
+ if (timestamp === null || timestamp === undefined)
58
+ return true;
59
+ const ts = typeof timestamp === 'string' ? parseInt(timestamp) : timestamp;
60
+ if (isNaN(ts))
61
+ return true;
62
+ const now = Math.floor(Date.now() / 1000);
63
+ const currentBucket = Math.floor(now / TC_TOKEN_BUCKET_DURATION);
64
+ const cutoffBucket = currentBucket - (TC_TOKEN_NUM_BUCKETS - 1);
65
+ const cutoffTimestamp = cutoffBucket * TC_TOKEN_BUCKET_DURATION;
66
+ return ts < cutoffTimestamp;
67
+ }
68
+ export function shouldSendNewTcToken(senderTimestamp) {
69
+ if (senderTimestamp === undefined)
70
+ return true;
71
+ const now = Math.floor(Date.now() / 1000);
72
+ const currentBucket = Math.floor(now / TC_TOKEN_BUCKET_DURATION);
73
+ const senderBucket = Math.floor(senderTimestamp / TC_TOKEN_BUCKET_DURATION);
74
+ return currentBucket > senderBucket;
75
+ }
76
+ /** Resolve JID to LID for tctoken storage (WA Web stores under LID) */
77
+ export async function resolveTcTokenJid(jid, getLIDForPN) {
78
+ if (isLidUser(jid))
79
+ return jid;
80
+ const lid = await getLIDForPN(jid);
81
+ return lid ?? jid;
82
+ }
83
+ /** Resolve target JID for issuing privacy token based on AB prop 14303 */
84
+ export async function resolveIssuanceJid(jid, issueToLid, getLIDForPN, getPNForLID) {
85
+ if (issueToLid) {
86
+ if (isLidUser(jid))
87
+ return jid;
88
+ const lid = await getLIDForPN(jid);
89
+ return lid ?? jid;
90
+ }
91
+ if (!isLidUser(jid))
92
+ return jid;
93
+ if (getPNForLID) {
94
+ const pn = await getPNForLID(jid);
95
+ return pn ?? jid;
96
+ }
97
+ return jid;
98
+ }
99
+ export async function buildTcTokenFromJid({ authState, jid, baseContent = [], getLIDForPN }) {
100
+ try {
101
+ const storageJid = await resolveTcTokenJid(jid, getLIDForPN);
102
+ const tcTokenData = await authState.keys.get('tctoken', [storageJid]);
103
+ const entry = tcTokenData?.[storageJid];
104
+ const tcTokenBuffer = entry?.token;
105
+ const timestamp = entry?.timestamp;
106
+ if (!tcTokenBuffer?.length || timestamp === undefined || isTcTokenExpired(timestamp)) {
107
+ if (tcTokenBuffer) {
108
+ // Preserve senderTimestamp so shouldSendNewTcToken() keeps its dedupe state
109
+ // after we drop the unusable peer token. Only wipe the record entirely when
110
+ // there's nothing worth keeping.
111
+ const cleared = entry?.senderTimestamp !== undefined
112
+ ? { token: Buffer.alloc(0), senderTimestamp: entry.senderTimestamp }
113
+ : null;
114
+ await authState.keys.set({ tctoken: { [storageJid]: cleared } });
115
+ }
116
+ return baseContent.length > 0 ? baseContent : undefined;
117
+ }
118
+ baseContent.push({
119
+ tag: 'tctoken',
120
+ attrs: { t: String(timestamp) },
121
+ content: tcTokenBuffer
122
+ });
123
+ return baseContent;
124
+ }
125
+ catch (error) {
126
+ return baseContent.length > 0 ? baseContent : undefined;
127
+ }
128
+ }
129
+ export async function storeTcTokensFromIqResult({ result, fallbackJid, keys, getLIDForPN, onNewJidStored }) {
130
+ const tokensNode = getBinaryNodeChild(result, 'tokens');
131
+ if (!tokensNode)
132
+ return;
133
+ const tokenNodes = getBinaryNodeChildren(tokensNode, 'token');
134
+ for (const tokenNode of tokenNodes) {
135
+ if (tokenNode.attrs.type !== 'trusted_contact' || !(tokenNode.content instanceof Uint8Array)) {
136
+ continue;
137
+ }
138
+ // In notifications tokenNode.attrs.jid is your own device JID, not the sender's
139
+ const rawJid = jidNormalizedUser(fallbackJid || tokenNode.attrs.jid);
140
+ if (!isRegularUser(rawJid))
141
+ continue;
142
+ const storageJid = await resolveTcTokenJid(rawJid, getLIDForPN);
143
+ const existingTcData = await keys.get('tctoken', [storageJid]);
144
+ const existingEntry = existingTcData[storageJid];
145
+ const existingTs = existingEntry?.timestamp ? Number(existingEntry.timestamp) : 0;
146
+ const incomingTs = tokenNode.attrs.t ? Number(tokenNode.attrs.t) : 0;
147
+ // timestamp-less tokens would be immediately expired
148
+ if (!incomingTs)
149
+ continue;
150
+ if (existingTs > 0 && existingTs > incomingTs)
151
+ continue;
152
+ await keys.set({
153
+ tctoken: {
154
+ [storageJid]: {
155
+ ...existingEntry,
156
+ token: Buffer.from(tokenNode.content),
157
+ timestamp: tokenNode.attrs.t
158
+ }
159
+ }
160
+ });
161
+ onNewJidStored?.(storageJid);
162
+ }
163
+ }
164
+ //# sourceMappingURL=tc-token-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tc-token-utils.js","sourceRoot":"","sources":["../../src/Utils/tc-token-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AuthenticationState } from '../Types/index.js';
2
+ /**
3
+ * stores the full authentication state in a single folder.
4
+ * Far more efficient than singlefileauthstate
5
+ *
6
+ * Again, I wouldn't endorse this for any production level use other than perhaps a bot.
7
+ * Would recommend writing an auth state for use with a proper SQL or No-SQL DB
8
+ * */
9
+ export declare const useMultiFileAuthState: (folder: string) => Promise<{
10
+ state: AuthenticationState;
11
+ saveCreds: () => Promise<void>;
12
+ }>;
13
+ //# sourceMappingURL=use-multi-file-auth-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-multi-file-auth-state.d.ts","sourceRoot":"","sources":["../../src/Utils/use-multi-file-auth-state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuB,mBAAmB,EAAqB,MAAM,UAAU,CAAA;AA6B3F;;;;;;KAMK;AACL,eAAO,MAAM,qBAAqB,GACjC,QAAQ,MAAM,KACZ,OAAO,CAAC;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CA4HxE,CAAA"}
@@ -0,0 +1,154 @@
1
+ import { Mutex } from 'async-mutex';
2
+ import { copyFile, mkdir, readFile, rename, stat, unlink, writeFile } from 'fs/promises';
3
+ import { join } from 'path';
4
+ import { proto } from '../../WAProto/index.js';
5
+ import { initAuthCreds } from './auth-utils.js';
6
+ import { BufferJSON } from './generics.js';
7
+ // We need to lock files due to the fact that we are using async functions to read and write files
8
+ // https://github.com/nodejs/node/issues/26338
9
+ // Use a Map to store mutexes for each file path
10
+ const fileLocks = new Map();
11
+ const isValidJson = (text) => {
12
+ try {
13
+ JSON.parse(text);
14
+ return true;
15
+ }
16
+ catch {
17
+ return false;
18
+ }
19
+ };
20
+ // Get or create a mutex for a specific file path
21
+ const getFileLock = (path) => {
22
+ let mutex = fileLocks.get(path);
23
+ if (!mutex) {
24
+ mutex = new Mutex();
25
+ fileLocks.set(path, mutex);
26
+ }
27
+ return mutex;
28
+ };
29
+ /**
30
+ * stores the full authentication state in a single folder.
31
+ * Far more efficient than singlefileauthstate
32
+ *
33
+ * Again, I wouldn't endorse this for any production level use other than perhaps a bot.
34
+ * Would recommend writing an auth state for use with a proper SQL or No-SQL DB
35
+ * */
36
+ export const useMultiFileAuthState = async (folder) => {
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ const writeData = async (data, file) => {
39
+ const filePath = join(folder, fixFileName(file));
40
+ const mutex = getFileLock(filePath);
41
+ return mutex.acquire().then(async (release) => {
42
+ // write to a temporary file and rename it: `rename` is atomic, so a crash or a power
43
+ // cut in the middle of a write can never leave a half-written file behind
44
+ const tempPath = `${filePath}.tmp`;
45
+ try {
46
+ await writeFile(tempPath, JSON.stringify(data, BufferJSON.replacer));
47
+ if (file === 'creds.json') {
48
+ // keep the last readable login as a backup (only if it is intact)
49
+ const current = await readFile(filePath, { encoding: 'utf-8' }).catch(() => undefined);
50
+ if (current && isValidJson(current))
51
+ await copyFile(filePath, `${filePath}.bak`).catch(() => { });
52
+ }
53
+ await rename(tempPath, filePath);
54
+ }
55
+ catch (error) {
56
+ await unlink(tempPath).catch(() => { });
57
+ throw error;
58
+ }
59
+ finally {
60
+ release();
61
+ }
62
+ });
63
+ };
64
+ const readData = async (file) => {
65
+ try {
66
+ const filePath = join(folder, fixFileName(file));
67
+ const mutex = getFileLock(filePath);
68
+ return await mutex.acquire().then(async (release) => {
69
+ try {
70
+ try {
71
+ const data = await readFile(filePath, { encoding: 'utf-8' });
72
+ return JSON.parse(data, BufferJSON.reviver);
73
+ }
74
+ catch (error) {
75
+ // a damaged creds.json is replaced by its last good backup
76
+ if (file !== 'creds.json')
77
+ throw error;
78
+ const backup = await readFile(`${filePath}.bak`, { encoding: 'utf-8' });
79
+ const restored = JSON.parse(backup, BufferJSON.reviver);
80
+ await copyFile(`${filePath}.bak`, filePath).catch(() => { });
81
+ return restored;
82
+ }
83
+ }
84
+ finally {
85
+ release();
86
+ }
87
+ });
88
+ }
89
+ catch (error) {
90
+ return null;
91
+ }
92
+ };
93
+ const removeData = async (file) => {
94
+ try {
95
+ const filePath = join(folder, fixFileName(file));
96
+ const mutex = getFileLock(filePath);
97
+ return mutex.acquire().then(async (release) => {
98
+ try {
99
+ await unlink(filePath);
100
+ }
101
+ catch {
102
+ }
103
+ finally {
104
+ release();
105
+ }
106
+ });
107
+ }
108
+ catch { }
109
+ };
110
+ const folderInfo = await stat(folder).catch(() => { });
111
+ if (folderInfo) {
112
+ if (!folderInfo.isDirectory()) {
113
+ throw new Error(`found something that is not a directory at ${folder}, either delete it or specify a different location`);
114
+ }
115
+ }
116
+ else {
117
+ await mkdir(folder, { recursive: true });
118
+ }
119
+ const fixFileName = (file) => file?.replace(/\//g, '__')?.replace(/:/g, '-');
120
+ const creds = (await readData('creds.json')) || initAuthCreds();
121
+ return {
122
+ state: {
123
+ creds,
124
+ keys: {
125
+ get: async (type, ids) => {
126
+ const data = {};
127
+ await Promise.all(ids.map(async (id) => {
128
+ let value = await readData(`${type}-${id}.json`);
129
+ if (type === 'app-state-sync-key' && value) {
130
+ value = proto.Message.AppStateSyncKeyData.fromObject(value);
131
+ }
132
+ data[id] = value;
133
+ }));
134
+ return data;
135
+ },
136
+ set: async (data) => {
137
+ const tasks = [];
138
+ for (const category in data) {
139
+ for (const id in data[category]) {
140
+ const value = data[category][id];
141
+ const file = `${category}-${id}.json`;
142
+ tasks.push(value ? writeData(value, file) : removeData(file));
143
+ }
144
+ }
145
+ await Promise.all(tasks);
146
+ }
147
+ }
148
+ },
149
+ saveCreds: async () => {
150
+ return writeData(creds, 'creds.json');
151
+ }
152
+ };
153
+ };
154
+ //# sourceMappingURL=use-multi-file-auth-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-multi-file-auth-state.js","sourceRoot":"","sources":["../../src/Utils/use-multi-file-auth-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { proto } from '../../WAProto/index.js';
2
+ import type { AuthenticationCreds, SignalCreds, SocketConfig } from '../Types/index.js';
3
+ import { type BinaryNode } from '../WABinary/index.js';
4
+ export declare const generateLoginNode: (userJid: string, config: SocketConfig) => proto.IClientPayload;
5
+ export declare const generateRegistrationNode: ({ registrationId, signedPreKey, signedIdentityKey }: SignalCreds, config: SocketConfig) => proto.ClientPayload;
6
+ export declare const configureSuccessfulPairing: (stanza: BinaryNode, { advSecretKey, signedIdentityKey, signalIdentities }: Pick<AuthenticationCreds, "advSecretKey" | "signedIdentityKey" | "signalIdentities">) => {
7
+ creds: Partial<AuthenticationCreds>;
8
+ reply: BinaryNode;
9
+ };
10
+ export declare const encodeSignedDeviceIdentity: (account: proto.IADVSignedDeviceIdentity, includeSignatureKey: boolean) => Uint8Array<ArrayBufferLike>;
11
+ //# sourceMappingURL=validate-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-connection.d.ts","sourceRoot":"","sources":["../../src/Utils/validate-connection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAO9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC9E,OAAO,EAAE,KAAK,UAAU,EAAiD,MAAM,aAAa,CAAA;AA+D5F,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,EAAE,QAAQ,YAAY,KAAG,KAAK,CAAC,cAY/E,CAAA;AAcD,eAAO,MAAM,wBAAwB,GACpC,qDAAqD,WAAW,EAChE,QAAQ,YAAY,wBAuDpB,CAAA;AAED,eAAO,MAAM,0BAA0B,GACtC,QAAQ,UAAU,EAClB,uDAIG,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;;;CAyFvF,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,SAAS,KAAK,CAAC,wBAAwB,EAAE,qBAAqB,OAAO,gCAS/G,CAAA"}
@@ -0,0 +1,210 @@
1
+ import { Boom } from '@hapi/boom';
2
+ import { createHash } from 'crypto';
3
+ import { proto } from '../../WAProto/index.js';
4
+ import { KEY_BUNDLE_TYPE, WA_ADV_ACCOUNT_SIG_PREFIX, WA_ADV_DEVICE_SIG_PREFIX, WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX } from '../Defaults/index.js';
5
+ import { getBinaryNodeChild, jidDecode, S_WHATSAPP_NET } from '../WABinary/index.js';
6
+ import { Curve, hmacSign } from './crypto.js';
7
+ import { encodeBigEndian } from './generics.js';
8
+ import { createSignalIdentity } from './signal.js';
9
+ const getUserAgent = (config) => {
10
+ return {
11
+ appVersion: {
12
+ primary: config.version[0],
13
+ secondary: config.version[1],
14
+ tertiary: config.version[2]
15
+ },
16
+ platform: config.browser[1].toLocaleLowerCase().includes('android')
17
+ ? proto.ClientPayload.UserAgent.Platform.ANDROID
18
+ : proto.ClientPayload.UserAgent.Platform.WEB,
19
+ releaseChannel: proto.ClientPayload.UserAgent.ReleaseChannel.RELEASE,
20
+ osVersion: '0.1',
21
+ device: 'Desktop',
22
+ osBuildNumber: '0.1',
23
+ localeLanguageIso6391: 'en',
24
+ mnc: '000',
25
+ mcc: '000',
26
+ localeCountryIso31661Alpha2: config.countryCode
27
+ };
28
+ };
29
+ const PLATFORM_MAP = {
30
+ 'Mac OS': proto.ClientPayload.WebInfo.WebSubPlatform.DARWIN,
31
+ Windows: proto.ClientPayload.WebInfo.WebSubPlatform.WIN32
32
+ };
33
+ const getWebInfo = (config) => {
34
+ let webSubPlatform = proto.ClientPayload.WebInfo.WebSubPlatform.WEB_BROWSER;
35
+ if (config.syncFullHistory &&
36
+ PLATFORM_MAP[config.browser[0]] &&
37
+ config.browser[1] === 'Desktop') {
38
+ webSubPlatform = PLATFORM_MAP[config.browser[0]];
39
+ }
40
+ return { webSubPlatform };
41
+ };
42
+ const getClientPayload = (config) => {
43
+ const payload = {
44
+ connectType: proto.ClientPayload.ConnectType.WIFI_UNKNOWN,
45
+ connectReason: proto.ClientPayload.ConnectReason.USER_ACTIVATED,
46
+ userAgent: getUserAgent(config)
47
+ };
48
+ if (!config.browser[1].toLocaleLowerCase().includes('android')) {
49
+ payload.webInfo = getWebInfo(config);
50
+ }
51
+ if (config.pushName) {
52
+ payload.pushName = config.pushName;
53
+ }
54
+ return payload;
55
+ };
56
+ export const generateLoginNode = (userJid, config) => {
57
+ const { user, device } = jidDecode(userJid);
58
+ const payload = {
59
+ ...getClientPayload(config),
60
+ passive: true,
61
+ pull: true,
62
+ username: +user,
63
+ device: device,
64
+ // TODO: investigate (hard set as false atm)
65
+ lidDbMigrated: false
66
+ };
67
+ return proto.ClientPayload.fromObject(payload);
68
+ };
69
+ const getPlatformType = (platform) => {
70
+ const platformType = platform.toUpperCase();
71
+ if (platformType === 'ANDROID') {
72
+ return proto.DeviceProps.PlatformType.ANDROID_PHONE;
73
+ }
74
+ return (proto.DeviceProps.PlatformType[platformType] ||
75
+ proto.DeviceProps.PlatformType.CHROME);
76
+ };
77
+ export const generateRegistrationNode = ({ registrationId, signedPreKey, signedIdentityKey }, config) => {
78
+ // the app version needs to be md5 hashed
79
+ // and passed in
80
+ const appVersionBuf = createHash('md5')
81
+ .update(config.version.join('.')) // join as string
82
+ .digest();
83
+ const companion = {
84
+ os: config.browser[0],
85
+ platformType: getPlatformType(config.browser[1]),
86
+ requireFullSync: config.syncFullHistory,
87
+ historySyncConfig: {
88
+ storageQuotaMb: 10240,
89
+ inlineInitialPayloadInE2EeMsg: true,
90
+ recentSyncDaysLimit: undefined,
91
+ supportCallLogHistory: false,
92
+ supportBotUserAgentChatHistory: true,
93
+ supportCagReactionsAndPolls: true,
94
+ supportBizHostedMsg: true,
95
+ supportRecentSyncChunkMessageCountTuning: true,
96
+ supportHostedGroupMsg: true,
97
+ supportFbidBotChatHistory: true,
98
+ supportAddOnHistorySyncMigration: undefined,
99
+ supportMessageAssociation: true,
100
+ supportGroupHistory: false,
101
+ onDemandReady: undefined,
102
+ supportGuestChat: undefined
103
+ },
104
+ version: {
105
+ primary: 10,
106
+ secondary: 15,
107
+ tertiary: 7
108
+ }
109
+ };
110
+ const companionProto = proto.DeviceProps.encode(companion).finish();
111
+ const registerPayload = {
112
+ ...getClientPayload(config),
113
+ passive: false,
114
+ pull: false,
115
+ devicePairingData: {
116
+ buildHash: appVersionBuf,
117
+ deviceProps: companionProto,
118
+ eRegid: encodeBigEndian(registrationId),
119
+ eKeytype: KEY_BUNDLE_TYPE,
120
+ eIdent: signedIdentityKey.public,
121
+ eSkeyId: encodeBigEndian(signedPreKey.keyId, 3),
122
+ eSkeyVal: signedPreKey.keyPair.public,
123
+ eSkeySig: signedPreKey.signature
124
+ }
125
+ };
126
+ return proto.ClientPayload.fromObject(registerPayload);
127
+ };
128
+ export const configureSuccessfulPairing = (stanza, { advSecretKey, signedIdentityKey, signalIdentities }) => {
129
+ const msgId = stanza.attrs.id;
130
+ const pairSuccessNode = getBinaryNodeChild(stanza, 'pair-success');
131
+ const deviceIdentityNode = getBinaryNodeChild(pairSuccessNode, 'device-identity');
132
+ const platformNode = getBinaryNodeChild(pairSuccessNode, 'platform');
133
+ const deviceNode = getBinaryNodeChild(pairSuccessNode, 'device');
134
+ const businessNode = getBinaryNodeChild(pairSuccessNode, 'biz');
135
+ if (!deviceIdentityNode || !deviceNode) {
136
+ throw new Boom('Missing device-identity or device in pair success node', { data: stanza });
137
+ }
138
+ const bizName = businessNode?.attrs.name;
139
+ const jid = deviceNode.attrs.jid;
140
+ const lid = deviceNode.attrs.lid;
141
+ const { details, hmac, accountType } = proto.ADVSignedDeviceIdentityHMAC.decode(deviceIdentityNode.content);
142
+ let hmacPrefix = Buffer.from([]);
143
+ if (accountType !== undefined && accountType === proto.ADVEncryptionType.HOSTED) {
144
+ hmacPrefix = WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX;
145
+ }
146
+ const advSign = hmacSign(Buffer.concat([hmacPrefix, details]), Buffer.from(advSecretKey, 'base64'));
147
+ if (Buffer.compare(hmac, advSign) !== 0) {
148
+ throw new Boom('Invalid account signature');
149
+ }
150
+ const account = proto.ADVSignedDeviceIdentity.decode(details);
151
+ const { accountSignatureKey, accountSignature, details: deviceDetails } = account;
152
+ const deviceIdentity = proto.ADVDeviceIdentity.decode(deviceDetails);
153
+ const accountSignaturePrefix = deviceIdentity.deviceType === proto.ADVEncryptionType.HOSTED
154
+ ? WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX
155
+ : WA_ADV_ACCOUNT_SIG_PREFIX;
156
+ const accountMsg = Buffer.concat([accountSignaturePrefix, deviceDetails, signedIdentityKey.public]);
157
+ if (!Curve.verify(accountSignatureKey, accountMsg, accountSignature)) {
158
+ throw new Boom('Failed to verify account signature');
159
+ }
160
+ const deviceMsg = Buffer.concat([
161
+ WA_ADV_DEVICE_SIG_PREFIX,
162
+ deviceDetails,
163
+ signedIdentityKey.public,
164
+ accountSignatureKey
165
+ ]);
166
+ account.deviceSignature = Curve.sign(signedIdentityKey.private, deviceMsg);
167
+ const identity = createSignalIdentity(lid, accountSignatureKey);
168
+ const accountEnc = encodeSignedDeviceIdentity(account, false);
169
+ const reply = {
170
+ tag: 'iq',
171
+ attrs: {
172
+ to: S_WHATSAPP_NET,
173
+ type: 'result',
174
+ id: msgId
175
+ },
176
+ content: [
177
+ {
178
+ tag: 'pair-device-sign',
179
+ attrs: {},
180
+ content: [
181
+ {
182
+ tag: 'device-identity',
183
+ attrs: { 'key-index': deviceIdentity.keyIndex.toString() },
184
+ content: accountEnc
185
+ }
186
+ ]
187
+ }
188
+ ]
189
+ };
190
+ const authUpdate = {
191
+ account,
192
+ me: { id: jid, name: bizName, lid },
193
+ signalIdentities: [...(signalIdentities || []), identity],
194
+ platform: platformNode?.attrs.name
195
+ };
196
+ return {
197
+ creds: authUpdate,
198
+ reply
199
+ };
200
+ };
201
+ export const encodeSignedDeviceIdentity = (account, includeSignatureKey) => {
202
+ account = { ...account };
203
+ // set to null if we are not to include the signature key
204
+ // or if we are including the signature key but it is empty
205
+ if (!includeSignatureKey || !account.accountSignatureKey?.length) {
206
+ account.accountSignatureKey = null;
207
+ }
208
+ return proto.ADVSignedDeviceIdentity.encode(account).finish();
209
+ };
210
+ //# sourceMappingURL=validate-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-connection.js","sourceRoot":"","sources":["../../src/Utils/validate-connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { WAVersion } from '../Types/index.js';
2
+ import type { ILogger } from './logger.js';
3
+ /** how long a version fetched from WA's servers is reused before asking again */
4
+ export declare const WA_WEB_VERSION_CACHE_MS: number;
5
+ export type ResolveWaWebVersionOptions = {
6
+ logger?: ILogger;
7
+ /** fetch options (proxy dispatcher, headers, ...) forwarded to WA's servers */
8
+ options?: RequestInit;
9
+ /** give up on WA's servers after this long & keep the configured version */
10
+ timeoutMs?: number;
11
+ /** how long a fetched version is reused, defaults to an hour */
12
+ cacheMs?: number;
13
+ /** ignore the in-memory cache & hit WA's servers again */
14
+ force?: boolean;
15
+ };
16
+ /**
17
+ * fetches the live web version off WA's check-update endpoint.
18
+ * used as a backup for {@link fetchLatestWaWebVersion}, which scrapes sw.js
19
+ */
20
+ export declare const fetchWaWebVersionFromCheckUpdate: (options?: RequestInit) => Promise<WAVersion>;
21
+ /**
22
+ * resolves the version WA Web is currently serving, so the handshake is never
23
+ * rejected (405/428) for announcing an outdated client.
24
+ *
25
+ * results are cached in memory & concurrent calls share one request;
26
+ * returns undefined when WA cannot be reached, so the caller keeps its own version
27
+ */
28
+ export declare const resolveWaWebVersion: ({ logger, options, timeoutMs, cacheMs, force }?: ResolveWaWebVersionOptions) => Promise<WAVersion | undefined>;
29
+ /** the version last fetched from WA, if any */
30
+ export declare const getCachedWaWebVersion: () => WAVersion | undefined;
31
+ /** drops the cached version so the next connection fetches a fresh one */
32
+ export declare const clearWaWebVersionCache: () => void;
33
+ //# sourceMappingURL=wa-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wa-version.d.ts","sourceRoot":"","sources":["../../src/Utils/wa-version.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAEvC,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,QAAiB,CAAA;AAmBrD,MAAM,MAAM,0BAA0B,GAAG;IACxC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAWD;;;GAGG;AACH,eAAO,MAAM,gCAAgC,GAAU,UAAS,WAAgB,uBAmB/E,CAAA;AA4BD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAU,iDAMvC,0BAA+B,KAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAoBjE,CAAA;AAED,+CAA+C;AAC/C,eAAO,MAAM,qBAAqB,6BAAwB,CAAA;AAE1D,0EAA0E;AAC1E,eAAO,MAAM,sBAAsB,YAElC,CAAA"}