zalo-toolkit 1.1.4 → 1.1.6
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.
- package/dist/apis/listen.d.ts +6 -2
- package/dist/apis/listen.js +18 -6
- package/dist/cjs/apis/listen.cjs +18 -6
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/models/ConversationEvent.cjs +11 -0
- package/dist/cjs/models/Reaction.cjs +3 -1
- package/dist/cjs/models/Undo.cjs +3 -1
- package/dist/models/ConversationEvent.d.ts +14 -0
- package/dist/models/ConversationEvent.js +7 -0
- package/dist/models/Reaction.d.ts +2 -1
- package/dist/models/Reaction.js +2 -1
- package/dist/models/Undo.d.ts +2 -1
- package/dist/models/Undo.js +2 -1
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.js +1 -0
- package/package.json +1 -1
package/dist/apis/listen.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from 'stream';
|
|
2
|
+
import WebSocket from 'ws';
|
|
3
|
+
import type { ZaloAPI } from '../apis.js';
|
|
2
4
|
import { type DeliveredMessage } from '../models/DeliveredMessage.js';
|
|
3
5
|
import { type FriendEvent } from '../models/FriendEvent.js';
|
|
4
6
|
import { type GroupEvent } from '../models/GroupEvent.js';
|
|
@@ -9,8 +11,7 @@ import { Reaction } from '../models/Reaction.js';
|
|
|
9
11
|
import { type SeenMessage } from '../models/SeenMessage.js';
|
|
10
12
|
import { type Typing } from '../models/Typing.js';
|
|
11
13
|
import { Undo } from '../models/Undo.js';
|
|
12
|
-
import type
|
|
13
|
-
import WebSocket from 'ws';
|
|
14
|
+
import { type HiddenConversationEvent } from '../models/ConversationEvent.js';
|
|
14
15
|
type MessageEventData = Message | GroupMessage;
|
|
15
16
|
type UploadEventData = {
|
|
16
17
|
fileUrl: string;
|
|
@@ -31,6 +32,7 @@ export type OnUndoMessageCallback = (undos: Undo[]) => void | Promise<void>;
|
|
|
31
32
|
export type OnUpdateQueueStatus = (queueStatus: TypeQueueStatus, timestamp: number) => void | Promise<void>;
|
|
32
33
|
export type OnLabelEventCallback = () => void | Promise<void>;
|
|
33
34
|
export type OnFriendEventCallback = (friendEvents: FriendEvent[]) => void | Promise<void>;
|
|
35
|
+
export type OnHiddenConversationCallback = (hiddenEvents: HiddenConversationEvent[]) => void | Promise<void>;
|
|
34
36
|
type SocketEventMap = {
|
|
35
37
|
[key in keyof typeof SocketEvent]: any[];
|
|
36
38
|
};
|
|
@@ -68,6 +70,7 @@ export declare class Listener extends EventEmitter<ListenerEvents> {
|
|
|
68
70
|
private onUpdateQueueStatusCallback;
|
|
69
71
|
private onLabelEventCallback;
|
|
70
72
|
private onFriendEventCallback;
|
|
73
|
+
private onHiddenConversationCallback;
|
|
71
74
|
private cipherKey?;
|
|
72
75
|
private selfListen;
|
|
73
76
|
private pingInterval?;
|
|
@@ -105,6 +108,7 @@ export declare class Listener extends EventEmitter<ListenerEvents> {
|
|
|
105
108
|
onUpdateQueueStatus(cb: OnUpdateQueueStatus): void;
|
|
106
109
|
onLabelEvent(cb: OnLabelEventCallback): void;
|
|
107
110
|
onFriendEvent(cb: OnFriendEventCallback): void;
|
|
111
|
+
onHiddenConversation(cb: OnHiddenConversationCallback): void;
|
|
108
112
|
start(): void;
|
|
109
113
|
stop(): void;
|
|
110
114
|
getSocketUrl(shouldRotate?: boolean, forceFirstEndpoint?: boolean): string;
|
package/dist/apis/listen.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { last } from 'lodash';
|
|
1
2
|
import { EventEmitter } from 'stream';
|
|
3
|
+
import WebSocket from 'ws';
|
|
4
|
+
import { ZaloApiError } from '../Errors/ZaloApiError.js';
|
|
2
5
|
import { GroupDeliveredMessage, UserDeliveredMessage } from '../models/DeliveredMessage.js';
|
|
3
6
|
import { initializeFriendEvent } from '../models/FriendEvent.js';
|
|
4
7
|
import { initializeGroupEvent } from '../models/GroupEvent.js';
|
|
@@ -8,11 +11,9 @@ import { Reaction } from '../models/Reaction.js';
|
|
|
8
11
|
import { GroupSeenMessage, UserSeenMessage } from '../models/SeenMessage.js';
|
|
9
12
|
import { GroupTyping, UserTyping } from '../models/Typing.js';
|
|
10
13
|
import { Undo } from '../models/Undo.js';
|
|
11
|
-
import { decodeEventData, FibonacciRetry, getFriendEventType, getGroupEventType, hasOwn, logger, looksLikeJson, makeURL, safeJsonParse } from '../utils.js';
|
|
12
14
|
import { ConfigSocket } from '../socket/config-socket.js';
|
|
13
|
-
import {
|
|
14
|
-
import
|
|
15
|
-
import { last } from 'lodash';
|
|
15
|
+
import { decodeEventData, FibonacciRetry, getFriendEventType, getGroupEventType, hasOwn, logger, looksLikeJson, makeURL, safeJsonParse } from '../utils.js';
|
|
16
|
+
import { initializeHiddenConversationEvent } from '../models/ConversationEvent.js';
|
|
16
17
|
export class Listener extends EventEmitter {
|
|
17
18
|
constructor(api) {
|
|
18
19
|
super();
|
|
@@ -79,6 +80,7 @@ export class Listener extends EventEmitter {
|
|
|
79
80
|
this.onUpdateQueueStatusCallback = () => { };
|
|
80
81
|
this.onLabelEventCallback = () => { };
|
|
81
82
|
this.onFriendEventCallback = () => { };
|
|
83
|
+
this.onHiddenConversationCallback = () => { };
|
|
82
84
|
}
|
|
83
85
|
onConnected(cb) {
|
|
84
86
|
this.onConnectedCallback = cb;
|
|
@@ -116,6 +118,9 @@ export class Listener extends EventEmitter {
|
|
|
116
118
|
onFriendEvent(cb) {
|
|
117
119
|
this.onFriendEventCallback = cb;
|
|
118
120
|
}
|
|
121
|
+
onHiddenConversation(cb) {
|
|
122
|
+
this.onHiddenConversationCallback = cb;
|
|
123
|
+
}
|
|
119
124
|
start() {
|
|
120
125
|
if (this.ws)
|
|
121
126
|
throw new ZaloApiError('Already started');
|
|
@@ -182,7 +187,7 @@ export class Listener extends EventEmitter {
|
|
|
182
187
|
this.ping();
|
|
183
188
|
}, 3 * 60 * 1000);
|
|
184
189
|
}
|
|
185
|
-
if (version == 1 && cmd == 501
|
|
190
|
+
if (version == 1 && cmd == 501) {
|
|
186
191
|
const parsedData = (await decodeEventData(parsed, this.cipherKey)).data;
|
|
187
192
|
const { msgs, queueStatus } = parsedData;
|
|
188
193
|
const listUndo = [];
|
|
@@ -209,7 +214,7 @@ export class Listener extends EventEmitter {
|
|
|
209
214
|
this.onMessageCallback(listMessages);
|
|
210
215
|
this.onUpdateQueueStatusCallback(queueStatus, timestamp);
|
|
211
216
|
}
|
|
212
|
-
if (version == 1 && cmd == 521
|
|
217
|
+
if (version == 1 && cmd == 521) {
|
|
213
218
|
const parsedData = (await decodeEventData(parsed, this.cipherKey)).data;
|
|
214
219
|
const { groupMsgs, queueStatus } = parsedData;
|
|
215
220
|
const listUndo = [];
|
|
@@ -246,6 +251,7 @@ export class Listener extends EventEmitter {
|
|
|
246
251
|
const listGroupEvents = [];
|
|
247
252
|
const listMuteEvents = [];
|
|
248
253
|
const listFriendEvents = [];
|
|
254
|
+
const listHiddenEvents = [];
|
|
249
255
|
let hasLabelEvent = false;
|
|
250
256
|
for (const control of controls) {
|
|
251
257
|
if (control.content.act_type == 'file_done') {
|
|
@@ -300,10 +306,16 @@ export class Listener extends EventEmitter {
|
|
|
300
306
|
else if (control.content.act_type == 'label_convers') {
|
|
301
307
|
hasLabelEvent = true;
|
|
302
308
|
}
|
|
309
|
+
else if (control.content.act_type == 'hidden_chat') {
|
|
310
|
+
const hiddenEventData = typeof control.content.data === 'string' && looksLikeJson(control.content.data) ? safeJsonParse(control.content.data) : control.content.data;
|
|
311
|
+
const hiddenEvent = initializeHiddenConversationEvent(this.ctx.uid, hiddenEventData);
|
|
312
|
+
listHiddenEvents.push(hiddenEvent);
|
|
313
|
+
}
|
|
303
314
|
}
|
|
304
315
|
this.onGroupEventCallback(listGroupEvents);
|
|
305
316
|
this.onMuteCallback(listMuteEvents);
|
|
306
317
|
this.onFriendEventCallback(listFriendEvents);
|
|
318
|
+
this.onHiddenConversationCallback(listHiddenEvents);
|
|
307
319
|
if (hasLabelEvent) {
|
|
308
320
|
this.onLabelEventCallback();
|
|
309
321
|
}
|
package/dist/cjs/apis/listen.cjs
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var lodash = require('lodash');
|
|
3
4
|
var stream = require('stream');
|
|
5
|
+
var WebSocket = require('ws');
|
|
6
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
7
|
var DeliveredMessage = require('../models/DeliveredMessage.cjs');
|
|
5
8
|
var FriendEvent = require('../models/FriendEvent.cjs');
|
|
6
9
|
var GroupEvent = require('../models/GroupEvent.cjs');
|
|
@@ -10,11 +13,9 @@ var Reaction = require('../models/Reaction.cjs');
|
|
|
10
13
|
var SeenMessage = require('../models/SeenMessage.cjs');
|
|
11
14
|
var Typing = require('../models/Typing.cjs');
|
|
12
15
|
var Undo = require('../models/Undo.cjs');
|
|
13
|
-
var utils = require('../utils.cjs');
|
|
14
16
|
var configSocket = require('../socket/config-socket.cjs');
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var lodash = require('lodash');
|
|
17
|
+
var utils = require('../utils.cjs');
|
|
18
|
+
var ConversationEvent = require('../models/ConversationEvent.cjs');
|
|
18
19
|
|
|
19
20
|
class Listener extends stream.EventEmitter {
|
|
20
21
|
constructor(api) {
|
|
@@ -82,6 +83,7 @@ class Listener extends stream.EventEmitter {
|
|
|
82
83
|
this.onUpdateQueueStatusCallback = () => { };
|
|
83
84
|
this.onLabelEventCallback = () => { };
|
|
84
85
|
this.onFriendEventCallback = () => { };
|
|
86
|
+
this.onHiddenConversationCallback = () => { };
|
|
85
87
|
}
|
|
86
88
|
onConnected(cb) {
|
|
87
89
|
this.onConnectedCallback = cb;
|
|
@@ -119,6 +121,9 @@ class Listener extends stream.EventEmitter {
|
|
|
119
121
|
onFriendEvent(cb) {
|
|
120
122
|
this.onFriendEventCallback = cb;
|
|
121
123
|
}
|
|
124
|
+
onHiddenConversation(cb) {
|
|
125
|
+
this.onHiddenConversationCallback = cb;
|
|
126
|
+
}
|
|
122
127
|
start() {
|
|
123
128
|
if (this.ws)
|
|
124
129
|
throw new ZaloApiError.ZaloApiError('Already started');
|
|
@@ -185,7 +190,7 @@ class Listener extends stream.EventEmitter {
|
|
|
185
190
|
this.ping();
|
|
186
191
|
}, 3 * 60 * 1000);
|
|
187
192
|
}
|
|
188
|
-
if (version == 1 && cmd == 501
|
|
193
|
+
if (version == 1 && cmd == 501) {
|
|
189
194
|
const parsedData = (await utils.decodeEventData(parsed, this.cipherKey)).data;
|
|
190
195
|
const { msgs, queueStatus } = parsedData;
|
|
191
196
|
const listUndo = [];
|
|
@@ -212,7 +217,7 @@ class Listener extends stream.EventEmitter {
|
|
|
212
217
|
this.onMessageCallback(listMessages);
|
|
213
218
|
this.onUpdateQueueStatusCallback(queueStatus, timestamp);
|
|
214
219
|
}
|
|
215
|
-
if (version == 1 && cmd == 521
|
|
220
|
+
if (version == 1 && cmd == 521) {
|
|
216
221
|
const parsedData = (await utils.decodeEventData(parsed, this.cipherKey)).data;
|
|
217
222
|
const { groupMsgs, queueStatus } = parsedData;
|
|
218
223
|
const listUndo = [];
|
|
@@ -249,6 +254,7 @@ class Listener extends stream.EventEmitter {
|
|
|
249
254
|
const listGroupEvents = [];
|
|
250
255
|
const listMuteEvents = [];
|
|
251
256
|
const listFriendEvents = [];
|
|
257
|
+
const listHiddenEvents = [];
|
|
252
258
|
let hasLabelEvent = false;
|
|
253
259
|
for (const control of controls) {
|
|
254
260
|
if (control.content.act_type == 'file_done') {
|
|
@@ -303,10 +309,16 @@ class Listener extends stream.EventEmitter {
|
|
|
303
309
|
else if (control.content.act_type == 'label_convers') {
|
|
304
310
|
hasLabelEvent = true;
|
|
305
311
|
}
|
|
312
|
+
else if (control.content.act_type == 'hidden_chat') {
|
|
313
|
+
const hiddenEventData = typeof control.content.data === 'string' && utils.looksLikeJson(control.content.data) ? utils.safeJsonParse(control.content.data) : control.content.data;
|
|
314
|
+
const hiddenEvent = ConversationEvent.initializeHiddenConversationEvent(this.ctx.uid, hiddenEventData);
|
|
315
|
+
listHiddenEvents.push(hiddenEvent);
|
|
316
|
+
}
|
|
306
317
|
}
|
|
307
318
|
this.onGroupEventCallback(listGroupEvents);
|
|
308
319
|
this.onMuteCallback(listMuteEvents);
|
|
309
320
|
this.onFriendEventCallback(listFriendEvents);
|
|
321
|
+
this.onHiddenConversationCallback(listHiddenEvents);
|
|
310
322
|
if (hasLabelEvent) {
|
|
311
323
|
this.onLabelEventCallback();
|
|
312
324
|
}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -18,6 +18,7 @@ var SeenMessage = require('./models/SeenMessage.cjs');
|
|
|
18
18
|
var Typing = require('./models/Typing.cjs');
|
|
19
19
|
var Undo = require('./models/Undo.cjs');
|
|
20
20
|
var ZBusiness = require('./models/ZBusiness.cjs');
|
|
21
|
+
var ConversationEvent = require('./models/ConversationEvent.cjs');
|
|
21
22
|
var zalo = require('./zalo.cjs');
|
|
22
23
|
var Listen = require('./models/Listen.cjs');
|
|
23
24
|
var reviewPendingMemberRequest = require('./apis/reviewPendingMemberRequest.cjs');
|
|
@@ -102,6 +103,7 @@ Object.defineProperty(exports, "BusinessCategory", {
|
|
|
102
103
|
get: function () { return ZBusiness.BusinessCategory; }
|
|
103
104
|
});
|
|
104
105
|
exports.BusinessCategoryName = ZBusiness.BusinessCategoryName;
|
|
106
|
+
exports.initializeHiddenConversationEvent = ConversationEvent.initializeHiddenConversationEvent;
|
|
105
107
|
exports.Zalo = zalo.Zalo;
|
|
106
108
|
Object.defineProperty(exports, "CloseReason", {
|
|
107
109
|
enumerable: true,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var Enum = require('./Enum.cjs');
|
|
4
|
+
|
|
3
5
|
exports.Reactions = void 0;
|
|
4
6
|
(function (Reactions) {
|
|
5
7
|
Reactions["HEART"] = "/-heart";
|
|
@@ -63,7 +65,7 @@ class Reaction {
|
|
|
63
65
|
this.data = data;
|
|
64
66
|
this.threadId = isGroup || data.uidFrom == "0" ? data.idTo : data.uidFrom;
|
|
65
67
|
this.isSelf = data.uidFrom == "0";
|
|
66
|
-
this.
|
|
68
|
+
this.type = isGroup ? Enum.ThreadType.Group : Enum.ThreadType.User;
|
|
67
69
|
if (data.idTo == "0")
|
|
68
70
|
data.idTo = uid;
|
|
69
71
|
if (data.uidFrom == "0")
|
package/dist/cjs/models/Undo.cjs
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var Enum = require('./Enum.cjs');
|
|
4
|
+
|
|
3
5
|
class Undo {
|
|
4
6
|
constructor(uid, data, isGroup) {
|
|
5
7
|
this.data = data;
|
|
6
8
|
this.threadId = isGroup || data.uidFrom == "0" ? data.idTo : data.uidFrom;
|
|
7
9
|
this.isSelf = data.uidFrom == "0";
|
|
8
|
-
this.
|
|
10
|
+
this.type = isGroup ? Enum.ThreadType.Group : Enum.ThreadType.User;
|
|
9
11
|
if (data.idTo == "0")
|
|
10
12
|
data.idTo = uid;
|
|
11
13
|
if (data.uidFrom == "0")
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type THiddenConversationItem = {
|
|
2
|
+
thread_id: string;
|
|
3
|
+
is_group: boolean;
|
|
4
|
+
};
|
|
5
|
+
export type THiddenConversationEvent = {
|
|
6
|
+
add_items: THiddenConversationItem[];
|
|
7
|
+
del_items: THiddenConversationItem[];
|
|
8
|
+
};
|
|
9
|
+
export type HiddenConversationEvent = {
|
|
10
|
+
type: 'hidden_chat';
|
|
11
|
+
data: THiddenConversationEvent;
|
|
12
|
+
threadId: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function initializeHiddenConversationEvent(uid: string, data: THiddenConversationEvent): HiddenConversationEvent;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ThreadType } from "./Enum.js";
|
|
1
2
|
export declare enum Reactions {
|
|
2
3
|
HEART = "/-heart",
|
|
3
4
|
LIKE = "/-strong",
|
|
@@ -80,6 +81,6 @@ export declare class Reaction {
|
|
|
80
81
|
data: TReaction;
|
|
81
82
|
threadId: string;
|
|
82
83
|
isSelf: boolean;
|
|
83
|
-
|
|
84
|
+
type: ThreadType;
|
|
84
85
|
constructor(uid: string, data: TReaction, isGroup: boolean);
|
|
85
86
|
}
|
package/dist/models/Reaction.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ThreadType } from "./Enum.js";
|
|
1
2
|
export var Reactions;
|
|
2
3
|
(function (Reactions) {
|
|
3
4
|
Reactions["HEART"] = "/-heart";
|
|
@@ -61,7 +62,7 @@ export class Reaction {
|
|
|
61
62
|
this.data = data;
|
|
62
63
|
this.threadId = isGroup || data.uidFrom == "0" ? data.idTo : data.uidFrom;
|
|
63
64
|
this.isSelf = data.uidFrom == "0";
|
|
64
|
-
this.
|
|
65
|
+
this.type = isGroup ? ThreadType.Group : ThreadType.User;
|
|
65
66
|
if (data.idTo == "0")
|
|
66
67
|
data.idTo = uid;
|
|
67
68
|
if (data.uidFrom == "0")
|
package/dist/models/Undo.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ThreadType } from "./Enum.js";
|
|
1
2
|
export type TUndoContent = {
|
|
2
3
|
globalMsgId: number;
|
|
3
4
|
cliMsgId: number;
|
|
@@ -29,6 +30,6 @@ export declare class Undo {
|
|
|
29
30
|
data: TUndo;
|
|
30
31
|
threadId: string;
|
|
31
32
|
isSelf: boolean;
|
|
32
|
-
|
|
33
|
+
type: ThreadType;
|
|
33
34
|
constructor(uid: string, data: TUndo, isGroup: boolean);
|
|
34
35
|
}
|
package/dist/models/Undo.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { ThreadType } from "./Enum.js";
|
|
1
2
|
export class Undo {
|
|
2
3
|
constructor(uid, data, isGroup) {
|
|
3
4
|
this.data = data;
|
|
4
5
|
this.threadId = isGroup || data.uidFrom == "0" ? data.idTo : data.uidFrom;
|
|
5
6
|
this.isSelf = data.uidFrom == "0";
|
|
6
|
-
this.
|
|
7
|
+
this.type = isGroup ? ThreadType.Group : ThreadType.User;
|
|
7
8
|
if (data.idTo == "0")
|
|
8
9
|
data.idTo = uid;
|
|
9
10
|
if (data.uidFrom == "0")
|
package/dist/models/index.d.ts
CHANGED
package/dist/models/index.js
CHANGED