mezon-sdk 2.8.44 → 2.8.45
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/README.md +192 -192
- package/dist/cjs/api/api.d.ts +578 -9
- package/dist/cjs/api/api.js +3778 -38
- package/dist/cjs/api/api.js.map +1 -1
- package/dist/cjs/client.d.ts +86 -0
- package/dist/cjs/client.js +348 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/interfaces/client.d.ts +3 -3
- package/dist/cjs/interfaces/client.js.map +1 -1
- package/dist/cjs/mezon-client/channel_manager.d.ts +15 -0
- package/dist/cjs/mezon-client/channel_manager.js +70 -0
- package/dist/cjs/mezon-client/channel_manager.js.map +1 -0
- package/dist/cjs/mezon-client/client/MezonClientCore.d.ts +0 -1
- package/dist/cjs/mezon-client/client/MezonClientCore.js +1 -3
- package/dist/cjs/mezon-client/client/MezonClientCore.js.map +1 -1
- package/dist/cjs/mezon-client/event_manager.d.ts +7 -0
- package/dist/cjs/mezon-client/event_manager.js +37 -0
- package/dist/cjs/mezon-client/event_manager.js.map +1 -0
- package/dist/cjs/mezon-client/message_manager.d.ts +16 -0
- package/dist/cjs/mezon-client/message_manager.js +59 -0
- package/dist/cjs/mezon-client/message_manager.js.map +1 -0
- package/dist/cjs/mezon-client/mezon_client.d.ts +37 -0
- package/dist/cjs/mezon-client/mezon_client.js +87 -0
- package/dist/cjs/mezon-client/mezon_client.js.map +1 -0
- package/dist/cjs/mezon-client/session_manager.d.ts +10 -0
- package/dist/cjs/mezon-client/session_manager.js +35 -0
- package/dist/cjs/mezon-client/session_manager.js.map +1 -0
- package/dist/cjs/mezon-client/socket_manager.d.ts +31 -0
- package/dist/cjs/mezon-client/socket_manager.js +99 -0
- package/dist/cjs/mezon-client/socket_manager.js.map +1 -0
- package/dist/cjs/mezon-client-v1/channel_manager.d.ts +15 -0
- package/dist/cjs/mezon-client-v1/channel_manager.js +70 -0
- package/dist/cjs/mezon-client-v1/channel_manager.js.map +1 -0
- package/dist/cjs/mezon-client-v1/event_manager.d.ts +7 -0
- package/dist/cjs/mezon-client-v1/event_manager.js +37 -0
- package/dist/cjs/mezon-client-v1/event_manager.js.map +1 -0
- package/dist/cjs/mezon-client-v1/message_manager.d.ts +16 -0
- package/dist/cjs/mezon-client-v1/message_manager.js +59 -0
- package/dist/cjs/mezon-client-v1/message_manager.js.map +1 -0
- package/dist/cjs/mezon-client-v1/mezon_client.d.ts +37 -0
- package/dist/cjs/mezon-client-v1/mezon_client.js +87 -0
- package/dist/cjs/mezon-client-v1/mezon_client.js.map +1 -0
- package/dist/cjs/mezon-client-v1/session_manager.d.ts +10 -0
- package/dist/cjs/mezon-client-v1/session_manager.js +35 -0
- package/dist/cjs/mezon-client-v1/session_manager.js.map +1 -0
- package/dist/cjs/mezon-client-v1/socket_manager.d.ts +31 -0
- package/dist/cjs/mezon-client-v1/socket_manager.js +99 -0
- package/dist/cjs/mezon-client-v1/socket_manager.js.map +1 -0
- package/dist/cjs/mezon-client-v2/client/MezonClient.d.ts +74 -0
- package/dist/cjs/mezon-client-v2/client/MezonClient.js +301 -0
- package/dist/cjs/mezon-client-v2/client/MezonClient.js.map +1 -0
- package/dist/cjs/mezon-client-v2/manager/channel_manager.d.ts +16 -0
- package/dist/cjs/mezon-client-v2/manager/channel_manager.js +60 -0
- package/dist/cjs/mezon-client-v2/manager/channel_manager.js.map +1 -0
- package/dist/cjs/mezon-client-v2/manager/event_manager.d.ts +7 -0
- package/dist/cjs/mezon-client-v2/manager/event_manager.js +37 -0
- package/dist/cjs/mezon-client-v2/manager/event_manager.js.map +1 -0
- package/dist/cjs/mezon-client-v2/manager/session_manager.d.ts +10 -0
- package/dist/cjs/mezon-client-v2/manager/session_manager.js +35 -0
- package/dist/cjs/mezon-client-v2/manager/session_manager.js.map +1 -0
- package/dist/cjs/mezon-client-v2/manager/socket_manager.d.ts +40 -0
- package/dist/cjs/mezon-client-v2/manager/socket_manager.js +154 -0
- package/dist/cjs/mezon-client-v2/manager/socket_manager.js.map +1 -0
- package/dist/cjs/mezon-client-v2/structures/Clan.d.ts +29 -0
- package/dist/cjs/mezon-client-v2/structures/Clan.js +77 -0
- package/dist/cjs/mezon-client-v2/structures/Clan.js.map +1 -0
- package/dist/cjs/mezon-client-v2/structures/Message.d.ts +34 -0
- package/dist/cjs/mezon-client-v2/structures/Message.js +90 -0
- package/dist/cjs/mezon-client-v2/structures/Message.js.map +1 -0
- package/dist/cjs/mezon-client-v2/structures/TextChannel.d.ts +22 -0
- package/dist/cjs/mezon-client-v2/structures/TextChannel.js +65 -0
- package/dist/cjs/mezon-client-v2/structures/TextChannel.js.map +1 -0
- package/dist/cjs/mezon-client-v2/structures/User.d.ts +26 -0
- package/dist/cjs/mezon-client-v2/structures/User.js +32 -0
- package/dist/cjs/mezon-client-v2/structures/User.js.map +1 -0
- package/dist/cjs/mezon-client-v2/utils/AsyncThrottleQueue.d.ts +8 -0
- package/dist/cjs/mezon-client-v2/utils/AsyncThrottleQueue.js +40 -0
- package/dist/cjs/mezon-client-v2/utils/AsyncThrottleQueue.js.map +1 -0
- package/dist/cjs/mezon-client-v2/utils/CacheManager.d.ts +16 -0
- package/dist/cjs/mezon-client-v2/utils/CacheManager.js +53 -0
- package/dist/cjs/mezon-client-v2/utils/CacheManager.js.map +1 -0
- package/dist/cjs/mezon-client-v2/utils/Collection.d.ts +23 -0
- package/dist/cjs/mezon-client-v2/utils/Collection.js +100 -0
- package/dist/cjs/mezon-client-v2/utils/Collection.js.map +1 -0
- package/dist/cjs/rtapi/realtime.d.ts +69 -17
- package/dist/cjs/rtapi/realtime.js +512 -119
- package/dist/cjs/rtapi/realtime.js.map +1 -1
- package/dist/cjs/socket.d.ts +1 -1
- package/dist/cjs/socket.js +100 -24
- package/dist/cjs/socket.js.map +1 -1
- package/dist/cjs/sqlite/MessageDatabase.js +20 -20
- package/dist/esm/api/api.d.ts +578 -9
- package/dist/esm/api/api.js +3711 -28
- package/dist/esm/api/api.js.map +1 -1
- package/dist/esm/client.d.ts +86 -0
- package/dist/esm/client.js +356 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/interfaces/client.d.ts +3 -3
- package/dist/esm/interfaces/client.js.map +1 -1
- package/dist/esm/mezon-client/channel_manager.d.ts +15 -0
- package/dist/esm/mezon-client/channel_manager.js +69 -0
- package/dist/esm/mezon-client/channel_manager.js.map +1 -0
- package/dist/esm/mezon-client/client/MezonClientCore.d.ts +0 -1
- package/dist/esm/mezon-client/client/MezonClientCore.js +1 -3
- package/dist/esm/mezon-client/client/MezonClientCore.js.map +1 -1
- package/dist/esm/mezon-client/event_manager.d.ts +7 -0
- package/dist/esm/mezon-client/event_manager.js +31 -0
- package/dist/esm/mezon-client/event_manager.js.map +1 -0
- package/dist/esm/mezon-client/message_manager.d.ts +16 -0
- package/dist/esm/mezon-client/message_manager.js +56 -0
- package/dist/esm/mezon-client/message_manager.js.map +1 -0
- package/dist/esm/mezon-client/mezon_client.d.ts +37 -0
- package/dist/esm/mezon-client/mezon_client.js +94 -0
- package/dist/esm/mezon-client/mezon_client.js.map +1 -0
- package/dist/esm/mezon-client/session_manager.d.ts +10 -0
- package/dist/esm/mezon-client/session_manager.js +33 -0
- package/dist/esm/mezon-client/session_manager.js.map +1 -0
- package/dist/esm/mezon-client/socket_manager.d.ts +31 -0
- package/dist/esm/mezon-client/socket_manager.js +104 -0
- package/dist/esm/mezon-client/socket_manager.js.map +1 -0
- package/dist/esm/mezon-client-v1/channel_manager.d.ts +15 -0
- package/dist/esm/mezon-client-v1/channel_manager.js +69 -0
- package/dist/esm/mezon-client-v1/channel_manager.js.map +1 -0
- package/dist/esm/mezon-client-v1/event_manager.d.ts +7 -0
- package/dist/esm/mezon-client-v1/event_manager.js +31 -0
- package/dist/esm/mezon-client-v1/event_manager.js.map +1 -0
- package/dist/esm/mezon-client-v1/message_manager.d.ts +16 -0
- package/dist/esm/mezon-client-v1/message_manager.js +56 -0
- package/dist/esm/mezon-client-v1/message_manager.js.map +1 -0
- package/dist/esm/mezon-client-v1/mezon_client.d.ts +37 -0
- package/dist/esm/mezon-client-v1/mezon_client.js +94 -0
- package/dist/esm/mezon-client-v1/mezon_client.js.map +1 -0
- package/dist/esm/mezon-client-v1/session_manager.d.ts +10 -0
- package/dist/esm/mezon-client-v1/session_manager.js +33 -0
- package/dist/esm/mezon-client-v1/session_manager.js.map +1 -0
- package/dist/esm/mezon-client-v1/socket_manager.d.ts +31 -0
- package/dist/esm/mezon-client-v1/socket_manager.js +104 -0
- package/dist/esm/mezon-client-v1/socket_manager.js.map +1 -0
- package/dist/esm/mezon-client-v2/client/MezonClient.d.ts +74 -0
- package/dist/esm/mezon-client-v2/client/MezonClient.js +311 -0
- package/dist/esm/mezon-client-v2/client/MezonClient.js.map +1 -0
- package/dist/esm/mezon-client-v2/manager/channel_manager.d.ts +16 -0
- package/dist/esm/mezon-client-v2/manager/channel_manager.js +62 -0
- package/dist/esm/mezon-client-v2/manager/channel_manager.js.map +1 -0
- package/dist/esm/mezon-client-v2/manager/event_manager.d.ts +7 -0
- package/dist/esm/mezon-client-v2/manager/event_manager.js +31 -0
- package/dist/esm/mezon-client-v2/manager/event_manager.js.map +1 -0
- package/dist/esm/mezon-client-v2/manager/session_manager.d.ts +10 -0
- package/dist/esm/mezon-client-v2/manager/session_manager.js +33 -0
- package/dist/esm/mezon-client-v2/manager/session_manager.js.map +1 -0
- package/dist/esm/mezon-client-v2/manager/socket_manager.d.ts +40 -0
- package/dist/esm/mezon-client-v2/manager/socket_manager.js +157 -0
- package/dist/esm/mezon-client-v2/manager/socket_manager.js.map +1 -0
- package/dist/esm/mezon-client-v2/structures/Clan.d.ts +29 -0
- package/dist/esm/mezon-client-v2/structures/Clan.js +82 -0
- package/dist/esm/mezon-client-v2/structures/Clan.js.map +1 -0
- package/dist/esm/mezon-client-v2/structures/Message.d.ts +34 -0
- package/dist/esm/mezon-client-v2/structures/Message.js +96 -0
- package/dist/esm/mezon-client-v2/structures/Message.js.map +1 -0
- package/dist/esm/mezon-client-v2/structures/TextChannel.d.ts +22 -0
- package/dist/esm/mezon-client-v2/structures/TextChannel.js +70 -0
- package/dist/esm/mezon-client-v2/structures/TextChannel.js.map +1 -0
- package/dist/esm/mezon-client-v2/structures/User.d.ts +26 -0
- package/dist/esm/mezon-client-v2/structures/User.js +36 -0
- package/dist/esm/mezon-client-v2/structures/User.js.map +1 -0
- package/dist/esm/mezon-client-v2/utils/AsyncThrottleQueue.d.ts +8 -0
- package/dist/esm/mezon-client-v2/utils/AsyncThrottleQueue.js +37 -0
- package/dist/esm/mezon-client-v2/utils/AsyncThrottleQueue.js.map +1 -0
- package/dist/esm/mezon-client-v2/utils/CacheManager.d.ts +16 -0
- package/dist/esm/mezon-client-v2/utils/CacheManager.js +49 -0
- package/dist/esm/mezon-client-v2/utils/CacheManager.js.map +1 -0
- package/dist/esm/mezon-client-v2/utils/Collection.d.ts +23 -0
- package/dist/esm/mezon-client-v2/utils/Collection.js +97 -0
- package/dist/esm/mezon-client-v2/utils/Collection.js.map +1 -0
- package/dist/esm/rtapi/realtime.d.ts +69 -17
- package/dist/esm/rtapi/realtime.js +504 -115
- package/dist/esm/rtapi/realtime.js.map +1 -1
- package/dist/esm/socket.d.ts +1 -1
- package/dist/esm/socket.js +101 -25
- package/dist/esm/socket.js.map +1 -1
- package/dist/esm/sqlite/MessageDatabase.js +20 -20
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +59 -59
- package/dist/cjs/api/api.d.ts.map +0 -1
- package/dist/cjs/api.d.ts.map +0 -1
- package/dist/cjs/constants/enum.d.ts.map +0 -1
- package/dist/cjs/constants/index.d.ts.map +0 -1
- package/dist/cjs/google/protobuf/struct.d.ts.map +0 -1
- package/dist/cjs/google/protobuf/timestamp.d.ts.map +0 -1
- package/dist/cjs/google/protobuf/wrappers.d.ts.map +0 -1
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/interfaces/api.d.ts.map +0 -1
- package/dist/cjs/interfaces/client.d.ts.map +0 -1
- package/dist/cjs/interfaces/index.d.ts.map +0 -1
- package/dist/cjs/interfaces/socket.d.ts.map +0 -1
- package/dist/cjs/message-socket-events/base_event.d.ts.map +0 -1
- package/dist/cjs/message-socket-events/index.d.ts.map +0 -1
- package/dist/cjs/message-socket-events/user_channel_added.d.ts.map +0 -1
- package/dist/cjs/message-socket-events/user_channel_updated.d.ts.map +0 -1
- package/dist/cjs/mezon-client/client/MezonClient.d.ts.map +0 -1
- package/dist/cjs/mezon-client/client/MezonClientCore.d.ts.map +0 -1
- package/dist/cjs/mezon-client/manager/channel_manager.d.ts.map +0 -1
- package/dist/cjs/mezon-client/manager/event_manager.d.ts.map +0 -1
- package/dist/cjs/mezon-client/manager/rate-limit_manager.d.ts.map +0 -1
- package/dist/cjs/mezon-client/manager/session_manager.d.ts.map +0 -1
- package/dist/cjs/mezon-client/manager/socket_manager.d.ts.map +0 -1
- package/dist/cjs/mezon-client/structures/ButtonBuilder.d.ts.map +0 -1
- package/dist/cjs/mezon-client/structures/Clan.d.ts.map +0 -1
- package/dist/cjs/mezon-client/structures/InteractiveMessage.d.ts.map +0 -1
- package/dist/cjs/mezon-client/structures/Message.d.ts.map +0 -1
- package/dist/cjs/mezon-client/structures/TextChannel.d.ts.map +0 -1
- package/dist/cjs/mezon-client/structures/User.d.ts.map +0 -1
- package/dist/cjs/mezon-client/utils/AsyncThrottleQueue.d.ts.map +0 -1
- package/dist/cjs/mezon-client/utils/CacheManager.d.ts.map +0 -1
- package/dist/cjs/mezon-client/utils/Collection.d.ts.map +0 -1
- package/dist/cjs/mezon-client/utils/helper.d.ts.map +0 -1
- package/dist/cjs/rtapi/realtime.d.ts.map +0 -1
- package/dist/cjs/session.d.ts.map +0 -1
- package/dist/cjs/socket.d.ts.map +0 -1
- package/dist/cjs/sqlite/MessageDatabase.d.ts.map +0 -1
- package/dist/cjs/utils/format_message_input.d.ts.map +0 -1
- package/dist/cjs/utils/generate_reply_message.d.ts.map +0 -1
- package/dist/cjs/utils/helper.d.ts.map +0 -1
- package/dist/cjs/utils/stack.d.ts.map +0 -1
- package/dist/cjs/utils.d.ts.map +0 -1
- package/dist/cjs/web_socket_adapter.d.ts.map +0 -1
- package/dist/cjs/web_socket_adapter_pb.d.ts.map +0 -1
- package/dist/esm/api/api.d.ts.map +0 -1
- package/dist/esm/api.d.ts.map +0 -1
- package/dist/esm/constants/enum.d.ts.map +0 -1
- package/dist/esm/constants/index.d.ts.map +0 -1
- package/dist/esm/google/protobuf/struct.d.ts.map +0 -1
- package/dist/esm/google/protobuf/timestamp.d.ts.map +0 -1
- package/dist/esm/google/protobuf/wrappers.d.ts.map +0 -1
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/interfaces/api.d.ts.map +0 -1
- package/dist/esm/interfaces/client.d.ts.map +0 -1
- package/dist/esm/interfaces/index.d.ts.map +0 -1
- package/dist/esm/interfaces/socket.d.ts.map +0 -1
- package/dist/esm/message-socket-events/base_event.d.ts.map +0 -1
- package/dist/esm/message-socket-events/index.d.ts.map +0 -1
- package/dist/esm/message-socket-events/user_channel_added.d.ts.map +0 -1
- package/dist/esm/message-socket-events/user_channel_updated.d.ts.map +0 -1
- package/dist/esm/mezon-client/client/MezonClient.d.ts.map +0 -1
- package/dist/esm/mezon-client/client/MezonClientCore.d.ts.map +0 -1
- package/dist/esm/mezon-client/manager/channel_manager.d.ts.map +0 -1
- package/dist/esm/mezon-client/manager/event_manager.d.ts.map +0 -1
- package/dist/esm/mezon-client/manager/rate-limit_manager.d.ts.map +0 -1
- package/dist/esm/mezon-client/manager/session_manager.d.ts.map +0 -1
- package/dist/esm/mezon-client/manager/socket_manager.d.ts.map +0 -1
- package/dist/esm/mezon-client/structures/ButtonBuilder.d.ts.map +0 -1
- package/dist/esm/mezon-client/structures/Clan.d.ts.map +0 -1
- package/dist/esm/mezon-client/structures/InteractiveMessage.d.ts.map +0 -1
- package/dist/esm/mezon-client/structures/Message.d.ts.map +0 -1
- package/dist/esm/mezon-client/structures/TextChannel.d.ts.map +0 -1
- package/dist/esm/mezon-client/structures/User.d.ts.map +0 -1
- package/dist/esm/mezon-client/utils/AsyncThrottleQueue.d.ts.map +0 -1
- package/dist/esm/mezon-client/utils/CacheManager.d.ts.map +0 -1
- package/dist/esm/mezon-client/utils/Collection.d.ts.map +0 -1
- package/dist/esm/mezon-client/utils/helper.d.ts.map +0 -1
- package/dist/esm/rtapi/realtime.d.ts.map +0 -1
- package/dist/esm/session.d.ts.map +0 -1
- package/dist/esm/socket.d.ts.map +0 -1
- package/dist/esm/sqlite/MessageDatabase.d.ts.map +0 -1
- package/dist/esm/utils/format_message_input.d.ts.map +0 -1
- package/dist/esm/utils/generate_reply_message.d.ts.map +0 -1
- package/dist/esm/utils/helper.d.ts.map +0 -1
- package/dist/esm/utils/stack.d.ts.map +0 -1
- package/dist/esm/utils.d.ts.map +0 -1
- package/dist/esm/web_socket_adapter.d.ts.map +0 -1
- package/dist/esm/web_socket_adapter_pb.d.ts.map +0 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2020 The Nakama Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { CloseEvent, ErrorEvent } from "ws";
|
|
17
|
+
import { ApiRegisterStreamingChannelRequest, ApiVoiceChannelUserList, MessagePayLoad, MessageUserPayLoad, Socket, TokenSentEvent } from "./interfaces";
|
|
18
|
+
import { Session } from "./session";
|
|
19
|
+
import { WebSocketAdapter } from "./web_socket_adapter";
|
|
20
|
+
import { Events } from "./constants/enum";
|
|
21
|
+
import { Client, ApiChannelDescription, ApiCreateChannelDescRequest, ChannelMessageContent, ApiMessageMention, ApiMessageAttachment, ApiMessageRef } from "./interfaces";
|
|
22
|
+
import { Stack } from "./utils/stack";
|
|
23
|
+
/** A client for Mezon server. */
|
|
24
|
+
export declare class MezonClient implements Client {
|
|
25
|
+
readonly apiKey: string;
|
|
26
|
+
readonly host: string;
|
|
27
|
+
readonly port: string;
|
|
28
|
+
readonly useSSL: boolean;
|
|
29
|
+
readonly timeout: number;
|
|
30
|
+
readonly autoRefreshSession: boolean;
|
|
31
|
+
/** The expired timespan used to check session lifetime. */
|
|
32
|
+
expiredTimespanMs: number;
|
|
33
|
+
/** The low level API client for Nakama server. */
|
|
34
|
+
private readonly apiClient;
|
|
35
|
+
/** the socket */
|
|
36
|
+
private socket;
|
|
37
|
+
/** the session */
|
|
38
|
+
private session;
|
|
39
|
+
private isHardDisconnect;
|
|
40
|
+
[key: string]: any;
|
|
41
|
+
constructor(apiKey?: string, host?: string, port?: string, useSSL?: boolean, timeout?: number, autoRefreshSession?: boolean);
|
|
42
|
+
/** Send message to channel */
|
|
43
|
+
sendMessage(clan_id: string, channel_id: string, mode: number, is_public: boolean, msg: ChannelMessageContent, mentions?: Array<ApiMessageMention>, attachments?: Array<ApiMessageAttachment>, ref?: Array<ApiMessageRef>, anonymous_message?: boolean, mention_everyone?: boolean, avatar?: string, code?: number, topic_id?: string): Promise<import("./interfaces").ChannelMessageAck>;
|
|
44
|
+
/** Send token to user */
|
|
45
|
+
sendToken(sendTokenData: TokenSentEvent): Promise<any>;
|
|
46
|
+
/** React message */
|
|
47
|
+
reactionMessage(id: string, clan_id: string, channel_id: string, mode: number, is_public: boolean, message_id: string, emoji_id: string, emoji: string, count: number, message_sender_id: string, action_delete: boolean): Promise<import("./interfaces").ApiMessageReaction>;
|
|
48
|
+
/** Update message */
|
|
49
|
+
updateChatMessage(clan_id: string, channel_id: string, mode: number, is_public: boolean, message_id: string, content: any, mentions?: Array<ApiMessageMention>, attachments?: Array<ApiMessageAttachment>, hideEditted?: boolean): Promise<import("./interfaces").ChannelMessageAck>;
|
|
50
|
+
/** Join to chat in clan when invited to clan */
|
|
51
|
+
joinClanChat(clan_id: string): Promise<void>;
|
|
52
|
+
/** Authenticate a user with an ID against the server. */
|
|
53
|
+
authenticate(): Promise<string>;
|
|
54
|
+
/** Close socket. */
|
|
55
|
+
closeSocket(): void;
|
|
56
|
+
/** Refresh a user's session using a refresh token retrieved from a previous authentication request. */
|
|
57
|
+
sessionRefresh(): Promise<void>;
|
|
58
|
+
/** Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user. */
|
|
59
|
+
logout(session: Session): Promise<boolean>;
|
|
60
|
+
/** A socket created with the client's configuration. */
|
|
61
|
+
createSocket(useSSL?: boolean, verbose?: boolean, adapter?: WebSocketAdapter, sendTimeoutMs?: number): Socket;
|
|
62
|
+
/**Add handle function to event socket */
|
|
63
|
+
on(event: Events, func: Function, context?: any): void;
|
|
64
|
+
/**remove handle function to event socket */
|
|
65
|
+
remove(event: string, func: Function): void;
|
|
66
|
+
/**Create connect to event socket */
|
|
67
|
+
connectSocket(): Promise<void>;
|
|
68
|
+
onerror(evt: ErrorEvent): void;
|
|
69
|
+
onheartbeattimeout(): void;
|
|
70
|
+
ondisconnect(e: CloseEvent): void;
|
|
71
|
+
retriesConnect(): void;
|
|
72
|
+
createChannelDesc(request: ApiCreateChannelDescRequest): Promise<void | ApiChannelDescription>;
|
|
73
|
+
sleep(ms: number): Promise<unknown>;
|
|
74
|
+
/** Create DM channel to send DM with user */
|
|
75
|
+
createDMchannel(userId: string): Promise<null | ApiChannelDescription>;
|
|
76
|
+
sendBulkMessage(messages: MessagePayLoad[], callback: Function): Stack;
|
|
77
|
+
sendBulkMessageUser(messages: MessageUserPayLoad[], callback: Function): Stack;
|
|
78
|
+
/** Send DM message to user */
|
|
79
|
+
sendDMChannelMessage(channelDmId: string, msg: string, messOptions?: {
|
|
80
|
+
[x: string]: any;
|
|
81
|
+
}, attachments?: Array<ApiMessageAttachment>, refs?: Array<ApiMessageRef>): Promise<import("./interfaces").ChannelMessageAck>;
|
|
82
|
+
/** List a channel's users. */
|
|
83
|
+
listChannelVoiceUsers(clanId: string, channelId: string, channelType: number, limit?: number, state?: number, cursor?: string): Promise<ApiVoiceChannelUserList>;
|
|
84
|
+
/** Register stream channel */
|
|
85
|
+
registerStreamingChannel(request: ApiRegisterStreamingChannelRequest): Promise<any>;
|
|
86
|
+
}
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2020 The Nakama Authors
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.MezonClient = void 0;
|
|
19
|
+
const api_1 = require("./api");
|
|
20
|
+
const session_1 = require("./session");
|
|
21
|
+
const socket_1 = require("./socket");
|
|
22
|
+
const web_socket_adapter_pb_1 = require("./web_socket_adapter_pb");
|
|
23
|
+
const enum_1 = require("./constants/enum");
|
|
24
|
+
const helper_1 = require("./utils/helper");
|
|
25
|
+
const generate_reply_message_1 = require("./utils/generate_reply_message");
|
|
26
|
+
const stack_1 = require("./utils/stack");
|
|
27
|
+
const DEFAULT_HOST = "api.mezon.vn";
|
|
28
|
+
const DEFAULT_PORT = "443";
|
|
29
|
+
const DEFAULT_API_KEY = "";
|
|
30
|
+
const DEFAULT_SSL = true;
|
|
31
|
+
const DEFAULT_TIMEOUT_MS = 7000;
|
|
32
|
+
const DEFAULT_EXPIRED_TIMESPAN_MS = 5 * 60 * 1000;
|
|
33
|
+
const DEFAULT_SEND_BULK_INTERVAL = 1000;
|
|
34
|
+
const DEFAULT_MESSAGE_PER_TIME = 5;
|
|
35
|
+
/** A client for Mezon server. */
|
|
36
|
+
class MezonClient {
|
|
37
|
+
constructor(apiKey = DEFAULT_API_KEY, host = DEFAULT_HOST, port = DEFAULT_PORT, useSSL = DEFAULT_SSL, timeout = DEFAULT_TIMEOUT_MS, autoRefreshSession = true) {
|
|
38
|
+
this.apiKey = apiKey;
|
|
39
|
+
this.host = host;
|
|
40
|
+
this.port = port;
|
|
41
|
+
this.useSSL = useSSL;
|
|
42
|
+
this.timeout = timeout;
|
|
43
|
+
this.autoRefreshSession = autoRefreshSession;
|
|
44
|
+
/** The expired timespan used to check session lifetime. */
|
|
45
|
+
this.expiredTimespanMs = DEFAULT_EXPIRED_TIMESPAN_MS;
|
|
46
|
+
const scheme = useSSL ? "https://" : "http://";
|
|
47
|
+
const basePath = `${scheme}${host}:${port}`;
|
|
48
|
+
this.apiClient = new api_1.MezonApi(apiKey, basePath, timeout);
|
|
49
|
+
/**init event to connect socket*/
|
|
50
|
+
for (const event in enum_1.Events) {
|
|
51
|
+
const key = enum_1.Events[event].toString();
|
|
52
|
+
if (!(key in this)) {
|
|
53
|
+
this[key] = [];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
this.socket = this.createSocket(this.useSSL, false, new web_socket_adapter_pb_1.WebSocketAdapterPb());
|
|
57
|
+
}
|
|
58
|
+
/** Send message to channel */
|
|
59
|
+
async sendMessage(clan_id, channel_id, mode, is_public, msg, mentions, attachments, ref, anonymous_message, mention_everyone, avatar, code, topic_id) {
|
|
60
|
+
const messageLength = JSON.stringify(msg).length;
|
|
61
|
+
if (messageLength > 4096 * 2)
|
|
62
|
+
throw "Message exceeds allowed characters";
|
|
63
|
+
const msgACK = await this.socket.writeChatMessage(clan_id, channel_id, mode, is_public, msg, mentions, attachments, ref, anonymous_message, mention_everyone, avatar, code, topic_id);
|
|
64
|
+
return msgACK;
|
|
65
|
+
}
|
|
66
|
+
/** Send token to user */
|
|
67
|
+
async sendToken(sendTokenData) {
|
|
68
|
+
const session = this.session;
|
|
69
|
+
return this.apiClient.sendToken(session.token, sendTokenData);
|
|
70
|
+
}
|
|
71
|
+
/** React message */
|
|
72
|
+
async reactionMessage(id, clan_id, channel_id, mode, is_public, message_id, emoji_id, emoji, count, message_sender_id, action_delete) {
|
|
73
|
+
const msgReaction = await this.socket.writeMessageReaction(id, clan_id, channel_id, mode, is_public, message_id, emoji_id, emoji, count, message_sender_id, action_delete);
|
|
74
|
+
return msgReaction;
|
|
75
|
+
}
|
|
76
|
+
/** Update message */
|
|
77
|
+
async updateChatMessage(clan_id, channel_id, mode, is_public, message_id, content, mentions, attachments, hideEditted) {
|
|
78
|
+
const messageLength = JSON.stringify(content).length;
|
|
79
|
+
if (messageLength > 4096 * 2)
|
|
80
|
+
throw "Message exceeds allowed characters";
|
|
81
|
+
const msgUpdated = await this.socket.updateChatMessage(clan_id, channel_id, mode, is_public, message_id, content, mentions, attachments, hideEditted);
|
|
82
|
+
return msgUpdated;
|
|
83
|
+
}
|
|
84
|
+
/** Join to chat in clan when invited to clan */
|
|
85
|
+
async joinClanChat(clan_id) {
|
|
86
|
+
try {
|
|
87
|
+
await this.socket.joinClanChat(clan_id);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
throw (error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** Authenticate a user with an ID against the server. */
|
|
94
|
+
async authenticate() {
|
|
95
|
+
return this.apiClient.mezonAuthenticate(this.apiKey, "", {
|
|
96
|
+
account: {
|
|
97
|
+
token: this.apiKey,
|
|
98
|
+
}
|
|
99
|
+
}).then(async (apiSession) => {
|
|
100
|
+
const sockSession = new session_1.Session(apiSession);
|
|
101
|
+
this.session = await this.socket.connect(sockSession, true);
|
|
102
|
+
if (!this.session) {
|
|
103
|
+
return Promise.resolve("error authenticate");
|
|
104
|
+
}
|
|
105
|
+
await this.connectSocket();
|
|
106
|
+
this.isHardDisconnect = false;
|
|
107
|
+
return Promise.resolve("connect successful");
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/** Close socket. */
|
|
111
|
+
closeSocket() {
|
|
112
|
+
console.log("Client sent disconnected.");
|
|
113
|
+
this.isHardDisconnect = true;
|
|
114
|
+
this.socket.close();
|
|
115
|
+
}
|
|
116
|
+
/** Refresh a user's session using a refresh token retrieved from a previous authentication request. */
|
|
117
|
+
async sessionRefresh() {
|
|
118
|
+
}
|
|
119
|
+
/** Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user. */
|
|
120
|
+
async logout(session) {
|
|
121
|
+
const request = {
|
|
122
|
+
"token": session.token,
|
|
123
|
+
"refresh_token": session.refresh_token
|
|
124
|
+
};
|
|
125
|
+
return this.apiClient.mezonAuthenticateLogout(session.token, request).then((response) => {
|
|
126
|
+
return Promise.resolve(response !== undefined);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/** A socket created with the client's configuration. */
|
|
130
|
+
createSocket(useSSL = false, verbose = false, adapter = new web_socket_adapter_pb_1.WebSocketAdapterPb(), sendTimeoutMs = socket_1.DefaultSocket.DefaultSendTimeoutMs) {
|
|
131
|
+
return new socket_1.DefaultSocket(this.host, this.port, useSSL, verbose, adapter, sendTimeoutMs);
|
|
132
|
+
}
|
|
133
|
+
/**Add handle function to event socket */
|
|
134
|
+
on(event, func, context = null) {
|
|
135
|
+
const key = event;
|
|
136
|
+
if (!(key in this)) {
|
|
137
|
+
throw new Error("Mezon SDK not support this event");
|
|
138
|
+
}
|
|
139
|
+
if (typeof func != "function") {
|
|
140
|
+
throw new Error("Please add function to event");
|
|
141
|
+
}
|
|
142
|
+
const handleFunctions = this[key];
|
|
143
|
+
if (Array.isArray(handleFunctions)) {
|
|
144
|
+
handleFunctions.push(context ? func.bind(context) : func);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**remove handle function to event socket */
|
|
148
|
+
remove(event, func) {
|
|
149
|
+
const key = event;
|
|
150
|
+
if (!(key in this)) {
|
|
151
|
+
throw new Error("Mezon SDK not support this event");
|
|
152
|
+
}
|
|
153
|
+
const handleFunctions = this[key];
|
|
154
|
+
if (Array.isArray(handleFunctions)) {
|
|
155
|
+
this[key] = handleFunctions.filter((f) => f != func);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**Create connect to event socket */
|
|
159
|
+
async connectSocket() {
|
|
160
|
+
var _a;
|
|
161
|
+
const clans = await this.apiClient.listClanDescs(this.session.token);
|
|
162
|
+
(_a = clans.clandesc) === null || _a === void 0 ? void 0 : _a.forEach(async (clan) => {
|
|
163
|
+
await this.socket.joinClanChat(clan.clan_id || '');
|
|
164
|
+
});
|
|
165
|
+
// join direct message
|
|
166
|
+
await this.socket.joinClanChat("0");
|
|
167
|
+
["ondisconnect", "onerror", "onheartbeattimeout"].forEach((event) => {
|
|
168
|
+
this.socket[event] = this[event].bind(this);
|
|
169
|
+
});
|
|
170
|
+
for (const event in enum_1.Events) {
|
|
171
|
+
const key = enum_1.Events[event].toString();
|
|
172
|
+
this.socket.socketEvents.on(key, (...args) => {
|
|
173
|
+
const handleFunctions = this[key];
|
|
174
|
+
if (Array.isArray(handleFunctions)) {
|
|
175
|
+
handleFunctions.forEach((func) => {
|
|
176
|
+
if (typeof func == "function") {
|
|
177
|
+
Promise.resolve(func(...args)).catch((err) => {
|
|
178
|
+
if (func.toString().includes(" this.")) {
|
|
179
|
+
console.log(`Please using arrow function for function ${func.name} or add event with context with sync like .on('event', callback, this) pass 'this variable' in to get context`);
|
|
180
|
+
}
|
|
181
|
+
console.log(err);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
onerror(evt) {
|
|
190
|
+
console.log(evt);
|
|
191
|
+
if (this.isHardDisconnect)
|
|
192
|
+
return;
|
|
193
|
+
if (this.socket.isOpen()) {
|
|
194
|
+
this.retriesConnect();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
onheartbeattimeout() {
|
|
198
|
+
console.log("Heartbeat timeout.");
|
|
199
|
+
}
|
|
200
|
+
ondisconnect(e) {
|
|
201
|
+
console.log("Disconnected!", e === null || e === void 0 ? void 0 : e.reason);
|
|
202
|
+
if (this.isHardDisconnect)
|
|
203
|
+
return;
|
|
204
|
+
this.retriesConnect();
|
|
205
|
+
}
|
|
206
|
+
retriesConnect() {
|
|
207
|
+
let retryInterval = 5000; // Initial wait time in milliseconds
|
|
208
|
+
const maxRetryInterval = 60000; // Maximum wait time (60 seconds)
|
|
209
|
+
console.log("Reconnecting...");
|
|
210
|
+
const interval = setInterval(async () => {
|
|
211
|
+
try {
|
|
212
|
+
this.socket = this.createSocket(this.useSSL, false, new web_socket_adapter_pb_1.WebSocketAdapterPb());
|
|
213
|
+
await this.authenticate();
|
|
214
|
+
clearInterval(interval); // Clear the interval on success
|
|
215
|
+
console.log("Connected successfully!");
|
|
216
|
+
retryInterval = 5000; // Reset the interval on successful connection
|
|
217
|
+
}
|
|
218
|
+
catch (e) {
|
|
219
|
+
console.log("Connection failed:", e);
|
|
220
|
+
retryInterval = Math.min(retryInterval * 2, maxRetryInterval); // Double the interval, max at 32 seconds
|
|
221
|
+
// Clear the current interval and restart with the new retry interval
|
|
222
|
+
clearInterval(interval);
|
|
223
|
+
setTimeout(() => {
|
|
224
|
+
this.retriesConnect(); // Restart the connection attempt
|
|
225
|
+
}, retryInterval);
|
|
226
|
+
}
|
|
227
|
+
}, retryInterval);
|
|
228
|
+
}
|
|
229
|
+
async createChannelDesc(request) {
|
|
230
|
+
if (!this.session)
|
|
231
|
+
return;
|
|
232
|
+
const session = this.session;
|
|
233
|
+
if (this.autoRefreshSession &&
|
|
234
|
+
session.refresh_token &&
|
|
235
|
+
session.isexpired(Date.now() / 1000)) {
|
|
236
|
+
await this.sessionRefresh();
|
|
237
|
+
}
|
|
238
|
+
return this.apiClient
|
|
239
|
+
.createChannelDesc(session.token, request);
|
|
240
|
+
}
|
|
241
|
+
async sleep(ms) {
|
|
242
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
243
|
+
}
|
|
244
|
+
/** Create DM channel to send DM with user */
|
|
245
|
+
async createDMchannel(userId) {
|
|
246
|
+
try {
|
|
247
|
+
if (!(0, helper_1.isValidUserId)(userId))
|
|
248
|
+
return null;
|
|
249
|
+
const request = {
|
|
250
|
+
clan_id: "",
|
|
251
|
+
channel_id: "0",
|
|
252
|
+
category_id: "0",
|
|
253
|
+
type: enum_1.ChannelType.CHANNEL_TYPE_DM,
|
|
254
|
+
user_ids: [userId],
|
|
255
|
+
channel_private: 1,
|
|
256
|
+
};
|
|
257
|
+
const channelDM = await this.createChannelDesc(request);
|
|
258
|
+
if (channelDM) {
|
|
259
|
+
await this.socket.joinChat(channelDM.clan_id, channelDM.channel_id, channelDM.type, false);
|
|
260
|
+
return channelDM;
|
|
261
|
+
}
|
|
262
|
+
return null;
|
|
263
|
+
}
|
|
264
|
+
catch (e) {
|
|
265
|
+
console.log(e);
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
sendBulkMessage(messages, callback) {
|
|
270
|
+
const stack = new stack_1.Stack(DEFAULT_MESSAGE_PER_TIME, DEFAULT_SEND_BULK_INTERVAL, this, callback);
|
|
271
|
+
stack.push(messages);
|
|
272
|
+
return stack;
|
|
273
|
+
}
|
|
274
|
+
sendBulkMessageUser(messages, callback) {
|
|
275
|
+
const stack = new stack_1.Stack(DEFAULT_MESSAGE_PER_TIME, DEFAULT_SEND_BULK_INTERVAL, this, callback, true);
|
|
276
|
+
stack.push(messages);
|
|
277
|
+
return stack;
|
|
278
|
+
}
|
|
279
|
+
/** Send DM message to user */
|
|
280
|
+
async sendDMChannelMessage(channelDmId, msg, messOptions = {}, attachments = [], refs = []) {
|
|
281
|
+
const messageLength = JSON.stringify(msg).length +
|
|
282
|
+
JSON.stringify(messOptions).length;
|
|
283
|
+
if (messageLength > 4096 * 2)
|
|
284
|
+
throw "Message exceeds allowed characters";
|
|
285
|
+
try {
|
|
286
|
+
const message = {
|
|
287
|
+
clan_id: "",
|
|
288
|
+
channel_id: channelDmId,
|
|
289
|
+
is_public: false,
|
|
290
|
+
mode: (0, helper_1.convertChanneltypeToChannelMode)(enum_1.ChannelType.CHANNEL_TYPE_DM),
|
|
291
|
+
mentions: [],
|
|
292
|
+
attachments: attachments,
|
|
293
|
+
ref: [],
|
|
294
|
+
};
|
|
295
|
+
const mess = (0, generate_reply_message_1.replyMessageGenerate)(Object.assign(Object.assign({ messageContent: msg }, messOptions), { attachments, refs }), message);
|
|
296
|
+
return this.sendMessage(mess.clan_id, mess.channel_id, mess.mode, mess.is_public, mess.msg, [], mess.attachments, refs);
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
throw Error(`Can't send message channel DM`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/** List a channel's users. */
|
|
303
|
+
async listChannelVoiceUsers(clanId, channelId, channelType, limit = 500, state, cursor) {
|
|
304
|
+
if (limit <= 0 || limit > 500) {
|
|
305
|
+
console.log("0 < limit <= 500");
|
|
306
|
+
throw Error("0 < limit <= 500");
|
|
307
|
+
}
|
|
308
|
+
const session = this.session;
|
|
309
|
+
if (this.autoRefreshSession &&
|
|
310
|
+
session.refresh_token &&
|
|
311
|
+
session.isexpired(Date.now() / 1000)) {
|
|
312
|
+
await this.sessionRefresh();
|
|
313
|
+
}
|
|
314
|
+
return this.apiClient
|
|
315
|
+
.listChannelVoiceUsers(session.token, clanId, channelId, channelType, limit, state, cursor)
|
|
316
|
+
.then((response) => {
|
|
317
|
+
var result = {
|
|
318
|
+
voice_channel_users: [],
|
|
319
|
+
};
|
|
320
|
+
if (response.voice_channel_users == null) {
|
|
321
|
+
return Promise.resolve(result);
|
|
322
|
+
}
|
|
323
|
+
response.voice_channel_users.forEach((gu) => {
|
|
324
|
+
result.voice_channel_users.push({
|
|
325
|
+
id: gu.id,
|
|
326
|
+
channel_id: gu.channel_id,
|
|
327
|
+
user_id: gu.user_id,
|
|
328
|
+
participant: gu.participant,
|
|
329
|
+
});
|
|
330
|
+
});
|
|
331
|
+
return Promise.resolve(result);
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
/** Register stream channel */
|
|
335
|
+
async registerStreamingChannel(request) {
|
|
336
|
+
const session = this.session;
|
|
337
|
+
if (this.autoRefreshSession &&
|
|
338
|
+
session.refresh_token &&
|
|
339
|
+
session.isexpired(Date.now() / 1000)) {
|
|
340
|
+
await this.sessionRefresh();
|
|
341
|
+
}
|
|
342
|
+
return this.apiClient
|
|
343
|
+
.registerStreamingChannel(session.token, request);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
exports.MezonClient = MezonClient;
|
|
347
|
+
;
|
|
348
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -708,15 +708,15 @@ export interface RoomMetadataEvent {
|
|
|
708
708
|
}
|
|
709
709
|
/** Session started event - Room starts */
|
|
710
710
|
export interface AIAgentSessionStartedEvent extends RoomMetadataEvent {
|
|
711
|
-
event_type:
|
|
711
|
+
event_type: "room_started";
|
|
712
712
|
}
|
|
713
713
|
/** Session ended event - Room ends */
|
|
714
714
|
export interface AIAgentSessionEndedEvent extends RoomMetadataEvent {
|
|
715
|
-
event_type:
|
|
715
|
+
event_type: "room_ended";
|
|
716
716
|
}
|
|
717
717
|
/** Session summary done event - Room summary completed */
|
|
718
718
|
export interface AIAgentSessionSummaryDoneEvent extends RoomMetadataEvent {
|
|
719
|
-
event_type:
|
|
719
|
+
event_type: "room_summary_done";
|
|
720
720
|
}
|
|
721
721
|
export interface Client {
|
|
722
722
|
authenticate: () => Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/interfaces/client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/interfaces/client.ts"],"names":[],"mappings":";;;AA4cA,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,mEAAW,CAAA;IACX,uEAAa,CAAA;IACb,mEAAW,CAAA;IACX,iEAAU,CAAA;IACV,6DAAQ,CAAA;AACV,CAAC,EANW,mBAAmB,mCAAnB,mBAAmB,QAM9B;AAED,IAAY,qBAQX;AARD,WAAY,qBAAqB;IAC/B,qEAAU,CAAA;IACV,qEAAU,CAAA;IACV,mEAAS,CAAA;IACT,6EAAc,CAAA;IACd,mEAAS,CAAA;IACT,2EAAa,CAAA;IACb,iEAAQ,CAAA;AACV,CAAC,EARW,qBAAqB,qCAArB,qBAAqB,QAQhC;AAED,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,2DAAQ,CAAA;IACR,2DAAQ,CAAA;IACR,2DAAQ,CAAA;IACR,iEAAW,CAAA;AACb,CAAC,EALW,kBAAkB,kCAAlB,kBAAkB,QAK7B;AAoGD,IAAY,aASX;AATD,WAAY,aAAa;IACvB,6BAAY,CAAA;IACZ,6BAAY,CAAA;IACZ,4BAAW,CAAA;IACX,2BAAU,CAAA;IACV,2BAAU,CAAA;IACV,4BAAW,CAAA;IACX,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;AACvB,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MezonApi } from "../api";
|
|
2
|
+
import { ApiChannelDescription, ApiVoiceChannelUserList } from "../interfaces";
|
|
3
|
+
import { SessionManager } from "./session_manager";
|
|
4
|
+
import { SocketManager } from "./socket_manager";
|
|
5
|
+
export declare class ChannelManager {
|
|
6
|
+
private apiClient;
|
|
7
|
+
private socketManager;
|
|
8
|
+
private sessionManager;
|
|
9
|
+
constructor(apiClient: MezonApi, socketManager: SocketManager, sessionManager: SessionManager);
|
|
10
|
+
/** Create DM channel with user */
|
|
11
|
+
createDMchannel(userId: string): Promise<null | ApiChannelDescription>;
|
|
12
|
+
/** List current user in channel voice */
|
|
13
|
+
listChannelVoiceUsers(clanId: string, channelId: string, channelType: number, limit?: number, state?: number, cursor?: string): Promise<ApiVoiceChannelUserList>;
|
|
14
|
+
private sleep;
|
|
15
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChannelManager = void 0;
|
|
4
|
+
const enum_1 = require("../constants/enum");
|
|
5
|
+
const helper_1 = require("../utils/helper");
|
|
6
|
+
class ChannelManager {
|
|
7
|
+
constructor(apiClient, socketManager, sessionManager) {
|
|
8
|
+
this.apiClient = apiClient;
|
|
9
|
+
this.socketManager = socketManager;
|
|
10
|
+
this.sessionManager = sessionManager;
|
|
11
|
+
}
|
|
12
|
+
/** Create DM channel with user */
|
|
13
|
+
async createDMchannel(userId) {
|
|
14
|
+
try {
|
|
15
|
+
if (!(0, helper_1.isValidUserId)(userId))
|
|
16
|
+
return null;
|
|
17
|
+
const socket = this.socketManager.getSocket();
|
|
18
|
+
const request = {
|
|
19
|
+
clan_id: "",
|
|
20
|
+
channel_id: "0",
|
|
21
|
+
category_id: "0",
|
|
22
|
+
type: enum_1.ChannelType.CHANNEL_TYPE_DM,
|
|
23
|
+
user_ids: [userId],
|
|
24
|
+
channel_private: 1,
|
|
25
|
+
};
|
|
26
|
+
const channelDM = await this.apiClient.createChannelDesc(this.sessionManager.getSession().token, request);
|
|
27
|
+
if (channelDM) {
|
|
28
|
+
await this.sleep(100);
|
|
29
|
+
await socket.joinChat(channelDM.clan_id, channelDM.channel_id, channelDM.type, false);
|
|
30
|
+
return channelDM;
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
console.log(e);
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** List current user in channel voice */
|
|
40
|
+
async listChannelVoiceUsers(clanId, channelId, channelType, limit = 500, state, cursor) {
|
|
41
|
+
if (limit <= 0 || limit > 500) {
|
|
42
|
+
console.log("0 < limit <= 500");
|
|
43
|
+
throw new Error("0 < limit <= 500");
|
|
44
|
+
}
|
|
45
|
+
return this.apiClient
|
|
46
|
+
.listChannelVoiceUsers(this.sessionManager.getSession().token, clanId, channelId, channelType, limit, state, cursor)
|
|
47
|
+
.then((response) => {
|
|
48
|
+
var result = {
|
|
49
|
+
voice_channel_users: [],
|
|
50
|
+
};
|
|
51
|
+
if (response.voice_channel_users == null) {
|
|
52
|
+
return Promise.resolve(result);
|
|
53
|
+
}
|
|
54
|
+
response.voice_channel_users.forEach((gu) => {
|
|
55
|
+
result.voice_channel_users.push({
|
|
56
|
+
id: gu.id,
|
|
57
|
+
channel_id: gu.channel_id,
|
|
58
|
+
user_id: gu.user_id,
|
|
59
|
+
participant: gu.participant,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
return Promise.resolve(result);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
sleep(ms) {
|
|
66
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.ChannelManager = ChannelManager;
|
|
70
|
+
//# sourceMappingURL=channel_manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_manager.js","sourceRoot":"","sources":["../../../src/mezon-client/channel_manager.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAMhD,4CAAgD;AAIhD,MAAa,cAAc;IACzB,YACU,SAAmB,EACnB,aAA4B,EAC5B,cAA8B;QAF9B,cAAS,GAAT,SAAS,CAAU;QACnB,kBAAa,GAAb,aAAa,CAAe;QAC5B,mBAAc,GAAd,cAAc,CAAgB;IACrC,CAAC;IAEJ,kCAAkC;IAClC,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,IAAI;YACF,IAAI,CAAC,IAAA,sBAAa,EAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAgC;gBAC3C,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,GAAG;gBAChB,IAAI,EAAE,kBAAW,CAAC,eAAe;gBACjC,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,eAAe,EAAE,CAAC;aACnB,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,CACtD,IAAI,CAAC,cAAc,CAAC,UAAU,EAAG,CAAC,KAAK,EACvC,OAAO,CACR,CAAC;YAEF,IAAI,SAAS,EAAE;gBACb,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtB,MAAM,MAAM,CAAC,QAAQ,CACnB,SAAS,CAAC,OAAQ,EAClB,SAAS,CAAC,UAAW,EACrB,SAAS,CAAC,IAAK,EACf,KAAK,CACN,CAAC;gBACF,OAAO,SAAS,CAAC;aAClB;YACD,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,qBAAqB,CACzB,MAAc,EACd,SAAiB,EACjB,WAAmB,EACnB,QAAgB,GAAG,EACnB,KAAc,EACd,MAAe;QAEf,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE;YAC7B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACrC;QACD,OAAO,IAAI,CAAC,SAAS;aAClB,qBAAqB,CACpB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAG,CAAC,KAAK,EACvC,MAAM,EACN,SAAS,EACT,WAAW,EACX,KAAK,EACL,KAAK,EACL,MAAM,CACP;aACA,IAAI,CAAC,CAAC,QAAiC,EAAE,EAAE;YAC1C,IAAI,MAAM,GAA4B;gBACpC,mBAAmB,EAAE,EAAE;aACxB,CAAC;YAEF,IAAI,QAAQ,CAAC,mBAAmB,IAAI,IAAI,EAAE;gBACxC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAED,QAAQ,CAAC,mBAAoB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC3C,MAAM,CAAC,mBAAoB,CAAC,IAAI,CAAC;oBAC/B,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,UAAU,EAAE,EAAE,CAAC,UAAU;oBACzB,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,WAAW,EAAE,EAAE,CAAC,WAAW;iBAC5B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF;AAzFD,wCAyFC"}
|
|
@@ -62,7 +62,6 @@ export declare class MezonClientCore extends EventEmitter {
|
|
|
62
62
|
addQuickMenuAccess(body: ApiQuickMenuAccessPayload): Promise<any>;
|
|
63
63
|
deleteQuickMenuAccess(botId?: string): Promise<any>;
|
|
64
64
|
closeSocket(): void;
|
|
65
|
-
connectMezonAgentSSE(): void;
|
|
66
65
|
listTransactionDetail(transactionId: string): Promise<any>;
|
|
67
66
|
protected _fetchClanFromAPI(id: string): Promise<Clan>;
|
|
68
67
|
protected _fetchChannelFromAPI(id: string): Promise<TextChannel>;
|
|
@@ -172,6 +172,7 @@ class MezonClientCore extends events_1.EventEmitter {
|
|
|
172
172
|
await this.socketManager.connectSocket(sessionConnected.token);
|
|
173
173
|
await this.channelManager.initAllDmChannels(sessionConnected.token);
|
|
174
174
|
}
|
|
175
|
+
this._connectMezonAgentSSE();
|
|
175
176
|
this.emit("ready");
|
|
176
177
|
return JSON.stringify(sessionApi !== null && sessionApi !== void 0 ? sessionApi : {});
|
|
177
178
|
}
|
|
@@ -344,9 +345,6 @@ class MezonClientCore extends events_1.EventEmitter {
|
|
|
344
345
|
this.socketManager.closeSocket();
|
|
345
346
|
this.eventManager = new event_manager_1.EventManager();
|
|
346
347
|
}
|
|
347
|
-
connectMezonAgentSSE() {
|
|
348
|
-
this._connectMezonAgentSSE();
|
|
349
|
-
}
|
|
350
348
|
async listTransactionDetail(transactionId) {
|
|
351
349
|
console.log("listTransactionDetail transactionId", transactionId);
|
|
352
350
|
}
|