@softtynet/zca-js 2.3.2 → 2.3.4

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 (90) hide show
  1. package/README.md +63 -21
  2. package/dist/apis/auth/exportSession.d.ts +7 -0
  3. package/dist/apis/auth/exportSession.js +17 -0
  4. package/dist/apis/chat/getDirectMessageStatus.d.ts +14 -0
  5. package/dist/apis/chat/getDirectMessageStatus.js +52 -0
  6. package/dist/apis/chat/getSuggestedConversations.d.ts +5 -0
  7. package/dist/apis/chat/getSuggestedConversations.js +24 -0
  8. package/dist/apis/chat/updatePinConversations.d.ts +24 -0
  9. package/dist/apis/chat/updatePinConversations.js +40 -0
  10. package/dist/apis/friend/getFriendProfilesV2.d.ts +26 -0
  11. package/dist/apis/friend/getFriendProfilesV2.js +38 -0
  12. package/dist/apis/friend/getFriendsActivePCWeb.d.ts +6 -0
  13. package/dist/apis/friend/getFriendsActivePCWeb.js +15 -0
  14. package/dist/apis/friend/verifyFriend.d.ts +11 -0
  15. package/dist/apis/friend/verifyFriend.js +37 -0
  16. package/dist/apis/group/analyseGroup.d.ts +4 -0
  17. package/dist/apis/group/analyseGroup.js +28 -0
  18. package/dist/apis/group/checkQuotaCommunityMember.d.ts +6 -0
  19. package/dist/apis/group/checkQuotaCommunityMember.js +34 -0
  20. package/dist/apis/group/getE2eeGroupList.d.ts +7 -0
  21. package/dist/apis/group/getE2eeGroupList.js +15 -0
  22. package/dist/apis/group/getGroupChatHistory.d.ts +37 -6
  23. package/dist/apis/group/getGroupChatHistory.js +41 -19
  24. package/dist/apis/group/getGroupCloudMessagePath.d.ts +19 -0
  25. package/dist/apis/group/getGroupCloudMessagePath.js +51 -0
  26. package/dist/apis/group/getGroupHistoryLegacy.d.ts +7 -0
  27. package/dist/apis/group/getGroupHistoryLegacy.js +62 -0
  28. package/dist/apis/group/getGroupInfoV2.d.ts +30 -0
  29. package/dist/apis/group/getGroupInfoV2.js +48 -0
  30. package/dist/apis/group/getGroupListV3.d.ts +19 -0
  31. package/dist/apis/group/getGroupListV3.js +29 -0
  32. package/dist/apis/group/getGroupMessageStatus.d.ts +26 -0
  33. package/dist/apis/group/getGroupMessageStatus.js +77 -0
  34. package/dist/apis/group/getMultiGroupCloudMessages.d.ts +5 -0
  35. package/dist/apis/group/getMultiGroupCloudMessages.js +29 -0
  36. package/dist/apis/media/getConversationMedia.d.ts +10 -0
  37. package/dist/apis/media/getPersonalMedia.d.ts +8 -0
  38. package/dist/apis/media/getPersonalMedia.js +31 -0
  39. package/dist/apis/media/getPersonalMediaPreview.d.ts +3 -0
  40. package/dist/apis/media/getPersonalMediaPreview.js +24 -0
  41. package/dist/apis/media/removePersonalMedia.d.ts +9 -0
  42. package/dist/apis/media/removePersonalMedia.js +28 -0
  43. package/dist/apis.d.ts +57 -0
  44. package/dist/apis.js +95 -0
  45. package/dist/cjs/apis/auth/exportSession.cjs +22 -0
  46. package/dist/cjs/apis/chat/getDirectMessageStatus.cjs +58 -0
  47. package/dist/cjs/apis/chat/getSuggestedConversations.cjs +29 -0
  48. package/dist/cjs/apis/chat/updatePinConversations.cjs +45 -0
  49. package/dist/cjs/apis/friend/getFriendProfilesV2.cjs +43 -0
  50. package/dist/cjs/apis/friend/getFriendsActivePCWeb.cjs +20 -0
  51. package/dist/cjs/apis/friend/verifyFriend.cjs +42 -0
  52. package/dist/cjs/apis/group/analyseGroup.cjs +33 -0
  53. package/dist/cjs/apis/group/checkQuotaCommunityMember.cjs +39 -0
  54. package/dist/cjs/apis/group/getE2eeGroupList.cjs +20 -0
  55. package/dist/cjs/apis/group/getGroupChatHistory.cjs +41 -18
  56. package/dist/cjs/apis/group/getGroupCloudMessagePath.cjs +69 -0
  57. package/dist/cjs/apis/group/getGroupHistoryLegacy.cjs +80 -0
  58. package/dist/cjs/apis/group/getGroupInfoV2.cjs +53 -0
  59. package/dist/cjs/apis/group/getGroupListV3.cjs +34 -0
  60. package/dist/cjs/apis/group/getGroupMessageStatus.cjs +83 -0
  61. package/dist/cjs/apis/group/getMultiGroupCloudMessages.cjs +34 -0
  62. package/dist/cjs/apis/media/getPersonalMedia.cjs +36 -0
  63. package/dist/cjs/apis/media/getPersonalMediaPreview.cjs +29 -0
  64. package/dist/cjs/apis/media/removePersonalMedia.cjs +33 -0
  65. package/dist/cjs/apis.cjs +95 -0
  66. package/dist/cjs/constants/endpoints.cjs +13 -0
  67. package/dist/cjs/constants/protocol.cjs +1 -1
  68. package/dist/cjs/context.cjs +20 -2
  69. package/dist/cjs/core/zcloud-client.cjs +1 -2
  70. package/dist/cjs/crypto/ws-cipher.cjs +66 -2
  71. package/dist/cjs/index.cjs +2 -0
  72. package/dist/cjs/realtime/listener.cjs +18 -6
  73. package/dist/cjs/update.cjs +10 -1
  74. package/dist/cjs/utils.cjs +22 -5
  75. package/dist/constants/endpoints.d.ts +13 -0
  76. package/dist/constants/endpoints.js +13 -0
  77. package/dist/constants/protocol.d.ts +1 -1
  78. package/dist/constants/protocol.js +1 -1
  79. package/dist/context.d.ts +10 -0
  80. package/dist/context.js +20 -2
  81. package/dist/crypto/ws-cipher.d.ts +7 -0
  82. package/dist/crypto/ws-cipher.js +64 -2
  83. package/dist/index.d.ts +22 -3
  84. package/dist/index.js +1 -1
  85. package/dist/realtime/listener.d.ts +1 -0
  86. package/dist/realtime/listener.js +18 -6
  87. package/dist/update.js +10 -1
  88. package/dist/utils.js +17 -4
  89. package/index.d.ts +1 -1
  90. package/package.json +15 -5
package/dist/cjs/apis.cjs CHANGED
@@ -10,6 +10,7 @@ var addQuickMessage = require('./apis/business/addQuickMessage.cjs');
10
10
  var addReaction = require('./apis/chat/addReaction.cjs');
11
11
  var addUnreadMark = require('./apis/chat/addUnreadMark.cjs');
12
12
  var addUserToGroup = require('./apis/group/addUserToGroup.cjs');
13
+ var analyseGroup = require('./apis/group/analyseGroup.cjs');
13
14
  var blockUser = require('./apis/friend/blockUser.cjs');
14
15
  var blockViewFeed = require('./apis/friend/blockViewFeed.cjs');
15
16
  var cancelPullMobile = require('./apis/sync/cancelPullMobile.cjs');
@@ -19,6 +20,7 @@ var changeFriendAlias = require('./apis/friend/changeFriendAlias.cjs');
19
20
  var changeGroupAvatar = require('./apis/group/changeGroupAvatar.cjs');
20
21
  var changeGroupName = require('./apis/group/changeGroupName.cjs');
21
22
  var changeGroupOwner = require('./apis/group/changeGroupOwner.cjs');
23
+ var checkQuotaCommunityMember = require('./apis/group/checkQuotaCommunityMember.cjs');
22
24
  var clearUnreadFriendRequests = require('./apis/friend/clearUnreadFriendRequests.cjs');
23
25
  var createAutoReply = require('./apis/business/createAutoReply.cjs');
24
26
  var createBankAccount = require('./apis/business/createBankAccount.cjs');
@@ -45,6 +47,7 @@ var editReminder = require('./apis/board/editReminder.cjs');
45
47
  var enableGroupLink = require('./apis/group/enableGroupLink.cjs');
46
48
  var encryptGids = require('./apis/auth/encryptGids.cjs');
47
49
  var endVoiceCall = require('./apis/call/endVoiceCall.cjs');
50
+ var exportSession = require('./apis/auth/exportSession.cjs');
48
51
  var fetchAccountInfo = require('./apis/profile/fetchAccountInfo.cjs');
49
52
  var findUser = require('./apis/friend/findUser.cjs');
50
53
  var findUserByUsername = require('./apis/friend/findUserByUsername.cjs');
@@ -68,6 +71,8 @@ var getCloudViewerKey = require('./apis/zcloud/getCloudViewerKey.cjs');
68
71
  var getContext = require('./apis/auth/getContext.cjs');
69
72
  var getConversationMedia = require('./apis/media/getConversationMedia.cjs');
70
73
  var getCookie = require('./apis/auth/getCookie.cjs');
74
+ var getDirectMessageStatus = require('./apis/chat/getDirectMessageStatus.cjs');
75
+ var getE2eeGroupList = require('./apis/group/getE2eeGroupList.cjs');
71
76
  var getEmojiStatusConfig = require('./apis/profile/getEmojiStatusConfig.cjs');
72
77
  var getExtraFriendInfo = require('./apis/friend/getExtraFriendInfo.cjs');
73
78
  var getExtraGroupInfo = require('./apis/group/getExtraGroupInfo.cjs');
@@ -76,19 +81,26 @@ var getFamilyUsage = require('./apis/zcloud/getFamilyUsage.cjs');
76
81
  var getFamilyViewerKey = require('./apis/zcloud/getFamilyViewerKey.cjs');
77
82
  var getFriendBoardList = require('./apis/friend/getFriendBoardList.cjs');
78
83
  var getFriendOnlines = require('./apis/friend/getFriendOnlines.cjs');
84
+ var getFriendProfilesV2 = require('./apis/friend/getFriendProfilesV2.cjs');
79
85
  var getFriendRecommendations = require('./apis/friend/getFriendRecommendations.cjs');
80
86
  var getFriendRequestStatus = require('./apis/friend/getFriendRequestStatus.cjs');
87
+ var getFriendsActivePCWeb = require('./apis/friend/getFriendsActivePCWeb.cjs');
81
88
  var getFriendsEmojiStatus = require('./apis/friend/getFriendsEmojiStatus.cjs');
82
89
  var getFullAvatar = require('./apis/profile/getFullAvatar.cjs');
83
90
  var getGroupBlockedMember = require('./apis/group/getGroupBlockedMember.cjs');
84
91
  var getGroupChatHistory = require('./apis/group/getGroupChatHistory.cjs');
85
92
  var getGroupCloudMessageJump = require('./apis/group/getGroupCloudMessageJump.cjs');
93
+ var getGroupCloudMessagePath = require('./apis/group/getGroupCloudMessagePath.cjs');
94
+ var getGroupHistoryLegacy = require('./apis/group/getGroupHistoryLegacy.cjs');
86
95
  var getGroupInfo = require('./apis/group/getGroupInfo.cjs');
96
+ var getGroupInfoV2 = require('./apis/group/getGroupInfoV2.cjs');
87
97
  var getGroupInviteBoxInfo = require('./apis/group/getGroupInviteBoxInfo.cjs');
88
98
  var getGroupInviteBoxList = require('./apis/group/getGroupInviteBoxList.cjs');
89
99
  var getGroupLinkDetail = require('./apis/group/getGroupLinkDetail.cjs');
90
100
  var getGroupLinkInfo = require('./apis/group/getGroupLinkInfo.cjs');
101
+ var getGroupListV3 = require('./apis/group/getGroupListV3.cjs');
91
102
  var getGroupMembersInfo = require('./apis/group/getGroupMembersInfo.cjs');
103
+ var getGroupMessageStatus = require('./apis/group/getGroupMessageStatus.cjs');
92
104
  var getHiddenConversations = require('./apis/chat/getHiddenConversations.cjs');
93
105
  var getLabels = require('./apis/business/getLabels.cjs');
94
106
  var getLastReadContactTab = require('./apis/friend/getLastReadContactTab.cjs');
@@ -102,12 +114,15 @@ var getListPinTopics = require('./apis/board/getListPinTopics.cjs');
102
114
  var getListReminder = require('./apis/board/getListReminder.cjs');
103
115
  var getMediaStorePreview = require('./apis/media/getMediaStorePreview.cjs');
104
116
  var getMiniProfile = require('./apis/profile/getMiniProfile.cjs');
117
+ var getMultiGroupCloudMessages = require('./apis/group/getMultiGroupCloudMessages.cjs');
105
118
  var getMultiUsersByPhones = require('./apis/friend/getMultiUsersByPhones.cjs');
106
119
  var getMute = require('./apis/chat/getMute.cjs');
107
120
  var getNoisedIds = require('./apis/auth/getNoisedIds.cjs');
108
121
  var getOwnId = require('./apis/auth/getOwnId.cjs');
109
122
  var getPendingGroupMembers = require('./apis/group/getPendingGroupMembers.cjs');
110
123
  var getPersonalizedStickerList = require('./apis/sticker/getPersonalizedStickerList.cjs');
124
+ var getPersonalMedia = require('./apis/media/getPersonalMedia.cjs');
125
+ var getPersonalMediaPreview = require('./apis/media/getPersonalMediaPreview.cjs');
111
126
  var getPhonebookV2 = require('./apis/friend/getPhonebookV2.cjs');
112
127
  var getPinConversations = require('./apis/chat/getPinConversations.cjs');
113
128
  var getPollDetail = require('./apis/board/getPollDetail.cjs');
@@ -131,6 +146,7 @@ var getStickers = require('./apis/sticker/getStickers.cjs');
131
146
  var getStickersDetail = require('./apis/sticker/getStickersDetail.cjs');
132
147
  var getStickerSuggestion = require('./apis/sticker/getStickerSuggestion.cjs');
133
148
  var getStickerSuggestKeywords = require('./apis/sticker/getStickerSuggestKeywords.cjs');
149
+ var getSuggestedConversations = require('./apis/chat/getSuggestedConversations.cjs');
134
150
  var getSyncData = require('./apis/sync/getSyncData.cjs');
135
151
  var getUnreadMark = require('./apis/chat/getUnreadMark.cjs');
136
152
  var getUsageMyCloud = require('./apis/zcloud/getUsageMyCloud.cjs');
@@ -155,6 +171,7 @@ var removeFriend = require('./apis/friend/removeFriend.cjs');
155
171
  var removeFriendAlias = require('./apis/friend/removeFriendAlias.cjs');
156
172
  var removeGroupBlockedMember = require('./apis/group/removeGroupBlockedMember.cjs');
157
173
  var removeGroupDeputy = require('./apis/group/removeGroupDeputy.cjs');
174
+ var removePersonalMedia = require('./apis/media/removePersonalMedia.cjs');
158
175
  var removeQuickMessage = require('./apis/business/removeQuickMessage.cjs');
159
176
  var removeReminder = require('./apis/board/removeReminder.cjs');
160
177
  var removeUnreadMark = require('./apis/chat/removeUnreadMark.cjs');
@@ -196,6 +213,7 @@ var updateGroupSettings = require('./apis/group/updateGroupSettings.cjs');
196
213
  var updateHiddenConversPin = require('./apis/chat/updateHiddenConversPin.cjs');
197
214
  var updateLabels = require('./apis/business/updateLabels.cjs');
198
215
  var updateLang = require('./apis/auth/updateLang.cjs');
216
+ var updatePinConversations = require('./apis/chat/updatePinConversations.cjs');
199
217
  var updateProductCatalog = require('./apis/business/updateProductCatalog.cjs');
200
218
  var updateProfile = require('./apis/profile/updateProfile.cjs');
201
219
  var updateProfileBio = require('./apis/profile/updateProfileBio.cjs');
@@ -206,6 +224,7 @@ var upgradeGroupToCommunity = require('./apis/group/upgradeGroupToCommunity.cjs'
206
224
  var uploadAttachment = require('./apis/media/uploadAttachment.cjs');
207
225
  var uploadProductPhoto = require('./apis/business/uploadProductPhoto.cjs');
208
226
  var verifyCloudMedia = require('./apis/zcloud/verifyCloudMedia.cjs');
227
+ var verifyFriend = require('./apis/friend/verifyFriend.cjs');
209
228
  var voiceToText = require('./apis/media/voiceToText.cjs');
210
229
  var votePoll = require('./apis/board/votePoll.cjs');
211
230
  var custom = require('./apis/custom.cjs');
@@ -231,6 +250,7 @@ class API {
231
250
  const createNamespace = (api) => ({
232
251
  get decryptGids() { return api.decryptGids; },
233
252
  get encryptGids() { return api.encryptGids; },
253
+ get exportSession() { return api.exportSession; },
234
254
  get getContext() { return api.getContext; },
235
255
  get getCookie() { return api.getCookie; },
236
256
  get getListDevice() { return api.getListDevice; },
@@ -326,12 +346,14 @@ class API {
326
346
  get forwardMessage() { return api.forwardMessage; },
327
347
  get getArchivedChatList() { return api.getArchivedChatList; },
328
348
  get getAutoDeleteChat() { return api.getAutoDeleteChat; },
349
+ get getDirectMessageStatus() { return api.getDirectMessageStatus; },
329
350
  get getHiddenConversations() { return api.getHiddenConversations; },
330
351
  get getLastSeen() { return api.getLastSeen; },
331
352
  get getLastSeenReaction() { return api.getLastSeenReaction; },
332
353
  get getMute() { return api.getMute; },
333
354
  get getPinConversations() { return api.getPinConversations; },
334
355
  get getRecentSearchList() { return api.getRecentSearchList; },
356
+ get getSuggestedConversations() { return api.getSuggestedConversations; },
335
357
  get getUnreadMark() { return api.getUnreadMark; },
336
358
  get parseLink() { return api.parseLink; },
337
359
  get preloadConversations() { return api.preloadConversations; },
@@ -356,6 +378,7 @@ class API {
356
378
  get updateArchivedChatList() { return api.updateArchivedChatList; },
357
379
  get updateAutoDeleteChat() { return api.updateAutoDeleteChat; },
358
380
  get updateHiddenConversPin() { return api.updateHiddenConversPin; },
381
+ get updatePinConversations() { return api.updatePinConversations; },
359
382
  get updateRecentSearch() { return api.updateRecentSearch; },
360
383
  });
361
384
  this._domains.chat = createNamespace(this);
@@ -380,8 +403,10 @@ class API {
380
403
  get getExtraFriendInfo() { return api.getExtraFriendInfo; },
381
404
  get getFriendBoardList() { return api.getFriendBoardList; },
382
405
  get getFriendOnlines() { return api.getFriendOnlines; },
406
+ get getFriendProfilesV2() { return api.getFriendProfilesV2; },
383
407
  get getFriendRecommendations() { return api.getFriendRecommendations; },
384
408
  get getFriendRequestStatus() { return api.getFriendRequestStatus; },
409
+ get getFriendsActivePCWeb() { return api.getFriendsActivePCWeb; },
385
410
  get getFriendsEmojiStatus() { return api.getFriendsEmojiStatus; },
386
411
  get getLastReadContactTab() { return api.getLastReadContactTab; },
387
412
  get getMultiUsersByPhones() { return api.getMultiUsersByPhones; },
@@ -395,6 +420,7 @@ class API {
395
420
  get sendFriendRequest() { return api.sendFriendRequest; },
396
421
  get unblockUser() { return api.unblockUser; },
397
422
  get undoFriendRequest() { return api.undoFriendRequest; },
423
+ get verifyFriend() { return api.verifyFriend; },
398
424
  });
399
425
  this._domains.friend = createNamespace(this);
400
426
  }
@@ -406,25 +432,34 @@ class API {
406
432
  get addGroupBlockedMember() { return api.addGroupBlockedMember; },
407
433
  get addGroupDeputy() { return api.addGroupDeputy; },
408
434
  get addUserToGroup() { return api.addUserToGroup; },
435
+ get analyseGroup() { return api.analyseGroup; },
409
436
  get changeGroupAvatar() { return api.changeGroupAvatar; },
410
437
  get changeGroupName() { return api.changeGroupName; },
411
438
  get changeGroupOwner() { return api.changeGroupOwner; },
439
+ get checkQuotaCommunityMember() { return api.checkQuotaCommunityMember; },
412
440
  get createGroup() { return api.createGroup; },
413
441
  get deleteGroupInviteBox() { return api.deleteGroupInviteBox; },
414
442
  get disableGroupLink() { return api.disableGroupLink; },
415
443
  get disperseGroup() { return api.disperseGroup; },
416
444
  get enableGroupLink() { return api.enableGroupLink; },
417
445
  get getAllGroups() { return api.getAllGroups; },
446
+ get getE2eeGroupList() { return api.getE2eeGroupList; },
418
447
  get getExtraGroupInfo() { return api.getExtraGroupInfo; },
419
448
  get getGroupBlockedMember() { return api.getGroupBlockedMember; },
420
449
  get getGroupChatHistory() { return api.getGroupChatHistory; },
421
450
  get getGroupCloudMessageJump() { return api.getGroupCloudMessageJump; },
451
+ get getGroupCloudMessagePath() { return api.getGroupCloudMessagePath; },
452
+ get getGroupHistoryLegacy() { return api.getGroupHistoryLegacy; },
422
453
  get getGroupInfo() { return api.getGroupInfo; },
454
+ get getGroupInfoV2() { return api.getGroupInfoV2; },
423
455
  get getGroupInviteBoxInfo() { return api.getGroupInviteBoxInfo; },
424
456
  get getGroupInviteBoxList() { return api.getGroupInviteBoxList; },
425
457
  get getGroupLinkDetail() { return api.getGroupLinkDetail; },
426
458
  get getGroupLinkInfo() { return api.getGroupLinkInfo; },
459
+ get getGroupListV3() { return api.getGroupListV3; },
427
460
  get getGroupMembersInfo() { return api.getGroupMembersInfo; },
461
+ get getGroupMessageStatus() { return api.getGroupMessageStatus; },
462
+ get getMultiGroupCloudMessages() { return api.getMultiGroupCloudMessages; },
428
463
  get getPendingGroupMembers() { return api.getPendingGroupMembers; },
429
464
  get getQuotaCommunity() { return api.getQuotaCommunity; },
430
465
  get getRelatedFriendGroup() { return api.getRelatedFriendGroup; },
@@ -448,7 +483,10 @@ class API {
448
483
  const createNamespace = (api) => ({
449
484
  get getConversationMedia() { return api.getConversationMedia; },
450
485
  get getMediaStorePreview() { return api.getMediaStorePreview; },
486
+ get getPersonalMedia() { return api.getPersonalMedia; },
487
+ get getPersonalMediaPreview() { return api.getPersonalMediaPreview; },
451
488
  get removeConversationMedia() { return api.removeConversationMedia; },
489
+ get removePersonalMedia() { return api.removePersonalMedia; },
452
490
  get uploadAttachment() { return api.uploadAttachment; },
453
491
  get voiceToText() { return api.voiceToText; },
454
492
  });
@@ -555,6 +593,9 @@ class API {
555
593
  get addUserToGroup() {
556
594
  return (this._cache.addUserToGroup ??= addUserToGroup.addUserToGroupFactory(this.ctx, this));
557
595
  }
596
+ get analyseGroup() {
597
+ return (this._cache.analyseGroup ??= analyseGroup.analyseGroupFactory(this.ctx, this));
598
+ }
558
599
  get blockUser() {
559
600
  return (this._cache.blockUser ??= blockUser.blockUserFactory(this.ctx, this));
560
601
  }
@@ -582,6 +623,9 @@ class API {
582
623
  get changeGroupOwner() {
583
624
  return (this._cache.changeGroupOwner ??= changeGroupOwner.changeGroupOwnerFactory(this.ctx, this));
584
625
  }
626
+ get checkQuotaCommunityMember() {
627
+ return (this._cache.checkQuotaCommunityMember ??= checkQuotaCommunityMember.checkQuotaCommunityMemberFactory(this.ctx, this));
628
+ }
585
629
  get clearUnreadFriendRequests() {
586
630
  return (this._cache.clearUnreadFriendRequests ??= clearUnreadFriendRequests.clearUnreadFriendRequestsFactory(this.ctx, this));
587
631
  }
@@ -660,6 +704,9 @@ class API {
660
704
  get endVoiceCall() {
661
705
  return (this._cache.endVoiceCall ??= endVoiceCall.endVoiceCallFactory(this.ctx, this));
662
706
  }
707
+ get exportSession() {
708
+ return (this._cache.exportSession ??= exportSession.exportSessionFactory(this.ctx, this));
709
+ }
663
710
  get fetchAccountInfo() {
664
711
  return (this._cache.fetchAccountInfo ??= fetchAccountInfo.fetchAccountInfoFactory(this.ctx, this));
665
712
  }
@@ -729,6 +776,12 @@ class API {
729
776
  get getCookie() {
730
777
  return (this._cache.getCookie ??= getCookie.getCookieFactory(this.ctx, this));
731
778
  }
779
+ get getDirectMessageStatus() {
780
+ return (this._cache.getDirectMessageStatus ??= getDirectMessageStatus.getDirectMessageStatusFactory(this.ctx, this));
781
+ }
782
+ get getE2eeGroupList() {
783
+ return (this._cache.getE2eeGroupList ??= getE2eeGroupList.getE2eeGroupListFactory(this.ctx, this));
784
+ }
732
785
  get getEmojiStatusConfig() {
733
786
  return (this._cache.getEmojiStatusConfig ??= getEmojiStatusConfig.getEmojiStatusConfigFactory(this.ctx, this));
734
787
  }
@@ -753,12 +806,18 @@ class API {
753
806
  get getFriendOnlines() {
754
807
  return (this._cache.getFriendOnlines ??= getFriendOnlines.getFriendOnlinesFactory(this.ctx, this));
755
808
  }
809
+ get getFriendProfilesV2() {
810
+ return (this._cache.getFriendProfilesV2 ??= getFriendProfilesV2.getFriendProfilesV2Factory(this.ctx, this));
811
+ }
756
812
  get getFriendRecommendations() {
757
813
  return (this._cache.getFriendRecommendations ??= getFriendRecommendations.getFriendRecommendationsFactory(this.ctx, this));
758
814
  }
759
815
  get getFriendRequestStatus() {
760
816
  return (this._cache.getFriendRequestStatus ??= getFriendRequestStatus.getFriendRequestStatusFactory(this.ctx, this));
761
817
  }
818
+ get getFriendsActivePCWeb() {
819
+ return (this._cache.getFriendsActivePCWeb ??= getFriendsActivePCWeb.getFriendsActivePCWebFactory(this.ctx, this));
820
+ }
762
821
  get getFriendsEmojiStatus() {
763
822
  return (this._cache.getFriendsEmojiStatus ??= getFriendsEmojiStatus.getFriendsEmojiStatusFactory(this.ctx, this));
764
823
  }
@@ -774,9 +833,18 @@ class API {
774
833
  get getGroupCloudMessageJump() {
775
834
  return (this._cache.getGroupCloudMessageJump ??= getGroupCloudMessageJump.getGroupCloudMessageJumpFactory(this.ctx, this));
776
835
  }
836
+ get getGroupCloudMessagePath() {
837
+ return (this._cache.getGroupCloudMessagePath ??= getGroupCloudMessagePath.getGroupCloudMessagePathFactory(this.ctx, this));
838
+ }
839
+ get getGroupHistoryLegacy() {
840
+ return (this._cache.getGroupHistoryLegacy ??= getGroupHistoryLegacy.getGroupHistoryLegacyFactory(this.ctx, this));
841
+ }
777
842
  get getGroupInfo() {
778
843
  return (this._cache.getGroupInfo ??= getGroupInfo.getGroupInfoFactory(this.ctx, this));
779
844
  }
845
+ get getGroupInfoV2() {
846
+ return (this._cache.getGroupInfoV2 ??= getGroupInfoV2.getGroupInfoV2Factory(this.ctx, this));
847
+ }
780
848
  get getGroupInviteBoxInfo() {
781
849
  return (this._cache.getGroupInviteBoxInfo ??= getGroupInviteBoxInfo.getGroupInviteBoxInfoFactory(this.ctx, this));
782
850
  }
@@ -789,9 +857,15 @@ class API {
789
857
  get getGroupLinkInfo() {
790
858
  return (this._cache.getGroupLinkInfo ??= getGroupLinkInfo.getGroupLinkInfoFactory(this.ctx, this));
791
859
  }
860
+ get getGroupListV3() {
861
+ return (this._cache.getGroupListV3 ??= getGroupListV3.getGroupListV3Factory(this.ctx, this));
862
+ }
792
863
  get getGroupMembersInfo() {
793
864
  return (this._cache.getGroupMembersInfo ??= getGroupMembersInfo.getGroupMembersInfoFactory(this.ctx, this));
794
865
  }
866
+ get getGroupMessageStatus() {
867
+ return (this._cache.getGroupMessageStatus ??= getGroupMessageStatus.getGroupMessageStatusFactory(this.ctx, this));
868
+ }
795
869
  get getHiddenConversations() {
796
870
  return (this._cache.getHiddenConversations ??= getHiddenConversations.getHiddenConversationsFactory(this.ctx, this));
797
871
  }
@@ -831,6 +905,9 @@ class API {
831
905
  get getMiniProfile() {
832
906
  return (this._cache.getMiniProfile ??= getMiniProfile.getMiniProfileFactory(this.ctx, this));
833
907
  }
908
+ get getMultiGroupCloudMessages() {
909
+ return (this._cache.getMultiGroupCloudMessages ??= getMultiGroupCloudMessages.getMultiGroupCloudMessagesFactory(this.ctx, this));
910
+ }
834
911
  get getMultiUsersByPhones() {
835
912
  return (this._cache.getMultiUsersByPhones ??= getMultiUsersByPhones.getMultiUsersByPhonesFactory(this.ctx, this));
836
913
  }
@@ -849,6 +926,12 @@ class API {
849
926
  get getPersonalizedStickerList() {
850
927
  return (this._cache.getPersonalizedStickerList ??= getPersonalizedStickerList.getPersonalizedStickerListFactory(this.ctx, this));
851
928
  }
929
+ get getPersonalMedia() {
930
+ return (this._cache.getPersonalMedia ??= getPersonalMedia.getPersonalMediaFactory(this.ctx, this));
931
+ }
932
+ get getPersonalMediaPreview() {
933
+ return (this._cache.getPersonalMediaPreview ??= getPersonalMediaPreview.getPersonalMediaPreviewFactory(this.ctx, this));
934
+ }
852
935
  get getPhonebookV2() {
853
936
  return (this._cache.getPhonebookV2 ??= getPhonebookV2.getPhonebookV2Factory(this.ctx, this));
854
937
  }
@@ -918,6 +1001,9 @@ class API {
918
1001
  get getStickerSuggestKeywords() {
919
1002
  return (this._cache.getStickerSuggestKeywords ??= getStickerSuggestKeywords.getStickerSuggestKeywordsFactory(this.ctx, this));
920
1003
  }
1004
+ get getSuggestedConversations() {
1005
+ return (this._cache.getSuggestedConversations ??= getSuggestedConversations.getSuggestedConversationsFactory(this.ctx, this));
1006
+ }
921
1007
  get getSyncData() {
922
1008
  return (this._cache.getSyncData ??= getSyncData.getSyncDataFactory(this.ctx, this));
923
1009
  }
@@ -990,6 +1076,9 @@ class API {
990
1076
  get removeGroupDeputy() {
991
1077
  return (this._cache.removeGroupDeputy ??= removeGroupDeputy.removeGroupDeputyFactory(this.ctx, this));
992
1078
  }
1079
+ get removePersonalMedia() {
1080
+ return (this._cache.removePersonalMedia ??= removePersonalMedia.removePersonalMediaFactory(this.ctx, this));
1081
+ }
993
1082
  get removeQuickMessage() {
994
1083
  return (this._cache.removeQuickMessage ??= removeQuickMessage.removeQuickMessageFactory(this.ctx, this));
995
1084
  }
@@ -1113,6 +1202,9 @@ class API {
1113
1202
  get updateLang() {
1114
1203
  return (this._cache.updateLang ??= updateLang.updateLangFactory(this.ctx, this));
1115
1204
  }
1205
+ get updatePinConversations() {
1206
+ return (this._cache.updatePinConversations ??= updatePinConversations.updatePinConversationsFactory(this.ctx, this));
1207
+ }
1116
1208
  get updateProductCatalog() {
1117
1209
  return (this._cache.updateProductCatalog ??= updateProductCatalog.updateProductCatalogFactory(this.ctx, this));
1118
1210
  }
@@ -1143,6 +1235,9 @@ class API {
1143
1235
  get verifyCloudMedia() {
1144
1236
  return (this._cache.verifyCloudMedia ??= verifyCloudMedia.verifyCloudMediaFactory(this.ctx, this));
1145
1237
  }
1238
+ get verifyFriend() {
1239
+ return (this._cache.verifyFriend ??= verifyFriend.verifyFriendFactory(this.ctx, this));
1240
+ }
1146
1241
  get voiceToText() {
1147
1242
  return (this._cache.voiceToText ??= voiceToText.voiceToTextFactory(this.ctx, this));
1148
1243
  }
@@ -66,6 +66,19 @@ const ZALO_ENDPOINTS = {
66
66
  LIST: "/api/recentsearch/list",
67
67
  UPDATE: "/api/recentsearch/update",
68
68
  },
69
+ GROUP: {
70
+ GET_LIST_V3: "/api/group/getlg/v3",
71
+ GET_LIST_V4: "/api/group/getlg/v4",
72
+ GET_INFO_V1: "/api/group/getgi",
73
+ GET_INFO_V2: "/api/group/getgi/v2",
74
+ GET_MULTI_INFO_V1: "/api/group/getmg",
75
+ GET_MULTI_INFO_V2: "/api/group/getmg-v2",
76
+ GET_STATUS_MSG: "/api/group/getStatusMsg",
77
+ HISTORY_LEGACY: "/api/group/history",
78
+ CLOUD_MSG_RECENT_V2: "/api/cm/getrecentv2",
79
+ CLOUD_MSG_OLD_V2: "/api/cm/getoldv2",
80
+ CLOUD_MSG_JUMP_V2: "/api/cm/rgetv2",
81
+ },
69
82
  };
70
83
 
71
84
  exports.ZALO_ENDPOINTS = ZALO_ENDPOINTS;
@@ -12,7 +12,7 @@ const ZALO_PROTOCOL = {
12
12
  API_VERSION: 689,
13
13
  DEFAULT_API_VERSION: 689,
14
14
  /** Phiên bản SDK hiện tại */
15
- SDK_VERSION: "2.3.2",
15
+ SDK_VERSION: "2.3.4",
16
16
  /** Mã zpw_type đặc thù dành riêng cho phân hệ Gọi Thoại & Video (binary C++ ZaloCall) */
17
17
  VOICECALL_API_TYPE: 24,
18
18
  /** Phiên bản mã hóa ZCID (ParamDecryptor) */
@@ -5,15 +5,32 @@ var defaults = require('./constants/defaults.cjs');
5
5
 
6
6
  const _5_MINUTES = defaults.ZALO_DEFAULTS.UPLOAD.CALLBACK_TTL_MS;
7
7
  class CallbacksMap extends Map {
8
+ timers = new Map();
8
9
  /**
9
10
  * @param ttl Time to live in milliseconds. Default is 5 minutes.
10
11
  */
11
12
  set(key, value, ttl = _5_MINUTES) {
12
- setTimeout(() => {
13
- this.delete(key);
13
+ const existing = this.timers.get(key);
14
+ if (existing)
15
+ clearTimeout(existing);
16
+ const timer = setTimeout(() => {
17
+ this.timers.delete(key);
18
+ super.delete(key);
14
19
  }, ttl);
20
+ if (typeof timer === "object" && timer !== null && "unref" in timer && typeof timer.unref === "function") {
21
+ timer.unref();
22
+ }
23
+ this.timers.set(key, timer);
15
24
  return super.set(key, value);
16
25
  }
26
+ delete(key) {
27
+ const existing = this.timers.get(key);
28
+ if (existing) {
29
+ clearTimeout(existing);
30
+ this.timers.delete(key);
31
+ }
32
+ return super.delete(key);
33
+ }
17
34
  }
18
35
  const createContext = (apiType = protocol.ZALO_PROTOCOL.API_TYPE, apiVersion = protocol.ZALO_PROTOCOL.API_VERSION) => ({
19
36
  API_TYPE: apiType,
@@ -24,6 +41,7 @@ const createContext = (apiType = protocol.ZALO_PROTOCOL.API_TYPE, apiVersion = p
24
41
  checkUpdate: defaults.ZALO_DEFAULTS.OPTIONS.CHECK_UPDATE,
25
42
  logging: defaults.ZALO_DEFAULTS.OPTIONS.LOGGING,
26
43
  polyfill: global.fetch,
44
+ requestTimeout: 30000,
27
45
  },
28
46
  secretKey: null,
29
47
  });
@@ -4,8 +4,7 @@ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
4
  require('crypto-js');
5
5
  require('node:crypto');
6
6
  var zcloudCipher = require('../crypto/zcloud-cipher.cjs');
7
- require('pako');
8
- require('json-bigint');
7
+ require('../crypto/ws-cipher.cjs');
9
8
 
10
9
  /**
11
10
  * Thực thi request tới hệ sinh thái ZCloud (`zcld.chat.zalo.me`) kèm cơ chế:
@@ -5,6 +5,68 @@ var pako = require('pako');
5
5
  var JSONBig = require('json-bigint');
6
6
  var ZaloApiError = require('../Errors/ZaloApiError.cjs');
7
7
 
8
+ const jsonBigString = JSONBig({ storeAsString: true });
9
+ const DEFAULT_BIGINT_ID_FIELDS = [
10
+ "owner_id",
11
+ "group_id",
12
+ "uidFrom",
13
+ "uidTo",
14
+ "uid",
15
+ "ownerId",
16
+ "destId",
17
+ "srcId",
18
+ "fromUid",
19
+ "threadId",
20
+ "globalMsgId",
21
+ "global_msg_id",
22
+ "globalDelMsgId",
23
+ "msgId",
24
+ "refMessageId",
25
+ "cliMsgId",
26
+ "client_msg_id",
27
+ "actionId",
28
+ "lastActionIdOther",
29
+ "lastActionId",
30
+ "resetLastActionId",
31
+ "lastId",
32
+ "ids",
33
+ "topicId",
34
+ "reminderId",
35
+ "eventId",
36
+ ];
37
+ /**
38
+ * Tiền xử lý chuỗi JSON trước khi `JSON.parse` (tương đương `preParse(e, t)` trong `app.asar` của Zalo PC).
39
+ * Bọc dấu ngoặc kép quanh các trường định danh 64-bit (`owner_id`, `group_id`, hoặc các số nguyên >= 16 chữ số
40
+ * vượt quá `Number.MAX_SAFE_INTEGER`) để tránh mất 3 chữ số cuối của UID/MsgId do làm tròn IEEE-754.
41
+ */
42
+ function preParseJsonIds(jsonStr, alwaysStringFields = ["owner_id", "group_id"], bigIntSafeFields = DEFAULT_BIGINT_ID_FIELDS) {
43
+ if (!jsonStr || typeof jsonStr !== "string")
44
+ return jsonStr;
45
+ const alwaysSet = new Set(alwaysStringFields);
46
+ const allFields = Array.from(new Set([...alwaysStringFields, ...bigIntSafeFields]));
47
+ if (allFields.length === 0)
48
+ return jsonStr;
49
+ const escapedKeys = allFields.map((k) => k.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|");
50
+ const keyValueRegex = new RegExp(`"(${escapedKeys})"(\\s*:\\s*)(\\d+|\\[\\s*\\d+(?:\\s*,\\s*\\d+)*\\s*\\])`, "g");
51
+ return jsonStr.replace(keyValueRegex, (fullMatch, key, sep, rawVal) => {
52
+ const forceString = alwaysSet.has(key);
53
+ if (rawVal.startsWith("[")) {
54
+ const inner = rawVal.slice(1, -1);
55
+ const parts = inner.split(",").map((part) => {
56
+ const trimmed = part.trim();
57
+ if (forceString || trimmed.length >= 16 || Number(trimmed) > Number.MAX_SAFE_INTEGER) {
58
+ return `"${trimmed}"`;
59
+ }
60
+ return trimmed;
61
+ });
62
+ return `"${key}"${sep}[${parts.join(",")}]`;
63
+ }
64
+ if (forceString || rawVal.length >= 16 || Number(rawVal) > Number.MAX_SAFE_INTEGER) {
65
+ return `"${key}"${sep}"${rawVal}"`;
66
+ }
67
+ return fullMatch;
68
+ });
69
+ }
8
70
  function decodeBase64ToBuffer(data) {
9
71
  return Buffer.from(data, "base64");
10
72
  }
@@ -26,7 +88,7 @@ async function decodeEventData(parsed, cipherKey) {
26
88
  const rawData = parsed.data;
27
89
  const encryptType = parsed.encrypt;
28
90
  if (encryptType === 0)
29
- return JSON.parse(rawData);
91
+ return jsonBigString.parse(preParseJsonIds(rawData));
30
92
  const decodedBuffer = decodeBase64ToBuffer(encryptType === 1 ? rawData : decodeURIComponent(rawData));
31
93
  let decryptedBuffer = decodedBuffer;
32
94
  if (encryptType !== 1) {
@@ -51,9 +113,11 @@ async function decodeEventData(parsed, cipherKey) {
51
113
  const decodedData = decodeUnit8Array(decompressedBuffer);
52
114
  if (!decodedData)
53
115
  return;
54
- return JSONBig.parse(decodedData);
116
+ return jsonBigString.parse(preParseJsonIds(decodedData));
55
117
  }
56
118
 
119
+ exports.DEFAULT_BIGINT_ID_FIELDS = DEFAULT_BIGINT_ID_FIELDS;
57
120
  exports.decodeBase64ToBuffer = decodeBase64ToBuffer;
58
121
  exports.decodeEventData = decodeEventData;
59
122
  exports.decodeUnit8Array = decodeUnit8Array;
123
+ exports.preParseJsonIds = preParseJsonIds;
@@ -159,9 +159,11 @@ exports.deriveZdbAesKey = zdbCipher.deriveZdbAesKey;
159
159
  exports.generateRSAKeyPair = zdbCipher.generateRSAKeyPair;
160
160
  exports.parseZdbHeader = zdbCipher.parseZdbHeader;
161
161
  exports.rsaDecryptPkcs1Manual = zdbCipher.rsaDecryptPkcs1Manual;
162
+ exports.DEFAULT_BIGINT_ID_FIELDS = wsCipher.DEFAULT_BIGINT_ID_FIELDS;
162
163
  exports.decodeBase64ToBuffer = wsCipher.decodeBase64ToBuffer;
163
164
  exports.decodeEventData = wsCipher.decodeEventData;
164
165
  exports.decodeUnit8Array = wsCipher.decodeUnit8Array;
166
+ exports.preParseJsonIds = wsCipher.preParseJsonIds;
165
167
  exports.getServiceEndpoint = serviceRouter.getServiceEndpoint;
166
168
  exports.getServiceEndpoints = serviceRouter.getServiceEndpoints;
167
169
  exports.requestZCloudDecrypted = zcloudClient.requestZCloudDecrypted;
@@ -43,6 +43,7 @@ class Listener extends EventEmitter {
43
43
  retryTimeout;
44
44
  watchdogTimeout;
45
45
  consecutive1006Count = 0;
46
+ isManualStop = false;
46
47
  id = 0;
47
48
  constructor(ctx, urls) {
48
49
  super();
@@ -168,6 +169,7 @@ class Listener extends EventEmitter {
168
169
  utils.logger(this.ctx).verbose(`Rotating endpoint to ${this.wsURL}`);
169
170
  }
170
171
  start({ retryOnClose = false } = {}) {
172
+ this.isManualStop = false;
171
173
  if (this.retryTimeout) {
172
174
  clearTimeout(this.retryTimeout);
173
175
  this.retryTimeout = undefined;
@@ -191,6 +193,10 @@ class Listener extends EventEmitter {
191
193
  t: Date.now(),
192
194
  });
193
195
  const cookie = this.ctx.cookie.getCookieStringSync(domains.ZALO_DOMAINS.CHAT_WEB);
196
+ const wsAgent = this.ctx.options.agent &&
197
+ typeof this.ctx.options.agent.dispatch !== "function"
198
+ ? this.ctx.options.agent
199
+ : undefined;
194
200
  const ws = new WebSocket(this.wsURL, {
195
201
  headers: {
196
202
  "accept-language": utils.getBrowserLanguage(this.ctx.language),
@@ -205,7 +211,7 @@ class Listener extends EventEmitter {
205
211
  "user-agent": this.userAgent,
206
212
  cookie,
207
213
  },
208
- agent: this.ctx.options.agent,
214
+ ...(wsAgent ? { agent: wsAgent } : {}),
209
215
  });
210
216
  this.ws = ws;
211
217
  ws.onopen = () => {
@@ -218,7 +224,8 @@ class Listener extends EventEmitter {
218
224
  ws.onclose = (event) => {
219
225
  this.reset();
220
226
  this.emit("disconnected", event.code, event.reason);
221
- const retry = retryOnClose &&
227
+ const retry = !this.isManualStop &&
228
+ retryOnClose &&
222
229
  this.isRetryable(event.code) &&
223
230
  this.canRetry(event.code);
224
231
  if (retry && retryOnClose) {
@@ -304,19 +311,24 @@ class Listener extends EventEmitter {
304
311
  };
305
312
  }
306
313
  stop() {
307
- if (this.retryTimeout)
314
+ this.isManualStop = true;
315
+ if (this.retryTimeout) {
308
316
  clearTimeout(this.retryTimeout);
309
- if (this.watchdogTimeout)
317
+ this.retryTimeout = undefined;
318
+ }
319
+ if (this.watchdogTimeout) {
310
320
  clearTimeout(this.watchdogTimeout);
321
+ this.watchdogTimeout = undefined;
322
+ }
311
323
  if (this.ws) {
312
- if (this.ws.readyState !== WebSocket.CLOSED) {
324
+ if (this.ws.readyState !== WebSocket.CLOSED && this.ws.readyState !== WebSocket.CLOSING) {
313
325
  this.ws.close(types.CloseReason.ManualClosure);
314
326
  }
315
327
  }
316
328
  this.reset();
317
329
  }
318
330
  sendWs(payload, requireId = true) {
319
- if (this.ws) {
331
+ if (this.ws && (this.ws.readyState === undefined || this.ws.readyState === WebSocket.OPEN)) {
320
332
  if (requireId)
321
333
  payload.data["req_id"] = `req_${this.id++}`;
322
334
  const encodedData = new TextEncoder().encode(JSON.stringify(payload.data));
@@ -10,6 +10,9 @@ const NPM_REGISTRY = domains.ZALO_DOMAINS.NPM_REGISTRY;
10
10
  async function checkUpdate(ctx) {
11
11
  if (!ctx.options.checkUpdate)
12
12
  return;
13
+ const isAgentUndiciDispatcher = Boolean(ctx.options.agent && typeof ctx.options.agent.dispatch === "function");
14
+ const resolvedDispatcher = ctx.options.dispatcher ?? (isAgentUndiciDispatcher ? ctx.options.agent : undefined);
15
+ const resolvedAgent = ctx.options.agent && !isAgentUndiciDispatcher ? ctx.options.agent : undefined;
13
16
  const _options = {
14
17
  ...(utils.isBun
15
18
  ? {
@@ -17,7 +20,13 @@ async function checkUpdate(ctx) {
17
20
  // @ts-ignore
18
21
  proxy: ctx.options.agent?.proxy?.href,
19
22
  }
20
- : { agent: ctx.options.agent }),
23
+ : {
24
+ ...(resolvedAgent ? { agent: resolvedAgent } : {}),
25
+ ...(resolvedDispatcher ? { dispatcher: resolvedDispatcher } : {}),
26
+ }),
27
+ ...(typeof AbortSignal !== "undefined" && typeof AbortSignal.timeout === "function"
28
+ ? { signal: AbortSignal.timeout(3000) }
29
+ : {}),
21
30
  };
22
31
  const response = await ctx.options.polyfill(NPM_REGISTRY, _options).catch(() => null);
23
32
  if (!response || !response.ok)