sim-sdk-web 1.0.17 → 1.0.19

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.
@@ -0,0 +1,30 @@
1
+ import SIMSDK from './index';
2
+ import { ServiceTypes } from '../types/entity';
3
+ /**
4
+ * 服务管理器 - 负责管理SDK的各个服务实例
5
+ */
6
+ export declare class ServiceManager {
7
+ private sdk;
8
+ private services;
9
+ /**
10
+ * 创建服务管理器
11
+ * @param sdk SIMSDK实例
12
+ */
13
+ constructor(sdk: SIMSDK);
14
+ /**
15
+ * 获取服务实例,如果不存在则创建
16
+ * @param name 服务名称
17
+ * @returns 服务实例
18
+ */
19
+ get<K extends keyof ServiceTypes>(name: K): ServiceTypes[K];
20
+ /**
21
+ * 创建服务实例
22
+ * @param name 服务名称
23
+ * @returns 创建的服务实例
24
+ */
25
+ private createService;
26
+ /**
27
+ * 重置服务管理器,清空所有服务实例
28
+ */
29
+ reset(): void;
30
+ }
@@ -1,25 +1,19 @@
1
- import SIMSDK from '.';
2
- import type { GetOneConversationParams, PinConversationParams, SetBurnDurationParams, SetConversationDraftParams, SetConversationPrivateParams, SetConversationRecvOptParams, SplitConversationParams } from '../types/params';
1
+ import SIMSDK from './index';
3
2
  import { ConversationItem, PageParam, ServerResponse } from '../types/entity';
4
- export declare function setupConversation(simSDK: SIMSDK): {
5
- getAllConversationList: () => Promise<ServerResponse<PageParam<ConversationItem>>>;
6
- };
7
- export interface ConversationApi {
8
- getAllConversationList: (operationID?: string) => Promise<ServerResponse<ConversationItem[]>>;
9
- getConversationListSplit: (params: SplitConversationParams, operationID?: string) => Promise<ServerResponse<ConversationItem[]>>;
10
- getOneConversation: (params: GetOneConversationParams, operationID?: string) => Promise<ServerResponse<ConversationItem>>;
11
- getMultipleConversation: (params: string, operationID?: string) => Promise<ServerResponse<ConversationItem[]>>;
12
- getConversationIDBySessionType: (params: GetOneConversationParams, operationID?: string) => Promise<ServerResponse<ConversationItem>>;
13
- getTotalUnreadMsgCount: (operationID?: string) => Promise<ServerResponse<number>>;
14
- markConversationMessageAsRead: (params: string, operationID?: string) => Promise<ServerResponse<unknown>>;
15
- setConversationDraft: (params: SetConversationDraftParams, operationID?: string) => Promise<ServerResponse<unknown>>;
16
- pinConversation: (params: PinConversationParams, operationID?: string) => Promise<ServerResponse<unknown>>;
17
- setConversationRecvMessageOpt: (params: SetConversationRecvOptParams, operationID?: string) => Promise<ServerResponse<unknown>>;
18
- setConversationPrivateChat: (params: SetConversationPrivateParams, operationID?: string) => Promise<ServerResponse<unknown>>;
19
- setConversationBurnDuration: (params: SetBurnDurationParams, operationID?: string) => Promise<ServerResponse<unknown>>;
20
- resetConversationGroupAtType: (params: string, operationID?: string) => Promise<ServerResponse<unknown>>;
21
- hideConversation: (params: string, operationID?: string) => Promise<ServerResponse<unknown>>;
22
- hideAllConversation: (operationID?: string) => Promise<ServerResponse<unknown>>;
23
- clearConversationAndDeleteAllMsg: (params: string, operationID?: string) => Promise<ServerResponse<unknown>>;
24
- deleteConversationAndDeleteAllMsg: (params: string, operationID?: string) => Promise<ServerResponse<unknown>>;
3
+ /**
4
+ * 会话服务类 - 处理所有会话相关操作
5
+ */
6
+ export declare class ConversationService {
7
+ private readonly sdk;
8
+ /**
9
+ * 创建会话服务实例
10
+ * @param sdk SIMSDK实例
11
+ */
12
+ constructor(sdk: SIMSDK);
13
+ /**
14
+ * 获取所有会话列表
15
+ * @param params 分页参数
16
+ * @returns 会话列表Promise
17
+ */
18
+ getConversations(): Promise<ServerResponse<PageParam<ConversationItem>>>;
25
19
  }
@@ -1,8 +1,25 @@
1
- import SIMSDK from '.';
1
+ import SIMSDK from './index';
2
2
  import { GroupInfoVO, GroupItem, ServerResponse } from '../types/entity';
3
+ /**
4
+ * 群组服务 - 负责群组创建、管理和成员操作
5
+ */
3
6
  export declare class GroupService {
4
- private simSDK;
5
- constructor(simSDK: SIMSDK);
6
- createGroup(group: GroupItem): Promise<ServerResponse>;
7
+ private readonly sdk;
8
+ /**
9
+ * 创建群组服务实例
10
+ * @param sdk SIMSDK实例
11
+ */
12
+ constructor(sdk: SIMSDK);
13
+ /**
14
+ * 创建新群组
15
+ * @param group 群组信息
16
+ * @returns 创建结果Promise
17
+ */
18
+ createGroup(group: GroupItem): Promise<ServerResponse<GroupInfoVO>>;
19
+ /**
20
+ * 获取群组详细信息
21
+ * @param groupId 群组ID
22
+ * @returns 群组信息Promise
23
+ */
7
24
  getGroupInfo(groupId: string): Promise<ServerResponse<GroupInfoVO>>;
8
25
  }
@@ -1,85 +1,189 @@
1
- import { GroupItem, HistoryMessageParam, ServerResponse, Request } from '../types/entity';
1
+ import { GroupItem, HistoryMessageParam, ServerResponse, Request, MessageItem } from '../types/entity';
2
2
  import type { LoginParams, UploadFileParams } from '../types/params';
3
3
  import { RequestApi } from '../constant/api';
4
- import { UserApi } from './user';
5
- import { FriendApi } from './friend';
6
- import { ConversationApi } from './conversation';
7
4
  import Emitter from '../utils/emitter';
8
5
  import { HttpMethod } from '../utils/request';
9
- declare class SIMSDK extends Emitter implements UserApi, FriendApi, ConversationApi {
10
- private username?;
11
- private token?;
12
- private appKey?;
13
- private apiAddr?;
6
+ import { UserService } from './user';
7
+ import { GroupService } from './group';
8
+ import { MessageService } from './message';
9
+ import { ConversationService } from './conversation';
10
+ interface SDKOptions {
11
+ debug?: boolean;
12
+ apiAddr?: string;
13
+ appKey?: string;
14
+ }
15
+ /**
16
+ * SIMSDK主类 - 实时通信SDK的入口点
17
+ */
18
+ declare class SIMSDK extends Emitter {
19
+ private config;
20
+ private internalState;
14
21
  private sseClient?;
15
- private readonly debug;
16
- private messageService;
17
- private groupService;
22
+ private readonly serviceManager;
23
+ /**
24
+ * 创建SIMSDK实例
25
+ * @param debug 是否启用调试模式
26
+ */
18
27
  constructor(debug?: boolean);
28
+ /**
29
+ * 配置SDK
30
+ * @param options SDK配置选项
31
+ */
32
+ configure(options: SDKOptions): void;
33
+ /**
34
+ * 设置API地址
35
+ * @param apiAddr API地址
36
+ */
37
+ setApiAddr(apiAddr: string): void;
38
+ /**
39
+ * 设置应用密钥
40
+ * @param appKey 应用密钥
41
+ */
42
+ setAppKey(appKey: string): void;
43
+ /**
44
+ * 获取指定服务实例
45
+ * @param name 服务名称
46
+ * @returns 服务实例
47
+ */
48
+ private getService;
49
+ /**
50
+ * 消息服务访问器
51
+ */
52
+ get message(): MessageService;
53
+ /**
54
+ * 会话服务访问器
55
+ */
56
+ get conversation(): ConversationService;
57
+ /**
58
+ * 群组服务访问器
59
+ */
60
+ get group(): GroupService;
61
+ /**
62
+ * 用户服务访问器
63
+ */
64
+ get user(): UserService;
65
+ /**
66
+ * 获取用户名
67
+ */
68
+ get username(): string | undefined;
69
+ /**
70
+ * 检查是否已连接
71
+ * @returns 是否已连接
72
+ */
73
+ isConnected(): boolean;
74
+ /**
75
+ * 检查是否已登录
76
+ * @returns 是否已登录
77
+ */
78
+ isLoggedIn(): boolean;
79
+ /**
80
+ * 发送请求到服务器
81
+ * @param requestObj 请求对象
82
+ * @returns 请求响应Promise
83
+ */
19
84
  sendRequest: <T>(requestObj: Request) => Promise<ServerResponse<T>>;
20
- createRequestFunction: <T extends Record<string, any> | undefined, R = unknown>(reqFuncName: RequestApi, method: HttpMethod) => (params: T) => Promise<ServerResponse<R>>;
21
- createRequestFunctionWithoutParams: <T = unknown>(reqFuncName: RequestApi, method: HttpMethod) => () => Promise<ServerResponse<T>>;
85
+ /**
86
+ * 记录请求日志
87
+ * @param requestObj 请求对象
88
+ */
89
+ private logRequest;
90
+ /**
91
+ * 创建带参数的请求函数
92
+ * @param reqFuncName 请求API名称
93
+ * @param method HTTP方法
94
+ * @returns 请求函数
95
+ */
96
+ createRequestFunction: <ReqType extends Record<string, any> | undefined, ResType = unknown>(reqFuncName: RequestApi, method: HttpMethod) => (params: ReqType) => Promise<ServerResponse<ResType>>;
97
+ /**
98
+ * 创建无参数的请求函数
99
+ * @param reqFuncName 请求API名称
100
+ * @param method HTTP方法
101
+ * @returns 请求函数
102
+ */
103
+ createRequestFunctionWithoutParams: <ResType = unknown>(reqFuncName: RequestApi, method: HttpMethod) => () => Promise<ServerResponse<ResType>>;
104
+ /**
105
+ * 处理SSE消息
106
+ * @param response SSE响应数据
107
+ */
22
108
  private handleMessage;
109
+ /**
110
+ * 处理重连成功事件
111
+ */
23
112
  private handleReconnectSuccess;
24
- log(...args: any[]): void;
25
113
  /**
26
- * Login to the server using the provided login parameters.
27
- *
28
- * @param params - The login parameters, including api address, username, token, and app key.
29
- * @returns A promise that resolves to a success message or rejects with an error message.
114
+ * 处理连接关闭事件
115
+ */
116
+ private handleConnectionClosed;
117
+ /**
118
+ * 登录到服务器
119
+ * @param params 登录参数
120
+ * @returns 登录结果Promise
30
121
  */
31
122
  login: (params: LoginParams) => Promise<string>;
123
+ /**
124
+ * 登出
125
+ * @returns 登出结果Promise
126
+ */
32
127
  logout: () => Promise<ServerResponse<unknown>>;
128
+ /**
129
+ * 内部上传文件方法
130
+ * @param file 要上传的文件
131
+ * @returns 上传结果
132
+ */
33
133
  private internalUploadFile;
134
+ /**
135
+ * 上传文件
136
+ * @param params 上传参数
137
+ * @returns 上传结果Promise
138
+ */
34
139
  uploadFile: ({ file }: UploadFileParams) => Promise<ServerResponse<{
35
140
  url: string;
36
141
  }>>;
37
- getSelfUserInfo: UserApi['getSelfUserInfo'];
38
- setSelfInfo: UserApi['setSelfInfo'];
39
- getUsersInfoWithCache: UserApi['getUsersInfoWithCache'];
40
- subscribeUsersStatus: UserApi['subscribeUsersStatus'];
41
- unsubscribeUsersStatus: UserApi['unsubscribeUsersStatus'];
42
- getSubscribeUsersStatus: UserApi['getSubscribeUsersStatus'];
43
- setAppBackgroundStatus: UserApi['setAppBackgroundStatus'];
44
- networkStatusChanged: UserApi['networkStatusChanged'];
45
- setGlobalRecvMessageOpt: UserApi['setGlobalRecvMessageOpt'];
46
- acceptFriendApplication: FriendApi['acceptFriendApplication'];
47
- addBlack: FriendApi['addBlack'];
48
- addFriend: FriendApi['addFriend'];
49
- checkFriend: FriendApi['checkFriend'];
50
- deleteFriend: FriendApi['deleteFriend'];
51
- getBlackList: FriendApi['getBlackList'];
52
- getFriendApplicationListAsApplicant: FriendApi['getFriendApplicationListAsApplicant'];
53
- getFriendApplicationListAsRecipient: FriendApi['getFriendApplicationListAsRecipient'];
54
- getFriendList: FriendApi['getFriendList'];
55
- getFriendListPage: FriendApi['getFriendListPage'];
56
- getSpecifiedFriendsInfo: FriendApi['getSpecifiedFriendsInfo'];
57
- refuseFriendApplication: FriendApi['refuseFriendApplication'];
58
- removeBlack: FriendApi['removeBlack'];
59
- searchFriends: FriendApi['searchFriends'];
60
- setFriendRemark: FriendApi['setFriendRemark'];
61
- get createGroup(): (group: GroupItem) => Promise<ServerResponse<unknown>>;
62
- get getGroupInfo(): (groupId: string) => Promise<ServerResponse<import("../types/entity").GroupInfoVO>>;
63
- get createTextMessage(): (text: string, params?: Partial<Omit<import("../types/entity").MessageItem, "text">>) => Promise<ServerResponse>;
64
- get getHistoryMessageList(): (params: HistoryMessageParam) => Promise<ServerResponse<import("../types/entity").HistoryMessageResponse>>;
142
+ /**
143
+ * 监听单条消息
144
+ * @param callback 消息回调函数
145
+ * @returns 取消订阅函数
146
+ */
147
+ onMessage(callback: (message: MessageItem) => void): () => void;
148
+ /**
149
+ * 监听多条消息
150
+ * @param callback 消息回调函数
151
+ * @returns 取消订阅函数
152
+ */
153
+ onMessages(callback: (messages: MessageItem[]) => void): () => void;
154
+ /**
155
+ * 监听连接状态变化
156
+ * @param callback 状态变化回调
157
+ * @returns 取消订阅函数
158
+ */
159
+ onConnectionChange(callback: (isConnected: boolean) => void): () => void;
160
+ /**
161
+ * 监听被踢下线事件
162
+ * @param callback 回调函数
163
+ * @returns 取消订阅函数
164
+ */
165
+ onKickedOffline(callback: () => void): () => void;
166
+ createTextMessage: (text: string) => Promise<ServerResponse<MessageItem>>;
167
+ createImageMessage: (imageUrl: string) => Promise<ServerResponse<MessageItem>>;
168
+ getHistoryMessageList: (params: HistoryMessageParam) => Promise<ServerResponse<import("../types/entity").HistoryMessageResponse>>;
169
+ /**
170
+ * 获取会话列表
171
+ * @param params 分页参数
172
+ * @returns 会话列表
173
+ */
174
+ getConversations: () => Promise<ServerResponse<import("../types/entity").PageParam<import("../types/entity").ConversationItem>>>;
175
+ /**
176
+ * 创建群组
177
+ * @param group 群组信息
178
+ * @returns 创建结果
179
+ */
180
+ createGroup: (group: GroupItem) => Promise<ServerResponse<import("../types/entity").GroupInfoVO>>;
181
+ /**
182
+ * 获取群组信息
183
+ * @param groupId 群组ID
184
+ * @returns 群组信息
185
+ */
186
+ getGroupInfo: (groupId: string) => Promise<ServerResponse<import("../types/entity").GroupInfoVO>>;
65
187
  get uuid(): string;
66
- getAllConversationList: ConversationApi['getAllConversationList'];
67
- getConversationListSplit: ConversationApi['getConversationListSplit'];
68
- getOneConversation: ConversationApi['getOneConversation'];
69
- getMultipleConversation: ConversationApi['getMultipleConversation'];
70
- getConversationIDBySessionType: ConversationApi['getConversationIDBySessionType'];
71
- getTotalUnreadMsgCount: ConversationApi['getTotalUnreadMsgCount'];
72
- markConversationMessageAsRead: ConversationApi['markConversationMessageAsRead'];
73
- setConversationDraft: ConversationApi['setConversationDraft'];
74
- pinConversation: ConversationApi['pinConversation'];
75
- setConversationRecvMessageOpt: ConversationApi['setConversationRecvMessageOpt'];
76
- setConversationPrivateChat: ConversationApi['setConversationPrivateChat'];
77
- setConversationBurnDuration: ConversationApi['setConversationBurnDuration'];
78
- resetConversationGroupAtType: ConversationApi['resetConversationGroupAtType'];
79
- hideConversation: ConversationApi['hideConversation'];
80
- hideAllConversation: ConversationApi['hideAllConversation'];
81
- clearConversationAndDeleteAllMsg: ConversationApi['clearConversationAndDeleteAllMsg'];
82
- deleteConversationAndDeleteAllMsg: ConversationApi['deleteConversationAndDeleteAllMsg'];
83
188
  }
84
189
  export default SIMSDK;
85
- export type MixinApiService = SIMSDK & UserApi & FriendApi & ConversationApi;
@@ -1,11 +1,50 @@
1
1
  import { HistoryMessageParam, HistoryMessageResponse, MessageItem, ServerResponse } from '../types/entity';
2
- import SIMSDK from '.';
2
+ import SIMSDK from './index';
3
+ /**
4
+ * 消息服务 - 负责消息创建、发送和历史记录
5
+ */
3
6
  export declare class MessageService {
4
- private simSDK;
5
- constructor(simSDK: SIMSDK);
7
+ private readonly sdk;
8
+ /**
9
+ * 创建消息服务实例
10
+ * @param sdk SIMSDK实例
11
+ */
12
+ constructor(sdk: SIMSDK);
13
+ /**
14
+ * 通用发送消息方法
15
+ * @param messageItem 消息项
16
+ * @param apiEndpoint API端点
17
+ * @returns 发送结果Promise
18
+ */
6
19
  private sendMessage;
20
+ /**
21
+ * 创建消息通用方法
22
+ * @param type 消息类型
23
+ * @param url API端点
24
+ * @param additionalParams 附加参数
25
+ * @param contentKey 内容键名
26
+ * @param content 消息内容
27
+ * @returns 创建结果Promise
28
+ */
7
29
  private createMessage;
8
- createTextMessage(text: string, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse>;
30
+ /**
31
+ * 创建文本消息
32
+ * @param text 文本内容
33
+ * @param params 附加参数
34
+ * @returns 创建结果Promise
35
+ */
36
+ createTextMessage(text: string, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse<MessageItem>>;
37
+ /**
38
+ * 创建图片消息
39
+ * @param imageUrl 图片URL
40
+ * @param params 附加参数
41
+ * @returns 创建结果Promise
42
+ */
9
43
  createImageMessage(imageUrl: string, params?: Partial<Omit<MessageItem, 'snapshot'>>): Promise<ServerResponse<MessageItem>>;
44
+ /**
45
+ * 获取历史消息列表
46
+ * @param params 查询参数
47
+ * @returns 历史消息Promise
48
+ */
10
49
  getHistoryMessageList({ groupId, lastId, size }: HistoryMessageParam): Promise<ServerResponse<HistoryMessageResponse>>;
11
50
  }
package/lib/api/user.d.ts CHANGED
@@ -1,16 +1,25 @@
1
- import type { GetUserInfoWithCacheParams } from '../types/params';
2
- import SIMSDK from '.';
3
- import type { MessageReceiveOptType } from '../types/enum';
4
- import type { FullUserItemWithCache, SelfUserInfo, UserOnlineState, ServerResponse } from '../types/entity';
5
- export declare function setupUser(simSDK: SIMSDK): {};
6
- export interface UserApi {
7
- getSelfUserInfo: (operationID?: string) => Promise<ServerResponse<SelfUserInfo>>;
8
- setSelfInfo: (params: Partial<SelfUserInfo>, operationID?: string) => Promise<ServerResponse<unknown>>;
9
- getUsersInfoWithCache: (params: GetUserInfoWithCacheParams, operationID?: string) => Promise<ServerResponse<FullUserItemWithCache[]>>;
10
- subscribeUsersStatus: (params: string[], operationID?: string) => Promise<ServerResponse<UserOnlineState>>;
11
- unsubscribeUsersStatus: (params: string[], operationID?: string) => Promise<ServerResponse<unknown>>;
12
- getSubscribeUsersStatus: (operationID?: string) => Promise<ServerResponse<UserOnlineState[]>>;
13
- setAppBackgroundStatus: (params: boolean, operationID?: string) => Promise<ServerResponse<unknown>>;
14
- networkStatusChanged: (operationID?: string) => Promise<ServerResponse<unknown>>;
15
- setGlobalRecvMessageOpt: (params: MessageReceiveOptType, operationID?: string) => Promise<ServerResponse<unknown>>;
1
+ import { LoginParams } from '../types/params';
2
+ import SIMSDK from './index';
3
+ import { ServerResponse } from '../types/entity';
4
+ /**
5
+ * 用户服务 - 负责用户认证与基本信息
6
+ */
7
+ export declare class UserService {
8
+ private readonly sdk;
9
+ /**
10
+ * 创建用户服务实例
11
+ * @param sdk SIMSDK实例
12
+ */
13
+ constructor(sdk: SIMSDK);
14
+ /**
15
+ * 用户登录
16
+ * @param params 登录参数
17
+ * @returns 登录结果Promise
18
+ */
19
+ login(params: LoginParams): Promise<ServerResponse<string>>;
20
+ /**
21
+ * 用户登出
22
+ * @returns 登出结果Promise
23
+ */
24
+ logout(): Promise<ServerResponse<void>>;
16
25
  }
@@ -6,10 +6,11 @@ export declare enum ErrorCode {
6
6
  }
7
7
  export declare enum RequestApi {
8
8
  Login = "/chat/member/login",
9
- Logout = "Logout",
9
+ Logout = "/chat/member/logout",
10
10
  CreateGroup = "CreateGroup",
11
11
  GetGroupInfo = "/chat/group/info",
12
12
  GetAllConversationList = "/chat/group/list",
13
13
  CreateTextMessage = "/chat/message/push",
14
- GetHistoryMessageList = "/chat/message/pull"
14
+ GetHistoryMessageList = "/chat/message/pull",
15
+ UploadFile = "/chat/member/upload"
15
16
  }
@@ -1,7 +1,56 @@
1
+ /**
2
+ * SDK 回调事件枚举
3
+ * - 所有事件使用 On 前缀,便于统一识别
4
+ * - 事件分类: 连接状态、消息、用户状态、群组、会话
5
+ */
1
6
  export declare enum CbEvents {
2
- onReceiveMessage = "onReceiveMessage",
3
- onReceiveMessages = "onReceiveMessages",
4
- OnKickedOffline = "OnKickedOffline",
5
- OnUserTokenInvalid = "OnUserTokenInvalid",
6
- OnUserTokenExpired = "OnUserTokenExpired"
7
+ OnConnected = "OnConnected",// 连接成功
8
+ OnDisconnected = "OnDisconnected",// 连接断开
9
+ OnReconnecting = "OnReconnecting",// 正在重连
10
+ OnReconnected = "OnReconnected",// 重连成功
11
+ OnReconnectFailed = "OnReconnectFailed",// 重连失败
12
+ OnNetworkChange = "OnNetworkChange",// 网络状态变化
13
+ OnReceiveMessage = "OnReceiveMessage",// 收到单条消息
14
+ OnReceiveMessages = "OnReceiveMessages",// 收到多条消息
15
+ OnMessageSent = "OnMessageSent",// 消息发送成功
16
+ OnMessageFailed = "OnMessageFailed",// 消息发送失败
17
+ OnMessageRevoked = "OnMessageRevoked",// 消息被撤回
18
+ OnMessageDeleted = "OnMessageDeleted",// 消息被删除
19
+ OnMessageRead = "OnMessageRead",// 消息已读
20
+ OnTypingStatusUpdate = "OnTypingStatusUpdate",// 对方正在输入
21
+ OnUserStatusChange = "OnUserStatusChange",// 用户状态变更
22
+ OnKickedOffline = "OnKickedOffline",// 被踢下线
23
+ OnUserTokenInvalid = "OnUserTokenInvalid",// 用户 Token 无效
24
+ OnUserTokenExpired = "OnUserTokenExpired",// 用户 Token 过期
25
+ OnForceOffline = "OnForceOffline",// 强制下线
26
+ OnUserInfoUpdated = "OnUserInfoUpdated",// 用户信息更新
27
+ OnGroupCreated = "OnGroupCreated",// 群组被创建
28
+ OnGroupInfoUpdated = "OnGroupInfoUpdated",// 群组信息更新
29
+ OnGroupDissolved = "OnGroupDissolved",// 群组被解散
30
+ OnJoinGroup = "OnJoinGroup",// 加入群组
31
+ OnLeaveGroup = "OnLeaveGroup",// 离开群组
32
+ OnGroupMemberJoined = "OnGroupMemberJoined",// 群成员加入
33
+ OnGroupMemberLeft = "OnGroupMemberLeft",// 群成员离开
34
+ OnGroupMemberKicked = "OnGroupMemberKicked",// 群成员被踢
35
+ OnGroupOwnerChanged = "OnGroupOwnerChanged",// 群主变更
36
+ OnGroupAdminAdded = "OnGroupAdminAdded",// 新增管理员
37
+ OnGroupAdminRemoved = "OnGroupAdminRemoved",// 移除管理员
38
+ OnGroupMemberMuted = "OnGroupMemberMuted",// 群成员被禁言
39
+ OnGroupMemberUnmuted = "OnGroupMemberUnmuted",// 群成员解除禁言
40
+ OnGroupAllMemberMuted = "OnGroupAllMemberMuted",// 全员禁言
41
+ OnGroupAllMemberUnmuted = "OnGroupAllMemberUnmuted",// 解除全员禁言
42
+ OnConversationCreated = "OnConversationCreated",// 新建会话
43
+ OnConversationDeleted = "OnConversationDeleted",// 删除会话
44
+ OnConversationUpdated = "OnConversationUpdated",// 会话更新
45
+ OnUnreadCountChanged = "OnUnreadCountChanged",// 未读消息数变化
46
+ OnConversationPinned = "OnConversationPinned",// 会话置顶
47
+ OnConversationUnpinned = "OnConversationUnpinned",// 会话取消置顶
48
+ OnConversationMuted = "OnConversationMuted",// 会话免打扰
49
+ OnConversationUnmuted = "OnConversationUnmuted",// 取消会话免打扰
50
+ OnPongConn = "OnPongConn",// SSE 连接心跳
51
+ OnPongReConn = "OnPongReConn",// SSE 重连心跳
52
+ OnPongIdle = "OnPongIdle",// SSE 空闲心跳
53
+ OnError = "OnError",// 错误事件
54
+ OnWarning = "OnWarning",// 警告事件
55
+ OnLog = "OnLog"
7
56
  }
package/lib/index.es.js CHANGED
@@ -1 +1 @@
1
- import{EventSourcePolyfill as e}from"event-source-polyfill";function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},t.apply(null,arguments)}function n(e,t){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},n(e,t)}function o(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}var r,i,s=/*#__PURE__*/function(){function t(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess}var n=t.prototype;return n.removeAllEventListeners=function(){var e=this;this.eventSource&&(this.eventSource.removeEventListener("open",this.onOpen),this.handlers.forEach(function(t,n){var o;null==(o=e.eventSource)||o.removeEventListener(n,t)}),this.eventSource.removeEventListener("error",this.onError))},n.subscribe=function(e,t){this.handlers.set(e,t),this.connect()},n.connect=function(){var t=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(n,o){try{t.eventSource=new e(t.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+t.token}}),t.eventSource.addEventListener("open",function(e){t.onOpen(e),n("SSE connect successful!")}),t.eventSource.addEventListener("message",function(e){t.handleMessage(e.data)}),t.handlers.forEach(function(e,n){var o;null==(o=t.eventSource)||o.addEventListener(n,t.onMessage(e))}),t.eventSource.addEventListener("error",function(e){t.onError(e),t.connected||o("SSE connect error.")})}catch(e){console.error("Failed to create EventSource:",e),t.handleReconnect(),o(e)}})},n.onOpen=function(e){console.log("SSE connection established"),this.connected=!0,this.reconnectAttempts>0&&this.onReconnectSuccessCallback&&this.onReconnectSuccessCallback(),this.reconnectAttempts=0,this.reconnectTimeout=5e3},n.handleMessage=function(e){try{console.log("SSE handleMessage ",e);var t=JSON.parse(e);this.onMessageCallback&&this.onMessageCallback(t)}catch(e){console.error("数据解析错误:",e)}},n.onMessage=function(e){return function(t){try{var n=JSON.parse(t.data);console.log("Received SSE message:",n),"function"==typeof e&&e(n)}catch(e){console.error("Failed to parse SSE message:",e)}}},n.onError=function(e){console.error("SSE connection error:",e),this.connected=!1,401===e.status||e.statusText&&e.statusText.includes("Unauthorized")?this.cleanup():this.handleReconnect()},n.handleReconnect=function(){var e=this;if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return console.error("Max reconnection attempts reached"),void this.destroySse();console.log("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,3e4),e.reconnectTimer=null,e.connect()},this.reconnectTimeout)}},n.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},n.unsubscribe=function(){this.cleanup(),this.handlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},n.destroySse=function(){this.unsubscribe(),this.reconnectAttempts=this.maxReconnectAttempts},n.close=function(){this.destroySse(),console.log("SSE 连接已关闭")},n.isConnected=function(){return this.connected},t}();!function(e){e[e.ConnectionEstablishmentFailed=1e4]="ConnectionEstablishmentFailed",e[e.ResourceLoadNotCompleteError=10004]="ResourceLoadNotCompleteError",e[e.UnknownError=10005]="UnknownError",e[e.LoginRepeatError=10102]="LoginRepeatError"}(r||(r={})),function(e){e.Login="/chat/member/login",e.Logout="Logout",e.CreateGroup="CreateGroup",e.GetGroupInfo="/chat/group/info",e.GetAllConversationList="/chat/group/list",e.CreateTextMessage="/chat/message/push",e.GetHistoryMessageList="/chat/message/pull"}(i||(i={}));var a,c,u,d,l,v,g,h,p,m,f,M,S,A,E,y,T,O,b=/*#__PURE__*/function(){function e(e){this.simSDK=void 0,this.simSDK=e}var t=e.prototype;return t.createGroup=function(e){try{return Promise.resolve(this.simSDK.sendRequest({data:e,url:i.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},t.getGroupInfo=function(e){try{return Promise.resolve(this.simSDK.sendRequest({data:{groupId:e},url:i.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},e}();!function(e){e[e.Nomal=0]="Nomal",e[e.NotReceive=1]="NotReceive",e[e.NotNotify=2]="NotNotify"}(a||(a={})),function(e){e[e.Allowed=0]="Allowed",e[e.NotAllowed=1]="NotAllowed"}(c||(c={})),function(e){e[e.Group=2]="Group",e[e.WorkingGroup=2]="WorkingGroup"}(u||(u={})),function(e){e[e.Invitation=2]="Invitation",e[e.Search=3]="Search",e[e.QrCode=4]="QrCode"}(d||(d={})),function(e){e[e.Nomal=20]="Nomal",e[e.Admin=60]="Admin",e[e.Owner=100]="Owner"}(l||(l={})),function(e){e[e.ApplyNeedInviteNot=0]="ApplyNeedInviteNot",e[e.AllNeed=1]="AllNeed",e[e.AllNot=2]="AllNot"}(v||(v={})),function(e){e[e.iOS=1]="iOS",e[e.Android=2]="Android",e[e.Windows=3]="Windows",e[e.MacOSX=4]="MacOSX",e[e.Web=5]="Web",e[e.Linux=7]="Linux",e[e.AndroidPad=8]="AndroidPad",e[e.iPad=9]="iPad"}(g||(g={})),function(e){e[e.Debug=5]="Debug",e[e.Info=4]="Info",e[e.Warn=3]="Warn",e[e.Error=2]="Error",e[e.Fatal=1]="Fatal",e[e.Panic=0]="Panic"}(h||(h={})),function(e){e[e.Unprocessed=0]="Unprocessed",e[e.Agree=1]="Agree",e[e.Reject=-1]="Reject"}(p||(p={})),function(e){e[e.MESSAGE_TYPE_TEXT=0]="MESSAGE_TYPE_TEXT",e[e.TextMessage=101]="TextMessage",e[e.PictureMessage=102]="PictureMessage",e[e.VoiceMessage=103]="VoiceMessage",e[e.VideoMessage=104]="VideoMessage",e[e.FileMessage=105]="FileMessage",e[e.AtTextMessage=106]="AtTextMessage",e[e.MergeMessage=107]="MergeMessage",e[e.CardMessage=108]="CardMessage",e[e.LocationMessage=109]="LocationMessage",e[e.CustomMessage=110]="CustomMessage",e[e.TypingMessage=113]="TypingMessage",e[e.QuoteMessage=114]="QuoteMessage",e[e.FaceMessage=115]="FaceMessage",e[e.FriendAdded=1201]="FriendAdded",e[e.OANotification=1400]="OANotification",e[e.GroupCreated=1501]="GroupCreated",e[e.MemberQuit=1504]="MemberQuit",e[e.GroupOwnerTransferred=1507]="GroupOwnerTransferred",e[e.MemberKicked=1508]="MemberKicked",e[e.MemberInvited=1509]="MemberInvited",e[e.MemberEnter=1510]="MemberEnter",e[e.GroupDismissed=1511]="GroupDismissed",e[e.GroupMemberMuted=1512]="GroupMemberMuted",e[e.GroupMemberCancelMuted=1513]="GroupMemberCancelMuted",e[e.GroupMuted=1514]="GroupMuted",e[e.GroupCancelMuted=1515]="GroupCancelMuted",e[e.GroupAnnouncementUpdated=1519]="GroupAnnouncementUpdated",e[e.GroupNameUpdated=1520]="GroupNameUpdated",e[e.BurnMessageChange=1701]="BurnMessageChange",e[e.RevokeMessage=2101]="RevokeMessage"}(m||(m={})),function(e){e[e.Single=1]="Single",e[e.Group=3]="Group",e[e.WorkingGroup=3]="WorkingGroup",e[e.Notification=4]="Notification"}(f||(f={})),function(e){e[e.Nomal=0]="Nomal",e[e.Baned=1]="Baned",e[e.Dismissed=2]="Dismissed",e[e.Muted=3]="Muted"}(M||(M={})),function(e){e[e.AtNormal=0]="AtNormal",e[e.AtMe=1]="AtMe",e[e.AtAll=2]="AtAll",e[e.AtAllAtMe=3]="AtAllAtMe",e[e.AtGroupNotice=4]="AtGroupNotice"}(S||(S={})),function(e){e[e.All=0]="All",e[e.Owner=1]="Owner",e[e.Admin=2]="Admin",e[e.Nomal=3]="Nomal",e[e.AdminAndNomal=4]="AdminAndNomal",e[e.AdminAndOwner=5]="AdminAndOwner"}(A||(A={})),function(e){e[e.isBlack=0]="isBlack",e[e.isFriend=1]="isFriend"}(E||(E={})),function(e){e[e.Logout=1]="Logout",e[e.Logging=2]="Logging",e[e.Logged=3]="Logged"}(y||(y={})),function(e){e[e.Online=1]="Online",e[e.Offline=0]="Offline"}(T||(T={})),function(e){e[e.Readed=0]="Readed",e[e.UnRead=1]="UnRead"}(O||(O={}));var C,N,G,P={ONE_ON_ONE:0,GROUP_CHAT:1,CUSTOMER_SERVICE:2};!function(e){e[e.TEXT=0]="TEXT",e[e.IMAGE=1]="IMAGE",e[e.FILE=2]="FILE",e[e.VIDEO=3]="VIDEO",e[e.LINK=4]="LINK",e[e.GIF=5]="GIF"}(C||(C={})),function(e){e[e.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",e[e.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",e[e.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",e[e.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH"}(N||(N={})),function(e){e[e.Sending=1]="Sending",e[e.Succeed=2]="Succeed",e[e.Failed=3]="Failed"}(G||(G={}));var R,k={NORMAL:0,EDITED:1,DELETED:2},L=/*#__PURE__*/function(){function e(e){this.simSDK=void 0,this.simSDK=e}var n=e.prototype;return n.sendMessage=function(e,t){try{var n=this;return Promise.resolve(function(o,r){try{var i=Promise.resolve(n.simSDK.sendRequest({data:e,url:t,method:"POST"}))}catch(e){return r(e)}return i&&i.then?i.then(void 0,r):i}(0,function(e){throw console.error("Failed to send message",e),e}))}catch(e){return Promise.reject(e)}},n.createMessage=function(e,n,o,r,i){var s;void 0===o&&(o={});var a=t({},o,((s={msgType:e})[r]=i,s.status=0,s));return this.sendMessage(a,n)},n.createTextMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(C.TEXT,i.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},n.createImageMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(C.IMAGE,i.CreateTextMessage,t,"snapshot",e))}catch(e){return Promise.reject(e)}},n.getHistoryMessageList=function(e){var t=e.groupId,n=e.lastId,o=e.size,r=void 0===o?20:o;try{return Promise.resolve(this.simSDK.sendRequest({data:{groupId:t,lastId:n,size:r},url:i.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},e}();!function(e){e.onReceiveMessage="onReceiveMessage",e.onReceiveMessages="onReceiveMessages",e.OnKickedOffline="OnKickedOffline",e.OnUserTokenInvalid="OnUserTokenInvalid",e.OnUserTokenExpired="OnUserTokenExpired"}(R||(R={}));var F="undefined"!=typeof uni,I="undefined"!=typeof window,w=/*#__PURE__*/function(e){function t(t){var n;return void 0===t&&(t=!0),(n=e.call(this)||this).username=void 0,n.token=void 0,n.appKey=void 0,n.apiAddr=void 0,n.sseClient=void 0,n.debug=void 0,n.messageService=void 0,n.groupService=void 0,n.sendRequest=function(e){return n.log("%cSDK =>%c [sendRequest] url:"+e.url+" [method]: "+e.method+" args "+JSON.stringify(e.data),"font-size:14px; background:#7CAEFF; border-radius:4px; padding-inline:4px;",""),function(e){try{return Promise.resolve(F?new Promise(function(t,n){uni.request({url:e.url,method:e.method||"GET",header:e.headers,data:e.data,success:function(e){return t(e.data)},fail:function(e){return n(e)}})}):function(){if(I)return console.log("isBrowser ",I),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url:n.apiAddr+e.url,method:e.method,headers:{"Content-Type":"application/json",Authorization:"Bearer "+n.token},data:e.data})},n.createRequestFunction=function(e,t){return function(o){return n.sendRequest({data:o,url:e,method:t})}},n.createRequestFunctionWithoutParams=function(e,t){return function(){return n.sendRequest({data:void 0,method:t,username:n.username,url:e})}},n.handleMessage=function(e){console.log("handleMessage response",e)},n.handleReconnectSuccess=function(){},n.login=function(e){try{return n.sseClient?Promise.resolve("login repeat"):(console.log("login params ",e),n.apiAddr=e.apiAddr,n.token=e.token,console.log("this.apiAddr ",n.apiAddr),Promise.resolve(n.sendRequest({data:e,url:i.Login,method:"POST"})).then(function(t){var o=t.code,r=t.data;if(0!=o)return console.log("code ",o),Promise.resolve("Login failed, Server error, error code is "+o);var i=n.apiAddr+"/chat/sse/conn?username="+e.username+"&token="+e.token+"&appKey="+e.appKey+"&random="+r;n.username=e.username,n.token=e.token,n.appKey=e.appKey,n.sseClient=new s({url:i,onMessage:n.handleMessage,onReconnectSuccess:n.handleReconnectSuccess,token:e.token});try{return n.sseClient.connect()}catch(e){return Promise.reject(e.message)}}))}catch(e){return Promise.reject(e)}},n.logout=n.createRequestFunctionWithoutParams(i.Logout,"DELETE"),n.internalUploadFile=function(e){try{try{return Promise.resolve({})}catch(e){return console.error("Upload failed:",e),Promise.resolve({error:e})}}catch(e){return Promise.reject(e)}},n.uploadFile=function(e){var t=e.file;try{return Promise.resolve(n.internalUploadFile(t)).then(function(e){var t,n=e.url,o=e.error;return{data:{url:void 0===n?"":n},msg:null!=(t=null==o?void 0:o.message)?t:"",code:o?r.UnknownError:0}})}catch(e){return Promise.reject(e)}},n.getSelfUserInfo=void 0,n.setSelfInfo=void 0,n.getUsersInfoWithCache=void 0,n.subscribeUsersStatus=void 0,n.unsubscribeUsersStatus=void 0,n.getSubscribeUsersStatus=void 0,n.setAppBackgroundStatus=void 0,n.networkStatusChanged=void 0,n.setGlobalRecvMessageOpt=void 0,n.acceptFriendApplication=void 0,n.addBlack=void 0,n.addFriend=void 0,n.checkFriend=void 0,n.deleteFriend=void 0,n.getBlackList=void 0,n.getFriendApplicationListAsApplicant=void 0,n.getFriendApplicationListAsRecipient=void 0,n.getFriendList=void 0,n.getFriendListPage=void 0,n.getSpecifiedFriendsInfo=void 0,n.refuseFriendApplication=void 0,n.removeBlack=void 0,n.searchFriends=void 0,n.setFriendRemark=void 0,n.getAllConversationList=void 0,n.getConversationListSplit=void 0,n.getOneConversation=void 0,n.getMultipleConversation=void 0,n.getConversationIDBySessionType=void 0,n.getTotalUnreadMsgCount=void 0,n.markConversationMessageAsRead=void 0,n.setConversationDraft=void 0,n.pinConversation=void 0,n.setConversationRecvMessageOpt=void 0,n.setConversationPrivateChat=void 0,n.setConversationBurnDuration=void 0,n.resetConversationGroupAtType=void 0,n.hideConversation=void 0,n.hideAllConversation=void 0,n.clearConversationAndDeleteAllMsg=void 0,n.deleteConversationAndDeleteAllMsg=void 0,n.debug=t,Object.assign(n,{}),Object.assign(n,{}),Object.assign(n,{getAllConversationList:n.createRequestFunctionWithoutParams(i.GetAllConversationList,"GET")}),n.messageService=new L(n),n.groupService=new b(n),n}var a,c,u,d;return c=e,(a=t).prototype=Object.create(c.prototype),a.prototype.constructor=a,n(a,c),t.prototype.log=function(){var e;this.debug&&(e=console).info.apply(e,[].slice.call(arguments))},u=t,(d=[{key:"createGroup",get:function(){var e=this;return function(t){return e.groupService.createGroup(t)}}},{key:"getGroupInfo",get:function(){var e=this;return function(t){return e.groupService.getGroupInfo(t)}}},{key:"createTextMessage",get:function(){return this.messageService.createTextMessage.bind(this.messageService)}},{key:"getHistoryMessageList",get:function(){var e=this;return console.log("sdk getHistoryMessageList"),function(t){return e.messageService.getHistoryMessageList(t)}}},{key:"uuid",get:function(){return(36*Math.random()).toString(36).slice(2)+(new Date).getTime().toString()}}])&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}(u.prototype,d),Object.defineProperty(u,"prototype",{writable:!1}),u}(/*#__PURE__*/function(){function e(){var e;this.events=((e={})[R.onReceiveMessage]=[],e[R.onReceiveMessages]=[],e)}var t=e.prototype;return t.emit=function(e,t){var n=this.events[e];return n&&n.forEach(function(e){return e(t)}),this},t.on=function(e,t){var n;return this.events[e]||(this.events[e]=[]),null==(n=this.events[e])||n.push(t),this},t.off=function(e,t){var n=this.events[e];if(n){var o=n.indexOf(t);o>-1&&(n.splice(o,1),0===n.length&&delete this.events[e])}return this},e}());export{c as AllowType,p as ApplicationHandleResult,R as CbEvents,r as ErrorCode,P as GROUP_TYPE,S as GroupAtType,d as GroupJoinSource,A as GroupMemberFilter,l as GroupMemberRole,O as GroupMessageReaderFilter,M as GroupStatus,u as GroupType,v as GroupVerificationType,h as LogLevel,y as LoginStatus,C as MSG_TYPE,a as MessageReceiveOptType,G as MessageSendStatus,k as MessageStatus,m as MessageType,T as OnlineState,g as Platform,E as Relationship,i as RequestApi,w as SIMSDK,N as SSE_RESPONSE_TYPE,f as SessionType};
1
+ import{EventSourcePolyfill as e}from"event-source-polyfill";function n(){return n=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},n.apply(null,arguments)}function t(e,n){return t=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,n){return e.__proto__=n,e},t(e,n)}function o(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}var r;!function(e){e.MESSAGE="message",e.CONVERSATION="conversation",e.GROUP="group",e.USER="user"}(r||(r={}));var i,s,c,a=/*#__PURE__*/function(){function n(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this._openHandler=null,this._errorHandler=null,this._messageHandler=null,this._customHandlers=new Map,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed}var t=n.prototype;return t.removeAllEventListeners=function(){var e=this;this.eventSource&&(this._openHandler&&this.eventSource.removeEventListener("open",this._openHandler),this._errorHandler&&this.eventSource.removeEventListener("error",this._errorHandler),this._messageHandler&&this.eventSource.removeEventListener("message",this._messageHandler),this.handlers.forEach(function(n,t){var o=e._customHandlers.get(t);o&&e.eventSource&&e.eventSource.removeEventListener(t,o)}))},t.subscribe=function(e,n){this.handlers.set(e,n);var t=function(e){try{var t=JSON.parse(e.data);n(t)}catch(e){console.error("Error parsing message data:",e)}};this._customHandlers.set(e,t),this.eventSource?this.eventSource.addEventListener(e,t):this.connect()},t.connect=function(){var n=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(t,o){try{n.eventSource=new e(n.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+n.token}}),n._openHandler=function(e){console.log("SSE connection established"),n.connected=!0,n.reconnectAttempts>0&&n.onReconnectSuccessCallback&&n.onReconnectSuccessCallback(),n.reconnectAttempts=0,n.reconnectTimeout=5e3,t("SSE connect successful!")},n._errorHandler=function(e){console.error("SSE connection error:",e),n.connected=!1,401===e.status||e.statusText&&e.statusText.includes("Unauthorized")?(n.cleanup(),n.notifyConnectionClosed(!0)):n.handleReconnect(),n.connected||o(new Error("SSE connect error"))},n._messageHandler=function(e){try{console.log("SSE received message:",e.data);var t=JSON.parse(e.data);n.onMessageCallback&&n.onMessageCallback(t)}catch(e){console.error("Error parsing message:",e)}},n.eventSource.addEventListener("open",n._openHandler),n.eventSource.addEventListener("error",n._errorHandler),n.eventSource.addEventListener("message",n._messageHandler),n.handlers.forEach(function(e,t){var o=n._customHandlers.get(t);o&&n.eventSource&&n.eventSource.addEventListener(t,o)});var r=setTimeout(function(){n.connected||(o(new Error("Connection timeout")),n.handleReconnect())},1e4),i=n._openHandler;n._openHandler=function(e){clearTimeout(r),i(e)}}catch(e){console.error("Failed to create EventSource:",e),n.handleReconnect(),o(e)}})},t.notifyConnectionClosed=function(e){void 0===e&&(e=!1),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(),e?console.warn("SSE connection closed due to authentication error"):console.log("SSE connection closed")},t.handleReconnect=function(){var e=this;if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return console.error("Max reconnection attempts reached"),void this.destroySse();console.log("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,3e4),e.reconnectTimer=null,e.connect().catch(function(){})},this.reconnectTimeout)}},t.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},t.unsubscribe=function(){this.cleanup(),this.handlers.clear(),this._customHandlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},t.destroySse=function(){this.unsubscribe(),this.reconnectAttempts=this.maxReconnectAttempts,this.notifyConnectionClosed()},t.close=function(){this.destroySse(),console.log("SSE 连接已关闭")},t.isConnected=function(){return this.connected},n}();!function(e){e[e.ConnectionEstablishmentFailed=1e4]="ConnectionEstablishmentFailed",e[e.ResourceLoadNotCompleteError=10004]="ResourceLoadNotCompleteError",e[e.UnknownError=10005]="UnknownError",e[e.LoginRepeatError=10102]="LoginRepeatError"}(i||(i={})),function(e){e.Login="/chat/member/login",e.Logout="/chat/member/logout",e.CreateGroup="CreateGroup",e.GetGroupInfo="/chat/group/info",e.GetAllConversationList="/chat/group/list",e.CreateTextMessage="/chat/message/push",e.GetHistoryMessageList="/chat/message/pull",e.UploadFile="/chat/member/upload"}(s||(s={})),function(e){e.OnConnected="OnConnected",e.OnDisconnected="OnDisconnected",e.OnReconnecting="OnReconnecting",e.OnReconnected="OnReconnected",e.OnReconnectFailed="OnReconnectFailed",e.OnNetworkChange="OnNetworkChange",e.OnReceiveMessage="OnReceiveMessage",e.OnReceiveMessages="OnReceiveMessages",e.OnMessageSent="OnMessageSent",e.OnMessageFailed="OnMessageFailed",e.OnMessageRevoked="OnMessageRevoked",e.OnMessageDeleted="OnMessageDeleted",e.OnMessageRead="OnMessageRead",e.OnTypingStatusUpdate="OnTypingStatusUpdate",e.OnUserStatusChange="OnUserStatusChange",e.OnKickedOffline="OnKickedOffline",e.OnUserTokenInvalid="OnUserTokenInvalid",e.OnUserTokenExpired="OnUserTokenExpired",e.OnForceOffline="OnForceOffline",e.OnUserInfoUpdated="OnUserInfoUpdated",e.OnGroupCreated="OnGroupCreated",e.OnGroupInfoUpdated="OnGroupInfoUpdated",e.OnGroupDissolved="OnGroupDissolved",e.OnJoinGroup="OnJoinGroup",e.OnLeaveGroup="OnLeaveGroup",e.OnGroupMemberJoined="OnGroupMemberJoined",e.OnGroupMemberLeft="OnGroupMemberLeft",e.OnGroupMemberKicked="OnGroupMemberKicked",e.OnGroupOwnerChanged="OnGroupOwnerChanged",e.OnGroupAdminAdded="OnGroupAdminAdded",e.OnGroupAdminRemoved="OnGroupAdminRemoved",e.OnGroupMemberMuted="OnGroupMemberMuted",e.OnGroupMemberUnmuted="OnGroupMemberUnmuted",e.OnGroupAllMemberMuted="OnGroupAllMemberMuted",e.OnGroupAllMemberUnmuted="OnGroupAllMemberUnmuted",e.OnConversationCreated="OnConversationCreated",e.OnConversationDeleted="OnConversationDeleted",e.OnConversationUpdated="OnConversationUpdated",e.OnUnreadCountChanged="OnUnreadCountChanged",e.OnConversationPinned="OnConversationPinned",e.OnConversationUnpinned="OnConversationUnpinned",e.OnConversationMuted="OnConversationMuted",e.OnConversationUnmuted="OnConversationUnmuted",e.OnPongConn="OnPongConn",e.OnPongReConn="OnPongReConn",e.OnPongIdle="OnPongIdle",e.OnError="OnError",e.OnWarning="OnWarning",e.OnLog="OnLog"}(c||(c={}));var u,d,l,g,f,h,p,m,v,O,M,C,S,E,A,G,b,k,y,N,R,P,T=/*#__PURE__*/function(){function e(){var e;this.events=((e={})[c.OnReceiveMessage]=[],e[c.OnReceiveMessages]=[],e)}var n=e.prototype;return n.emit=function(e,n){var t=this.events[e];return t&&t.forEach(function(e){return e(n)}),this},n.on=function(e,n){var t;return this.events[e]||(this.events[e]=[]),null==(t=this.events[e])||t.push(n),this},n.off=function(e,n){var t=this.events[e];if(t){var o=t.indexOf(n);o>-1&&(t.splice(o,1),0===t.length&&delete this.events[e])}return this},e}();!function(e){e[e.Nomal=0]="Nomal",e[e.NotReceive=1]="NotReceive",e[e.NotNotify=2]="NotNotify"}(u||(u={})),function(e){e[e.Allowed=0]="Allowed",e[e.NotAllowed=1]="NotAllowed"}(d||(d={})),function(e){e[e.Group=2]="Group",e[e.WorkingGroup=2]="WorkingGroup"}(l||(l={})),function(e){e[e.Invitation=2]="Invitation",e[e.Search=3]="Search",e[e.QrCode=4]="QrCode"}(g||(g={})),function(e){e[e.Nomal=20]="Nomal",e[e.Admin=60]="Admin",e[e.Owner=100]="Owner"}(f||(f={})),function(e){e[e.ApplyNeedInviteNot=0]="ApplyNeedInviteNot",e[e.AllNeed=1]="AllNeed",e[e.AllNot=2]="AllNot"}(h||(h={})),function(e){e[e.iOS=1]="iOS",e[e.Android=2]="Android",e[e.Windows=3]="Windows",e[e.MacOSX=4]="MacOSX",e[e.Web=5]="Web",e[e.Linux=7]="Linux",e[e.AndroidPad=8]="AndroidPad",e[e.iPad=9]="iPad"}(p||(p={})),function(e){e[e.Debug=5]="Debug",e[e.Info=4]="Info",e[e.Warn=3]="Warn",e[e.Error=2]="Error",e[e.Fatal=1]="Fatal",e[e.Panic=0]="Panic"}(m||(m={})),function(e){e[e.Unprocessed=0]="Unprocessed",e[e.Agree=1]="Agree",e[e.Reject=-1]="Reject"}(v||(v={})),function(e){e[e.MESSAGE_TYPE_TEXT=0]="MESSAGE_TYPE_TEXT",e[e.TextMessage=101]="TextMessage",e[e.PictureMessage=102]="PictureMessage",e[e.VoiceMessage=103]="VoiceMessage",e[e.VideoMessage=104]="VideoMessage",e[e.FileMessage=105]="FileMessage",e[e.AtTextMessage=106]="AtTextMessage",e[e.MergeMessage=107]="MergeMessage",e[e.CardMessage=108]="CardMessage",e[e.LocationMessage=109]="LocationMessage",e[e.CustomMessage=110]="CustomMessage",e[e.TypingMessage=113]="TypingMessage",e[e.QuoteMessage=114]="QuoteMessage",e[e.FaceMessage=115]="FaceMessage",e[e.FriendAdded=1201]="FriendAdded",e[e.OANotification=1400]="OANotification",e[e.GroupCreated=1501]="GroupCreated",e[e.MemberQuit=1504]="MemberQuit",e[e.GroupOwnerTransferred=1507]="GroupOwnerTransferred",e[e.MemberKicked=1508]="MemberKicked",e[e.MemberInvited=1509]="MemberInvited",e[e.MemberEnter=1510]="MemberEnter",e[e.GroupDismissed=1511]="GroupDismissed",e[e.GroupMemberMuted=1512]="GroupMemberMuted",e[e.GroupMemberCancelMuted=1513]="GroupMemberCancelMuted",e[e.GroupMuted=1514]="GroupMuted",e[e.GroupCancelMuted=1515]="GroupCancelMuted",e[e.GroupAnnouncementUpdated=1519]="GroupAnnouncementUpdated",e[e.GroupNameUpdated=1520]="GroupNameUpdated",e[e.BurnMessageChange=1701]="BurnMessageChange",e[e.RevokeMessage=2101]="RevokeMessage"}(O||(O={})),function(e){e[e.Single=1]="Single",e[e.Group=3]="Group",e[e.WorkingGroup=3]="WorkingGroup",e[e.Notification=4]="Notification"}(M||(M={})),function(e){e[e.Nomal=0]="Nomal",e[e.Baned=1]="Baned",e[e.Dismissed=2]="Dismissed",e[e.Muted=3]="Muted"}(C||(C={})),function(e){e[e.AtNormal=0]="AtNormal",e[e.AtMe=1]="AtMe",e[e.AtAll=2]="AtAll",e[e.AtAllAtMe=3]="AtAllAtMe",e[e.AtGroupNotice=4]="AtGroupNotice"}(S||(S={})),function(e){e[e.All=0]="All",e[e.Owner=1]="Owner",e[e.Admin=2]="Admin",e[e.Nomal=3]="Nomal",e[e.AdminAndNomal=4]="AdminAndNomal",e[e.AdminAndOwner=5]="AdminAndOwner"}(E||(E={})),function(e){e[e.isBlack=0]="isBlack",e[e.isFriend=1]="isFriend"}(A||(A={})),function(e){e[e.Logout=1]="Logout",e[e.Logging=2]="Logging",e[e.Logged=3]="Logged"}(G||(G={})),function(e){e[e.Online=1]="Online",e[e.Offline=0]="Offline"}(b||(b={})),function(e){e[e.Readed=0]="Readed",e[e.UnRead=1]="UnRead"}(k||(k={})),function(e){e[e.ONE_ON_ONE=0]="ONE_ON_ONE",e[e.GROUP_CHAT=1]="GROUP_CHAT",e[e.CUSTOMER_SERVICE=2]="CUSTOMER_SERVICE"}(y||(y={})),function(e){e[e.TEXT=0]="TEXT",e[e.IMAGE=1]="IMAGE",e[e.FILE=2]="FILE",e[e.VIDEO=3]="VIDEO",e[e.LINK=4]="LINK",e[e.GIF=5]="GIF"}(N||(N={})),function(e){e[e.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",e[e.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",e[e.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",e[e.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH"}(R||(R={})),function(e){e[e.Sending=1]="Sending",e[e.Succeed=2]="Succeed",e[e.Failed=3]="Failed"}(P||(P={}));var w={NORMAL:0,EDITED:1,DELETED:2},_="undefined"!=typeof uni,U="undefined"!=typeof window,L=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var n=e.prototype;return n.login=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:s.Login,method:"POST"}))}catch(e){return Promise.reject(e)}},n.logout=function(){try{return Promise.resolve(this.sdk.sendRequest({data:{},url:s.Logout,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),I=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.sendMessage=function(e,n){try{var t=this;return Promise.resolve(function(o,r){try{var i=Promise.resolve(t.sdk.sendRequest({data:e,url:n,method:"POST"}))}catch(e){return r(e)}return i&&i.then?i.then(void 0,r):i}(0,function(e){throw console.error("Failed to send message",e),e}))}catch(e){return Promise.reject(e)}},t.createMessage=function(e,t,o,r,i){var s;void 0===o&&(o={});var c=n({},o,((s={msgType:e})[r]=i,s.status=0,s));return this.sendMessage(c,t)},t.createTextMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(N.TEXT,s.CreateTextMessage,n,"text",e))}catch(e){return Promise.reject(e)}},t.createImageMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(N.IMAGE,s.CreateTextMessage,n,"snapshot",e))}catch(e){return Promise.reject(e)}},t.getHistoryMessageList=function(e){var n=e.groupId,t=e.lastId,o=e.size,r=void 0===o?20:o;try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:n,lastId:t,size:r},url:s.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),x=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}return e.prototype.getConversations=function(){try{return Promise.resolve(this.sdk.sendRequest({data:void 0,url:s.GetAllConversationList,method:"GET"}))}catch(e){return Promise.reject(e)}},e}(),F=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var n=e.prototype;return n.createGroup=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:s.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},n.getGroupInfo=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:e},url:s.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},e}(),j=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.services={},this.sdk=e}var n=e.prototype;return n.get=function(e){return this.services[e]||(this.services[e]=this.createService(e)),this.services[e]},n.createService=function(e){switch(e){case r.USER:return new L(this.sdk);case r.MESSAGE:return new I(this.sdk);case r.CONVERSATION:return new x(this.sdk);case r.GROUP:return new F(this.sdk);default:throw new Error("Unknown service: "+e)}},n.reset=function(){this.services={}},e}();function D(e,n){try{var t=e()}catch(e){return n(e)}return t&&t.then?t.then(void 0,n):t}var H=[s.Logout,c.OnKickedOffline,c.OnUserTokenInvalid,c.OnUserTokenExpired],V=/*#__PURE__*/function(e){function n(n){var t;return void 0===n&&(n=!1),(t=e.call(this)||this).config={debug:!1},t.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},t.sseClient=void 0,t.serviceManager=void 0,t.sendRequest=function(e){return t.internalState.lastActivity=Date.now(),t.config.debug&&t.logRequest(e),function(e){try{return Promise.resolve(_?new Promise(function(n,t){uni.request({url:e.url,method:e.method||"GET",header:e.headers,data:e.data,success:function(e){return n(e.data)},fail:function(e){return t(e)}})}):function(){if(U)return console.log("isBrowser ",U),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url:t.config.apiAddr+e.url,method:e.method,headers:{"Content-Type":"application/json",Authorization:t.config.token?"Bearer "+t.config.token:""},data:e.data})},t.createRequestFunction=function(e,n){return function(o){return t.sendRequest({data:o,url:e,method:n})}},t.createRequestFunctionWithoutParams=function(e,n){return function(){return t.sendRequest({data:void 0,method:n,url:e})}},t.handleMessage=function(e){switch(t.config.debug&&console.log("handleMessage response",e),e.ev){case R.EVENT_MESSAGE_PUSH:1===e.dt.length?t.emit(c.OnReceiveMessage,e.dt[0]):t.emit(c.OnReceiveMessages,e.dt);break;case R.EVENT_PONG_CONN:t.internalState.isConnected=!0,t.emit(c.OnConnected);break;case R.EVENT_PONG_RE_CONN:t.internalState.isConnected=!0,t.emit(c.OnReconnected);break;case R.EVENT_PONG_IDLE:break;default:n=e.ev,Object.values(c).includes(n)?(t.emit(e.ev,e.dt),H.includes(e.ev)&&(t.internalState.isLoggedIn=!1,t.internalState.isConnected=!1,t.sseClient&&(t.sseClient.close(),t.sseClient=void 0))):t.config.debug&&console.warn("Unknown SSE event type:",e.ev)}var n},t.handleReconnectSuccess=function(){t.config.username&&(t.internalState.isConnected=!0,t.internalState.reconnectAttempts=0,t.config.debug&&console.log("SSE reconnection successful"),t.emit(c.OnReconnected))},t.handleConnectionClosed=function(){t.internalState.isConnected=!1,t.config.debug&&console.log("SSE connection closed"),t.emit(c.OnDisconnected)},t.login=function(e){try{return t.sseClient?Promise.resolve("login repeat"):(t.config.apiAddr=e.apiAddr,t.config.token=e.token,t.config.debug&&(console.log("login params",e),console.log("apiAddr",t.config.apiAddr)),Promise.resolve(t.user.login(e)).then(function(n){var o=n.code,r=n.data;if(0!=o)return Promise.resolve("Login failed, Server error, error code is "+o);var i=t.config.apiAddr+"/chat/sse/conn?username="+e.username+"&token="+e.token+"&appKey="+e.appKey+"&random="+r;return t.config.username=e.username,t.config.token=e.token,t.config.appKey=e.appKey,t.sseClient=new a({url:i,onMessage:t.handleMessage,onReconnectSuccess:t.handleReconnectSuccess,onConnectionClosed:t.handleConnectionClosed,token:e.token}),D(function(){return Promise.resolve(t.sseClient.connect()).then(function(e){return t.internalState.isLoggedIn=!0,e})},function(e){return t.internalState.isLoggedIn=!1,Promise.reject(e.message)})}))}catch(e){return Promise.reject(e)}},t.logout=function(){try{return t.sseClient&&(t.sseClient.close(),t.sseClient=void 0),Promise.resolve(t.user.logout()).then(function(e){return t.internalState.isLoggedIn=!1,t.internalState.isConnected=!1,t.config.username=void 0,t.config.token=void 0,e})}catch(e){return Promise.reject(e)}},t.internalUploadFile=function(e){try{return Promise.resolve(D(function(){var n=new FormData;return n.append("file",e),n.append("filename",e.name),Promise.resolve(fetch(""+t.config.apiAddr+s.UploadFile,{method:"POST",headers:{Authorization:t.config.token?"Bearer "+t.config.token:""},body:n})).then(function(e){if(!e.ok)throw new Error("Upload failed with status: "+e.status);return Promise.resolve(e.json()).then(function(e){var n;return{url:(null==(n=e.data)?void 0:n.url)||""}})})},function(e){return console.error("Upload failed:",e),{error:e}}))}catch(e){return Promise.reject(e)}},t.uploadFile=function(e){var n=e.file;try{return Promise.resolve(t.internalUploadFile(n)).then(function(e){var n,t=e.url,o=e.error;return{data:{url:void 0===t?"":t},msg:null!=(n=null==o?void 0:o.message)?n:"",code:o?i.UnknownError:0}})}catch(e){return Promise.reject(e)}},t.createTextMessage=function(e){return t.message.createTextMessage(e)},t.createImageMessage=function(e){return t.message.createImageMessage(e)},t.getHistoryMessageList=function(e){return t.message.getHistoryMessageList(e)},t.getConversations=function(){return t.conversation.getConversations()},t.createGroup=function(e){return t.group.createGroup(e)},t.getGroupInfo=function(e){return t.group.getGroupInfo(e)},t.config.debug=n,t.serviceManager=new j(t),t}var u,d;d=e,(u=n).prototype=Object.create(d.prototype),u.prototype.constructor=u,t(u,d);var l,g,f=n.prototype;return f.configure=function(e){void 0!==e.debug&&(this.config.debug=e.debug),e.apiAddr&&(this.config.apiAddr=e.apiAddr),e.appKey&&(this.config.appKey=e.appKey)},f.setApiAddr=function(e){this.config.apiAddr=e},f.setAppKey=function(e){this.config.appKey=e},f.getService=function(e){return this.serviceManager.get(e)},f.isConnected=function(){return!!this.sseClient&&this.internalState.isConnected},f.isLoggedIn=function(){return this.internalState.isLoggedIn},f.logRequest=function(e){console.log("%c"+(new Date).toISOString().substring(11,19)+"%c SDK %c"+e.method+"%c "+e.url+"%c"+(e.data?"\n📦 Payload:":""),"color: #888; font-size: 11px;","background: #7CAEFF; color: white; font-weight: bold; font-size: 12px; border-radius: 4px; padding: 2px 6px; margin-right: 6px;","background: #4CAF50; color: white; font-weight: bold; font-size: 12px; border-radius: 4px; padding: 2px 6px; margin-right: 6px;","color: #0066cc; font-weight: bold;","color: #888;"),e.data&&Object.keys(e.data).length>0&&console.log("%c%s","color: #555; background: #f5f5f5; padding: 4px; border-radius: 4px; font-family: monospace;",JSON.stringify(e.data,null,2))},f.onMessage=function(e){var n=this;return this.on(c.OnReceiveMessage,e),function(){return n.off(c.OnReceiveMessage,e)}},f.onMessages=function(e){var n=this;return this.on(c.OnReceiveMessages,e),function(){return n.off(c.OnReceiveMessages,e)}},f.onConnectionChange=function(e){var n=this,t=function(){return e(!0)},o=function(){return e(!1)};return this.on(c.OnConnected,t),this.on(c.OnDisconnected,o),function(){n.off(c.OnConnected,t),n.off(c.OnDisconnected,o)}},f.onKickedOffline=function(e){var n=this;return this.on(c.OnKickedOffline,e),function(){return n.off(c.OnKickedOffline,e)}},l=n,(g=[{key:"message",get:function(){return this.getService(r.MESSAGE)}},{key:"conversation",get:function(){return this.getService(r.CONVERSATION)}},{key:"group",get:function(){return this.getService(r.GROUP)}},{key:"user",get:function(){return this.getService(r.USER)}},{key:"username",get:function(){return this.config.username}},{key:"uuid",get:function(){return(36*Math.random()).toString(36).slice(2)+(new Date).getTime().toString()}}])&&function(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}(l.prototype,g),Object.defineProperty(l,"prototype",{writable:!1}),l}(T);export{d as AllowType,v as ApplicationHandleResult,c as CbEvents,i as ErrorCode,y as GROUP_TYPE,S as GroupAtType,g as GroupJoinSource,E as GroupMemberFilter,f as GroupMemberRole,k as GroupMessageReaderFilter,C as GroupStatus,l as GroupType,h as GroupVerificationType,m as LogLevel,G as LoginStatus,N as MSG_TYPE,u as MessageReceiveOptType,P as MessageSendStatus,w as MessageStatus,O as MessageType,b as OnlineState,p as Platform,A as Relationship,s as RequestApi,V as SIMSDK,R as SSE_RESPONSE_TYPE,r as ServiceName,M as SessionType};
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- var e=require("event-source-polyfill");function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var r in o)({}).hasOwnProperty.call(o,r)&&(e[r]=o[r])}return e},t.apply(null,arguments)}function o(e,t){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},o(e,t)}function r(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,"string");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}var n,s,i=/*#__PURE__*/function(){function t(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess}var o=t.prototype;return o.removeAllEventListeners=function(){var e=this;this.eventSource&&(this.eventSource.removeEventListener("open",this.onOpen),this.handlers.forEach(function(t,o){var r;null==(r=e.eventSource)||r.removeEventListener(o,t)}),this.eventSource.removeEventListener("error",this.onError))},o.subscribe=function(e,t){this.handlers.set(e,t),this.connect()},o.connect=function(){var t=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(o,r){try{t.eventSource=new e.EventSourcePolyfill(t.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+t.token}}),t.eventSource.addEventListener("open",function(e){t.onOpen(e),o("SSE connect successful!")}),t.eventSource.addEventListener("message",function(e){t.handleMessage(e.data)}),t.handlers.forEach(function(e,o){var r;null==(r=t.eventSource)||r.addEventListener(o,t.onMessage(e))}),t.eventSource.addEventListener("error",function(e){t.onError(e),t.connected||r("SSE connect error.")})}catch(e){console.error("Failed to create EventSource:",e),t.handleReconnect(),r(e)}})},o.onOpen=function(e){console.log("SSE connection established"),this.connected=!0,this.reconnectAttempts>0&&this.onReconnectSuccessCallback&&this.onReconnectSuccessCallback(),this.reconnectAttempts=0,this.reconnectTimeout=5e3},o.handleMessage=function(e){try{console.log("SSE handleMessage ",e);var t=JSON.parse(e);this.onMessageCallback&&this.onMessageCallback(t)}catch(e){console.error("数据解析错误:",e)}},o.onMessage=function(e){return function(t){try{var o=JSON.parse(t.data);console.log("Received SSE message:",o),"function"==typeof e&&e(o)}catch(e){console.error("Failed to parse SSE message:",e)}}},o.onError=function(e){console.error("SSE connection error:",e),this.connected=!1,401===e.status||e.statusText&&e.statusText.includes("Unauthorized")?this.cleanup():this.handleReconnect()},o.handleReconnect=function(){var e=this;if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return console.error("Max reconnection attempts reached"),void this.destroySse();console.log("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,3e4),e.reconnectTimer=null,e.connect()},this.reconnectTimeout)}},o.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},o.unsubscribe=function(){this.cleanup(),this.handlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},o.destroySse=function(){this.unsubscribe(),this.reconnectAttempts=this.maxReconnectAttempts},o.close=function(){this.destroySse(),console.log("SSE 连接已关闭")},o.isConnected=function(){return this.connected},t}();exports.ErrorCode=void 0,(n=exports.ErrorCode||(exports.ErrorCode={}))[n.ConnectionEstablishmentFailed=1e4]="ConnectionEstablishmentFailed",n[n.ResourceLoadNotCompleteError=10004]="ResourceLoadNotCompleteError",n[n.UnknownError=10005]="UnknownError",n[n.LoginRepeatError=10102]="LoginRepeatError",exports.RequestApi=void 0,(s=exports.RequestApi||(exports.RequestApi={})).Login="/chat/member/login",s.Logout="Logout",s.CreateGroup="CreateGroup",s.GetGroupInfo="/chat/group/info",s.GetAllConversationList="/chat/group/list",s.CreateTextMessage="/chat/message/push",s.GetHistoryMessageList="/chat/message/pull";var a,c,u,d,l,p,v,g,h,m,f,S,M,E,A,x,T,y,G,R,O,P=/*#__PURE__*/function(){function e(e){this.simSDK=void 0,this.simSDK=e}var t=e.prototype;return t.createGroup=function(e){try{return Promise.resolve(this.simSDK.sendRequest({data:e,url:exports.RequestApi.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},t.getGroupInfo=function(e){try{return Promise.resolve(this.simSDK.sendRequest({data:{groupId:e},url:exports.RequestApi.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},e}();exports.MessageReceiveOptType=void 0,(a=exports.MessageReceiveOptType||(exports.MessageReceiveOptType={}))[a.Nomal=0]="Nomal",a[a.NotReceive=1]="NotReceive",a[a.NotNotify=2]="NotNotify",exports.AllowType=void 0,(c=exports.AllowType||(exports.AllowType={}))[c.Allowed=0]="Allowed",c[c.NotAllowed=1]="NotAllowed",exports.GroupType=void 0,(u=exports.GroupType||(exports.GroupType={}))[u.Group=2]="Group",u[u.WorkingGroup=2]="WorkingGroup",exports.GroupJoinSource=void 0,(d=exports.GroupJoinSource||(exports.GroupJoinSource={}))[d.Invitation=2]="Invitation",d[d.Search=3]="Search",d[d.QrCode=4]="QrCode",exports.GroupMemberRole=void 0,(l=exports.GroupMemberRole||(exports.GroupMemberRole={}))[l.Nomal=20]="Nomal",l[l.Admin=60]="Admin",l[l.Owner=100]="Owner",exports.GroupVerificationType=void 0,(p=exports.GroupVerificationType||(exports.GroupVerificationType={}))[p.ApplyNeedInviteNot=0]="ApplyNeedInviteNot",p[p.AllNeed=1]="AllNeed",p[p.AllNot=2]="AllNot",exports.Platform=void 0,(v=exports.Platform||(exports.Platform={}))[v.iOS=1]="iOS",v[v.Android=2]="Android",v[v.Windows=3]="Windows",v[v.MacOSX=4]="MacOSX",v[v.Web=5]="Web",v[v.Linux=7]="Linux",v[v.AndroidPad=8]="AndroidPad",v[v.iPad=9]="iPad",exports.LogLevel=void 0,(g=exports.LogLevel||(exports.LogLevel={}))[g.Debug=5]="Debug",g[g.Info=4]="Info",g[g.Warn=3]="Warn",g[g.Error=2]="Error",g[g.Fatal=1]="Fatal",g[g.Panic=0]="Panic",exports.ApplicationHandleResult=void 0,(h=exports.ApplicationHandleResult||(exports.ApplicationHandleResult={}))[h.Unprocessed=0]="Unprocessed",h[h.Agree=1]="Agree",h[h.Reject=-1]="Reject",exports.MessageType=void 0,(m=exports.MessageType||(exports.MessageType={}))[m.MESSAGE_TYPE_TEXT=0]="MESSAGE_TYPE_TEXT",m[m.TextMessage=101]="TextMessage",m[m.PictureMessage=102]="PictureMessage",m[m.VoiceMessage=103]="VoiceMessage",m[m.VideoMessage=104]="VideoMessage",m[m.FileMessage=105]="FileMessage",m[m.AtTextMessage=106]="AtTextMessage",m[m.MergeMessage=107]="MergeMessage",m[m.CardMessage=108]="CardMessage",m[m.LocationMessage=109]="LocationMessage",m[m.CustomMessage=110]="CustomMessage",m[m.TypingMessage=113]="TypingMessage",m[m.QuoteMessage=114]="QuoteMessage",m[m.FaceMessage=115]="FaceMessage",m[m.FriendAdded=1201]="FriendAdded",m[m.OANotification=1400]="OANotification",m[m.GroupCreated=1501]="GroupCreated",m[m.MemberQuit=1504]="MemberQuit",m[m.GroupOwnerTransferred=1507]="GroupOwnerTransferred",m[m.MemberKicked=1508]="MemberKicked",m[m.MemberInvited=1509]="MemberInvited",m[m.MemberEnter=1510]="MemberEnter",m[m.GroupDismissed=1511]="GroupDismissed",m[m.GroupMemberMuted=1512]="GroupMemberMuted",m[m.GroupMemberCancelMuted=1513]="GroupMemberCancelMuted",m[m.GroupMuted=1514]="GroupMuted",m[m.GroupCancelMuted=1515]="GroupCancelMuted",m[m.GroupAnnouncementUpdated=1519]="GroupAnnouncementUpdated",m[m.GroupNameUpdated=1520]="GroupNameUpdated",m[m.BurnMessageChange=1701]="BurnMessageChange",m[m.RevokeMessage=2101]="RevokeMessage",exports.SessionType=void 0,(f=exports.SessionType||(exports.SessionType={}))[f.Single=1]="Single",f[f.Group=3]="Group",f[f.WorkingGroup=3]="WorkingGroup",f[f.Notification=4]="Notification",exports.GroupStatus=void 0,(S=exports.GroupStatus||(exports.GroupStatus={}))[S.Nomal=0]="Nomal",S[S.Baned=1]="Baned",S[S.Dismissed=2]="Dismissed",S[S.Muted=3]="Muted",exports.GroupAtType=void 0,(M=exports.GroupAtType||(exports.GroupAtType={}))[M.AtNormal=0]="AtNormal",M[M.AtMe=1]="AtMe",M[M.AtAll=2]="AtAll",M[M.AtAllAtMe=3]="AtAllAtMe",M[M.AtGroupNotice=4]="AtGroupNotice",exports.GroupMemberFilter=void 0,(E=exports.GroupMemberFilter||(exports.GroupMemberFilter={}))[E.All=0]="All",E[E.Owner=1]="Owner",E[E.Admin=2]="Admin",E[E.Nomal=3]="Nomal",E[E.AdminAndNomal=4]="AdminAndNomal",E[E.AdminAndOwner=5]="AdminAndOwner",exports.Relationship=void 0,(A=exports.Relationship||(exports.Relationship={}))[A.isBlack=0]="isBlack",A[A.isFriend=1]="isFriend",exports.LoginStatus=void 0,(x=exports.LoginStatus||(exports.LoginStatus={}))[x.Logout=1]="Logout",x[x.Logging=2]="Logging",x[x.Logged=3]="Logged",exports.OnlineState=void 0,(T=exports.OnlineState||(exports.OnlineState={}))[T.Online=1]="Online",T[T.Offline=0]="Offline",exports.GroupMessageReaderFilter=void 0,(y=exports.GroupMessageReaderFilter||(exports.GroupMessageReaderFilter={}))[y.Readed=0]="Readed",y[y.UnRead=1]="UnRead",exports.MSG_TYPE=void 0,(G=exports.MSG_TYPE||(exports.MSG_TYPE={}))[G.TEXT=0]="TEXT",G[G.IMAGE=1]="IMAGE",G[G.FILE=2]="FILE",G[G.VIDEO=3]="VIDEO",G[G.LINK=4]="LINK",G[G.GIF=5]="GIF",exports.SSE_RESPONSE_TYPE=void 0,(R=exports.SSE_RESPONSE_TYPE||(exports.SSE_RESPONSE_TYPE={}))[R.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",R[R.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",R[R.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",R[R.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",exports.MessageSendStatus=void 0,(O=exports.MessageSendStatus||(exports.MessageSendStatus={}))[O.Sending=1]="Sending",O[O.Succeed=2]="Succeed",O[O.Failed=3]="Failed";var b,C=/*#__PURE__*/function(){function e(e){this.simSDK=void 0,this.simSDK=e}var o=e.prototype;return o.sendMessage=function(e,t){try{var o=this;return Promise.resolve(function(r,n){try{var s=Promise.resolve(o.simSDK.sendRequest({data:e,url:t,method:"POST"}))}catch(e){return n(e)}return s&&s.then?s.then(void 0,n):s}(0,function(e){throw console.error("Failed to send message",e),e}))}catch(e){return Promise.reject(e)}},o.createMessage=function(e,o,r,n,s){var i;void 0===r&&(r={});var a=t({},r,((i={msgType:e})[n]=s,i.status=0,i));return this.sendMessage(a,o)},o.createTextMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.TEXT,exports.RequestApi.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},o.createImageMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.IMAGE,exports.RequestApi.CreateTextMessage,t,"snapshot",e))}catch(e){return Promise.reject(e)}},o.getHistoryMessageList=function(e){var t=e.groupId,o=e.lastId,r=e.size,n=void 0===r?20:r;try{return Promise.resolve(this.simSDK.sendRequest({data:{groupId:t,lastId:o,size:n},url:exports.RequestApi.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},e}();exports.CbEvents=void 0,(b=exports.CbEvents||(exports.CbEvents={})).onReceiveMessage="onReceiveMessage",b.onReceiveMessages="onReceiveMessages",b.OnKickedOffline="OnKickedOffline",b.OnUserTokenInvalid="OnUserTokenInvalid",b.OnUserTokenExpired="OnUserTokenExpired";var N="undefined"!=typeof uni,L="undefined"!=typeof window,k=/*#__PURE__*/function(e){function t(t){var o;return void 0===t&&(t=!0),(o=e.call(this)||this).username=void 0,o.token=void 0,o.appKey=void 0,o.apiAddr=void 0,o.sseClient=void 0,o.debug=void 0,o.messageService=void 0,o.groupService=void 0,o.sendRequest=function(e){return o.log("%cSDK =>%c [sendRequest] url:"+e.url+" [method]: "+e.method+" args "+JSON.stringify(e.data),"font-size:14px; background:#7CAEFF; border-radius:4px; padding-inline:4px;",""),function(e){try{return Promise.resolve(N?new Promise(function(t,o){uni.request({url:e.url,method:e.method||"GET",header:e.headers,data:e.data,success:function(e){return t(e.data)},fail:function(e){return o(e)}})}):function(){if(L)return console.log("isBrowser ",L),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url:o.apiAddr+e.url,method:e.method,headers:{"Content-Type":"application/json",Authorization:"Bearer "+o.token},data:e.data})},o.createRequestFunction=function(e,t){return function(r){return o.sendRequest({data:r,url:e,method:t})}},o.createRequestFunctionWithoutParams=function(e,t){return function(){return o.sendRequest({data:void 0,method:t,username:o.username,url:e})}},o.handleMessage=function(e){console.log("handleMessage response",e)},o.handleReconnectSuccess=function(){},o.login=function(e){try{return o.sseClient?Promise.resolve("login repeat"):(console.log("login params ",e),o.apiAddr=e.apiAddr,o.token=e.token,console.log("this.apiAddr ",o.apiAddr),Promise.resolve(o.sendRequest({data:e,url:exports.RequestApi.Login,method:"POST"})).then(function(t){var r=t.code,n=t.data;if(0!=r)return console.log("code ",r),Promise.resolve("Login failed, Server error, error code is "+r);var s=o.apiAddr+"/chat/sse/conn?username="+e.username+"&token="+e.token+"&appKey="+e.appKey+"&random="+n;o.username=e.username,o.token=e.token,o.appKey=e.appKey,o.sseClient=new i({url:s,onMessage:o.handleMessage,onReconnectSuccess:o.handleReconnectSuccess,token:e.token});try{return o.sseClient.connect()}catch(e){return Promise.reject(e.message)}}))}catch(e){return Promise.reject(e)}},o.logout=o.createRequestFunctionWithoutParams(exports.RequestApi.Logout,"DELETE"),o.internalUploadFile=function(e){try{try{return Promise.resolve({})}catch(e){return console.error("Upload failed:",e),Promise.resolve({error:e})}}catch(e){return Promise.reject(e)}},o.uploadFile=function(e){var t=e.file;try{return Promise.resolve(o.internalUploadFile(t)).then(function(e){var t,o=e.url,r=e.error;return{data:{url:void 0===o?"":o},msg:null!=(t=null==r?void 0:r.message)?t:"",code:r?exports.ErrorCode.UnknownError:0}})}catch(e){return Promise.reject(e)}},o.getSelfUserInfo=void 0,o.setSelfInfo=void 0,o.getUsersInfoWithCache=void 0,o.subscribeUsersStatus=void 0,o.unsubscribeUsersStatus=void 0,o.getSubscribeUsersStatus=void 0,o.setAppBackgroundStatus=void 0,o.networkStatusChanged=void 0,o.setGlobalRecvMessageOpt=void 0,o.acceptFriendApplication=void 0,o.addBlack=void 0,o.addFriend=void 0,o.checkFriend=void 0,o.deleteFriend=void 0,o.getBlackList=void 0,o.getFriendApplicationListAsApplicant=void 0,o.getFriendApplicationListAsRecipient=void 0,o.getFriendList=void 0,o.getFriendListPage=void 0,o.getSpecifiedFriendsInfo=void 0,o.refuseFriendApplication=void 0,o.removeBlack=void 0,o.searchFriends=void 0,o.setFriendRemark=void 0,o.getAllConversationList=void 0,o.getConversationListSplit=void 0,o.getOneConversation=void 0,o.getMultipleConversation=void 0,o.getConversationIDBySessionType=void 0,o.getTotalUnreadMsgCount=void 0,o.markConversationMessageAsRead=void 0,o.setConversationDraft=void 0,o.pinConversation=void 0,o.setConversationRecvMessageOpt=void 0,o.setConversationPrivateChat=void 0,o.setConversationBurnDuration=void 0,o.resetConversationGroupAtType=void 0,o.hideConversation=void 0,o.hideAllConversation=void 0,o.clearConversationAndDeleteAllMsg=void 0,o.deleteConversationAndDeleteAllMsg=void 0,o.debug=t,Object.assign(o,{}),Object.assign(o,{}),Object.assign(o,{getAllConversationList:o.createRequestFunctionWithoutParams(exports.RequestApi.GetAllConversationList,"GET")}),o.messageService=new C(o),o.groupService=new P(o),o}var n,s,a,c;return s=e,(n=t).prototype=Object.create(s.prototype),n.prototype.constructor=n,o(n,s),t.prototype.log=function(){var e;this.debug&&(e=console).info.apply(e,[].slice.call(arguments))},a=t,(c=[{key:"createGroup",get:function(){var e=this;return function(t){return e.groupService.createGroup(t)}}},{key:"getGroupInfo",get:function(){var e=this;return function(t){return e.groupService.getGroupInfo(t)}}},{key:"createTextMessage",get:function(){return this.messageService.createTextMessage.bind(this.messageService)}},{key:"getHistoryMessageList",get:function(){var e=this;return console.log("sdk getHistoryMessageList"),function(t){return e.messageService.getHistoryMessageList(t)}}},{key:"uuid",get:function(){return(36*Math.random()).toString(36).slice(2)+(new Date).getTime().toString()}}])&&function(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,r(n.key),n)}}(a.prototype,c),Object.defineProperty(a,"prototype",{writable:!1}),a}(/*#__PURE__*/function(){function e(){var e;this.events=((e={})[exports.CbEvents.onReceiveMessage]=[],e[exports.CbEvents.onReceiveMessages]=[],e)}var t=e.prototype;return t.emit=function(e,t){var o=this.events[e];return o&&o.forEach(function(e){return e(t)}),this},t.on=function(e,t){var o;return this.events[e]||(this.events[e]=[]),null==(o=this.events[e])||o.push(t),this},t.off=function(e,t){var o=this.events[e];if(o){var r=o.indexOf(t);r>-1&&(o.splice(r,1),0===o.length&&delete this.events[e])}return this},e}());exports.GROUP_TYPE={ONE_ON_ONE:0,GROUP_CHAT:1,CUSTOMER_SERVICE:2},exports.MessageStatus={NORMAL:0,EDITED:1,DELETED:2},exports.SIMSDK=k;
1
+ var e,t=require("event-source-polyfill");function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},n.apply(null,arguments)}function o(e,t){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},o(e,t)}function r(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}exports.ServiceName=void 0,(e=exports.ServiceName||(exports.ServiceName={})).MESSAGE="message",e.CONVERSATION="conversation",e.GROUP="group",e.USER="user";var s,i,a,c=/*#__PURE__*/function(){function e(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this._openHandler=null,this._errorHandler=null,this._messageHandler=null,this._customHandlers=new Map,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed}var n=e.prototype;return n.removeAllEventListeners=function(){var e=this;this.eventSource&&(this._openHandler&&this.eventSource.removeEventListener("open",this._openHandler),this._errorHandler&&this.eventSource.removeEventListener("error",this._errorHandler),this._messageHandler&&this.eventSource.removeEventListener("message",this._messageHandler),this.handlers.forEach(function(t,n){var o=e._customHandlers.get(n);o&&e.eventSource&&e.eventSource.removeEventListener(n,o)}))},n.subscribe=function(e,t){this.handlers.set(e,t);var n=function(e){try{var n=JSON.parse(e.data);t(n)}catch(e){console.error("Error parsing message data:",e)}};this._customHandlers.set(e,n),this.eventSource?this.eventSource.addEventListener(e,n):this.connect()},n.connect=function(){var e=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(n,o){try{e.eventSource=new t.EventSourcePolyfill(e.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+e.token}}),e._openHandler=function(t){console.log("SSE connection established"),e.connected=!0,e.reconnectAttempts>0&&e.onReconnectSuccessCallback&&e.onReconnectSuccessCallback(),e.reconnectAttempts=0,e.reconnectTimeout=5e3,n("SSE connect successful!")},e._errorHandler=function(t){console.error("SSE connection error:",t),e.connected=!1,401===t.status||t.statusText&&t.statusText.includes("Unauthorized")?(e.cleanup(),e.notifyConnectionClosed(!0)):e.handleReconnect(),e.connected||o(new Error("SSE connect error"))},e._messageHandler=function(t){try{console.log("SSE received message:",t.data);var n=JSON.parse(t.data);e.onMessageCallback&&e.onMessageCallback(n)}catch(e){console.error("Error parsing message:",e)}},e.eventSource.addEventListener("open",e._openHandler),e.eventSource.addEventListener("error",e._errorHandler),e.eventSource.addEventListener("message",e._messageHandler),e.handlers.forEach(function(t,n){var o=e._customHandlers.get(n);o&&e.eventSource&&e.eventSource.addEventListener(n,o)});var r=setTimeout(function(){e.connected||(o(new Error("Connection timeout")),e.handleReconnect())},1e4),s=e._openHandler;e._openHandler=function(e){clearTimeout(r),s(e)}}catch(t){console.error("Failed to create EventSource:",t),e.handleReconnect(),o(t)}})},n.notifyConnectionClosed=function(e){void 0===e&&(e=!1),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(),e?console.warn("SSE connection closed due to authentication error"):console.log("SSE connection closed")},n.handleReconnect=function(){var e=this;if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return console.error("Max reconnection attempts reached"),void this.destroySse();console.log("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,3e4),e.reconnectTimer=null,e.connect().catch(function(){})},this.reconnectTimeout)}},n.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},n.unsubscribe=function(){this.cleanup(),this.handlers.clear(),this._customHandlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},n.destroySse=function(){this.unsubscribe(),this.reconnectAttempts=this.maxReconnectAttempts,this.notifyConnectionClosed()},n.close=function(){this.destroySse(),console.log("SSE 连接已关闭")},n.isConnected=function(){return this.connected},e}();exports.ErrorCode=void 0,(s=exports.ErrorCode||(exports.ErrorCode={}))[s.ConnectionEstablishmentFailed=1e4]="ConnectionEstablishmentFailed",s[s.ResourceLoadNotCompleteError=10004]="ResourceLoadNotCompleteError",s[s.UnknownError=10005]="UnknownError",s[s.LoginRepeatError=10102]="LoginRepeatError",exports.RequestApi=void 0,(i=exports.RequestApi||(exports.RequestApi={})).Login="/chat/member/login",i.Logout="/chat/member/logout",i.CreateGroup="CreateGroup",i.GetGroupInfo="/chat/group/info",i.GetAllConversationList="/chat/group/list",i.CreateTextMessage="/chat/message/push",i.GetHistoryMessageList="/chat/message/pull",i.UploadFile="/chat/member/upload",exports.CbEvents=void 0,(a=exports.CbEvents||(exports.CbEvents={})).OnConnected="OnConnected",a.OnDisconnected="OnDisconnected",a.OnReconnecting="OnReconnecting",a.OnReconnected="OnReconnected",a.OnReconnectFailed="OnReconnectFailed",a.OnNetworkChange="OnNetworkChange",a.OnReceiveMessage="OnReceiveMessage",a.OnReceiveMessages="OnReceiveMessages",a.OnMessageSent="OnMessageSent",a.OnMessageFailed="OnMessageFailed",a.OnMessageRevoked="OnMessageRevoked",a.OnMessageDeleted="OnMessageDeleted",a.OnMessageRead="OnMessageRead",a.OnTypingStatusUpdate="OnTypingStatusUpdate",a.OnUserStatusChange="OnUserStatusChange",a.OnKickedOffline="OnKickedOffline",a.OnUserTokenInvalid="OnUserTokenInvalid",a.OnUserTokenExpired="OnUserTokenExpired",a.OnForceOffline="OnForceOffline",a.OnUserInfoUpdated="OnUserInfoUpdated",a.OnGroupCreated="OnGroupCreated",a.OnGroupInfoUpdated="OnGroupInfoUpdated",a.OnGroupDissolved="OnGroupDissolved",a.OnJoinGroup="OnJoinGroup",a.OnLeaveGroup="OnLeaveGroup",a.OnGroupMemberJoined="OnGroupMemberJoined",a.OnGroupMemberLeft="OnGroupMemberLeft",a.OnGroupMemberKicked="OnGroupMemberKicked",a.OnGroupOwnerChanged="OnGroupOwnerChanged",a.OnGroupAdminAdded="OnGroupAdminAdded",a.OnGroupAdminRemoved="OnGroupAdminRemoved",a.OnGroupMemberMuted="OnGroupMemberMuted",a.OnGroupMemberUnmuted="OnGroupMemberUnmuted",a.OnGroupAllMemberMuted="OnGroupAllMemberMuted",a.OnGroupAllMemberUnmuted="OnGroupAllMemberUnmuted",a.OnConversationCreated="OnConversationCreated",a.OnConversationDeleted="OnConversationDeleted",a.OnConversationUpdated="OnConversationUpdated",a.OnUnreadCountChanged="OnUnreadCountChanged",a.OnConversationPinned="OnConversationPinned",a.OnConversationUnpinned="OnConversationUnpinned",a.OnConversationMuted="OnConversationMuted",a.OnConversationUnmuted="OnConversationUnmuted",a.OnPongConn="OnPongConn",a.OnPongReConn="OnPongReConn",a.OnPongIdle="OnPongIdle",a.OnError="OnError",a.OnWarning="OnWarning",a.OnLog="OnLog";var u,d,l,p,g,v,h,f,m,O,S,E,M,C,x,A,G,b,R,T,P,y,N=/*#__PURE__*/function(){function e(){var e;this.events=((e={})[exports.CbEvents.OnReceiveMessage]=[],e[exports.CbEvents.OnReceiveMessages]=[],e)}var t=e.prototype;return t.emit=function(e,t){var n=this.events[e];return n&&n.forEach(function(e){return e(t)}),this},t.on=function(e,t){var n;return this.events[e]||(this.events[e]=[]),null==(n=this.events[e])||n.push(t),this},t.off=function(e,t){var n=this.events[e];if(n){var o=n.indexOf(t);o>-1&&(n.splice(o,1),0===n.length&&delete this.events[e])}return this},e}();exports.MessageReceiveOptType=void 0,(u=exports.MessageReceiveOptType||(exports.MessageReceiveOptType={}))[u.Nomal=0]="Nomal",u[u.NotReceive=1]="NotReceive",u[u.NotNotify=2]="NotNotify",exports.AllowType=void 0,(d=exports.AllowType||(exports.AllowType={}))[d.Allowed=0]="Allowed",d[d.NotAllowed=1]="NotAllowed",exports.GroupType=void 0,(l=exports.GroupType||(exports.GroupType={}))[l.Group=2]="Group",l[l.WorkingGroup=2]="WorkingGroup",exports.GroupJoinSource=void 0,(p=exports.GroupJoinSource||(exports.GroupJoinSource={}))[p.Invitation=2]="Invitation",p[p.Search=3]="Search",p[p.QrCode=4]="QrCode",exports.GroupMemberRole=void 0,(g=exports.GroupMemberRole||(exports.GroupMemberRole={}))[g.Nomal=20]="Nomal",g[g.Admin=60]="Admin",g[g.Owner=100]="Owner",exports.GroupVerificationType=void 0,(v=exports.GroupVerificationType||(exports.GroupVerificationType={}))[v.ApplyNeedInviteNot=0]="ApplyNeedInviteNot",v[v.AllNeed=1]="AllNeed",v[v.AllNot=2]="AllNot",exports.Platform=void 0,(h=exports.Platform||(exports.Platform={}))[h.iOS=1]="iOS",h[h.Android=2]="Android",h[h.Windows=3]="Windows",h[h.MacOSX=4]="MacOSX",h[h.Web=5]="Web",h[h.Linux=7]="Linux",h[h.AndroidPad=8]="AndroidPad",h[h.iPad=9]="iPad",exports.LogLevel=void 0,(f=exports.LogLevel||(exports.LogLevel={}))[f.Debug=5]="Debug",f[f.Info=4]="Info",f[f.Warn=3]="Warn",f[f.Error=2]="Error",f[f.Fatal=1]="Fatal",f[f.Panic=0]="Panic",exports.ApplicationHandleResult=void 0,(m=exports.ApplicationHandleResult||(exports.ApplicationHandleResult={}))[m.Unprocessed=0]="Unprocessed",m[m.Agree=1]="Agree",m[m.Reject=-1]="Reject",exports.MessageType=void 0,(O=exports.MessageType||(exports.MessageType={}))[O.MESSAGE_TYPE_TEXT=0]="MESSAGE_TYPE_TEXT",O[O.TextMessage=101]="TextMessage",O[O.PictureMessage=102]="PictureMessage",O[O.VoiceMessage=103]="VoiceMessage",O[O.VideoMessage=104]="VideoMessage",O[O.FileMessage=105]="FileMessage",O[O.AtTextMessage=106]="AtTextMessage",O[O.MergeMessage=107]="MergeMessage",O[O.CardMessage=108]="CardMessage",O[O.LocationMessage=109]="LocationMessage",O[O.CustomMessage=110]="CustomMessage",O[O.TypingMessage=113]="TypingMessage",O[O.QuoteMessage=114]="QuoteMessage",O[O.FaceMessage=115]="FaceMessage",O[O.FriendAdded=1201]="FriendAdded",O[O.OANotification=1400]="OANotification",O[O.GroupCreated=1501]="GroupCreated",O[O.MemberQuit=1504]="MemberQuit",O[O.GroupOwnerTransferred=1507]="GroupOwnerTransferred",O[O.MemberKicked=1508]="MemberKicked",O[O.MemberInvited=1509]="MemberInvited",O[O.MemberEnter=1510]="MemberEnter",O[O.GroupDismissed=1511]="GroupDismissed",O[O.GroupMemberMuted=1512]="GroupMemberMuted",O[O.GroupMemberCancelMuted=1513]="GroupMemberCancelMuted",O[O.GroupMuted=1514]="GroupMuted",O[O.GroupCancelMuted=1515]="GroupCancelMuted",O[O.GroupAnnouncementUpdated=1519]="GroupAnnouncementUpdated",O[O.GroupNameUpdated=1520]="GroupNameUpdated",O[O.BurnMessageChange=1701]="BurnMessageChange",O[O.RevokeMessage=2101]="RevokeMessage",exports.SessionType=void 0,(S=exports.SessionType||(exports.SessionType={}))[S.Single=1]="Single",S[S.Group=3]="Group",S[S.WorkingGroup=3]="WorkingGroup",S[S.Notification=4]="Notification",exports.GroupStatus=void 0,(E=exports.GroupStatus||(exports.GroupStatus={}))[E.Nomal=0]="Nomal",E[E.Baned=1]="Baned",E[E.Dismissed=2]="Dismissed",E[E.Muted=3]="Muted",exports.GroupAtType=void 0,(M=exports.GroupAtType||(exports.GroupAtType={}))[M.AtNormal=0]="AtNormal",M[M.AtMe=1]="AtMe",M[M.AtAll=2]="AtAll",M[M.AtAllAtMe=3]="AtAllAtMe",M[M.AtGroupNotice=4]="AtGroupNotice",exports.GroupMemberFilter=void 0,(C=exports.GroupMemberFilter||(exports.GroupMemberFilter={}))[C.All=0]="All",C[C.Owner=1]="Owner",C[C.Admin=2]="Admin",C[C.Nomal=3]="Nomal",C[C.AdminAndNomal=4]="AdminAndNomal",C[C.AdminAndOwner=5]="AdminAndOwner",exports.Relationship=void 0,(x=exports.Relationship||(exports.Relationship={}))[x.isBlack=0]="isBlack",x[x.isFriend=1]="isFriend",exports.LoginStatus=void 0,(A=exports.LoginStatus||(exports.LoginStatus={}))[A.Logout=1]="Logout",A[A.Logging=2]="Logging",A[A.Logged=3]="Logged",exports.OnlineState=void 0,(G=exports.OnlineState||(exports.OnlineState={}))[G.Online=1]="Online",G[G.Offline=0]="Offline",exports.GroupMessageReaderFilter=void 0,(b=exports.GroupMessageReaderFilter||(exports.GroupMessageReaderFilter={}))[b.Readed=0]="Readed",b[b.UnRead=1]="UnRead",exports.GROUP_TYPE=void 0,(R=exports.GROUP_TYPE||(exports.GROUP_TYPE={}))[R.ONE_ON_ONE=0]="ONE_ON_ONE",R[R.GROUP_CHAT=1]="GROUP_CHAT",R[R.CUSTOMER_SERVICE=2]="CUSTOMER_SERVICE",exports.MSG_TYPE=void 0,(T=exports.MSG_TYPE||(exports.MSG_TYPE={}))[T.TEXT=0]="TEXT",T[T.IMAGE=1]="IMAGE",T[T.FILE=2]="FILE",T[T.VIDEO=3]="VIDEO",T[T.LINK=4]="LINK",T[T.GIF=5]="GIF",exports.SSE_RESPONSE_TYPE=void 0,(P=exports.SSE_RESPONSE_TYPE||(exports.SSE_RESPONSE_TYPE={}))[P.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",P[P.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",P[P.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",P[P.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",exports.MessageSendStatus=void 0,(y=exports.MessageSendStatus||(exports.MessageSendStatus={}))[y.Sending=1]="Sending",y[y.Succeed=2]="Succeed",y[y.Failed=3]="Failed";var k="undefined"!=typeof uni,_="undefined"!=typeof window,w=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.login=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.Login,method:"POST"}))}catch(e){return Promise.reject(e)}},t.logout=function(){try{return Promise.resolve(this.sdk.sendRequest({data:{},url:exports.RequestApi.Logout,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),L=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.sendMessage=function(e,t){try{var n=this;return Promise.resolve(function(o,r){try{var s=Promise.resolve(n.sdk.sendRequest({data:e,url:t,method:"POST"}))}catch(e){return r(e)}return s&&s.then?s.then(void 0,r):s}(0,function(e){throw console.error("Failed to send message",e),e}))}catch(e){return Promise.reject(e)}},t.createMessage=function(e,t,o,r,s){var i;void 0===o&&(o={});var a=n({},o,((i={msgType:e})[r]=s,i.status=0,i));return this.sendMessage(a,t)},t.createTextMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.TEXT,exports.RequestApi.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createImageMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.IMAGE,exports.RequestApi.CreateTextMessage,t,"snapshot",e))}catch(e){return Promise.reject(e)}},t.getHistoryMessageList=function(e){var t=e.groupId,n=e.lastId,o=e.size,r=void 0===o?20:o;try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,lastId:n,size:r},url:exports.RequestApi.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),U=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}return e.prototype.getConversations=function(){try{return Promise.resolve(this.sdk.sendRequest({data:void 0,url:exports.RequestApi.GetAllConversationList,method:"GET"}))}catch(e){return Promise.reject(e)}},e}(),I=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.createGroup=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},t.getGroupInfo=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:e},url:exports.RequestApi.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},e}(),F=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.services={},this.sdk=e}var t=e.prototype;return t.get=function(e){return this.services[e]||(this.services[e]=this.createService(e)),this.services[e]},t.createService=function(e){switch(e){case exports.ServiceName.USER:return new w(this.sdk);case exports.ServiceName.MESSAGE:return new L(this.sdk);case exports.ServiceName.CONVERSATION:return new U(this.sdk);case exports.ServiceName.GROUP:return new I(this.sdk);default:throw new Error("Unknown service: "+e)}},t.reset=function(){this.services={}},e}();function H(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var D=[exports.RequestApi.Logout,exports.CbEvents.OnKickedOffline,exports.CbEvents.OnUserTokenInvalid,exports.CbEvents.OnUserTokenExpired],j=/*#__PURE__*/function(e){function t(t){var n;return void 0===t&&(t=!1),(n=e.call(this)||this).config={debug:!1},n.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},n.sseClient=void 0,n.serviceManager=void 0,n.sendRequest=function(e){return n.internalState.lastActivity=Date.now(),n.config.debug&&n.logRequest(e),function(e){try{return Promise.resolve(k?new Promise(function(t,n){uni.request({url:e.url,method:e.method||"GET",header:e.headers,data:e.data,success:function(e){return t(e.data)},fail:function(e){return n(e)}})}):function(){if(_)return console.log("isBrowser ",_),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url:n.config.apiAddr+e.url,method:e.method,headers:{"Content-Type":"application/json",Authorization:n.config.token?"Bearer "+n.config.token:""},data:e.data})},n.createRequestFunction=function(e,t){return function(o){return n.sendRequest({data:o,url:e,method:t})}},n.createRequestFunctionWithoutParams=function(e,t){return function(){return n.sendRequest({data:void 0,method:t,url:e})}},n.handleMessage=function(e){switch(n.config.debug&&console.log("handleMessage response",e),e.ev){case exports.SSE_RESPONSE_TYPE.EVENT_MESSAGE_PUSH:1===e.dt.length?n.emit(exports.CbEvents.OnReceiveMessage,e.dt[0]):n.emit(exports.CbEvents.OnReceiveMessages,e.dt);break;case exports.SSE_RESPONSE_TYPE.EVENT_PONG_CONN:n.internalState.isConnected=!0,n.emit(exports.CbEvents.OnConnected);break;case exports.SSE_RESPONSE_TYPE.EVENT_PONG_RE_CONN:n.internalState.isConnected=!0,n.emit(exports.CbEvents.OnReconnected);break;case exports.SSE_RESPONSE_TYPE.EVENT_PONG_IDLE:break;default:t=e.ev,Object.values(exports.CbEvents).includes(t)?(n.emit(e.ev,e.dt),D.includes(e.ev)&&(n.internalState.isLoggedIn=!1,n.internalState.isConnected=!1,n.sseClient&&(n.sseClient.close(),n.sseClient=void 0))):n.config.debug&&console.warn("Unknown SSE event type:",e.ev)}var t},n.handleReconnectSuccess=function(){n.config.username&&(n.internalState.isConnected=!0,n.internalState.reconnectAttempts=0,n.config.debug&&console.log("SSE reconnection successful"),n.emit(exports.CbEvents.OnReconnected))},n.handleConnectionClosed=function(){n.internalState.isConnected=!1,n.config.debug&&console.log("SSE connection closed"),n.emit(exports.CbEvents.OnDisconnected)},n.login=function(e){try{return n.sseClient?Promise.resolve("login repeat"):(n.config.apiAddr=e.apiAddr,n.config.token=e.token,n.config.debug&&(console.log("login params",e),console.log("apiAddr",n.config.apiAddr)),Promise.resolve(n.user.login(e)).then(function(t){var o=t.code,r=t.data;if(0!=o)return Promise.resolve("Login failed, Server error, error code is "+o);var s=n.config.apiAddr+"/chat/sse/conn?username="+e.username+"&token="+e.token+"&appKey="+e.appKey+"&random="+r;return n.config.username=e.username,n.config.token=e.token,n.config.appKey=e.appKey,n.sseClient=new c({url:s,onMessage:n.handleMessage,onReconnectSuccess:n.handleReconnectSuccess,onConnectionClosed:n.handleConnectionClosed,token:e.token}),H(function(){return Promise.resolve(n.sseClient.connect()).then(function(e){return n.internalState.isLoggedIn=!0,e})},function(e){return n.internalState.isLoggedIn=!1,Promise.reject(e.message)})}))}catch(e){return Promise.reject(e)}},n.logout=function(){try{return n.sseClient&&(n.sseClient.close(),n.sseClient=void 0),Promise.resolve(n.user.logout()).then(function(e){return n.internalState.isLoggedIn=!1,n.internalState.isConnected=!1,n.config.username=void 0,n.config.token=void 0,e})}catch(e){return Promise.reject(e)}},n.internalUploadFile=function(e){try{return Promise.resolve(H(function(){var t=new FormData;return t.append("file",e),t.append("filename",e.name),Promise.resolve(fetch(""+n.config.apiAddr+exports.RequestApi.UploadFile,{method:"POST",headers:{Authorization:n.config.token?"Bearer "+n.config.token:""},body:t})).then(function(e){if(!e.ok)throw new Error("Upload failed with status: "+e.status);return Promise.resolve(e.json()).then(function(e){var t;return{url:(null==(t=e.data)?void 0:t.url)||""}})})},function(e){return console.error("Upload failed:",e),{error:e}}))}catch(e){return Promise.reject(e)}},n.uploadFile=function(e){var t=e.file;try{return Promise.resolve(n.internalUploadFile(t)).then(function(e){var t,n=e.url,o=e.error;return{data:{url:void 0===n?"":n},msg:null!=(t=null==o?void 0:o.message)?t:"",code:o?exports.ErrorCode.UnknownError:0}})}catch(e){return Promise.reject(e)}},n.createTextMessage=function(e){return n.message.createTextMessage(e)},n.createImageMessage=function(e){return n.message.createImageMessage(e)},n.getHistoryMessageList=function(e){return n.message.getHistoryMessageList(e)},n.getConversations=function(){return n.conversation.getConversations()},n.createGroup=function(e){return n.group.createGroup(e)},n.getGroupInfo=function(e){return n.group.getGroupInfo(e)},n.config.debug=t,n.serviceManager=new F(n),n}var n,s;s=e,(n=t).prototype=Object.create(s.prototype),n.prototype.constructor=n,o(n,s);var i,a,u=t.prototype;return u.configure=function(e){void 0!==e.debug&&(this.config.debug=e.debug),e.apiAddr&&(this.config.apiAddr=e.apiAddr),e.appKey&&(this.config.appKey=e.appKey)},u.setApiAddr=function(e){this.config.apiAddr=e},u.setAppKey=function(e){this.config.appKey=e},u.getService=function(e){return this.serviceManager.get(e)},u.isConnected=function(){return!!this.sseClient&&this.internalState.isConnected},u.isLoggedIn=function(){return this.internalState.isLoggedIn},u.logRequest=function(e){console.log("%c"+(new Date).toISOString().substring(11,19)+"%c SDK %c"+e.method+"%c "+e.url+"%c"+(e.data?"\n📦 Payload:":""),"color: #888; font-size: 11px;","background: #7CAEFF; color: white; font-weight: bold; font-size: 12px; border-radius: 4px; padding: 2px 6px; margin-right: 6px;","background: #4CAF50; color: white; font-weight: bold; font-size: 12px; border-radius: 4px; padding: 2px 6px; margin-right: 6px;","color: #0066cc; font-weight: bold;","color: #888;"),e.data&&Object.keys(e.data).length>0&&console.log("%c%s","color: #555; background: #f5f5f5; padding: 4px; border-radius: 4px; font-family: monospace;",JSON.stringify(e.data,null,2))},u.onMessage=function(e){var t=this;return this.on(exports.CbEvents.OnReceiveMessage,e),function(){return t.off(exports.CbEvents.OnReceiveMessage,e)}},u.onMessages=function(e){var t=this;return this.on(exports.CbEvents.OnReceiveMessages,e),function(){return t.off(exports.CbEvents.OnReceiveMessages,e)}},u.onConnectionChange=function(e){var t=this,n=function(){return e(!0)},o=function(){return e(!1)};return this.on(exports.CbEvents.OnConnected,n),this.on(exports.CbEvents.OnDisconnected,o),function(){t.off(exports.CbEvents.OnConnected,n),t.off(exports.CbEvents.OnDisconnected,o)}},u.onKickedOffline=function(e){var t=this;return this.on(exports.CbEvents.OnKickedOffline,e),function(){return t.off(exports.CbEvents.OnKickedOffline,e)}},i=t,(a=[{key:"message",get:function(){return this.getService(exports.ServiceName.MESSAGE)}},{key:"conversation",get:function(){return this.getService(exports.ServiceName.CONVERSATION)}},{key:"group",get:function(){return this.getService(exports.ServiceName.GROUP)}},{key:"user",get:function(){return this.getService(exports.ServiceName.USER)}},{key:"username",get:function(){return this.config.username}},{key:"uuid",get:function(){return(36*Math.random()).toString(36).slice(2)+(new Date).getTime().toString()}}])&&function(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,r(o.key),o)}}(i.prototype,a),Object.defineProperty(i,"prototype",{writable:!1}),i}(N);exports.MessageStatus={NORMAL:0,EDITED:1,DELETED:2},exports.SIMSDK=j;
package/lib/index.umd.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("event-source-polyfill")):"function"==typeof define&&define.amd?define(["exports","event-source-polyfill"],t):t((e||self).simSdkWeb={},e.eventSourcePolyfill)}(this,function(e,t){function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},o.apply(null,arguments)}function n(e,t){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},n(e,t)}function r(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,"string");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}var i,s,a=/*#__PURE__*/function(){function e(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess}var o=e.prototype;return o.removeAllEventListeners=function(){var e=this;this.eventSource&&(this.eventSource.removeEventListener("open",this.onOpen),this.handlers.forEach(function(t,o){var n;null==(n=e.eventSource)||n.removeEventListener(o,t)}),this.eventSource.removeEventListener("error",this.onError))},o.subscribe=function(e,t){this.handlers.set(e,t),this.connect()},o.connect=function(){var e=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(o,n){try{e.eventSource=new t.EventSourcePolyfill(e.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+e.token}}),e.eventSource.addEventListener("open",function(t){e.onOpen(t),o("SSE connect successful!")}),e.eventSource.addEventListener("message",function(t){e.handleMessage(t.data)}),e.handlers.forEach(function(t,o){var n;null==(n=e.eventSource)||n.addEventListener(o,e.onMessage(t))}),e.eventSource.addEventListener("error",function(t){e.onError(t),e.connected||n("SSE connect error.")})}catch(t){console.error("Failed to create EventSource:",t),e.handleReconnect(),n(t)}})},o.onOpen=function(e){console.log("SSE connection established"),this.connected=!0,this.reconnectAttempts>0&&this.onReconnectSuccessCallback&&this.onReconnectSuccessCallback(),this.reconnectAttempts=0,this.reconnectTimeout=5e3},o.handleMessage=function(e){try{console.log("SSE handleMessage ",e);var t=JSON.parse(e);this.onMessageCallback&&this.onMessageCallback(t)}catch(e){console.error("数据解析错误:",e)}},o.onMessage=function(e){return function(t){try{var o=JSON.parse(t.data);console.log("Received SSE message:",o),"function"==typeof e&&e(o)}catch(e){console.error("Failed to parse SSE message:",e)}}},o.onError=function(e){console.error("SSE connection error:",e),this.connected=!1,401===e.status||e.statusText&&e.statusText.includes("Unauthorized")?this.cleanup():this.handleReconnect()},o.handleReconnect=function(){var e=this;if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return console.error("Max reconnection attempts reached"),void this.destroySse();console.log("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,3e4),e.reconnectTimer=null,e.connect()},this.reconnectTimeout)}},o.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},o.unsubscribe=function(){this.cleanup(),this.handlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},o.destroySse=function(){this.unsubscribe(),this.reconnectAttempts=this.maxReconnectAttempts},o.close=function(){this.destroySse(),console.log("SSE 连接已关闭")},o.isConnected=function(){return this.connected},e}();e.ErrorCode=void 0,(i=e.ErrorCode||(e.ErrorCode={}))[i.ConnectionEstablishmentFailed=1e4]="ConnectionEstablishmentFailed",i[i.ResourceLoadNotCompleteError=10004]="ResourceLoadNotCompleteError",i[i.UnknownError=10005]="UnknownError",i[i.LoginRepeatError=10102]="LoginRepeatError",e.RequestApi=void 0,(s=e.RequestApi||(e.RequestApi={})).Login="/chat/member/login",s.Logout="Logout",s.CreateGroup="CreateGroup",s.GetGroupInfo="/chat/group/info",s.GetAllConversationList="/chat/group/list",s.CreateTextMessage="/chat/message/push",s.GetHistoryMessageList="/chat/message/pull";var c,u,d,l,p,v,g,h,m,f,S,M,E,A,T,y,G,R,b,P,O,C=/*#__PURE__*/function(){function t(e){this.simSDK=void 0,this.simSDK=e}var o=t.prototype;return o.createGroup=function(t){try{return Promise.resolve(this.simSDK.sendRequest({data:t,url:e.RequestApi.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},o.getGroupInfo=function(t){try{return Promise.resolve(this.simSDK.sendRequest({data:{groupId:t},url:e.RequestApi.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},t}();e.MessageReceiveOptType=void 0,(c=e.MessageReceiveOptType||(e.MessageReceiveOptType={}))[c.Nomal=0]="Nomal",c[c.NotReceive=1]="NotReceive",c[c.NotNotify=2]="NotNotify",e.AllowType=void 0,(u=e.AllowType||(e.AllowType={}))[u.Allowed=0]="Allowed",u[u.NotAllowed=1]="NotAllowed",e.GroupType=void 0,(d=e.GroupType||(e.GroupType={}))[d.Group=2]="Group",d[d.WorkingGroup=2]="WorkingGroup",e.GroupJoinSource=void 0,(l=e.GroupJoinSource||(e.GroupJoinSource={}))[l.Invitation=2]="Invitation",l[l.Search=3]="Search",l[l.QrCode=4]="QrCode",e.GroupMemberRole=void 0,(p=e.GroupMemberRole||(e.GroupMemberRole={}))[p.Nomal=20]="Nomal",p[p.Admin=60]="Admin",p[p.Owner=100]="Owner",e.GroupVerificationType=void 0,(v=e.GroupVerificationType||(e.GroupVerificationType={}))[v.ApplyNeedInviteNot=0]="ApplyNeedInviteNot",v[v.AllNeed=1]="AllNeed",v[v.AllNot=2]="AllNot",e.Platform=void 0,(g=e.Platform||(e.Platform={}))[g.iOS=1]="iOS",g[g.Android=2]="Android",g[g.Windows=3]="Windows",g[g.MacOSX=4]="MacOSX",g[g.Web=5]="Web",g[g.Linux=7]="Linux",g[g.AndroidPad=8]="AndroidPad",g[g.iPad=9]="iPad",e.LogLevel=void 0,(h=e.LogLevel||(e.LogLevel={}))[h.Debug=5]="Debug",h[h.Info=4]="Info",h[h.Warn=3]="Warn",h[h.Error=2]="Error",h[h.Fatal=1]="Fatal",h[h.Panic=0]="Panic",e.ApplicationHandleResult=void 0,(m=e.ApplicationHandleResult||(e.ApplicationHandleResult={}))[m.Unprocessed=0]="Unprocessed",m[m.Agree=1]="Agree",m[m.Reject=-1]="Reject",e.MessageType=void 0,(f=e.MessageType||(e.MessageType={}))[f.MESSAGE_TYPE_TEXT=0]="MESSAGE_TYPE_TEXT",f[f.TextMessage=101]="TextMessage",f[f.PictureMessage=102]="PictureMessage",f[f.VoiceMessage=103]="VoiceMessage",f[f.VideoMessage=104]="VideoMessage",f[f.FileMessage=105]="FileMessage",f[f.AtTextMessage=106]="AtTextMessage",f[f.MergeMessage=107]="MergeMessage",f[f.CardMessage=108]="CardMessage",f[f.LocationMessage=109]="LocationMessage",f[f.CustomMessage=110]="CustomMessage",f[f.TypingMessage=113]="TypingMessage",f[f.QuoteMessage=114]="QuoteMessage",f[f.FaceMessage=115]="FaceMessage",f[f.FriendAdded=1201]="FriendAdded",f[f.OANotification=1400]="OANotification",f[f.GroupCreated=1501]="GroupCreated",f[f.MemberQuit=1504]="MemberQuit",f[f.GroupOwnerTransferred=1507]="GroupOwnerTransferred",f[f.MemberKicked=1508]="MemberKicked",f[f.MemberInvited=1509]="MemberInvited",f[f.MemberEnter=1510]="MemberEnter",f[f.GroupDismissed=1511]="GroupDismissed",f[f.GroupMemberMuted=1512]="GroupMemberMuted",f[f.GroupMemberCancelMuted=1513]="GroupMemberCancelMuted",f[f.GroupMuted=1514]="GroupMuted",f[f.GroupCancelMuted=1515]="GroupCancelMuted",f[f.GroupAnnouncementUpdated=1519]="GroupAnnouncementUpdated",f[f.GroupNameUpdated=1520]="GroupNameUpdated",f[f.BurnMessageChange=1701]="BurnMessageChange",f[f.RevokeMessage=2101]="RevokeMessage",e.SessionType=void 0,(S=e.SessionType||(e.SessionType={}))[S.Single=1]="Single",S[S.Group=3]="Group",S[S.WorkingGroup=3]="WorkingGroup",S[S.Notification=4]="Notification",e.GroupStatus=void 0,(M=e.GroupStatus||(e.GroupStatus={}))[M.Nomal=0]="Nomal",M[M.Baned=1]="Baned",M[M.Dismissed=2]="Dismissed",M[M.Muted=3]="Muted",e.GroupAtType=void 0,(E=e.GroupAtType||(e.GroupAtType={}))[E.AtNormal=0]="AtNormal",E[E.AtMe=1]="AtMe",E[E.AtAll=2]="AtAll",E[E.AtAllAtMe=3]="AtAllAtMe",E[E.AtGroupNotice=4]="AtGroupNotice",e.GroupMemberFilter=void 0,(A=e.GroupMemberFilter||(e.GroupMemberFilter={}))[A.All=0]="All",A[A.Owner=1]="Owner",A[A.Admin=2]="Admin",A[A.Nomal=3]="Nomal",A[A.AdminAndNomal=4]="AdminAndNomal",A[A.AdminAndOwner=5]="AdminAndOwner",e.Relationship=void 0,(T=e.Relationship||(e.Relationship={}))[T.isBlack=0]="isBlack",T[T.isFriend=1]="isFriend",e.LoginStatus=void 0,(y=e.LoginStatus||(e.LoginStatus={}))[y.Logout=1]="Logout",y[y.Logging=2]="Logging",y[y.Logged=3]="Logged",e.OnlineState=void 0,(G=e.OnlineState||(e.OnlineState={}))[G.Online=1]="Online",G[G.Offline=0]="Offline",e.GroupMessageReaderFilter=void 0,(R=e.GroupMessageReaderFilter||(e.GroupMessageReaderFilter={}))[R.Readed=0]="Readed",R[R.UnRead=1]="UnRead",e.MSG_TYPE=void 0,(b=e.MSG_TYPE||(e.MSG_TYPE={}))[b.TEXT=0]="TEXT",b[b.IMAGE=1]="IMAGE",b[b.FILE=2]="FILE",b[b.VIDEO=3]="VIDEO",b[b.LINK=4]="LINK",b[b.GIF=5]="GIF",e.SSE_RESPONSE_TYPE=void 0,(P=e.SSE_RESPONSE_TYPE||(e.SSE_RESPONSE_TYPE={}))[P.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",P[P.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",P[P.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",P[P.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",e.MessageSendStatus=void 0,(O=e.MessageSendStatus||(e.MessageSendStatus={}))[O.Sending=1]="Sending",O[O.Succeed=2]="Succeed",O[O.Failed=3]="Failed";var N,L=/*#__PURE__*/function(){function t(e){this.simSDK=void 0,this.simSDK=e}var n=t.prototype;return n.sendMessage=function(e,t){try{var o=this;return Promise.resolve(function(n,r){try{var i=Promise.resolve(o.simSDK.sendRequest({data:e,url:t,method:"POST"}))}catch(e){return r(e)}return i&&i.then?i.then(void 0,r):i}(0,function(e){throw console.error("Failed to send message",e),e}))}catch(e){return Promise.reject(e)}},n.createMessage=function(e,t,n,r,i){var s;void 0===n&&(n={});var a=o({},n,((s={msgType:e})[r]=i,s.status=0,s));return this.sendMessage(a,t)},n.createTextMessage=function(t,o){void 0===o&&(o={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.TEXT,e.RequestApi.CreateTextMessage,o,"text",t))}catch(e){return Promise.reject(e)}},n.createImageMessage=function(t,o){void 0===o&&(o={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.IMAGE,e.RequestApi.CreateTextMessage,o,"snapshot",t))}catch(e){return Promise.reject(e)}},n.getHistoryMessageList=function(t){var o=t.groupId,n=t.lastId,r=t.size,i=void 0===r?20:r;try{return Promise.resolve(this.simSDK.sendRequest({data:{groupId:o,lastId:n,size:i},url:e.RequestApi.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},t}();e.CbEvents=void 0,(N=e.CbEvents||(e.CbEvents={})).onReceiveMessage="onReceiveMessage",N.onReceiveMessages="onReceiveMessages",N.OnKickedOffline="OnKickedOffline",N.OnUserTokenInvalid="OnUserTokenInvalid",N.OnUserTokenExpired="OnUserTokenExpired";var k="undefined"!=typeof uni,F="undefined"!=typeof window,I=/*#__PURE__*/function(t){function o(o){var n;return void 0===o&&(o=!0),(n=t.call(this)||this).username=void 0,n.token=void 0,n.appKey=void 0,n.apiAddr=void 0,n.sseClient=void 0,n.debug=void 0,n.messageService=void 0,n.groupService=void 0,n.sendRequest=function(e){return n.log("%cSDK =>%c [sendRequest] url:"+e.url+" [method]: "+e.method+" args "+JSON.stringify(e.data),"font-size:14px; background:#7CAEFF; border-radius:4px; padding-inline:4px;",""),function(e){try{return Promise.resolve(k?new Promise(function(t,o){uni.request({url:e.url,method:e.method||"GET",header:e.headers,data:e.data,success:function(e){return t(e.data)},fail:function(e){return o(e)}})}):function(){if(F)return console.log("isBrowser ",F),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url:n.apiAddr+e.url,method:e.method,headers:{"Content-Type":"application/json",Authorization:"Bearer "+n.token},data:e.data})},n.createRequestFunction=function(e,t){return function(o){return n.sendRequest({data:o,url:e,method:t})}},n.createRequestFunctionWithoutParams=function(e,t){return function(){return n.sendRequest({data:void 0,method:t,username:n.username,url:e})}},n.handleMessage=function(e){console.log("handleMessage response",e)},n.handleReconnectSuccess=function(){},n.login=function(t){try{return n.sseClient?Promise.resolve("login repeat"):(console.log("login params ",t),n.apiAddr=t.apiAddr,n.token=t.token,console.log("this.apiAddr ",n.apiAddr),Promise.resolve(n.sendRequest({data:t,url:e.RequestApi.Login,method:"POST"})).then(function(e){var o=e.code,r=e.data;if(0!=o)return console.log("code ",o),Promise.resolve("Login failed, Server error, error code is "+o);var i=n.apiAddr+"/chat/sse/conn?username="+t.username+"&token="+t.token+"&appKey="+t.appKey+"&random="+r;n.username=t.username,n.token=t.token,n.appKey=t.appKey,n.sseClient=new a({url:i,onMessage:n.handleMessage,onReconnectSuccess:n.handleReconnectSuccess,token:t.token});try{return n.sseClient.connect()}catch(e){return Promise.reject(e.message)}}))}catch(e){return Promise.reject(e)}},n.logout=n.createRequestFunctionWithoutParams(e.RequestApi.Logout,"DELETE"),n.internalUploadFile=function(e){try{try{return Promise.resolve({})}catch(e){return console.error("Upload failed:",e),Promise.resolve({error:e})}}catch(e){return Promise.reject(e)}},n.uploadFile=function(t){var o=t.file;try{return Promise.resolve(n.internalUploadFile(o)).then(function(t){var o,n=t.url,r=t.error;return{data:{url:void 0===n?"":n},msg:null!=(o=null==r?void 0:r.message)?o:"",code:r?e.ErrorCode.UnknownError:0}})}catch(e){return Promise.reject(e)}},n.getSelfUserInfo=void 0,n.setSelfInfo=void 0,n.getUsersInfoWithCache=void 0,n.subscribeUsersStatus=void 0,n.unsubscribeUsersStatus=void 0,n.getSubscribeUsersStatus=void 0,n.setAppBackgroundStatus=void 0,n.networkStatusChanged=void 0,n.setGlobalRecvMessageOpt=void 0,n.acceptFriendApplication=void 0,n.addBlack=void 0,n.addFriend=void 0,n.checkFriend=void 0,n.deleteFriend=void 0,n.getBlackList=void 0,n.getFriendApplicationListAsApplicant=void 0,n.getFriendApplicationListAsRecipient=void 0,n.getFriendList=void 0,n.getFriendListPage=void 0,n.getSpecifiedFriendsInfo=void 0,n.refuseFriendApplication=void 0,n.removeBlack=void 0,n.searchFriends=void 0,n.setFriendRemark=void 0,n.getAllConversationList=void 0,n.getConversationListSplit=void 0,n.getOneConversation=void 0,n.getMultipleConversation=void 0,n.getConversationIDBySessionType=void 0,n.getTotalUnreadMsgCount=void 0,n.markConversationMessageAsRead=void 0,n.setConversationDraft=void 0,n.pinConversation=void 0,n.setConversationRecvMessageOpt=void 0,n.setConversationPrivateChat=void 0,n.setConversationBurnDuration=void 0,n.resetConversationGroupAtType=void 0,n.hideConversation=void 0,n.hideAllConversation=void 0,n.clearConversationAndDeleteAllMsg=void 0,n.deleteConversationAndDeleteAllMsg=void 0,n.debug=o,Object.assign(n,{}),Object.assign(n,{}),Object.assign(n,{getAllConversationList:n.createRequestFunctionWithoutParams(e.RequestApi.GetAllConversationList,"GET")}),n.messageService=new L(n),n.groupService=new C(n),n}var i,s,c,u;return s=t,(i=o).prototype=Object.create(s.prototype),i.prototype.constructor=i,n(i,s),o.prototype.log=function(){var e;this.debug&&(e=console).info.apply(e,[].slice.call(arguments))},c=o,(u=[{key:"createGroup",get:function(){var e=this;return function(t){return e.groupService.createGroup(t)}}},{key:"getGroupInfo",get:function(){var e=this;return function(t){return e.groupService.getGroupInfo(t)}}},{key:"createTextMessage",get:function(){return this.messageService.createTextMessage.bind(this.messageService)}},{key:"getHistoryMessageList",get:function(){var e=this;return console.log("sdk getHistoryMessageList"),function(t){return e.messageService.getHistoryMessageList(t)}}},{key:"uuid",get:function(){return(36*Math.random()).toString(36).slice(2)+(new Date).getTime().toString()}}])&&function(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,r(n.key),n)}}(c.prototype,u),Object.defineProperty(c,"prototype",{writable:!1}),c}(/*#__PURE__*/function(){function t(){var t;this.events=((t={})[e.CbEvents.onReceiveMessage]=[],t[e.CbEvents.onReceiveMessages]=[],t)}var o=t.prototype;return o.emit=function(e,t){var o=this.events[e];return o&&o.forEach(function(e){return e(t)}),this},o.on=function(e,t){var o;return this.events[e]||(this.events[e]=[]),null==(o=this.events[e])||o.push(t),this},o.off=function(e,t){var o=this.events[e];if(o){var n=o.indexOf(t);n>-1&&(o.splice(n,1),0===o.length&&delete this.events[e])}return this},t}());e.GROUP_TYPE={ONE_ON_ONE:0,GROUP_CHAT:1,CUSTOMER_SERVICE:2},e.MessageStatus={NORMAL:0,EDITED:1,DELETED:2},e.SIMSDK=I});
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("event-source-polyfill")):"function"==typeof define&&define.amd?define(["exports","event-source-polyfill"],n):n((e||self).simSdkWeb={},e.eventSourcePolyfill)}(this,function(e,n){function t(){return t=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},t.apply(null,arguments)}function o(e,n){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,n){return e.__proto__=n,e},o(e,n)}function r(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}var i;e.ServiceName=void 0,(i=e.ServiceName||(e.ServiceName={})).MESSAGE="message",i.CONVERSATION="conversation",i.GROUP="group",i.USER="user";var s,a,c,u=/*#__PURE__*/function(){function e(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this._openHandler=null,this._errorHandler=null,this._messageHandler=null,this._customHandlers=new Map,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed}var t=e.prototype;return t.removeAllEventListeners=function(){var e=this;this.eventSource&&(this._openHandler&&this.eventSource.removeEventListener("open",this._openHandler),this._errorHandler&&this.eventSource.removeEventListener("error",this._errorHandler),this._messageHandler&&this.eventSource.removeEventListener("message",this._messageHandler),this.handlers.forEach(function(n,t){var o=e._customHandlers.get(t);o&&e.eventSource&&e.eventSource.removeEventListener(t,o)}))},t.subscribe=function(e,n){this.handlers.set(e,n);var t=function(e){try{var t=JSON.parse(e.data);n(t)}catch(e){console.error("Error parsing message data:",e)}};this._customHandlers.set(e,t),this.eventSource?this.eventSource.addEventListener(e,t):this.connect()},t.connect=function(){var e=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(t,o){try{e.eventSource=new n.EventSourcePolyfill(e.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+e.token}}),e._openHandler=function(n){console.log("SSE connection established"),e.connected=!0,e.reconnectAttempts>0&&e.onReconnectSuccessCallback&&e.onReconnectSuccessCallback(),e.reconnectAttempts=0,e.reconnectTimeout=5e3,t("SSE connect successful!")},e._errorHandler=function(n){console.error("SSE connection error:",n),e.connected=!1,401===n.status||n.statusText&&n.statusText.includes("Unauthorized")?(e.cleanup(),e.notifyConnectionClosed(!0)):e.handleReconnect(),e.connected||o(new Error("SSE connect error"))},e._messageHandler=function(n){try{console.log("SSE received message:",n.data);var t=JSON.parse(n.data);e.onMessageCallback&&e.onMessageCallback(t)}catch(e){console.error("Error parsing message:",e)}},e.eventSource.addEventListener("open",e._openHandler),e.eventSource.addEventListener("error",e._errorHandler),e.eventSource.addEventListener("message",e._messageHandler),e.handlers.forEach(function(n,t){var o=e._customHandlers.get(t);o&&e.eventSource&&e.eventSource.addEventListener(t,o)});var r=setTimeout(function(){e.connected||(o(new Error("Connection timeout")),e.handleReconnect())},1e4),i=e._openHandler;e._openHandler=function(e){clearTimeout(r),i(e)}}catch(n){console.error("Failed to create EventSource:",n),e.handleReconnect(),o(n)}})},t.notifyConnectionClosed=function(e){void 0===e&&(e=!1),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(),e?console.warn("SSE connection closed due to authentication error"):console.log("SSE connection closed")},t.handleReconnect=function(){var e=this;if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return console.error("Max reconnection attempts reached"),void this.destroySse();console.log("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,3e4),e.reconnectTimer=null,e.connect().catch(function(){})},this.reconnectTimeout)}},t.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},t.unsubscribe=function(){this.cleanup(),this.handlers.clear(),this._customHandlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},t.destroySse=function(){this.unsubscribe(),this.reconnectAttempts=this.maxReconnectAttempts,this.notifyConnectionClosed()},t.close=function(){this.destroySse(),console.log("SSE 连接已关闭")},t.isConnected=function(){return this.connected},e}();e.ErrorCode=void 0,(s=e.ErrorCode||(e.ErrorCode={}))[s.ConnectionEstablishmentFailed=1e4]="ConnectionEstablishmentFailed",s[s.ResourceLoadNotCompleteError=10004]="ResourceLoadNotCompleteError",s[s.UnknownError=10005]="UnknownError",s[s.LoginRepeatError=10102]="LoginRepeatError",e.RequestApi=void 0,(a=e.RequestApi||(e.RequestApi={})).Login="/chat/member/login",a.Logout="/chat/member/logout",a.CreateGroup="CreateGroup",a.GetGroupInfo="/chat/group/info",a.GetAllConversationList="/chat/group/list",a.CreateTextMessage="/chat/message/push",a.GetHistoryMessageList="/chat/message/pull",a.UploadFile="/chat/member/upload",e.CbEvents=void 0,(c=e.CbEvents||(e.CbEvents={})).OnConnected="OnConnected",c.OnDisconnected="OnDisconnected",c.OnReconnecting="OnReconnecting",c.OnReconnected="OnReconnected",c.OnReconnectFailed="OnReconnectFailed",c.OnNetworkChange="OnNetworkChange",c.OnReceiveMessage="OnReceiveMessage",c.OnReceiveMessages="OnReceiveMessages",c.OnMessageSent="OnMessageSent",c.OnMessageFailed="OnMessageFailed",c.OnMessageRevoked="OnMessageRevoked",c.OnMessageDeleted="OnMessageDeleted",c.OnMessageRead="OnMessageRead",c.OnTypingStatusUpdate="OnTypingStatusUpdate",c.OnUserStatusChange="OnUserStatusChange",c.OnKickedOffline="OnKickedOffline",c.OnUserTokenInvalid="OnUserTokenInvalid",c.OnUserTokenExpired="OnUserTokenExpired",c.OnForceOffline="OnForceOffline",c.OnUserInfoUpdated="OnUserInfoUpdated",c.OnGroupCreated="OnGroupCreated",c.OnGroupInfoUpdated="OnGroupInfoUpdated",c.OnGroupDissolved="OnGroupDissolved",c.OnJoinGroup="OnJoinGroup",c.OnLeaveGroup="OnLeaveGroup",c.OnGroupMemberJoined="OnGroupMemberJoined",c.OnGroupMemberLeft="OnGroupMemberLeft",c.OnGroupMemberKicked="OnGroupMemberKicked",c.OnGroupOwnerChanged="OnGroupOwnerChanged",c.OnGroupAdminAdded="OnGroupAdminAdded",c.OnGroupAdminRemoved="OnGroupAdminRemoved",c.OnGroupMemberMuted="OnGroupMemberMuted",c.OnGroupMemberUnmuted="OnGroupMemberUnmuted",c.OnGroupAllMemberMuted="OnGroupAllMemberMuted",c.OnGroupAllMemberUnmuted="OnGroupAllMemberUnmuted",c.OnConversationCreated="OnConversationCreated",c.OnConversationDeleted="OnConversationDeleted",c.OnConversationUpdated="OnConversationUpdated",c.OnUnreadCountChanged="OnUnreadCountChanged",c.OnConversationPinned="OnConversationPinned",c.OnConversationUnpinned="OnConversationUnpinned",c.OnConversationMuted="OnConversationMuted",c.OnConversationUnmuted="OnConversationUnmuted",c.OnPongConn="OnPongConn",c.OnPongReConn="OnPongReConn",c.OnPongIdle="OnPongIdle",c.OnError="OnError",c.OnWarning="OnWarning",c.OnLog="OnLog";var d,l,g,p,v,f,h,m,O,S,E,M,C,A,G,b,R,T,y,P,N,k,_=/*#__PURE__*/function(){function n(){var n;this.events=((n={})[e.CbEvents.OnReceiveMessage]=[],n[e.CbEvents.OnReceiveMessages]=[],n)}var t=n.prototype;return t.emit=function(e,n){var t=this.events[e];return t&&t.forEach(function(e){return e(n)}),this},t.on=function(e,n){var t;return this.events[e]||(this.events[e]=[]),null==(t=this.events[e])||t.push(n),this},t.off=function(e,n){var t=this.events[e];if(t){var o=t.indexOf(n);o>-1&&(t.splice(o,1),0===t.length&&delete this.events[e])}return this},n}();e.MessageReceiveOptType=void 0,(d=e.MessageReceiveOptType||(e.MessageReceiveOptType={}))[d.Nomal=0]="Nomal",d[d.NotReceive=1]="NotReceive",d[d.NotNotify=2]="NotNotify",e.AllowType=void 0,(l=e.AllowType||(e.AllowType={}))[l.Allowed=0]="Allowed",l[l.NotAllowed=1]="NotAllowed",e.GroupType=void 0,(g=e.GroupType||(e.GroupType={}))[g.Group=2]="Group",g[g.WorkingGroup=2]="WorkingGroup",e.GroupJoinSource=void 0,(p=e.GroupJoinSource||(e.GroupJoinSource={}))[p.Invitation=2]="Invitation",p[p.Search=3]="Search",p[p.QrCode=4]="QrCode",e.GroupMemberRole=void 0,(v=e.GroupMemberRole||(e.GroupMemberRole={}))[v.Nomal=20]="Nomal",v[v.Admin=60]="Admin",v[v.Owner=100]="Owner",e.GroupVerificationType=void 0,(f=e.GroupVerificationType||(e.GroupVerificationType={}))[f.ApplyNeedInviteNot=0]="ApplyNeedInviteNot",f[f.AllNeed=1]="AllNeed",f[f.AllNot=2]="AllNot",e.Platform=void 0,(h=e.Platform||(e.Platform={}))[h.iOS=1]="iOS",h[h.Android=2]="Android",h[h.Windows=3]="Windows",h[h.MacOSX=4]="MacOSX",h[h.Web=5]="Web",h[h.Linux=7]="Linux",h[h.AndroidPad=8]="AndroidPad",h[h.iPad=9]="iPad",e.LogLevel=void 0,(m=e.LogLevel||(e.LogLevel={}))[m.Debug=5]="Debug",m[m.Info=4]="Info",m[m.Warn=3]="Warn",m[m.Error=2]="Error",m[m.Fatal=1]="Fatal",m[m.Panic=0]="Panic",e.ApplicationHandleResult=void 0,(O=e.ApplicationHandleResult||(e.ApplicationHandleResult={}))[O.Unprocessed=0]="Unprocessed",O[O.Agree=1]="Agree",O[O.Reject=-1]="Reject",e.MessageType=void 0,(S=e.MessageType||(e.MessageType={}))[S.MESSAGE_TYPE_TEXT=0]="MESSAGE_TYPE_TEXT",S[S.TextMessage=101]="TextMessage",S[S.PictureMessage=102]="PictureMessage",S[S.VoiceMessage=103]="VoiceMessage",S[S.VideoMessage=104]="VideoMessage",S[S.FileMessage=105]="FileMessage",S[S.AtTextMessage=106]="AtTextMessage",S[S.MergeMessage=107]="MergeMessage",S[S.CardMessage=108]="CardMessage",S[S.LocationMessage=109]="LocationMessage",S[S.CustomMessage=110]="CustomMessage",S[S.TypingMessage=113]="TypingMessage",S[S.QuoteMessage=114]="QuoteMessage",S[S.FaceMessage=115]="FaceMessage",S[S.FriendAdded=1201]="FriendAdded",S[S.OANotification=1400]="OANotification",S[S.GroupCreated=1501]="GroupCreated",S[S.MemberQuit=1504]="MemberQuit",S[S.GroupOwnerTransferred=1507]="GroupOwnerTransferred",S[S.MemberKicked=1508]="MemberKicked",S[S.MemberInvited=1509]="MemberInvited",S[S.MemberEnter=1510]="MemberEnter",S[S.GroupDismissed=1511]="GroupDismissed",S[S.GroupMemberMuted=1512]="GroupMemberMuted",S[S.GroupMemberCancelMuted=1513]="GroupMemberCancelMuted",S[S.GroupMuted=1514]="GroupMuted",S[S.GroupCancelMuted=1515]="GroupCancelMuted",S[S.GroupAnnouncementUpdated=1519]="GroupAnnouncementUpdated",S[S.GroupNameUpdated=1520]="GroupNameUpdated",S[S.BurnMessageChange=1701]="BurnMessageChange",S[S.RevokeMessage=2101]="RevokeMessage",e.SessionType=void 0,(E=e.SessionType||(e.SessionType={}))[E.Single=1]="Single",E[E.Group=3]="Group",E[E.WorkingGroup=3]="WorkingGroup",E[E.Notification=4]="Notification",e.GroupStatus=void 0,(M=e.GroupStatus||(e.GroupStatus={}))[M.Nomal=0]="Nomal",M[M.Baned=1]="Baned",M[M.Dismissed=2]="Dismissed",M[M.Muted=3]="Muted",e.GroupAtType=void 0,(C=e.GroupAtType||(e.GroupAtType={}))[C.AtNormal=0]="AtNormal",C[C.AtMe=1]="AtMe",C[C.AtAll=2]="AtAll",C[C.AtAllAtMe=3]="AtAllAtMe",C[C.AtGroupNotice=4]="AtGroupNotice",e.GroupMemberFilter=void 0,(A=e.GroupMemberFilter||(e.GroupMemberFilter={}))[A.All=0]="All",A[A.Owner=1]="Owner",A[A.Admin=2]="Admin",A[A.Nomal=3]="Nomal",A[A.AdminAndNomal=4]="AdminAndNomal",A[A.AdminAndOwner=5]="AdminAndOwner",e.Relationship=void 0,(G=e.Relationship||(e.Relationship={}))[G.isBlack=0]="isBlack",G[G.isFriend=1]="isFriend",e.LoginStatus=void 0,(b=e.LoginStatus||(e.LoginStatus={}))[b.Logout=1]="Logout",b[b.Logging=2]="Logging",b[b.Logged=3]="Logged",e.OnlineState=void 0,(R=e.OnlineState||(e.OnlineState={}))[R.Online=1]="Online",R[R.Offline=0]="Offline",e.GroupMessageReaderFilter=void 0,(T=e.GroupMessageReaderFilter||(e.GroupMessageReaderFilter={}))[T.Readed=0]="Readed",T[T.UnRead=1]="UnRead",e.GROUP_TYPE=void 0,(y=e.GROUP_TYPE||(e.GROUP_TYPE={}))[y.ONE_ON_ONE=0]="ONE_ON_ONE",y[y.GROUP_CHAT=1]="GROUP_CHAT",y[y.CUSTOMER_SERVICE=2]="CUSTOMER_SERVICE",e.MSG_TYPE=void 0,(P=e.MSG_TYPE||(e.MSG_TYPE={}))[P.TEXT=0]="TEXT",P[P.IMAGE=1]="IMAGE",P[P.FILE=2]="FILE",P[P.VIDEO=3]="VIDEO",P[P.LINK=4]="LINK",P[P.GIF=5]="GIF",e.SSE_RESPONSE_TYPE=void 0,(N=e.SSE_RESPONSE_TYPE||(e.SSE_RESPONSE_TYPE={}))[N.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",N[N.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",N[N.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",N[N.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",e.MessageSendStatus=void 0,(k=e.MessageSendStatus||(e.MessageSendStatus={}))[k.Sending=1]="Sending",k[k.Succeed=2]="Succeed",k[k.Failed=3]="Failed";var w="undefined"!=typeof uni,L="undefined"!=typeof window,U=/*#__PURE__*/function(){function n(e){this.sdk=void 0,this.sdk=e}var t=n.prototype;return t.login=function(n){try{return Promise.resolve(this.sdk.sendRequest({data:n,url:e.RequestApi.Login,method:"POST"}))}catch(e){return Promise.reject(e)}},t.logout=function(){try{return Promise.resolve(this.sdk.sendRequest({data:{},url:e.RequestApi.Logout,method:"POST"}))}catch(e){return Promise.reject(e)}},n}(),I=/*#__PURE__*/function(){function n(e){this.sdk=void 0,this.sdk=e}var o=n.prototype;return o.sendMessage=function(e,n){try{var t=this;return Promise.resolve(function(o,r){try{var i=Promise.resolve(t.sdk.sendRequest({data:e,url:n,method:"POST"}))}catch(e){return r(e)}return i&&i.then?i.then(void 0,r):i}(0,function(e){throw console.error("Failed to send message",e),e}))}catch(e){return Promise.reject(e)}},o.createMessage=function(e,n,o,r,i){var s;void 0===o&&(o={});var a=t({},o,((s={msgType:e})[r]=i,s.status=0,s));return this.sendMessage(a,n)},o.createTextMessage=function(n,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.TEXT,e.RequestApi.CreateTextMessage,t,"text",n))}catch(e){return Promise.reject(e)}},o.createImageMessage=function(n,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.IMAGE,e.RequestApi.CreateTextMessage,t,"snapshot",n))}catch(e){return Promise.reject(e)}},o.getHistoryMessageList=function(n){var t=n.groupId,o=n.lastId,r=n.size,i=void 0===r?20:r;try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,lastId:o,size:i},url:e.RequestApi.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},n}(),F=/*#__PURE__*/function(){function n(e){this.sdk=void 0,this.sdk=e}return n.prototype.getConversations=function(){try{return Promise.resolve(this.sdk.sendRequest({data:void 0,url:e.RequestApi.GetAllConversationList,method:"GET"}))}catch(e){return Promise.reject(e)}},n}(),x=/*#__PURE__*/function(){function n(e){this.sdk=void 0,this.sdk=e}var t=n.prototype;return t.createGroup=function(n){try{return Promise.resolve(this.sdk.sendRequest({data:n,url:e.RequestApi.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},t.getGroupInfo=function(n){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:n},url:e.RequestApi.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},n}(),H=/*#__PURE__*/function(){function n(e){this.sdk=void 0,this.services={},this.sdk=e}var t=n.prototype;return t.get=function(e){return this.services[e]||(this.services[e]=this.createService(e)),this.services[e]},t.createService=function(n){switch(n){case e.ServiceName.USER:return new U(this.sdk);case e.ServiceName.MESSAGE:return new I(this.sdk);case e.ServiceName.CONVERSATION:return new F(this.sdk);case e.ServiceName.GROUP:return new x(this.sdk);default:throw new Error("Unknown service: "+n)}},t.reset=function(){this.services={}},n}();function j(e,n){try{var t=e()}catch(e){return n(e)}return t&&t.then?t.then(void 0,n):t}var D=[e.RequestApi.Logout,e.CbEvents.OnKickedOffline,e.CbEvents.OnUserTokenInvalid,e.CbEvents.OnUserTokenExpired],q=/*#__PURE__*/function(n){function t(t){var o;return void 0===t&&(t=!1),(o=n.call(this)||this).config={debug:!1},o.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},o.sseClient=void 0,o.serviceManager=void 0,o.sendRequest=function(e){return o.internalState.lastActivity=Date.now(),o.config.debug&&o.logRequest(e),function(e){try{return Promise.resolve(w?new Promise(function(n,t){uni.request({url:e.url,method:e.method||"GET",header:e.headers,data:e.data,success:function(e){return n(e.data)},fail:function(e){return t(e)}})}):function(){if(L)return console.log("isBrowser ",L),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url:o.config.apiAddr+e.url,method:e.method,headers:{"Content-Type":"application/json",Authorization:o.config.token?"Bearer "+o.config.token:""},data:e.data})},o.createRequestFunction=function(e,n){return function(t){return o.sendRequest({data:t,url:e,method:n})}},o.createRequestFunctionWithoutParams=function(e,n){return function(){return o.sendRequest({data:void 0,method:n,url:e})}},o.handleMessage=function(n){switch(o.config.debug&&console.log("handleMessage response",n),n.ev){case e.SSE_RESPONSE_TYPE.EVENT_MESSAGE_PUSH:1===n.dt.length?o.emit(e.CbEvents.OnReceiveMessage,n.dt[0]):o.emit(e.CbEvents.OnReceiveMessages,n.dt);break;case e.SSE_RESPONSE_TYPE.EVENT_PONG_CONN:o.internalState.isConnected=!0,o.emit(e.CbEvents.OnConnected);break;case e.SSE_RESPONSE_TYPE.EVENT_PONG_RE_CONN:o.internalState.isConnected=!0,o.emit(e.CbEvents.OnReconnected);break;case e.SSE_RESPONSE_TYPE.EVENT_PONG_IDLE:break;default:t=n.ev,Object.values(e.CbEvents).includes(t)?(o.emit(n.ev,n.dt),D.includes(n.ev)&&(o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1,o.sseClient&&(o.sseClient.close(),o.sseClient=void 0))):o.config.debug&&console.warn("Unknown SSE event type:",n.ev)}var t},o.handleReconnectSuccess=function(){o.config.username&&(o.internalState.isConnected=!0,o.internalState.reconnectAttempts=0,o.config.debug&&console.log("SSE reconnection successful"),o.emit(e.CbEvents.OnReconnected))},o.handleConnectionClosed=function(){o.internalState.isConnected=!1,o.config.debug&&console.log("SSE connection closed"),o.emit(e.CbEvents.OnDisconnected)},o.login=function(e){try{return o.sseClient?Promise.resolve("login repeat"):(o.config.apiAddr=e.apiAddr,o.config.token=e.token,o.config.debug&&(console.log("login params",e),console.log("apiAddr",o.config.apiAddr)),Promise.resolve(o.user.login(e)).then(function(n){var t=n.code,r=n.data;if(0!=t)return Promise.resolve("Login failed, Server error, error code is "+t);var i=o.config.apiAddr+"/chat/sse/conn?username="+e.username+"&token="+e.token+"&appKey="+e.appKey+"&random="+r;return o.config.username=e.username,o.config.token=e.token,o.config.appKey=e.appKey,o.sseClient=new u({url:i,onMessage:o.handleMessage,onReconnectSuccess:o.handleReconnectSuccess,onConnectionClosed:o.handleConnectionClosed,token:e.token}),j(function(){return Promise.resolve(o.sseClient.connect()).then(function(e){return o.internalState.isLoggedIn=!0,e})},function(e){return o.internalState.isLoggedIn=!1,Promise.reject(e.message)})}))}catch(e){return Promise.reject(e)}},o.logout=function(){try{return o.sseClient&&(o.sseClient.close(),o.sseClient=void 0),Promise.resolve(o.user.logout()).then(function(e){return o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1,o.config.username=void 0,o.config.token=void 0,e})}catch(e){return Promise.reject(e)}},o.internalUploadFile=function(n){try{return Promise.resolve(j(function(){var t=new FormData;return t.append("file",n),t.append("filename",n.name),Promise.resolve(fetch(""+o.config.apiAddr+e.RequestApi.UploadFile,{method:"POST",headers:{Authorization:o.config.token?"Bearer "+o.config.token:""},body:t})).then(function(e){if(!e.ok)throw new Error("Upload failed with status: "+e.status);return Promise.resolve(e.json()).then(function(e){var n;return{url:(null==(n=e.data)?void 0:n.url)||""}})})},function(e){return console.error("Upload failed:",e),{error:e}}))}catch(e){return Promise.reject(e)}},o.uploadFile=function(n){var t=n.file;try{return Promise.resolve(o.internalUploadFile(t)).then(function(n){var t,o=n.url,r=n.error;return{data:{url:void 0===o?"":o},msg:null!=(t=null==r?void 0:r.message)?t:"",code:r?e.ErrorCode.UnknownError:0}})}catch(e){return Promise.reject(e)}},o.createTextMessage=function(e){return o.message.createTextMessage(e)},o.createImageMessage=function(e){return o.message.createImageMessage(e)},o.getHistoryMessageList=function(e){return o.message.getHistoryMessageList(e)},o.getConversations=function(){return o.conversation.getConversations()},o.createGroup=function(e){return o.group.createGroup(e)},o.getGroupInfo=function(e){return o.group.getGroupInfo(e)},o.config.debug=t,o.serviceManager=new H(o),o}var i,s;s=n,(i=t).prototype=Object.create(s.prototype),i.prototype.constructor=i,o(i,s);var a,c,d=t.prototype;return d.configure=function(e){void 0!==e.debug&&(this.config.debug=e.debug),e.apiAddr&&(this.config.apiAddr=e.apiAddr),e.appKey&&(this.config.appKey=e.appKey)},d.setApiAddr=function(e){this.config.apiAddr=e},d.setAppKey=function(e){this.config.appKey=e},d.getService=function(e){return this.serviceManager.get(e)},d.isConnected=function(){return!!this.sseClient&&this.internalState.isConnected},d.isLoggedIn=function(){return this.internalState.isLoggedIn},d.logRequest=function(e){console.log("%c"+(new Date).toISOString().substring(11,19)+"%c SDK %c"+e.method+"%c "+e.url+"%c"+(e.data?"\n📦 Payload:":""),"color: #888; font-size: 11px;","background: #7CAEFF; color: white; font-weight: bold; font-size: 12px; border-radius: 4px; padding: 2px 6px; margin-right: 6px;","background: #4CAF50; color: white; font-weight: bold; font-size: 12px; border-radius: 4px; padding: 2px 6px; margin-right: 6px;","color: #0066cc; font-weight: bold;","color: #888;"),e.data&&Object.keys(e.data).length>0&&console.log("%c%s","color: #555; background: #f5f5f5; padding: 4px; border-radius: 4px; font-family: monospace;",JSON.stringify(e.data,null,2))},d.onMessage=function(n){var t=this;return this.on(e.CbEvents.OnReceiveMessage,n),function(){return t.off(e.CbEvents.OnReceiveMessage,n)}},d.onMessages=function(n){var t=this;return this.on(e.CbEvents.OnReceiveMessages,n),function(){return t.off(e.CbEvents.OnReceiveMessages,n)}},d.onConnectionChange=function(n){var t=this,o=function(){return n(!0)},r=function(){return n(!1)};return this.on(e.CbEvents.OnConnected,o),this.on(e.CbEvents.OnDisconnected,r),function(){t.off(e.CbEvents.OnConnected,o),t.off(e.CbEvents.OnDisconnected,r)}},d.onKickedOffline=function(n){var t=this;return this.on(e.CbEvents.OnKickedOffline,n),function(){return t.off(e.CbEvents.OnKickedOffline,n)}},a=t,(c=[{key:"message",get:function(){return this.getService(e.ServiceName.MESSAGE)}},{key:"conversation",get:function(){return this.getService(e.ServiceName.CONVERSATION)}},{key:"group",get:function(){return this.getService(e.ServiceName.GROUP)}},{key:"user",get:function(){return this.getService(e.ServiceName.USER)}},{key:"username",get:function(){return this.config.username}},{key:"uuid",get:function(){return(36*Math.random()).toString(36).slice(2)+(new Date).getTime().toString()}}])&&function(e,n){for(var t=0;t<n.length;t++){var o=n[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,r(o.key),o)}}(a.prototype,c),Object.defineProperty(a,"prototype",{writable:!1}),a}(_);e.MessageStatus={NORMAL:0,EDITED:1,DELETED:2},e.SIMSDK=q});
@@ -1,16 +1,28 @@
1
1
  import { RequestApi } from '../constant/api';
2
- import { AllowType, ApplicationHandleResult, GroupJoinSource, GroupMemberRole, GroupStatus, GroupType, GroupVerificationType, MessageReceiveOptType, MessageType, OnlineState, Platform, Relationship, SessionType, SSE_RESPONSE_TYPE } from './enum';
2
+ import { AllowType, ApplicationHandleResult, GROUP_TYPE, GroupJoinSource, GroupMemberRole, GroupStatus, GroupType, GroupVerificationType, MessageReceiveOptType, MessageType, MSG_TYPE, Relationship } from './enum';
3
3
  import { HttpMethod } from '../utils/request';
4
+ import { MessageService } from '../api/message';
5
+ import { ConversationService } from '../api/conversation';
6
+ import { GroupService } from '../api/group';
7
+ import { UserService } from '../api/user';
8
+ export type ServiceTypes = {
9
+ user: UserService;
10
+ message: MessageService;
11
+ conversation: ConversationService;
12
+ group: GroupService;
13
+ };
14
+ export declare enum ServiceName {
15
+ MESSAGE = "message",
16
+ CONVERSATION = "conversation",
17
+ GROUP = "group",
18
+ USER = "user"
19
+ }
4
20
  export interface Request {
5
21
  url: RequestApi;
6
22
  username?: string;
7
23
  data: Record<string, any> | undefined;
8
24
  method: HttpMethod;
9
25
  }
10
- export interface SseResponse {
11
- type: SSE_RESPONSE_TYPE;
12
- content: MessageReceiveOptType[];
13
- }
14
26
  export interface SseData {
15
27
  ev: number;
16
28
  dt: string;
@@ -30,13 +42,6 @@ export type Pagination = {
30
42
  offset: number;
31
43
  count: number;
32
44
  };
33
- export type MessageEntity = {
34
- type: string;
35
- offset: number;
36
- length: number;
37
- url?: string;
38
- info?: string;
39
- };
40
45
  export type PicBaseInfo = {
41
46
  uuid: string;
42
47
  type: string;
@@ -210,7 +215,7 @@ export type MessageItem = {
210
215
  userId: number;
211
216
  send: number;
212
217
  to: number;
213
- msgType: number;
218
+ msgType: MSG_TYPE;
214
219
  text?: string;
215
220
  link?: string;
216
221
  snapshot?: string;
@@ -227,7 +232,7 @@ export interface GroupInfoVO {
227
232
  /**
228
233
  * 聊天群类型: 0:一对一私聊 ,1:群聊,2:客服聊天
229
234
  */
230
- groupType: number;
235
+ groupType: GROUP_TYPE;
231
236
  createTime: number;
232
237
  updateTime: number;
233
238
  /**
@@ -296,207 +301,4 @@ export interface HistoryMessageResponse {
296
301
  avatarMap: AvatarMap;
297
302
  userId: number | null;
298
303
  }
299
- export type TextElem = {
300
- content: string;
301
- };
302
- export type CardElem = {
303
- userId: string;
304
- nickname: string;
305
- faceURL: string;
306
- ex: string;
307
- };
308
- export type AtTextElem = {
309
- text: string;
310
- atUserList: string[];
311
- atUsersInfo?: AtUsersInfoItem[];
312
- quoteMessage?: MessageItem;
313
- isAtSelf?: boolean;
314
- };
315
- export type NotificationElem = {
316
- detail: string;
317
- };
318
- export type AdvancedTextElem = {
319
- text: string;
320
- messageEntityList: MessageEntity[];
321
- };
322
- export type TypingElem = {
323
- msgTips: string;
324
- };
325
- export type CustomElem = {
326
- data: string;
327
- description: string;
328
- extension: string;
329
- };
330
- export type FileElem = {
331
- filePath: string;
332
- uuid: string;
333
- sourceUrl: string;
334
- fileName: string;
335
- fileSize: number;
336
- };
337
- export type FaceElem = {
338
- index: number;
339
- data: string;
340
- };
341
- export type LocationElem = {
342
- description: string;
343
- longitude: number;
344
- latitude: number;
345
- };
346
- export type MergeElem = {
347
- title: string;
348
- abstractList: string[];
349
- multiMessage: MessageItem[];
350
- messageEntityList: MessageEntity[];
351
- };
352
- export type OfflinePush = {
353
- title: string;
354
- desc: string;
355
- ex: string;
356
- iOSPushSound: string;
357
- iOSBadgeCount: boolean;
358
- };
359
- export type PictureElem = {
360
- sourcePath: string;
361
- sourcePicture: Picture;
362
- bigPicture: Picture;
363
- snapshotPicture: Picture;
364
- };
365
- export type AttachedInfoElem = {
366
- groupHasReadInfo: GroupHasReadInfo;
367
- isPrivateChat: boolean;
368
- isEncryption: boolean;
369
- inEncryptStatus: boolean;
370
- burnDuration: number;
371
- hasReadTime: number;
372
- notSenderNotificationPush: boolean;
373
- messageEntityList: MessageEntity[];
374
- uploadProgress: UploadProgress;
375
- };
376
- export type UploadProgress = {
377
- total: number;
378
- save: number;
379
- current: number;
380
- };
381
- export type GroupHasReadInfo = {
382
- hasReadCount: number;
383
- unreadCount: number;
384
- hasReadUserIDList: string[];
385
- groupMemberCount: number;
386
- };
387
- export type Picture = {
388
- uuid: string;
389
- type: string;
390
- size: number;
391
- width: number;
392
- height: number;
393
- url: string;
394
- };
395
- export type QuoteElem = {
396
- text: string;
397
- quoteMessage: MessageItem;
398
- };
399
- export type SoundElem = {
400
- uuid: string;
401
- soundPath: string;
402
- sourceUrl: string;
403
- dataSize: number;
404
- duration: number;
405
- };
406
- export type VideoElem = {
407
- videoPath: string;
408
- videoUUID: string;
409
- videoUrl: string;
410
- videoType: string;
411
- videoSize: number;
412
- duration: number;
413
- snapshotPath: string;
414
- snapshotUUID: string;
415
- snapshotSize: number;
416
- snapshotUrl: string;
417
- snapshotWidth: number;
418
- snapshotHeight: number;
419
- };
420
- export type AdvancedRevokeContent = {
421
- clientMsgID: string;
422
- revokeTime: number;
423
- revokerID: string;
424
- revokerNickname: string;
425
- revokerRole: number;
426
- seq: number;
427
- sessionType: SessionType;
428
- sourceMessageSendID: string;
429
- sourceMessageSendTime: number;
430
- sourceMessageSenderNickname: string;
431
- };
432
- export type RevokedInfo = {
433
- revokerID: string;
434
- revokerRole: number;
435
- clientMsgID: string;
436
- revokerNickname: string;
437
- revokeTime: number;
438
- sourceMessageSendTime: number;
439
- sourceMessageSendID: string;
440
- sourceMessageSenderNickname: string;
441
- sessionType: number;
442
- seq: number;
443
- ex: string;
444
- };
445
- export type ReceiptInfo = {
446
- userId: string;
447
- groupID: string;
448
- msgIDList: string[];
449
- readTime: number;
450
- msgFrom: number;
451
- contentType: MessageType;
452
- sessionType: SessionType;
453
- };
454
- export type SearchMessageResult = {
455
- totalCount: number;
456
- searchResultItems?: SearchMessageResultItem[];
457
- findResultItems?: SearchMessageResultItem[];
458
- };
459
- export type SearchMessageResultItem = {
460
- conversationID: string;
461
- messageCount: number;
462
- conversationType: SessionType;
463
- showName: string;
464
- faceURL: string;
465
- messageList: MessageItem[];
466
- };
467
- export type AdvancedGetMessageResult = {
468
- isEnd: boolean;
469
- lastMinSeq: number;
470
- errCode: number;
471
- errMsg: string;
472
- messageList: MessageItem[];
473
- };
474
- export type RtcInvite = {
475
- inviterUserID: string;
476
- inviteeUserIDList: string[];
477
- customData?: string;
478
- groupID: string;
479
- roomID: string;
480
- timeout: number;
481
- mediaType: string;
482
- sessionType: number;
483
- platformID: number;
484
- initiateTime?: number;
485
- busyLineUserIDList?: string[];
486
- };
487
- export type UserOnlineState = {
488
- platformIDs?: Platform[];
489
- status: OnlineState;
490
- userId: string;
491
- };
492
- export type GroupMessageReceiptInfo = {
493
- conversationID: string;
494
- groupMessageReadInfo: GroupMessageReadInfo[];
495
- };
496
- export type GroupMessageReadInfo = {
497
- clientMsgID: string;
498
- hasReadCount: number;
499
- unreadCount: number;
500
- readMembers: GroupMemberItem[];
501
- };
502
304
  export {};
@@ -126,11 +126,11 @@ export declare enum GroupMessageReaderFilter {
126
126
  Readed = 0,
127
127
  UnRead = 1
128
128
  }
129
- export declare const GROUP_TYPE: {
130
- ONE_ON_ONE: number;
131
- GROUP_CHAT: number;
132
- CUSTOMER_SERVICE: number;
133
- };
129
+ export declare enum GROUP_TYPE {
130
+ ONE_ON_ONE = 0,
131
+ GROUP_CHAT = 1,
132
+ CUSTOMER_SERVICE = 2
133
+ }
134
134
  export declare enum MSG_TYPE {
135
135
  TEXT = 0,
136
136
  IMAGE = 1,
@@ -1,4 +1,4 @@
1
- import type { AtUsersInfoItem, GroupItem, MessageItem, OfflinePush, PicBaseInfo, SelfUserInfo } from './entity';
1
+ import type { AtUsersInfoItem, GroupItem, MessageItem, PicBaseInfo, SelfUserInfo } from './entity';
2
2
  import type { GroupJoinSource, GroupMemberFilter, GroupMemberRole, MessageReceiveOptType, MessageType } from './enum';
3
3
  export type LoginParams = {
4
4
  apiAddr: string;
@@ -200,13 +200,6 @@ export type FaceMessageParams = {
200
200
  index: number;
201
201
  data: string;
202
202
  };
203
- export type SendMsgParams = {
204
- recvID: string;
205
- groupID: string;
206
- offlinePushInfo?: OfflinePush;
207
- message: MessageItem;
208
- isOnlineOnly?: boolean;
209
- };
210
203
  export type TypingUpdateParams = {
211
204
  recvID: string;
212
205
  msgTip: string;
@@ -6,6 +6,7 @@ interface SseOptions {
6
6
  maxRetries?: number;
7
7
  onMessage?: (response: SseData) => void;
8
8
  onReconnectSuccess?: () => void;
9
+ onConnectionClosed?: () => void;
9
10
  }
10
11
  declare class SseClient {
11
12
  private url;
@@ -19,14 +20,16 @@ declare class SseClient {
19
20
  private connected;
20
21
  private onMessageCallback?;
21
22
  private onReconnectSuccessCallback?;
23
+ private onConnectionClosedCallback?;
22
24
  constructor(options: SseOptions);
23
25
  private removeAllEventListeners;
26
+ private _openHandler;
27
+ private _errorHandler;
28
+ private _messageHandler;
29
+ private _customHandlers;
24
30
  subscribe(type: string, handler: Function): void;
25
31
  connect(): Promise<string>;
26
- private onOpen;
27
- private handleMessage;
28
- private onMessage;
29
- private onError;
32
+ private notifyConnectionClosed;
30
33
  private handleReconnect;
31
34
  private cleanup;
32
35
  unsubscribe(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sim-sdk-web",
3
- "version": "v1.0.17",
3
+ "version": "v1.0.19",
4
4
  "description": "Sim SDK for Web",
5
5
  "source": "src/index.ts",
6
6
  "main": "lib/index.js",