@softtynet/zca-js 2.1.3

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 (547) hide show
  1. package/.prettierrc +5 -0
  2. package/CODE_OF_CONDUCT.md +163 -0
  3. package/CONTRIBUTING.md +470 -0
  4. package/LICENSE +21 -0
  5. package/README.md +225 -0
  6. package/SECURITY.md +83 -0
  7. package/dist/Errors/ZaloApiError.d.ts +4 -0
  8. package/dist/Errors/ZaloApiError.js +7 -0
  9. package/dist/Errors/ZaloApiLoginQRAborted.d.ts +4 -0
  10. package/dist/Errors/ZaloApiLoginQRAborted.js +7 -0
  11. package/dist/Errors/ZaloApiLoginQRDeclined.d.ts +4 -0
  12. package/dist/Errors/ZaloApiLoginQRDeclined.js +7 -0
  13. package/dist/Errors/ZaloApiMissingImageMetadataGetter.d.ts +4 -0
  14. package/dist/Errors/ZaloApiMissingImageMetadataGetter.js +7 -0
  15. package/dist/Errors/index.d.ts +4 -0
  16. package/dist/Errors/index.js +4 -0
  17. package/dist/apis/acceptFriendRequest.d.ts +2 -0
  18. package/dist/apis/acceptFriendRequest.js +28 -0
  19. package/dist/apis/addGroupBlockedMember.d.ts +2 -0
  20. package/dist/apis/addGroupBlockedMember.js +28 -0
  21. package/dist/apis/addGroupDeputy.d.ts +2 -0
  22. package/dist/apis/addGroupDeputy.js +30 -0
  23. package/dist/apis/addPollOptions.d.ts +14 -0
  24. package/dist/apis/addPollOptions.js +26 -0
  25. package/dist/apis/addQuickMessage.d.ts +11 -0
  26. package/dist/apis/addQuickMessage.js +60 -0
  27. package/dist/apis/addReaction.d.ts +18 -0
  28. package/dist/apis/addReaction.js +294 -0
  29. package/dist/apis/addUnreadMark.d.ts +8 -0
  30. package/dist/apis/addUnreadMark.js +52 -0
  31. package/dist/apis/addUserToGroup.d.ts +5 -0
  32. package/dist/apis/addUserToGroup.js +34 -0
  33. package/dist/apis/blockUser.d.ts +2 -0
  34. package/dist/apis/blockUser.js +28 -0
  35. package/dist/apis/blockViewFeed.d.ts +2 -0
  36. package/dist/apis/blockViewFeed.js +30 -0
  37. package/dist/apis/changeAccountAvatar.d.ts +3 -0
  38. package/dist/apis/changeAccountAvatar.js +52 -0
  39. package/dist/apis/changeFriendAlias.d.ts +2 -0
  40. package/dist/apis/changeFriendAlias.js +27 -0
  41. package/dist/apis/changeGroupAvatar.d.ts +3 -0
  42. package/dist/apis/changeGroupAvatar.js +44 -0
  43. package/dist/apis/changeGroupName.d.ts +4 -0
  44. package/dist/apis/changeGroupName.js +32 -0
  45. package/dist/apis/changeGroupOwner.d.ts +4 -0
  46. package/dist/apis/changeGroupOwner.js +30 -0
  47. package/dist/apis/createAutoReply.d.ts +14 -0
  48. package/dist/apis/createAutoReply.js +37 -0
  49. package/dist/apis/createCatalog.d.ts +7 -0
  50. package/dist/apis/createCatalog.js +29 -0
  51. package/dist/apis/createGroup.d.ts +28 -0
  52. package/dist/apis/createGroup.js +43 -0
  53. package/dist/apis/createNote.d.ts +7 -0
  54. package/dist/apis/createNote.js +47 -0
  55. package/dist/apis/createPoll.d.ts +36 -0
  56. package/dist/apis/createPoll.js +40 -0
  57. package/dist/apis/createProductCatalog.d.ts +23 -0
  58. package/dist/apis/createProductCatalog.js +50 -0
  59. package/dist/apis/createReminder.d.ts +12 -0
  60. package/dist/apis/createReminder.js +63 -0
  61. package/dist/apis/custom.d.ts +9 -0
  62. package/dist/apis/custom.js +15 -0
  63. package/dist/apis/deleteAutoReply.d.ts +5 -0
  64. package/dist/apis/deleteAutoReply.js +29 -0
  65. package/dist/apis/deleteAvatar.d.ts +9 -0
  66. package/dist/apis/deleteAvatar.js +27 -0
  67. package/dist/apis/deleteCatalog.d.ts +2 -0
  68. package/dist/apis/deleteCatalog.js +28 -0
  69. package/dist/apis/deleteChat.d.ts +19 -0
  70. package/dist/apis/deleteChat.js +50 -0
  71. package/dist/apis/deleteGroupInviteBox.d.ts +9 -0
  72. package/dist/apis/deleteGroupInviteBox.js +27 -0
  73. package/dist/apis/deleteMessage.d.ts +14 -0
  74. package/dist/apis/deleteMessage.js +52 -0
  75. package/dist/apis/deleteProductCatalog.d.ts +10 -0
  76. package/dist/apis/deleteProductCatalog.js +31 -0
  77. package/dist/apis/disableGroupLink.d.ts +2 -0
  78. package/dist/apis/disableGroupLink.js +24 -0
  79. package/dist/apis/disperseGroup.d.ts +2 -0
  80. package/dist/apis/disperseGroup.js +28 -0
  81. package/dist/apis/editNote.d.ts +17 -0
  82. package/dist/apis/editNote.js +46 -0
  83. package/dist/apis/editReminder.d.ts +13 -0
  84. package/dist/apis/editReminder.js +61 -0
  85. package/dist/apis/enableGroupLink.d.ts +6 -0
  86. package/dist/apis/enableGroupLink.js +25 -0
  87. package/dist/apis/fetchAccountInfo.d.ts +5 -0
  88. package/dist/apis/fetchAccountInfo.js +10 -0
  89. package/dist/apis/findUser.d.ts +3 -0
  90. package/dist/apis/findUser.js +42 -0
  91. package/dist/apis/findUserByUsername.d.ts +3 -0
  92. package/dist/apis/findUserByUsername.js +27 -0
  93. package/dist/apis/forwardMessage.d.ts +24 -0
  94. package/dist/apis/forwardMessage.js +99 -0
  95. package/dist/apis/getAliasList.d.ts +8 -0
  96. package/dist/apis/getAliasList.js +27 -0
  97. package/dist/apis/getAllFriends.d.ts +3 -0
  98. package/dist/apis/getAllFriends.js +34 -0
  99. package/dist/apis/getAllGroups.d.ts +7 -0
  100. package/dist/apis/getAllGroups.js +10 -0
  101. package/dist/apis/getArchivedChatList.d.ts +5 -0
  102. package/dist/apis/getArchivedChatList.js +23 -0
  103. package/dist/apis/getAutoDeleteChat.d.ts +9 -0
  104. package/dist/apis/getAutoDeleteChat.js +21 -0
  105. package/dist/apis/getAutoReplyList.d.ts +6 -0
  106. package/dist/apis/getAutoReplyList.js +24 -0
  107. package/dist/apis/getAvatarList.d.ts +12 -0
  108. package/dist/apis/getAvatarList.js +28 -0
  109. package/dist/apis/getAvatarUrlProfile.d.ts +7 -0
  110. package/dist/apis/getAvatarUrlProfile.js +30 -0
  111. package/dist/apis/getBizAccount.d.ts +24 -0
  112. package/dist/apis/getBizAccount.js +27 -0
  113. package/dist/apis/getCatalogList.d.ts +18 -0
  114. package/dist/apis/getCatalogList.js +32 -0
  115. package/dist/apis/getCloseFriends.d.ts +3 -0
  116. package/dist/apis/getCloseFriends.js +20 -0
  117. package/dist/apis/getContext.d.ts +1 -0
  118. package/dist/apis/getContext.js +4 -0
  119. package/dist/apis/getCookie.d.ts +1 -0
  120. package/dist/apis/getCookie.js +9 -0
  121. package/dist/apis/getFriendBoardList.d.ts +5 -0
  122. package/dist/apis/getFriendBoardList.js +26 -0
  123. package/dist/apis/getFriendOnlines.d.ts +10 -0
  124. package/dist/apis/getFriendOnlines.js +35 -0
  125. package/dist/apis/getFriendRecommendations.d.ts +42 -0
  126. package/dist/apis/getFriendRecommendations.js +27 -0
  127. package/dist/apis/getFriendRequestStatus.d.ts +8 -0
  128. package/dist/apis/getFriendRequestStatus.js +25 -0
  129. package/dist/apis/getFullAvatar.d.ts +5 -0
  130. package/dist/apis/getFullAvatar.js +25 -0
  131. package/dist/apis/getGroupBlockedMember.d.ts +23 -0
  132. package/dist/apis/getGroupBlockedMember.js +29 -0
  133. package/dist/apis/getGroupChatHistory.d.ts +8 -0
  134. package/dist/apis/getGroupChatHistory.js +36 -0
  135. package/dist/apis/getGroupInfo.d.ts +16 -0
  136. package/dist/apis/getGroupInfo.js +32 -0
  137. package/dist/apis/getGroupInviteBoxInfo.d.ts +32 -0
  138. package/dist/apis/getGroupInviteBoxInfo.js +38 -0
  139. package/dist/apis/getGroupInviteBoxList.d.ts +38 -0
  140. package/dist/apis/getGroupInviteBoxList.js +31 -0
  141. package/dist/apis/getGroupLinkDetail.d.ts +9 -0
  142. package/dist/apis/getGroupLinkDetail.js +25 -0
  143. package/dist/apis/getGroupLinkInfo.d.ts +34 -0
  144. package/dist/apis/getGroupLinkInfo.js +28 -0
  145. package/dist/apis/getGroupMembersInfo.d.ts +17 -0
  146. package/dist/apis/getGroupMembersInfo.js +24 -0
  147. package/dist/apis/getHiddenConversations.d.ts +11 -0
  148. package/dist/apis/getHiddenConversations.js +23 -0
  149. package/dist/apis/getLabels.d.ts +7 -0
  150. package/dist/apis/getLabels.js +28 -0
  151. package/dist/apis/getListBoard.d.ts +21 -0
  152. package/dist/apis/getListBoard.js +45 -0
  153. package/dist/apis/getListReminder.d.ts +28 -0
  154. package/dist/apis/getListReminder.js +47 -0
  155. package/dist/apis/getMultiUsersByPhones.d.ts +5 -0
  156. package/dist/apis/getMultiUsersByPhones.js +39 -0
  157. package/dist/apis/getMute.d.ts +13 -0
  158. package/dist/apis/getMute.js +22 -0
  159. package/dist/apis/getOwnId.d.ts +1 -0
  160. package/dist/apis/getOwnId.js +4 -0
  161. package/dist/apis/getPendingGroupMembers.d.ts +11 -0
  162. package/dist/apis/getPendingGroupMembers.js +27 -0
  163. package/dist/apis/getPinConversations.d.ts +5 -0
  164. package/dist/apis/getPinConversations.js +22 -0
  165. package/dist/apis/getPollDetail.d.ts +3 -0
  166. package/dist/apis/getPollDetail.js +30 -0
  167. package/dist/apis/getProductCatalogList.d.ts +20 -0
  168. package/dist/apis/getProductCatalogList.js +33 -0
  169. package/dist/apis/getQR.d.ts +4 -0
  170. package/dist/apis/getQR.js +29 -0
  171. package/dist/apis/getQuickMessageList.d.ts +7 -0
  172. package/dist/apis/getQuickMessageList.js +24 -0
  173. package/dist/apis/getRelatedFriendGroup.d.ts +6 -0
  174. package/dist/apis/getRelatedFriendGroup.js +30 -0
  175. package/dist/apis/getReminder.d.ts +3 -0
  176. package/dist/apis/getReminder.js +25 -0
  177. package/dist/apis/getReminderResponses.d.ts +5 -0
  178. package/dist/apis/getReminderResponses.js +24 -0
  179. package/dist/apis/getSentFriendRequest.d.ts +18 -0
  180. package/dist/apis/getSentFriendRequest.js +24 -0
  181. package/dist/apis/getSettings.d.ts +3 -0
  182. package/dist/apis/getSettings.js +20 -0
  183. package/dist/apis/getStickerCategoryDetail.d.ts +3 -0
  184. package/dist/apis/getStickerCategoryDetail.js +24 -0
  185. package/dist/apis/getStickers.d.ts +1 -0
  186. package/dist/apis/getStickers.js +40 -0
  187. package/dist/apis/getStickersDetail.d.ts +3 -0
  188. package/dist/apis/getStickersDetail.js +40 -0
  189. package/dist/apis/getUnreadMark.d.ts +14 -0
  190. package/dist/apis/getUnreadMark.js +30 -0
  191. package/dist/apis/getUserInfo.d.ts +8 -0
  192. package/dist/apis/getUserInfo.js +44 -0
  193. package/dist/apis/inviteUserToGroups.d.ts +10 -0
  194. package/dist/apis/inviteUserToGroups.js +30 -0
  195. package/dist/apis/joinGroupInviteBox.d.ts +2 -0
  196. package/dist/apis/joinGroupInviteBox.js +25 -0
  197. package/dist/apis/joinGroupLink.d.ts +2 -0
  198. package/dist/apis/joinGroupLink.js +27 -0
  199. package/dist/apis/keepAlive.d.ts +4 -0
  200. package/dist/apis/keepAlive.js +22 -0
  201. package/dist/apis/lastOnline.d.ts +7 -0
  202. package/dist/apis/lastOnline.js +26 -0
  203. package/dist/apis/leaveGroup.d.ts +4 -0
  204. package/dist/apis/leaveGroup.js +33 -0
  205. package/dist/apis/listen.d.ts +102 -0
  206. package/dist/apis/listen.js +425 -0
  207. package/dist/apis/lockPoll.d.ts +2 -0
  208. package/dist/apis/lockPoll.js +28 -0
  209. package/dist/apis/login.d.ts +3 -0
  210. package/dist/apis/login.js +96 -0
  211. package/dist/apis/loginQR.d.ts +71 -0
  212. package/dist/apis/loginQR.js +338 -0
  213. package/dist/apis/parseLink.d.ts +21 -0
  214. package/dist/apis/parseLink.js +27 -0
  215. package/dist/apis/rejectFriendRequest.d.ts +2 -0
  216. package/dist/apis/rejectFriendRequest.js +27 -0
  217. package/dist/apis/removeFriend.d.ts +2 -0
  218. package/dist/apis/removeFriend.js +28 -0
  219. package/dist/apis/removeFriendAlias.d.ts +2 -0
  220. package/dist/apis/removeFriendAlias.js +24 -0
  221. package/dist/apis/removeGroupBlockedMember.d.ts +2 -0
  222. package/dist/apis/removeGroupBlockedMember.js +28 -0
  223. package/dist/apis/removeGroupDeputy.d.ts +2 -0
  224. package/dist/apis/removeGroupDeputy.js +30 -0
  225. package/dist/apis/removeQuickMessage.d.ts +5 -0
  226. package/dist/apis/removeQuickMessage.js +27 -0
  227. package/dist/apis/removeReminder.d.ts +3 -0
  228. package/dist/apis/removeReminder.js +40 -0
  229. package/dist/apis/removeUnreadMark.d.ts +8 -0
  230. package/dist/apis/removeUnreadMark.js +50 -0
  231. package/dist/apis/removeUserFromGroup.d.ts +4 -0
  232. package/dist/apis/removeUserFromGroup.js +34 -0
  233. package/dist/apis/resetHiddenConversPin.d.ts +2 -0
  234. package/dist/apis/resetHiddenConversPin.js +20 -0
  235. package/dist/apis/reuseAvatar.d.ts +2 -0
  236. package/dist/apis/reuseAvatar.js +26 -0
  237. package/dist/apis/reviewPendingMemberRequest.d.ts +14 -0
  238. package/dist/apis/reviewPendingMemberRequest.js +38 -0
  239. package/dist/apis/searchSticker.d.ts +3 -0
  240. package/dist/apis/searchSticker.js +28 -0
  241. package/dist/apis/sendBankCard.d.ts +9 -0
  242. package/dist/apis/sendBankCard.js +37 -0
  243. package/dist/apis/sendCard.d.ts +10 -0
  244. package/dist/apis/sendCard.js +59 -0
  245. package/dist/apis/sendDeliveredEvent.d.ts +16 -0
  246. package/dist/apis/sendDeliveredEvent.js +55 -0
  247. package/dist/apis/sendFriendRequest.d.ts +2 -0
  248. package/dist/apis/sendFriendRequest.js +39 -0
  249. package/dist/apis/sendLink.d.ts +10 -0
  250. package/dist/apis/sendLink.js +61 -0
  251. package/dist/apis/sendMessage.d.ts +99 -0
  252. package/dist/apis/sendMessage.js +452 -0
  253. package/dist/apis/sendReport.d.ts +17 -0
  254. package/dist/apis/sendReport.js +53 -0
  255. package/dist/apis/sendSeenEvent.d.ts +16 -0
  256. package/dist/apis/sendSeenEvent.js +63 -0
  257. package/dist/apis/sendSticker.d.ts +10 -0
  258. package/dist/apis/sendSticker.js +57 -0
  259. package/dist/apis/sendTypingEvent.d.ts +5 -0
  260. package/dist/apis/sendTypingEvent.js +33 -0
  261. package/dist/apis/sendVideo.d.ts +35 -0
  262. package/dist/apis/sendVideo.js +118 -0
  263. package/dist/apis/sendVoice.d.ts +12 -0
  264. package/dist/apis/sendVoice.js +73 -0
  265. package/dist/apis/setHiddenConversations.d.ts +3 -0
  266. package/dist/apis/setHiddenConversations.js +39 -0
  267. package/dist/apis/setMute.d.ts +20 -0
  268. package/dist/apis/setMute.js +67 -0
  269. package/dist/apis/setPinnedConversations.d.ts +3 -0
  270. package/dist/apis/setPinnedConversations.js +34 -0
  271. package/dist/apis/sharePoll.d.ts +2 -0
  272. package/dist/apis/sharePoll.js +28 -0
  273. package/dist/apis/unblockUser.d.ts +2 -0
  274. package/dist/apis/unblockUser.js +28 -0
  275. package/dist/apis/undo.d.ts +9 -0
  276. package/dist/apis/undo.js +42 -0
  277. package/dist/apis/undoFriendRequest.d.ts +2 -0
  278. package/dist/apis/undoFriendRequest.js +27 -0
  279. package/dist/apis/updateActiveStatus.d.ts +4 -0
  280. package/dist/apis/updateActiveStatus.js +27 -0
  281. package/dist/apis/updateArchivedChatList.d.ts +10 -0
  282. package/dist/apis/updateArchivedChatList.js +34 -0
  283. package/dist/apis/updateAutoDeleteChat.d.ts +9 -0
  284. package/dist/apis/updateAutoDeleteChat.js +40 -0
  285. package/dist/apis/updateAutoReply.d.ts +15 -0
  286. package/dist/apis/updateAutoReply.js +38 -0
  287. package/dist/apis/updateCatalog.d.ts +11 -0
  288. package/dist/apis/updateCatalog.js +30 -0
  289. package/dist/apis/updateGroupSettings.d.ts +40 -0
  290. package/dist/apis/updateGroupSettings.js +43 -0
  291. package/dist/apis/updateHiddenConversPin.d.ts +2 -0
  292. package/dist/apis/updateHiddenConversPin.js +30 -0
  293. package/dist/apis/updateLabels.d.ts +15 -0
  294. package/dist/apis/updateLabels.js +34 -0
  295. package/dist/apis/updateLang.d.ts +6 -0
  296. package/dist/apis/updateLang.js +30 -0
  297. package/dist/apis/updateProductCatalog.d.ts +25 -0
  298. package/dist/apis/updateProductCatalog.js +51 -0
  299. package/dist/apis/updateProfile.d.ts +20 -0
  300. package/dist/apis/updateProfile.js +43 -0
  301. package/dist/apis/updateProfileBio.d.ts +2 -0
  302. package/dist/apis/updateProfileBio.js +27 -0
  303. package/dist/apis/updateQuickMessage.d.ts +11 -0
  304. package/dist/apis/updateQuickMessage.js +61 -0
  305. package/dist/apis/updateSettings.d.ts +16 -0
  306. package/dist/apis/updateSettings.js +90 -0
  307. package/dist/apis/upgradeGroupToCommunity.d.ts +2 -0
  308. package/dist/apis/upgradeGroupToCommunity.js +27 -0
  309. package/dist/apis/uploadAttachment.d.ts +50 -0
  310. package/dist/apis/uploadAttachment.js +197 -0
  311. package/dist/apis/uploadProductPhoto.d.ts +14 -0
  312. package/dist/apis/uploadProductPhoto.js +50 -0
  313. package/dist/apis/votePoll.d.ts +5 -0
  314. package/dist/apis/votePoll.js +29 -0
  315. package/dist/apis.d.ts +299 -0
  316. package/dist/apis.js +299 -0
  317. package/dist/cjs/Errors/ZaloApiError.cjs +11 -0
  318. package/dist/cjs/Errors/ZaloApiLoginQRAborted.cjs +12 -0
  319. package/dist/cjs/Errors/ZaloApiLoginQRDeclined.cjs +12 -0
  320. package/dist/cjs/Errors/ZaloApiMissingImageMetadataGetter.cjs +12 -0
  321. package/dist/cjs/apis/acceptFriendRequest.cjs +33 -0
  322. package/dist/cjs/apis/addGroupBlockedMember.cjs +33 -0
  323. package/dist/cjs/apis/addGroupDeputy.cjs +35 -0
  324. package/dist/cjs/apis/addPollOptions.cjs +31 -0
  325. package/dist/cjs/apis/addQuickMessage.cjs +65 -0
  326. package/dist/cjs/apis/addReaction.cjs +307 -0
  327. package/dist/cjs/apis/addUnreadMark.cjs +65 -0
  328. package/dist/cjs/apis/addUserToGroup.cjs +39 -0
  329. package/dist/cjs/apis/blockUser.cjs +33 -0
  330. package/dist/cjs/apis/blockViewFeed.cjs +35 -0
  331. package/dist/cjs/apis/changeAccountAvatar.cjs +57 -0
  332. package/dist/cjs/apis/changeFriendAlias.cjs +32 -0
  333. package/dist/cjs/apis/changeGroupAvatar.cjs +49 -0
  334. package/dist/cjs/apis/changeGroupName.cjs +37 -0
  335. package/dist/cjs/apis/changeGroupOwner.cjs +35 -0
  336. package/dist/cjs/apis/createAutoReply.cjs +42 -0
  337. package/dist/cjs/apis/createCatalog.cjs +34 -0
  338. package/dist/cjs/apis/createGroup.cjs +48 -0
  339. package/dist/cjs/apis/createNote.cjs +52 -0
  340. package/dist/cjs/apis/createPoll.cjs +45 -0
  341. package/dist/cjs/apis/createProductCatalog.cjs +55 -0
  342. package/dist/cjs/apis/createReminder.cjs +76 -0
  343. package/dist/cjs/apis/custom.cjs +19 -0
  344. package/dist/cjs/apis/deleteAutoReply.cjs +34 -0
  345. package/dist/cjs/apis/deleteAvatar.cjs +32 -0
  346. package/dist/cjs/apis/deleteCatalog.cjs +33 -0
  347. package/dist/cjs/apis/deleteChat.cjs +63 -0
  348. package/dist/cjs/apis/deleteGroupInviteBox.cjs +32 -0
  349. package/dist/cjs/apis/deleteMessage.cjs +65 -0
  350. package/dist/cjs/apis/deleteProductCatalog.cjs +36 -0
  351. package/dist/cjs/apis/disableGroupLink.cjs +29 -0
  352. package/dist/cjs/apis/disperseGroup.cjs +33 -0
  353. package/dist/cjs/apis/editNote.cjs +51 -0
  354. package/dist/cjs/apis/editReminder.cjs +74 -0
  355. package/dist/cjs/apis/enableGroupLink.cjs +30 -0
  356. package/dist/cjs/apis/fetchAccountInfo.cjs +15 -0
  357. package/dist/cjs/apis/findUser.cjs +55 -0
  358. package/dist/cjs/apis/findUserByUsername.cjs +40 -0
  359. package/dist/cjs/apis/forwardMessage.cjs +112 -0
  360. package/dist/cjs/apis/getAliasList.cjs +32 -0
  361. package/dist/cjs/apis/getAllFriends.cjs +47 -0
  362. package/dist/cjs/apis/getAllGroups.cjs +15 -0
  363. package/dist/cjs/apis/getArchivedChatList.cjs +28 -0
  364. package/dist/cjs/apis/getAutoDeleteChat.cjs +26 -0
  365. package/dist/cjs/apis/getAutoReplyList.cjs +29 -0
  366. package/dist/cjs/apis/getAvatarList.cjs +33 -0
  367. package/dist/cjs/apis/getAvatarUrlProfile.cjs +43 -0
  368. package/dist/cjs/apis/getBizAccount.cjs +32 -0
  369. package/dist/cjs/apis/getCatalogList.cjs +37 -0
  370. package/dist/cjs/apis/getCloseFriends.cjs +25 -0
  371. package/dist/cjs/apis/getContext.cjs +9 -0
  372. package/dist/cjs/apis/getCookie.cjs +14 -0
  373. package/dist/cjs/apis/getFriendBoardList.cjs +31 -0
  374. package/dist/cjs/apis/getFriendOnlines.cjs +40 -0
  375. package/dist/cjs/apis/getFriendRecommendations.cjs +32 -0
  376. package/dist/cjs/apis/getFriendRequestStatus.cjs +30 -0
  377. package/dist/cjs/apis/getFullAvatar.cjs +30 -0
  378. package/dist/cjs/apis/getGroupBlockedMember.cjs +34 -0
  379. package/dist/cjs/apis/getGroupChatHistory.cjs +50 -0
  380. package/dist/cjs/apis/getGroupInfo.cjs +37 -0
  381. package/dist/cjs/apis/getGroupInviteBoxInfo.cjs +43 -0
  382. package/dist/cjs/apis/getGroupInviteBoxList.cjs +36 -0
  383. package/dist/cjs/apis/getGroupLinkDetail.cjs +30 -0
  384. package/dist/cjs/apis/getGroupLinkInfo.cjs +33 -0
  385. package/dist/cjs/apis/getGroupMembersInfo.cjs +29 -0
  386. package/dist/cjs/apis/getHiddenConversations.cjs +28 -0
  387. package/dist/cjs/apis/getLabels.cjs +33 -0
  388. package/dist/cjs/apis/getListBoard.cjs +58 -0
  389. package/dist/cjs/apis/getListReminder.cjs +60 -0
  390. package/dist/cjs/apis/getMultiUsersByPhones.cjs +52 -0
  391. package/dist/cjs/apis/getMute.cjs +27 -0
  392. package/dist/cjs/apis/getOwnId.cjs +9 -0
  393. package/dist/cjs/apis/getPendingGroupMembers.cjs +32 -0
  394. package/dist/cjs/apis/getPinConversations.cjs +27 -0
  395. package/dist/cjs/apis/getPollDetail.cjs +35 -0
  396. package/dist/cjs/apis/getProductCatalogList.cjs +38 -0
  397. package/dist/cjs/apis/getQR.cjs +34 -0
  398. package/dist/cjs/apis/getQuickMessageList.cjs +29 -0
  399. package/dist/cjs/apis/getRelatedFriendGroup.cjs +35 -0
  400. package/dist/cjs/apis/getReminder.cjs +30 -0
  401. package/dist/cjs/apis/getReminderResponses.cjs +29 -0
  402. package/dist/cjs/apis/getSentFriendRequest.cjs +29 -0
  403. package/dist/cjs/apis/getSettings.cjs +25 -0
  404. package/dist/cjs/apis/getStickerCategoryDetail.cjs +29 -0
  405. package/dist/cjs/apis/getStickers.cjs +45 -0
  406. package/dist/cjs/apis/getStickersDetail.cjs +45 -0
  407. package/dist/cjs/apis/getUnreadMark.cjs +35 -0
  408. package/dist/cjs/apis/getUserInfo.cjs +57 -0
  409. package/dist/cjs/apis/inviteUserToGroups.cjs +35 -0
  410. package/dist/cjs/apis/joinGroupInviteBox.cjs +30 -0
  411. package/dist/cjs/apis/joinGroupLink.cjs +32 -0
  412. package/dist/cjs/apis/keepAlive.cjs +27 -0
  413. package/dist/cjs/apis/lastOnline.cjs +31 -0
  414. package/dist/cjs/apis/leaveGroup.cjs +38 -0
  415. package/dist/cjs/apis/listen.cjs +439 -0
  416. package/dist/cjs/apis/lockPoll.cjs +33 -0
  417. package/dist/cjs/apis/login.cjs +102 -0
  418. package/dist/cjs/apis/loginQR.cjs +343 -0
  419. package/dist/cjs/apis/parseLink.cjs +32 -0
  420. package/dist/cjs/apis/rejectFriendRequest.cjs +32 -0
  421. package/dist/cjs/apis/removeFriend.cjs +33 -0
  422. package/dist/cjs/apis/removeFriendAlias.cjs +29 -0
  423. package/dist/cjs/apis/removeGroupBlockedMember.cjs +33 -0
  424. package/dist/cjs/apis/removeGroupDeputy.cjs +35 -0
  425. package/dist/cjs/apis/removeQuickMessage.cjs +32 -0
  426. package/dist/cjs/apis/removeReminder.cjs +53 -0
  427. package/dist/cjs/apis/removeUnreadMark.cjs +63 -0
  428. package/dist/cjs/apis/removeUserFromGroup.cjs +39 -0
  429. package/dist/cjs/apis/resetHiddenConversPin.cjs +25 -0
  430. package/dist/cjs/apis/reuseAvatar.cjs +31 -0
  431. package/dist/cjs/apis/reviewPendingMemberRequest.cjs +43 -0
  432. package/dist/cjs/apis/searchSticker.cjs +33 -0
  433. package/dist/cjs/apis/sendBankCard.cjs +50 -0
  434. package/dist/cjs/apis/sendCard.cjs +72 -0
  435. package/dist/cjs/apis/sendDeliveredEvent.cjs +68 -0
  436. package/dist/cjs/apis/sendFriendRequest.cjs +44 -0
  437. package/dist/cjs/apis/sendLink.cjs +74 -0
  438. package/dist/cjs/apis/sendMessage.cjs +465 -0
  439. package/dist/cjs/apis/sendReport.cjs +66 -0
  440. package/dist/cjs/apis/sendSeenEvent.cjs +76 -0
  441. package/dist/cjs/apis/sendSticker.cjs +70 -0
  442. package/dist/cjs/apis/sendTypingEvent.cjs +46 -0
  443. package/dist/cjs/apis/sendVideo.cjs +131 -0
  444. package/dist/cjs/apis/sendVoice.cjs +86 -0
  445. package/dist/cjs/apis/setHiddenConversations.cjs +52 -0
  446. package/dist/cjs/apis/setMute.cjs +80 -0
  447. package/dist/cjs/apis/setPinnedConversations.cjs +47 -0
  448. package/dist/cjs/apis/sharePoll.cjs +33 -0
  449. package/dist/cjs/apis/unblockUser.cjs +33 -0
  450. package/dist/cjs/apis/undo.cjs +55 -0
  451. package/dist/cjs/apis/undoFriendRequest.cjs +32 -0
  452. package/dist/cjs/apis/updateActiveStatus.cjs +32 -0
  453. package/dist/cjs/apis/updateArchivedChatList.cjs +39 -0
  454. package/dist/cjs/apis/updateAutoDeleteChat.cjs +53 -0
  455. package/dist/cjs/apis/updateAutoReply.cjs +43 -0
  456. package/dist/cjs/apis/updateCatalog.cjs +35 -0
  457. package/dist/cjs/apis/updateGroupSettings.cjs +48 -0
  458. package/dist/cjs/apis/updateHiddenConversPin.cjs +35 -0
  459. package/dist/cjs/apis/updateLabels.cjs +39 -0
  460. package/dist/cjs/apis/updateLang.cjs +35 -0
  461. package/dist/cjs/apis/updateProductCatalog.cjs +56 -0
  462. package/dist/cjs/apis/updateProfile.cjs +48 -0
  463. package/dist/cjs/apis/updateProfileBio.cjs +32 -0
  464. package/dist/cjs/apis/updateQuickMessage.cjs +66 -0
  465. package/dist/cjs/apis/updateSettings.cjs +95 -0
  466. package/dist/cjs/apis/upgradeGroupToCommunity.cjs +32 -0
  467. package/dist/cjs/apis/uploadAttachment.cjs +210 -0
  468. package/dist/cjs/apis/uploadProductPhoto.cjs +55 -0
  469. package/dist/cjs/apis/votePoll.cjs +34 -0
  470. package/dist/cjs/apis.cjs +304 -0
  471. package/dist/cjs/context.cjs +34 -0
  472. package/dist/cjs/index.cjs +158 -0
  473. package/dist/cjs/models/AutoReply.cjs +9 -0
  474. package/dist/cjs/models/Board.cjs +8 -0
  475. package/dist/cjs/models/DeliveredMessage.cjs +23 -0
  476. package/dist/cjs/models/Enum.cjs +258 -0
  477. package/dist/cjs/models/FriendEvent.cjs +87 -0
  478. package/dist/cjs/models/Group.cjs +13 -0
  479. package/dist/cjs/models/GroupEvent.cjs +94 -0
  480. package/dist/cjs/models/Message.cjs +35 -0
  481. package/dist/cjs/models/Reaction.cjs +74 -0
  482. package/dist/cjs/models/Reminder.cjs +9 -0
  483. package/dist/cjs/models/SeenMessage.cjs +23 -0
  484. package/dist/cjs/models/Typing.cjs +23 -0
  485. package/dist/cjs/models/Undo.cjs +16 -0
  486. package/dist/cjs/models/ZBusiness.cjs +39 -0
  487. package/dist/cjs/update.cjs +34 -0
  488. package/dist/cjs/utils.cjs +731 -0
  489. package/dist/cjs/zalo.cjs +112 -0
  490. package/dist/context.d.ts +179 -0
  491. package/dist/context.js +28 -0
  492. package/dist/index.d.ts +157 -0
  493. package/dist/index.js +14 -0
  494. package/dist/models/Attachment.d.ts +9 -0
  495. package/dist/models/Attachment.js +1 -0
  496. package/dist/models/AutoReply.d.ts +20 -0
  497. package/dist/models/AutoReply.js +7 -0
  498. package/dist/models/Board.d.ts +60 -0
  499. package/dist/models/Board.js +6 -0
  500. package/dist/models/Catalog.d.ts +16 -0
  501. package/dist/models/Catalog.js +1 -0
  502. package/dist/models/DeliveredMessage.d.ts +27 -0
  503. package/dist/models/DeliveredMessage.js +17 -0
  504. package/dist/models/Enum.d.ts +251 -0
  505. package/dist/models/Enum.js +256 -0
  506. package/dist/models/FriendEvent.d.ts +107 -0
  507. package/dist/models/FriendEvent.js +83 -0
  508. package/dist/models/Group.d.ts +125 -0
  509. package/dist/models/Group.js +11 -0
  510. package/dist/models/GroupEvent.d.ts +178 -0
  511. package/dist/models/GroupEvent.js +90 -0
  512. package/dist/models/Label.d.ts +10 -0
  513. package/dist/models/Label.js +1 -0
  514. package/dist/models/Message.d.ts +91 -0
  515. package/dist/models/Message.js +29 -0
  516. package/dist/models/ProductCatalog.d.ts +17 -0
  517. package/dist/models/ProductCatalog.js +1 -0
  518. package/dist/models/QuickMessage.d.ts +25 -0
  519. package/dist/models/QuickMessage.js +1 -0
  520. package/dist/models/Reaction.d.ts +85 -0
  521. package/dist/models/Reaction.js +70 -0
  522. package/dist/models/Reminder.d.ts +51 -0
  523. package/dist/models/Reminder.js +7 -0
  524. package/dist/models/SeenMessage.d.ts +26 -0
  525. package/dist/models/SeenMessage.js +17 -0
  526. package/dist/models/Sticker.d.ts +27 -0
  527. package/dist/models/Sticker.js +1 -0
  528. package/dist/models/Typing.d.ts +24 -0
  529. package/dist/models/Typing.js +17 -0
  530. package/dist/models/Undo.d.ts +34 -0
  531. package/dist/models/Undo.js +12 -0
  532. package/dist/models/User.d.ts +62 -0
  533. package/dist/models/User.js +1 -0
  534. package/dist/models/ZBusiness.d.ts +22 -0
  535. package/dist/models/ZBusiness.js +35 -0
  536. package/dist/models/index.d.ts +21 -0
  537. package/dist/models/index.js +21 -0
  538. package/dist/update.d.ts +2 -0
  539. package/dist/update.js +29 -0
  540. package/dist/utils.d.ts +190 -0
  541. package/dist/utils.js +746 -0
  542. package/dist/zalo.d.ts +41 -0
  543. package/dist/zalo.js +107 -0
  544. package/eslint.config.js +21 -0
  545. package/index.d.ts +2 -0
  546. package/package.json +78 -0
  547. package/rollup.config.js +28 -0
@@ -0,0 +1,343 @@
1
+ 'use strict';
2
+
3
+ var toughCookie = require('tough-cookie');
4
+ var fs = require('node:fs/promises');
5
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
6
+ var utils = require('../utils.cjs');
7
+ var ZaloApiLoginQRAborted = require('../Errors/ZaloApiLoginQRAborted.cjs');
8
+ var ZaloApiLoginQRDeclined = require('../Errors/ZaloApiLoginQRDeclined.cjs');
9
+
10
+ /**
11
+ * Tạo bộ header Sec-CH-UA dùng chung cho toàn bộ các request trong luồng đăng nhập QR.
12
+ *
13
+ * Trước đây 8 hàm con trong loginQR đều copy-paste cùng một bộ header với giá trị
14
+ * `sec-ch-ua-platform: "Windows"` bị hardcode cứng. Điều này gây ra mâu thuẫn fingerprint
15
+ * (Browser Mismatch) khi người dùng truyền vào User-Agent của Mac hoặc Linux,
16
+ * khiến hệ thống chống bot của Zalo phát hiện và ban session ngay lập tức.
17
+ *
18
+ * Giải pháp: Tất cả giá trị sec-ch-ua-* đều được suy luận ĐỘNG từ ctx.userAgent,
19
+ * đảm bảo nhất quán 100% giữa User-Agent và các Client Hint headers.
20
+ *
21
+ * @param ctx - Context chứa ctx.userAgent đã được gán trước khi gọi hàm này
22
+ * @param extra - Các header bổ sung đặc thù cho từng request (sec-fetch-dest, Referer...)
23
+ */
24
+ function getLoginHeaders(ctx, extra) {
25
+ // Suy luận platform từ UA: "Windows" | "macOS" | "Linux" (mặc định "Windows" nếu không nhận ra)
26
+ const platform = utils.getPlatformFromUA(ctx.userAgent);
27
+ // Trích xuất phiên bản Chrome major từ UA (ví dụ: "130"), fallback về "130" nếu không phải Chrome
28
+ const chromeVer = utils.getChromeVersionFromUA(ctx.userAgent);
29
+ return Object.assign({ "accept-language": "vi-VN,vi;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-US;q=0.6,en;q=0.5",
30
+ // sec-ch-ua phải khớp với phiên bản Chrome trong User-Agent
31
+ "sec-ch-ua": `"Chromium";v="${chromeVer}", "Google Chrome";v="${chromeVer}", "Not?A_Brand";v="99"`,
32
+ // Luôn là desktop (?0) vì Zalo Web không hỗ trợ mobile
33
+ "sec-ch-ua-mobile": "?0",
34
+ // sec-ch-ua-platform PHẢI nhất quán với User-Agent — đây là nguyên nhân gốc rễ gây ban session
35
+ "sec-ch-ua-platform": `"${platform}"` }, extra);
36
+ }
37
+ exports.LoginQRCallbackEventType = void 0;
38
+ (function (LoginQRCallbackEventType) {
39
+ LoginQRCallbackEventType[LoginQRCallbackEventType["QRCodeGenerated"] = 0] = "QRCodeGenerated";
40
+ LoginQRCallbackEventType[LoginQRCallbackEventType["QRCodeExpired"] = 1] = "QRCodeExpired";
41
+ LoginQRCallbackEventType[LoginQRCallbackEventType["QRCodeScanned"] = 2] = "QRCodeScanned";
42
+ LoginQRCallbackEventType[LoginQRCallbackEventType["QRCodeDeclined"] = 3] = "QRCodeDeclined";
43
+ LoginQRCallbackEventType[LoginQRCallbackEventType["GotLoginInfo"] = 4] = "GotLoginInfo";
44
+ })(exports.LoginQRCallbackEventType || (exports.LoginQRCallbackEventType = {}));
45
+ async function loadLoginPage(ctx) {
46
+ const response = await utils.request(ctx, "https://id.zalo.me/account?continue=https%3A%2F%2Fchat.zalo.me%2F", {
47
+ headers: Object.assign({ accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "cache-control": "max-age=0", priority: "u=0, i" }, getLoginHeaders(ctx, {
48
+ "sec-fetch-dest": "document",
49
+ "sec-fetch-mode": "navigate",
50
+ "sec-fetch-site": "same-site",
51
+ "sec-fetch-user": "?1",
52
+ "upgrade-insecure-requests": "1",
53
+ Referer: "https://chat.zalo.me/",
54
+ "Referrer-Policy": "strict-origin-when-cross-origin",
55
+ })),
56
+ method: "GET",
57
+ });
58
+ const html = await response.text();
59
+ const regex = /https:\/\/stc-zlogin\.zdn\.vn\/main-([\d.]+)\.js/;
60
+ const match = html.match(regex);
61
+ return match === null || match === void 0 ? void 0 : match[1];
62
+ }
63
+ async function getLoginInfo(ctx, version) {
64
+ const form = new URLSearchParams();
65
+ form.append("continue", "https://zalo.me/pc");
66
+ form.append("v", version);
67
+ return await utils.request(ctx, "https://id.zalo.me/account/logininfo", {
68
+ headers: Object.assign({ accept: "*/*", "content-type": "application/x-www-form-urlencoded", priority: "u=1, i" }, getLoginHeaders(ctx, {
69
+ "sec-fetch-dest": "empty",
70
+ "sec-fetch-mode": "cors",
71
+ "sec-fetch-site": "same-origin",
72
+ Referer: "https://id.zalo.me/account?continue=https%3A%2F%2Fzalo.me%2Fpc",
73
+ "Referrer-Policy": "strict-origin-when-cross-origin",
74
+ })),
75
+ body: form,
76
+ method: "POST",
77
+ })
78
+ .then((res) => res.json())
79
+ .catch(utils.logger(ctx).error);
80
+ }
81
+ async function verifyClient(ctx, version) {
82
+ const form = new URLSearchParams();
83
+ form.append("type", "device");
84
+ form.append("continue", "https://zalo.me/pc");
85
+ form.append("v", version);
86
+ return await utils.request(ctx, "https://id.zalo.me/account/verify-client", {
87
+ headers: Object.assign({ accept: "*/*", "content-type": "application/x-www-form-urlencoded", priority: "u=1, i" }, getLoginHeaders(ctx, {
88
+ "sec-fetch-dest": "empty",
89
+ "sec-fetch-mode": "cors",
90
+ "sec-fetch-site": "same-origin",
91
+ Referer: "https://id.zalo.me/account?continue=https%3A%2F%2Fzalo.me%2Fpc",
92
+ "Referrer-Policy": "strict-origin-when-cross-origin",
93
+ })),
94
+ body: form,
95
+ method: "POST",
96
+ })
97
+ .then((res) => res.json())
98
+ .catch(utils.logger(ctx).error);
99
+ }
100
+ async function generate(ctx, version) {
101
+ const form = new URLSearchParams();
102
+ form.append("continue", "https://zalo.me/pc");
103
+ form.append("v", version);
104
+ return await utils.request(ctx, "https://id.zalo.me/account/authen/qr/generate", {
105
+ headers: Object.assign({ accept: "*/*", "content-type": "application/x-www-form-urlencoded", priority: "u=1, i" }, getLoginHeaders(ctx, {
106
+ "sec-fetch-dest": "empty",
107
+ "sec-fetch-mode": "cors",
108
+ "sec-fetch-site": "same-origin",
109
+ Referer: "https://id.zalo.me/account?continue=https%3A%2F%2Fzalo.me%2Fpc",
110
+ "Referrer-Policy": "strict-origin-when-cross-origin",
111
+ })),
112
+ body: form,
113
+ method: "POST",
114
+ })
115
+ .then((res) => res.json())
116
+ .catch(utils.logger(ctx).error);
117
+ }
118
+ async function saveQRCodeToFile(filepath, imageData) {
119
+ await fs.writeFile(filepath, imageData, "base64");
120
+ }
121
+ async function waitingScan(ctx, version, code, signal) {
122
+ const form = new URLSearchParams();
123
+ form.append("code", code);
124
+ form.append("continue", "https://chat.zalo.me/");
125
+ form.append("v", version);
126
+ return await utils.request(ctx, "https://id.zalo.me/account/authen/qr/waiting-scan", {
127
+ headers: Object.assign({ accept: "*/*", "content-type": "application/x-www-form-urlencoded", priority: "u=1, i" }, getLoginHeaders(ctx, {
128
+ "sec-fetch-dest": "empty",
129
+ "sec-fetch-mode": "cors",
130
+ "sec-fetch-site": "same-origin",
131
+ Referer: "https://id.zalo.me/account?continue=https%3A%2F%2Fchat.zalo.me%2F",
132
+ "Referrer-Policy": "strict-origin-when-cross-origin",
133
+ })),
134
+ body: form,
135
+ method: "POST",
136
+ signal,
137
+ })
138
+ .then((res) => res.json())
139
+ .then((data) => {
140
+ if (data.error_code == 8) {
141
+ return waitingScan(ctx, version, code, signal);
142
+ }
143
+ return data;
144
+ })
145
+ .catch((e) => {
146
+ if (!signal.aborted)
147
+ utils.logger(ctx).error(e);
148
+ });
149
+ }
150
+ async function waitingConfirm(ctx, version, code, signal) {
151
+ const form = new URLSearchParams();
152
+ form.append("code", code);
153
+ form.append("gToken", "");
154
+ form.append("gAction", "CONFIRM_QR");
155
+ form.append("continue", "https://chat.zalo.me/");
156
+ form.append("v", version);
157
+ utils.logger(ctx).info("Please confirm on your phone");
158
+ return await utils.request(ctx, "https://id.zalo.me/account/authen/qr/waiting-confirm", {
159
+ headers: Object.assign({ accept: "*/*", "content-type": "application/x-www-form-urlencoded", priority: "u=1, i" }, getLoginHeaders(ctx, {
160
+ "sec-fetch-dest": "empty",
161
+ "sec-fetch-mode": "cors",
162
+ "sec-fetch-site": "same-origin",
163
+ Referer: "https://id.zalo.me/account?continue=https%3A%2F%2Fchat.zalo.me%2F",
164
+ "Referrer-Policy": "strict-origin-when-cross-origin",
165
+ })),
166
+ body: form,
167
+ method: "POST",
168
+ signal,
169
+ })
170
+ .then((res) => res.json())
171
+ .then((data) => {
172
+ if (data.error_code == 8) {
173
+ return waitingConfirm(ctx, version, code, signal);
174
+ }
175
+ return data;
176
+ })
177
+ .catch((e) => {
178
+ if (!signal.aborted)
179
+ utils.logger(ctx).error(e);
180
+ });
181
+ }
182
+ async function checkSession(ctx) {
183
+ return await utils.request(ctx, "https://id.zalo.me/account/checksession?continue=https%3A%2F%2Fchat.zalo.me%2Findex.html", {
184
+ headers: Object.assign({ accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", priority: "u=0, i" }, getLoginHeaders(ctx, {
185
+ "sec-fetch-dest": "document",
186
+ "sec-fetch-mode": "navigate",
187
+ "sec-fetch-site": "same-origin",
188
+ "upgrade-insecure-requests": "1",
189
+ Referer: "https://id.zalo.me/account?continue=https%3A%2F%2Fchat.zalo.me%2F",
190
+ "Referrer-Policy": "strict-origin-when-cross-origin",
191
+ })),
192
+ redirect: "manual",
193
+ method: "GET",
194
+ }).catch(utils.logger(ctx).error);
195
+ }
196
+ async function getUserInfo(ctx) {
197
+ return await utils.request(ctx, "https://jr.chat.zalo.me/jr/userinfo", {
198
+ headers: Object.assign({ accept: "*/*", priority: "u=1, i" }, getLoginHeaders(ctx, {
199
+ "sec-fetch-dest": "empty",
200
+ "sec-fetch-mode": "cors",
201
+ "sec-fetch-site": "same-site",
202
+ Referer: "https://chat.zalo.me/",
203
+ "Referrer-Policy": "strict-origin-when-cross-origin",
204
+ })),
205
+ method: "GET",
206
+ })
207
+ .then((res) => res.json())
208
+ .catch(utils.logger(ctx).error);
209
+ }
210
+ async function loginQR(ctx, options, callback) {
211
+ ctx.cookie = new toughCookie.CookieJar();
212
+ ctx.userAgent = options.userAgent;
213
+ return new Promise(async (resolve, reject) => {
214
+ var _a;
215
+ const controller = new AbortController();
216
+ let qrTimeout = null;
217
+ function cleanUp() {
218
+ controller.abort();
219
+ if (qrTimeout) {
220
+ clearTimeout(qrTimeout);
221
+ qrTimeout = null;
222
+ }
223
+ }
224
+ try {
225
+ function retry() {
226
+ cleanUp();
227
+ return resolve(loginQR(ctx, options, callback));
228
+ }
229
+ function abort() {
230
+ cleanUp();
231
+ return reject(new ZaloApiLoginQRAborted.ZaloApiLoginQRAborted());
232
+ }
233
+ if (ctx.options.logging)
234
+ console.log();
235
+ const loginVersion = await loadLoginPage(ctx);
236
+ if (!loginVersion)
237
+ throw new ZaloApiError.ZaloApiError("Cannot get API login version");
238
+ utils.logger(ctx).info("Got login version:", loginVersion);
239
+ await getLoginInfo(ctx, loginVersion);
240
+ await verifyClient(ctx, loginVersion);
241
+ const qrGenResult = await generate(ctx, loginVersion);
242
+ if (!qrGenResult || !qrGenResult.data)
243
+ throw new ZaloApiError.ZaloApiError(`Unable to generate QRCode\nResponse: ${JSON.stringify(qrGenResult, null, 2)}`);
244
+ const qrData = qrGenResult.data;
245
+ if (callback) {
246
+ callback({
247
+ type: exports.LoginQRCallbackEventType.QRCodeGenerated,
248
+ data: Object.assign(Object.assign({}, qrGenResult.data), { image: qrGenResult.data.image.replace(/^data:image\/png;base64,/, "") }),
249
+ actions: {
250
+ async saveToFile(qrPath) {
251
+ var _a;
252
+ if (qrPath === void 0) { qrPath = (_a = options.qrPath) !== null && _a !== void 0 ? _a : "qr.png"; }
253
+ await saveQRCodeToFile(qrPath, qrData.image.replace(/^data:image\/png;base64,/, ""));
254
+ utils.logger(ctx).info("Scan the QR code at", `'${qrPath}'`, "to proceed with login");
255
+ },
256
+ retry,
257
+ abort,
258
+ },
259
+ });
260
+ }
261
+ else {
262
+ const qrPath = (_a = options.qrPath) !== null && _a !== void 0 ? _a : "qr.png";
263
+ await saveQRCodeToFile(qrPath, qrData.image.replace(/^data:image\/png;base64,/, ""));
264
+ utils.logger(ctx).info("Scan the QR code at", `'${qrPath}'`, "to proceed with login");
265
+ }
266
+ qrTimeout = setTimeout(() => {
267
+ cleanUp();
268
+ utils.logger(ctx).info("QR expired!");
269
+ if (callback) {
270
+ callback({
271
+ type: exports.LoginQRCallbackEventType.QRCodeExpired,
272
+ data: null,
273
+ actions: {
274
+ retry,
275
+ abort,
276
+ },
277
+ });
278
+ }
279
+ else {
280
+ retry();
281
+ }
282
+ }, 100000);
283
+ const scanResult = await waitingScan(ctx, loginVersion, qrGenResult.data.code, controller.signal);
284
+ if (!scanResult || !scanResult.data)
285
+ throw new ZaloApiError.ZaloApiError("Cannot get scan result");
286
+ if (callback) {
287
+ callback({
288
+ type: exports.LoginQRCallbackEventType.QRCodeScanned,
289
+ data: scanResult.data,
290
+ actions: {
291
+ retry,
292
+ abort,
293
+ },
294
+ });
295
+ }
296
+ const confirmResult = await waitingConfirm(ctx, loginVersion, qrGenResult.data.code, controller.signal);
297
+ if (!confirmResult)
298
+ throw new ZaloApiError.ZaloApiError("Cannot get confirm result");
299
+ clearTimeout(qrTimeout);
300
+ if (confirmResult.error_code == -13) {
301
+ if (callback) {
302
+ callback({
303
+ type: exports.LoginQRCallbackEventType.QRCodeDeclined,
304
+ data: {
305
+ code: qrData.code,
306
+ },
307
+ actions: {
308
+ retry,
309
+ abort,
310
+ },
311
+ });
312
+ }
313
+ else {
314
+ utils.logger(ctx).error("QRCode login declined");
315
+ throw new ZaloApiLoginQRDeclined.ZaloApiLoginQRDeclined();
316
+ }
317
+ return;
318
+ }
319
+ else if (confirmResult.error_code != 0) {
320
+ throw new ZaloApiError.ZaloApiError(`An error has occurred.\nResponse: ${JSON.stringify(confirmResult, null, 2)}`);
321
+ }
322
+ const checkSessionResult = await checkSession(ctx);
323
+ if (!checkSessionResult)
324
+ throw new ZaloApiError.ZaloApiError("Cannot get session, login failed");
325
+ utils.logger(ctx).info("Successfully logged into the account", scanResult.data.display_name);
326
+ const userInfo = await getUserInfo(ctx);
327
+ if (!userInfo || !userInfo.data)
328
+ throw new ZaloApiError.ZaloApiError("Can't get account info");
329
+ if (!userInfo.data.logged)
330
+ throw new ZaloApiError.ZaloApiError("Can't login");
331
+ resolve({
332
+ cookies: ctx.cookie.toJSON().cookies,
333
+ userInfo: userInfo.data.info,
334
+ });
335
+ }
336
+ catch (error) {
337
+ cleanUp();
338
+ reject(error);
339
+ }
340
+ });
341
+ }
342
+
343
+ exports.loginQR = loginQR;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const parseLinkFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.file[0]}/api/message/parselink`);
8
+ /**
9
+ * Parse link
10
+ *
11
+ * @param link link to parse
12
+ *
13
+ * @throws {ZaloApiError}
14
+ *
15
+ */
16
+ return async function parseLink(link) {
17
+ const params = {
18
+ link,
19
+ version: 1, // version 0 is not available errorMaps || version 1 is errorMaps (for response)
20
+ imei: ctx.imei,
21
+ };
22
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
23
+ if (!encryptedParams)
24
+ throw new ZaloApiError.ZaloApiError("Failed to encrypt params");
25
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
26
+ method: "GET",
27
+ });
28
+ return utils.resolve(response);
29
+ };
30
+ });
31
+
32
+ exports.parseLinkFactory = parseLinkFactory;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const rejectFriendRequestFactory = utils.apiFactory()((api, _ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.friend[0]}/api/friend/reject`);
8
+ /**
9
+ * Reject a friend request from a User
10
+ *
11
+ * @param friendId
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function rejectFriendRequest(friendId) {
16
+ const params = {
17
+ fid: friendId,
18
+ };
19
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
20
+ if (!encryptedParams)
21
+ throw new ZaloApiError.ZaloApiError("Failed to encrypt params");
22
+ const response = await utils.request(serviceURL, {
23
+ method: "POST",
24
+ body: new URLSearchParams({
25
+ params: encryptedParams,
26
+ }),
27
+ });
28
+ return utils.resolve(response);
29
+ };
30
+ });
31
+
32
+ exports.rejectFriendRequestFactory = rejectFriendRequestFactory;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const removeFriendFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.friend[0]}/api/friend/remove`);
8
+ /**
9
+ * Remove friend
10
+ *
11
+ * @param friendId - ID of the friend to remove
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function removeFriend(friendId) {
16
+ const params = {
17
+ fid: friendId,
18
+ imei: ctx.imei,
19
+ };
20
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
21
+ if (!encryptedParams)
22
+ throw new ZaloApiError.ZaloApiError("Failed to encrypt params");
23
+ const response = await utils.request(serviceURL, {
24
+ method: "POST",
25
+ body: new URLSearchParams({
26
+ params: encryptedParams,
27
+ }),
28
+ });
29
+ return utils.resolve(response);
30
+ };
31
+ });
32
+
33
+ exports.removeFriendFactory = removeFriendFactory;
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const removeFriendAliasFactory = utils.apiFactory()((api, _ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.alias[0]}/api/alias/remove`);
8
+ /**
9
+ * Remove friend's alias
10
+ *
11
+ * @param friendId friend id
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function removeFriendAlias(friendId) {
16
+ const params = {
17
+ friendId: friendId,
18
+ };
19
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
20
+ if (!encryptedParams)
21
+ throw new ZaloApiError.ZaloApiError("Failed to encrypt params");
22
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
23
+ method: "GET",
24
+ });
25
+ return utils.resolve(response);
26
+ };
27
+ });
28
+
29
+ exports.removeFriendAliasFactory = removeFriendAliasFactory;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const removeGroupBlockedMemberFactory = utils.apiFactory()((api, _, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/blockedmems/remove`);
8
+ /**
9
+ * Remove group blocked member
10
+ *
11
+ * @param memberId member id(s)
12
+ * @param groupId group id
13
+ *
14
+ * @throws {ZaloApiError}
15
+ */
16
+ return async function removeGroupBlockedMember(memberId, groupId) {
17
+ if (!Array.isArray(memberId))
18
+ memberId = [memberId];
19
+ const params = {
20
+ grid: groupId,
21
+ members: memberId,
22
+ };
23
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
24
+ if (!encryptedParams)
25
+ throw new ZaloApiError.ZaloApiError("Failed to encrypt params");
26
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
27
+ method: "GET",
28
+ });
29
+ return utils.resolve(response);
30
+ };
31
+ });
32
+
33
+ exports.removeGroupBlockedMemberFactory = removeGroupBlockedMemberFactory;
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const removeGroupDeputyFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/admins/remove`);
8
+ /**
9
+ * Remove group deputy
10
+ *
11
+ * @param memberId user Id or list of user Ids
12
+ * @param groupId group Id
13
+ *
14
+ * @throws {ZaloApiError}
15
+ *
16
+ */
17
+ return async function removeGroupDeputy(memberId, groupId) {
18
+ if (!Array.isArray(memberId))
19
+ memberId = [memberId];
20
+ const params = {
21
+ grid: groupId,
22
+ members: memberId,
23
+ imei: ctx.imei,
24
+ };
25
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
26
+ if (!encryptedParams)
27
+ throw new ZaloApiError.ZaloApiError("Failed to encrypt params");
28
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
29
+ method: "GET",
30
+ });
31
+ return utils.resolve(response);
32
+ };
33
+ });
34
+
35
+ exports.removeGroupDeputyFactory = removeGroupDeputyFactory;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const removeQuickMessageFactory = utils.apiFactory()((api, _ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.quick_message[0]}/api/quickmessage/delete`);
8
+ /**
9
+ * Remove quick message
10
+ *
11
+ * @param itemIds - The id(s) of the quick message(s) to remove (number or number[])
12
+ *
13
+ * @note Zalo might throw an error with code 212 if the item does not exist
14
+ *
15
+ * @throws {ZaloApiError}
16
+ */
17
+ return async function removeQuickMessage(itemIds) {
18
+ const idsArray = Array.isArray(itemIds) ? itemIds : [itemIds];
19
+ const params = {
20
+ itemIds: idsArray,
21
+ };
22
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
23
+ if (!encryptedParams)
24
+ throw new ZaloApiError.ZaloApiError("Failed to encrypt params");
25
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
26
+ method: "GET",
27
+ });
28
+ return utils.resolve(response);
29
+ };
30
+ });
31
+
32
+ exports.removeQuickMessageFactory = removeQuickMessageFactory;
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ require('../models/AutoReply.cjs');
5
+ require('../models/Board.cjs');
6
+ var Enum = require('../models/Enum.cjs');
7
+ require('../models/FriendEvent.cjs');
8
+ require('../models/Group.cjs');
9
+ require('../models/GroupEvent.cjs');
10
+ require('../models/Reaction.cjs');
11
+ require('../models/Reminder.cjs');
12
+ require('../models/ZBusiness.cjs');
13
+ var utils = require('../utils.cjs');
14
+
15
+ const removeReminderFactory = utils.apiFactory()((api, ctx, utils) => {
16
+ const serviceURL = {
17
+ [Enum.ThreadType.User]: utils.makeURL(`${api.zpwServiceMap.group_board[0]}/api/board/oneone/remove`),
18
+ [Enum.ThreadType.Group]: utils.makeURL(`${api.zpwServiceMap.group_board[0]}/api/board/topic/remove`),
19
+ };
20
+ /**
21
+ * Remove a reminder in a (user/group)
22
+ *
23
+ * @param reminderId Reminder ID to remove reminder from
24
+ * @param threadId (User/Group) ID to remove reminder from
25
+ * @param type Thread type (User or Group)
26
+ *
27
+ * @throws {ZaloApiError}
28
+ */
29
+ return async function removeReminder(reminderId, threadId, type = Enum.ThreadType.User) {
30
+ const params = type === Enum.ThreadType.User
31
+ ? {
32
+ uid: threadId,
33
+ reminderId: reminderId,
34
+ }
35
+ : {
36
+ grid: threadId,
37
+ topicId: reminderId,
38
+ imei: ctx.imei,
39
+ };
40
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
41
+ if (!encryptedParams)
42
+ throw new ZaloApiError.ZaloApiError("Failed to encrypt params");
43
+ const response = await utils.request(serviceURL[type], {
44
+ method: "POST",
45
+ body: new URLSearchParams({
46
+ params: encryptedParams,
47
+ }),
48
+ });
49
+ return utils.resolve(response);
50
+ };
51
+ });
52
+
53
+ exports.removeReminderFactory = removeReminderFactory;