sim-sdk-web 1.0.30 → 1.0.32

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.
@@ -21,21 +21,19 @@ export declare class GroupService {
21
21
  * @param groupId 群组ID
22
22
  * @returns 群组信息Promise
23
23
  */
24
- getGroupInfo(groupId: string): Promise<ServerResponse<GroupInfoVO>>;
24
+ getGroupInfo(groupId: number): Promise<ServerResponse<GroupInfoVO>>;
25
25
  /**
26
26
  * 获取群组成员列表
27
27
  * @param params 包含群组ID和可选分页参数的对象
28
28
  * @returns 群组成员信息Promise
29
29
  */
30
30
  getGroupMembers(params: {
31
- groupId: string;
31
+ groupId: number;
32
32
  } & Partial<ReqPageParam>): Promise<ServerResponse<GroupInfoVO>>;
33
33
  /**
34
34
  * 进群
35
- * @param params 包含群组ID
35
+ * @param groupId 包含群组ID
36
36
  * @returns Promise
37
37
  */
38
- joinGroup(params: {
39
- groupId: string;
40
- } & Partial<ReqPageParam>): Promise<ServerResponse>;
38
+ joinGroup(groupId: number): Promise<ServerResponse>;
41
39
  }
@@ -1,4 +1,4 @@
1
- import { GroupItem, HistoryMessageParam, ServerResponse, Request, MessageItem, PageParam, ReqPageParam, MarkConversationReadParam } from '../types/entity';
1
+ import { GroupItem, HistoryMessageParam, ServerResponse, Request, MessageItem, ReqPageParam, MarkConversationReadParam } 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';
@@ -18,6 +18,7 @@ interface SDKOptions {
18
18
  declare class SIMSDK extends Emitter {
19
19
  private config;
20
20
  private internalState;
21
+ private cacheManager;
21
22
  private sseClient?;
22
23
  private readonly serviceManager;
23
24
  /**
@@ -116,6 +117,18 @@ declare class SIMSDK extends Emitter {
116
117
  * @returns 登出结果Promise
117
118
  */
118
119
  logout: () => Promise<ServerResponse<unknown>>;
120
+ /**
121
+ * 初始化会话列表缓存
122
+ * @private
123
+ */
124
+ private initializeConversationCache;
125
+ /**
126
+ * 获取会话列表
127
+ * @param params 分页参数
128
+ * @returns Promise<void> - 不返回数据,通过事件机制通知结果
129
+ * @remarks 数据通过OnConversationListUpdated事件返回,请使用事件监听获取结果
130
+ */
131
+ getConversations: (params: ReqPageParam) => Promise<void>;
119
132
  /**
120
133
  * 内部上传文件方法
121
134
  * @param file 要上传的文件
@@ -219,16 +232,11 @@ declare class SIMSDK extends Emitter {
219
232
  sendCustomMessage: (emoji: string, params?: Partial<Omit<MessageItem, "text">>) => Promise<ServerResponse<MessageItem>>;
220
233
  /**
221
234
  * 获取历史消息列表
222
- * @param params
223
- * @returns 历史消息
235
+ * @param params 历史消息参数,包含会话ID、分页信息等
236
+ * @returns Promise<void> - 不返回数据,通过事件机制通知结果
237
+ * @remarks 数据通过OnHistoryMessagesLoaded事件返回,请使用事件监听获取结果
224
238
  */
225
- getHistoryMessageList: (params: HistoryMessageParam) => Promise<ServerResponse<import("../types/entity").HistoryMessageResponse>>;
226
- /**
227
- * 获取会话列表
228
- * @param params 分页参数
229
- * @returns 会话列表
230
- */
231
- getConversations: (params: ReqPageParam) => Promise<ServerResponse<PageParam<import("../types/entity").ConversationItem>>>;
239
+ getHistoryMessageList: (params: HistoryMessageParam) => Promise<void>;
232
240
  /**
233
241
  * 创建群组
234
242
  * @param group 群组信息
@@ -240,23 +248,21 @@ declare class SIMSDK extends Emitter {
240
248
  * @param groupId 群组ID
241
249
  * @returns 群组信息
242
250
  */
243
- getGroupInfo: (groupId: string) => Promise<ServerResponse<import("../types/entity").GroupInfoVO>>;
251
+ getGroupInfo: (groupId: number) => Promise<ServerResponse<import("../types/entity").GroupInfoVO>>;
244
252
  /**
245
253
  * 获取群组成员列表
246
254
  * @param params 包含群组ID和可选分页参数的对象
247
255
  * @returns 群组成员信息
248
256
  */
249
257
  getGroupMembers: (params: {
250
- groupId: string;
258
+ groupId: number;
251
259
  } & Partial<ReqPageParam>) => Promise<ServerResponse<import("../types/entity").GroupInfoVO>>;
252
260
  /**
253
261
  * 进群
254
- * @param params 包含群组ID
262
+ * @param groupId 包含群组ID
255
263
  * @returns 进群状态
256
264
  */
257
- joinGroup: (params: {
258
- groupId: string;
259
- }) => Promise<ServerResponse<unknown>>;
265
+ joinGroup: (groupId: number) => Promise<ServerResponse<unknown>>;
260
266
  /**
261
267
  * 设置会话已读
262
268
  * @param params 会话已读参数
@@ -264,5 +270,16 @@ declare class SIMSDK extends Emitter {
264
270
  */
265
271
  markConversationRead: (params: MarkConversationReadParam) => Promise<ServerResponse<unknown>>;
266
272
  get uuid(): string;
273
+ /**
274
+ * 更新消息缓存
275
+ * @param message 消息
276
+ */
277
+ private updateMessageCache;
278
+ /**
279
+ * 获取缓存的群组消息
280
+ * @param groupId 群组ID
281
+ * @returns 缓存的群组消息数组
282
+ */
283
+ getCachedGroupMessages(groupId: number): MessageItem[];
267
284
  }
268
285
  export default SIMSDK;
@@ -12,6 +12,7 @@ export declare enum CbEvents {
12
12
  OnNetworkChange = "OnNetworkChange",// 网络状态变化
13
13
  OnReceiveMessage = "OnReceiveMessage",// 收到单条消息
14
14
  OnReceiveMessages = "OnReceiveMessages",// 收到多条消息
15
+ OnMessagesListLoaded = "OnMessagesListLoaded",
15
16
  OnMessageSent = "OnMessageSent",// 消息发送成功
16
17
  OnMessageFailed = "OnMessageFailed",// 消息发送失败
17
18
  OnMessageRevoked = "OnMessageRevoked",// 消息被撤回
@@ -41,6 +42,7 @@ export declare enum CbEvents {
41
42
  OnGroupAllMemberUnmuted = "OnGroupAllMemberUnmuted",// 解除全员禁言
42
43
  OnConversationCreated = "OnConversationCreated",// 新建会话
43
44
  OnConversationDeleted = "OnConversationDeleted",// 删除会话
45
+ OnConversationListUpdated = "OnConversationListUpdated",// 会话列表更新
44
46
  OnConversationUpdated = "OnConversationUpdated",// 会话更新
45
47
  OnUnreadCountChanged = "OnUnreadCountChanged",// 未读消息数变化
46
48
  OnConversationPinned = "OnConversationPinned",// 会话置顶
package/lib/index.es.js CHANGED
@@ -1 +1 @@
1
- import{EventSourcePolyfill as e}from"event-source-polyfill";function n(){return n=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},n.apply(null,arguments)}function t(e,n){return t=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,n){return e.__proto__=n,e},t(e,n)}function r(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}var o;!function(e){e.MESSAGE="message",e.CONVERSATION="conversation",e.GROUP="group",e.USER="user"}(o||(o={}));var s,i,a,c=/*#__PURE__*/function(){function n(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this._openHandler=null,this._errorHandler=null,this._messageHandler=null,this._customHandlers=new Map,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed}var t=n.prototype;return t.removeAllEventListeners=function(){var e=this;this.eventSource&&(this._openHandler&&this.eventSource.removeEventListener("open",this._openHandler),this._errorHandler&&this.eventSource.removeEventListener("error",this._errorHandler),this._messageHandler&&this.eventSource.removeEventListener("message",this._messageHandler),this.handlers.forEach(function(n,t){var r=e._customHandlers.get(t);r&&e.eventSource&&e.eventSource.removeEventListener(t,r)}))},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,r){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||r(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 r=n._customHandlers.get(t);r&&n.eventSource&&n.eventSource.addEventListener(t,r)});var o=setTimeout(function(){n.connected||(r(new Error("Connection timeout")),n.handleReconnect())},1e4),s=n._openHandler;n._openHandler=function(e){clearTimeout(o),s(e)}}catch(e){console.error("Failed to create EventSource:",e),n.handleReconnect(),r(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"}(s||(s={})),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.CreateTextMessage="/chat/message/push",e.GetHistoryMessageList="/chat/message/pull",e.UploadFile="/chat/img/upload"}(i||(i={})),function(e){e.OnConnected="OnConnected",e.OnDisconnected="OnDisconnected",e.OnReconnecting="OnReconnecting",e.OnReconnected="OnReconnected",e.OnReconnectFailed="OnReconnectFailed",e.OnNetworkChange="OnNetworkChange",e.OnReceiveMessage="OnReceiveMessage",e.OnReceiveMessages="OnReceiveMessages",e.OnMessageSent="OnMessageSent",e.OnMessageFailed="OnMessageFailed",e.OnMessageRevoked="OnMessageRevoked",e.OnMessageDeleted="OnMessageDeleted",e.OnMessageRead="OnMessageRead",e.OnTypingStatusUpdate="OnTypingStatusUpdate",e.OnUserStatusChange="OnUserStatusChange",e.OnKickedOffline="OnKickedOffline",e.OnUserTokenInvalid="OnUserTokenInvalid",e.OnUserTokenExpired="OnUserTokenExpired",e.OnForceOffline="OnForceOffline",e.OnUserInfoUpdated="OnUserInfoUpdated",e.OnGroupCreated="OnGroupCreated",e.OnGroupInfoUpdated="OnGroupInfoUpdated",e.OnGroupDissolved="OnGroupDissolved",e.OnJoinGroup="OnJoinGroup",e.OnLeaveGroup="OnLeaveGroup",e.OnGroupMemberJoined="OnGroupMemberJoined",e.OnGroupMemberLeft="OnGroupMemberLeft",e.OnGroupMemberKicked="OnGroupMemberKicked",e.OnGroupOwnerChanged="OnGroupOwnerChanged",e.OnGroupAdminAdded="OnGroupAdminAdded",e.OnGroupAdminRemoved="OnGroupAdminRemoved",e.OnGroupMemberMuted="OnGroupMemberMuted",e.OnGroupMemberUnmuted="OnGroupMemberUnmuted",e.OnGroupAllMemberMuted="OnGroupAllMemberMuted",e.OnGroupAllMemberUnmuted="OnGroupAllMemberUnmuted",e.OnConversationCreated="OnConversationCreated",e.OnConversationDeleted="OnConversationDeleted",e.OnConversationUpdated="OnConversationUpdated",e.OnUnreadCountChanged="OnUnreadCountChanged",e.OnConversationPinned="OnConversationPinned",e.OnConversationUnpinned="OnConversationUnpinned",e.OnConversationMuted="OnConversationMuted",e.OnConversationUnmuted="OnConversationUnmuted",e.OnPongConn="OnPongConn",e.OnPongReConn="OnPongReConn",e.OnPongIdle="OnPongIdle",e.OnError="OnError",e.OnWarning="OnWarning",e.OnLog="OnLog"}(a||(a={}));var u,d,l,g,f,m,h,p,v,O,M,C,E,S,G,P,A,T,b,k,y,R,N=/*#__PURE__*/function(){function e(){var e;this.events=((e={})[a.OnReceiveMessage]=[],e[a.OnReceiveMessages]=[],e)}var n=e.prototype;return n.emit=function(e,n){var t=this.events[e];return t&&t.forEach(function(e){return e(n)}),this},n.on=function(e,n){var t;return this.events[e]||(this.events[e]=[]),null==(t=this.events[e])||t.push(n),this},n.off=function(e,n){var t=this.events[e];if(t){var r=t.indexOf(n);r>-1&&(t.splice(r,1),0===t.length&&delete this.events[e])}return this},e}();!function(e){e[e.Nomal=0]="Nomal",e[e.NotReceive=1]="NotReceive",e[e.NotNotify=2]="NotNotify"}(u||(u={})),function(e){e[e.Allowed=0]="Allowed",e[e.NotAllowed=1]="NotAllowed"}(d||(d={})),function(e){e[e.Group=2]="Group",e[e.WorkingGroup=2]="WorkingGroup"}(l||(l={})),function(e){e[e.Invitation=2]="Invitation",e[e.Search=3]="Search",e[e.QrCode=4]="QrCode"}(g||(g={})),function(e){e[e.Nomal=20]="Nomal",e[e.Admin=60]="Admin",e[e.Owner=100]="Owner"}(f||(f={})),function(e){e[e.ApplyNeedInviteNot=0]="ApplyNeedInviteNot",e[e.AllNeed=1]="AllNeed",e[e.AllNot=2]="AllNot"}(m||(m={})),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"}(h||(h={})),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"}(p||(p={})),function(e){e[e.Unprocessed=0]="Unprocessed",e[e.Agree=1]="Agree",e[e.Reject=-1]="Reject"}(v||(v={})),function(e){e[e.MESSAGE_TYPE_TEXT=0]="MESSAGE_TYPE_TEXT",e[e.TextMessage=101]="TextMessage",e[e.PictureMessage=102]="PictureMessage",e[e.VoiceMessage=103]="VoiceMessage",e[e.VideoMessage=104]="VideoMessage",e[e.FileMessage=105]="FileMessage",e[e.AtTextMessage=106]="AtTextMessage",e[e.MergeMessage=107]="MergeMessage",e[e.CardMessage=108]="CardMessage",e[e.LocationMessage=109]="LocationMessage",e[e.CustomMessage=110]="CustomMessage",e[e.TypingMessage=113]="TypingMessage",e[e.QuoteMessage=114]="QuoteMessage",e[e.FaceMessage=115]="FaceMessage",e[e.FriendAdded=1201]="FriendAdded",e[e.OANotification=1400]="OANotification",e[e.GroupCreated=1501]="GroupCreated",e[e.MemberQuit=1504]="MemberQuit",e[e.GroupOwnerTransferred=1507]="GroupOwnerTransferred",e[e.MemberKicked=1508]="MemberKicked",e[e.MemberInvited=1509]="MemberInvited",e[e.MemberEnter=1510]="MemberEnter",e[e.GroupDismissed=1511]="GroupDismissed",e[e.GroupMemberMuted=1512]="GroupMemberMuted",e[e.GroupMemberCancelMuted=1513]="GroupMemberCancelMuted",e[e.GroupMuted=1514]="GroupMuted",e[e.GroupCancelMuted=1515]="GroupCancelMuted",e[e.GroupAnnouncementUpdated=1519]="GroupAnnouncementUpdated",e[e.GroupNameUpdated=1520]="GroupNameUpdated",e[e.BurnMessageChange=1701]="BurnMessageChange",e[e.RevokeMessage=2101]="RevokeMessage"}(O||(O={})),function(e){e[e.Single=1]="Single",e[e.Group=3]="Group",e[e.WorkingGroup=3]="WorkingGroup",e[e.Notification=4]="Notification"}(M||(M={})),function(e){e[e.Nomal=0]="Nomal",e[e.Baned=1]="Baned",e[e.Dismissed=2]="Dismissed",e[e.Muted=3]="Muted"}(C||(C={})),function(e){e[e.AtNormal=0]="AtNormal",e[e.AtMe=1]="AtMe",e[e.AtAll=2]="AtAll",e[e.AtAllAtMe=3]="AtAllAtMe",e[e.AtGroupNotice=4]="AtGroupNotice"}(E||(E={})),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"}(S||(S={})),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"}(P||(P={})),function(e){e[e.Online=1]="Online",e[e.Offline=0]="Offline"}(A||(A={})),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"}(b||(b={})),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"}(k||(k={})),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"}(y||(y={})),function(e){e[e.Sending=1]="Sending",e[e.Succeed=2]="Succeed",e[e.Failed=3]="Failed"}(R||(R={}));var I={NORMAL:0,EDITED:1,DELETED:2},w="undefined"!=typeof uni,U="undefined"!=typeof window,L=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var n=e.prototype;return n.login=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:i.Login,method:"POST"}))}catch(e){return Promise.reject(e)}},n.logout=function(){try{return Promise.resolve(this.sdk.sendRequest({data:{},url:i.Logout,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),_=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.sendMessage=function(e,n){try{var t=this;return Promise.resolve(function(r,o){try{var s=Promise.resolve(t.sdk.sendRequest({data:e,url:n,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,r,o,s){var i;void 0===r&&(r={});var a=n({},r,((i={msgType:e})[o]=s,i.status=0,i));return this.sendMessage(a,t)},t.createTextMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(k.TEXT,i.CreateTextMessage,n,"text",e))}catch(e){return Promise.reject(e)}},t.createImageMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(k.IMAGE,i.CreateTextMessage,n,"link",e))}catch(e){return Promise.reject(e)}},t.createFileMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(k.FILE,i.CreateTextMessage,n,"link",e))}catch(e){return Promise.reject(e)}},t.createVideoMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(k.VIDEO,i.CreateTextMessage,n,"link",e))}catch(e){return Promise.reject(e)}},t.createLinkMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(k.LINK,i.CreateTextMessage,n,"text",e))}catch(e){return Promise.reject(e)}},t.createGifMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(k.GIF,i.CreateTextMessage,n,"link",e))}catch(e){return Promise.reject(e)}},t.createOptionMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(k.OPTION,i.CreateTextMessage,n,"text",e))}catch(e){return Promise.reject(e)}},t.createEmojiMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(k.EMOJI,i.CreateTextMessage,n,"text",e))}catch(e){return Promise.reject(e)}},t.createCustomMessage=function(e,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(k.CUSTOM,i.CreateTextMessage,n,"text",e))}catch(e){return Promise.reject(e)}},t.getHistoryMessageList=function(e){var n=e.groupId,t=e.lastId,r=e.size,o=void 0===r?100:r;try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:n,lastId:t,size:o},url:i.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),j=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var n=e.prototype;return n.getConversations=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:i.GetAllConversationList,method:"GET"}))}catch(e){return Promise.reject(e)}},n.markConversationRead=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:i.MarkConversationMessageAsRead,method:"GET"}))}catch(e){return Promise.reject(e)}},e}(),x=/*#__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:i.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},n.getGroupInfo=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:e},url:i.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getGroupMembers=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:i.GetGroupMembers,method:"GET"}))}catch(e){return Promise.reject(e)}},n.joinGroup=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:i.JoinGroup,method:"GET"}))}catch(e){return Promise.reject(e)}},e}(),F=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.services={},this.sdk=e}var 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 o.USER:return new L(this.sdk);case o.MESSAGE:return new _(this.sdk);case o.CONVERSATION:return new j(this.sdk);case o.GROUP:return new x(this.sdk);default:throw new Error("Unknown service: "+e)}},n.reset=function(){this.services={}},e}();function D(e,n){try{var t=e()}catch(e){return n(e)}return t&&t.then?t.then(void 0,n):t}var H=[i.Logout,a.OnKickedOffline,a.OnUserTokenInvalid,a.OnUserTokenExpired],V=/*#__PURE__*/function(e){function u(t){var r;return void 0===t&&(t=!1),(r=e.call(this)||this).config={debug:!1},r.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},r.sseClient=void 0,r.serviceManager=void 0,r.configure=function(e){void 0!==e.debug&&(r.config.debug=e.debug),e.apiAddr&&(r.config.apiAddr=e.apiAddr),e.appKey&&(r.config.appKey=e.appKey)},r.sendRequest=function(e){r.internalState.lastActivity=Date.now(),r.config.debug&&r.logRequest(e);var n=r.config.apiAddr+e.url,t=e.data;if("GET"===e.method&&t){var o=new URLSearchParams;Object.entries(t).forEach(function(e){var n=e[1];null!=n&&o.append(e[0],String(n))});var s=o.toString();s&&(n+=(n.includes("?")?"&":"?")+s),t=void 0}return function(e){try{return Promise.resolve(w?new Promise(function(n,t){uni.request({url:e.url,method:e.method||"GET",header:e.headers,data:e.data,success:function(e){return n(e.data)},fail:function(e){return t(e)}})}):function(){if(U)return console.log("isBrowser ",U),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url:n,method:e.method,headers:{"Content-Type":"application/json",Authorization:r.config.token?"Bearer "+r.config.token:""},data:t})},r.createRequestFunction=function(e,n){return function(t){return r.sendRequest({data:t,url:e,method:n})}},r.createRequestFunctionWithoutParams=function(e,n){return function(){return r.sendRequest({data:void 0,method:n,url:e})}},r.handleMessage=function(e){switch(r.config.debug&&console.log("handleMessage response",e),e.ev){case y.EVENT_MESSAGE_PUSH:1===e.dt.length?r.emit(a.OnReceiveMessage,e.dt[0]):r.emit(a.OnReceiveMessages,e.dt);break;case y.EVENT_PONG_CONN:r.internalState.isConnected=!0,r.emit(a.OnConnected);break;case y.EVENT_PONG_RE_CONN:r.internalState.isConnected=!0,r.emit(a.OnReconnected);break;case y.EVENT_PONG_IDLE:break;default:n=e.ev,Object.values(a).includes(n)?(r.emit(e.ev,e.dt),H.includes(e.ev)&&(r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1,r.sseClient&&(r.sseClient.close(),r.sseClient=void 0))):r.config.debug&&console.warn("Unknown SSE event type:",e.ev)}var n},r.handleReconnectSuccess=function(){r.config.username&&(r.internalState.isConnected=!0,r.internalState.reconnectAttempts=0,r.config.debug&&console.log("SSE reconnection successful"),r.emit(a.OnReconnected))},r.handleConnectionClosed=function(){r.internalState.isConnected=!1,r.config.debug&&console.log("SSE connection closed"),r.emit(a.OnDisconnected)},r.login=function(e){try{return r.sseClient?Promise.resolve("login repeat"):r.config.apiAddr?r.config.appKey?(r.config.token=e.token,r.config.username=e.username,r.config.debug&&(console.log("login params",e),console.log("apiAddr",r.config.apiAddr)),Promise.resolve(r.user.login(n({},e,{appKey:r.config.appKey}))).then(function(n){var t=n.code,o=n.data;return 0!=t?Promise.resolve("Login failed, Server error, error code is "+t):(r.sseClient=new c({url:r.config.apiAddr+"/chat/sse/conn?username="+e.username+"&token="+e.token+"&appKey="+r.config.appKey+"&random="+o,onMessage:r.handleMessage,onReconnectSuccess:r.handleReconnectSuccess,onConnectionClosed:r.handleConnectionClosed,token:e.token}),D(function(){return Promise.resolve(r.sseClient.connect()).then(function(e){return r.internalState.isLoggedIn=!0,e})},function(e){return r.internalState.isLoggedIn=!1,Promise.reject(e.message)}))})):Promise.reject("No appKey configured. Please call configure() before login()."):Promise.reject("No apiAddr configured. Please call configure() before login().")}catch(e){return Promise.reject(e)}},r.logout=function(){try{return r.sseClient&&(r.sseClient.close(),r.sseClient=void 0),Promise.resolve(r.user.logout()).then(function(e){return r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1,r.config.username=void 0,r.config.token=void 0,e})}catch(e){return Promise.reject(e)}},r.internalUploadFile=function(e){try{return Promise.resolve(D(function(){var n=new FormData;return n.append("file",e),n.append("filename",e.name),Promise.resolve(fetch(""+r.config.apiAddr+i.UploadFile,{method:"POST",headers:{Authorization:r.config.token?"Bearer "+r.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)}},r.uploadFile=function(e){var n=e.file;try{return Promise.resolve(r.internalUploadFile(n)).then(function(e){var n,t=e.url,r=e.error;return{data:{url:void 0===t?"":t},msg:null!=(n=null==r?void 0:r.message)?n:"",code:r?s.UnknownError:0}})}catch(e){return Promise.reject(e)}},r.sendTextMessage=function(e,n){return r.message.createTextMessage(e,n)},r.sendImageMessage=function(e,n){return r.message.createImageMessage(e,n)},r.sendFileMessage=function(e,n){return r.message.createFileMessage(e,n)},r.sendVideoMessage=function(e,n){return r.message.createVideoMessage(e,n)},r.sendLinkMessage=function(e,n){return r.message.createLinkMessage(e,n)},r.sendGifMessage=function(e,n){return r.message.createGifMessage(e,n)},r.sendOptionMessage=function(e,n){return r.message.createOptionMessage(e,n)},r.sendEmojiMessage=function(e,n){return r.message.createEmojiMessage(e,n)},r.sendCustomMessage=function(e,n){return r.message.createCustomMessage(e,n)},r.getHistoryMessageList=function(e){return r.message.getHistoryMessageList(e)},r.getConversations=function(e){return r.conversation.getConversations(e)},r.createGroup=function(e){return r.group.createGroup(e)},r.getGroupInfo=function(e){return r.group.getGroupInfo(e)},r.getGroupMembers=function(e){return r.group.getGroupMembers(e)},r.joinGroup=function(e){return r.group.joinGroup(e)},r.markConversationRead=function(e){return r.conversation.markConversationRead(e)},r.config.debug=t,r.serviceManager=new F(r),r}var d,l;l=e,(d=u).prototype=Object.create(l.prototype),d.prototype.constructor=d,t(d,l);var g,f,m=u.prototype;return m.getService=function(e){return this.serviceManager.get(e)},m.isConnected=function(){return!!this.sseClient&&this.internalState.isConnected},m.isLoggedIn=function(){return this.internalState.isLoggedIn},m.logRequest=function(e){var n=Math.random().toString(36).substring(2,8),t={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 #"+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.groupCollapsed("%c📦 Request Payload","color: #555; font-weight: bold;"),console.log("%c%s","color: #333; background: #f8f8f8; padding: 8px; border-radius: 4px; border-left: 4px solid #7CAEFF; font-family: monospace; line-height: 1.4;",JSON.stringify(e.data,null,2)),console.groupEnd())},m.onMessage=function(e){var n=this;return this.on(a.OnReceiveMessage,e),function(){return n.off(a.OnReceiveMessage,e)}},m.onMessages=function(e){var n=this;return this.on(a.OnReceiveMessages,e),function(){return n.off(a.OnReceiveMessages,e)}},m.onConnectionChange=function(e){var n=this,t=function(){return e(!0)},r=function(){return e(!1)};return this.on(a.OnConnected,t),this.on(a.OnDisconnected,r),function(){n.off(a.OnConnected,t),n.off(a.OnDisconnected,r)}},m.onKickedOffline=function(e){var n=this;return this.on(a.OnKickedOffline,e),function(){return n.off(a.OnKickedOffline,e)}},g=u,(f=[{key:"message",get:function(){return this.getService(o.MESSAGE)}},{key:"conversation",get:function(){return this.getService(o.CONVERSATION)}},{key:"group",get:function(){return this.getService(o.GROUP)}},{key:"user",get:function(){return this.getService(o.USER)}},{key:"username",get:function(){return this.config.username}},{key:"uuid",get:function(){return(36*Math.random()).toString(36).slice(2)+(new Date).getTime().toString()}}])&&function(e,n){for(var t=0;t<n.length;t++){var o=n[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,r(o.key),o)}}(g.prototype,f),Object.defineProperty(g,"prototype",{writable:!1}),g}(N);export{d as AllowType,v as ApplicationHandleResult,a as CbEvents,s as ErrorCode,b as GROUP_TYPE,E as GroupAtType,g as GroupJoinSource,S as GroupMemberFilter,f as GroupMemberRole,T as GroupMessageReaderFilter,C as GroupStatus,l as GroupType,m as GroupVerificationType,p as LogLevel,P as LoginStatus,k as MSG_TYPE,u as MessageReceiveOptType,R as MessageSendStatus,I as MessageStatus,O as MessageType,A as OnlineState,h as Platform,G as Relationship,i as RequestApi,V as SIMSDK,y as SSE_RESPONSE_TYPE,o as ServiceName,M 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=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this._openHandler=null,this._errorHandler=null,this._messageHandler=null,this._customHandlers=new Map,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed}var n=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.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.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,f,v,p,m,M,O,C,S,E,A,G,T,I,b,y,N,R,P,k,_=/*#__PURE__*/function(){function e(){var e;this.events=((e={})[u.OnReceiveMessage]=[],e[u.OnReceiveMessages]=[],e)}var t=e.prototype;return t.emit=function(e,t){var n=this.events[e];return n&&n.forEach(function(e){return e(t)}),this},t.on=function(e,t){var n;return this.events[e]||(this.events[e]=[]),null==(n=this.events[e])||n.push(t),this},t.off=function(e,t){var n=this.events[e];if(n){var r=n.indexOf(t);r>-1&&(n.splice(r,1),0===n.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"}(f||(f={})),function(e){e[e.Nomal=20]="Nomal",e[e.Admin=60]="Admin",e[e.Owner=100]="Owner"}(v||(v={})),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"}(M||(M={})),function(e){e[e.Unprocessed=0]="Unprocessed",e[e.Agree=1]="Agree",e[e.Reject=-1]="Reject"}(O||(O={})),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"}(C||(C={})),function(e){e[e.Single=1]="Single",e[e.Group=3]="Group",e[e.WorkingGroup=3]="WorkingGroup",e[e.Notification=4]="Notification"}(S||(S={})),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"}(A||(A={})),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"}(G||(G={})),function(e){e[e.isBlack=0]="isBlack",e[e.isFriend=1]="isFriend"}(T||(T={})),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"}(y||(y={})),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"}(N||(N={})),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"}(P||(P={})),function(e){e[e.Sending=1]="Sending",e[e.Succeed=2]="Succeed",e[e.Failed=3]="Failed"}(k||(k={}));var L={NORMAL:0,EDITED:1,DELETED:2},U="undefined"!=typeof uni,w="undefined"!=typeof window,F="simsdk_",j={CONVERSATIONS:F+"conversations",GROUP_MESSAGES:F+"group_messages",USER_INFO:F+"user_info",META_INFO:F+"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 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({},x,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.setConversations=function(e){this.conversationCache=e.length>this.config.MAX_CONVERSATIONS?e.slice(0,this.config.MAX_CONVERSATIONS):[].concat(e),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){var t=e.groupId;if(!t)return!1;var n=this.conversationCache.findIndex(function(e){return e.id===t});return n>=0&&(this.conversationCache[n].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.id===e.id});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.id===e.id});t>=0?r.groupMessageCache[d][t]=e:r.groupMessageCache[d].push(e)},f=n(l);!(g=f()).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(j.META_INFO);t&&(this.metaInfo=JSON.parse(t));var n=localStorage.getItem(j.CONVERSATIONS);n&&(this.conversationCache=JSON.parse(n)),Object.keys(localStorage).filter(function(e){return e.startsWith(j.GROUP_MESSAGES+".")}).forEach(function(t){var n=t.split(".")[1];n&&!isNaN(Number(n))&&(e.accessTimeRecord[n]=0)});var r=localStorage.getItem(j.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(j.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(j.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(j.GROUP_MESSAGES+"."+e+(a>0?"."+a:""),JSON.stringify(i))}}else localStorage.setItem(j.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(j.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=j.GROUP_MESSAGES+"."+e+(t>0?"."+t:"");null!==localStorage.getItem(r)?(localStorage.removeItem(r),t++):n=!1}},t.saveUserInfoToStorage=function(){try{localStorage.setItem(j.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(F)}));!(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}(),H=/*#__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}(),V=/*#__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,s){var i;void 0===n&&(n={});var a=r({},n,((i={msgType:e})[o]=s,i.status=0,i));return this.sendMessage(a,t)},t.createTextMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(R.TEXT,c.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createImageMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(R.IMAGE,c.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createFileMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(R.FILE,c.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createVideoMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(R.VIDEO,c.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createLinkMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(R.LINK,c.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createGifMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(R.GIF,c.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createOptionMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(R.OPTION,c.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createEmojiMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(R.EMOJI,c.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createCustomMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(R.CUSTOM,c.CreateTextMessage,t,"text",e))}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}(),K=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.getConversations=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:c.GetAllConversationList,method:"GET"}))}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)}},e}(),J=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.createGroup=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:c.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},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)}},e}(),q=/*#__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 H(this.sdk);case i.MESSAGE:return new V(this.sdk);case i.CONVERSATION:return new K(this.sdk);case i.GROUP:return new J(this.sdk);default:throw new Error("Unknown service: "+e)}},t.reset=function(){this.services={}},e}();function z(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var X=[c.Logout,u.OnKickedOffline,u.OnUserTokenInvalid,u.OnUserTokenExpired],W=/*#__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.configure=function(e){void 0!==e.debug&&(n.config.debug=e.debug),e.apiAddr&&(n.config.apiAddr=e.apiAddr),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(U?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(w)return console.log("isBrowser ",w),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url:t,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 P.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){return n.updateMessageCache(e)}),n.emit(u.OnReceiveMessages,r)}break;case P.EVENT_PONG_CONN:n.internalState.isConnected=!0,n.emit(u.OnConnected);break;case P.EVENT_PONG_RE_CONN:n.internalState.isConnected=!0,n.emit(u.OnReconnected);break;case P.EVENT_PONG_IDLE:break;default:o=e.ev,Object.values(u).includes(o)?(n.emit(e.ev,e.dt),X.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.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(e)).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(),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}),z(function(){return Promise.resolve(n.sseClient.connect()).then(function(e){return n.internalState.isLoggedIn=!0,e})},function(e){return n.internalState.isLoggedIn=!1,Promise.reject(e.message)}))})}catch(e){return Promise.reject(e)}},n.logout=function(){try{return n.sseClient&&(n.sseClient.close(),n.sseClient=void 0),Promise.resolve(n.user.logout()).then(function(e){return n.internalState.isLoggedIn=!1,n.internalState.isConnected=!1,n.config.username=void 0,n.config.token=void 0,n.cacheManager.clear(),e})}catch(e){return Promise.reject(e)}},n.getConversations=function(e){try{var t=z(function(){return Promise.resolve(n.conversation.getConversations(e)).then(function(t){var o=t.data;if(0===t.code&&o){var s=n.cacheManager.getConversations();if(1===e.pageNo)n.cacheManager.setConversations([].concat(o.records));else{var i=o.records||[],a=new Set(s.map(function(e){return e.id})),c=i.filter(function(e){return!a.has(e.id)}),d=[].concat(s,c);n.cacheManager.setConversations(d)}var l=r({},o,{records:n.cacheManager.getConversations()});n.emit(u.OnConversationListUpdated,l)}else{var g=n.cacheManager.getConversations();g.length>0&&n.emit(u.OnConversationListUpdated,g)}})},function(e){console.error("Failed to get conversations:",e);var t=n.cacheManager.getConversations();t.length>0&&n.emit(u.OnConversationListUpdated,t)});return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},n.internalUploadFile=function(e){try{return Promise.resolve(z(function(){var t=new FormData;return t.append("file",e),t.append("filename",e.name),Promise.resolve(fetch(""+n.config.apiAddr+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){return{url:e.data||""}})})},function(e){return console.error("Upload failed:",e),{error:e}}))}catch(e){return Promise.reject(e)}},n.uploadFile=function(e){var t=e.file;try{return Promise.resolve(n.internalUploadFile(t)).then(function(e){var t,n=e.url,r=e.error;return{data:{url:void 0===n?"":n},msg:null!=(t=null==r?void 0:r.message)?t:"",code:r?a.UnknownError:0}})}catch(e){return Promise.reject(e)}},n.sendTextMessage=function(e,t){return n.message.createTextMessage(e,t)},n.sendImageMessage=function(e,t){return n.message.createImageMessage(e,t)},n.sendFileMessage=function(e,t){return n.message.createFileMessage(e,t)},n.sendVideoMessage=function(e,t){return n.message.createVideoMessage(e,t)},n.sendLinkMessage=function(e,t){return n.message.createLinkMessage(e,t)},n.sendGifMessage=function(e,t){return n.message.createGifMessage(e,t)},n.sendOptionMessage=function(e,t){return n.message.createOptionMessage(e,t)},n.sendEmojiMessage=function(e,t){return n.message.createEmojiMessage(e,t)},n.sendCustomMessage=function(e,t){return n.message.createCustomMessage(e,t)},n.getHistoryMessageList=function(e){try{var t=z(function(){e.groupId&&n.cacheManager.markConversationAsActive(e.groupId);var t=[];if(e.groupId&&(t=n.cacheManager.getGroupMessages(e.groupId)),t.length>0&&""===e.lastId){var o=t.slice(0,e.size||20);n.emit(u.OnMessagesListLoaded,{list:o,groupId:e.groupId})}return Promise.resolve(n.message.getHistoryMessageList(e)).then(function(o){var s=o.data;if(0===o.code&&s)e.groupId&&n.cacheManager.addGroupMessages(s.groupChatList||[]),n.emit(u.OnMessagesListLoaded,r({},s,{isFromCache:!1,groupId:e.groupId}));else if(t.length>0&&!(""===e.lastId&&t.length>0)){var i=t.slice(0,0+(e.size||20));n.emit(u.OnMessagesListLoaded,{list:i,groupId:e.groupId})}})},function(t){console.error("Failed to get history messages:",t);var r=[];if(e.groupId&&(r=n.cacheManager.getGroupMessages(e.groupId)),r.length>0){var o=r.slice(0,0+(e.size||20));n.emit(u.OnMessagesListLoaded,{list:o,groupId:e.groupId,error:t.message})}});return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},n.createGroup=function(e){return n.group.createGroup(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.config.debug=t,n.cacheManager=new D({persistEnabled:!0,debug:t}),n.serviceManager=new q(n),n}var n,l;l=e,(n=t).prototype=Object.create(l.prototype),n.prototype.constructor=n,o(n,l);var g,h,f=t.prototype;return f.getService=function(e){return this.serviceManager.get(e)},f.isConnected=function(){return!!this.sseClient&&this.internalState.isConnected},f.isLoggedIn=function(){return this.internalState.isLoggedIn},f.logRequest=function(e){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.groupCollapsed("%c📦 Request Payload","color: #555; font-weight: bold;"),console.log("%c%s","color: #333; background: #f8f8f8; padding: 8px; border-radius: 4px; border-left: 4px solid #7CAEFF; font-family: monospace; line-height: 1.4;",JSON.stringify(e.data,null,2)),console.groupEnd())},f.initializeConversationCache=function(){try{var e=this,t=z(function(){return Promise.resolve(e.conversation.getConversations({pageNo:1,pageSize:20})).then(function(t){var n=t.data;0===t.code&&n&&n.records&&(e.cacheManager.setConversations(n.records),e.emit(u.OnConversationListUpdated,n),e.config.debug&&console.log("Conversation cache initialized with",n.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)}},f.onMessage=function(e){var t=this;return this.on(u.OnReceiveMessage,e),function(){return t.off(u.OnReceiveMessage,e)}},f.onMessages=function(e){var t=this;return this.on(u.OnReceiveMessages,e),function(){return t.off(u.OnReceiveMessages,e)}},f.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)}},f.onKickedOffline=function(e){var t=this;return this.on(u.OnKickedOffline,e),function(){return t.off(u.OnKickedOffline,e)}},f.updateMessageCache=function(e){if(e.groupId&&this.cacheManager.addGroupMessage(e),this.cacheManager.updateConversationWithMessage(e)){var t=this.cacheManager.getConversations();this.emit(u.OnConversationListUpdated,t)}},f.getCachedGroupMessages=function(e){return this.cacheManager.getGroupMessages(e)},g=t,(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,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,h),Object.defineProperty(g,"prototype",{writable:!1}),g}(_);export{g as AllowType,O as ApplicationHandleResult,u as CbEvents,a as ErrorCode,N as GROUP_TYPE,A as GroupAtType,f as GroupJoinSource,G as GroupMemberFilter,v as GroupMemberRole,y as GroupMessageReaderFilter,E as GroupStatus,h as GroupType,p as GroupVerificationType,M as LogLevel,I as LoginStatus,R as MSG_TYPE,l as MessageReceiveOptType,k as MessageSendStatus,L as MessageStatus,C as MessageType,b as OnlineState,m as Platform,T as Relationship,c as RequestApi,W as SIMSDK,P as SSE_RESPONSE_TYPE,i as ServiceName,S as SessionType};
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- var e,t=require("event-source-polyfill");function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},n.apply(null,arguments)}function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function o(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}exports.ServiceName=void 0,(e=exports.ServiceName||(exports.ServiceName={})).MESSAGE="message",e.CONVERSATION="conversation",e.GROUP="group",e.USER="user";var s,i,a,c=/*#__PURE__*/function(){function e(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this._openHandler=null,this._errorHandler=null,this._messageHandler=null,this._customHandlers=new Map,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed}var n=e.prototype;return n.removeAllEventListeners=function(){var e=this;this.eventSource&&(this._openHandler&&this.eventSource.removeEventListener("open",this._openHandler),this._errorHandler&&this.eventSource.removeEventListener("error",this._errorHandler),this._messageHandler&&this.eventSource.removeEventListener("message",this._messageHandler),this.handlers.forEach(function(t,n){var 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 e=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(n,r){try{e.eventSource=new t.EventSourcePolyfill(e.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+e.token}}),e._openHandler=function(t){console.log("SSE connection established"),e.connected=!0,e.reconnectAttempts>0&&e.onReconnectSuccessCallback&&e.onReconnectSuccessCallback(),e.reconnectAttempts=0,e.reconnectTimeout=5e3,n("SSE connect successful!")},e._errorHandler=function(t){console.error("SSE connection error:",t),e.connected=!1,401===t.status||t.statusText&&t.statusText.includes("Unauthorized")?(e.cleanup(),e.notifyConnectionClosed(!0)):e.handleReconnect(),e.connected||r(new Error("SSE connect error"))},e._messageHandler=function(t){try{console.log("SSE received message:",t.data);var n=JSON.parse(t.data);e.onMessageCallback&&e.onMessageCallback(n)}catch(e){console.error("Error parsing message:",e)}},e.eventSource.addEventListener("open",e._openHandler),e.eventSource.addEventListener("error",e._errorHandler),e.eventSource.addEventListener("message",e._messageHandler),e.handlers.forEach(function(t,n){var r=e._customHandlers.get(n);r&&e.eventSource&&e.eventSource.addEventListener(n,r)});var o=setTimeout(function(){e.connected||(r(new Error("Connection timeout")),e.handleReconnect())},1e4),s=e._openHandler;e._openHandler=function(e){clearTimeout(o),s(e)}}catch(t){console.error("Failed to create EventSource:",t),e.handleReconnect(),r(t)}})},n.notifyConnectionClosed=function(e){void 0===e&&(e=!1),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(),e?console.warn("SSE connection closed due to authentication error"):console.log("SSE connection closed")},n.handleReconnect=function(){var e=this;if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return console.error("Max reconnection attempts reached"),void this.destroySse();console.log("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,3e4),e.reconnectTimer=null,e.connect().catch(function(){})},this.reconnectTimeout)}},n.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},n.unsubscribe=function(){this.cleanup(),this.handlers.clear(),this._customHandlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},n.destroySse=function(){this.unsubscribe(),this.reconnectAttempts=this.maxReconnectAttempts,this.notifyConnectionClosed()},n.close=function(){this.destroySse(),console.log("SSE 连接已关闭")},n.isConnected=function(){return this.connected},e}();exports.ErrorCode=void 0,(s=exports.ErrorCode||(exports.ErrorCode={}))[s.ConnectionEstablishmentFailed=1e4]="ConnectionEstablishmentFailed",s[s.ResourceLoadNotCompleteError=10004]="ResourceLoadNotCompleteError",s[s.UnknownError=10005]="UnknownError",s[s.LoginRepeatError=10102]="LoginRepeatError",exports.RequestApi=void 0,(i=exports.RequestApi||(exports.RequestApi={})).Login="/chat/member/login",i.Logout="/chat/member/logout",i.CreateGroup="CreateGroup",i.GetGroupInfo="/chat/group/groupInfo",i.GetGroupMembers="/chat/group/groupMembers",i.JoinGroup="/chat/group/joinGroup",i.GetAllConversationList="/chat/group/list",i.MarkConversationMessageAsRead="/chat/group/lastRead",i.CreateTextMessage="/chat/message/push",i.GetHistoryMessageList="/chat/message/pull",i.UploadFile="/chat/img/upload",exports.CbEvents=void 0,(a=exports.CbEvents||(exports.CbEvents={})).OnConnected="OnConnected",a.OnDisconnected="OnDisconnected",a.OnReconnecting="OnReconnecting",a.OnReconnected="OnReconnected",a.OnReconnectFailed="OnReconnectFailed",a.OnNetworkChange="OnNetworkChange",a.OnReceiveMessage="OnReceiveMessage",a.OnReceiveMessages="OnReceiveMessages",a.OnMessageSent="OnMessageSent",a.OnMessageFailed="OnMessageFailed",a.OnMessageRevoked="OnMessageRevoked",a.OnMessageDeleted="OnMessageDeleted",a.OnMessageRead="OnMessageRead",a.OnTypingStatusUpdate="OnTypingStatusUpdate",a.OnUserStatusChange="OnUserStatusChange",a.OnKickedOffline="OnKickedOffline",a.OnUserTokenInvalid="OnUserTokenInvalid",a.OnUserTokenExpired="OnUserTokenExpired",a.OnForceOffline="OnForceOffline",a.OnUserInfoUpdated="OnUserInfoUpdated",a.OnGroupCreated="OnGroupCreated",a.OnGroupInfoUpdated="OnGroupInfoUpdated",a.OnGroupDissolved="OnGroupDissolved",a.OnJoinGroup="OnJoinGroup",a.OnLeaveGroup="OnLeaveGroup",a.OnGroupMemberJoined="OnGroupMemberJoined",a.OnGroupMemberLeft="OnGroupMemberLeft",a.OnGroupMemberKicked="OnGroupMemberKicked",a.OnGroupOwnerChanged="OnGroupOwnerChanged",a.OnGroupAdminAdded="OnGroupAdminAdded",a.OnGroupAdminRemoved="OnGroupAdminRemoved",a.OnGroupMemberMuted="OnGroupMemberMuted",a.OnGroupMemberUnmuted="OnGroupMemberUnmuted",a.OnGroupAllMemberMuted="OnGroupAllMemberMuted",a.OnGroupAllMemberUnmuted="OnGroupAllMemberUnmuted",a.OnConversationCreated="OnConversationCreated",a.OnConversationDeleted="OnConversationDeleted",a.OnConversationUpdated="OnConversationUpdated",a.OnUnreadCountChanged="OnUnreadCountChanged",a.OnConversationPinned="OnConversationPinned",a.OnConversationUnpinned="OnConversationUnpinned",a.OnConversationMuted="OnConversationMuted",a.OnConversationUnmuted="OnConversationUnmuted",a.OnPongConn="OnPongConn",a.OnPongReConn="OnPongReConn",a.OnPongIdle="OnPongIdle",a.OnError="OnError",a.OnWarning="OnWarning",a.OnLog="OnLog";var u,d,l,p,g,v,m,f,h,O,M,E,S,x,C,G,P,T,A,R,b,y,N=/*#__PURE__*/function(){function e(){var e;this.events=((e={})[exports.CbEvents.OnReceiveMessage]=[],e[exports.CbEvents.OnReceiveMessages]=[],e)}var t=e.prototype;return t.emit=function(e,t){var n=this.events[e];return n&&n.forEach(function(e){return e(t)}),this},t.on=function(e,t){var n;return this.events[e]||(this.events[e]=[]),null==(n=this.events[e])||n.push(t),this},t.off=function(e,t){var n=this.events[e];if(n){var r=n.indexOf(t);r>-1&&(n.splice(r,1),0===n.length&&delete this.events[e])}return this},e}();exports.MessageReceiveOptType=void 0,(u=exports.MessageReceiveOptType||(exports.MessageReceiveOptType={}))[u.Nomal=0]="Nomal",u[u.NotReceive=1]="NotReceive",u[u.NotNotify=2]="NotNotify",exports.AllowType=void 0,(d=exports.AllowType||(exports.AllowType={}))[d.Allowed=0]="Allowed",d[d.NotAllowed=1]="NotAllowed",exports.GroupType=void 0,(l=exports.GroupType||(exports.GroupType={}))[l.Group=2]="Group",l[l.WorkingGroup=2]="WorkingGroup",exports.GroupJoinSource=void 0,(p=exports.GroupJoinSource||(exports.GroupJoinSource={}))[p.Invitation=2]="Invitation",p[p.Search=3]="Search",p[p.QrCode=4]="QrCode",exports.GroupMemberRole=void 0,(g=exports.GroupMemberRole||(exports.GroupMemberRole={}))[g.Nomal=20]="Nomal",g[g.Admin=60]="Admin",g[g.Owner=100]="Owner",exports.GroupVerificationType=void 0,(v=exports.GroupVerificationType||(exports.GroupVerificationType={}))[v.ApplyNeedInviteNot=0]="ApplyNeedInviteNot",v[v.AllNeed=1]="AllNeed",v[v.AllNot=2]="AllNot",exports.Platform=void 0,(m=exports.Platform||(exports.Platform={}))[m.iOS=1]="iOS",m[m.Android=2]="Android",m[m.Windows=3]="Windows",m[m.MacOSX=4]="MacOSX",m[m.Web=5]="Web",m[m.Linux=7]="Linux",m[m.AndroidPad=8]="AndroidPad",m[m.iPad=9]="iPad",exports.LogLevel=void 0,(f=exports.LogLevel||(exports.LogLevel={}))[f.Debug=5]="Debug",f[f.Info=4]="Info",f[f.Warn=3]="Warn",f[f.Error=2]="Error",f[f.Fatal=1]="Fatal",f[f.Panic=0]="Panic",exports.ApplicationHandleResult=void 0,(h=exports.ApplicationHandleResult||(exports.ApplicationHandleResult={}))[h.Unprocessed=0]="Unprocessed",h[h.Agree=1]="Agree",h[h.Reject=-1]="Reject",exports.MessageType=void 0,(O=exports.MessageType||(exports.MessageType={}))[O.MESSAGE_TYPE_TEXT=0]="MESSAGE_TYPE_TEXT",O[O.TextMessage=101]="TextMessage",O[O.PictureMessage=102]="PictureMessage",O[O.VoiceMessage=103]="VoiceMessage",O[O.VideoMessage=104]="VideoMessage",O[O.FileMessage=105]="FileMessage",O[O.AtTextMessage=106]="AtTextMessage",O[O.MergeMessage=107]="MergeMessage",O[O.CardMessage=108]="CardMessage",O[O.LocationMessage=109]="LocationMessage",O[O.CustomMessage=110]="CustomMessage",O[O.TypingMessage=113]="TypingMessage",O[O.QuoteMessage=114]="QuoteMessage",O[O.FaceMessage=115]="FaceMessage",O[O.FriendAdded=1201]="FriendAdded",O[O.OANotification=1400]="OANotification",O[O.GroupCreated=1501]="GroupCreated",O[O.MemberQuit=1504]="MemberQuit",O[O.GroupOwnerTransferred=1507]="GroupOwnerTransferred",O[O.MemberKicked=1508]="MemberKicked",O[O.MemberInvited=1509]="MemberInvited",O[O.MemberEnter=1510]="MemberEnter",O[O.GroupDismissed=1511]="GroupDismissed",O[O.GroupMemberMuted=1512]="GroupMemberMuted",O[O.GroupMemberCancelMuted=1513]="GroupMemberCancelMuted",O[O.GroupMuted=1514]="GroupMuted",O[O.GroupCancelMuted=1515]="GroupCancelMuted",O[O.GroupAnnouncementUpdated=1519]="GroupAnnouncementUpdated",O[O.GroupNameUpdated=1520]="GroupNameUpdated",O[O.BurnMessageChange=1701]="BurnMessageChange",O[O.RevokeMessage=2101]="RevokeMessage",exports.SessionType=void 0,(M=exports.SessionType||(exports.SessionType={}))[M.Single=1]="Single",M[M.Group=3]="Group",M[M.WorkingGroup=3]="WorkingGroup",M[M.Notification=4]="Notification",exports.GroupStatus=void 0,(E=exports.GroupStatus||(exports.GroupStatus={}))[E.Nomal=0]="Nomal",E[E.Baned=1]="Baned",E[E.Dismissed=2]="Dismissed",E[E.Muted=3]="Muted",exports.GroupAtType=void 0,(S=exports.GroupAtType||(exports.GroupAtType={}))[S.AtNormal=0]="AtNormal",S[S.AtMe=1]="AtMe",S[S.AtAll=2]="AtAll",S[S.AtAllAtMe=3]="AtAllAtMe",S[S.AtGroupNotice=4]="AtGroupNotice",exports.GroupMemberFilter=void 0,(x=exports.GroupMemberFilter||(exports.GroupMemberFilter={}))[x.All=0]="All",x[x.Owner=1]="Owner",x[x.Admin=2]="Admin",x[x.Nomal=3]="Nomal",x[x.AdminAndNomal=4]="AdminAndNomal",x[x.AdminAndOwner=5]="AdminAndOwner",exports.Relationship=void 0,(C=exports.Relationship||(exports.Relationship={}))[C.isBlack=0]="isBlack",C[C.isFriend=1]="isFriend",exports.LoginStatus=void 0,(G=exports.LoginStatus||(exports.LoginStatus={}))[G.Logout=1]="Logout",G[G.Logging=2]="Logging",G[G.Logged=3]="Logged",exports.OnlineState=void 0,(P=exports.OnlineState||(exports.OnlineState={}))[P.Online=1]="Online",P[P.Offline=0]="Offline",exports.GroupMessageReaderFilter=void 0,(T=exports.GroupMessageReaderFilter||(exports.GroupMessageReaderFilter={}))[T.Readed=0]="Readed",T[T.UnRead=1]="UnRead",exports.GROUP_TYPE=void 0,(A=exports.GROUP_TYPE||(exports.GROUP_TYPE={}))[A.ONE_ON_ONE=0]="ONE_ON_ONE",A[A.GROUP_CHAT=1]="GROUP_CHAT",A[A.CUSTOMER_SERVICE=2]="CUSTOMER_SERVICE",exports.MSG_TYPE=void 0,(R=exports.MSG_TYPE||(exports.MSG_TYPE={}))[R.TEXT=0]="TEXT",R[R.IMAGE=1]="IMAGE",R[R.FILE=2]="FILE",R[R.AUDIO=3]="AUDIO",R[R.VIDEO=4]="VIDEO",R[R.LINK=5]="LINK",R[R.GIF=6]="GIF",R[R.OPTION=7]="OPTION",R[R.EMOJI=8]="EMOJI",R[R.CUSTOM=100]="CUSTOM",exports.SSE_RESPONSE_TYPE=void 0,(b=exports.SSE_RESPONSE_TYPE||(exports.SSE_RESPONSE_TYPE={}))[b.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",b[b.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",b[b.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",b[b.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",exports.MessageSendStatus=void 0,(y=exports.MessageSendStatus||(exports.MessageSendStatus={}))[y.Sending=1]="Sending",y[y.Succeed=2]="Succeed",y[y.Failed=3]="Failed";var k="undefined"!=typeof uni,_="undefined"!=typeof window,L=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.login=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.Login,method:"POST"}))}catch(e){return Promise.reject(e)}},t.logout=function(){try{return Promise.resolve(this.sdk.sendRequest({data:{},url:exports.RequestApi.Logout,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),w=/*#__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,r,o,s){var i;void 0===r&&(r={});var a=n({},r,((i={msgType:e})[o]=s,i.status=0,i));return this.sendMessage(a,t)},t.createTextMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.TEXT,exports.RequestApi.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createImageMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.IMAGE,exports.RequestApi.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createFileMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.FILE,exports.RequestApi.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createVideoMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.VIDEO,exports.RequestApi.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createLinkMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.LINK,exports.RequestApi.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createGifMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.GIF,exports.RequestApi.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createOptionMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.OPTION,exports.RequestApi.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createEmojiMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.EMOJI,exports.RequestApi.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createCustomMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.CUSTOM,exports.RequestApi.CreateTextMessage,t,"text",e))}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:exports.RequestApi.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),I=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.getConversations=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.GetAllConversationList,method:"GET"}))}catch(e){return Promise.reject(e)}},t.markConversationRead=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.MarkConversationMessageAsRead,method:"GET"}))}catch(e){return Promise.reject(e)}},e}(),U=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.createGroup=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},t.getGroupInfo=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:e},url:exports.RequestApi.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},t.getGroupMembers=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.GetGroupMembers,method:"GET"}))}catch(e){return Promise.reject(e)}},t.joinGroup=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.JoinGroup,method:"GET"}))}catch(e){return Promise.reject(e)}},e}(),F=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.services={},this.sdk=e}var t=e.prototype;return t.get=function(e){return this.services[e]||(this.services[e]=this.createService(e)),this.services[e]},t.createService=function(e){switch(e){case exports.ServiceName.USER:return new L(this.sdk);case exports.ServiceName.MESSAGE:return new w(this.sdk);case exports.ServiceName.CONVERSATION:return new I(this.sdk);case exports.ServiceName.GROUP:return new U(this.sdk);default:throw new Error("Unknown service: "+e)}},t.reset=function(){this.services={}},e}();function j(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var q=[exports.RequestApi.Logout,exports.CbEvents.OnKickedOffline,exports.CbEvents.OnUserTokenInvalid,exports.CbEvents.OnUserTokenExpired],D=/*#__PURE__*/function(e){function t(t){var r;return void 0===t&&(t=!1),(r=e.call(this)||this).config={debug:!1},r.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},r.sseClient=void 0,r.serviceManager=void 0,r.configure=function(e){void 0!==e.debug&&(r.config.debug=e.debug),e.apiAddr&&(r.config.apiAddr=e.apiAddr),e.appKey&&(r.config.appKey=e.appKey)},r.sendRequest=function(e){r.internalState.lastActivity=Date.now(),r.config.debug&&r.logRequest(e);var t=r.config.apiAddr+e.url,n=e.data;if("GET"===e.method&&n){var o=new URLSearchParams;Object.entries(n).forEach(function(e){var t=e[1];null!=t&&o.append(e[0],String(t))});var s=o.toString();s&&(t+=(t.includes("?")?"&":"?")+s),n=void 0}return function(e){try{return Promise.resolve(k?new Promise(function(t,n){uni.request({url:e.url,method:e.method||"GET",header:e.headers,data:e.data,success:function(e){return t(e.data)},fail:function(e){return n(e)}})}):function(){if(_)return console.log("isBrowser ",_),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url:t,method:e.method,headers:{"Content-Type":"application/json",Authorization:r.config.token?"Bearer "+r.config.token:""},data:n})},r.createRequestFunction=function(e,t){return function(n){return r.sendRequest({data:n,url:e,method:t})}},r.createRequestFunctionWithoutParams=function(e,t){return function(){return r.sendRequest({data:void 0,method:t,url:e})}},r.handleMessage=function(e){switch(r.config.debug&&console.log("handleMessage response",e),e.ev){case exports.SSE_RESPONSE_TYPE.EVENT_MESSAGE_PUSH:1===e.dt.length?r.emit(exports.CbEvents.OnReceiveMessage,e.dt[0]):r.emit(exports.CbEvents.OnReceiveMessages,e.dt);break;case exports.SSE_RESPONSE_TYPE.EVENT_PONG_CONN:r.internalState.isConnected=!0,r.emit(exports.CbEvents.OnConnected);break;case exports.SSE_RESPONSE_TYPE.EVENT_PONG_RE_CONN:r.internalState.isConnected=!0,r.emit(exports.CbEvents.OnReconnected);break;case exports.SSE_RESPONSE_TYPE.EVENT_PONG_IDLE:break;default:t=e.ev,Object.values(exports.CbEvents).includes(t)?(r.emit(e.ev,e.dt),q.includes(e.ev)&&(r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1,r.sseClient&&(r.sseClient.close(),r.sseClient=void 0))):r.config.debug&&console.warn("Unknown SSE event type:",e.ev)}var t},r.handleReconnectSuccess=function(){r.config.username&&(r.internalState.isConnected=!0,r.internalState.reconnectAttempts=0,r.config.debug&&console.log("SSE reconnection successful"),r.emit(exports.CbEvents.OnReconnected))},r.handleConnectionClosed=function(){r.internalState.isConnected=!1,r.config.debug&&console.log("SSE connection closed"),r.emit(exports.CbEvents.OnDisconnected)},r.login=function(e){try{return r.sseClient?Promise.resolve("login repeat"):r.config.apiAddr?r.config.appKey?(r.config.token=e.token,r.config.username=e.username,r.config.debug&&(console.log("login params",e),console.log("apiAddr",r.config.apiAddr)),Promise.resolve(r.user.login(n({},e,{appKey:r.config.appKey}))).then(function(t){var n=t.code,o=t.data;return 0!=n?Promise.resolve("Login failed, Server error, error code is "+n):(r.sseClient=new c({url:r.config.apiAddr+"/chat/sse/conn?username="+e.username+"&token="+e.token+"&appKey="+r.config.appKey+"&random="+o,onMessage:r.handleMessage,onReconnectSuccess:r.handleReconnectSuccess,onConnectionClosed:r.handleConnectionClosed,token:e.token}),j(function(){return Promise.resolve(r.sseClient.connect()).then(function(e){return r.internalState.isLoggedIn=!0,e})},function(e){return r.internalState.isLoggedIn=!1,Promise.reject(e.message)}))})):Promise.reject("No appKey configured. Please call configure() before login()."):Promise.reject("No apiAddr configured. Please call configure() before login().")}catch(e){return Promise.reject(e)}},r.logout=function(){try{return r.sseClient&&(r.sseClient.close(),r.sseClient=void 0),Promise.resolve(r.user.logout()).then(function(e){return r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1,r.config.username=void 0,r.config.token=void 0,e})}catch(e){return Promise.reject(e)}},r.internalUploadFile=function(e){try{return Promise.resolve(j(function(){var t=new FormData;return t.append("file",e),t.append("filename",e.name),Promise.resolve(fetch(""+r.config.apiAddr+exports.RequestApi.UploadFile,{method:"POST",headers:{Authorization:r.config.token?"Bearer "+r.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){return{url:e.data||""}})})},function(e){return console.error("Upload failed:",e),{error:e}}))}catch(e){return Promise.reject(e)}},r.uploadFile=function(e){var t=e.file;try{return Promise.resolve(r.internalUploadFile(t)).then(function(e){var t,n=e.url,r=e.error;return{data:{url:void 0===n?"":n},msg:null!=(t=null==r?void 0:r.message)?t:"",code:r?exports.ErrorCode.UnknownError:0}})}catch(e){return Promise.reject(e)}},r.sendTextMessage=function(e,t){return r.message.createTextMessage(e,t)},r.sendImageMessage=function(e,t){return r.message.createImageMessage(e,t)},r.sendFileMessage=function(e,t){return r.message.createFileMessage(e,t)},r.sendVideoMessage=function(e,t){return r.message.createVideoMessage(e,t)},r.sendLinkMessage=function(e,t){return r.message.createLinkMessage(e,t)},r.sendGifMessage=function(e,t){return r.message.createGifMessage(e,t)},r.sendOptionMessage=function(e,t){return r.message.createOptionMessage(e,t)},r.sendEmojiMessage=function(e,t){return r.message.createEmojiMessage(e,t)},r.sendCustomMessage=function(e,t){return r.message.createCustomMessage(e,t)},r.getHistoryMessageList=function(e){return r.message.getHistoryMessageList(e)},r.getConversations=function(e){return r.conversation.getConversations(e)},r.createGroup=function(e){return r.group.createGroup(e)},r.getGroupInfo=function(e){return r.group.getGroupInfo(e)},r.getGroupMembers=function(e){return r.group.getGroupMembers(e)},r.joinGroup=function(e){return r.group.joinGroup(e)},r.markConversationRead=function(e){return r.conversation.markConversationRead(e)},r.config.debug=t,r.serviceManager=new F(r),r}var s,i;i=e,(s=t).prototype=Object.create(i.prototype),s.prototype.constructor=s,r(s,i);var a,u,d=t.prototype;return d.getService=function(e){return this.serviceManager.get(e)},d.isConnected=function(){return!!this.sseClient&&this.internalState.isConnected},d.isLoggedIn=function(){return this.internalState.isLoggedIn},d.logRequest=function(e){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.groupCollapsed("%c📦 Request Payload","color: #555; font-weight: bold;"),console.log("%c%s","color: #333; background: #f8f8f8; padding: 8px; border-radius: 4px; border-left: 4px solid #7CAEFF; font-family: monospace; line-height: 1.4;",JSON.stringify(e.data,null,2)),console.groupEnd())},d.onMessage=function(e){var t=this;return this.on(exports.CbEvents.OnReceiveMessage,e),function(){return t.off(exports.CbEvents.OnReceiveMessage,e)}},d.onMessages=function(e){var t=this;return this.on(exports.CbEvents.OnReceiveMessages,e),function(){return t.off(exports.CbEvents.OnReceiveMessages,e)}},d.onConnectionChange=function(e){var t=this,n=function(){return e(!0)},r=function(){return e(!1)};return this.on(exports.CbEvents.OnConnected,n),this.on(exports.CbEvents.OnDisconnected,r),function(){t.off(exports.CbEvents.OnConnected,n),t.off(exports.CbEvents.OnDisconnected,r)}},d.onKickedOffline=function(e){var t=this;return this.on(exports.CbEvents.OnKickedOffline,e),function(){return t.off(exports.CbEvents.OnKickedOffline,e)}},a=t,(u=[{key:"message",get:function(){return this.getService(exports.ServiceName.MESSAGE)}},{key:"conversation",get:function(){return this.getService(exports.ServiceName.CONVERSATION)}},{key:"group",get:function(){return this.getService(exports.ServiceName.GROUP)}},{key:"user",get:function(){return this.getService(exports.ServiceName.USER)}},{key:"username",get:function(){return this.config.username}},{key:"uuid",get:function(){return(36*Math.random()).toString(36).slice(2)+(new Date).getTime().toString()}}])&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}(a.prototype,u),Object.defineProperty(a,"prototype",{writable:!1}),a}(N);exports.MessageStatus={NORMAL:0,EDITED:1,DELETED:2},exports.SIMSDK=D;
1
+ var e,t=require("event-source-polyfill");function n(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 r(e,t){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,t){if(e){if("string"==typeof e)return n(e,t);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)?n(e,t):void 0}}(e))||t&&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 o(){return o=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},o.apply(null,arguments)}function s(e,t){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},s(e,t)}function i(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}exports.ServiceName=void 0,(e=exports.ServiceName||(exports.ServiceName={})).MESSAGE="message",e.CONVERSATION="conversation",e.GROUP="group",e.USER="user";var a,c,u,d=/*#__PURE__*/function(){function e(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this._openHandler=null,this._errorHandler=null,this._messageHandler=null,this._customHandlers=new Map,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed}var n=e.prototype;return n.removeAllEventListeners=function(){var e=this;this.eventSource&&(this._openHandler&&this.eventSource.removeEventListener("open",this._openHandler),this._errorHandler&&this.eventSource.removeEventListener("error",this._errorHandler),this._messageHandler&&this.eventSource.removeEventListener("message",this._messageHandler),this.handlers.forEach(function(t,n){var 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 e=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(n,r){try{e.eventSource=new t.EventSourcePolyfill(e.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+e.token}}),e._openHandler=function(t){console.log("SSE connection established"),e.connected=!0,e.reconnectAttempts>0&&e.onReconnectSuccessCallback&&e.onReconnectSuccessCallback(),e.reconnectAttempts=0,e.reconnectTimeout=5e3,n("SSE connect successful!")},e._errorHandler=function(t){console.error("SSE connection error:",t),e.connected=!1,401===t.status||t.statusText&&t.statusText.includes("Unauthorized")?(e.cleanup(),e.notifyConnectionClosed(!0)):e.handleReconnect(),e.connected||r(new Error("SSE connect error"))},e._messageHandler=function(t){try{console.log("SSE received message:",t.data);var n=JSON.parse(t.data);e.onMessageCallback&&e.onMessageCallback(n)}catch(e){console.error("Error parsing message:",e)}},e.eventSource.addEventListener("open",e._openHandler),e.eventSource.addEventListener("error",e._errorHandler),e.eventSource.addEventListener("message",e._messageHandler),e.handlers.forEach(function(t,n){var r=e._customHandlers.get(n);r&&e.eventSource&&e.eventSource.addEventListener(n,r)});var o=setTimeout(function(){e.connected||(r(new Error("Connection timeout")),e.handleReconnect())},1e4),s=e._openHandler;e._openHandler=function(e){clearTimeout(o),s(e)}}catch(t){console.error("Failed to create EventSource:",t),e.handleReconnect(),r(t)}})},n.notifyConnectionClosed=function(e){void 0===e&&(e=!1),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(),e?console.warn("SSE connection closed due to authentication error"):console.log("SSE connection closed")},n.handleReconnect=function(){var e=this;if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return console.error("Max reconnection attempts reached"),void this.destroySse();console.log("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,3e4),e.reconnectTimer=null,e.connect().catch(function(){})},this.reconnectTimeout)}},n.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},n.unsubscribe=function(){this.cleanup(),this.handlers.clear(),this._customHandlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},n.destroySse=function(){this.unsubscribe(),this.reconnectAttempts=this.maxReconnectAttempts,this.notifyConnectionClosed()},n.close=function(){this.destroySse(),console.log("SSE 连接已关闭")},n.isConnected=function(){return this.connected},e}();exports.ErrorCode=void 0,(a=exports.ErrorCode||(exports.ErrorCode={}))[a.ConnectionEstablishmentFailed=1e4]="ConnectionEstablishmentFailed",a[a.ResourceLoadNotCompleteError=10004]="ResourceLoadNotCompleteError",a[a.UnknownError=10005]="UnknownError",a[a.LoginRepeatError=10102]="LoginRepeatError",exports.RequestApi=void 0,(c=exports.RequestApi||(exports.RequestApi={})).Login="/chat/member/login",c.Logout="/chat/member/logout",c.CreateGroup="CreateGroup",c.GetGroupInfo="/chat/group/groupInfo",c.GetGroupMembers="/chat/group/groupMembers",c.JoinGroup="/chat/group/joinGroup",c.GetAllConversationList="/chat/group/list",c.MarkConversationMessageAsRead="/chat/group/lastRead",c.CreateTextMessage="/chat/message/push",c.GetHistoryMessageList="/chat/message/pull",c.UploadFile="/chat/img/upload",exports.CbEvents=void 0,(u=exports.CbEvents||(exports.CbEvents={})).OnConnected="OnConnected",u.OnDisconnected="OnDisconnected",u.OnReconnecting="OnReconnecting",u.OnReconnected="OnReconnected",u.OnReconnectFailed="OnReconnectFailed",u.OnNetworkChange="OnNetworkChange",u.OnReceiveMessage="OnReceiveMessage",u.OnReceiveMessages="OnReceiveMessages",u.OnMessagesListLoaded="OnMessagesListLoaded",u.OnMessageSent="OnMessageSent",u.OnMessageFailed="OnMessageFailed",u.OnMessageRevoked="OnMessageRevoked",u.OnMessageDeleted="OnMessageDeleted",u.OnMessageRead="OnMessageRead",u.OnTypingStatusUpdate="OnTypingStatusUpdate",u.OnUserStatusChange="OnUserStatusChange",u.OnKickedOffline="OnKickedOffline",u.OnUserTokenInvalid="OnUserTokenInvalid",u.OnUserTokenExpired="OnUserTokenExpired",u.OnForceOffline="OnForceOffline",u.OnUserInfoUpdated="OnUserInfoUpdated",u.OnGroupCreated="OnGroupCreated",u.OnGroupInfoUpdated="OnGroupInfoUpdated",u.OnGroupDissolved="OnGroupDissolved",u.OnJoinGroup="OnJoinGroup",u.OnLeaveGroup="OnLeaveGroup",u.OnGroupMemberJoined="OnGroupMemberJoined",u.OnGroupMemberLeft="OnGroupMemberLeft",u.OnGroupMemberKicked="OnGroupMemberKicked",u.OnGroupOwnerChanged="OnGroupOwnerChanged",u.OnGroupAdminAdded="OnGroupAdminAdded",u.OnGroupAdminRemoved="OnGroupAdminRemoved",u.OnGroupMemberMuted="OnGroupMemberMuted",u.OnGroupMemberUnmuted="OnGroupMemberUnmuted",u.OnGroupAllMemberMuted="OnGroupAllMemberMuted",u.OnGroupAllMemberUnmuted="OnGroupAllMemberUnmuted",u.OnConversationCreated="OnConversationCreated",u.OnConversationDeleted="OnConversationDeleted",u.OnConversationListUpdated="OnConversationListUpdated",u.OnConversationUpdated="OnConversationUpdated",u.OnUnreadCountChanged="OnUnreadCountChanged",u.OnConversationPinned="OnConversationPinned",u.OnConversationUnpinned="OnConversationUnpinned",u.OnConversationMuted="OnConversationMuted",u.OnConversationUnmuted="OnConversationUnmuted",u.OnPongConn="OnPongConn",u.OnPongReConn="OnPongReConn",u.OnPongIdle="OnPongIdle",u.OnError="OnError",u.OnWarning="OnWarning",u.OnLog="OnLog";var l,g,p,h,v,f,m,M,S,C,E,O,x,G,A,T,b,R,P,y,I,N,_=/*#__PURE__*/function(){function e(){var e;this.events=((e={})[exports.CbEvents.OnReceiveMessage]=[],e[exports.CbEvents.OnReceiveMessages]=[],e)}var t=e.prototype;return t.emit=function(e,t){var n=this.events[e];return n&&n.forEach(function(e){return e(t)}),this},t.on=function(e,t){var n;return this.events[e]||(this.events[e]=[]),null==(n=this.events[e])||n.push(t),this},t.off=function(e,t){var n=this.events[e];if(n){var r=n.indexOf(t);r>-1&&(n.splice(r,1),0===n.length&&delete this.events[e])}return this},e}();exports.MessageReceiveOptType=void 0,(l=exports.MessageReceiveOptType||(exports.MessageReceiveOptType={}))[l.Nomal=0]="Nomal",l[l.NotReceive=1]="NotReceive",l[l.NotNotify=2]="NotNotify",exports.AllowType=void 0,(g=exports.AllowType||(exports.AllowType={}))[g.Allowed=0]="Allowed",g[g.NotAllowed=1]="NotAllowed",exports.GroupType=void 0,(p=exports.GroupType||(exports.GroupType={}))[p.Group=2]="Group",p[p.WorkingGroup=2]="WorkingGroup",exports.GroupJoinSource=void 0,(h=exports.GroupJoinSource||(exports.GroupJoinSource={}))[h.Invitation=2]="Invitation",h[h.Search=3]="Search",h[h.QrCode=4]="QrCode",exports.GroupMemberRole=void 0,(v=exports.GroupMemberRole||(exports.GroupMemberRole={}))[v.Nomal=20]="Nomal",v[v.Admin=60]="Admin",v[v.Owner=100]="Owner",exports.GroupVerificationType=void 0,(f=exports.GroupVerificationType||(exports.GroupVerificationType={}))[f.ApplyNeedInviteNot=0]="ApplyNeedInviteNot",f[f.AllNeed=1]="AllNeed",f[f.AllNot=2]="AllNot",exports.Platform=void 0,(m=exports.Platform||(exports.Platform={}))[m.iOS=1]="iOS",m[m.Android=2]="Android",m[m.Windows=3]="Windows",m[m.MacOSX=4]="MacOSX",m[m.Web=5]="Web",m[m.Linux=7]="Linux",m[m.AndroidPad=8]="AndroidPad",m[m.iPad=9]="iPad",exports.LogLevel=void 0,(M=exports.LogLevel||(exports.LogLevel={}))[M.Debug=5]="Debug",M[M.Info=4]="Info",M[M.Warn=3]="Warn",M[M.Error=2]="Error",M[M.Fatal=1]="Fatal",M[M.Panic=0]="Panic",exports.ApplicationHandleResult=void 0,(S=exports.ApplicationHandleResult||(exports.ApplicationHandleResult={}))[S.Unprocessed=0]="Unprocessed",S[S.Agree=1]="Agree",S[S.Reject=-1]="Reject",exports.MessageType=void 0,(C=exports.MessageType||(exports.MessageType={}))[C.MESSAGE_TYPE_TEXT=0]="MESSAGE_TYPE_TEXT",C[C.TextMessage=101]="TextMessage",C[C.PictureMessage=102]="PictureMessage",C[C.VoiceMessage=103]="VoiceMessage",C[C.VideoMessage=104]="VideoMessage",C[C.FileMessage=105]="FileMessage",C[C.AtTextMessage=106]="AtTextMessage",C[C.MergeMessage=107]="MergeMessage",C[C.CardMessage=108]="CardMessage",C[C.LocationMessage=109]="LocationMessage",C[C.CustomMessage=110]="CustomMessage",C[C.TypingMessage=113]="TypingMessage",C[C.QuoteMessage=114]="QuoteMessage",C[C.FaceMessage=115]="FaceMessage",C[C.FriendAdded=1201]="FriendAdded",C[C.OANotification=1400]="OANotification",C[C.GroupCreated=1501]="GroupCreated",C[C.MemberQuit=1504]="MemberQuit",C[C.GroupOwnerTransferred=1507]="GroupOwnerTransferred",C[C.MemberKicked=1508]="MemberKicked",C[C.MemberInvited=1509]="MemberInvited",C[C.MemberEnter=1510]="MemberEnter",C[C.GroupDismissed=1511]="GroupDismissed",C[C.GroupMemberMuted=1512]="GroupMemberMuted",C[C.GroupMemberCancelMuted=1513]="GroupMemberCancelMuted",C[C.GroupMuted=1514]="GroupMuted",C[C.GroupCancelMuted=1515]="GroupCancelMuted",C[C.GroupAnnouncementUpdated=1519]="GroupAnnouncementUpdated",C[C.GroupNameUpdated=1520]="GroupNameUpdated",C[C.BurnMessageChange=1701]="BurnMessageChange",C[C.RevokeMessage=2101]="RevokeMessage",exports.SessionType=void 0,(E=exports.SessionType||(exports.SessionType={}))[E.Single=1]="Single",E[E.Group=3]="Group",E[E.WorkingGroup=3]="WorkingGroup",E[E.Notification=4]="Notification",exports.GroupStatus=void 0,(O=exports.GroupStatus||(exports.GroupStatus={}))[O.Nomal=0]="Nomal",O[O.Baned=1]="Baned",O[O.Dismissed=2]="Dismissed",O[O.Muted=3]="Muted",exports.GroupAtType=void 0,(x=exports.GroupAtType||(exports.GroupAtType={}))[x.AtNormal=0]="AtNormal",x[x.AtMe=1]="AtMe",x[x.AtAll=2]="AtAll",x[x.AtAllAtMe=3]="AtAllAtMe",x[x.AtGroupNotice=4]="AtGroupNotice",exports.GroupMemberFilter=void 0,(G=exports.GroupMemberFilter||(exports.GroupMemberFilter={}))[G.All=0]="All",G[G.Owner=1]="Owner",G[G.Admin=2]="Admin",G[G.Nomal=3]="Nomal",G[G.AdminAndNomal=4]="AdminAndNomal",G[G.AdminAndOwner=5]="AdminAndOwner",exports.Relationship=void 0,(A=exports.Relationship||(exports.Relationship={}))[A.isBlack=0]="isBlack",A[A.isFriend=1]="isFriend",exports.LoginStatus=void 0,(T=exports.LoginStatus||(exports.LoginStatus={}))[T.Logout=1]="Logout",T[T.Logging=2]="Logging",T[T.Logged=3]="Logged",exports.OnlineState=void 0,(b=exports.OnlineState||(exports.OnlineState={}))[b.Online=1]="Online",b[b.Offline=0]="Offline",exports.GroupMessageReaderFilter=void 0,(R=exports.GroupMessageReaderFilter||(exports.GroupMessageReaderFilter={}))[R.Readed=0]="Readed",R[R.UnRead=1]="UnRead",exports.GROUP_TYPE=void 0,(P=exports.GROUP_TYPE||(exports.GROUP_TYPE={}))[P.ONE_ON_ONE=0]="ONE_ON_ONE",P[P.GROUP_CHAT=1]="GROUP_CHAT",P[P.CUSTOMER_SERVICE=2]="CUSTOMER_SERVICE",exports.MSG_TYPE=void 0,(y=exports.MSG_TYPE||(exports.MSG_TYPE={}))[y.TEXT=0]="TEXT",y[y.IMAGE=1]="IMAGE",y[y.FILE=2]="FILE",y[y.AUDIO=3]="AUDIO",y[y.VIDEO=4]="VIDEO",y[y.LINK=5]="LINK",y[y.GIF=6]="GIF",y[y.OPTION=7]="OPTION",y[y.EMOJI=8]="EMOJI",y[y.CUSTOM=100]="CUSTOM",exports.SSE_RESPONSE_TYPE=void 0,(I=exports.SSE_RESPONSE_TYPE||(exports.SSE_RESPONSE_TYPE={}))[I.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",I[I.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",I[I.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",I[I.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",exports.MessageSendStatus=void 0,(N=exports.MessageSendStatus||(exports.MessageSendStatus={}))[N.Sending=1]="Sending",N[N.Succeed=2]="Succeed",N[N.Failed=3]="Failed";var k="undefined"!=typeof uni,L="undefined"!=typeof window,U="simsdk_",w={CONVERSATIONS:U+"conversations",GROUP_MESSAGES:U+"group_messages",USER_INFO:U+"user_info",META_INFO:U+"meta"},F={MAX_CONVERSATIONS:100,MAX_GROUP_MESSAGES:200,STORAGE_CHUNK_SIZE:512e3,CACHE_TTL:6048e5,EXPIRY_CHECK_INTERVAL:18e5},j=/*#__PURE__*/function(){function e(e){var t=void 0===e?{}:e,n=t.persistEnabled,r=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=r,this.debug=i,this.config=o({},F,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.setConversations=function(e){this.conversationCache=e.length>this.config.MAX_CONVERSATIONS?e.slice(0,this.config.MAX_CONVERSATIONS):[].concat(e),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]=o({},e):(this.conversationCache.push(o({},e)),this.conversationCache.length>this.config.MAX_CONVERSATIONS&&this.enforceConversationLimit()),this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage()},t.updateConversationWithMessage=function(e){var t=e.groupId;if(!t)return!1;var n=this.conversationCache.findIndex(function(e){return e.id===t});return n>=0&&(this.conversationCache[n].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.id===e.id});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,n=this,o={},s=r(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,p=function(){var e=g.value,t=n.groupMessageCache[d].findIndex(function(t){return t.id===e.id});t>=0?n.groupMessageCache[d][t]=e:n.groupMessageCache[d].push(e)},h=r(l);!(g=h()).done;)p();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(w.META_INFO);t&&(this.metaInfo=JSON.parse(t));var n=localStorage.getItem(w.CONVERSATIONS);n&&(this.conversationCache=JSON.parse(n)),Object.keys(localStorage).filter(function(e){return e.startsWith(w.GROUP_MESSAGES+".")}).forEach(function(t){var n=t.split(".")[1];n&&!isNaN(Number(n))&&(e.accessTimeRecord[n]=0)});var r=localStorage.getItem(w.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(w.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(w.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(w.GROUP_MESSAGES+"."+e+(a>0?"."+a:""),JSON.stringify(i))}}else localStorage.setItem(w.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(w.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=w.GROUP_MESSAGES+"."+e+(t>0?"."+t:"");null!==localStorage.getItem(r)?(localStorage.removeItem(r),t++):n=!1}},t.saveUserInfoToStorage=function(){try{localStorage.setItem(w.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=r(Object.keys(localStorage).filter(function(e){return e.startsWith(U)}));!(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=o({},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}(),q=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.login=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.Login,method:"POST"}))}catch(e){return Promise.reject(e)}},t.logout=function(){try{return Promise.resolve(this.sdk.sendRequest({data:{},url:exports.RequestApi.Logout,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),D=/*#__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,r,s){var i;void 0===n&&(n={});var a=o({},n,((i={msgType:e})[r]=s,i.status=0,i));return this.sendMessage(a,t)},t.createTextMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.TEXT,exports.RequestApi.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createImageMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.IMAGE,exports.RequestApi.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createFileMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.FILE,exports.RequestApi.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createVideoMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.VIDEO,exports.RequestApi.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createLinkMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.LINK,exports.RequestApi.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createGifMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.GIF,exports.RequestApi.CreateTextMessage,t,"link",e))}catch(e){return Promise.reject(e)}},t.createOptionMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.OPTION,exports.RequestApi.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createEmojiMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.EMOJI,exports.RequestApi.CreateTextMessage,t,"text",e))}catch(e){return Promise.reject(e)}},t.createCustomMessage=function(e,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(exports.MSG_TYPE.CUSTOM,exports.RequestApi.CreateTextMessage,t,"text",e))}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:exports.RequestApi.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},e}(),H=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.getConversations=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.GetAllConversationList,method:"GET"}))}catch(e){return Promise.reject(e)}},t.markConversationRead=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.MarkConversationMessageAsRead,method:"GET"}))}catch(e){return Promise.reject(e)}},e}(),V=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.sdk=e}var t=e.prototype;return t.createGroup=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},t.getGroupInfo=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:e},url:exports.RequestApi.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},t.getGroupMembers=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:e,url:exports.RequestApi.GetGroupMembers,method:"GET"}))}catch(e){return Promise.reject(e)}},t.joinGroup=function(e){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:e},url:exports.RequestApi.JoinGroup,method:"GET"}))}catch(e){return Promise.reject(e)}},e}(),K=/*#__PURE__*/function(){function e(e){this.sdk=void 0,this.services={},this.sdk=e}var t=e.prototype;return t.get=function(e){return this.services[e]||(this.services[e]=this.createService(e)),this.services[e]},t.createService=function(e){switch(e){case exports.ServiceName.USER:return new q(this.sdk);case exports.ServiceName.MESSAGE:return new D(this.sdk);case exports.ServiceName.CONVERSATION:return new H(this.sdk);case exports.ServiceName.GROUP:return new V(this.sdk);default:throw new Error("Unknown service: "+e)}},t.reset=function(){this.services={}},e}();function Y(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var J=[exports.RequestApi.Logout,exports.CbEvents.OnKickedOffline,exports.CbEvents.OnUserTokenInvalid,exports.CbEvents.OnUserTokenExpired],z=/*#__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.configure=function(e){void 0!==e.debug&&(n.config.debug=e.debug),e.apiAddr&&(n.config.apiAddr=e.apiAddr),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(k?new Promise(function(t,n){uni.request({url:e.url,method:e.method||"GET",header:e.headers,data:e.data,success:function(e){return t(e.data)},fail:function(e){return n(e)}})}):function(){if(L)return console.log("isBrowser ",L),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url: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 exports.SSE_RESPONSE_TYPE.EVENT_MESSAGE_PUSH:if(1===e.dt.length){var t=e.dt[0];n.updateMessageCache(t),n.emit(exports.CbEvents.OnReceiveMessage,t)}else{var r=e.dt;r.forEach(function(e){return n.updateMessageCache(e)}),n.emit(exports.CbEvents.OnReceiveMessages,r)}break;case exports.SSE_RESPONSE_TYPE.EVENT_PONG_CONN:n.internalState.isConnected=!0,n.emit(exports.CbEvents.OnConnected);break;case exports.SSE_RESPONSE_TYPE.EVENT_PONG_RE_CONN:n.internalState.isConnected=!0,n.emit(exports.CbEvents.OnReconnected);break;case exports.SSE_RESPONSE_TYPE.EVENT_PONG_IDLE:break;default:o=e.ev,Object.values(exports.CbEvents).includes(o)?(n.emit(e.ev,e.dt),J.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(exports.CbEvents.OnReconnected))},n.handleConnectionClosed=function(){n.internalState.isConnected=!1,n.config.debug&&console.log("SSE connection closed"),n.emit(exports.CbEvents.OnDisconnected)},n.login=function(e){try{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.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(exports.CbEvents.OnConversationListUpdated,t),Promise.resolve(n.user.login(e)).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(),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}),Y(function(){return Promise.resolve(n.sseClient.connect()).then(function(e){return n.internalState.isLoggedIn=!0,e})},function(e){return n.internalState.isLoggedIn=!1,Promise.reject(e.message)}))})}catch(e){return Promise.reject(e)}},n.logout=function(){try{return n.sseClient&&(n.sseClient.close(),n.sseClient=void 0),Promise.resolve(n.user.logout()).then(function(e){return n.internalState.isLoggedIn=!1,n.internalState.isConnected=!1,n.config.username=void 0,n.config.token=void 0,n.cacheManager.clear(),e})}catch(e){return Promise.reject(e)}},n.getConversations=function(e){try{var t=Y(function(){return Promise.resolve(n.conversation.getConversations(e)).then(function(t){var r=t.data;if(0===t.code&&r){var s=n.cacheManager.getConversations();if(1===e.pageNo)n.cacheManager.setConversations([].concat(r.records));else{var i=r.records||[],a=new Set(s.map(function(e){return e.id})),c=i.filter(function(e){return!a.has(e.id)}),u=[].concat(s,c);n.cacheManager.setConversations(u)}var d=o({},r,{records:n.cacheManager.getConversations()});n.emit(exports.CbEvents.OnConversationListUpdated,d)}else{var l=n.cacheManager.getConversations();l.length>0&&n.emit(exports.CbEvents.OnConversationListUpdated,l)}})},function(e){console.error("Failed to get conversations:",e);var t=n.cacheManager.getConversations();t.length>0&&n.emit(exports.CbEvents.OnConversationListUpdated,t)});return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},n.internalUploadFile=function(e){try{return Promise.resolve(Y(function(){var t=new FormData;return t.append("file",e),t.append("filename",e.name),Promise.resolve(fetch(""+n.config.apiAddr+exports.RequestApi.UploadFile,{method:"POST",headers:{Authorization:n.config.token?"Bearer "+n.config.token:""},body:t})).then(function(e){if(!e.ok)throw new Error("Upload failed with status: "+e.status);return Promise.resolve(e.json()).then(function(e){return{url:e.data||""}})})},function(e){return console.error("Upload failed:",e),{error:e}}))}catch(e){return Promise.reject(e)}},n.uploadFile=function(e){var t=e.file;try{return Promise.resolve(n.internalUploadFile(t)).then(function(e){var t,n=e.url,r=e.error;return{data:{url:void 0===n?"":n},msg:null!=(t=null==r?void 0:r.message)?t:"",code:r?exports.ErrorCode.UnknownError:0}})}catch(e){return Promise.reject(e)}},n.sendTextMessage=function(e,t){return n.message.createTextMessage(e,t)},n.sendImageMessage=function(e,t){return n.message.createImageMessage(e,t)},n.sendFileMessage=function(e,t){return n.message.createFileMessage(e,t)},n.sendVideoMessage=function(e,t){return n.message.createVideoMessage(e,t)},n.sendLinkMessage=function(e,t){return n.message.createLinkMessage(e,t)},n.sendGifMessage=function(e,t){return n.message.createGifMessage(e,t)},n.sendOptionMessage=function(e,t){return n.message.createOptionMessage(e,t)},n.sendEmojiMessage=function(e,t){return n.message.createEmojiMessage(e,t)},n.sendCustomMessage=function(e,t){return n.message.createCustomMessage(e,t)},n.getHistoryMessageList=function(e){try{var t=Y(function(){e.groupId&&n.cacheManager.markConversationAsActive(e.groupId);var t=[];if(e.groupId&&(t=n.cacheManager.getGroupMessages(e.groupId)),t.length>0&&""===e.lastId){var r=t.slice(0,e.size||20);n.emit(exports.CbEvents.OnMessagesListLoaded,{list:r,groupId:e.groupId})}return Promise.resolve(n.message.getHistoryMessageList(e)).then(function(r){var s=r.data;if(0===r.code&&s)e.groupId&&n.cacheManager.addGroupMessages(s.groupChatList||[]),n.emit(exports.CbEvents.OnMessagesListLoaded,o({},s,{isFromCache:!1,groupId:e.groupId}));else if(t.length>0&&!(""===e.lastId&&t.length>0)){var i=t.slice(0,0+(e.size||20));n.emit(exports.CbEvents.OnMessagesListLoaded,{list:i,groupId:e.groupId})}})},function(t){console.error("Failed to get history messages:",t);var r=[];if(e.groupId&&(r=n.cacheManager.getGroupMessages(e.groupId)),r.length>0){var o=r.slice(0,0+(e.size||20));n.emit(exports.CbEvents.OnMessagesListLoaded,{list:o,groupId:e.groupId,error:t.message})}});return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},n.createGroup=function(e){return n.group.createGroup(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.config.debug=t,n.cacheManager=new j({persistEnabled:!0,debug:t}),n.serviceManager=new K(n),n}var n,r;r=e,(n=t).prototype=Object.create(r.prototype),n.prototype.constructor=n,s(n,r);var a,c,u=t.prototype;return u.getService=function(e){return this.serviceManager.get(e)},u.isConnected=function(){return!!this.sseClient&&this.internalState.isConnected},u.isLoggedIn=function(){return this.internalState.isLoggedIn},u.logRequest=function(e){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.groupCollapsed("%c📦 Request Payload","color: #555; font-weight: bold;"),console.log("%c%s","color: #333; background: #f8f8f8; padding: 8px; border-radius: 4px; border-left: 4px solid #7CAEFF; font-family: monospace; line-height: 1.4;",JSON.stringify(e.data,null,2)),console.groupEnd())},u.initializeConversationCache=function(){try{var e=this,t=Y(function(){return Promise.resolve(e.conversation.getConversations({pageNo:1,pageSize:20})).then(function(t){var n=t.data;0===t.code&&n&&n.records&&(e.cacheManager.setConversations(n.records),e.emit(exports.CbEvents.OnConversationListUpdated,n),e.config.debug&&console.log("Conversation cache initialized with",n.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)}},u.onMessage=function(e){var t=this;return this.on(exports.CbEvents.OnReceiveMessage,e),function(){return t.off(exports.CbEvents.OnReceiveMessage,e)}},u.onMessages=function(e){var t=this;return this.on(exports.CbEvents.OnReceiveMessages,e),function(){return t.off(exports.CbEvents.OnReceiveMessages,e)}},u.onConnectionChange=function(e){var t=this,n=function(){return e(!0)},r=function(){return e(!1)};return this.on(exports.CbEvents.OnConnected,n),this.on(exports.CbEvents.OnDisconnected,r),function(){t.off(exports.CbEvents.OnConnected,n),t.off(exports.CbEvents.OnDisconnected,r)}},u.onKickedOffline=function(e){var t=this;return this.on(exports.CbEvents.OnKickedOffline,e),function(){return t.off(exports.CbEvents.OnKickedOffline,e)}},u.updateMessageCache=function(e){if(e.groupId&&this.cacheManager.addGroupMessage(e),this.cacheManager.updateConversationWithMessage(e)){var t=this.cacheManager.getConversations();this.emit(exports.CbEvents.OnConversationListUpdated,t)}},u.getCachedGroupMessages=function(e){return this.cacheManager.getGroupMessages(e)},a=t,(c=[{key:"message",get:function(){return this.getService(exports.ServiceName.MESSAGE)}},{key:"conversation",get:function(){return this.getService(exports.ServiceName.CONVERSATION)}},{key:"group",get:function(){return this.getService(exports.ServiceName.GROUP)}},{key:"user",get:function(){return this.getService(exports.ServiceName.USER)}},{key:"username",get:function(){return this.config.username}},{key:"uuid",get:function(){return(36*Math.random()).toString(36).slice(2)+(new Date).getTime().toString()}}])&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,i(r.key),r)}}(a.prototype,c),Object.defineProperty(a,"prototype",{writable:!1}),a}(_);exports.MessageStatus={NORMAL:0,EDITED:1,DELETED:2},exports.SIMSDK=z;
package/lib/index.umd.js CHANGED
@@ -1 +1 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("event-source-polyfill")):"function"==typeof define&&define.amd?define(["exports","event-source-polyfill"],n):n((e||self).simSdkWeb={},e.eventSourcePolyfill)}(this,function(e,n){function t(){return t=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},t.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 o(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}var s;e.ServiceName=void 0,(s=e.ServiceName||(e.ServiceName={})).MESSAGE="message",s.CONVERSATION="conversation",s.GROUP="group",s.USER="user";var i,a,c,u=/*#__PURE__*/function(){function e(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this._openHandler=null,this._errorHandler=null,this._messageHandler=null,this._customHandlers=new Map,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed}var t=e.prototype;return t.removeAllEventListeners=function(){var e=this;this.eventSource&&(this._openHandler&&this.eventSource.removeEventListener("open",this._openHandler),this._errorHandler&&this.eventSource.removeEventListener("error",this._errorHandler),this._messageHandler&&this.eventSource.removeEventListener("message",this._messageHandler),this.handlers.forEach(function(n,t){var r=e._customHandlers.get(t);r&&e.eventSource&&e.eventSource.removeEventListener(t,r)}))},t.subscribe=function(e,n){this.handlers.set(e,n);var t=function(e){try{var t=JSON.parse(e.data);n(t)}catch(e){console.error("Error parsing message data:",e)}};this._customHandlers.set(e,t),this.eventSource?this.eventSource.addEventListener(e,t):this.connect()},t.connect=function(){var e=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(t,r){try{e.eventSource=new n.EventSourcePolyfill(e.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+e.token}}),e._openHandler=function(n){console.log("SSE connection established"),e.connected=!0,e.reconnectAttempts>0&&e.onReconnectSuccessCallback&&e.onReconnectSuccessCallback(),e.reconnectAttempts=0,e.reconnectTimeout=5e3,t("SSE connect successful!")},e._errorHandler=function(n){console.error("SSE connection error:",n),e.connected=!1,401===n.status||n.statusText&&n.statusText.includes("Unauthorized")?(e.cleanup(),e.notifyConnectionClosed(!0)):e.handleReconnect(),e.connected||r(new Error("SSE connect error"))},e._messageHandler=function(n){try{console.log("SSE received message:",n.data);var t=JSON.parse(n.data);e.onMessageCallback&&e.onMessageCallback(t)}catch(e){console.error("Error parsing message:",e)}},e.eventSource.addEventListener("open",e._openHandler),e.eventSource.addEventListener("error",e._errorHandler),e.eventSource.addEventListener("message",e._messageHandler),e.handlers.forEach(function(n,t){var r=e._customHandlers.get(t);r&&e.eventSource&&e.eventSource.addEventListener(t,r)});var o=setTimeout(function(){e.connected||(r(new Error("Connection timeout")),e.handleReconnect())},1e4),s=e._openHandler;e._openHandler=function(e){clearTimeout(o),s(e)}}catch(n){console.error("Failed to create EventSource:",n),e.handleReconnect(),r(n)}})},t.notifyConnectionClosed=function(e){void 0===e&&(e=!1),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(),e?console.warn("SSE connection closed due to authentication error"):console.log("SSE connection closed")},t.handleReconnect=function(){var e=this;if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return console.error("Max reconnection attempts reached"),void this.destroySse();console.log("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,3e4),e.reconnectTimer=null,e.connect().catch(function(){})},this.reconnectTimeout)}},t.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},t.unsubscribe=function(){this.cleanup(),this.handlers.clear(),this._customHandlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},t.destroySse=function(){this.unsubscribe(),this.reconnectAttempts=this.maxReconnectAttempts,this.notifyConnectionClosed()},t.close=function(){this.destroySse(),console.log("SSE 连接已关闭")},t.isConnected=function(){return this.connected},e}();e.ErrorCode=void 0,(i=e.ErrorCode||(e.ErrorCode={}))[i.ConnectionEstablishmentFailed=1e4]="ConnectionEstablishmentFailed",i[i.ResourceLoadNotCompleteError=10004]="ResourceLoadNotCompleteError",i[i.UnknownError=10005]="UnknownError",i[i.LoginRepeatError=10102]="LoginRepeatError",e.RequestApi=void 0,(a=e.RequestApi||(e.RequestApi={})).Login="/chat/member/login",a.Logout="/chat/member/logout",a.CreateGroup="CreateGroup",a.GetGroupInfo="/chat/group/groupInfo",a.GetGroupMembers="/chat/group/groupMembers",a.JoinGroup="/chat/group/joinGroup",a.GetAllConversationList="/chat/group/list",a.MarkConversationMessageAsRead="/chat/group/lastRead",a.CreateTextMessage="/chat/message/push",a.GetHistoryMessageList="/chat/message/pull",a.UploadFile="/chat/img/upload",e.CbEvents=void 0,(c=e.CbEvents||(e.CbEvents={})).OnConnected="OnConnected",c.OnDisconnected="OnDisconnected",c.OnReconnecting="OnReconnecting",c.OnReconnected="OnReconnected",c.OnReconnectFailed="OnReconnectFailed",c.OnNetworkChange="OnNetworkChange",c.OnReceiveMessage="OnReceiveMessage",c.OnReceiveMessages="OnReceiveMessages",c.OnMessageSent="OnMessageSent",c.OnMessageFailed="OnMessageFailed",c.OnMessageRevoked="OnMessageRevoked",c.OnMessageDeleted="OnMessageDeleted",c.OnMessageRead="OnMessageRead",c.OnTypingStatusUpdate="OnTypingStatusUpdate",c.OnUserStatusChange="OnUserStatusChange",c.OnKickedOffline="OnKickedOffline",c.OnUserTokenInvalid="OnUserTokenInvalid",c.OnUserTokenExpired="OnUserTokenExpired",c.OnForceOffline="OnForceOffline",c.OnUserInfoUpdated="OnUserInfoUpdated",c.OnGroupCreated="OnGroupCreated",c.OnGroupInfoUpdated="OnGroupInfoUpdated",c.OnGroupDissolved="OnGroupDissolved",c.OnJoinGroup="OnJoinGroup",c.OnLeaveGroup="OnLeaveGroup",c.OnGroupMemberJoined="OnGroupMemberJoined",c.OnGroupMemberLeft="OnGroupMemberLeft",c.OnGroupMemberKicked="OnGroupMemberKicked",c.OnGroupOwnerChanged="OnGroupOwnerChanged",c.OnGroupAdminAdded="OnGroupAdminAdded",c.OnGroupAdminRemoved="OnGroupAdminRemoved",c.OnGroupMemberMuted="OnGroupMemberMuted",c.OnGroupMemberUnmuted="OnGroupMemberUnmuted",c.OnGroupAllMemberMuted="OnGroupAllMemberMuted",c.OnGroupAllMemberUnmuted="OnGroupAllMemberUnmuted",c.OnConversationCreated="OnConversationCreated",c.OnConversationDeleted="OnConversationDeleted",c.OnConversationUpdated="OnConversationUpdated",c.OnUnreadCountChanged="OnUnreadCountChanged",c.OnConversationPinned="OnConversationPinned",c.OnConversationUnpinned="OnConversationUnpinned",c.OnConversationMuted="OnConversationMuted",c.OnConversationUnmuted="OnConversationUnmuted",c.OnPongConn="OnPongConn",c.OnPongReConn="OnPongReConn",c.OnPongIdle="OnPongIdle",c.OnError="OnError",c.OnWarning="OnWarning",c.OnLog="OnLog";var d,l,g,p,v,m,f,h,O,M,E,S,C,G,T,P,A,R,b,y,N,k,_=/*#__PURE__*/function(){function n(){var n;this.events=((n={})[e.CbEvents.OnReceiveMessage]=[],n[e.CbEvents.OnReceiveMessages]=[],n)}var t=n.prototype;return t.emit=function(e,n){var t=this.events[e];return t&&t.forEach(function(e){return e(n)}),this},t.on=function(e,n){var t;return this.events[e]||(this.events[e]=[]),null==(t=this.events[e])||t.push(n),this},t.off=function(e,n){var t=this.events[e];if(t){var r=t.indexOf(n);r>-1&&(t.splice(r,1),0===t.length&&delete this.events[e])}return this},n}();e.MessageReceiveOptType=void 0,(d=e.MessageReceiveOptType||(e.MessageReceiveOptType={}))[d.Nomal=0]="Nomal",d[d.NotReceive=1]="NotReceive",d[d.NotNotify=2]="NotNotify",e.AllowType=void 0,(l=e.AllowType||(e.AllowType={}))[l.Allowed=0]="Allowed",l[l.NotAllowed=1]="NotAllowed",e.GroupType=void 0,(g=e.GroupType||(e.GroupType={}))[g.Group=2]="Group",g[g.WorkingGroup=2]="WorkingGroup",e.GroupJoinSource=void 0,(p=e.GroupJoinSource||(e.GroupJoinSource={}))[p.Invitation=2]="Invitation",p[p.Search=3]="Search",p[p.QrCode=4]="QrCode",e.GroupMemberRole=void 0,(v=e.GroupMemberRole||(e.GroupMemberRole={}))[v.Nomal=20]="Nomal",v[v.Admin=60]="Admin",v[v.Owner=100]="Owner",e.GroupVerificationType=void 0,(m=e.GroupVerificationType||(e.GroupVerificationType={}))[m.ApplyNeedInviteNot=0]="ApplyNeedInviteNot",m[m.AllNeed=1]="AllNeed",m[m.AllNot=2]="AllNot",e.Platform=void 0,(f=e.Platform||(e.Platform={}))[f.iOS=1]="iOS",f[f.Android=2]="Android",f[f.Windows=3]="Windows",f[f.MacOSX=4]="MacOSX",f[f.Web=5]="Web",f[f.Linux=7]="Linux",f[f.AndroidPad=8]="AndroidPad",f[f.iPad=9]="iPad",e.LogLevel=void 0,(h=e.LogLevel||(e.LogLevel={}))[h.Debug=5]="Debug",h[h.Info=4]="Info",h[h.Warn=3]="Warn",h[h.Error=2]="Error",h[h.Fatal=1]="Fatal",h[h.Panic=0]="Panic",e.ApplicationHandleResult=void 0,(O=e.ApplicationHandleResult||(e.ApplicationHandleResult={}))[O.Unprocessed=0]="Unprocessed",O[O.Agree=1]="Agree",O[O.Reject=-1]="Reject",e.MessageType=void 0,(M=e.MessageType||(e.MessageType={}))[M.MESSAGE_TYPE_TEXT=0]="MESSAGE_TYPE_TEXT",M[M.TextMessage=101]="TextMessage",M[M.PictureMessage=102]="PictureMessage",M[M.VoiceMessage=103]="VoiceMessage",M[M.VideoMessage=104]="VideoMessage",M[M.FileMessage=105]="FileMessage",M[M.AtTextMessage=106]="AtTextMessage",M[M.MergeMessage=107]="MergeMessage",M[M.CardMessage=108]="CardMessage",M[M.LocationMessage=109]="LocationMessage",M[M.CustomMessage=110]="CustomMessage",M[M.TypingMessage=113]="TypingMessage",M[M.QuoteMessage=114]="QuoteMessage",M[M.FaceMessage=115]="FaceMessage",M[M.FriendAdded=1201]="FriendAdded",M[M.OANotification=1400]="OANotification",M[M.GroupCreated=1501]="GroupCreated",M[M.MemberQuit=1504]="MemberQuit",M[M.GroupOwnerTransferred=1507]="GroupOwnerTransferred",M[M.MemberKicked=1508]="MemberKicked",M[M.MemberInvited=1509]="MemberInvited",M[M.MemberEnter=1510]="MemberEnter",M[M.GroupDismissed=1511]="GroupDismissed",M[M.GroupMemberMuted=1512]="GroupMemberMuted",M[M.GroupMemberCancelMuted=1513]="GroupMemberCancelMuted",M[M.GroupMuted=1514]="GroupMuted",M[M.GroupCancelMuted=1515]="GroupCancelMuted",M[M.GroupAnnouncementUpdated=1519]="GroupAnnouncementUpdated",M[M.GroupNameUpdated=1520]="GroupNameUpdated",M[M.BurnMessageChange=1701]="BurnMessageChange",M[M.RevokeMessage=2101]="RevokeMessage",e.SessionType=void 0,(E=e.SessionType||(e.SessionType={}))[E.Single=1]="Single",E[E.Group=3]="Group",E[E.WorkingGroup=3]="WorkingGroup",E[E.Notification=4]="Notification",e.GroupStatus=void 0,(S=e.GroupStatus||(e.GroupStatus={}))[S.Nomal=0]="Nomal",S[S.Baned=1]="Baned",S[S.Dismissed=2]="Dismissed",S[S.Muted=3]="Muted",e.GroupAtType=void 0,(C=e.GroupAtType||(e.GroupAtType={}))[C.AtNormal=0]="AtNormal",C[C.AtMe=1]="AtMe",C[C.AtAll=2]="AtAll",C[C.AtAllAtMe=3]="AtAllAtMe",C[C.AtGroupNotice=4]="AtGroupNotice",e.GroupMemberFilter=void 0,(G=e.GroupMemberFilter||(e.GroupMemberFilter={}))[G.All=0]="All",G[G.Owner=1]="Owner",G[G.Admin=2]="Admin",G[G.Nomal=3]="Nomal",G[G.AdminAndNomal=4]="AdminAndNomal",G[G.AdminAndOwner=5]="AdminAndOwner",e.Relationship=void 0,(T=e.Relationship||(e.Relationship={}))[T.isBlack=0]="isBlack",T[T.isFriend=1]="isFriend",e.LoginStatus=void 0,(P=e.LoginStatus||(e.LoginStatus={}))[P.Logout=1]="Logout",P[P.Logging=2]="Logging",P[P.Logged=3]="Logged",e.OnlineState=void 0,(A=e.OnlineState||(e.OnlineState={}))[A.Online=1]="Online",A[A.Offline=0]="Offline",e.GroupMessageReaderFilter=void 0,(R=e.GroupMessageReaderFilter||(e.GroupMessageReaderFilter={}))[R.Readed=0]="Readed",R[R.UnRead=1]="UnRead",e.GROUP_TYPE=void 0,(b=e.GROUP_TYPE||(e.GROUP_TYPE={}))[b.ONE_ON_ONE=0]="ONE_ON_ONE",b[b.GROUP_CHAT=1]="GROUP_CHAT",b[b.CUSTOMER_SERVICE=2]="CUSTOMER_SERVICE",e.MSG_TYPE=void 0,(y=e.MSG_TYPE||(e.MSG_TYPE={}))[y.TEXT=0]="TEXT",y[y.IMAGE=1]="IMAGE",y[y.FILE=2]="FILE",y[y.AUDIO=3]="AUDIO",y[y.VIDEO=4]="VIDEO",y[y.LINK=5]="LINK",y[y.GIF=6]="GIF",y[y.OPTION=7]="OPTION",y[y.EMOJI=8]="EMOJI",y[y.CUSTOM=100]="CUSTOM",e.SSE_RESPONSE_TYPE=void 0,(N=e.SSE_RESPONSE_TYPE||(e.SSE_RESPONSE_TYPE={}))[N.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",N[N.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",N[N.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",N[N.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",e.MessageSendStatus=void 0,(k=e.MessageSendStatus||(e.MessageSendStatus={}))[k.Sending=1]="Sending",k[k.Succeed=2]="Succeed",k[k.Failed=3]="Failed";var L="undefined"!=typeof uni,w="undefined"!=typeof window,I=/*#__PURE__*/function(){function n(e){this.sdk=void 0,this.sdk=e}var t=n.prototype;return t.login=function(n){try{return Promise.resolve(this.sdk.sendRequest({data:n,url:e.RequestApi.Login,method:"POST"}))}catch(e){return Promise.reject(e)}},t.logout=function(){try{return Promise.resolve(this.sdk.sendRequest({data:{},url:e.RequestApi.Logout,method:"POST"}))}catch(e){return Promise.reject(e)}},n}(),U=/*#__PURE__*/function(){function n(e){this.sdk=void 0,this.sdk=e}var r=n.prototype;return r.sendMessage=function(e,n){try{var t=this;return Promise.resolve(function(r,o){try{var s=Promise.resolve(t.sdk.sendRequest({data:e,url:n,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)}},r.createMessage=function(e,n,r,o,s){var i;void 0===r&&(r={});var a=t({},r,((i={msgType:e})[o]=s,i.status=0,i));return this.sendMessage(a,n)},r.createTextMessage=function(n,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.TEXT,e.RequestApi.CreateTextMessage,t,"text",n))}catch(e){return Promise.reject(e)}},r.createImageMessage=function(n,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.IMAGE,e.RequestApi.CreateTextMessage,t,"link",n))}catch(e){return Promise.reject(e)}},r.createFileMessage=function(n,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.FILE,e.RequestApi.CreateTextMessage,t,"link",n))}catch(e){return Promise.reject(e)}},r.createVideoMessage=function(n,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.VIDEO,e.RequestApi.CreateTextMessage,t,"link",n))}catch(e){return Promise.reject(e)}},r.createLinkMessage=function(n,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.LINK,e.RequestApi.CreateTextMessage,t,"text",n))}catch(e){return Promise.reject(e)}},r.createGifMessage=function(n,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.GIF,e.RequestApi.CreateTextMessage,t,"link",n))}catch(e){return Promise.reject(e)}},r.createOptionMessage=function(n,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.OPTION,e.RequestApi.CreateTextMessage,t,"text",n))}catch(e){return Promise.reject(e)}},r.createEmojiMessage=function(n,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.EMOJI,e.RequestApi.CreateTextMessage,t,"text",n))}catch(e){return Promise.reject(e)}},r.createCustomMessage=function(n,t){void 0===t&&(t={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.CUSTOM,e.RequestApi.CreateTextMessage,t,"text",n))}catch(e){return Promise.reject(e)}},r.getHistoryMessageList=function(n){var t=n.groupId,r=n.lastId,o=n.size,s=void 0===o?100:o;try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,lastId:r,size:s},url:e.RequestApi.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},n}(),x=/*#__PURE__*/function(){function n(e){this.sdk=void 0,this.sdk=e}var t=n.prototype;return t.getConversations=function(n){try{return Promise.resolve(this.sdk.sendRequest({data:n,url:e.RequestApi.GetAllConversationList,method:"GET"}))}catch(e){return Promise.reject(e)}},t.markConversationRead=function(n){try{return Promise.resolve(this.sdk.sendRequest({data:n,url:e.RequestApi.MarkConversationMessageAsRead,method:"GET"}))}catch(e){return Promise.reject(e)}},n}(),F=/*#__PURE__*/function(){function n(e){this.sdk=void 0,this.sdk=e}var t=n.prototype;return t.createGroup=function(n){try{return Promise.resolve(this.sdk.sendRequest({data:n,url:e.RequestApi.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},t.getGroupInfo=function(n){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:n},url:e.RequestApi.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},t.getGroupMembers=function(n){try{return Promise.resolve(this.sdk.sendRequest({data:n,url:e.RequestApi.GetGroupMembers,method:"GET"}))}catch(e){return Promise.reject(e)}},t.joinGroup=function(n){try{return Promise.resolve(this.sdk.sendRequest({data:n,url:e.RequestApi.JoinGroup,method:"GET"}))}catch(e){return Promise.reject(e)}},n}(),j=/*#__PURE__*/function(){function n(e){this.sdk=void 0,this.services={},this.sdk=e}var t=n.prototype;return t.get=function(e){return this.services[e]||(this.services[e]=this.createService(e)),this.services[e]},t.createService=function(n){switch(n){case e.ServiceName.USER:return new I(this.sdk);case e.ServiceName.MESSAGE:return new U(this.sdk);case e.ServiceName.CONVERSATION:return new x(this.sdk);case e.ServiceName.GROUP:return new F(this.sdk);default:throw new Error("Unknown service: "+n)}},t.reset=function(){this.services={}},n}();function q(e,n){try{var t=e()}catch(e){return n(e)}return t&&t.then?t.then(void 0,n):t}var D=[e.RequestApi.Logout,e.CbEvents.OnKickedOffline,e.CbEvents.OnUserTokenInvalid,e.CbEvents.OnUserTokenExpired],H=/*#__PURE__*/function(n){function s(r){var o;return void 0===r&&(r=!1),(o=n.call(this)||this).config={debug:!1},o.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},o.sseClient=void 0,o.serviceManager=void 0,o.configure=function(e){void 0!==e.debug&&(o.config.debug=e.debug),e.apiAddr&&(o.config.apiAddr=e.apiAddr),e.appKey&&(o.config.appKey=e.appKey)},o.sendRequest=function(e){o.internalState.lastActivity=Date.now(),o.config.debug&&o.logRequest(e);var n=o.config.apiAddr+e.url,t=e.data;if("GET"===e.method&&t){var r=new URLSearchParams;Object.entries(t).forEach(function(e){var n=e[1];null!=n&&r.append(e[0],String(n))});var s=r.toString();s&&(n+=(n.includes("?")?"&":"?")+s),t=void 0}return function(e){try{return Promise.resolve(L?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 console.log("isBrowser ",w),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url:n,method:e.method,headers:{"Content-Type":"application/json",Authorization:o.config.token?"Bearer "+o.config.token:""},data:t})},o.createRequestFunction=function(e,n){return function(t){return o.sendRequest({data:t,url:e,method:n})}},o.createRequestFunctionWithoutParams=function(e,n){return function(){return o.sendRequest({data:void 0,method:n,url:e})}},o.handleMessage=function(n){switch(o.config.debug&&console.log("handleMessage response",n),n.ev){case e.SSE_RESPONSE_TYPE.EVENT_MESSAGE_PUSH:1===n.dt.length?o.emit(e.CbEvents.OnReceiveMessage,n.dt[0]):o.emit(e.CbEvents.OnReceiveMessages,n.dt);break;case e.SSE_RESPONSE_TYPE.EVENT_PONG_CONN:o.internalState.isConnected=!0,o.emit(e.CbEvents.OnConnected);break;case e.SSE_RESPONSE_TYPE.EVENT_PONG_RE_CONN:o.internalState.isConnected=!0,o.emit(e.CbEvents.OnReconnected);break;case e.SSE_RESPONSE_TYPE.EVENT_PONG_IDLE:break;default:t=n.ev,Object.values(e.CbEvents).includes(t)?(o.emit(n.ev,n.dt),D.includes(n.ev)&&(o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1,o.sseClient&&(o.sseClient.close(),o.sseClient=void 0))):o.config.debug&&console.warn("Unknown SSE event type:",n.ev)}var t},o.handleReconnectSuccess=function(){o.config.username&&(o.internalState.isConnected=!0,o.internalState.reconnectAttempts=0,o.config.debug&&console.log("SSE reconnection successful"),o.emit(e.CbEvents.OnReconnected))},o.handleConnectionClosed=function(){o.internalState.isConnected=!1,o.config.debug&&console.log("SSE connection closed"),o.emit(e.CbEvents.OnDisconnected)},o.login=function(e){try{return o.sseClient?Promise.resolve("login repeat"):o.config.apiAddr?o.config.appKey?(o.config.token=e.token,o.config.username=e.username,o.config.debug&&(console.log("login params",e),console.log("apiAddr",o.config.apiAddr)),Promise.resolve(o.user.login(t({},e,{appKey:o.config.appKey}))).then(function(n){var t=n.code,r=n.data;return 0!=t?Promise.resolve("Login failed, Server error, error code is "+t):(o.sseClient=new u({url:o.config.apiAddr+"/chat/sse/conn?username="+e.username+"&token="+e.token+"&appKey="+o.config.appKey+"&random="+r,onMessage:o.handleMessage,onReconnectSuccess:o.handleReconnectSuccess,onConnectionClosed:o.handleConnectionClosed,token:e.token}),q(function(){return Promise.resolve(o.sseClient.connect()).then(function(e){return o.internalState.isLoggedIn=!0,e})},function(e){return o.internalState.isLoggedIn=!1,Promise.reject(e.message)}))})):Promise.reject("No appKey configured. Please call configure() before login()."):Promise.reject("No apiAddr configured. Please call configure() before login().")}catch(e){return Promise.reject(e)}},o.logout=function(){try{return o.sseClient&&(o.sseClient.close(),o.sseClient=void 0),Promise.resolve(o.user.logout()).then(function(e){return o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1,o.config.username=void 0,o.config.token=void 0,e})}catch(e){return Promise.reject(e)}},o.internalUploadFile=function(n){try{return Promise.resolve(q(function(){var t=new FormData;return t.append("file",n),t.append("filename",n.name),Promise.resolve(fetch(""+o.config.apiAddr+e.RequestApi.UploadFile,{method:"POST",headers:{Authorization:o.config.token?"Bearer "+o.config.token:""},body:t})).then(function(e){if(!e.ok)throw new Error("Upload failed with status: "+e.status);return Promise.resolve(e.json()).then(function(e){return{url:e.data||""}})})},function(e){return console.error("Upload failed:",e),{error:e}}))}catch(e){return Promise.reject(e)}},o.uploadFile=function(n){var t=n.file;try{return Promise.resolve(o.internalUploadFile(t)).then(function(n){var t,r=n.url,o=n.error;return{data:{url:void 0===r?"":r},msg:null!=(t=null==o?void 0:o.message)?t:"",code:o?e.ErrorCode.UnknownError:0}})}catch(e){return Promise.reject(e)}},o.sendTextMessage=function(e,n){return o.message.createTextMessage(e,n)},o.sendImageMessage=function(e,n){return o.message.createImageMessage(e,n)},o.sendFileMessage=function(e,n){return o.message.createFileMessage(e,n)},o.sendVideoMessage=function(e,n){return o.message.createVideoMessage(e,n)},o.sendLinkMessage=function(e,n){return o.message.createLinkMessage(e,n)},o.sendGifMessage=function(e,n){return o.message.createGifMessage(e,n)},o.sendOptionMessage=function(e,n){return o.message.createOptionMessage(e,n)},o.sendEmojiMessage=function(e,n){return o.message.createEmojiMessage(e,n)},o.sendCustomMessage=function(e,n){return o.message.createCustomMessage(e,n)},o.getHistoryMessageList=function(e){return o.message.getHistoryMessageList(e)},o.getConversations=function(e){return o.conversation.getConversations(e)},o.createGroup=function(e){return o.group.createGroup(e)},o.getGroupInfo=function(e){return o.group.getGroupInfo(e)},o.getGroupMembers=function(e){return o.group.getGroupMembers(e)},o.joinGroup=function(e){return o.group.joinGroup(e)},o.markConversationRead=function(e){return o.conversation.markConversationRead(e)},o.config.debug=r,o.serviceManager=new j(o),o}var i,a;a=n,(i=s).prototype=Object.create(a.prototype),i.prototype.constructor=i,r(i,a);var c,d,l=s.prototype;return l.getService=function(e){return this.serviceManager.get(e)},l.isConnected=function(){return!!this.sseClient&&this.internalState.isConnected},l.isLoggedIn=function(){return this.internalState.isLoggedIn},l.logRequest=function(e){var n=Math.random().toString(36).substring(2,8),t={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 #"+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.groupCollapsed("%c📦 Request Payload","color: #555; font-weight: bold;"),console.log("%c%s","color: #333; background: #f8f8f8; padding: 8px; border-radius: 4px; border-left: 4px solid #7CAEFF; font-family: monospace; line-height: 1.4;",JSON.stringify(e.data,null,2)),console.groupEnd())},l.onMessage=function(n){var t=this;return this.on(e.CbEvents.OnReceiveMessage,n),function(){return t.off(e.CbEvents.OnReceiveMessage,n)}},l.onMessages=function(n){var t=this;return this.on(e.CbEvents.OnReceiveMessages,n),function(){return t.off(e.CbEvents.OnReceiveMessages,n)}},l.onConnectionChange=function(n){var t=this,r=function(){return n(!0)},o=function(){return n(!1)};return this.on(e.CbEvents.OnConnected,r),this.on(e.CbEvents.OnDisconnected,o),function(){t.off(e.CbEvents.OnConnected,r),t.off(e.CbEvents.OnDisconnected,o)}},l.onKickedOffline=function(n){var t=this;return this.on(e.CbEvents.OnKickedOffline,n),function(){return t.off(e.CbEvents.OnKickedOffline,n)}},c=s,(d=[{key:"message",get:function(){return this.getService(e.ServiceName.MESSAGE)}},{key:"conversation",get:function(){return this.getService(e.ServiceName.CONVERSATION)}},{key:"group",get:function(){return this.getService(e.ServiceName.GROUP)}},{key:"user",get:function(){return this.getService(e.ServiceName.USER)}},{key:"username",get:function(){return this.config.username}},{key:"uuid",get:function(){return(36*Math.random()).toString(36).slice(2)+(new Date).getTime().toString()}}])&&function(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}(c.prototype,d),Object.defineProperty(c,"prototype",{writable:!1}),c}(_);e.MessageStatus={NORMAL:0,EDITED:1,DELETED:2},e.SIMSDK=H});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("event-source-polyfill")):"function"==typeof define&&define.amd?define(["exports","event-source-polyfill"],t):t((e||self).simSdkWeb={},e.eventSourcePolyfill)}(this,function(e,t){function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function o(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 r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r.apply(null,arguments)}function s(e,t){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},s(e,t)}function i(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 a;e.ServiceName=void 0,(a=e.ServiceName||(e.ServiceName={})).MESSAGE="message",a.CONVERSATION="conversation",a.GROUP="group",a.USER="user";var c,u,d,l=/*#__PURE__*/function(){function e(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=5e3,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this._openHandler=null,this._errorHandler=null,this._messageHandler=null,this._customHandlers=new Map,this.url=e.url,this.token=e.token,this.reconnectTimeout=e.retryInterval||5e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed}var n=e.prototype;return n.removeAllEventListeners=function(){var e=this;this.eventSource&&(this._openHandler&&this.eventSource.removeEventListener("open",this._openHandler),this._errorHandler&&this.eventSource.removeEventListener("error",this._errorHandler),this._messageHandler&&this.eventSource.removeEventListener("message",this._messageHandler),this.handlers.forEach(function(t,n){var o=e._customHandlers.get(n);o&&e.eventSource&&e.eventSource.removeEventListener(n,o)}))},n.subscribe=function(e,t){this.handlers.set(e,t);var n=function(e){try{var n=JSON.parse(e.data);t(n)}catch(e){console.error("Error parsing message data:",e)}};this._customHandlers.set(e,n),this.eventSource?this.eventSource.addEventListener(e,n):this.connect()},n.connect=function(){var e=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(n,o){try{e.eventSource=new t.EventSourcePolyfill(e.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+e.token}}),e._openHandler=function(t){console.log("SSE connection established"),e.connected=!0,e.reconnectAttempts>0&&e.onReconnectSuccessCallback&&e.onReconnectSuccessCallback(),e.reconnectAttempts=0,e.reconnectTimeout=5e3,n("SSE connect successful!")},e._errorHandler=function(t){console.error("SSE connection error:",t),e.connected=!1,401===t.status||t.statusText&&t.statusText.includes("Unauthorized")?(e.cleanup(),e.notifyConnectionClosed(!0)):e.handleReconnect(),e.connected||o(new Error("SSE connect error"))},e._messageHandler=function(t){try{console.log("SSE received message:",t.data);var n=JSON.parse(t.data);e.onMessageCallback&&e.onMessageCallback(n)}catch(e){console.error("Error parsing message:",e)}},e.eventSource.addEventListener("open",e._openHandler),e.eventSource.addEventListener("error",e._errorHandler),e.eventSource.addEventListener("message",e._messageHandler),e.handlers.forEach(function(t,n){var o=e._customHandlers.get(n);o&&e.eventSource&&e.eventSource.addEventListener(n,o)});var r=setTimeout(function(){e.connected||(o(new Error("Connection timeout")),e.handleReconnect())},1e4),s=e._openHandler;e._openHandler=function(e){clearTimeout(r),s(e)}}catch(t){console.error("Failed to create EventSource:",t),e.handleReconnect(),o(t)}})},n.notifyConnectionClosed=function(e){void 0===e&&(e=!1),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(),e?console.warn("SSE connection closed due to authentication error"):console.log("SSE connection closed")},n.handleReconnect=function(){var e=this;if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return console.error("Max reconnection attempts reached"),void this.destroySse();console.log("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,3e4),e.reconnectTimer=null,e.connect().catch(function(){})},this.reconnectTimeout)}},n.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},n.unsubscribe=function(){this.cleanup(),this.handlers.clear(),this._customHandlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},n.destroySse=function(){this.unsubscribe(),this.reconnectAttempts=this.maxReconnectAttempts,this.notifyConnectionClosed()},n.close=function(){this.destroySse(),console.log("SSE 连接已关闭")},n.isConnected=function(){return this.connected},e}();e.ErrorCode=void 0,(c=e.ErrorCode||(e.ErrorCode={}))[c.ConnectionEstablishmentFailed=1e4]="ConnectionEstablishmentFailed",c[c.ResourceLoadNotCompleteError=10004]="ResourceLoadNotCompleteError",c[c.UnknownError=10005]="UnknownError",c[c.LoginRepeatError=10102]="LoginRepeatError",e.RequestApi=void 0,(u=e.RequestApi||(e.RequestApi={})).Login="/chat/member/login",u.Logout="/chat/member/logout",u.CreateGroup="CreateGroup",u.GetGroupInfo="/chat/group/groupInfo",u.GetGroupMembers="/chat/group/groupMembers",u.JoinGroup="/chat/group/joinGroup",u.GetAllConversationList="/chat/group/list",u.MarkConversationMessageAsRead="/chat/group/lastRead",u.CreateTextMessage="/chat/message/push",u.GetHistoryMessageList="/chat/message/pull",u.UploadFile="/chat/img/upload",e.CbEvents=void 0,(d=e.CbEvents||(e.CbEvents={})).OnConnected="OnConnected",d.OnDisconnected="OnDisconnected",d.OnReconnecting="OnReconnecting",d.OnReconnected="OnReconnected",d.OnReconnectFailed="OnReconnectFailed",d.OnNetworkChange="OnNetworkChange",d.OnReceiveMessage="OnReceiveMessage",d.OnReceiveMessages="OnReceiveMessages",d.OnMessagesListLoaded="OnMessagesListLoaded",d.OnMessageSent="OnMessageSent",d.OnMessageFailed="OnMessageFailed",d.OnMessageRevoked="OnMessageRevoked",d.OnMessageDeleted="OnMessageDeleted",d.OnMessageRead="OnMessageRead",d.OnTypingStatusUpdate="OnTypingStatusUpdate",d.OnUserStatusChange="OnUserStatusChange",d.OnKickedOffline="OnKickedOffline",d.OnUserTokenInvalid="OnUserTokenInvalid",d.OnUserTokenExpired="OnUserTokenExpired",d.OnForceOffline="OnForceOffline",d.OnUserInfoUpdated="OnUserInfoUpdated",d.OnGroupCreated="OnGroupCreated",d.OnGroupInfoUpdated="OnGroupInfoUpdated",d.OnGroupDissolved="OnGroupDissolved",d.OnJoinGroup="OnJoinGroup",d.OnLeaveGroup="OnLeaveGroup",d.OnGroupMemberJoined="OnGroupMemberJoined",d.OnGroupMemberLeft="OnGroupMemberLeft",d.OnGroupMemberKicked="OnGroupMemberKicked",d.OnGroupOwnerChanged="OnGroupOwnerChanged",d.OnGroupAdminAdded="OnGroupAdminAdded",d.OnGroupAdminRemoved="OnGroupAdminRemoved",d.OnGroupMemberMuted="OnGroupMemberMuted",d.OnGroupMemberUnmuted="OnGroupMemberUnmuted",d.OnGroupAllMemberMuted="OnGroupAllMemberMuted",d.OnGroupAllMemberUnmuted="OnGroupAllMemberUnmuted",d.OnConversationCreated="OnConversationCreated",d.OnConversationDeleted="OnConversationDeleted",d.OnConversationListUpdated="OnConversationListUpdated",d.OnConversationUpdated="OnConversationUpdated",d.OnUnreadCountChanged="OnUnreadCountChanged",d.OnConversationPinned="OnConversationPinned",d.OnConversationUnpinned="OnConversationUnpinned",d.OnConversationMuted="OnConversationMuted",d.OnConversationUnmuted="OnConversationUnmuted",d.OnPongConn="OnPongConn",d.OnPongReConn="OnPongReConn",d.OnPongIdle="OnPongIdle",d.OnError="OnError",d.OnWarning="OnWarning",d.OnLog="OnLog";var g,h,v,p,f,m,M,S,C,E,O,G,T,A,b,R,P,y,I,N,_,k,L=/*#__PURE__*/function(){function t(){var t;this.events=((t={})[e.CbEvents.OnReceiveMessage]=[],t[e.CbEvents.OnReceiveMessages]=[],t)}var n=t.prototype;return n.emit=function(e,t){var n=this.events[e];return n&&n.forEach(function(e){return e(t)}),this},n.on=function(e,t){var n;return this.events[e]||(this.events[e]=[]),null==(n=this.events[e])||n.push(t),this},n.off=function(e,t){var n=this.events[e];if(n){var o=n.indexOf(t);o>-1&&(n.splice(o,1),0===n.length&&delete this.events[e])}return this},t}();e.MessageReceiveOptType=void 0,(g=e.MessageReceiveOptType||(e.MessageReceiveOptType={}))[g.Nomal=0]="Nomal",g[g.NotReceive=1]="NotReceive",g[g.NotNotify=2]="NotNotify",e.AllowType=void 0,(h=e.AllowType||(e.AllowType={}))[h.Allowed=0]="Allowed",h[h.NotAllowed=1]="NotAllowed",e.GroupType=void 0,(v=e.GroupType||(e.GroupType={}))[v.Group=2]="Group",v[v.WorkingGroup=2]="WorkingGroup",e.GroupJoinSource=void 0,(p=e.GroupJoinSource||(e.GroupJoinSource={}))[p.Invitation=2]="Invitation",p[p.Search=3]="Search",p[p.QrCode=4]="QrCode",e.GroupMemberRole=void 0,(f=e.GroupMemberRole||(e.GroupMemberRole={}))[f.Nomal=20]="Nomal",f[f.Admin=60]="Admin",f[f.Owner=100]="Owner",e.GroupVerificationType=void 0,(m=e.GroupVerificationType||(e.GroupVerificationType={}))[m.ApplyNeedInviteNot=0]="ApplyNeedInviteNot",m[m.AllNeed=1]="AllNeed",m[m.AllNot=2]="AllNot",e.Platform=void 0,(M=e.Platform||(e.Platform={}))[M.iOS=1]="iOS",M[M.Android=2]="Android",M[M.Windows=3]="Windows",M[M.MacOSX=4]="MacOSX",M[M.Web=5]="Web",M[M.Linux=7]="Linux",M[M.AndroidPad=8]="AndroidPad",M[M.iPad=9]="iPad",e.LogLevel=void 0,(S=e.LogLevel||(e.LogLevel={}))[S.Debug=5]="Debug",S[S.Info=4]="Info",S[S.Warn=3]="Warn",S[S.Error=2]="Error",S[S.Fatal=1]="Fatal",S[S.Panic=0]="Panic",e.ApplicationHandleResult=void 0,(C=e.ApplicationHandleResult||(e.ApplicationHandleResult={}))[C.Unprocessed=0]="Unprocessed",C[C.Agree=1]="Agree",C[C.Reject=-1]="Reject",e.MessageType=void 0,(E=e.MessageType||(e.MessageType={}))[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",e.SessionType=void 0,(O=e.SessionType||(e.SessionType={}))[O.Single=1]="Single",O[O.Group=3]="Group",O[O.WorkingGroup=3]="WorkingGroup",O[O.Notification=4]="Notification",e.GroupStatus=void 0,(G=e.GroupStatus||(e.GroupStatus={}))[G.Nomal=0]="Nomal",G[G.Baned=1]="Baned",G[G.Dismissed=2]="Dismissed",G[G.Muted=3]="Muted",e.GroupAtType=void 0,(T=e.GroupAtType||(e.GroupAtType={}))[T.AtNormal=0]="AtNormal",T[T.AtMe=1]="AtMe",T[T.AtAll=2]="AtAll",T[T.AtAllAtMe=3]="AtAllAtMe",T[T.AtGroupNotice=4]="AtGroupNotice",e.GroupMemberFilter=void 0,(A=e.GroupMemberFilter||(e.GroupMemberFilter={}))[A.All=0]="All",A[A.Owner=1]="Owner",A[A.Admin=2]="Admin",A[A.Nomal=3]="Nomal",A[A.AdminAndNomal=4]="AdminAndNomal",A[A.AdminAndOwner=5]="AdminAndOwner",e.Relationship=void 0,(b=e.Relationship||(e.Relationship={}))[b.isBlack=0]="isBlack",b[b.isFriend=1]="isFriend",e.LoginStatus=void 0,(R=e.LoginStatus||(e.LoginStatus={}))[R.Logout=1]="Logout",R[R.Logging=2]="Logging",R[R.Logged=3]="Logged",e.OnlineState=void 0,(P=e.OnlineState||(e.OnlineState={}))[P.Online=1]="Online",P[P.Offline=0]="Offline",e.GroupMessageReaderFilter=void 0,(y=e.GroupMessageReaderFilter||(e.GroupMessageReaderFilter={}))[y.Readed=0]="Readed",y[y.UnRead=1]="UnRead",e.GROUP_TYPE=void 0,(I=e.GROUP_TYPE||(e.GROUP_TYPE={}))[I.ONE_ON_ONE=0]="ONE_ON_ONE",I[I.GROUP_CHAT=1]="GROUP_CHAT",I[I.CUSTOMER_SERVICE=2]="CUSTOMER_SERVICE",e.MSG_TYPE=void 0,(N=e.MSG_TYPE||(e.MSG_TYPE={}))[N.TEXT=0]="TEXT",N[N.IMAGE=1]="IMAGE",N[N.FILE=2]="FILE",N[N.AUDIO=3]="AUDIO",N[N.VIDEO=4]="VIDEO",N[N.LINK=5]="LINK",N[N.GIF=6]="GIF",N[N.OPTION=7]="OPTION",N[N.EMOJI=8]="EMOJI",N[N.CUSTOM=100]="CUSTOM",e.SSE_RESPONSE_TYPE=void 0,(_=e.SSE_RESPONSE_TYPE||(e.SSE_RESPONSE_TYPE={}))[_.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",_[_.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",_[_.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",_[_.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",e.MessageSendStatus=void 0,(k=e.MessageSendStatus||(e.MessageSendStatus={}))[k.Sending=1]="Sending",k[k.Succeed=2]="Succeed",k[k.Failed=3]="Failed";var U="undefined"!=typeof uni,w="undefined"!=typeof window,F="simsdk_",j={CONVERSATIONS:F+"conversations",GROUP_MESSAGES:F+"group_messages",USER_INFO:F+"user_info",META_INFO:F+"meta"},x={MAX_CONVERSATIONS:100,MAX_GROUP_MESSAGES:200,STORAGE_CHUNK_SIZE:512e3,CACHE_TTL:6048e5,EXPIRY_CHECK_INTERVAL:18e5},q=/*#__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({},x,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.setConversations=function(e){this.conversationCache=e.length>this.config.MAX_CONVERSATIONS?e.slice(0,this.config.MAX_CONVERSATIONS):[].concat(e),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){var t=e.groupId;if(!t)return!1;var n=this.conversationCache.findIndex(function(e){return e.id===t});return n>=0&&(this.conversationCache[n].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.id===e.id});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,n=this,r={},s=o(e);!(t=s()).done;){var i=t.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,t=n.groupMessageCache[d].findIndex(function(t){return t.id===e.id});t>=0?n.groupMessageCache[d][t]=e:n.groupMessageCache[d].push(e)},v=o(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,o,r=(null==(n=e.latest)?void 0:n.createTime)||0;return((null==(o=t.latest)?void 0:o.createTime)||0)-r})},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 o=Math.ceil(.3*t),r=0;r<o&&r<n.length;r++){var s=n[r].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 o=n[t],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()},t.loadFromStorage=function(){var e=this;try{var t=localStorage.getItem(j.META_INFO);t&&(this.metaInfo=JSON.parse(t));var n=localStorage.getItem(j.CONVERSATIONS);n&&(this.conversationCache=JSON.parse(n)),Object.keys(localStorage).filter(function(e){return e.startsWith(j.GROUP_MESSAGES+".")}).forEach(function(t){var n=t.split(".")[1];n&&!isNaN(Number(n))&&(e.accessTimeRecord[n]=0)});var o=localStorage.getItem(j.USER_INFO);o&&(this.userInfo=JSON.parse(o))}catch(e){console.error("Failed to load cache from storage:",e),this.clearStorage()}},t.loadGroupMessagesFromStorage=function(e){try{for(var t=[],n=0,o=!0;o;){var r=localStorage.getItem(j.GROUP_MESSAGES+"."+e+(n>0?"."+n:""));if(r){var s=JSON.parse(r);t=t.concat(s),n++}else o=!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(j.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 o=t.length,r=Math.max(1,Math.floor(this.config.STORAGE_CHUNK_SIZE/(n.length/o))),s=0;s<o;s+=r){var i=t.slice(s,s+r),a=Math.floor(s/r);localStorage.setItem(j.GROUP_MESSAGES+"."+e+(a>0?"."+a:""),JSON.stringify(i))}}else localStorage.setItem(j.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(j.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)),o=0;o<n&&o<t.length;o++)this.clearGroupMessageStorage(Number(t[o].groupId)),this.debug&&console.log("Cleared storage for group "+t[o].groupId+" due to quota exceeded")},t.clearGroupMessageStorage=function(e){for(var t=0,n=!0;n;){var o=j.GROUP_MESSAGES+"."+e+(t>0?"."+t:"");null!==localStorage.getItem(o)?(localStorage.removeItem(o),t++):n=!1}},t.saveUserInfoToStorage=function(){try{localStorage.setItem(j.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=o(Object.keys(localStorage).filter(function(e){return e.startsWith(F)}));!(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}(),D=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return n.login=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.Login,method:"POST"}))}catch(e){return Promise.reject(e)}},n.logout=function(){try{return Promise.resolve(this.sdk.sendRequest({data:{},url:e.RequestApi.Logout,method:"POST"}))}catch(e){return Promise.reject(e)}},t}(),H=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return n.sendMessage=function(e,t){try{var n=this;return Promise.resolve(function(o,r){try{var s=Promise.resolve(n.sdk.sendRequest({data:e,url:t,method:"POST"}))}catch(e){return r(e)}return s&&s.then?s.then(void 0,r):s}(0,function(e){throw console.error("Failed to send message",e),e}))}catch(e){return Promise.reject(e)}},n.createMessage=function(e,t,n,o,s){var i;void 0===n&&(n={});var a=r({},n,((i={msgType:e})[o]=s,i.status=0,i));return this.sendMessage(a,t)},n.createTextMessage=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.TEXT,e.RequestApi.CreateTextMessage,n,"text",t))}catch(e){return Promise.reject(e)}},n.createImageMessage=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.IMAGE,e.RequestApi.CreateTextMessage,n,"link",t))}catch(e){return Promise.reject(e)}},n.createFileMessage=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.FILE,e.RequestApi.CreateTextMessage,n,"link",t))}catch(e){return Promise.reject(e)}},n.createVideoMessage=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.VIDEO,e.RequestApi.CreateTextMessage,n,"link",t))}catch(e){return Promise.reject(e)}},n.createLinkMessage=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.LINK,e.RequestApi.CreateTextMessage,n,"text",t))}catch(e){return Promise.reject(e)}},n.createGifMessage=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.GIF,e.RequestApi.CreateTextMessage,n,"link",t))}catch(e){return Promise.reject(e)}},n.createOptionMessage=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.OPTION,e.RequestApi.CreateTextMessage,n,"text",t))}catch(e){return Promise.reject(e)}},n.createEmojiMessage=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.EMOJI,e.RequestApi.CreateTextMessage,n,"text",t))}catch(e){return Promise.reject(e)}},n.createCustomMessage=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.createMessage(e.MSG_TYPE.CUSTOM,e.RequestApi.CreateTextMessage,n,"text",t))}catch(e){return Promise.reject(e)}},n.getHistoryMessageList=function(t){var n=t.groupId,o=t.lastId,r=t.size,s=void 0===r?100:r;try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:n,lastId:o,size:s},url:e.RequestApi.GetHistoryMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},t}(),V=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return n.getConversations=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.GetAllConversationList,method:"GET"}))}catch(e){return Promise.reject(e)}},n.markConversationRead=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.MarkConversationMessageAsRead,method:"GET"}))}catch(e){return Promise.reject(e)}},t}(),K=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return n.createGroup=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.CreateGroup,method:"POST"}))}catch(e){return Promise.reject(e)}},n.getGroupInfo=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:e.RequestApi.GetGroupInfo,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getGroupMembers=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.GetGroupMembers,method:"GET"}))}catch(e){return Promise.reject(e)}},n.joinGroup=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:e.RequestApi.JoinGroup,method:"GET"}))}catch(e){return Promise.reject(e)}},t}(),Y=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.services={},this.sdk=e}var n=t.prototype;return n.get=function(e){return this.services[e]||(this.services[e]=this.createService(e)),this.services[e]},n.createService=function(t){switch(t){case e.ServiceName.USER:return new D(this.sdk);case e.ServiceName.MESSAGE:return new H(this.sdk);case e.ServiceName.CONVERSATION:return new V(this.sdk);case e.ServiceName.GROUP:return new K(this.sdk);default:throw new Error("Unknown service: "+t)}},n.reset=function(){this.services={}},t}();function J(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var z=[e.RequestApi.Logout,e.CbEvents.OnKickedOffline,e.CbEvents.OnUserTokenInvalid,e.CbEvents.OnUserTokenExpired],W=/*#__PURE__*/function(t){function n(n){var o;return void 0===n&&(n=!1),(o=t.call(this)||this).config={debug:!1},o.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},o.cacheManager=void 0,o.sseClient=void 0,o.serviceManager=void 0,o.configure=function(e){void 0!==e.debug&&(o.config.debug=e.debug),e.apiAddr&&(o.config.apiAddr=e.apiAddr),e.appKey&&(o.config.appKey=e.appKey)},o.sendRequest=function(e){o.internalState.lastActivity=Date.now(),o.config.debug&&o.logRequest(e);var t=o.config.apiAddr+e.url,n=e.data;if("GET"===e.method&&n){var r=new URLSearchParams;Object.entries(n).forEach(function(e){var t=e[1];null!=t&&r.append(e[0],String(t))});var s=r.toString();s&&(t+=(t.includes("?")?"&":"?")+s),n=void 0}return function(e){try{return Promise.resolve(U?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(w)return console.log("isBrowser ",w),console.log("options ",e),Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){return Promise.resolve(e.json())})}())}catch(e){return Promise.reject(e)}}({url:t,method:e.method,headers:{"Content-Type":"application/json",Authorization:o.config.token?"Bearer "+o.config.token:""},data:n})},o.createRequestFunction=function(e,t){return function(n){return o.sendRequest({data:n,url:e,method:t})}},o.createRequestFunctionWithoutParams=function(e,t){return function(){return o.sendRequest({data:void 0,method:t,url:e})}},o.handleMessage=function(t){switch(o.config.debug&&console.log("handleMessage response",t),t.ev){case e.SSE_RESPONSE_TYPE.EVENT_MESSAGE_PUSH:if(1===t.dt.length){var n=t.dt[0];o.updateMessageCache(n),o.emit(e.CbEvents.OnReceiveMessage,n)}else{var r=t.dt;r.forEach(function(e){return o.updateMessageCache(e)}),o.emit(e.CbEvents.OnReceiveMessages,r)}break;case e.SSE_RESPONSE_TYPE.EVENT_PONG_CONN:o.internalState.isConnected=!0,o.emit(e.CbEvents.OnConnected);break;case e.SSE_RESPONSE_TYPE.EVENT_PONG_RE_CONN:o.internalState.isConnected=!0,o.emit(e.CbEvents.OnReconnected);break;case e.SSE_RESPONSE_TYPE.EVENT_PONG_IDLE:break;default:s=t.ev,Object.values(e.CbEvents).includes(s)?(o.emit(t.ev,t.dt),z.includes(t.ev)&&(o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1,o.sseClient&&(o.sseClient.close(),o.sseClient=void 0))):o.config.debug&&console.warn("Unknown SSE event type:",t.ev)}var s},o.handleReconnectSuccess=function(){o.config.username&&(o.internalState.isConnected=!0,o.internalState.reconnectAttempts=0,o.config.debug&&console.log("SSE reconnection successful"),o.emit(e.CbEvents.OnReconnected))},o.handleConnectionClosed=function(){o.internalState.isConnected=!1,o.config.debug&&console.log("SSE connection closed"),o.emit(e.CbEvents.OnDisconnected)},o.login=function(t){try{if(o.sseClient)return Promise.resolve("login repeat");if(!o.config.apiAddr)return Promise.reject("No apiAddr configured. Please call configure() before login().");if(!o.config.appKey)return Promise.reject("No appKey configured. Please call configure() before login().");o.config.token=t.token,o.config.username=t.username,o.config.debug&&(console.log("login params",t),console.log("apiAddr",o.config.apiAddr)),o.cacheManager.initialize(t.username),o.cacheManager.resetActiveConversation();var n=o.cacheManager.getConversations();return n.length>0&&o.emit(e.CbEvents.OnConversationListUpdated,n),Promise.resolve(o.user.login(t)).then(function(e){var n=e.code,r=e.data;return 0!=n?Promise.resolve("Login failed, Server error, error code is "+n):(o.initializeConversationCache(),o.sseClient=new l({url:o.config.apiAddr+"/chat/sse/conn?username="+t.username+"&token="+t.token+"&appKey="+o.config.appKey+"&random="+r,onMessage:o.handleMessage,onReconnectSuccess:o.handleReconnectSuccess,onConnectionClosed:o.handleConnectionClosed,token:t.token}),J(function(){return Promise.resolve(o.sseClient.connect()).then(function(e){return o.internalState.isLoggedIn=!0,e})},function(e){return o.internalState.isLoggedIn=!1,Promise.reject(e.message)}))})}catch(e){return Promise.reject(e)}},o.logout=function(){try{return o.sseClient&&(o.sseClient.close(),o.sseClient=void 0),Promise.resolve(o.user.logout()).then(function(e){return o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1,o.config.username=void 0,o.config.token=void 0,o.cacheManager.clear(),e})}catch(e){return Promise.reject(e)}},o.getConversations=function(t){try{var n=J(function(){return Promise.resolve(o.conversation.getConversations(t)).then(function(n){var s=n.data;if(0===n.code&&s){var i=o.cacheManager.getConversations();if(1===t.pageNo)o.cacheManager.setConversations([].concat(s.records));else{var a=s.records||[],c=new Set(i.map(function(e){return e.id})),u=a.filter(function(e){return!c.has(e.id)}),d=[].concat(i,u);o.cacheManager.setConversations(d)}var l=r({},s,{records:o.cacheManager.getConversations()});o.emit(e.CbEvents.OnConversationListUpdated,l)}else{var g=o.cacheManager.getConversations();g.length>0&&o.emit(e.CbEvents.OnConversationListUpdated,g)}})},function(t){console.error("Failed to get conversations:",t);var n=o.cacheManager.getConversations();n.length>0&&o.emit(e.CbEvents.OnConversationListUpdated,n)});return Promise.resolve(n&&n.then?n.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},o.internalUploadFile=function(t){try{return Promise.resolve(J(function(){var n=new FormData;return n.append("file",t),n.append("filename",t.name),Promise.resolve(fetch(""+o.config.apiAddr+e.RequestApi.UploadFile,{method:"POST",headers:{Authorization:o.config.token?"Bearer "+o.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)}},o.uploadFile=function(t){var n=t.file;try{return Promise.resolve(o.internalUploadFile(n)).then(function(t){var n,o=t.url,r=t.error;return{data:{url:void 0===o?"":o},msg:null!=(n=null==r?void 0:r.message)?n:"",code:r?e.ErrorCode.UnknownError:0}})}catch(e){return Promise.reject(e)}},o.sendTextMessage=function(e,t){return o.message.createTextMessage(e,t)},o.sendImageMessage=function(e,t){return o.message.createImageMessage(e,t)},o.sendFileMessage=function(e,t){return o.message.createFileMessage(e,t)},o.sendVideoMessage=function(e,t){return o.message.createVideoMessage(e,t)},o.sendLinkMessage=function(e,t){return o.message.createLinkMessage(e,t)},o.sendGifMessage=function(e,t){return o.message.createGifMessage(e,t)},o.sendOptionMessage=function(e,t){return o.message.createOptionMessage(e,t)},o.sendEmojiMessage=function(e,t){return o.message.createEmojiMessage(e,t)},o.sendCustomMessage=function(e,t){return o.message.createCustomMessage(e,t)},o.getHistoryMessageList=function(t){try{var n=J(function(){t.groupId&&o.cacheManager.markConversationAsActive(t.groupId);var n=[];if(t.groupId&&(n=o.cacheManager.getGroupMessages(t.groupId)),n.length>0&&""===t.lastId){var s=n.slice(0,t.size||20);o.emit(e.CbEvents.OnMessagesListLoaded,{list:s,groupId:t.groupId})}return Promise.resolve(o.message.getHistoryMessageList(t)).then(function(s){var i=s.data;if(0===s.code&&i)t.groupId&&o.cacheManager.addGroupMessages(i.groupChatList||[]),o.emit(e.CbEvents.OnMessagesListLoaded,r({},i,{isFromCache:!1,groupId:t.groupId}));else if(n.length>0&&!(""===t.lastId&&n.length>0)){var a=n.slice(0,0+(t.size||20));o.emit(e.CbEvents.OnMessagesListLoaded,{list:a,groupId:t.groupId})}})},function(n){console.error("Failed to get history messages:",n);var r=[];if(t.groupId&&(r=o.cacheManager.getGroupMessages(t.groupId)),r.length>0){var s=r.slice(0,0+(t.size||20));o.emit(e.CbEvents.OnMessagesListLoaded,{list:s,groupId:t.groupId,error:n.message})}});return Promise.resolve(n&&n.then?n.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},o.createGroup=function(e){return o.group.createGroup(e)},o.getGroupInfo=function(e){return o.group.getGroupInfo(e)},o.getGroupMembers=function(e){return o.group.getGroupMembers(e)},o.joinGroup=function(e){return o.group.joinGroup(e)},o.markConversationRead=function(e){return o.conversation.markConversationRead(e)},o.config.debug=n,o.cacheManager=new q({persistEnabled:!0,debug:n}),o.serviceManager=new Y(o),o}var o,a;a=t,(o=n).prototype=Object.create(a.prototype),o.prototype.constructor=o,s(o,a);var c,u,d=n.prototype;return d.getService=function(e){return this.serviceManager.get(e)},d.isConnected=function(){return!!this.sseClient&&this.internalState.isConnected},d.isLoggedIn=function(){return this.internalState.isLoggedIn},d.logRequest=function(e){var t=Math.random().toString(36).substring(2,8),n={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 #"+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.groupCollapsed("%c📦 Request Payload","color: #555; font-weight: bold;"),console.log("%c%s","color: #333; background: #f8f8f8; padding: 8px; border-radius: 4px; border-left: 4px solid #7CAEFF; font-family: monospace; line-height: 1.4;",JSON.stringify(e.data,null,2)),console.groupEnd())},d.initializeConversationCache=function(){try{var t=this,n=J(function(){return Promise.resolve(t.conversation.getConversations({pageNo:1,pageSize:20})).then(function(n){var o=n.data;0===n.code&&o&&o.records&&(t.cacheManager.setConversations(o.records),t.emit(e.CbEvents.OnConversationListUpdated,o),t.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)}},d.onMessage=function(t){var n=this;return this.on(e.CbEvents.OnReceiveMessage,t),function(){return n.off(e.CbEvents.OnReceiveMessage,t)}},d.onMessages=function(t){var n=this;return this.on(e.CbEvents.OnReceiveMessages,t),function(){return n.off(e.CbEvents.OnReceiveMessages,t)}},d.onConnectionChange=function(t){var n=this,o=function(){return t(!0)},r=function(){return t(!1)};return this.on(e.CbEvents.OnConnected,o),this.on(e.CbEvents.OnDisconnected,r),function(){n.off(e.CbEvents.OnConnected,o),n.off(e.CbEvents.OnDisconnected,r)}},d.onKickedOffline=function(t){var n=this;return this.on(e.CbEvents.OnKickedOffline,t),function(){return n.off(e.CbEvents.OnKickedOffline,t)}},d.updateMessageCache=function(t){if(t.groupId&&this.cacheManager.addGroupMessage(t),this.cacheManager.updateConversationWithMessage(t)){var n=this.cacheManager.getConversations();this.emit(e.CbEvents.OnConversationListUpdated,n)}},d.getCachedGroupMessages=function(e){return this.cacheManager.getGroupMessages(e)},c=n,(u=[{key:"message",get:function(){return this.getService(e.ServiceName.MESSAGE)}},{key:"conversation",get:function(){return this.getService(e.ServiceName.CONVERSATION)}},{key:"group",get:function(){return this.getService(e.ServiceName.GROUP)}},{key:"user",get:function(){return this.getService(e.ServiceName.USER)}},{key:"username",get:function(){return this.config.username}},{key:"uuid",get:function(){return(36*Math.random()).toString(36).slice(2)+(new Date).getTime().toString()}}])&&function(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,i(o.key),o)}}(c.prototype,u),Object.defineProperty(c,"prototype",{writable:!1}),c}(L);e.MessageStatus={NORMAL:0,EDITED:1,DELETED:2},e.SIMSDK=W});
@@ -25,7 +25,7 @@ export interface Request {
25
25
  }
26
26
  export interface SseData {
27
27
  ev: number;
28
- dt: string;
28
+ dt: MessageItem[];
29
29
  }
30
30
  export interface ServerResponse<T = unknown> {
31
31
  type?: MessageType;
@@ -59,7 +59,7 @@ export type GroupApplicationItem = {
59
59
  creatorUserID: string;
60
60
  ex: string;
61
61
  groupFaceURL: string;
62
- groupID: string;
62
+ groupId: number;
63
63
  groupName: string;
64
64
  groupType: GroupType;
65
65
  handleResult: ApplicationHandleResult;
@@ -151,7 +151,7 @@ export type BlackUserItem = {
151
151
  ownerUserID: string;
152
152
  };
153
153
  export type GroupItem = {
154
- groupID: string;
154
+ groupId: number;
155
155
  groupName: string;
156
156
  notification: string;
157
157
  notificationUserID: string;
@@ -170,7 +170,7 @@ export type GroupItem = {
170
170
  lookMemberInfo: AllowType;
171
171
  };
172
172
  export type GroupMemberItem = {
173
- groupID: string;
173
+ groupId: number;
174
174
  userId: string;
175
175
  nickname: string;
176
176
  faceURL: string;
@@ -191,7 +191,7 @@ export type ConversationItem = {
191
191
  latest: MessageItem;
192
192
  };
193
193
  export type HistoryMessageParam = {
194
- groupId: string;
194
+ groupId: number;
195
195
  lastId: string;
196
196
  size?: number;
197
197
  };
@@ -200,7 +200,7 @@ export type ReqPageParam = {
200
200
  pageSize?: number;
201
201
  };
202
202
  export type MarkConversationReadParam = {
203
- groupId?: number;
203
+ groupId?: string;
204
204
  id?: number;
205
205
  };
206
206
  export type PageParam<T> = {
@@ -216,6 +216,7 @@ interface AvatarMap {
216
216
  export type MessageItem = {
217
217
  id: number | null;
218
218
  msgId: string;
219
+ username: string;
219
220
  groupType: number;
220
221
  groupId: number;
221
222
  replyMsgId: number;
@@ -227,8 +228,8 @@ export type MessageItem = {
227
228
  text?: string;
228
229
  link?: string;
229
230
  snapshot?: string;
230
- createTime: Date;
231
- updateTime?: Date;
231
+ createTime: number;
232
+ updateTime?: number;
232
233
  status: number;
233
234
  avatar?: string;
234
235
  };
@@ -0,0 +1,166 @@
1
+ import { ConversationItem, MessageItem } from '../types/entity';
2
+ declare const DEFAULT_CONFIG: {
3
+ MAX_CONVERSATIONS: number;
4
+ MAX_GROUP_MESSAGES: number;
5
+ STORAGE_CHUNK_SIZE: number;
6
+ CACHE_TTL: number;
7
+ EXPIRY_CHECK_INTERVAL: number;
8
+ };
9
+ /**
10
+ * 缓存管理器 - 负责内存缓存和持久化存储的管理
11
+ */
12
+ export declare class CacheManager {
13
+ private conversationCache;
14
+ private groupMessageCache;
15
+ private accessTimeRecord;
16
+ private userInfo;
17
+ private activeConversation?;
18
+ private metaInfo;
19
+ private persistEnabled;
20
+ private debug;
21
+ private config;
22
+ private cleanupTimer?;
23
+ /**
24
+ * 创建缓存管理器实例
25
+ * @param options 选项
26
+ */
27
+ constructor({ persistEnabled, debug, config }?: {
28
+ persistEnabled?: boolean;
29
+ debug?: boolean;
30
+ config?: Partial<typeof DEFAULT_CONFIG>;
31
+ });
32
+ /**
33
+ * 初始化缓存
34
+ * @param username 当前用户名
35
+ */
36
+ initialize(username?: string): void;
37
+ /**
38
+ * 清除所有缓存
39
+ */
40
+ clear(): void;
41
+ /**
42
+ * 获取会话缓存
43
+ */
44
+ getConversations(): ConversationItem[];
45
+ /**
46
+ * 设置会话缓存
47
+ * @param conversations 会话列表
48
+ */
49
+ setConversations(conversations: ConversationItem[]): void;
50
+ /**
51
+ * 添加或更新会话
52
+ * @param conversation 会话项
53
+ */
54
+ updateConversation(conversation: ConversationItem): void;
55
+ /**
56
+ * 使用消息更新会话
57
+ * @param message 消息
58
+ * @returns 是否有更新
59
+ */
60
+ updateConversationWithMessage(message: MessageItem): boolean;
61
+ /**
62
+ * 获取群组消息
63
+ * @param groupId 群组ID
64
+ */
65
+ getGroupMessages(groupId: number): MessageItem[];
66
+ /**
67
+ * 添加群组消息
68
+ * @param message 消息
69
+ */
70
+ addGroupMessage(message: MessageItem): void;
71
+ /**
72
+ * 批量添加群组消息
73
+ * @param messages 消息数组
74
+ */
75
+ addGroupMessages(messages: MessageItem[]): void;
76
+ /**
77
+ * 对会话按最新消息时间排序
78
+ */
79
+ private sortConversations;
80
+ /**
81
+ * 对群组消息按时间排序
82
+ * @param groupId 群组ID
83
+ */
84
+ private sortGroupMessages;
85
+ /**
86
+ * 限制群组消息缓存大小
87
+ * @param groupId 群组ID
88
+ */
89
+ private limitGroupMessageCache;
90
+ /**
91
+ * 记录访问时间(用于LRU算法)
92
+ * @param groupId 群组ID
93
+ */
94
+ private recordAccess;
95
+ /**
96
+ * 强制限制会话数量
97
+ */
98
+ private enforceConversationLimit;
99
+ /**
100
+ * 强制内存限制 - 可能从内存中移除不活跃的群组消息
101
+ */
102
+ private enforceMemoryLimits;
103
+ /**
104
+ * 设置定期清理过期数据的定时器
105
+ */
106
+ private setupCleanupInterval;
107
+ /**
108
+ * 清理过期数据
109
+ */
110
+ private cleanupExpiredData;
111
+ /**
112
+ * 从本地存储加载数据
113
+ */
114
+ private loadFromStorage;
115
+ /**
116
+ * 从存储中加载特定群组的消息
117
+ * @param groupId 群组ID
118
+ */
119
+ private loadGroupMessagesFromStorage;
120
+ /**
121
+ * 保存会话列表到本地存储
122
+ */
123
+ private saveConversationsToStorage;
124
+ /**
125
+ * 保存群组消息到本地存储
126
+ * @param groupId 如果提供,只保存指定群组的消息
127
+ */
128
+ private saveGroupMessagesToStorage;
129
+ /**
130
+ * 保存元数据到本地存储
131
+ */
132
+ private saveMetaInfoToStorage;
133
+ /**
134
+ * 处理存储错误,主要处理配额超出问题
135
+ */
136
+ private handleStorageError;
137
+ /**
138
+ * 清除特定群组的消息存储
139
+ * @param groupId 群组ID
140
+ */
141
+ private clearGroupMessageStorage;
142
+ /**
143
+ * 保存用户信息到本地存储
144
+ */
145
+ private saveUserInfoToStorage;
146
+ /**
147
+ * 清除本地存储
148
+ */
149
+ private clearStorage;
150
+ /**
151
+ * 析构函数 - 清理定时器
152
+ */
153
+ destroy(): void;
154
+ /**
155
+ * 标记会话为活跃状态
156
+ * @param conversationId 会话ID
157
+ * @returns 是否成功找到并标记会话
158
+ */
159
+ markConversationAsActive(conversationId: number): boolean;
160
+ /**
161
+ * 重置当前活跃会话
162
+ * @returns 是否成功重置(如果之前有活跃会话则为true)
163
+ */
164
+ resetActiveConversation(): boolean;
165
+ }
166
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sim-sdk-web",
3
- "version": "v1.0.30",
3
+ "version": "v1.0.32",
4
4
  "description": "Sim SDK for Web",
5
5
  "source": "src/index.ts",
6
6
  "main": "lib/index.js",