sim-sdk-web 1.0.35 → 1.0.37

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.
@@ -1,5 +1,5 @@
1
1
  import SIMSDK from './index';
2
- import { GroupInfoVO, GroupItem, MessageItem, ReqPageParam, ServerResponse } from '../types/entity';
2
+ import { GroupInfoVO, LatestMessagesUpdateResponse, MessageItem, ReqPageParam, ServerResponse } from '../types/entity';
3
3
  /**
4
4
  * 群组服务 - 负责群组创建、管理和成员操作
5
5
  */
@@ -10,12 +10,6 @@ export declare class GroupService {
10
10
  * @param sdk SIMSDK实例
11
11
  */
12
12
  constructor(sdk: SIMSDK);
13
- /**
14
- * 创建新群组
15
- * @param group 群组信息
16
- * @returns 创建结果Promise
17
- */
18
- createGroup(group: GroupItem): Promise<ServerResponse<GroupInfoVO>>;
19
13
  /**
20
14
  * 获取群组详细信息
21
15
  * @param groupId 群组ID
@@ -48,4 +42,10 @@ export declare class GroupService {
48
42
  * @returns Promise
49
43
  */
50
44
  getGroupLatestMessage(groups: Array<number>): Promise<ServerResponse<Map<number, MessageItem>>>;
45
+ /**
46
+ * 检测最新的群消息
47
+ * @param ttl
48
+ * @returns Promise
49
+ */
50
+ checkGroupLatestMessage(ttl: number): Promise<ServerResponse<LatestMessagesUpdateResponse>>;
51
51
  }
@@ -1,7 +1,8 @@
1
- import { GroupItem, HistoryMessageParam, ServerResponse, Request, MessageItem, ReqPageParam, MarkConversationReadParam, HistoryMessageResponse } from '../types/entity';
1
+ import { HistoryMessageParam, ServerResponse, Request, MessageItem, ReqPageParam, MarkConversationReadParam, HistoryMessageResponse } from '../types/entity';
2
2
  import type { LoginParams, UploadFileParams } from '../types/params';
3
3
  import { RequestApi } from '../constant/api';
4
4
  import Emitter from '../utils/emitter';
5
+ import { GroupType } from '../types/enum';
5
6
  import { HttpMethod } from '../utils/request';
6
7
  import { UserService } from './user';
7
8
  import { GroupService } from './group';
@@ -10,6 +11,7 @@ import { ConversationService } from './conversation';
10
11
  interface SDKOptions {
11
12
  debug?: boolean;
12
13
  apiAddr?: string;
14
+ ossApiAddr?: string;
13
15
  appKey?: string;
14
16
  }
15
17
  /**
@@ -21,10 +23,10 @@ declare class SIMSDK extends Emitter {
21
23
  private cacheManager;
22
24
  private sseClient?;
23
25
  private readonly serviceManager;
24
- private needCheckGroupMap;
25
26
  private conversationSyncTimer?;
26
27
  private syncInterval;
27
28
  private isSyncing;
29
+ private lastFetchTtl;
28
30
  /**
29
31
  * 创建SIMSDK实例
30
32
  * @param debug 是否启用调试模式
@@ -167,7 +169,8 @@ declare class SIMSDK extends Emitter {
167
169
  * @returns 上传结果Promise
168
170
  */
169
171
  uploadFile: ({ file }: UploadFileParams) => Promise<ServerResponse<{
170
- url: string;
172
+ originalUrl: string;
173
+ thumbnailUrl?: string;
171
174
  }>>;
172
175
  /**
173
176
  * 监听单条消息
@@ -196,78 +199,100 @@ declare class SIMSDK extends Emitter {
196
199
  /**
197
200
  * 发送文本消息
198
201
  * @param text 文本内容
202
+ * @param groupId 群组ID
203
+ * @param groupType 群组类型
199
204
  * @param params 附加消息参数,MessageItem类型的部分属性(不包含'text'字段)
200
205
  * @returns 创建结果Promise
201
206
  */
202
- sendTextMessage: (text: string, params?: Partial<Omit<MessageItem, "text">>) => Promise<ServerResponse<MessageItem[]>>;
207
+ sendTextMessage: (text: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, "text">>) => Promise<ServerResponse<MessageItem[]>>;
203
208
  /**
204
209
  * 发送图片消息
205
- * @param imageUrl 图片url
206
- * @param params 附加消息参数,MessageItem类型的部分属性(不包含'link'字段)
210
+ * @param link 图片链接
211
+ * @param snapshot 图片快照(缩略图等)
212
+ * @param groupId 群组ID
213
+ * @param groupType 群组类型
214
+ * @param params 附加消息参数,MessageItem类型的部分属性(不包含'link'和'snapshot'字段)
207
215
  * @returns 创建结果Promise
208
216
  */
209
- sendImageMessage: (imageUrl: string, params?: Partial<Omit<MessageItem, "link">>) => Promise<ServerResponse<MessageItem[]>>;
217
+ sendImageMessage: (link: string, snapshot: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, "link" | "snapshot">>) => Promise<ServerResponse<MessageItem[]>>;
210
218
  /**
211
219
  * 发送文件消息
212
220
  * @param fileUrl 文件URL
221
+ * @param groupId 群组ID
222
+ * @param groupType 群组类型
223
+ * @param params 附加消息参数,MessageItem类型的部分属性(不包含'link'字段)
224
+ * @returns 创建结果Promise
225
+ */
226
+ sendFileMessage: (fileUrl: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, "link">>) => Promise<ServerResponse<MessageItem[]>>;
227
+ /**
228
+ * 发送音频消息
229
+ * @param audioUrl 音频URL
230
+ * @param groupId 群组ID
231
+ * @param groupType 群组类型
213
232
  * @param params 附加消息参数,MessageItem类型的部分属性(不包含'link'字段)
214
233
  * @returns 创建结果Promise
215
234
  */
216
- sendFileMessage: (fileUrl: string, params?: Partial<Omit<MessageItem, "link">>) => Promise<ServerResponse<MessageItem[]>>;
235
+ sendAudioMessage: (audioUrl: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, "link">>) => Promise<ServerResponse<MessageItem[]>>;
217
236
  /**
218
237
  * 发送视频消息
219
238
  * @param videoUrl 视频URL
239
+ * @param groupId 群组ID
240
+ * @param groupType 群组类型
220
241
  * @param params 附加消息参数,MessageItem类型的部分属性(不包含'link'字段)
221
242
  * @returns 创建结果Promise
222
243
  */
223
- sendVideoMessage: (videoUrl: string, params?: Partial<Omit<MessageItem, "link">>) => Promise<ServerResponse<MessageItem[]>>;
244
+ sendVideoMessage: (videoUrl: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, "link">>) => Promise<ServerResponse<MessageItem[]>>;
224
245
  /**
225
246
  * 发送超链接消息
226
- * @param linkUrl 视频URL
247
+ * @param linkUrl 超链接URL
248
+ * @param groupId 群组ID
249
+ * @param groupType 群组类型
227
250
  * @param params 附加消息参数,MessageItem类型的部分属性(不包含'link'字段)
228
251
  * @returns 创建结果Promise
229
252
  */
230
- sendLinkMessage: (linkUrl: string, params?: Partial<Omit<MessageItem, "link">>) => Promise<ServerResponse<MessageItem[]>>;
253
+ sendLinkMessage: (linkUrl: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, "link">>) => Promise<ServerResponse<MessageItem[]>>;
231
254
  /**
232
255
  * 发送Gif消息
233
256
  * @param gifUrl gifURL
257
+ * @param groupId 群组ID
258
+ * @param groupType 群组类型
234
259
  * @param params 附加消息参数,MessageItem类型的部分属性(不包含'link'字段)
235
260
  * @returns 创建结果Promise
236
261
  */
237
- sendGifMessage: (gifUrl: string, params?: Partial<Omit<MessageItem, "link">>) => Promise<ServerResponse<MessageItem[]>>;
262
+ sendGifMessage: (gifUrl: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, "link">>) => Promise<ServerResponse<MessageItem[]>>;
238
263
  /**
239
264
  * 发送操作消息
240
265
  * @param optionText 操作消息内容
241
- * @param params 附加消息参数,MessageItem类型的部分属性(不包含'link'字段)
266
+ * @param groupId 群组ID
267
+ * @param groupType 群组类型
268
+ * @param params 附加消息参数,MessageItem类型的部分属性(不包含'text'字段)
242
269
  * @returns 创建结果Promise
243
270
  */
244
- sendOptionMessage: (optionText: string, params?: Partial<Omit<MessageItem, "text">>) => Promise<ServerResponse<MessageItem[]>>;
271
+ sendOptionMessage: (optionText: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, "text">>) => Promise<ServerResponse<MessageItem[]>>;
245
272
  /**
246
273
  * 发送emoji消息
247
274
  * @param emoji emoji消息内容
248
- * @param params 附加消息参数,MessageItem类型的部分属性(不包含'link'字段)
275
+ * @param groupId 群组ID
276
+ * @param groupType 群组类型
277
+ * @param params 附加消息参数,MessageItem类型的部分属性(不包含'text'字段)
249
278
  * @returns 创建结果Promise
250
279
  */
251
- sendEmojiMessage: (emoji: string, params?: Partial<Omit<MessageItem, "text">>) => Promise<ServerResponse<MessageItem[]>>;
280
+ sendEmojiMessage: (emoji: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, "text">>) => Promise<ServerResponse<MessageItem[]>>;
252
281
  /**
253
282
  * 发送自定义消息
254
- * @param emoji 自定义消息内容
255
- * @param params 附加消息参数,MessageItem类型的部分属性(不包含'link'字段)
283
+ * @param customText 自定义消息内容
284
+ * @param groupId 群组ID
285
+ * @param groupType 群组类型
286
+ * @param params 附加消息参数,MessageItem类型的部分属性(不包含'text'字段)
256
287
  * @returns 创建结果Promise
257
288
  */
258
- sendCustomMessage: (emoji: string, params?: Partial<Omit<MessageItem, "text">>) => Promise<ServerResponse<MessageItem[]>>;
289
+ sendCustomMessage: (customText: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, "text">>) => Promise<ServerResponse<MessageItem[]>>;
259
290
  /**
260
291
  * 获取历史消息列表
261
292
  * @param params
262
293
  * @returns 历史消息
263
294
  */
264
295
  getHistoryMessageList: (params: HistoryMessageParam) => Promise<ServerResponse<HistoryMessageResponse>>;
265
- /**
266
- * 创建群组
267
- * @param group 群组信息
268
- * @returns 创建结果
269
- */
270
- createGroup: (group: GroupItem) => Promise<ServerResponse<import("../types/entity").GroupInfoVO>>;
271
296
  /**
272
297
  * 获取群组信息
273
298
  * @param groupId 群组ID
@@ -1,5 +1,6 @@
1
1
  import { HistoryMessageParam, HistoryMessageResponse, MessageItem, ServerResponse } from '../types/entity';
2
2
  import SIMSDK from './index';
3
+ import { GroupType } from '../types/enum';
3
4
  /**
4
5
  * 消息服务 - 负责消息创建、发送和历史记录
5
6
  */
@@ -22,74 +23,103 @@ export declare class MessageService {
22
23
  * @param type 消息类型
23
24
  * @param url API端点
24
25
  * @param additionalParams 附加参数
25
- * @param contentKey 内容键名
26
- * @param content 消息内容
26
+ * @param content 内容对象,包含多个字段
27
27
  * @returns 创建结果Promise
28
28
  */
29
29
  private createMessage;
30
30
  /**
31
31
  * 创建文本消息
32
32
  * @param text 文本内容
33
+ * @param groupId 群组ID
34
+ * @param groupType 群组类型
33
35
  * @param params 附加参数
34
36
  * @returns 创建结果Promise
35
37
  */
36
- createTextMessage(text: string, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse<MessageItem[]>>;
38
+ createTextMessage(text: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse<MessageItem[]>>;
37
39
  /**
38
40
  * 创建图片消息
39
- * @param imageUrl 图片URL
41
+ * @param link 图片链接
42
+ * @param snapshot 图片快照URL
43
+ * @param groupId 群组ID
44
+ * @param groupType 群组类型
40
45
  * @param params 附加参数
41
46
  * @returns 创建结果Promise
42
47
  */
43
- createImageMessage(imageUrl: string, params?: Partial<Omit<MessageItem, 'link'>>): Promise<ServerResponse<MessageItem[]>>;
48
+ createImageMessage(link: string, // 图片链接
49
+ snapshot: string, // 图片快照
50
+ groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, 'link' | 'snapshot'>>): Promise<ServerResponse<MessageItem[]>>;
44
51
  /**
45
52
  * 创建文件消息
46
53
  * @param fileUrl 文件URL
54
+ * @param groupId 群组ID
55
+ * @param groupType 群组类型
47
56
  * @param params 附加参数
48
57
  * @returns 创建结果Promise
49
58
  */
50
- createFileMessage(fileUrl: string, params?: Partial<Omit<MessageItem, 'link'>>): Promise<ServerResponse<MessageItem[]>>;
59
+ createFileMessage(fileUrl: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, 'link'>>): Promise<ServerResponse<MessageItem[]>>;
60
+ /**
61
+ * 创建音频消息
62
+ * @param audioUrl 音频URL
63
+ * @param groupId 群组ID
64
+ * @param groupType 群组类型
65
+ * @param params 附加参数
66
+ * @returns 创建结果Promise
67
+ */
68
+ createAudioMessage(audioUrl: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, 'link'>>): Promise<ServerResponse<MessageItem[]>>;
51
69
  /**
52
70
  * 创建视频消息
53
71
  * @param videoUrl 视频URL
72
+ * @param groupId 群组ID
73
+ * @param groupType 群组类型
54
74
  * @param params 附加参数
55
75
  * @returns 创建结果Promise
56
76
  */
57
- createVideoMessage(videoUrl: string, params?: Partial<Omit<MessageItem, 'link'>>): Promise<ServerResponse<MessageItem[]>>;
77
+ createVideoMessage(videoUrl: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, 'link'>>): Promise<ServerResponse<MessageItem[]>>;
58
78
  /**
59
79
  * 创建超链接消息
60
80
  * @param linkUrl 超链接
81
+ * @param groupId 群组ID
82
+ * @param groupType 群组类型
61
83
  * @param params 附加参数
62
84
  * @returns 创建结果Promise
63
85
  */
64
- createLinkMessage(linkUrl: string, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse<MessageItem[]>>;
86
+ createLinkMessage(linkUrl: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse<MessageItem[]>>;
65
87
  /**
66
88
  * 创建Gif消息
67
89
  * @param gifUrl gifURL
90
+ * @param groupId 群组ID
91
+ * @param groupType 群组类型
68
92
  * @param params 附加参数
69
93
  * @returns 创建结果Promise
70
94
  */
71
- createGifMessage(gifUrl: string, params?: Partial<Omit<MessageItem, 'link'>>): Promise<ServerResponse<MessageItem[]>>;
95
+ createGifMessage(gifUrl: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, 'link'>>): Promise<ServerResponse<MessageItem[]>>;
72
96
  /**
73
97
  * 创建操作消息
74
98
  * @param optionText 操作消息内容
99
+ * @param groupId 群组ID
100
+ * @param groupType 群组类型
75
101
  * @param params 附加参数
76
102
  * @returns 创建结果Promise
77
103
  */
78
- createOptionMessage(optionText: string, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse<MessageItem[]>>;
104
+ createOptionMessage(optionText: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse<MessageItem[]>>;
79
105
  /**
80
106
  * 创建emoji消息
81
107
  * @param emoji emoji消息内容
108
+ * @param groupId 群组ID
109
+ * @param groupType 群组类型
82
110
  * @param params 附加参数
83
111
  * @returns 创建结果Promise
84
112
  */
85
- createEmojiMessage(emoji: string, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse<MessageItem[]>>;
113
+ createEmojiMessage(emoji: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse<MessageItem[]>>;
86
114
  /**
87
115
  * 创建自定义消息
88
116
  * @param customText 自定义消息内容
117
+ * @param groupId 群组ID
118
+ * @param groupType 群组类型
89
119
  * @param params 附加参数
90
120
  * @returns 创建结果Promise
91
121
  */
92
- createCustomMessage(customText: string, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse<MessageItem[]>>;
122
+ createCustomMessage(customText: string, groupId: number, groupType: GroupType, params?: Partial<Omit<MessageItem, 'text'>>): Promise<ServerResponse<MessageItem[]>>;
93
123
  /**
94
124
  * 获取历史消息列表
95
125
  * @param params 查询参数
@@ -15,6 +15,7 @@ export declare enum RequestApi {
15
15
  MarkConversationMessageAsRead = "/chat/group/lastRead",
16
16
  UpdateLatestMessage = "/chat/group/updateLatestMessage",
17
17
  GetLatestGroupChats = "/chat/group/latestGroupChats",
18
+ CheckLatestMessages = "/chat/group/checkLatestMessages",
18
19
  CreateTextMessage = "/chat/message/push",
19
20
  GetHistoryMessageList = "/chat/message/pull",
20
21
  UploadFile = "/chat/img/upload"
package/lib/index.es.js CHANGED
@@ -1 +1 @@
1
- import{EventSourcePolyfill as e}from"event-source-polyfill";function n(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,o=Array(n);t<n;t++)o[t]=e[t];return o}function t(e,t){var o="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(o)return(o=o.call(e)).next.bind(o);if(Array.isArray(e)||(o=function(e,t){if(e){if("string"==typeof e)return n(e,t);var o={}.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?n(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){o&&(e=o);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(){return o=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},o.apply(null,arguments)}function r(e,n){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,n){return e.__proto__=n,e},r(e,n)}function s(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;!function(e){e.MESSAGE="message",e.CONVERSATION="conversation",e.GROUP="group",e.USER="user"}(i||(i={}));var a,c,u,d=/*#__PURE__*/function(){function n(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=2e3*Math.random()+3e3,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||2e3*Math.random()+3e3,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),s=n._openHandler;n._openHandler=function(e){clearTimeout(r),s(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"}(a||(a={})),function(e){e.Login="/chat/member/login",e.Logout="/chat/member/logout",e.CreateGroup="CreateGroup",e.GetGroupInfo="/chat/group/groupInfo",e.GetGroupMembers="/chat/group/groupMembers",e.JoinGroup="/chat/group/joinGroup",e.GetAllConversationList="/chat/group/list",e.MarkConversationMessageAsRead="/chat/group/lastRead",e.UpdateLatestMessage="/chat/group/updateLatestMessage",e.GetLatestGroupChats="/chat/group/latestGroupChats",e.CreateTextMessage="/chat/message/push",e.GetHistoryMessageList="/chat/message/pull",e.UploadFile="/chat/img/upload"}(c||(c={})),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.OnMessagesListLoaded="OnMessagesListLoaded",e.OnActiveConversationSync="OnActiveConversationSync",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.OnConversationListUpdated="OnConversationListUpdated",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"}(u||(u={}));var l,g,h,v,f,p,m,C,M,S,O,E,y,A,G,I,b,T,P,R,N,k,L=/*#__PURE__*/function(){function e(){var e;this.events=((e={})[u.OnReceiveMessage]=[],e[u.OnReceiveMessages]=[],e[u.OnConversationListUpdated]=[],e[u.OnMessagesListLoaded]=[],e[u.OnActiveConversationSync]=[],e[u.OnConnected]=[],e[u.OnDisconnected]=[],e[u.OnReconnected]=[],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"}(l||(l={})),function(e){e[e.Allowed=0]="Allowed",e[e.NotAllowed=1]="NotAllowed"}(g||(g={})),function(e){e[e.Group=2]="Group",e[e.WorkingGroup=2]="WorkingGroup"}(h||(h={})),function(e){e[e.Invitation=2]="Invitation",e[e.Search=3]="Search",e[e.QrCode=4]="QrCode"}(v||(v={})),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"}(p||(p={})),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"}(m||(m={})),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"}(C||(C={})),function(e){e[e.Unprocessed=0]="Unprocessed",e[e.Agree=1]="Agree",e[e.Reject=-1]="Reject"}(M||(M={})),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"}(S||(S={})),function(e){e[e.Single=1]="Single",e[e.Group=3]="Group",e[e.WorkingGroup=3]="WorkingGroup",e[e.Notification=4]="Notification"}(O||(O={})),function(e){e[e.Nomal=0]="Nomal",e[e.Baned=1]="Baned",e[e.Dismissed=2]="Dismissed",e[e.Muted=3]="Muted"}(E||(E={})),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"}(y||(y={})),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"}(G||(G={})),function(e){e[e.Logout=1]="Logout",e[e.Logging=2]="Logging",e[e.Logged=3]="Logged"}(I||(I={})),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"}(T||(T={})),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"}(P||(P={})),function(e){e[e.TEXT=0]="TEXT",e[e.IMAGE=1]="IMAGE",e[e.FILE=2]="FILE",e[e.AUDIO=3]="AUDIO",e[e.VIDEO=4]="VIDEO",e[e.LINK=5]="LINK",e[e.GIF=6]="GIF",e[e.OPTION=7]="OPTION",e[e.EMOJI=8]="EMOJI",e[e.CUSTOM=100]="CUSTOM"}(R||(R={})),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"}(k||(k={}));var U={NORMAL:0,EDITED:1,DELETED:2},_="undefined"!=typeof uni,w="undefined"!=typeof window,j="simsdk_",F={CONVERSATIONS:j+"conversations",GROUP_MESSAGES:j+"group_messages",USER_INFO:j+"user_info",META_INFO:j+"meta"},x={MAX_CONVERSATIONS:100,MAX_GROUP_MESSAGES:200,STORAGE_CHUNK_SIZE:512e3,CACHE_TTL:6048e5,EXPIRY_CHECK_INTERVAL:18e5},D=/*#__PURE__*/function(){function e(e){var n=void 0===e?{}:e,t=n.persistEnabled,r=void 0===t||t,s=n.debug,i=void 0!==s&&s,a=n.config,c=void 0===a?{}:a;this.conversationCache=[],this.groupMessageCache={},this.accessTimeRecord={},this.userInfo={},this.activeConversation=void 0,this.metaInfo={},this.persistEnabled=void 0,this.debug=void 0,this.config=void 0,this.cleanupTimer=void 0,this.persistEnabled=r,this.debug=i,this.config=o({},x,c)}var n=e.prototype;return n.initialize=function(e){this.userInfo.username=e,this.persistEnabled&&this.loadFromStorage(),this.setupCleanupInterval(),this.debug&&(console.log("Cache initialized for user:",e),console.log("Loaded conversations:",this.conversationCache.length),console.log("Loaded group messages for groups:",Object.keys(this.groupMessageCache).length))},n.clear=function(){this.conversationCache=[],this.groupMessageCache={},this.accessTimeRecord={},this.persistEnabled&&this.clearStorage(),this.debug&&console.log("Cache cleared")},n.getConversations=function(){return[].concat(this.conversationCache)},n.clearConversationUnread=function(e){var n=this.conversationCache.find(function(n){return n.id===e});n&&(n.unreadCount=0,this.persistEnabled&&this.saveConversationsToStorage())},n.clearAllConversationUnread=function(){this.conversationCache.forEach(function(e){e.unreadCount>0&&(e.unreadCount=0)}),this.persistEnabled&&this.saveConversationsToStorage()},n.getActiveConversation=function(){return this.activeConversation},n.setConversations=function(e){this.conversationCache=e.length>this.config.MAX_CONVERSATIONS?e.slice(0,this.config.MAX_CONVERSATIONS):[].concat(e),this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage()},n.updateConversation=function(e){var n=this.conversationCache.findIndex(function(n){return n.id===e.id});n>=0?this.conversationCache[n]=o({},e):(this.conversationCache.push(o({},e)),this.conversationCache.length>this.config.MAX_CONVERSATIONS&&this.enforceConversationLimit()),this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage()},n.updateConversationWithMessage=function(e,n){var t,o=e.groupId;if(!o)return!1;var r=this.conversationCache.findIndex(function(e){return e.id===o});if(-1===r)return!1;var s=this.conversationCache[r],i=(null==(t=s.latest)?void 0:t.msgId)||0;return this.activeConversation&&this.activeConversation.id===o?s.unreadCount=0:n!==e.username&&(s.unreadCount+=e.msgId>i?e.msgId-i:1),s.latest=e,this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage(),!0},n.getGroupMessages=function(e){return this.recordAccess(e),!this.groupMessageCache[e]&&this.persistEnabled&&this.loadGroupMessagesFromStorage(e),this.groupMessageCache[e]||[]},n.addGroupMessage=function(e){if(e.groupId){this.recordAccess(e.groupId),this.groupMessageCache[e.groupId]||(this.groupMessageCache[e.groupId]=[]);var n=this.groupMessageCache[e.groupId].findIndex(function(n){return n.msgId===e.msgId});n>=0?this.groupMessageCache[e.groupId][n]=e:this.groupMessageCache[e.groupId].push(e),this.sortGroupMessages(e.groupId),this.limitGroupMessageCache(e.groupId),this.enforceMemoryLimits(),this.persistEnabled&&this.saveGroupMessagesToStorage(e.groupId)}},n.addGroupMessages=function(e){for(var n,o=this,r={},s=t(e);!(n=s()).done;){var i=n.value;i.groupId&&(r[i.groupId]||(r[i.groupId]=[]),r[i.groupId].push(i))}for(var a=0,c=Object.entries(r);a<c.length;a++){var u=c[a],d=u[0],l=u[1];this.recordAccess(Number(d)),this.groupMessageCache[d]||(this.groupMessageCache[d]=[]);for(var g,h=function(){var e=g.value,n=o.groupMessageCache[d].findIndex(function(n){return n.msgId===e.msgId});n>=0?o.groupMessageCache[d][n]=e:o.groupMessageCache[d].push(e)},v=t(l);!(g=v()).done;)h();this.sortGroupMessages(Number(d)),this.limitGroupMessageCache(Number(d)),this.persistEnabled&&this.saveGroupMessagesToStorage(Number(d))}this.enforceMemoryLimits()},n.sortConversations=function(){this.conversationCache.sort(function(e,n){var t,o,r=(null==(t=e.latest)?void 0:t.createTime)||0;return((null==(o=n.latest)?void 0:o.createTime)||0)-r})},n.sortGroupMessages=function(e){this.groupMessageCache[e]&&this.groupMessageCache[e].sort(function(e,n){return(n.createTime||0)-(e.createTime||0)})},n.limitGroupMessageCache=function(e){this.groupMessageCache[e]&&this.groupMessageCache[e].length>this.config.MAX_GROUP_MESSAGES&&(this.groupMessageCache[e]=this.groupMessageCache[e].slice(0,this.config.MAX_GROUP_MESSAGES))},n.recordAccess=function(e){this.accessTimeRecord[e]=Date.now()},n.enforceConversationLimit=function(){this.conversationCache.length<=this.config.MAX_CONVERSATIONS||(this.sortConversations(),this.conversationCache=this.conversationCache.slice(0,this.config.MAX_CONVERSATIONS))},n.enforceMemoryLimits=function(){var e=this,n=Object.keys(this.groupMessageCache).length;if(n>10){var t=Object.keys(this.groupMessageCache).map(function(n){return{groupId:n,lastAccess:e.accessTimeRecord[n]||0}});t.sort(function(e,n){return e.lastAccess-n.lastAccess});for(var o=Math.ceil(.3*n),r=0;r<o&&r<t.length;r++){var s=t[r].groupId;this.persistEnabled&&(delete this.groupMessageCache[s],this.debug&&console.log("Released memory for inactive group: "+s))}}},n.setupCleanupInterval=function(){var e=this;this.cleanupTimer&&clearInterval(this.cleanupTimer),this.cleanupTimer=window.setInterval(function(){e.cleanupExpiredData()},this.config.EXPIRY_CHECK_INTERVAL)},n.cleanupExpiredData=function(){var e=Date.now();this.metaInfo.lastCleanup=e,this.debug&&console.log("Running cache cleanup");for(var n=0,t=Object.entries(this.accessTimeRecord);n<t.length;n++){var o=t[n],r=o[0];e-o[1]>this.config.CACHE_TTL&&(delete this.accessTimeRecord[r],this.groupMessageCache[r]&&delete this.groupMessageCache[r])}this.persistEnabled&&this.saveMetaInfoToStorage()},n.loadFromStorage=function(){var e=this;try{var n=localStorage.getItem(F.META_INFO);n&&(this.metaInfo=JSON.parse(n));var t=localStorage.getItem(F.CONVERSATIONS);t&&(this.conversationCache=JSON.parse(t)),Object.keys(localStorage).filter(function(e){return e.startsWith(F.GROUP_MESSAGES+".")}).forEach(function(n){var t=n.split(".")[1];t&&!isNaN(Number(t))&&(e.accessTimeRecord[t]=0)});var o=localStorage.getItem(F.USER_INFO);o&&(this.userInfo=JSON.parse(o))}catch(e){console.error("Failed to load cache from storage:",e),this.clearStorage()}},n.loadGroupMessagesFromStorage=function(e){try{for(var n=[],t=0,o=!0;o;){var r=localStorage.getItem(F.GROUP_MESSAGES+"."+e+(t>0?"."+t:""));if(r){var s=JSON.parse(r);n=n.concat(s),t++}else o=!1}n.length>0&&(this.groupMessageCache[e]=n,this.sortGroupMessages(e),this.limitGroupMessageCache(e),this.debug&&console.log("Loaded "+n.length+" messages for group "+e+" from storage"))}catch(n){console.error("Failed to load group messages for "+e+" from storage:",n)}},n.saveConversationsToStorage=function(){try{localStorage.setItem(F.CONVERSATIONS,JSON.stringify(this.conversationCache))}catch(e){console.error("Failed to save conversations to storage:",e),this.handleStorageError()}},n.saveGroupMessagesToStorage=function(e){try{if(void 0!==e){var n=this.groupMessageCache[e];if(!n||0===n.length)return;var t=JSON.stringify(n);if(t.length>this.config.STORAGE_CHUNK_SIZE){this.clearGroupMessageStorage(e);for(var o=n.length,r=Math.max(1,Math.floor(this.config.STORAGE_CHUNK_SIZE/(t.length/o))),s=0;s<o;s+=r){var i=n.slice(s,s+r),a=Math.floor(s/r);localStorage.setItem(F.GROUP_MESSAGES+"."+e+(a>0?"."+a:""),JSON.stringify(i))}}else localStorage.setItem(F.GROUP_MESSAGES+"."+e,t)}else for(var c=0,u=Object.keys(this.groupMessageCache);c<u.length;c++)this.saveGroupMessagesToStorage(Number(u[c]))}catch(e){console.error("Failed to save group messages to storage:",e),this.handleStorageError()}},n.saveMetaInfoToStorage=function(){try{localStorage.setItem(F.META_INFO,JSON.stringify(this.metaInfo))}catch(e){console.error("Failed to save meta info to storage:",e)}},n.handleStorageError=function(){for(var e=this,n=Object.keys(this.accessTimeRecord).map(function(n){return{groupId:n,lastAccess:e.accessTimeRecord[n]||0}}).sort(function(e,n){return e.lastAccess-n.lastAccess}),t=Math.max(1,Math.floor(.2*n.length)),o=0;o<t&&o<n.length;o++)this.clearGroupMessageStorage(Number(n[o].groupId)),this.debug&&console.log("Cleared storage for group "+n[o].groupId+" due to quota exceeded")},n.clearGroupMessageStorage=function(e){for(var n=0,t=!0;t;){var o=F.GROUP_MESSAGES+"."+e+(n>0?"."+n:"");null!==localStorage.getItem(o)?(localStorage.removeItem(o),n++):t=!1}},n.saveUserInfoToStorage=function(){try{localStorage.setItem(F.USER_INFO,JSON.stringify(this.userInfo))}catch(e){console.error("Failed to save user info to storage:",e)}},n.clearStorage=function(){try{for(var e,n=t(Object.keys(localStorage).filter(function(e){return e.startsWith(j)}));!(e=n()).done;)localStorage.removeItem(e.value)}catch(e){console.error("Failed to clear storage:",e)}},n.destroy=function(){this.cleanupTimer&&(clearInterval(this.cleanupTimer),this.cleanupTimer=void 0),this.debug&&console.log("Cache manager destroyed")},n.markConversationAsActive=function(e){this.accessTimeRecord[e]=Date.now();var n=this.conversationCache.find(function(n){return n.id===e});return!!n&&(this.activeConversation=o({},n),!0)},n.resetActiveConversation=function(){var e,n=!(null==(e=this.activeConversation)||!e.id);return this.activeConversation=void 0,this.debug&&n&&console.log("Active conversation reset"),n},e}(),K=/*#__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:c.Login,method:"POST"}))}catch(e){return Promise.reject(e)}},n.logout=function(){try{return Promise.resolve(this.sdk.sendRequest({data:{},url:c.Logout,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),H=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var n=e.prototype;return n.sendMessage=function(e,n){try{var t=this;return Promise.resolve(function(o,r){try{var s=Promise.resolve(t.sdk.sendRequest({data:e,url:n,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)}},n.createMessage=function(e,n,t,r,s){var i;void 0===t&&(t={});var a=o({},t,((i={msgType:e})[r]=s,i.status=0,i));return this.sendMessage(a,n)},n.createTextMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(R.TEXT,c.CreateTextMessage,n,"text",e))}catch(e){return Promise.reject(e)}},n.createImageMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(R.IMAGE,c.CreateTextMessage,n,"link",e))}catch(e){return Promise.reject(e)}},n.createFileMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(R.FILE,c.CreateTextMessage,n,"link",e))}catch(e){return Promise.reject(e)}},n.createVideoMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(R.VIDEO,c.CreateTextMessage,n,"link",e))}catch(e){return Promise.reject(e)}},n.createLinkMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(R.LINK,c.CreateTextMessage,n,"text",e))}catch(e){return Promise.reject(e)}},n.createGifMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(R.GIF,c.CreateTextMessage,n,"link",e))}catch(e){return Promise.reject(e)}},n.createOptionMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(R.OPTION,c.CreateTextMessage,n,"text",e))}catch(e){return Promise.reject(e)}},n.createEmojiMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(R.EMOJI,c.CreateTextMessage,n,"text",e))}catch(e){return Promise.reject(e)}},n.createCustomMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(R.CUSTOM,c.CreateTextMessage,n,"text",e))}catch(e){return Promise.reject(e)}},n.getHistoryMessageList=function(e){var n=e.groupId,t=e.lastId,o=e.size,r=void 0===o?100:o;try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:n,lastId:t,size:r},url:c.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),V=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var n=e.prototype;return n.getConversations=function(e){try{var n=this;return Promise.resolve(n.sdk.sendRequest({data:e,url:c.GetAllConversationList,method:"GET"})).then(function(e){return e.data.records=e.data.records.map(n.normalizeConversation),e})}catch(e){return Promise.reject(e)}},n.markConversationRead=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:c.MarkConversationMessageAsRead,method:"GET"}))}catch(e){return Promise.reject(e)}},n.normalizeConversation=function(e){var n,t,o,r;return{id:e.id,name:e.name||"",groupType:e.groupType||0,avatar:e.avatar||"",status:null!=(n=e.status)?n:1,latest:null!=(t=e.latest)?t:{},unreadCount:null!=(o=e.unreadCount)?o:0,draftText:null!=(r=e.draftText)?r:""}},e}(),z=/*#__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:c.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},n.getGroupInfo=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:e},url:c.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getGroupMembers=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:c.GetGroupMembers,method:"GET"}))}catch(e){return Promise.reject(e)}},n.joinGroup=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:e},url:c.JoinGroup,method:"GET"}))}catch(e){return Promise.reject(e)}},n.updateLatestMessage=function(e){try{var n=Object.fromEntries(e.entries());return Promise.resolve(this.sdk.sendRequest({data:{latestMessage:n},url:c.UpdateLatestMessage,method:"POST"}))}catch(e){return Promise.reject(e)}},n.getGroupLatestMessage=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groups:e},url:c.GetLatestGroupChats,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),q=/*#__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 i.USER:return new K(this.sdk);case i.MESSAGE:return new H(this.sdk);case i.CONVERSATION:return new V(this.sdk);case i.GROUP:return new z(this.sdk);default:throw new Error("Unknown service: "+e)}},n.reset=function(){this.services={}},e}();function J(e,n){try{var t=e()}catch(e){return n(e)}return t&&t.then?t.then(void 0,n):t}var W=[c.Logout,u.OnKickedOffline,u.OnUserTokenInvalid,u.OnUserTokenExpired],X=/*#__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.cacheManager=void 0,t.sseClient=void 0,t.serviceManager=void 0,t.needCheckGroupMap=new Map,t.conversationSyncTimer=void 0,t.syncInterval=2e4,t.isSyncing=!1,t.syncConversationsWithServer=function(){try{if(t.isSyncing)return t.config.debug&&console.log("[SDK] Sync already in progress, skipping"),Promise.resolve();var e=t.isLoggedIn(),n=t.isConnected();return e&&n?Promise.resolve(function(e,n){try{var r=J(function(){if(t.isSyncing=!0,t.needCheckGroupMap.size<=0){var e=t.cacheManager.getConversations();if(t.needCheckGroupMap=new Map(e.filter(function(e){var n,t;return void 0!==(null==(n=e.latest)?void 0:n.msgId)&&null!==(null==(t=e.latest)?void 0:t.msgId)}).map(function(e){return[e.id,e.latest.msgId]})),t.needCheckGroupMap.size<=0)return t.config.debug&&console.log("[SDK] No conversations to check"),void(t.isSyncing=!1)}return t.config.debug&&console.log("[SDK] Checking "+t.needCheckGroupMap.size+" conversations for updates"),Promise.resolve(t.group.updateLatestMessage(t.needCheckGroupMap)).then(function(e){if(0!==e.code)throw new Error("Failed to update latest messages: "+e.msg);var n=new Map(Object.entries(e.data||{}).map(function(e){var n=e[1];return[Number(e[0]),n]}));if(0===n.size)return t.config.debug&&console.log("[SDK] No conversations need updates"),void(t.isSyncing=!1);var r=t.cacheManager.getActiveConversation();if(r&&n.has(r.id)){var s=n.get(r.id),i=r.latest;if((null==i?void 0:i.msgId)!==s){var a=o({conversationId:r.id},null!=(null==i?void 0:i.msgId)&&{lastLocalMessageId:i.msgId},{serverLatestMessageId:s,timestamp:Date.now()});t.emit(u.OnActiveConversationSync,a),t.config.debug&&console.log("[SDK] Active conversation requires sync:",a)}n.delete(r.id)}var c=function(){if(n.size>0)return t.config.debug&&console.log("[SDK] Updating "+n.size+" non-active conversations"),Promise.resolve(t.group.getGroupLatestMessage(Array.from(n.keys()))).then(function(e){if(0===e.code&&e.data){var n=e.data,o=t.cacheManager.getConversations(),r=!1;if(n.forEach(function(e,n){var s=o.find(function(e){return e.id===n});s&&(s.latest&&s.latest.msgId===e.msgId&&s.latest.createTime===e.createTime||(s.latest=e,t.cacheManager.updateConversation(s),r=!0,t.config.debug&&console.log("[SDK] Updated conversation "+n+" with new message")))}),r){var s=t.cacheManager.getConversations();t.emit(u.OnConversationListUpdated,s)}}else t.config.debug&&console.warn("[SDK] Failed to get latest messages:",e)})}();return c&&c.then?c.then(function(){}):void 0})},function(e){console.error("[SDK] Error during conversation sync:",e)})}catch(e){return n(!0,e)}return r&&r.then?r.then(n.bind(null,!1),n.bind(null,!0)):n(!1,r)}(0,function(e,n){var o=t.cacheManager.getConversations();if(t.needCheckGroupMap=new Map(o.filter(function(e){var n,t;return void 0!==(null==(n=e.latest)?void 0:n.msgId)&&null!==(null==(t=e.latest)?void 0:t.msgId)}).map(function(e){return[e.id,e.latest.msgId]})),t.isSyncing=!1,e)throw n;return n})):(console.warn("[SDK] Not syncing. Login status: "+e+", Connection status: "+n),Promise.resolve())}catch(e){return Promise.reject(e)}},t.configure=function(e){void 0!==e.debug&&(t.config.debug=e.debug),e.apiAddr&&(t.config.apiAddr=e.apiAddr),e.appKey&&(t.config.appKey=e.appKey)},t.sendRequest=function(e){t.internalState.lastActivity=Date.now(),t.config.debug&&t.logRequest(e);var n=t.config.apiAddr+e.url,o=e.data;if("GET"===e.method&&o){var r=new URLSearchParams;Object.entries(o).forEach(function(e){var n=e[1];null!=n&&r.append(e[0],String(n))});var s=r.toString();s&&(n+=(n.includes("?")?"&":"?")+s),o=void 0}return 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(w)return 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,method:e.method,headers:{"Content-Type":"application/json",Authorization:t.config.token?"Bearer "+t.config.token:""},data:o})},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 N.EVENT_MESSAGE_PUSH:if(1===e.dt.length){var n=e.dt[0];t.needCheckGroupMap.has(n.groupId)&&t.needCheckGroupMap.delete(n.groupId),t.updateMessageCache(n),t.emit(u.OnReceiveMessage,n)}else{var o=e.dt;o.forEach(function(e){t.needCheckGroupMap.has(e.groupId)&&t.needCheckGroupMap.delete(e.groupId),t.updateMessageCache(e)}),t.emit(u.OnReceiveMessages,o)}break;case N.EVENT_PONG_IDLE:t.internalState.isConnected=!0;break;default:r=e.ev,Object.values(u).includes(r)?(t.emit(e.ev,e.dt),W.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 r},t.handleReconnectSuccess=function(){t.config.username&&(t.internalState.isConnected=!0,t.internalState.reconnectAttempts=0,t.config.debug&&console.log("SSE reconnection successful"),t.emit(u.OnReconnected))},t.handleConnectionClosed=function(){t.internalState.isConnected=!1,t.config.debug&&console.log("SSE connection closed"),t.emit(u.OnDisconnected)},t.login=function(e){try{if(t.sseClient)return Promise.resolve("login repeat");if(!t.config.apiAddr)return Promise.reject("No apiAddr configured. Please call configure() before login().");if(!t.config.appKey)return Promise.reject("No appKey configured. Please call configure() before login().");t.config.token=e.token,t.config.username=e.username,t.config.debug&&(console.log("login params",e),console.log("apiAddr",t.config.apiAddr)),t.cacheManager.initialize(e.username),t.cacheManager.resetActiveConversation();var n=t.cacheManager.getConversations();return n.length>0&&t.emit(u.OnConversationListUpdated,n),Promise.resolve(t.user.login(o({},e,{appKey:t.config.appKey}))).then(function(n){var o=n.code,r=n.data;return 0!=o?Promise.resolve("Login failed, Server error, error code is "+o):(t.initializeConversationCache(),console.log("initializeConversationCache "),t.sseClient=new d({url:t.config.apiAddr+"/chat/sse/conn?username="+e.username+"&token="+e.token+"&appKey="+t.config.appKey+"&random="+r,onMessage:t.handleMessage,onReconnectSuccess:t.handleReconnectSuccess,onConnectionClosed:t.handleConnectionClosed,token:e.token}),J(function(){return Promise.resolve(t.sseClient.connect()).then(function(e){return t.internalState.isLoggedIn=!0,e})},function(e){return t.internalState.isLoggedIn=!1,t.internalState.isConnected=!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,t.cacheManager.clear(),e})}catch(e){return Promise.reject(e)}},t.getConversations=function(e){try{return Promise.resolve(J(function(){return Promise.resolve(t.conversation.getConversations(e)).then(function(n){var o=n.data;if(0===n.code&&o){var r=t.cacheManager.getConversations();if(1===e.pageNo)t.cacheManager.setConversations([].concat(o.records));else{var s=o.records||[],i=new Set(r.map(function(e){return e.id})),a=s.filter(function(e){return!i.has(e.id)}),c=[].concat(r,a);t.cacheManager.setConversations(c)}t.emit(u.OnConversationListUpdated,t.cacheManager.getConversations())}else{var d=t.cacheManager.getConversations();d.length>0&&t.emit(u.OnConversationListUpdated,d)}return!0})},function(e){console.error("Failed to get conversations:",e);var n=t.cacheManager.getConversations();return n.length>0&&t.emit(u.OnConversationListUpdated,n),!1}))}catch(e){return Promise.reject(e)}},t.internalUploadFile=function(e){try{return Promise.resolve(J(function(){var n=new FormData;return n.append("file",e),n.append("filename",e.name),Promise.resolve(fetch(""+t.config.apiAddr+c.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){return{url:e.data||""}})})},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?a.UnknownError:0}})}catch(e){return Promise.reject(e)}},t.sendTextMessage=function(e,n){return t.message.createTextMessage(e,n)},t.sendImageMessage=function(e,n){return t.message.createImageMessage(e,n)},t.sendFileMessage=function(e,n){return t.message.createFileMessage(e,n)},t.sendVideoMessage=function(e,n){return t.message.createVideoMessage(e,n)},t.sendLinkMessage=function(e,n){return t.message.createLinkMessage(e,n)},t.sendGifMessage=function(e,n){return t.message.createGifMessage(e,n)},t.sendOptionMessage=function(e,n){return t.message.createOptionMessage(e,n)},t.sendEmojiMessage=function(e,n){return t.message.createEmojiMessage(e,n)},t.sendCustomMessage=function(e,n){return t.message.createCustomMessage(e,n)},t.getHistoryMessageList=function(e){return e.groupId&&t.cacheManager.markConversationAsActive(e.groupId),t.message.getHistoryMessageList(e)},t.createGroup=function(e){return t.group.createGroup(e)},t.getGroupInfo=function(e){return t.group.getGroupInfo(e)},t.getGroupMembers=function(e){return t.group.getGroupMembers(e)},t.joinGroup=function(e){return t.group.joinGroup(e)},t.markConversationRead=function(e){return t.conversation.markConversationRead(e)},t.clearConversationUnread=function(e){t.cacheManager.clearConversationUnread(e);var n=t.cacheManager.getConversations();t.emit(u.OnConversationListUpdated,n)},t.clearAllConversationUnread=function(){t.cacheManager.clearAllConversationUnread();var e=t.cacheManager.getConversations();t.emit(u.OnConversationListUpdated,e)},t.config.debug=n,t.cacheManager=new D({persistEnabled:!0,debug:n}),t.serviceManager=new q(t),t.needCheckGroupMap=new Map,t.startConversationSync(),t}var t,l;l=e,(t=n).prototype=Object.create(l.prototype),t.prototype.constructor=t,r(t,l);var g,h,v=n.prototype;return v.startConversationSync=function(e){this.stopConversationSync(),e&&e>0&&(this.syncInterval=e),this.conversationSyncTimer=window.setInterval(this.syncConversationsWithServer,this.syncInterval),this.config.debug&&console.log("[SDK] Started conversation sync timer with interval: "+this.syncInterval+"ms")},v.stopConversationSync=function(){this.conversationSyncTimer&&(clearInterval(this.conversationSyncTimer),this.conversationSyncTimer=void 0,this.config.debug&&console.log("[SDK] Stopped conversation sync timer"))},v.syncConversationsNow=function(){return this.syncConversationsWithServer()},v.destroy=function(){this.stopConversationSync(),this.sseClient&&(this.sseClient.close(),this.sseClient=void 0),this.cacheManager.destroy(),this.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},this.config.debug&&console.log("[SDK] Resources destroyed")},v.getService=function(e){return this.serviceManager.get(e)},v.isConnected=function(){return this.config.debug&&console.log("[SDK] Connection status: "+(this.internalState.isConnected?"connected":"disconnected")),this.internalState.isConnected},v.isLoggedIn=function(){return this.config.debug&&console.log("[SDK] Login status: "+(this.internalState.isLoggedIn?"logged in":"not logged in")),this.internalState.isLoggedIn},v.logRequest=function(e){var n=Math.random().toString(36).substring(2,8),t={GET:"#4CAF50",POST:"#2196F3",PUT:"#FF9800",DELETE:"#F44336"}[e.method]||"#9C27B0",o={GET:"🔍",POST:"📝",PUT:"🔄",DELETE:"🗑️"}[e.method]||"📡";console.log("%c "+(new Date).toISOString().substring(11,19)+" %c SDK %c "+o+" "+e.method+" %c "+e.url+" %c #"+n,"color: #888; font-size: 11px; padding: 2px 0;","background: #7CAEFF; color: white; font-weight: bold; font-size: 12px; border-radius: 4px; padding: 2px 6px; margin: 0 4px;","background: "+t+"; color: white; font-weight: bold; font-size: 12px; border-radius: 4px; padding: 2px 6px; margin: 0 4px;","color: #0066cc; font-weight: bold;","color: #888; font-style: italic;"),e.data&&Object.keys(e.data).length>0&&(console.log("%c─── 📦 Request Payload ───────────────────────────────","color: #999; font-style: italic;"),console.log("%c%s","color: #333; background: #f8f8f8; padding: 8px; border-radius: 4px; border-left: 4px solid #7CAEFF; font-family: monospace; line-height: 1.5;",JSON.stringify(e.data,null,2)),console.log("%c─────────────────────────────────────────────────────","color: #999;"))},v.initializeConversationCache=function(){try{var e=this,n=J(function(){return Promise.resolve(e.conversation.getConversations({pageNo:1,pageSize:20})).then(function(n){var t=n.code,o=n.data;if(e.config.debug&&console.log("initializeConversationCache Conversation 获取第一页会话数据",t,o),0===t&&o&&o.records){e.cacheManager.setConversations(o.records),console.log("initializeConversationCache Conversation 获取第一页会话数据 this.cacheManager.getConversations()",e.cacheManager.getConversations());var r=e.cacheManager.getConversations();e.emit(u.OnConversationListUpdated,r),e.needCheckGroupMap=new Map(r.filter(function(e){var n,t;return void 0!==(null==(n=e.latest)?void 0:n.msgId)&&null!==(null==(t=e.latest)?void 0:t.msgId)}).map(function(e){return[e.id,e.latest.msgId]})),e.config.debug&&console.log("Conversation cache initialized with",o.records.length,"conversations")}})},function(e){console.error("Failed to initialize conversation cache:",e)});return Promise.resolve(n&&n.then?n.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},v.onMessage=function(e){var n=this;return this.on(u.OnReceiveMessage,e),function(){return n.off(u.OnReceiveMessage,e)}},v.onMessages=function(e){var n=this;return this.on(u.OnReceiveMessages,e),function(){return n.off(u.OnReceiveMessages,e)}},v.onConnectionChange=function(e){var n=this,t=function(){return e(!0)},o=function(){return e(!1)};return this.on(u.OnConnected,t),this.on(u.OnDisconnected,o),function(){n.off(u.OnConnected,t),n.off(u.OnDisconnected,o)}},v.onKickedOffline=function(e){var n=this;return this.on(u.OnKickedOffline,e),function(){return n.off(u.OnKickedOffline,e)}},v.updateMessageCache=function(e){if(e.groupId&&this.cacheManager.addGroupMessage(e),this.cacheManager.updateConversationWithMessage(e,this.config.username)){var n=this.cacheManager.getConversations();this.emit(u.OnConversationListUpdated,n)}},v.getCachedGroupMessages=function(e){return this.cacheManager.getGroupMessages(e)},g=n,(h=[{key:"message",get:function(){return this.getService(i.MESSAGE)}},{key:"conversation",get:function(){return this.getService(i.CONVERSATION)}},{key:"group",get:function(){return this.getService(i.GROUP)}},{key:"user",get:function(){return this.getService(i.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,s(o.key),o)}}(g.prototype,h),Object.defineProperty(g,"prototype",{writable:!1}),g}(L);export{g as AllowType,M as ApplicationHandleResult,u as CbEvents,a as ErrorCode,P as GROUP_TYPE,y as GroupAtType,v as GroupJoinSource,A as GroupMemberFilter,f as GroupMemberRole,T as GroupMessageReaderFilter,E as GroupStatus,h as GroupType,p as GroupVerificationType,C as LogLevel,I as LoginStatus,R as MSG_TYPE,l as MessageReceiveOptType,k as MessageSendStatus,U as MessageStatus,S as MessageType,b as OnlineState,m as Platform,G as Relationship,c as RequestApi,X as SIMSDK,N as SSE_RESPONSE_TYPE,i as ServiceName,O as SessionType};
1
+ import{EventSourcePolyfill as e}from"event-source-polyfill";function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function n(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return t(e,n);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.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 s(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 i;!function(e){e.MESSAGE="message",e.CONVERSATION="conversation",e.GROUP="group",e.USER="user"}(i||(i={}));var a,c,u,d=/*#__PURE__*/function(){function t(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=2e3*Math.random()+3e3,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||2e3*Math.random()+3e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed}var n=t.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 r=e._customHandlers.get(n);r&&e.eventSource&&e.eventSource.removeEventListener(n,r)}))},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 t=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(n,r){try{t.eventSource=new e(t.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+t.token}}),t._openHandler=function(e){console.log("SSE connection established"),t.connected=!0,t.reconnectAttempts>0&&t.onReconnectSuccessCallback&&t.onReconnectSuccessCallback(),t.reconnectAttempts=0,t.reconnectTimeout=5e3,n("SSE connect successful!")},t._errorHandler=function(e){console.error("SSE connection error:",e),t.connected=!1,401===e.status||e.statusText&&e.statusText.includes("Unauthorized")?(t.cleanup(),t.notifyConnectionClosed(!0)):t.handleReconnect(),t.connected||r(new Error("SSE connect error"))},t._messageHandler=function(e){try{console.log("SSE received message:",e.data);var n=JSON.parse(e.data);t.onMessageCallback&&t.onMessageCallback(n)}catch(e){console.error("Error parsing message:",e)}},t.eventSource.addEventListener("open",t._openHandler),t.eventSource.addEventListener("error",t._errorHandler),t.eventSource.addEventListener("message",t._messageHandler),t.handlers.forEach(function(e,n){var r=t._customHandlers.get(n);r&&t.eventSource&&t.eventSource.addEventListener(n,r)});var o=setTimeout(function(){t.connected||(r(new Error("Connection timeout")),t.handleReconnect())},1e4),s=t._openHandler;t._openHandler=function(e){clearTimeout(o),s(e)}}catch(e){console.error("Failed to create EventSource:",e),t.handleReconnect(),r(e)}})},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},t}();!function(e){e[e.ConnectionEstablishmentFailed=1e4]="ConnectionEstablishmentFailed",e[e.ResourceLoadNotCompleteError=10004]="ResourceLoadNotCompleteError",e[e.UnknownError=10005]="UnknownError",e[e.LoginRepeatError=10102]="LoginRepeatError"}(a||(a={})),function(e){e.Login="/chat/member/login",e.Logout="/chat/member/logout",e.CreateGroup="CreateGroup",e.GetGroupInfo="/chat/group/groupInfo",e.GetGroupMembers="/chat/group/groupMembers",e.JoinGroup="/chat/group/joinGroup",e.GetAllConversationList="/chat/group/list",e.MarkConversationMessageAsRead="/chat/group/lastRead",e.UpdateLatestMessage="/chat/group/updateLatestMessage",e.GetLatestGroupChats="/chat/group/latestGroupChats",e.CheckLatestMessages="/chat/group/checkLatestMessages",e.CreateTextMessage="/chat/message/push",e.GetHistoryMessageList="/chat/message/pull",e.UploadFile="/chat/img/upload"}(c||(c={})),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.OnMessagesListLoaded="OnMessagesListLoaded",e.OnActiveConversationSync="OnActiveConversationSync",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.OnConversationListUpdated="OnConversationListUpdated",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"}(u||(u={}));var l,g,h,v=/*#__PURE__*/function(){function e(){var e;this.events=((e={})[u.OnReceiveMessage]=[],e[u.OnReceiveMessages]=[],e[u.OnConversationListUpdated]=[],e[u.OnMessagesListLoaded]=[],e[u.OnActiveConversationSync]=[],e[u.OnConnected]=[],e[u.OnDisconnected]=[],e[u.OnReconnected]=[],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 r=n.indexOf(t);r>-1&&(n.splice(r,1),0===n.length&&delete this.events[e])}return this},e}();!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"}(l||(l={})),function(e){e[e.TEXT=0]="TEXT",e[e.IMAGE=1]="IMAGE",e[e.FILE=2]="FILE",e[e.AUDIO=3]="AUDIO",e[e.VIDEO=4]="VIDEO",e[e.LINK=5]="LINK",e[e.GIF=6]="GIF",e[e.OPTION=7]="OPTION",e[e.EMOJI=8]="EMOJI",e[e.CUSTOM=100]="CUSTOM"}(g||(g={})),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"}(h||(h={}));var f="undefined"!=typeof uni,p="undefined"!=typeof window,m="simsdk_",C={CONVERSATIONS:m+"conversations",GROUP_MESSAGES:m+"group_messages",USER_INFO:m+"user_info",META_INFO:m+"meta"},O={MAX_CONVERSATIONS:100,MAX_GROUP_MESSAGES:200,STORAGE_CHUNK_SIZE:512e3,CACHE_TTL:6048e5,EXPIRY_CHECK_INTERVAL:18e5},M=/*#__PURE__*/function(){function e(e){var t=void 0===e?{}:e,n=t.persistEnabled,o=void 0===n||n,s=t.debug,i=void 0!==s&&s,a=t.config,c=void 0===a?{}:a;this.conversationCache=[],this.groupMessageCache={},this.accessTimeRecord={},this.userInfo={},this.activeConversation=void 0,this.metaInfo={},this.persistEnabled=void 0,this.debug=void 0,this.config=void 0,this.cleanupTimer=void 0,this.persistEnabled=o,this.debug=i,this.config=r({},O,c)}var t=e.prototype;return t.initialize=function(e){this.userInfo.username=e,this.persistEnabled&&this.loadFromStorage(),this.setupCleanupInterval(),this.debug&&(console.log("Cache initialized for user:",e),console.log("Loaded conversations:",this.conversationCache.length),console.log("Loaded group messages for groups:",Object.keys(this.groupMessageCache).length))},t.clear=function(){this.conversationCache=[],this.groupMessageCache={},this.accessTimeRecord={},this.persistEnabled&&this.clearStorage(),this.debug&&console.log("Cache cleared")},t.getConversations=function(){return[].concat(this.conversationCache)},t.clearConversationUnread=function(e){var t=this.conversationCache.find(function(t){return t.id===e});t&&(t.unreadCount=0,this.persistEnabled&&this.saveConversationsToStorage())},t.clearAllConversationUnread=function(){this.conversationCache.forEach(function(e){e.unreadCount>0&&(e.unreadCount=0)}),this.persistEnabled&&this.saveConversationsToStorage()},t.getActiveConversation=function(){return this.activeConversation},t.setConversations=function(e){this.conversationCache=e.length>this.config.MAX_CONVERSATIONS?e.slice(0,this.config.MAX_CONVERSATIONS):[].concat(e),this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage()},t.updateConversation=function(e){var t=this.conversationCache.findIndex(function(t){return t.id===e.id});t>=0?this.conversationCache[t]=r({},e):(this.conversationCache.push(r({},e)),this.conversationCache.length>this.config.MAX_CONVERSATIONS&&this.enforceConversationLimit()),this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage()},t.updateConversationWithMessage=function(e,t){var n,r=e.groupId;if(!r)return!1;var o=this.conversationCache.findIndex(function(e){return e.id===r});if(-1===o)return!1;var s=this.conversationCache[o],i=(null==(n=s.latest)?void 0:n.msgId)||0;return this.activeConversation&&this.activeConversation.id===r?s.unreadCount=0:t!==e.username&&(s.unreadCount+=e.msgId>i?e.msgId-i:1),s.latest=e,this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage(),!0},t.getGroupMessages=function(e){return this.recordAccess(e),!this.groupMessageCache[e]&&this.persistEnabled&&this.loadGroupMessagesFromStorage(e),this.groupMessageCache[e]||[]},t.addGroupMessage=function(e){if(e.groupId){this.recordAccess(e.groupId),this.groupMessageCache[e.groupId]||(this.groupMessageCache[e.groupId]=[]);var t=this.groupMessageCache[e.groupId].findIndex(function(t){return t.msgId===e.msgId});t>=0?this.groupMessageCache[e.groupId][t]=e:this.groupMessageCache[e.groupId].push(e),this.sortGroupMessages(e.groupId),this.limitGroupMessageCache(e.groupId),this.enforceMemoryLimits(),this.persistEnabled&&this.saveGroupMessagesToStorage(e.groupId)}},t.addGroupMessages=function(e){for(var t,r=this,o={},s=n(e);!(t=s()).done;){var i=t.value;i.groupId&&(o[i.groupId]||(o[i.groupId]=[]),o[i.groupId].push(i))}for(var a=0,c=Object.entries(o);a<c.length;a++){var u=c[a],d=u[0],l=u[1];this.recordAccess(Number(d)),this.groupMessageCache[d]||(this.groupMessageCache[d]=[]);for(var g,h=function(){var e=g.value,t=r.groupMessageCache[d].findIndex(function(t){return t.msgId===e.msgId});t>=0?r.groupMessageCache[d][t]=e:r.groupMessageCache[d].push(e)},v=n(l);!(g=v()).done;)h();this.sortGroupMessages(Number(d)),this.limitGroupMessageCache(Number(d)),this.persistEnabled&&this.saveGroupMessagesToStorage(Number(d))}this.enforceMemoryLimits()},t.sortConversations=function(){this.conversationCache.sort(function(e,t){var n,r,o=(null==(n=e.latest)?void 0:n.createTime)||0;return((null==(r=t.latest)?void 0:r.createTime)||0)-o})},t.sortGroupMessages=function(e){this.groupMessageCache[e]&&this.groupMessageCache[e].sort(function(e,t){return(t.createTime||0)-(e.createTime||0)})},t.limitGroupMessageCache=function(e){this.groupMessageCache[e]&&this.groupMessageCache[e].length>this.config.MAX_GROUP_MESSAGES&&(this.groupMessageCache[e]=this.groupMessageCache[e].slice(0,this.config.MAX_GROUP_MESSAGES))},t.recordAccess=function(e){this.accessTimeRecord[e]=Date.now()},t.enforceConversationLimit=function(){this.conversationCache.length<=this.config.MAX_CONVERSATIONS||(this.sortConversations(),this.conversationCache=this.conversationCache.slice(0,this.config.MAX_CONVERSATIONS))},t.enforceMemoryLimits=function(){var e=this,t=Object.keys(this.groupMessageCache).length;if(t>10){var n=Object.keys(this.groupMessageCache).map(function(t){return{groupId:t,lastAccess:e.accessTimeRecord[t]||0}});n.sort(function(e,t){return e.lastAccess-t.lastAccess});for(var r=Math.ceil(.3*t),o=0;o<r&&o<n.length;o++){var s=n[o].groupId;this.persistEnabled&&(delete this.groupMessageCache[s],this.debug&&console.log("Released memory for inactive group: "+s))}}},t.setupCleanupInterval=function(){var e=this;this.cleanupTimer&&clearInterval(this.cleanupTimer),this.cleanupTimer=window.setInterval(function(){e.cleanupExpiredData()},this.config.EXPIRY_CHECK_INTERVAL)},t.cleanupExpiredData=function(){var e=Date.now();this.metaInfo.lastCleanup=e,this.debug&&console.log("Running cache cleanup");for(var t=0,n=Object.entries(this.accessTimeRecord);t<n.length;t++){var r=n[t],o=r[0];e-r[1]>this.config.CACHE_TTL&&(delete this.accessTimeRecord[o],this.groupMessageCache[o]&&delete this.groupMessageCache[o])}this.persistEnabled&&this.saveMetaInfoToStorage()},t.loadFromStorage=function(){var e=this;try{var t=localStorage.getItem(C.META_INFO);t&&(this.metaInfo=JSON.parse(t));var n=localStorage.getItem(C.CONVERSATIONS);n&&(this.conversationCache=JSON.parse(n)),Object.keys(localStorage).filter(function(e){return e.startsWith(C.GROUP_MESSAGES+".")}).forEach(function(t){var n=t.split(".")[1];n&&!isNaN(Number(n))&&(e.accessTimeRecord[n]=0)});var r=localStorage.getItem(C.USER_INFO);r&&(this.userInfo=JSON.parse(r))}catch(e){console.error("Failed to load cache from storage:",e),this.clearStorage()}},t.loadGroupMessagesFromStorage=function(e){try{for(var t=[],n=0,r=!0;r;){var o=localStorage.getItem(C.GROUP_MESSAGES+"."+e+(n>0?"."+n:""));if(o){var s=JSON.parse(o);t=t.concat(s),n++}else r=!1}t.length>0&&(this.groupMessageCache[e]=t,this.sortGroupMessages(e),this.limitGroupMessageCache(e),this.debug&&console.log("Loaded "+t.length+" messages for group "+e+" from storage"))}catch(t){console.error("Failed to load group messages for "+e+" from storage:",t)}},t.saveConversationsToStorage=function(){try{localStorage.setItem(C.CONVERSATIONS,JSON.stringify(this.conversationCache))}catch(e){console.error("Failed to save conversations to storage:",e),this.handleStorageError()}},t.saveGroupMessagesToStorage=function(e){try{if(void 0!==e){var t=this.groupMessageCache[e];if(!t||0===t.length)return;var n=JSON.stringify(t);if(n.length>this.config.STORAGE_CHUNK_SIZE){this.clearGroupMessageStorage(e);for(var r=t.length,o=Math.max(1,Math.floor(this.config.STORAGE_CHUNK_SIZE/(n.length/r))),s=0;s<r;s+=o){var i=t.slice(s,s+o),a=Math.floor(s/o);localStorage.setItem(C.GROUP_MESSAGES+"."+e+(a>0?"."+a:""),JSON.stringify(i))}}else localStorage.setItem(C.GROUP_MESSAGES+"."+e,n)}else for(var c=0,u=Object.keys(this.groupMessageCache);c<u.length;c++)this.saveGroupMessagesToStorage(Number(u[c]))}catch(e){console.error("Failed to save group messages to storage:",e),this.handleStorageError()}},t.saveMetaInfoToStorage=function(){try{localStorage.setItem(C.META_INFO,JSON.stringify(this.metaInfo))}catch(e){console.error("Failed to save meta info to storage:",e)}},t.handleStorageError=function(){for(var e=this,t=Object.keys(this.accessTimeRecord).map(function(t){return{groupId:t,lastAccess:e.accessTimeRecord[t]||0}}).sort(function(e,t){return e.lastAccess-t.lastAccess}),n=Math.max(1,Math.floor(.2*t.length)),r=0;r<n&&r<t.length;r++)this.clearGroupMessageStorage(Number(t[r].groupId)),this.debug&&console.log("Cleared storage for group "+t[r].groupId+" due to quota exceeded")},t.clearGroupMessageStorage=function(e){for(var t=0,n=!0;n;){var r=C.GROUP_MESSAGES+"."+e+(t>0?"."+t:"");null!==localStorage.getItem(r)?(localStorage.removeItem(r),t++):n=!1}},t.saveUserInfoToStorage=function(){try{localStorage.setItem(C.USER_INFO,JSON.stringify(this.userInfo))}catch(e){console.error("Failed to save user info to storage:",e)}},t.clearStorage=function(){try{for(var e,t=n(Object.keys(localStorage).filter(function(e){return e.startsWith(m)}));!(e=t()).done;)localStorage.removeItem(e.value)}catch(e){console.error("Failed to clear storage:",e)}},t.destroy=function(){this.cleanupTimer&&(clearInterval(this.cleanupTimer),this.cleanupTimer=void 0),this.debug&&console.log("Cache manager destroyed")},t.markConversationAsActive=function(e){this.accessTimeRecord[e]=Date.now();var t=this.conversationCache.find(function(t){return t.id===e});return!!t&&(this.activeConversation=r({},t),!0)},t.resetActiveConversation=function(){var e,t=!(null==(e=this.activeConversation)||!e.id);return this.activeConversation=void 0,this.debug&&t&&console.log("Active conversation reset"),t},e}(),S=/*#__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:c.Login,method:"POST"}))}catch(e){return Promise.reject(e)}},t.logout=function(){try{return Promise.resolve(this.sdk.sendRequest({data:{},url:c.Logout,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),E=/*#__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(r,o){try{var s=Promise.resolve(n.sdk.sendRequest({data:e,url:t,method:"POST"}))}catch(e){return o(e)}return s&&s.then?s.then(void 0,o):s}(0,function(e){throw console.error("Failed to send message",e),e}))}catch(e){return Promise.reject(e)}},t.createMessage=function(e,t,n,o){void 0===n&&(n={});var s=r({},n,{msgType:e},o,{status:0});return this.sendMessage(s,t)},t.createTextMessage=function(e,t,n,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(g.TEXT,c.CreateTextMessage,r,{text:e,groupId:t,groupType:n}))}catch(e){return Promise.reject(e)}},t.createImageMessage=function(e,t,n,r,o){void 0===o&&(o={});try{return Promise.resolve(this.createMessage(g.IMAGE,c.CreateTextMessage,o,{link:e,snapshot:t,groupId:n,groupType:r}))}catch(e){return Promise.reject(e)}},t.createFileMessage=function(e,t,n,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(g.FILE,c.CreateTextMessage,r,{link:e,groupId:t,groupType:n}))}catch(e){return Promise.reject(e)}},t.createAudioMessage=function(e,t,n,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(g.AUDIO,c.CreateTextMessage,r,{link:e,groupId:t,groupType:n}))}catch(e){return Promise.reject(e)}},t.createVideoMessage=function(e,t,n,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(g.VIDEO,c.CreateTextMessage,r,{link:e,groupId:t,groupType:n}))}catch(e){return Promise.reject(e)}},t.createLinkMessage=function(e,t,n,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(g.LINK,c.CreateTextMessage,r,{text:e,groupId:t,groupType:n}))}catch(e){return Promise.reject(e)}},t.createGifMessage=function(e,t,n,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(g.GIF,c.CreateTextMessage,r,{link:e,groupId:t,groupType:n}))}catch(e){return Promise.reject(e)}},t.createOptionMessage=function(e,t,n,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(g.OPTION,c.CreateTextMessage,r,{text:e,groupId:t,groupType:n}))}catch(e){return Promise.reject(e)}},t.createEmojiMessage=function(e,t,n,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(g.EMOJI,c.CreateTextMessage,r,{text:e,groupId:t,groupType:n}))}catch(e){return Promise.reject(e)}},t.createCustomMessage=function(e,t,n,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(g.CUSTOM,c.CreateTextMessage,r,{text:e,groupId:t,groupType:n}))}catch(e){return Promise.reject(e)}},t.getHistoryMessageList=function(e){var t=e.groupId,n=e.lastId,r=e.size,o=void 0===r?100:r;try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,lastId:n,size:o},url:c.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),y=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.getConversations=function(e){try{var t=this;return Promise.resolve(t.sdk.sendRequest({data:e,url:c.GetAllConversationList,method:"GET"})).then(function(e){return e.data.records=e.data.records.map(t.normalizeConversation),e})}catch(e){return Promise.reject(e)}},t.markConversationRead=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:c.MarkConversationMessageAsRead,method:"GET"}))}catch(e){return Promise.reject(e)}},t.normalizeConversation=function(e){var t,n,r,o;return{id:e.id,name:e.name||"",groupType:e.groupType||0,avatar:e.avatar||"",status:null!=(t=e.status)?t:1,latest:null!=(n=e.latest)?n:{},unreadCount:null!=(r=e.unreadCount)?r:0,draftText:null!=(o=e.draftText)?o:""}},e}(),T=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.getGroupInfo=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:e},url:c.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},t.getGroupMembers=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:c.GetGroupMembers,method:"GET"}))}catch(e){return Promise.reject(e)}},t.joinGroup=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:e},url:c.JoinGroup,method:"GET"}))}catch(e){return Promise.reject(e)}},t.updateLatestMessage=function(e){try{var t=Object.fromEntries(e.entries());return Promise.resolve(this.sdk.sendRequest({data:{latestMessage:t},url:c.UpdateLatestMessage,method:"POST"}))}catch(e){return Promise.reject(e)}},t.getGroupLatestMessage=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groups:e},url:c.GetLatestGroupChats,method:"POST"}))}catch(e){return Promise.reject(e)}},t.checkGroupLatestMessage=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{ttl:e},url:c.CheckLatestMessages,method:"GET"}))}catch(e){return Promise.reject(e)}},e}(),I=/*#__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 i.USER:return new S(this.sdk);case i.MESSAGE:return new E(this.sdk);case i.CONVERSATION:return new y(this.sdk);case i.GROUP:return new T(this.sdk);default:throw new Error("Unknown service: "+e)}},t.reset=function(){this.services={}},e}();function b(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var A=[c.Logout,u.OnKickedOffline,u.OnUserTokenInvalid,u.OnUserTokenExpired],G=/*#__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.cacheManager=void 0,n.sseClient=void 0,n.serviceManager=void 0,n.conversationSyncTimer=void 0,n.syncInterval=2e4,n.isSyncing=!1,n.lastFetchTtl=0,n.syncConversationsWithServer=function(){try{if(n.isSyncing)return n.config.debug&&console.log("[SDK] Sync already in progress, skipping"),Promise.resolve();var e=n.isLoggedIn(),t=n.isConnected();if(!e||!t)return console.warn("[SDK] Not syncing. Login status: "+e+", Connection status: "+t),Promise.resolve();var r=function(e,t){try{var r=b(function(){return n.isSyncing=!0,Promise.resolve(n.group.checkGroupLatestMessage(n.lastFetchTtl)).then(function(e){console.log("res ",e);var t=function(){if(0==e.code){var t=e.data,r=t.groupChatIds;return n.lastFetchTtl=t.ttl,Object.entries(r).forEach(function(e){var t=e[1],n=Number(e[0]);console.log("groupId: "+n+", messageId: "+t)}),Promise.resolve(n.conversation.getConversations({pageNo:1,pageSize:20})).then(function(e){if(0===e.code){var t=e.data.records,r=n.cacheManager.getConversations(),o=new Set(r.map(function(e){return e.id})),s=t.filter(function(e){return!o.has(e.id)});s.length>0&&(n.cacheManager.setConversations([].concat(r,s)),n.emit(u.OnConversationCreated,s),n.config.debug&&console.log("[SDK] Found "+s.length+" new conversations")),n.emit(u.OnConversationListUpdated,n.cacheManager.getConversations())}})}}();if(t&&t.then)return t.then(function(){})})},function(e){console.error("[SDK] Error during conversation sync:",e)})}catch(e){return t(!0,e)}return r&&r.then?r.then(t.bind(null,!1),t.bind(null,!0)):t(!1,r)}(0,function(e,t){if(n.isSyncing=!1,e)throw t;return t});return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},n.configure=function(e){void 0!==e.debug&&(n.config.debug=e.debug),e.apiAddr&&(n.config.apiAddr=e.apiAddr),e.ossApiAddr&&(n.config.ossApiAddr=e.ossApiAddr),e.appKey&&(n.config.appKey=e.appKey)},n.sendRequest=function(e){n.internalState.lastActivity=Date.now(),n.config.debug&&n.logRequest(e);var t=n.config.apiAddr+e.url,r=e.data;if("GET"===e.method&&r){var o=new URLSearchParams;Object.entries(r).forEach(function(e){var t=e[1];null!=t&&o.append(e[0],String(t))});var s=o.toString();s&&(t+=(t.includes("?")?"&":"?")+s),r=void 0}return 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(p)return 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,method:e.method,headers:{"Content-Type":"application/json",Authorization:n.config.token?"Bearer "+n.config.token:""},data:r})},n.createRequestFunction=function(e,t){return function(r){return n.sendRequest({data:r,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 h.EVENT_MESSAGE_PUSH:if(1===e.dt.length){var t=e.dt[0];n.updateMessageCache(t),n.emit(u.OnReceiveMessage,t)}else{var r=e.dt;r.forEach(function(e){n.updateMessageCache(e)}),n.emit(u.OnReceiveMessages,r)}break;case h.EVENT_PONG_IDLE:n.internalState.isConnected=!0;break;default:o=e.ev,Object.values(u).includes(o)?(n.emit(e.ev,e.dt),A.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 o},n.handleReconnectSuccess=function(){n.config.username&&(n.internalState.isConnected=!0,n.internalState.reconnectAttempts=0,n.config.debug&&console.log("SSE reconnection successful"),n.emit(u.OnReconnected))},n.handleConnectionClosed=function(){n.internalState.isConnected=!1,n.config.debug&&console.log("SSE connection closed"),n.emit(u.OnDisconnected)},n.login=function(e){try{if(n.sseClient)return Promise.resolve("login repeat");if(!n.config.apiAddr)return Promise.reject("No apiAddr configured. Please call configure() before login().");if(!n.config.ossApiAddr)return Promise.reject("No ossApiAddr configured. Please call configure() before login().");if(!n.config.appKey)return Promise.reject("No appKey configured. Please call configure() before login().");n.config.token=e.token,n.config.username=e.username,n.config.debug&&(console.log("login params",e),console.log("apiAddr",n.config.apiAddr)),n.cacheManager.initialize(e.username),n.cacheManager.resetActiveConversation();var t=n.cacheManager.getConversations();return t.length>0&&n.emit(u.OnConversationListUpdated,t),Promise.resolve(n.user.login(r({},e,{appKey:n.config.appKey}))).then(function(t){var r=t.code,o=t.data;return 0!=r?Promise.resolve("Login failed, Server error, error code is "+r):(n.initializeConversationCache(),console.log("initializeConversationCache "),n.sseClient=new d({url:n.config.apiAddr+"/chat/sse/conn?username="+e.username+"&token="+e.token+"&appKey="+n.config.appKey+"&random="+o,onMessage:n.handleMessage,onReconnectSuccess:n.handleReconnectSuccess,onConnectionClosed:n.handleConnectionClosed,token:e.token}),b(function(){return Promise.resolve(n.sseClient.connect()).then(function(e){return n.internalState.isLoggedIn=!0,e})},function(e){return n.internalState.isLoggedIn=!1,n.internalState.isConnected=!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,n.cacheManager.clear(),e})}catch(e){return Promise.reject(e)}},n.getConversations=function(e){try{return Promise.resolve(b(function(){return Promise.resolve(n.conversation.getConversations(e)).then(function(t){var r=t.data;if(0===t.code&&r){var o=n.cacheManager.getConversations();if(1===e.pageNo)n.cacheManager.setConversations([].concat(r.records));else{var s=r.records||[],i=new Set(o.map(function(e){return e.id})),a=s.filter(function(e){return!i.has(e.id)}),c=[].concat(o,a);n.cacheManager.setConversations(c)}n.emit(u.OnConversationListUpdated,n.cacheManager.getConversations())}else{var d=n.cacheManager.getConversations();d.length>0&&n.emit(u.OnConversationListUpdated,d)}return!0})},function(e){console.error("Failed to get conversations:",e);var t=n.cacheManager.getConversations();return t.length>0&&n.emit(u.OnConversationListUpdated,t),!1}))}catch(e){return Promise.reject(e)}},n.internalUploadFile=function(e){try{return Promise.resolve(b(function(){var t=new FormData;return t.append("file",e),t.append("filename",e.name),Promise.resolve(fetch(""+n.config.ossApiAddr+c.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=(null==e?void 0:e.data)||{};return{originalUrl:t.originalUrl||"",thumbnailUrl:t.thumbnailUrl||""}})})},function(e){return console.error("[Upload Error]",e),{error:e instanceof Error?e:new Error("Unknown upload error")}}))}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.originalUrl,r=e.thumbnailUrl,o=e.error;return{data:{originalUrl:void 0===n?"":n,thumbnailUrl:void 0===r?"":r},msg:null!=(t=null==o?void 0:o.message)?t:"",code:o?a.UnknownError:0}})}catch(e){return Promise.reject(e)}},n.sendTextMessage=function(e,t,r,o){return n.message.createTextMessage(e,t,r,o)},n.sendImageMessage=function(e,t,r,o,s){return n.message.createImageMessage(e,t,r,o,s)},n.sendFileMessage=function(e,t,r,o){return n.message.createFileMessage(e,t,r,o)},n.sendAudioMessage=function(e,t,r,o){return n.message.createAudioMessage(e,t,r,o)},n.sendVideoMessage=function(e,t,r,o){return n.message.createVideoMessage(e,t,r,o)},n.sendLinkMessage=function(e,t,r,o){return n.message.createLinkMessage(e,t,r,o)},n.sendGifMessage=function(e,t,r,o){return n.message.createGifMessage(e,t,r,o)},n.sendOptionMessage=function(e,t,r,o){return n.message.createOptionMessage(e,t,r,o)},n.sendEmojiMessage=function(e,t,r,o){return n.message.createEmojiMessage(e,t,r,o)},n.sendCustomMessage=function(e,t,r,o){return n.message.createCustomMessage(e,t,r,o)},n.getHistoryMessageList=function(e){return e.groupId&&n.cacheManager.markConversationAsActive(e.groupId),n.message.getHistoryMessageList(e)},n.getGroupInfo=function(e){return n.group.getGroupInfo(e)},n.getGroupMembers=function(e){return n.group.getGroupMembers(e)},n.joinGroup=function(e){return n.group.joinGroup(e)},n.markConversationRead=function(e){return n.conversation.markConversationRead(e)},n.clearConversationUnread=function(e){n.cacheManager.clearConversationUnread(e);var t=n.cacheManager.getConversations();n.emit(u.OnConversationListUpdated,t)},n.clearAllConversationUnread=function(){n.cacheManager.clearAllConversationUnread();var e=n.cacheManager.getConversations();n.emit(u.OnConversationListUpdated,e)},n.config.debug=t,n.cacheManager=new M({persistEnabled:!0,debug:t}),n.serviceManager=new I(n),n.startConversationSync(),n}var n,l;l=e,(n=t).prototype=Object.create(l.prototype),n.prototype.constructor=n,o(n,l);var g,v,m=t.prototype;return m.startConversationSync=function(e){this.stopConversationSync(),e&&e>0&&(this.syncInterval=e),this.conversationSyncTimer=window.setInterval(this.syncConversationsWithServer,this.syncInterval),this.config.debug&&console.log("[SDK] Started conversation sync timer with interval: "+this.syncInterval+"ms")},m.stopConversationSync=function(){this.conversationSyncTimer&&(clearInterval(this.conversationSyncTimer),this.conversationSyncTimer=void 0,this.config.debug&&console.log("[SDK] Stopped conversation sync timer"))},m.syncConversationsNow=function(){return this.syncConversationsWithServer()},m.destroy=function(){this.stopConversationSync(),this.sseClient&&(this.sseClient.close(),this.sseClient=void 0),this.cacheManager.destroy(),this.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},this.config.debug&&console.log("[SDK] Resources destroyed")},m.getService=function(e){return this.serviceManager.get(e)},m.isConnected=function(){return this.config.debug&&console.log("[SDK] Connection status: "+(this.internalState.isConnected?"connected":"disconnected")),this.internalState.isConnected},m.isLoggedIn=function(){return this.config.debug&&console.log("[SDK] Login status: "+(this.internalState.isLoggedIn?"logged in":"not logged in")),this.internalState.isLoggedIn},m.logRequest=function(e){var t=Math.random().toString(36).substring(2,8),n={GET:"#4CAF50",POST:"#2196F3",PUT:"#FF9800",DELETE:"#F44336"}[e.method]||"#9C27B0",r={GET:"🔍",POST:"📝",PUT:"🔄",DELETE:"🗑️"}[e.method]||"📡";console.log("%c "+(new Date).toISOString().substring(11,19)+" %c SDK %c "+r+" "+e.method+" %c "+e.url+" %c #"+t,"color: #888; font-size: 11px; padding: 2px 0;","background: #7CAEFF; color: white; font-weight: bold; font-size: 12px; border-radius: 4px; padding: 2px 6px; margin: 0 4px;","background: "+n+"; color: white; font-weight: bold; font-size: 12px; border-radius: 4px; padding: 2px 6px; margin: 0 4px;","color: #0066cc; font-weight: bold;","color: #888; font-style: italic;"),e.data&&Object.keys(e.data).length>0&&(console.log("%c─── 📦 Request Payload ───────────────────────────────","color: #999; font-style: italic;"),console.log("%c%s","color: #333; background: #f8f8f8; padding: 8px; border-radius: 4px; border-left: 4px solid #7CAEFF; font-family: monospace; line-height: 1.5;",JSON.stringify(e.data,null,2)),console.log("%c─────────────────────────────────────────────────────","color: #999;"))},m.initializeConversationCache=function(){try{var e=this,t=b(function(){return Promise.resolve(e.conversation.getConversations({pageNo:1,pageSize:20})).then(function(t){var n=t.code,r=t.data;if(e.config.debug&&console.log("initializeConversationCache Conversation 获取第一页会话数据",n,r),0===n&&r&&r.records){e.cacheManager.setConversations(r.records),console.log("initializeConversationCache Conversation 获取第一页会话数据 this.cacheManager.getConversations()",e.cacheManager.getConversations());var o=e.cacheManager.getConversations();e.emit(u.OnConversationListUpdated,o),e.config.debug&&console.log("Conversation cache initialized with",r.records.length,"conversations")}})},function(e){console.error("Failed to initialize conversation cache:",e)});return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},m.onMessage=function(e){var t=this;return this.on(u.OnReceiveMessage,e),function(){return t.off(u.OnReceiveMessage,e)}},m.onMessages=function(e){var t=this;return this.on(u.OnReceiveMessages,e),function(){return t.off(u.OnReceiveMessages,e)}},m.onConnectionChange=function(e){var t=this,n=function(){return e(!0)},r=function(){return e(!1)};return this.on(u.OnConnected,n),this.on(u.OnDisconnected,r),function(){t.off(u.OnConnected,n),t.off(u.OnDisconnected,r)}},m.onKickedOffline=function(e){var t=this;return this.on(u.OnKickedOffline,e),function(){return t.off(u.OnKickedOffline,e)}},m.updateMessageCache=function(e){if(e.groupId&&this.cacheManager.addGroupMessage(e),this.cacheManager.updateConversationWithMessage(e,this.config.username)){var t=this.cacheManager.getConversations();this.emit(u.OnConversationListUpdated,t)}},m.getCachedGroupMessages=function(e){return this.cacheManager.getGroupMessages(e)},g=t,(v=[{key:"message",get:function(){return this.getService(i.MESSAGE)}},{key:"conversation",get:function(){return this.getService(i.CONVERSATION)}},{key:"group",get:function(){return this.getService(i.GROUP)}},{key:"user",get:function(){return this.getService(i.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 r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,s(r.key),r)}}(g.prototype,v),Object.defineProperty(g,"prototype",{writable:!1}),g}(v);export{u as CbEvents,a as ErrorCode,l as GroupType,g as MessageType,c as RequestApi,G as SIMSDK,h as SSE_RESPONSE_TYPE,i as ServiceName};