@d0v3riz/baileys 6.7.19 → 6.7.21

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 (374) hide show
  1. package/README.md +1263 -4
  2. package/WAProto/GenerateStatics.sh +3 -0
  3. package/WAProto/WAProto.proto +4633 -0
  4. package/WAProto/fix-imports.js +29 -0
  5. package/WAProto/index.d.ts +3212 -122
  6. package/WAProto/index.js +13516 -4182
  7. package/lib/Defaults/baileys-version.json +1 -1
  8. package/lib/Defaults/index.d.ts +4 -3
  9. package/lib/Defaults/index.d.ts.map +1 -0
  10. package/lib/Defaults/index.js +50 -54
  11. package/lib/Defaults/index.js.map +1 -0
  12. package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
  13. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  14. package/lib/Signal/Group/ciphertext-message.js +12 -0
  15. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  16. package/lib/Signal/Group/group-session-builder.d.ts +15 -0
  17. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  18. package/lib/Signal/Group/group-session-builder.js +30 -0
  19. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  20. package/lib/Signal/Group/group_cipher.d.ts +18 -0
  21. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  22. package/lib/Signal/Group/group_cipher.js +94 -0
  23. package/lib/Signal/Group/group_cipher.js.map +1 -0
  24. package/lib/Signal/Group/index.d.ts +12 -0
  25. package/lib/Signal/Group/index.d.ts.map +1 -0
  26. package/lib/Signal/Group/index.js +12 -0
  27. package/lib/Signal/Group/index.js.map +1 -0
  28. package/lib/Signal/Group/keyhelper.d.ts +11 -0
  29. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  30. package/lib/Signal/Group/keyhelper.js +19 -0
  31. package/lib/Signal/Group/keyhelper.js.map +1 -0
  32. package/lib/Signal/Group/queue-job.d.ts +3 -0
  33. package/lib/Signal/Group/queue-job.d.ts.map +1 -0
  34. package/lib/Signal/Group/queue-job.js +57 -0
  35. package/lib/Signal/Group/queue-job.js.map +1 -0
  36. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  37. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  38. package/lib/Signal/Group/sender-chain-key.js +32 -0
  39. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  40. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  41. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  42. package/lib/Signal/Group/sender-key-distribution-message.js +63 -0
  43. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  44. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  45. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  46. package/lib/Signal/Group/sender-key-message.js +67 -0
  47. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  48. package/lib/Signal/Group/sender-key-name.d.ts +18 -0
  49. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  50. package/lib/Signal/Group/sender-key-name.js +48 -0
  51. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  52. package/lib/Signal/Group/sender-key-record.d.ts +31 -0
  53. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  54. package/lib/Signal/Group/sender-key-record.js +50 -0
  55. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  56. package/lib/Signal/Group/sender-key-state.d.ts +39 -0
  57. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  58. package/lib/Signal/Group/sender-key-state.js +96 -0
  59. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  60. package/lib/Signal/Group/sender-message-key.d.ts +12 -0
  61. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  62. package/{WASignalGroup/sender_message_key.js → lib/Signal/Group/sender-message-key.js} +27 -39
  63. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  64. package/lib/Signal/libsignal.d.ts +3 -2
  65. package/lib/Signal/libsignal.d.ts.map +1 -0
  66. package/lib/Signal/libsignal.js +41 -61
  67. package/lib/Signal/libsignal.js.map +1 -0
  68. package/lib/Socket/Client/index.d.ts +3 -2
  69. package/lib/Socket/Client/index.d.ts.map +1 -0
  70. package/lib/Socket/Client/index.js +3 -18
  71. package/lib/Socket/Client/index.js.map +1 -0
  72. package/lib/Socket/Client/types.d.ts +2 -1
  73. package/lib/Socket/Client/types.d.ts.map +1 -0
  74. package/lib/Socket/Client/types.js +4 -6
  75. package/lib/Socket/Client/types.js.map +1 -0
  76. package/lib/Socket/Client/websocket.d.ts +2 -1
  77. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  78. package/lib/Socket/Client/websocket.js +15 -27
  79. package/lib/Socket/Client/websocket.js.map +1 -0
  80. package/lib/Socket/business.d.ts +92 -62
  81. package/lib/Socket/business.d.ts.map +1 -0
  82. package/lib/Socket/business.js +37 -42
  83. package/lib/Socket/business.js.map +1 -0
  84. package/lib/Socket/chats.d.ts +31 -24
  85. package/lib/Socket/chats.d.ts.map +1 -0
  86. package/lib/Socket/chats.js +251 -198
  87. package/lib/Socket/chats.js.map +1 -0
  88. package/lib/Socket/communities.d.ts +219 -0
  89. package/lib/Socket/communities.d.ts.map +1 -0
  90. package/lib/Socket/communities.js +351 -0
  91. package/lib/Socket/communities.js.map +1 -0
  92. package/lib/Socket/groups.d.ts +47 -39
  93. package/lib/Socket/groups.d.ts.map +1 -0
  94. package/lib/Socket/groups.js +91 -82
  95. package/lib/Socket/groups.js.map +1 -0
  96. package/lib/Socket/index.d.ts +128 -68
  97. package/lib/Socket/index.d.ts.map +1 -0
  98. package/lib/Socket/index.js +16 -9
  99. package/lib/Socket/index.js.map +1 -0
  100. package/lib/Socket/messages-recv.d.ts +79 -49
  101. package/lib/Socket/messages-recv.d.ts.map +1 -0
  102. package/lib/Socket/messages-recv.js +364 -200
  103. package/lib/Socket/messages-recv.js.map +1 -0
  104. package/lib/Socket/messages-send.d.ts +76 -46
  105. package/lib/Socket/messages-send.d.ts.map +1 -0
  106. package/lib/Socket/messages-send.js +144 -120
  107. package/lib/Socket/messages-send.js.map +1 -0
  108. package/lib/Socket/mex.d.ts +3 -0
  109. package/lib/Socket/mex.d.ts.map +1 -0
  110. package/lib/Socket/mex.js +42 -0
  111. package/lib/Socket/mex.js.map +1 -0
  112. package/lib/Socket/newsletter.d.ts +143 -0
  113. package/lib/Socket/newsletter.d.ts.map +1 -0
  114. package/lib/Socket/newsletter.js +179 -0
  115. package/lib/Socket/newsletter.js.map +1 -0
  116. package/lib/Socket/socket.d.ts +15 -14
  117. package/lib/Socket/socket.d.ts.map +1 -0
  118. package/lib/Socket/socket.js +153 -141
  119. package/lib/Socket/socket.js.map +1 -0
  120. package/lib/Socket/usync.d.ts +17 -16
  121. package/lib/Socket/usync.d.ts.map +1 -0
  122. package/lib/Socket/usync.js +19 -26
  123. package/lib/Socket/usync.js.map +1 -0
  124. package/lib/Types/Auth.d.ts +5 -4
  125. package/lib/Types/Auth.d.ts.map +1 -0
  126. package/lib/Types/Auth.js +2 -2
  127. package/lib/Types/Auth.js.map +1 -0
  128. package/lib/Types/Call.d.ts +1 -0
  129. package/lib/Types/Call.d.ts.map +1 -0
  130. package/lib/Types/Call.js +2 -2
  131. package/lib/Types/Call.js.map +1 -0
  132. package/lib/Types/Chat.d.ts +14 -8
  133. package/lib/Types/Chat.d.ts.map +1 -0
  134. package/lib/Types/Chat.js +8 -4
  135. package/lib/Types/Chat.js.map +1 -0
  136. package/lib/Types/Contact.d.ts +5 -0
  137. package/lib/Types/Contact.d.ts.map +1 -0
  138. package/lib/Types/Contact.js +2 -2
  139. package/lib/Types/Contact.js.map +1 -0
  140. package/lib/Types/Events.d.ts +38 -11
  141. package/lib/Types/Events.d.ts.map +1 -0
  142. package/lib/Types/Events.js +2 -2
  143. package/lib/Types/Events.js.map +1 -0
  144. package/lib/Types/GroupMetadata.d.ts +10 -4
  145. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  146. package/lib/Types/GroupMetadata.js +2 -2
  147. package/lib/Types/GroupMetadata.js.map +1 -0
  148. package/lib/Types/Label.d.ts +1 -0
  149. package/lib/Types/Label.d.ts.map +1 -0
  150. package/lib/Types/Label.js +3 -5
  151. package/lib/Types/Label.js.map +1 -0
  152. package/lib/Types/LabelAssociation.d.ts +1 -0
  153. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  154. package/lib/Types/LabelAssociation.js +3 -5
  155. package/lib/Types/LabelAssociation.js.map +1 -0
  156. package/lib/Types/Message.d.ts +21 -9
  157. package/lib/Types/Message.d.ts.map +1 -0
  158. package/lib/Types/Message.js +7 -7
  159. package/lib/Types/Message.js.map +1 -0
  160. package/lib/Types/Newsletter.d.ts +135 -0
  161. package/lib/Types/Newsletter.d.ts.map +1 -0
  162. package/lib/Types/Newsletter.js +31 -0
  163. package/lib/Types/Newsletter.js.map +1 -0
  164. package/lib/Types/Product.d.ts +2 -1
  165. package/lib/Types/Product.d.ts.map +1 -0
  166. package/lib/Types/Product.js +2 -2
  167. package/lib/Types/Product.js.map +1 -0
  168. package/lib/Types/Signal.d.ts +2 -1
  169. package/lib/Types/Signal.d.ts.map +1 -0
  170. package/lib/Types/Signal.js +2 -2
  171. package/lib/Types/Signal.js.map +1 -0
  172. package/lib/Types/Socket.d.ts +11 -10
  173. package/lib/Types/Socket.d.ts.map +1 -0
  174. package/lib/Types/Socket.js +3 -2
  175. package/lib/Types/Socket.js.map +1 -0
  176. package/lib/Types/State.d.ts +14 -2
  177. package/lib/Types/State.d.ts.map +1 -0
  178. package/lib/Types/State.js +13 -2
  179. package/lib/Types/State.js.map +1 -0
  180. package/lib/Types/USync.d.ts +3 -2
  181. package/lib/Types/USync.d.ts.map +1 -0
  182. package/lib/Types/USync.js +2 -2
  183. package/lib/Types/USync.js.map +1 -0
  184. package/lib/Types/index.d.ts +15 -13
  185. package/lib/Types/index.d.ts.map +1 -0
  186. package/lib/Types/index.js +15 -30
  187. package/lib/Types/index.js.map +1 -0
  188. package/lib/Utils/auth-utils.d.ts +3 -2
  189. package/lib/Utils/auth-utils.d.ts.map +1 -0
  190. package/lib/Utils/auth-utils.js +30 -40
  191. package/lib/Utils/auth-utils.js.map +1 -0
  192. package/lib/Utils/baileys-event-stream.d.ts +2 -1
  193. package/lib/Utils/baileys-event-stream.d.ts.map +1 -0
  194. package/lib/Utils/baileys-event-stream.js +15 -22
  195. package/lib/Utils/baileys-event-stream.js.map +1 -0
  196. package/lib/Utils/business.d.ts +3 -2
  197. package/lib/Utils/business.d.ts.map +1 -0
  198. package/lib/Utils/business.js +64 -75
  199. package/lib/Utils/business.js.map +1 -0
  200. package/lib/Utils/chat-utils.d.ts +12 -11
  201. package/lib/Utils/chat-utils.d.ts.map +1 -0
  202. package/lib/Utils/chat-utils.js +195 -194
  203. package/lib/Utils/chat-utils.js.map +1 -0
  204. package/lib/Utils/crypto.d.ts +2 -1
  205. package/lib/Utils/crypto.d.ts.map +1 -0
  206. package/lib/Utils/crypto.js +40 -95
  207. package/lib/Utils/crypto.js.map +1 -0
  208. package/lib/Utils/decode-wa-message.d.ts +7 -7
  209. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  210. package/lib/Utils/decode-wa-message.js +43 -41
  211. package/lib/Utils/decode-wa-message.js.map +1 -0
  212. package/lib/Utils/event-buffer.d.ts +6 -6
  213. package/lib/Utils/event-buffer.d.ts.map +1 -0
  214. package/lib/Utils/event-buffer.js +42 -59
  215. package/lib/Utils/event-buffer.js.map +1 -0
  216. package/lib/Utils/generics.d.ts +11 -9
  217. package/lib/Utils/generics.d.ts.map +1 -0
  218. package/lib/Utils/generics.js +105 -130
  219. package/lib/Utils/generics.js.map +1 -0
  220. package/lib/Utils/history.d.ts +4 -3
  221. package/lib/Utils/history.d.ts.map +1 -0
  222. package/lib/Utils/history.js +37 -46
  223. package/lib/Utils/history.js.map +1 -0
  224. package/lib/Utils/index.d.ts +18 -17
  225. package/lib/Utils/index.d.ts.map +1 -0
  226. package/lib/Utils/index.js +18 -33
  227. package/lib/Utils/index.js.map +1 -0
  228. package/lib/Utils/link-preview.d.ts +4 -3
  229. package/lib/Utils/link-preview.d.ts.map +1 -0
  230. package/lib/Utils/link-preview.js +14 -55
  231. package/lib/Utils/link-preview.js.map +1 -0
  232. package/lib/Utils/logger.d.ts +8 -6
  233. package/lib/Utils/logger.d.ts.map +1 -0
  234. package/lib/Utils/logger.js +3 -7
  235. package/lib/Utils/logger.js.map +1 -0
  236. package/lib/Utils/lt-hash.d.ts +9 -8
  237. package/lib/Utils/lt-hash.d.ts.map +1 -0
  238. package/lib/Utils/lt-hash.js +23 -26
  239. package/lib/Utils/lt-hash.js.map +1 -0
  240. package/lib/Utils/make-mutex.d.ts +1 -0
  241. package/lib/Utils/make-mutex.d.ts.map +1 -0
  242. package/lib/Utils/make-mutex.js +6 -10
  243. package/lib/Utils/make-mutex.js.map +1 -0
  244. package/lib/Utils/messages-media.d.ts +20 -11
  245. package/lib/Utils/messages-media.d.ts.map +1 -0
  246. package/lib/Utils/messages-media.js +215 -253
  247. package/lib/Utils/messages-media.js.map +1 -0
  248. package/lib/Utils/messages.d.ts +9 -8
  249. package/lib/Utils/messages.d.ts.map +1 -0
  250. package/lib/Utils/messages.js +259 -228
  251. package/lib/Utils/messages.js.map +1 -0
  252. package/lib/Utils/noise-handler.d.ts +5 -4
  253. package/lib/Utils/noise-handler.d.ts.map +1 -0
  254. package/lib/Utils/noise-handler.js +22 -26
  255. package/lib/Utils/noise-handler.js.map +1 -0
  256. package/lib/Utils/process-message.d.ts +6 -5
  257. package/lib/Utils/process-message.d.ts.map +1 -0
  258. package/lib/Utils/process-message.js +109 -123
  259. package/lib/Utils/process-message.js.map +1 -0
  260. package/lib/Utils/signal.d.ts +5 -4
  261. package/lib/Utils/signal.d.ts.map +1 -0
  262. package/lib/Utils/signal.js +52 -55
  263. package/lib/Utils/signal.js.map +1 -0
  264. package/lib/Utils/use-multi-file-auth-state.d.ts +2 -1
  265. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  266. package/lib/Utils/use-multi-file-auth-state.js +23 -27
  267. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  268. package/lib/Utils/validate-connection.d.ts +4 -3
  269. package/lib/Utils/validate-connection.d.ts.map +1 -0
  270. package/lib/Utils/validate-connection.js +64 -75
  271. package/lib/Utils/validate-connection.js.map +1 -0
  272. package/lib/WABinary/constants.d.ts +5 -4
  273. package/lib/WABinary/constants.d.ts.map +1 -0
  274. package/lib/WABinary/constants.js +1280 -19
  275. package/lib/WABinary/constants.js.map +1 -0
  276. package/lib/WABinary/decode.d.ts +2 -1
  277. package/lib/WABinary/decode.d.ts.map +1 -0
  278. package/lib/WABinary/decode.js +15 -52
  279. package/lib/WABinary/decode.js.map +1 -0
  280. package/lib/WABinary/encode.d.ts +2 -1
  281. package/lib/WABinary/encode.d.ts.map +1 -0
  282. package/lib/WABinary/encode.js +7 -43
  283. package/lib/WABinary/encode.js.map +1 -0
  284. package/lib/WABinary/generic-utils.d.ts +4 -3
  285. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  286. package/lib/WABinary/generic-utils.js +31 -39
  287. package/lib/WABinary/generic-utils.js.map +1 -0
  288. package/lib/WABinary/index.d.ts +6 -5
  289. package/lib/WABinary/index.d.ts.map +1 -0
  290. package/lib/WABinary/index.js +6 -21
  291. package/lib/WABinary/index.js.map +1 -0
  292. package/lib/WABinary/jid-utils.d.ts +1 -0
  293. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  294. package/lib/WABinary/jid-utils.js +21 -38
  295. package/lib/WABinary/jid-utils.js.map +1 -0
  296. package/lib/WABinary/types.d.ts +2 -1
  297. package/lib/WABinary/types.d.ts.map +1 -0
  298. package/lib/WABinary/types.js +2 -2
  299. package/lib/WABinary/types.js.map +1 -0
  300. package/lib/WAM/BinaryInfo.d.ts +2 -1
  301. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  302. package/lib/WAM/BinaryInfo.js +2 -5
  303. package/lib/WAM/BinaryInfo.js.map +1 -0
  304. package/lib/WAM/constants.d.ts +1 -0
  305. package/lib/WAM/constants.d.ts.map +1 -0
  306. package/lib/WAM/constants.js +2257 -2366
  307. package/lib/WAM/constants.js.map +1 -0
  308. package/lib/WAM/encode.d.ts +2 -1
  309. package/lib/WAM/encode.d.ts.map +1 -0
  310. package/lib/WAM/encode.js +15 -19
  311. package/lib/WAM/encode.js.map +1 -0
  312. package/lib/WAM/index.d.ts +4 -3
  313. package/lib/WAM/index.d.ts.map +1 -0
  314. package/lib/WAM/index.js +4 -19
  315. package/lib/WAM/index.js.map +1 -0
  316. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +4 -3
  317. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  318. package/lib/WAUSync/Protocols/USyncContactProtocol.js +8 -11
  319. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  320. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +3 -2
  321. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  322. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +11 -14
  323. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  324. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +3 -2
  325. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  326. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +9 -12
  327. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  328. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +3 -2
  329. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  330. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +9 -13
  331. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  332. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +4 -3
  333. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  334. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +20 -22
  335. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  336. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +3 -2
  337. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  338. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +3 -6
  339. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  340. package/lib/WAUSync/Protocols/index.d.ts +5 -4
  341. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  342. package/lib/WAUSync/Protocols/index.js +5 -20
  343. package/lib/WAUSync/Protocols/index.js.map +1 -0
  344. package/lib/WAUSync/USyncQuery.d.ts +4 -3
  345. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  346. package/lib/WAUSync/USyncQuery.js +34 -32
  347. package/lib/WAUSync/USyncQuery.js.map +1 -0
  348. package/lib/WAUSync/USyncUser.d.ts +6 -5
  349. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  350. package/lib/WAUSync/USyncUser.js +2 -5
  351. package/lib/WAUSync/USyncUser.js.map +1 -0
  352. package/lib/WAUSync/index.d.ts +4 -3
  353. package/lib/WAUSync/index.d.ts.map +1 -0
  354. package/lib/WAUSync/index.js +4 -19
  355. package/lib/WAUSync/index.js.map +1 -0
  356. package/lib/index.d.ts +9 -8
  357. package/lib/index.d.ts.map +1 -0
  358. package/lib/index.js +11 -30
  359. package/lib/index.js.map +1 -0
  360. package/package.json +36 -31
  361. package/WASignalGroup/GroupProtocol.js +0 -1697
  362. package/WASignalGroup/ciphertext_message.js +0 -16
  363. package/WASignalGroup/group_cipher.js +0 -120
  364. package/WASignalGroup/group_session_builder.js +0 -46
  365. package/WASignalGroup/index.js +0 -5
  366. package/WASignalGroup/keyhelper.js +0 -21
  367. package/WASignalGroup/protobufs.js +0 -3
  368. package/WASignalGroup/queue_job.js +0 -69
  369. package/WASignalGroup/sender_chain_key.js +0 -50
  370. package/WASignalGroup/sender_key_distribution_message.js +0 -78
  371. package/WASignalGroup/sender_key_message.js +0 -92
  372. package/WASignalGroup/sender_key_name.js +0 -70
  373. package/WASignalGroup/sender_key_record.js +0 -56
  374. package/WASignalGroup/sender_key_state.js +0 -129
@@ -1,71 +1,71 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getNextPreKeysNode = exports.getNextPreKeys = exports.extractDeviceJids = exports.parseAndInjectE2ESessions = exports.xmppPreKey = exports.xmppSignedPreKey = exports.generateOrGetPreKeys = exports.getPreKeys = exports.createSignalIdentity = void 0;
4
- const lodash_1 = require("lodash");
5
- const Defaults_1 = require("../Defaults");
6
- const WABinary_1 = require("../WABinary");
7
- const crypto_1 = require("./crypto");
8
- const generics_1 = require("./generics");
9
- const createSignalIdentity = (wid, accountSignatureKey) => {
1
+ import { KEY_BUNDLE_TYPE } from '../Defaults/index.js';
2
+ import { assertNodeErrorFree, getBinaryNodeChild, getBinaryNodeChildBuffer, getBinaryNodeChildren, getBinaryNodeChildUInt, jidDecode, S_WHATSAPP_NET } from '../WABinary/index.js';
3
+ import { Curve, generateSignalPubKey } from './crypto.js';
4
+ import { encodeBigEndian } from './generics.js';
5
+ function chunk(array, size) {
6
+ const chunks = [];
7
+ for (let i = 0; i < array.length; i += size) {
8
+ chunks.push(array.slice(i, i + size));
9
+ }
10
+ return chunks;
11
+ }
12
+ export const createSignalIdentity = (wid, accountSignatureKey) => {
10
13
  return {
11
14
  identifier: { name: wid, deviceId: 0 },
12
- identifierKey: (0, crypto_1.generateSignalPubKey)(accountSignatureKey)
15
+ identifierKey: generateSignalPubKey(accountSignatureKey)
13
16
  };
14
17
  };
15
- exports.createSignalIdentity = createSignalIdentity;
16
- const getPreKeys = async ({ get }, min, limit) => {
18
+ export const getPreKeys = async ({ get }, min, limit) => {
17
19
  const idList = [];
18
20
  for (let id = min; id < limit; id++) {
19
21
  idList.push(id.toString());
20
22
  }
21
23
  return get('pre-key', idList);
22
24
  };
23
- exports.getPreKeys = getPreKeys;
24
- const generateOrGetPreKeys = (creds, range) => {
25
+ export const generateOrGetPreKeys = (creds, range) => {
25
26
  const avaliable = creds.nextPreKeyId - creds.firstUnuploadedPreKeyId;
26
27
  const remaining = range - avaliable;
27
28
  const lastPreKeyId = creds.nextPreKeyId + remaining - 1;
28
29
  const newPreKeys = {};
29
30
  if (remaining > 0) {
30
31
  for (let i = creds.nextPreKeyId; i <= lastPreKeyId; i++) {
31
- newPreKeys[i] = crypto_1.Curve.generateKeyPair();
32
+ newPreKeys[i] = Curve.generateKeyPair();
32
33
  }
33
34
  }
34
35
  return {
35
36
  newPreKeys,
36
37
  lastPreKeyId,
37
- preKeysRange: [creds.firstUnuploadedPreKeyId, range],
38
+ preKeysRange: [creds.firstUnuploadedPreKeyId, range]
38
39
  };
39
40
  };
40
- exports.generateOrGetPreKeys = generateOrGetPreKeys;
41
- const xmppSignedPreKey = (key) => ({
41
+ export const xmppSignedPreKey = (key) => ({
42
42
  tag: 'skey',
43
43
  attrs: {},
44
44
  content: [
45
- { tag: 'id', attrs: {}, content: (0, generics_1.encodeBigEndian)(key.keyId, 3) },
45
+ { tag: 'id', attrs: {}, content: encodeBigEndian(key.keyId, 3) },
46
46
  { tag: 'value', attrs: {}, content: key.keyPair.public },
47
47
  { tag: 'signature', attrs: {}, content: key.signature }
48
48
  ]
49
49
  });
50
- exports.xmppSignedPreKey = xmppSignedPreKey;
51
- const xmppPreKey = (pair, id) => ({
50
+ export const xmppPreKey = (pair, id) => ({
52
51
  tag: 'key',
53
52
  attrs: {},
54
53
  content: [
55
- { tag: 'id', attrs: {}, content: (0, generics_1.encodeBigEndian)(id, 3) },
54
+ { tag: 'id', attrs: {}, content: encodeBigEndian(id, 3) },
56
55
  { tag: 'value', attrs: {}, content: pair.public }
57
56
  ]
58
57
  });
59
- exports.xmppPreKey = xmppPreKey;
60
- const parseAndInjectE2ESessions = async (node, repository) => {
61
- const extractKey = (key) => (key ? ({
62
- keyId: (0, WABinary_1.getBinaryNodeChildUInt)(key, 'id', 3),
63
- publicKey: (0, crypto_1.generateSignalPubKey)((0, WABinary_1.getBinaryNodeChildBuffer)(key, 'value')),
64
- signature: (0, WABinary_1.getBinaryNodeChildBuffer)(key, 'signature'),
65
- }) : undefined);
66
- const nodes = (0, WABinary_1.getBinaryNodeChildren)((0, WABinary_1.getBinaryNodeChild)(node, 'list'), 'user');
58
+ export const parseAndInjectE2ESessions = async (node, repository) => {
59
+ const extractKey = (key) => key
60
+ ? {
61
+ keyId: getBinaryNodeChildUInt(key, 'id', 3),
62
+ publicKey: generateSignalPubKey(getBinaryNodeChildBuffer(key, 'value')),
63
+ signature: getBinaryNodeChildBuffer(key, 'signature')
64
+ }
65
+ : undefined;
66
+ const nodes = getBinaryNodeChildren(getBinaryNodeChild(node, 'list'), 'user');
67
67
  for (const node of nodes) {
68
- (0, WABinary_1.assertNodeErrorFree)(node);
68
+ assertNodeErrorFree(node);
69
69
  }
70
70
  // Most of the work in repository.injectE2ESession is CPU intensive, not IO
71
71
  // So Promise.all doesn't really help here,
@@ -73,19 +73,19 @@ const parseAndInjectE2ESessions = async (node, repository) => {
73
73
  // This way we chunk it in smaller parts and between those parts we can yield to the event loop
74
74
  // It's rare case when you need to E2E sessions for so many users, but it's possible
75
75
  const chunkSize = 100;
76
- const chunks = (0, lodash_1.chunk)(nodes, chunkSize);
76
+ const chunks = chunk(nodes, chunkSize);
77
77
  for (const nodesChunk of chunks) {
78
78
  await Promise.all(nodesChunk.map(async (node) => {
79
- const signedKey = (0, WABinary_1.getBinaryNodeChild)(node, 'skey');
80
- const key = (0, WABinary_1.getBinaryNodeChild)(node, 'key');
81
- const identity = (0, WABinary_1.getBinaryNodeChildBuffer)(node, 'identity');
79
+ const signedKey = getBinaryNodeChild(node, 'skey');
80
+ const key = getBinaryNodeChild(node, 'key');
81
+ const identity = getBinaryNodeChildBuffer(node, 'identity');
82
82
  const jid = node.attrs.jid;
83
- const registrationId = (0, WABinary_1.getBinaryNodeChildUInt)(node, 'registration', 4);
83
+ const registrationId = getBinaryNodeChildUInt(node, 'registration', 4);
84
84
  await repository.injectE2ESession({
85
85
  jid,
86
86
  session: {
87
87
  registrationId: registrationId,
88
- identityKey: (0, crypto_1.generateSignalPubKey)(identity),
88
+ identityKey: generateSignalPubKey(identity),
89
89
  signedPreKey: extractKey(signedKey),
90
90
  preKey: extractKey(key)
91
91
  }
@@ -93,14 +93,13 @@ const parseAndInjectE2ESessions = async (node, repository) => {
93
93
  }));
94
94
  }
95
95
  };
96
- exports.parseAndInjectE2ESessions = parseAndInjectE2ESessions;
97
- const extractDeviceJids = (result, myJid, excludeZeroDevices) => {
98
- const { user: myUser, device: myDevice } = (0, WABinary_1.jidDecode)(myJid);
96
+ export const extractDeviceJids = (result, myJid, excludeZeroDevices) => {
97
+ const { user: myUser, device: myDevice } = jidDecode(myJid);
99
98
  const extracted = [];
100
99
  for (const userResult of result) {
101
100
  const { devices, id } = userResult;
102
- const { user } = (0, WABinary_1.jidDecode)(id);
103
- const deviceList = devices === null || devices === void 0 ? void 0 : devices.deviceList;
101
+ const { user } = jidDecode(id);
102
+ const deviceList = devices?.deviceList;
104
103
  if (Array.isArray(deviceList)) {
105
104
  for (const { id: device, keyIndex } of deviceList) {
106
105
  if ((!excludeZeroDevices || device !== 0) && // if zero devices are not-excluded, or device is non zero
@@ -114,40 +113,38 @@ const extractDeviceJids = (result, myJid, excludeZeroDevices) => {
114
113
  }
115
114
  return extracted;
116
115
  };
117
- exports.extractDeviceJids = extractDeviceJids;
118
116
  /**
119
117
  * get the next N keys for upload or processing
120
118
  * @param count number of pre-keys to get or generate
121
119
  */
122
- const getNextPreKeys = async ({ creds, keys }, count) => {
123
- const { newPreKeys, lastPreKeyId, preKeysRange } = (0, exports.generateOrGetPreKeys)(creds, count);
120
+ export const getNextPreKeys = async ({ creds, keys }, count) => {
121
+ const { newPreKeys, lastPreKeyId, preKeysRange } = generateOrGetPreKeys(creds, count);
124
122
  const update = {
125
123
  nextPreKeyId: Math.max(lastPreKeyId + 1, creds.nextPreKeyId),
126
124
  firstUnuploadedPreKeyId: Math.max(creds.firstUnuploadedPreKeyId, lastPreKeyId + 1)
127
125
  };
128
126
  await keys.set({ 'pre-key': newPreKeys });
129
- const preKeys = await (0, exports.getPreKeys)(keys, preKeysRange[0], preKeysRange[0] + preKeysRange[1]);
127
+ const preKeys = await getPreKeys(keys, preKeysRange[0], preKeysRange[0] + preKeysRange[1]);
130
128
  return { update, preKeys };
131
129
  };
132
- exports.getNextPreKeys = getNextPreKeys;
133
- const getNextPreKeysNode = async (state, count) => {
130
+ export const getNextPreKeysNode = async (state, count) => {
134
131
  const { creds } = state;
135
- const { update, preKeys } = await (0, exports.getNextPreKeys)(state, count);
132
+ const { update, preKeys } = await getNextPreKeys(state, count);
136
133
  const node = {
137
134
  tag: 'iq',
138
135
  attrs: {
139
136
  xmlns: 'encrypt',
140
137
  type: 'set',
141
- to: WABinary_1.S_WHATSAPP_NET,
138
+ to: S_WHATSAPP_NET
142
139
  },
143
140
  content: [
144
- { tag: 'registration', attrs: {}, content: (0, generics_1.encodeBigEndian)(creds.registrationId) },
145
- { tag: 'type', attrs: {}, content: Defaults_1.KEY_BUNDLE_TYPE },
141
+ { tag: 'registration', attrs: {}, content: encodeBigEndian(creds.registrationId) },
142
+ { tag: 'type', attrs: {}, content: KEY_BUNDLE_TYPE },
146
143
  { tag: 'identity', attrs: {}, content: creds.signedIdentityKey.public },
147
- { tag: 'list', attrs: {}, content: Object.keys(preKeys).map(k => (0, exports.xmppPreKey)(preKeys[+k], +k)) },
148
- (0, exports.xmppSignedPreKey)(creds.signedPreKey)
144
+ { tag: 'list', attrs: {}, content: Object.keys(preKeys).map(k => xmppPreKey(preKeys[+k], +k)) },
145
+ xmppSignedPreKey(creds.signedPreKey)
149
146
  ]
150
147
  };
151
148
  return { update, node };
152
149
  };
153
- exports.getNextPreKeysNode = getNextPreKeysNode;
150
+ //# sourceMappingURL=signal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../src/Utils/signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAU7C,OAAO,EACN,mBAAmB,EAEnB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,SAAS,EAET,cAAc,EACd,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,SAAS,KAAK,CAAI,KAAU,EAAE,IAAY;IACzC,MAAM,MAAM,GAAU,EAAE,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,MAAM,CAAA;AACd,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,mBAA+B,EAAkB,EAAE;IACpG,OAAO;QACN,UAAU,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE;QACtC,aAAa,EAAE,oBAAoB,CAAC,mBAAmB,CAAC;KACxD,CAAA;AACF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,EAAE,GAAG,EAAkB,EAAE,GAAW,EAAE,KAAa,EAAE,EAAE;IACvF,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC3B,CAAC;IAED,OAAO,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAA0B,EAAE,KAAa,EAAE,EAAE;IACjF,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,uBAAuB,CAAA;IACpE,MAAM,SAAS,GAAG,KAAK,GAAG,SAAS,CAAA;IACnC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,GAAG,SAAS,GAAG,CAAC,CAAA;IACvD,MAAM,UAAU,GAA8B,EAAE,CAAA;IAChD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YACzD,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,EAAE,CAAA;QACxC,CAAC;IACF,CAAC;IAED,OAAO;QACN,UAAU;QACV,YAAY;QACZ,YAAY,EAAE,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAU;KAC7D,CAAA;AACF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAkB,EAAc,EAAE,CAAC,CAAC;IACpE,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,EAAE;IACT,OAAO,EAAE;QACR,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;QAChE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;QACxD,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE;KACvD;CACD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,EAAU,EAAc,EAAE,CAAC,CAAC;IACrE,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,EAAE;IACT,OAAO,EAAE;QACR,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;QACzD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;KACjD;CACD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,IAAgB,EAAE,UAA4B,EAAE,EAAE;IACjG,MAAM,UAAU,GAAG,CAAC,GAAe,EAAE,EAAE,CACtC,GAAG;QACF,CAAC,CAAC;YACA,KAAK,EAAE,sBAAsB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAE;YAC5C,SAAS,EAAE,oBAAoB,CAAC,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAE,CAAC;YACxE,SAAS,EAAE,wBAAwB,CAAC,GAAG,EAAE,WAAW,CAAE;SACtD;QACF,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,KAAK,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;IAC7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,2EAA2E;IAC3E,2CAA2C;IAC3C,kGAAkG;IAClG,+FAA+F;IAC/F,oFAAoF;IACpF,MAAM,SAAS,GAAG,GAAG,CAAA;IACrB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACtC,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,CAAC,GAAG,CAChB,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAgB,EAAE,EAAE;YACzC,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAE,CAAA;YACnD,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAE,CAAA;YAC5C,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAE,CAAA;YAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAI,CAAA;YAC3B,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAA;YAEtE,MAAM,UAAU,CAAC,gBAAgB,CAAC;gBACjC,GAAG;gBACH,OAAO,EAAE;oBACR,cAAc,EAAE,cAAe;oBAC/B,WAAW,EAAE,oBAAoB,CAAC,QAAQ,CAAC;oBAC3C,YAAY,EAAE,UAAU,CAAC,SAAS,CAAE;oBACpC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAE;iBACxB;aACD,CAAC,CAAA;QACH,CAAC,CAAC,CACF,CAAA;IACF,CAAC;AACF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAA8B,EAAE,KAAa,EAAE,kBAA2B,EAAE,EAAE;IAC/G,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,KAAK,CAAE,CAAA;IAE5D,MAAM,SAAS,GAAoB,EAAE,CAAA;IAErC,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,UAAuD,CAAA;QAC/E,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,EAAE,CAAE,CAAA;QAC/B,MAAM,UAAU,GAAG,OAAO,EAAE,UAA8B,CAAA;QAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,KAAK,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,UAAU,EAAE,CAAC;gBACnD,IACC,CAAC,CAAC,kBAAkB,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,0DAA0D;oBACnG,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,CAAC,IAAI,uDAAuD;oBACnG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,4FAA4F;kBACxH,CAAC;oBACF,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;gBACjC,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,SAAS,CAAA;AACjB,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAuB,EAAE,KAAa,EAAE,EAAE;IAC3F,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAErF,MAAM,MAAM,GAAiC;QAC5C,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;QAC5D,uBAAuB,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,YAAY,GAAG,CAAC,CAAC;KAClF,CAAA;IAED,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;IAEzC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAE1F,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,KAA0B,EAAE,KAAa,EAAE,EAAE;IACrF,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAE9D,MAAM,IAAI,GAAe;QACxB,GAAG,EAAE,IAAI;QACT,KAAK,EAAE;YACN,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,KAAK;YACX,EAAE,EAAE,cAAc;SAClB;QACD,OAAO,EAAE;YACR,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;YAClF,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;YACpD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE;YACvE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YAChG,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC;SACpC;KACD,CAAA;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { AuthenticationState } from '../Types';
1
+ import type { AuthenticationState } from '../Types/index.js';
2
2
  /**
3
3
  * stores the full authentication state in a single folder.
4
4
  * Far more efficient than singlefileauthstate
@@ -10,3 +10,4 @@ export declare const useMultiFileAuthState: (folder: string) => Promise<{
10
10
  state: AuthenticationState;
11
11
  saveCreds: () => Promise<void>;
12
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;AAqB3F;;;;;;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,CAqGxE,CAAA"}
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useMultiFileAuthState = void 0;
4
- const async_mutex_1 = require("async-mutex");
5
- const promises_1 = require("fs/promises");
6
- const path_1 = require("path");
7
- const WAProto_1 = require("../../WAProto");
8
- const auth_utils_1 = require("./auth-utils");
9
- const generics_1 = require("./generics");
1
+ import { Mutex } from 'async-mutex';
2
+ import { mkdir, readFile, 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';
10
7
  // We need to lock files due to the fact that we are using async functions to read and write files
11
8
  // https://github.com/WhiskeySockets/Baileys/issues/794
12
9
  // https://github.com/nodejs/node/issues/26338
@@ -16,7 +13,7 @@ const fileLocks = new Map();
16
13
  const getFileLock = (path) => {
17
14
  let mutex = fileLocks.get(path);
18
15
  if (!mutex) {
19
- mutex = new async_mutex_1.Mutex();
16
+ mutex = new Mutex();
20
17
  fileLocks.set(path, mutex);
21
18
  }
22
19
  return mutex;
@@ -28,14 +25,14 @@ const getFileLock = (path) => {
28
25
  * Again, I wouldn't endorse this for any production level use other than perhaps a bot.
29
26
  * Would recommend writing an auth state for use with a proper SQL or No-SQL DB
30
27
  * */
31
- const useMultiFileAuthState = async (folder) => {
28
+ export const useMultiFileAuthState = async (folder) => {
32
29
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
30
  const writeData = async (data, file) => {
34
- const filePath = (0, path_1.join)(folder, fixFileName(file));
31
+ const filePath = join(folder, fixFileName(file));
35
32
  const mutex = getFileLock(filePath);
36
33
  return mutex.acquire().then(async (release) => {
37
34
  try {
38
- await (0, promises_1.writeFile)(filePath, JSON.stringify(data, generics_1.BufferJSON.replacer));
35
+ await writeFile(filePath, JSON.stringify(data, BufferJSON.replacer));
39
36
  }
40
37
  finally {
41
38
  release();
@@ -44,12 +41,12 @@ const useMultiFileAuthState = async (folder) => {
44
41
  };
45
42
  const readData = async (file) => {
46
43
  try {
47
- const filePath = (0, path_1.join)(folder, fixFileName(file));
44
+ const filePath = join(folder, fixFileName(file));
48
45
  const mutex = getFileLock(filePath);
49
46
  return await mutex.acquire().then(async (release) => {
50
47
  try {
51
- const data = await (0, promises_1.readFile)(filePath, { encoding: 'utf-8' });
52
- return JSON.parse(data, generics_1.BufferJSON.reviver);
48
+ const data = await readFile(filePath, { encoding: 'utf-8' });
49
+ return JSON.parse(data, BufferJSON.reviver);
53
50
  }
54
51
  finally {
55
52
  release();
@@ -62,33 +59,32 @@ const useMultiFileAuthState = async (folder) => {
62
59
  };
63
60
  const removeData = async (file) => {
64
61
  try {
65
- const filePath = (0, path_1.join)(folder, fixFileName(file));
62
+ const filePath = join(folder, fixFileName(file));
66
63
  const mutex = getFileLock(filePath);
67
64
  return mutex.acquire().then(async (release) => {
68
65
  try {
69
- await (0, promises_1.unlink)(filePath);
66
+ await unlink(filePath);
70
67
  }
71
- catch (_a) {
68
+ catch {
72
69
  }
73
70
  finally {
74
71
  release();
75
72
  }
76
73
  });
77
74
  }
78
- catch (_a) {
79
- }
75
+ catch { }
80
76
  };
81
- const folderInfo = await (0, promises_1.stat)(folder).catch(() => { });
77
+ const folderInfo = await stat(folder).catch(() => { });
82
78
  if (folderInfo) {
83
79
  if (!folderInfo.isDirectory()) {
84
80
  throw new Error(`found something that is not a directory at ${folder}, either delete it or specify a different location`);
85
81
  }
86
82
  }
87
83
  else {
88
- await (0, promises_1.mkdir)(folder, { recursive: true });
84
+ await mkdir(folder, { recursive: true });
89
85
  }
90
- const fixFileName = (file) => { var _a; return (_a = file === null || file === void 0 ? void 0 : file.replace(/\//g, '__')) === null || _a === void 0 ? void 0 : _a.replace(/:/g, '-'); };
91
- const creds = await readData('creds.json') || (0, auth_utils_1.initAuthCreds)();
86
+ const fixFileName = (file) => file?.replace(/\//g, '__')?.replace(/:/g, '-');
87
+ const creds = (await readData('creds.json')) || initAuthCreds();
92
88
  return {
93
89
  state: {
94
90
  creds,
@@ -98,7 +94,7 @@ const useMultiFileAuthState = async (folder) => {
98
94
  await Promise.all(ids.map(async (id) => {
99
95
  let value = await readData(`${type}-${id}.json`);
100
96
  if (type === 'app-state-sync-key' && value) {
101
- value = WAProto_1.proto.Message.AppStateSyncKeyData.fromObject(value);
97
+ value = proto.Message.AppStateSyncKeyData.fromObject(value);
102
98
  }
103
99
  data[id] = value;
104
100
  }));
@@ -122,4 +118,4 @@ const useMultiFileAuthState = async (folder) => {
122
118
  }
123
119
  };
124
120
  };
125
- exports.useMultiFileAuthState = useMultiFileAuthState;
121
+ //# 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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"}
@@ -1,6 +1,6 @@
1
- import { proto } from '../../WAProto';
2
- import type { AuthenticationCreds, SignalCreds, SocketConfig } from '../Types';
3
- import { BinaryNode } from '../WABinary';
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
4
  export declare const generateLoginNode: (userJid: string, config: SocketConfig) => proto.IClientPayload;
5
5
  export declare const generateRegistrationNode: ({ registrationId, signedPreKey, signedIdentityKey }: SignalCreds, config: SocketConfig) => proto.ClientPayload;
6
6
  export declare const configureSuccessfulPairing: (stanza: BinaryNode, { advSecretKey, signedIdentityKey, signalIdentities }: Pick<AuthenticationCreds, "advSecretKey" | "signedIdentityKey" | "signalIdentities">) => {
@@ -8,3 +8,4 @@ export declare const configureSuccessfulPairing: (stanza: BinaryNode, { advSecre
8
8
  reply: BinaryNode;
9
9
  };
10
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;AAE9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC9E,OAAO,EAAE,KAAK,UAAU,EAAiD,MAAM,aAAa,CAAA;AAkD5F,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,EAAE,QAAQ,YAAY,KAAG,KAAK,CAAC,cAU/E,CAAA;AAUD,eAAO,MAAM,wBAAwB,GACpC,qDAAqD,WAAW,EAChE,QAAQ,YAAY,wBAiCpB,CAAA;AAED,eAAO,MAAM,0BAA0B,GACtC,QAAQ,UAAU,EAClB,uDAIG,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;;;CA4EvF,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,SAAS,KAAK,CAAC,wBAAwB,EAAE,qBAAqB,OAAO,gCAS/G,CAAA"}
@@ -1,38 +1,35 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.encodeSignedDeviceIdentity = exports.configureSuccessfulPairing = exports.generateRegistrationNode = exports.generateLoginNode = void 0;
4
- const boom_1 = require("@hapi/boom");
5
- const crypto_1 = require("crypto");
6
- const WAProto_1 = require("../../WAProto");
7
- const Defaults_1 = require("../Defaults");
8
- const WABinary_1 = require("../WABinary");
9
- const crypto_2 = require("./crypto");
10
- const generics_1 = require("./generics");
11
- const signal_1 = require("./signal");
1
+ import { Boom } from '@hapi/boom';
2
+ import { createHash } from 'crypto';
3
+ import { proto } from '../../WAProto/index.js';
4
+ import { KEY_BUNDLE_TYPE } 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';
12
9
  const getUserAgent = (config) => {
13
10
  return {
14
11
  appVersion: {
15
12
  primary: config.version[0],
16
13
  secondary: config.version[1],
17
- tertiary: config.version[2],
14
+ tertiary: config.version[2]
18
15
  },
19
- platform: WAProto_1.proto.ClientPayload.UserAgent.Platform.WEB,
20
- releaseChannel: WAProto_1.proto.ClientPayload.UserAgent.ReleaseChannel.RELEASE,
16
+ platform: proto.ClientPayload.UserAgent.Platform.WEB,
17
+ releaseChannel: proto.ClientPayload.UserAgent.ReleaseChannel.RELEASE,
21
18
  osVersion: '0.1',
22
19
  device: 'Desktop',
23
20
  osBuildNumber: '0.1',
24
21
  localeLanguageIso6391: 'en',
25
22
  mnc: '000',
26
23
  mcc: '000',
27
- localeCountryIso31661Alpha2: config.countryCode,
24
+ localeCountryIso31661Alpha2: config.countryCode
28
25
  };
29
26
  };
30
27
  const PLATFORM_MAP = {
31
- 'Mac OS': WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.DARWIN,
32
- 'Windows': WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.WIN32
28
+ 'Mac OS': proto.ClientPayload.WebInfo.WebSubPlatform.DARWIN,
29
+ Windows: proto.ClientPayload.WebInfo.WebSubPlatform.WIN32
33
30
  };
34
31
  const getWebInfo = (config) => {
35
- let webSubPlatform = WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.WEB_BROWSER;
32
+ let webSubPlatform = proto.ClientPayload.WebInfo.WebSubPlatform.WEB_BROWSER;
36
33
  if (config.syncFullHistory && PLATFORM_MAP[config.browser[0]]) {
37
34
  webSubPlatform = PLATFORM_MAP[config.browser[0]];
38
35
  }
@@ -40,41 +37,41 @@ const getWebInfo = (config) => {
40
37
  };
41
38
  const getClientPayload = (config) => {
42
39
  const payload = {
43
- connectType: WAProto_1.proto.ClientPayload.ConnectType.WIFI_UNKNOWN,
44
- connectReason: WAProto_1.proto.ClientPayload.ConnectReason.USER_ACTIVATED,
45
- userAgent: getUserAgent(config),
40
+ connectType: proto.ClientPayload.ConnectType.WIFI_UNKNOWN,
41
+ connectReason: proto.ClientPayload.ConnectReason.USER_ACTIVATED,
42
+ userAgent: getUserAgent(config)
46
43
  };
47
44
  payload.webInfo = getWebInfo(config);
48
45
  return payload;
49
46
  };
50
- const generateLoginNode = (userJid, config) => {
51
- const { user, device } = (0, WABinary_1.jidDecode)(userJid);
47
+ export const generateLoginNode = (userJid, config) => {
48
+ const { user, device } = jidDecode(userJid);
52
49
  const payload = {
53
50
  ...getClientPayload(config),
54
51
  passive: false,
55
52
  pull: true,
56
53
  username: +user,
57
- device: device,
54
+ device: device
58
55
  };
59
- return WAProto_1.proto.ClientPayload.fromObject(payload);
56
+ return proto.ClientPayload.fromObject(payload);
60
57
  };
61
- exports.generateLoginNode = generateLoginNode;
62
58
  const getPlatformType = (platform) => {
63
59
  const platformType = platform.toUpperCase();
64
- return WAProto_1.proto.DeviceProps.PlatformType[platformType] || WAProto_1.proto.DeviceProps.PlatformType.DESKTOP;
60
+ return (proto.DeviceProps.PlatformType[platformType] ||
61
+ proto.DeviceProps.PlatformType.DESKTOP);
65
62
  };
66
- const generateRegistrationNode = ({ registrationId, signedPreKey, signedIdentityKey }, config) => {
63
+ export const generateRegistrationNode = ({ registrationId, signedPreKey, signedIdentityKey }, config) => {
67
64
  // the app version needs to be md5 hashed
68
65
  // and passed in
69
- const appVersionBuf = (0, crypto_1.createHash)('md5')
66
+ const appVersionBuf = createHash('md5')
70
67
  .update(config.version.join('.')) // join as string
71
68
  .digest();
72
69
  const companion = {
73
70
  os: config.browser[0],
74
71
  platformType: getPlatformType(config.browser[1]),
75
- requireFullSync: config.syncFullHistory,
72
+ requireFullSync: config.syncFullHistory
76
73
  };
77
- const companionProto = WAProto_1.proto.DeviceProps.encode(companion).finish();
74
+ const companionProto = proto.DeviceProps.encode(companion).finish();
78
75
  const registerPayload = {
79
76
  ...getClientPayload(config),
80
77
  passive: false,
@@ -82,54 +79,53 @@ const generateRegistrationNode = ({ registrationId, signedPreKey, signedIdentity
82
79
  devicePairingData: {
83
80
  buildHash: appVersionBuf,
84
81
  deviceProps: companionProto,
85
- eRegid: (0, generics_1.encodeBigEndian)(registrationId),
86
- eKeytype: Defaults_1.KEY_BUNDLE_TYPE,
82
+ eRegid: encodeBigEndian(registrationId),
83
+ eKeytype: KEY_BUNDLE_TYPE,
87
84
  eIdent: signedIdentityKey.public,
88
- eSkeyId: (0, generics_1.encodeBigEndian)(signedPreKey.keyId, 3),
85
+ eSkeyId: encodeBigEndian(signedPreKey.keyId, 3),
89
86
  eSkeyVal: signedPreKey.keyPair.public,
90
- eSkeySig: signedPreKey.signature,
91
- },
87
+ eSkeySig: signedPreKey.signature
88
+ }
92
89
  };
93
- return WAProto_1.proto.ClientPayload.fromObject(registerPayload);
90
+ return proto.ClientPayload.fromObject(registerPayload);
94
91
  };
95
- exports.generateRegistrationNode = generateRegistrationNode;
96
- const configureSuccessfulPairing = (stanza, { advSecretKey, signedIdentityKey, signalIdentities }) => {
92
+ export const configureSuccessfulPairing = (stanza, { advSecretKey, signedIdentityKey, signalIdentities }) => {
97
93
  const msgId = stanza.attrs.id;
98
- const pairSuccessNode = (0, WABinary_1.getBinaryNodeChild)(stanza, 'pair-success');
99
- const deviceIdentityNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'device-identity');
100
- const platformNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'platform');
101
- const deviceNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'device');
102
- const businessNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'biz');
94
+ const pairSuccessNode = getBinaryNodeChild(stanza, 'pair-success');
95
+ const deviceIdentityNode = getBinaryNodeChild(pairSuccessNode, 'device-identity');
96
+ const platformNode = getBinaryNodeChild(pairSuccessNode, 'platform');
97
+ const deviceNode = getBinaryNodeChild(pairSuccessNode, 'device');
98
+ const businessNode = getBinaryNodeChild(pairSuccessNode, 'biz');
103
99
  if (!deviceIdentityNode || !deviceNode) {
104
- throw new boom_1.Boom('Missing device-identity or device in pair success node', { data: stanza });
100
+ throw new Boom('Missing device-identity or device in pair success node', { data: stanza });
105
101
  }
106
- const bizName = businessNode === null || businessNode === void 0 ? void 0 : businessNode.attrs.name;
102
+ const bizName = businessNode?.attrs.name;
107
103
  const jid = deviceNode.attrs.jid;
108
- const { details, hmac } = WAProto_1.proto.ADVSignedDeviceIdentityHMAC.decode(deviceIdentityNode.content);
109
- // check HMAC matches
110
- const advSign = (0, crypto_2.hmacSign)(details, Buffer.from(advSecretKey, 'base64'));
104
+ const { details, hmac, accountType } = proto.ADVSignedDeviceIdentityHMAC.decode(deviceIdentityNode.content);
105
+ const isHostedAccount = accountType !== undefined && accountType === proto.ADVEncryptionType.HOSTED;
106
+ const hmacPrefix = isHostedAccount ? Buffer.from([6, 5]) : Buffer.alloc(0);
107
+ const advSign = hmacSign(Buffer.concat([hmacPrefix, details]), Buffer.from(advSecretKey, 'base64'));
111
108
  if (Buffer.compare(hmac, advSign) !== 0) {
112
- throw new boom_1.Boom('Invalid account signature');
109
+ throw new Boom('Invalid account signature');
113
110
  }
114
- const account = WAProto_1.proto.ADVSignedDeviceIdentity.decode(details);
111
+ const account = proto.ADVSignedDeviceIdentity.decode(details);
115
112
  const { accountSignatureKey, accountSignature, details: deviceDetails } = account;
116
- // verify the device signature matches
117
113
  const accountMsg = Buffer.concat([Buffer.from([6, 0]), deviceDetails, signedIdentityKey.public]);
118
- if (!crypto_2.Curve.verify(accountSignatureKey, accountMsg, accountSignature)) {
119
- throw new boom_1.Boom('Failed to verify account signature');
114
+ if (!Curve.verify(accountSignatureKey, accountMsg, accountSignature)) {
115
+ throw new Boom('Failed to verify account signature');
120
116
  }
121
- // sign the details with our identity key
122
- const deviceMsg = Buffer.concat([Buffer.from([6, 1]), deviceDetails, signedIdentityKey.public, accountSignatureKey]);
123
- account.deviceSignature = crypto_2.Curve.sign(signedIdentityKey.private, deviceMsg);
124
- const identity = (0, signal_1.createSignalIdentity)(jid, accountSignatureKey);
125
- const accountEnc = (0, exports.encodeSignedDeviceIdentity)(account, false);
126
- const deviceIdentity = WAProto_1.proto.ADVDeviceIdentity.decode(account.details);
117
+ const devicePrefix = isHostedAccount ? Buffer.from([6, 6]) : Buffer.from([6, 1]);
118
+ const deviceMsg = Buffer.concat([devicePrefix, deviceDetails, signedIdentityKey.public, accountSignatureKey]);
119
+ account.deviceSignature = Curve.sign(signedIdentityKey.private, deviceMsg);
120
+ const identity = createSignalIdentity(jid, accountSignatureKey);
121
+ const accountEnc = encodeSignedDeviceIdentity(account, false);
122
+ const deviceIdentity = proto.ADVDeviceIdentity.decode(account.details);
127
123
  const reply = {
128
124
  tag: 'iq',
129
125
  attrs: {
130
- to: WABinary_1.S_WHATSAPP_NET,
126
+ to: S_WHATSAPP_NET,
131
127
  type: 'result',
132
- id: msgId,
128
+ id: msgId
133
129
  },
134
130
  content: [
135
131
  {
@@ -148,28 +144,21 @@ const configureSuccessfulPairing = (stanza, { advSecretKey, signedIdentityKey, s
148
144
  const authUpdate = {
149
145
  account,
150
146
  me: { id: jid, name: bizName },
151
- signalIdentities: [
152
- ...(signalIdentities || []),
153
- identity
154
- ],
155
- platform: platformNode === null || platformNode === void 0 ? void 0 : platformNode.attrs.name
147
+ signalIdentities: [...(signalIdentities || []), identity],
148
+ platform: platformNode?.attrs.name
156
149
  };
157
150
  return {
158
151
  creds: authUpdate,
159
152
  reply
160
153
  };
161
154
  };
162
- exports.configureSuccessfulPairing = configureSuccessfulPairing;
163
- const encodeSignedDeviceIdentity = (account, includeSignatureKey) => {
164
- var _a;
155
+ export const encodeSignedDeviceIdentity = (account, includeSignatureKey) => {
165
156
  account = { ...account };
166
157
  // set to null if we are not to include the signature key
167
158
  // or if we are including the signature key but it is empty
168
- if (!includeSignatureKey || !((_a = account.accountSignatureKey) === null || _a === void 0 ? void 0 : _a.length)) {
159
+ if (!includeSignatureKey || !account.accountSignatureKey?.length) {
169
160
  account.accountSignatureKey = null;
170
161
  }
171
- return WAProto_1.proto.ADVSignedDeviceIdentity
172
- .encode(account)
173
- .finish();
162
+ return proto.ADVSignedDeviceIdentity.encode(account).finish();
174
163
  };
175
- exports.encodeSignedDeviceIdentity = encodeSignedDeviceIdentity;
164
+ //# 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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"}