@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,731 @@
1
+ 'use strict';
2
+
3
+ var cryptojs = require('crypto-js');
4
+ var crypto = require('node:crypto');
5
+ var fs = require('node:fs');
6
+ var path = require('node:path');
7
+ var pako = require('pako');
8
+ var SparkMD5 = require('spark-md5');
9
+ var toughCookie = require('tough-cookie');
10
+ var JSONBig = require('json-bigint');
11
+ var context = require('./context.cjs');
12
+ var ZaloApiError = require('./Errors/ZaloApiError.cjs');
13
+ var ZaloApiMissingImageMetadataGetter = require('./Errors/ZaloApiMissingImageMetadataGetter.cjs');
14
+ var FriendEvent = require('./models/FriendEvent.cjs');
15
+ var GroupEvent = require('./models/GroupEvent.cjs');
16
+
17
+ const isBun = typeof Bun !== "undefined";
18
+ function hasOwn(obj, key) {
19
+ return Object.prototype.hasOwnProperty.call(obj, key);
20
+ }
21
+ /**
22
+ * Get signed key for API requests.
23
+ *
24
+ * @param type
25
+ * @param params
26
+ * @returns MD5 hash
27
+ *
28
+ */
29
+ function getSignKey(type, params) {
30
+ const n = [];
31
+ for (const s in params) {
32
+ if (hasOwn(params, s)) {
33
+ n.push(s);
34
+ }
35
+ }
36
+ n.sort();
37
+ let a = "zsecure" + type;
38
+ for (let s = 0; s < n.length; s++)
39
+ a += params[n[s]];
40
+ return cryptojs.MD5(a).toString();
41
+ }
42
+ /**
43
+ *
44
+ * @param baseURL
45
+ * @param params
46
+ * @param apiVersion automatically add zalo api version to url params
47
+ * @returns
48
+ *
49
+ */
50
+ function makeURL(ctx, baseURL, params = {}, apiVersion = true) {
51
+ const url = new URL(baseURL);
52
+ for (const key in params) {
53
+ if (hasOwn(params, key)) {
54
+ url.searchParams.append(key, params[key].toString());
55
+ }
56
+ }
57
+ if (apiVersion) {
58
+ if (!url.searchParams.has("zpw_ver"))
59
+ url.searchParams.set("zpw_ver", ctx.API_VERSION.toString());
60
+ if (!url.searchParams.has("zpw_type"))
61
+ url.searchParams.set("zpw_type", ctx.API_TYPE.toString());
62
+ }
63
+ return url.toString();
64
+ }
65
+ class ParamsEncryptor {
66
+ constructor({ type, imei, firstLaunchTime }) {
67
+ this.zcid = null;
68
+ this.enc_ver = "v2";
69
+ this.zcid = null;
70
+ this.encryptKey = null;
71
+ this.createZcid(type, imei, firstLaunchTime);
72
+ this.zcid_ext = ParamsEncryptor.randomString();
73
+ this.createEncryptKey();
74
+ }
75
+ getEncryptKey() {
76
+ if (!this.encryptKey)
77
+ throw new ZaloApiError.ZaloApiError("getEncryptKey: didn't create encryptKey yet");
78
+ return this.encryptKey;
79
+ }
80
+ createZcid(type, imei, firstLaunchTime) {
81
+ if (!type || !imei || !firstLaunchTime)
82
+ throw new ZaloApiError.ZaloApiError("createZcid: missing params");
83
+ const msg = `${type},${imei},${firstLaunchTime}`;
84
+ const s = ParamsEncryptor.encodeAES("3FC4F0D2AB50057BCE0D90D9187A22B1", msg, "hex", true);
85
+ this.zcid = s;
86
+ }
87
+ createEncryptKey(e = 0) {
88
+ const t = (e, t) => {
89
+ const { even: n } = ParamsEncryptor.processStr(e), { even: a, odd: s } = ParamsEncryptor.processStr(t);
90
+ if (!n || !a || !s)
91
+ return false;
92
+ const i = n.slice(0, 8).join("") + a.slice(0, 12).join("") + s.reverse().slice(0, 12).join("");
93
+ return (this.encryptKey = i), true;
94
+ };
95
+ if (!this.zcid || !this.zcid_ext)
96
+ throw new ZaloApiError.ZaloApiError("createEncryptKey: zcid or zcid_ext is null");
97
+ try {
98
+ const n = cryptojs.MD5(this.zcid_ext).toString().toUpperCase();
99
+ if (t(n, this.zcid) || !(e < 3))
100
+ return !1;
101
+ this.createEncryptKey(e + 1);
102
+ }
103
+ catch (_a) {
104
+ if (e < 3)
105
+ this.createEncryptKey(e + 1);
106
+ }
107
+ return true;
108
+ }
109
+ getParams() {
110
+ return this.zcid
111
+ ? {
112
+ zcid: this.zcid,
113
+ zcid_ext: this.zcid_ext,
114
+ enc_ver: this.enc_ver,
115
+ }
116
+ : null;
117
+ }
118
+ static processStr(e) {
119
+ if (!e || "string" != typeof e)
120
+ return {
121
+ even: null,
122
+ odd: null,
123
+ };
124
+ const [t, n] = [...e].reduce((e, t, n) => (e[n % 2].push(t), e), [[], []]);
125
+ return {
126
+ even: t,
127
+ odd: n,
128
+ };
129
+ }
130
+ static randomString(e, t) {
131
+ const n = e || 6, a = t && e && t > e ? t : 12;
132
+ let s = Math.floor(Math.random() * (a - n + 1)) + n;
133
+ if (s > 12) {
134
+ let e = "";
135
+ for (; s > 0;) {
136
+ e += Math.random()
137
+ .toString(16)
138
+ .substr(2, s > 12 ? 12 : s);
139
+ s -= 12;
140
+ }
141
+ return e;
142
+ }
143
+ return Math.random().toString(16).substr(2, s);
144
+ }
145
+ static encodeAES(e, message, type, uppercase, s = 0) {
146
+ if (!message)
147
+ return null;
148
+ try {
149
+ {
150
+ const encoder = "hex" == type ? cryptojs.enc.Hex : cryptojs.enc.Base64;
151
+ const key = cryptojs.enc.Utf8.parse(e);
152
+ const cfg = {
153
+ words: [0, 0, 0, 0],
154
+ sigBytes: 16,
155
+ };
156
+ const encrypted = cryptojs.AES.encrypt(message, key, {
157
+ iv: cfg,
158
+ mode: cryptojs.mode.CBC,
159
+ padding: cryptojs.pad.Pkcs7,
160
+ }).ciphertext.toString(encoder);
161
+ return uppercase ? encrypted.toUpperCase() : encrypted;
162
+ }
163
+ }
164
+ catch (_a) {
165
+ return s < 3 ? ParamsEncryptor.encodeAES(e, message, type, uppercase, s + 1) : null;
166
+ }
167
+ }
168
+ }
169
+ function decryptResp(key, data) {
170
+ let n = null;
171
+ try {
172
+ n = decodeRespAES(key, data);
173
+ const parsed = JSON.parse(n);
174
+ return parsed;
175
+ }
176
+ catch (_a) {
177
+ return n;
178
+ }
179
+ }
180
+ function decodeRespAES(key, data) {
181
+ data = decodeURIComponent(data);
182
+ const parsedKey = cryptojs.enc.Utf8.parse(key);
183
+ const n = {
184
+ words: [0, 0, 0, 0],
185
+ sigBytes: 16,
186
+ };
187
+ return cryptojs.AES.decrypt({
188
+ ciphertext: cryptojs.enc.Base64.parse(data),
189
+ }, parsedKey, {
190
+ iv: n,
191
+ mode: cryptojs.mode.CBC,
192
+ padding: cryptojs.pad.Pkcs7,
193
+ }).toString(cryptojs.enc.Utf8);
194
+ }
195
+ function decodeBase64ToBuffer(data) {
196
+ return Buffer.from(data, "base64");
197
+ }
198
+ function decodeUnit8Array(data) {
199
+ try {
200
+ return new TextDecoder().decode(data);
201
+ }
202
+ catch (_a) {
203
+ return null;
204
+ }
205
+ }
206
+ function encodeAES(secretKey, data, t = 0) {
207
+ try {
208
+ const key = cryptojs.enc.Base64.parse(secretKey);
209
+ return cryptojs.AES.encrypt(data, key, {
210
+ iv: cryptojs.enc.Hex.parse("00000000000000000000000000000000"),
211
+ mode: cryptojs.mode.CBC,
212
+ padding: cryptojs.pad.Pkcs7,
213
+ }).ciphertext.toString(cryptojs.enc.Base64);
214
+ }
215
+ catch (_a) {
216
+ return t < 3 ? encodeAES(secretKey, data, t + 1) : null;
217
+ }
218
+ }
219
+ function decodeAES(secretKey, data, t = 0) {
220
+ try {
221
+ data = decodeURIComponent(data);
222
+ const key = cryptojs.enc.Base64.parse(secretKey);
223
+ return cryptojs.AES.decrypt({
224
+ ciphertext: cryptojs.enc.Base64.parse(data),
225
+ }, key, {
226
+ iv: cryptojs.enc.Hex.parse("00000000000000000000000000000000"),
227
+ mode: cryptojs.mode.CBC,
228
+ padding: cryptojs.pad.Pkcs7,
229
+ }).toString(cryptojs.enc.Utf8);
230
+ }
231
+ catch (_a) {
232
+ return t < 3 ? decodeAES(secretKey, data, t + 1) : null;
233
+ }
234
+ }
235
+ /**
236
+ * Suy luận nền tảng hệ điều hành (OS) từ chuỗi User-Agent.
237
+ *
238
+ * Hàm này được sinh ra để giải quyết vấn đề cốt lõi: thư viện zca-js trước đây
239
+ * hardcode `sec-ch-ua-platform: "Windows"` ở 8 chỗ trong loginQR, trong khi
240
+ * User-Agent có thể là Mac/Linux — tạo ra Browser Mismatch khiến Zalo ban session.
241
+ *
242
+ * Thứ tự ưu tiên nhận diện: Windows → macOS → Linux → mặc định Windows (an toàn nhất)
243
+ *
244
+ * @returns Chuỗi platform theo định dạng Sec-CH-UA-Platform, ví dụ: "Windows", "macOS", "Linux"
245
+ */
246
+ function getPlatformFromUA(userAgent) {
247
+ if (!userAgent)
248
+ return "Windows"; // Không có UA → mặc định Windows
249
+ if (/Windows/i.test(userAgent))
250
+ return "Windows";
251
+ if (/Macintosh|Mac OS X/i.test(userAgent))
252
+ return "macOS";
253
+ if (/Linux|X11/i.test(userAgent))
254
+ return "Linux";
255
+ return "Windows"; // Không nhận diện được → fallback an toàn về Windows
256
+ }
257
+ /**
258
+ * Trích xuất phiên bản Chrome major từ chuỗi User-Agent.
259
+ *
260
+ * Dùng để điền vào header `sec-ch-ua` một cách động, đảm bảo Chrome version
261
+ * trong header khớp với Chrome version trong User-Agent (tránh fingerprint anomaly).
262
+ *
263
+ * Lưu ý: Nếu UA không phải Chrome/Chromium (ví dụ Firefox, Safari thuần),
264
+ * hàm trả về "130" làm giá trị mặc định an toàn thay vì throw error.
265
+ *
266
+ * @returns Phiên bản Chrome major dạng string, ví dụ: "130", "133"
267
+ */
268
+ function getChromeVersionFromUA(userAgent) {
269
+ if (!userAgent)
270
+ return "130"; // Không có UA → dùng version ổn định
271
+ const match = userAgent.match(/Chrome\/(\d+)/);
272
+ return match ? match[1] : "130"; // Không phải Chrome → fallback về "130"
273
+ }
274
+ async function getDefaultHeaders(ctx, origin = "https://chat.zalo.me") {
275
+ if (!ctx.cookie)
276
+ throw new ZaloApiError.ZaloApiError("Cookie is not available");
277
+ if (!ctx.userAgent)
278
+ throw new ZaloApiError.ZaloApiError("User agent is not available");
279
+ return {
280
+ Accept: "application/json, text/plain, */*",
281
+ "Accept-Encoding": "gzip, deflate, br, zstd",
282
+ "Accept-Language": "en-US,en;q=0.9",
283
+ "content-type": "application/x-www-form-urlencoded",
284
+ Cookie: await ctx.cookie.getCookieString(origin),
285
+ Origin: "https://chat.zalo.me",
286
+ Referer: "https://chat.zalo.me/",
287
+ "User-Agent": ctx.userAgent,
288
+ };
289
+ }
290
+ async function request(ctx, url, options, raw = false) {
291
+ var _a, _b;
292
+ if (!ctx.cookie)
293
+ ctx.cookie = new toughCookie.CookieJar();
294
+ const origin = new URL(url).origin;
295
+ const defaultHeaders = await getDefaultHeaders(ctx, origin);
296
+ if (!raw) {
297
+ if (options) {
298
+ options.headers = Object.assign(defaultHeaders, options.headers || {});
299
+ }
300
+ else
301
+ options = { headers: defaultHeaders };
302
+ }
303
+ const _options = Object.assign(Object.assign({}, (options !== null && options !== void 0 ? options : {})), (isBun ? {
304
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
305
+ // @ts-ignore
306
+ proxy: (_b = (_a = ctx.options.agent) === null || _a === void 0 ? void 0 : _a.proxy) === null || _b === void 0 ? void 0 : _b.href
307
+ } : { agent: ctx.options.agent }));
308
+ const response = await ctx.options.polyfill(url, _options);
309
+ const setCookieRaw = response.headers.get("set-cookie");
310
+ if (setCookieRaw && !raw) {
311
+ // Use getSetCookie() (Node.js 18+) to properly parse multi-cookie headers.
312
+ // The split(", ") method breaks cookies containing Expires dates with commas
313
+ // (e.g., "Expires=Wed, 18 Mar 2026..."), causing critical cookies like
314
+ // zpsid and zpw_sek to be lost during QR login flow.
315
+ let cookieStrings;
316
+ if (typeof response.headers.getSetCookie === "function") {
317
+ cookieStrings = response.headers.getSetCookie();
318
+ }
319
+ else {
320
+ cookieStrings = setCookieRaw.split(", ");
321
+ }
322
+ for (const cookie of cookieStrings) {
323
+ const parsed = toughCookie.Cookie.parse(cookie);
324
+ try {
325
+ if (parsed)
326
+ await ctx.cookie.setCookie(parsed, parsed.domain != "zalo.me" ? `https://${parsed.domain}` : origin);
327
+ }
328
+ catch (error) {
329
+ logger(ctx).error(error);
330
+ }
331
+ }
332
+ }
333
+ const redirectURL = response.headers.get("location");
334
+ if (redirectURL) {
335
+ const redirectOptions = Object.assign({}, options);
336
+ redirectOptions.method = "GET";
337
+ if (!raw) {
338
+ redirectOptions.headers = new Headers(redirectOptions.headers);
339
+ redirectOptions.headers.set("Referer", "https://id.zalo.me/");
340
+ }
341
+ return await request(ctx, redirectURL, redirectOptions);
342
+ }
343
+ return response;
344
+ }
345
+ async function getImageMetaData(ctx, filePath) {
346
+ if (!ctx.options.imageMetadataGetter) {
347
+ throw new ZaloApiMissingImageMetadataGetter.ZaloApiMissingImageMetadataGetter();
348
+ }
349
+ const imageData = await ctx.options.imageMetadataGetter(filePath);
350
+ if (!imageData) {
351
+ throw new ZaloApiError.ZaloApiError("Failed to get image metadata");
352
+ }
353
+ const fileName = filePath.split("/").pop();
354
+ return {
355
+ fileName,
356
+ totalSize: imageData.size,
357
+ width: imageData.width,
358
+ height: imageData.height,
359
+ };
360
+ }
361
+ async function getFileSize(filePath) {
362
+ return fs.promises.stat(filePath).then((s) => s.size);
363
+ }
364
+ async function getGifMetaData(ctx, filePath) {
365
+ if (!ctx.options.imageMetadataGetter) {
366
+ throw new ZaloApiMissingImageMetadataGetter.ZaloApiMissingImageMetadataGetter();
367
+ }
368
+ const gifData = await ctx.options.imageMetadataGetter(filePath);
369
+ if (!gifData) {
370
+ throw new ZaloApiError.ZaloApiError("Failed to get gif metadata");
371
+ }
372
+ const fileName = path.basename(filePath);
373
+ return {
374
+ fileName,
375
+ totalSize: gifData.size,
376
+ width: gifData.width,
377
+ height: gifData.height,
378
+ };
379
+ }
380
+ async function decodeEventData(parsed, cipherKey) {
381
+ if (typeof parsed.data !== "string")
382
+ throw new ZaloApiError.ZaloApiError(`Invalid data, expected string but got ${typeof parsed.data}`);
383
+ if (typeof parsed.encrypt !== "number")
384
+ throw new ZaloApiError.ZaloApiError(`Invalid encrypt type, expected number but got ${typeof parsed.encrypt}`);
385
+ if (parsed.encrypt < 0 || parsed.encrypt > 3)
386
+ throw new ZaloApiError.ZaloApiError(`Invalid encrypt type, expected 0-3 but got ${parsed.encrypt}`);
387
+ const rawData = parsed.data;
388
+ const encryptType = parsed.encrypt;
389
+ if (encryptType === 0)
390
+ return JSON.parse(rawData);
391
+ const decodedBuffer = decodeBase64ToBuffer(encryptType === 1 ? rawData : decodeURIComponent(rawData));
392
+ let decryptedBuffer = decodedBuffer;
393
+ if (encryptType !== 1) {
394
+ if (cipherKey && decodedBuffer.length >= 48) {
395
+ const algorithm = {
396
+ name: "AES-GCM",
397
+ iv: decodedBuffer.subarray(0, 16),
398
+ tagLength: 128,
399
+ additionalData: decodedBuffer.subarray(16, 32),
400
+ };
401
+ const dataSource = decodedBuffer.subarray(32);
402
+ const cryptoKey = await crypto.subtle.importKey("raw", decodeBase64ToBuffer(cipherKey), algorithm, false, [
403
+ "decrypt",
404
+ ]);
405
+ decryptedBuffer = await crypto.subtle.decrypt(algorithm, cryptoKey, dataSource);
406
+ }
407
+ else {
408
+ throw new ZaloApiError.ZaloApiError("Invalid data length or missing cipher key");
409
+ }
410
+ }
411
+ const decompressedBuffer = encryptType === 3 ? new Uint8Array(decryptedBuffer) : pako.inflate(decryptedBuffer);
412
+ const decodedData = decodeUnit8Array(decompressedBuffer);
413
+ if (!decodedData)
414
+ return;
415
+ return JSONBig.parse(decodedData);
416
+ }
417
+ async function getMd5LargeFileObject(source, fileSize) {
418
+ const buffer = typeof source == "string" ? await fs.promises.readFile(source) : source.data;
419
+ return new Promise((resolve) => {
420
+ let currentChunk = 0;
421
+ const chunkSize = 2097152, // Read in chunks of 2MB
422
+ chunks = Math.ceil(fileSize / chunkSize), spark = new SparkMD5.ArrayBuffer();
423
+ function loadNext() {
424
+ const start = currentChunk * chunkSize, end = start + chunkSize >= fileSize ? fileSize : start + chunkSize;
425
+ spark.append(new Uint8Array(buffer.subarray(start, end)).buffer);
426
+ currentChunk++;
427
+ if (currentChunk < chunks) {
428
+ loadNext();
429
+ }
430
+ else {
431
+ resolve({
432
+ currentChunk,
433
+ data: spark.end(),
434
+ });
435
+ }
436
+ }
437
+ loadNext();
438
+ });
439
+ }
440
+ const logger = (ctx) => ({
441
+ verbose: (...args) => {
442
+ if (ctx.options.logging)
443
+ console.log("\x1b[35m🚀 VERBOSE\x1b[0m", ...args);
444
+ },
445
+ info: (...args) => {
446
+ if (ctx.options.logging)
447
+ console.log("\x1b[34mINFO\x1b[0m", ...args);
448
+ },
449
+ warn: (...args) => {
450
+ if (ctx.options.logging)
451
+ console.log("\x1b[33mWARN\x1b[0m", ...args);
452
+ },
453
+ error: (...args) => {
454
+ if (ctx.options.logging)
455
+ console.log("\x1b[31mERROR\x1b[0m", ...args);
456
+ },
457
+ success: (...args) => {
458
+ if (ctx.options.logging)
459
+ console.log("\x1b[32mSUCCESS\x1b[0m", ...args);
460
+ },
461
+ timestamp: (...args) => {
462
+ const now = new Date().toISOString();
463
+ if (ctx.options.logging)
464
+ console.log(`\x1b[90m[${now}]\x1b[0m`, ...args);
465
+ },
466
+ });
467
+ function getClientMessageType(msgType) {
468
+ if (msgType === "webchat")
469
+ return 1;
470
+ if (msgType === "chat.voice")
471
+ return 31;
472
+ if (msgType === "chat.photo")
473
+ return 32;
474
+ if (msgType === "chat.sticker")
475
+ return 36;
476
+ if (msgType === "chat.doodle")
477
+ return 37;
478
+ if (msgType === "chat.recommended")
479
+ return 38;
480
+ if (msgType === "chat.link")
481
+ return 38; // don't know || if (msgType === "chat.link") return 1;
482
+ if (msgType === "chat.video.msg")
483
+ return 44; // not sure
484
+ if (msgType === "share.file")
485
+ return 46;
486
+ if (msgType === "chat.gif")
487
+ return 49;
488
+ if (msgType === "chat.location.new")
489
+ return 43;
490
+ return 1;
491
+ }
492
+ function strPadLeft(e, t, n) {
493
+ const a = (e = "" + e).length;
494
+ return a === n ? e : a > n ? e.slice(-n) : t.repeat(n - a) + e;
495
+ }
496
+ function formatTime(format, timestamp = Date.now()) {
497
+ const date = new Date(timestamp);
498
+ // using lib Intl
499
+ const options = {
500
+ year: "numeric",
501
+ month: "2-digit",
502
+ day: "2-digit",
503
+ hour: "2-digit",
504
+ minute: "2-digit",
505
+ second: "2-digit",
506
+ // hour12: false, // true or false is same <(")
507
+ };
508
+ const formatted = new Intl.DateTimeFormat("vi-VN", options).format(date);
509
+ if (format.includes("%H") || format.includes("%d")) {
510
+ return format
511
+ .replace("%H", date.getHours().toString().padStart(2, "0"))
512
+ .replace("%M", date.getMinutes().toString().padStart(2, "0"))
513
+ .replace("%S", date.getSeconds().toString().padStart(2, "0"))
514
+ .replace("%d", date.getDate().toString().padStart(2, "0"))
515
+ .replace("%m", (date.getMonth() + 1).toString().padStart(2, "0"))
516
+ .replace("%Y", date.getFullYear().toString());
517
+ }
518
+ return formatted;
519
+ }
520
+ function getFullTimeFromMillisecond(e) {
521
+ const t = new Date(e);
522
+ return (strPadLeft(t.getHours(), "0", 2) +
523
+ ":" +
524
+ strPadLeft(t.getMinutes(), "0", 2) +
525
+ " " +
526
+ strPadLeft(t.getDate(), "0", 2) +
527
+ "/" +
528
+ strPadLeft(t.getMonth() + 1, "0", 2) +
529
+ "/" +
530
+ t.getFullYear());
531
+ }
532
+ function getFileExtension(e) {
533
+ return path.extname(e).slice(1);
534
+ }
535
+ function getFileName(e) {
536
+ return path.basename(e);
537
+ }
538
+ function removeUndefinedKeys(e) {
539
+ for (const t in e)
540
+ if (e[t] === undefined)
541
+ delete e[t];
542
+ return e;
543
+ }
544
+ function getGroupEventType(act) {
545
+ if (act == "join_request")
546
+ return GroupEvent.GroupEventType.JOIN_REQUEST;
547
+ if (act == "join")
548
+ return GroupEvent.GroupEventType.JOIN;
549
+ if (act == "leave")
550
+ return GroupEvent.GroupEventType.LEAVE;
551
+ if (act == "remove_member")
552
+ return GroupEvent.GroupEventType.REMOVE_MEMBER;
553
+ if (act == "block_member")
554
+ return GroupEvent.GroupEventType.BLOCK_MEMBER;
555
+ if (act == "update_setting")
556
+ return GroupEvent.GroupEventType.UPDATE_SETTING;
557
+ if (act == "update_avatar")
558
+ return GroupEvent.GroupEventType.UPDATE_AVATAR;
559
+ if (act == "update")
560
+ return GroupEvent.GroupEventType.UPDATE;
561
+ if (act == "new_link")
562
+ return GroupEvent.GroupEventType.NEW_LINK;
563
+ if (act == "add_admin")
564
+ return GroupEvent.GroupEventType.ADD_ADMIN;
565
+ if (act == "remove_admin")
566
+ return GroupEvent.GroupEventType.REMOVE_ADMIN;
567
+ if (act == "new_pin_topic")
568
+ return GroupEvent.GroupEventType.NEW_PIN_TOPIC;
569
+ if (act == "update_pin_topic")
570
+ return GroupEvent.GroupEventType.UPDATE_PIN_TOPIC;
571
+ if (act == "update_topic")
572
+ return GroupEvent.GroupEventType.UPDATE_TOPIC;
573
+ if (act == "update_board")
574
+ return GroupEvent.GroupEventType.UPDATE_BOARD;
575
+ if (act == "remove_board")
576
+ return GroupEvent.GroupEventType.REMOVE_BOARD;
577
+ if (act == "reorder_pin_topic")
578
+ return GroupEvent.GroupEventType.REORDER_PIN_TOPIC;
579
+ if (act == "unpin_topic")
580
+ return GroupEvent.GroupEventType.UNPIN_TOPIC;
581
+ if (act == "remove_topic")
582
+ return GroupEvent.GroupEventType.REMOVE_TOPIC;
583
+ if (act == "accept_remind")
584
+ return GroupEvent.GroupEventType.ACCEPT_REMIND;
585
+ if (act == "reject_remind")
586
+ return GroupEvent.GroupEventType.REJECT_REMIND;
587
+ if (act == "remind_topic")
588
+ return GroupEvent.GroupEventType.REMIND_TOPIC;
589
+ return GroupEvent.GroupEventType.UNKNOWN;
590
+ }
591
+ function getFriendEventType(act) {
592
+ if (act == "add")
593
+ return FriendEvent.FriendEventType.ADD;
594
+ if (act == "remove")
595
+ return FriendEvent.FriendEventType.REMOVE;
596
+ if (act == "block")
597
+ return FriendEvent.FriendEventType.BLOCK;
598
+ if (act == "unblock")
599
+ return FriendEvent.FriendEventType.UNBLOCK;
600
+ if (act == "block_call")
601
+ return FriendEvent.FriendEventType.BLOCK_CALL;
602
+ if (act == "unblock_call")
603
+ return FriendEvent.FriendEventType.UNBLOCK_CALL;
604
+ if (act == "req_v2")
605
+ return FriendEvent.FriendEventType.REQUEST;
606
+ if (act == "reject")
607
+ return FriendEvent.FriendEventType.REJECT_REQUEST;
608
+ if (act == "undo_req")
609
+ return FriendEvent.FriendEventType.UNDO_REQUEST;
610
+ if (act == "seen_fr_req")
611
+ return FriendEvent.FriendEventType.SEEN_FRIEND_REQUEST;
612
+ if (act == "pin_unpin")
613
+ return FriendEvent.FriendEventType.PIN_UNPIN;
614
+ if (act == "pin_create")
615
+ return FriendEvent.FriendEventType.PIN_CREATE;
616
+ return FriendEvent.FriendEventType.UNKNOWN;
617
+ }
618
+ async function handleZaloResponse(ctx, response, isEncrypted = true) {
619
+ const result = {
620
+ data: null,
621
+ error: null,
622
+ };
623
+ if (!response.ok) {
624
+ result.error = {
625
+ message: "Request failed with status code " + response.status,
626
+ };
627
+ return result;
628
+ }
629
+ try {
630
+ const jsonData = await response.json();
631
+ if (jsonData.error_code != 0) {
632
+ result.error = {
633
+ message: jsonData.error_message,
634
+ code: jsonData.error_code,
635
+ };
636
+ return result;
637
+ }
638
+ const decodedData = isEncrypted ? JSON.parse(decodeAES(ctx.secretKey, jsonData.data)) : jsonData;
639
+ if (decodedData.error_code != 0) {
640
+ result.error = {
641
+ message: decodedData.error_message,
642
+ code: decodedData.error_code,
643
+ };
644
+ return result;
645
+ }
646
+ result.data = decodedData.data;
647
+ }
648
+ catch (error) {
649
+ logger(ctx).error("Failed to parse response data:", error);
650
+ result.error = {
651
+ message: "Failed to parse response data",
652
+ };
653
+ }
654
+ return result;
655
+ }
656
+ async function resolveResponse(ctx, res, cb, isEncrypted) {
657
+ const result = await handleZaloResponse(ctx, res, isEncrypted);
658
+ if (result.error)
659
+ throw new ZaloApiError.ZaloApiError(result.error.message, result.error.code);
660
+ if (cb)
661
+ return cb(result);
662
+ return result.data;
663
+ }
664
+ function apiFactory() {
665
+ return (callback) => {
666
+ return (ctx, api) => {
667
+ if (!context.isContextSession(ctx))
668
+ throw new ZaloApiError.ZaloApiError("Invalid context " + JSON.stringify(ctx, null, 2));
669
+ const utils = {
670
+ makeURL(baseURL, params, apiVersion) {
671
+ return makeURL(ctx, baseURL, params, apiVersion);
672
+ },
673
+ encodeAES(data, t) {
674
+ return encodeAES(ctx.secretKey, data, t);
675
+ },
676
+ request(url, options, raw) {
677
+ return request(ctx, url, options, raw);
678
+ },
679
+ logger: logger(ctx),
680
+ resolve: (res, cb, isEncrypted) => resolveResponse(ctx, res, cb, isEncrypted),
681
+ };
682
+ return callback(api, ctx, utils);
683
+ };
684
+ };
685
+ }
686
+ function generateZaloUUID(userAgent) {
687
+ return crypto.randomUUID() + "-" + cryptojs.MD5(userAgent).toString();
688
+ }
689
+ /**
690
+ * Encrypts a 4-digit PIN to a 32-character hex string
691
+ * @param pin 4-digit PIN number
692
+ * @returns 32-character hex string
693
+ */
694
+ function encryptPin(pin) {
695
+ return crypto.createHash("md5").update(pin).digest("hex");
696
+ }
697
+
698
+ exports.ParamsEncryptor = ParamsEncryptor;
699
+ exports.apiFactory = apiFactory;
700
+ exports.decodeAES = decodeAES;
701
+ exports.decodeBase64ToBuffer = decodeBase64ToBuffer;
702
+ exports.decodeEventData = decodeEventData;
703
+ exports.decodeUnit8Array = decodeUnit8Array;
704
+ exports.decryptResp = decryptResp;
705
+ exports.encodeAES = encodeAES;
706
+ exports.encryptPin = encryptPin;
707
+ exports.formatTime = formatTime;
708
+ exports.generateZaloUUID = generateZaloUUID;
709
+ exports.getChromeVersionFromUA = getChromeVersionFromUA;
710
+ exports.getClientMessageType = getClientMessageType;
711
+ exports.getDefaultHeaders = getDefaultHeaders;
712
+ exports.getFileExtension = getFileExtension;
713
+ exports.getFileName = getFileName;
714
+ exports.getFileSize = getFileSize;
715
+ exports.getFriendEventType = getFriendEventType;
716
+ exports.getFullTimeFromMillisecond = getFullTimeFromMillisecond;
717
+ exports.getGifMetaData = getGifMetaData;
718
+ exports.getGroupEventType = getGroupEventType;
719
+ exports.getImageMetaData = getImageMetaData;
720
+ exports.getMd5LargeFileObject = getMd5LargeFileObject;
721
+ exports.getPlatformFromUA = getPlatformFromUA;
722
+ exports.getSignKey = getSignKey;
723
+ exports.handleZaloResponse = handleZaloResponse;
724
+ exports.hasOwn = hasOwn;
725
+ exports.isBun = isBun;
726
+ exports.logger = logger;
727
+ exports.makeURL = makeURL;
728
+ exports.removeUndefinedKeys = removeUndefinedKeys;
729
+ exports.request = request;
730
+ exports.resolveResponse = resolveResponse;
731
+ exports.strPadLeft = strPadLeft;