sim-sdk-web 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.umd.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("event-source-polyfill")):"function"==typeof define&&define.amd?define(["exports","event-source-polyfill"],t):t((e||self).simSdkWeb={},e.eventSourcePolyfill)}(this,function(e,t){function 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,c,u,d;e.ServiceName=void 0,(a=e.ServiceName||(e.ServiceName={})).MESSAGE="message",a.CONVERSATION="conversation",a.GROUP="group",a.USER="user",e.ErrorCode=void 0,(c=e.ErrorCode||(e.ErrorCode={}))[c.UnknownError=10005]="UnknownError",e.RequestApi=void 0,(u=e.RequestApi||(e.RequestApi={})).Login="/chat/member/login",u.Logout="/chat/member/logout",u.GetGroupInfo="/chat/group/groupInfo",u.GetGroupMembers="/chat/group/groupMembers",u.JoinGroup="/chat/group/joinGroup",u.LeftGroup="/chat/group/leftGroup",u.AnonymousJoinGroup="/chat/group/anonymousJoinGroup",u.AnonymousLeftGroup="/chat/group/anonymousLeftGroup",u.CheckGroupBlock="/chat/group/checkBlock",u.GetMyGroupPermission="/chat/group/permission/getPermission",u.GetGroupPermission="/chat/group/permission/groupPermission",u.GetGroupMember="/chat/group/groupMember",u.GetGroupMemberPermission="/chat/group/permission/groupMemberPermission",u.UpdateGroupPermission="/chat/group/permission/updateGroupPermission",u.UpdateGroupMemberPermission="/chat/group/permission/updateGroupMemberPermission",u.editeGroupName="/chat/group/operation/editeGroupName",u.editeNotification="/chat/group/operation/editeNotification",u.editeGroupCustomer="/chat/group/operation/editeGroupCustomer",u.addAdmin="/chat/group/operation/addAdmin",u.deleteAdmin="/chat/group/operation/deleteAdmin",u.pin="/chat/group/operation/pin",u.muteGroup="/chat/group/operation/muteGroup",u.muteMember="/chat/group/operation/muteMember",u.kickGroupMember="/chat/group/operation/kickGroupMember",u.muteMembers="/chat/group/operation/muteMembers",u.GetAllConversationList="/chat/group/list",u.MarkConversationMessageAsRead="/chat/group/lastRead",u.UpdateLatestMessage="/chat/group/updateLatestMessage",u.GetLatestGroupChats="/chat/group/latestGroupChats",u.CheckLatestMessages="/chat/group/checkLatestMessages",u.CreateTextMessage="/chat/message/push",u.PushMessageToMember="/chat/message/push2Member",u.PushPrivateMessage="/chat/message/pushPrivateMessage",u.PushLiveMessage="/chat/message/liveGroupPush",u.GetHistoryMessageList="/chat/message/pull",u.GetLiveMessageList="/chat/message/liveGroupPull",u.GetAnonymousLiveMessageList="/chat/message/anonymousLiveGroupPull",u.UploadFile="/chat/img/upload",e.CbEvents=void 0,(d=e.CbEvents||(e.CbEvents={})).OnConnected="OnConnected",d.OnDisconnected="OnDisconnected",d.onMaxRetriesReached="onMaxRetriesReached",d.OnReconnecting="OnReconnecting",d.OnReconnected="OnReconnected",d.OnReconnectFailed="OnReconnectFailed",d.OnNetworkChange="OnNetworkChange",d.OnReceiveMessage="OnReceiveMessage",d.OnReceiveProtoMessage="OnReceiveProtoMessage",d.OnReceiveMessages="OnReceiveMessages",d.OnReceiveSystemMessage="OnReceiveSystemMessage",d.OnMessagesListLoaded="OnMessagesListLoaded",d.OnActiveConversationSync="OnActiveConversationSync",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 l,h,g,p,m,v,f=/*#__PURE__*/function(){function t(){var t;this.events=((t={})[e.CbEvents.OnReceiveMessage]=[],t[e.CbEvents.OnReceiveSystemMessage]=[],t[e.CbEvents.OnReceiveMessages]=[],t[e.CbEvents.OnConversationListUpdated]=[],t[e.CbEvents.OnMessagesListLoaded]=[],t[e.CbEvents.OnActiveConversationSync]=[],t[e.CbEvents.OnConnected]=[],t[e.CbEvents.OnDisconnected]=[],t[e.CbEvents.OnReconnected]=[],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.GroupType=void 0,(l=e.GroupType||(e.GroupType={}))[l.PrivateChat=0]="PrivateChat",l[l.PrivateGroup=1]="PrivateGroup",l[l.PublicGroup=2]="PublicGroup",l[l.CustomerService=3]="CustomerService",l[l.LiveGroup=4]="LiveGroup",e.MessageType=void 0,(h=e.MessageType||(e.MessageType={}))[h.TEXT=0]="TEXT",h[h.IMAGE=1]="IMAGE",h[h.FILE=2]="FILE",h[h.AUDIO=3]="AUDIO",h[h.VIDEO=4]="VIDEO",h[h.LINK=5]="LINK",h[h.GIF=6]="GIF",h[h.OPTION=7]="OPTION",h[h.EMOJI=8]="EMOJI",h[h.CUSTOM=100]="CUSTOM",e.SseEventType=void 0,(g=e.SseEventType||(e.SseEventType={}))[g.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",g[g.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",g[g.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",g[g.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",g[g.EVENT_SYSTEM_MESSAGE_PUSH=4]="EVENT_SYSTEM_MESSAGE_PUSH",g[g.EVENT_LIVE_SYSTEM_MESSAGE_PUSH=5]="EVENT_LIVE_SYSTEM_MESSAGE_PUSH",e.GroupMemberEventType=void 0,(p=e.GroupMemberEventType||(e.GroupMemberEventType={}))[p.JOIN=0]="JOIN",p[p.LEFT=1]="LEFT",p[p.LAST_READ_UPDATE=2]="LAST_READ_UPDATE",p[p.PERMISSION_UPDATE=3]="PERMISSION_UPDATE",p[p.IDENTITY_UPDATE=4]="IDENTITY_UPDATE",p[p.PING_UPDATE=5]="PING_UPDATE",e.SystemMessageType=void 0,(m=e.SystemMessageType||(e.SystemMessageType={}))[m.GroupMemberPermissionChange=3]="GroupMemberPermissionChange",m[m.GroupPermissionChange=4]="GroupPermissionChange",e.ConnectionProtocol=void 0,(v=e.ConnectionProtocol||(e.ConnectionProtocol={})).SSE="sse",v.WEBSOCKET="websocket";var C="undefined"!=typeof uni,M="undefined"!=typeof window,S="simsdk_",b={CONVERSATIONS:S+"conversations",GROUP_MESSAGES:S+"group_messages",USER_INFO:S+"user_info",META_INFO:S+"meta"},E={MAX_CONVERSATIONS:100,MAX_GROUP_MESSAGES:200,STORAGE_CHUNK_SIZE:512e3,CACHE_TTL:6048e5,EXPIRY_CHECK_INTERVAL:18e5},O=/*#__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({},E,c)}var t=e.prototype;return t.initialize=function(e){this.userInfo.username=e,this.persistEnabled&&this.loadFromStorage(),this.setupCleanupInterval(),this.debug&&(console.log("Cache initialized for user:",e),console.log("Loaded conversations:",this.conversationCache.length),console.log("Loaded group messages for groups:",Object.keys(this.groupMessageCache).length))},t.clear=function(){this.conversationCache=[],this.groupMessageCache={},this.accessTimeRecord={},this.persistEnabled&&this.clearStorage(),this.debug&&console.log("Cache cleared")},t.getConversations=function(){return[].concat(this.conversationCache)},t.clearConversationUnread=function(e){var t=this.conversationCache.find(function(t){return t.id===e});t&&(t.unreadCount=0,this.persistEnabled&&this.saveConversationsToStorage())},t.clearAllConversationUnread=function(){this.conversationCache.forEach(function(e){e.unreadCount>0&&(e.unreadCount=0)}),this.persistEnabled&&this.saveConversationsToStorage()},t.getActiveConversation=function(){return this.activeConversation},t.setConversations=function(e){this.conversationCache=e.length>this.config.MAX_CONVERSATIONS?e.slice(0,this.config.MAX_CONVERSATIONS):[].concat(e),this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage()},t.updateConversation=function(e){var t=this.conversationCache.findIndex(function(t){return t.id===e.id});t>=0?this.conversationCache[t]=r({},e):(this.conversationCache.push(r({},e)),this.conversationCache.length>this.config.MAX_CONVERSATIONS&&this.enforceConversationLimit()),this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage()},t.updateConversationWithMessage=function(e,t){var n,o=e.groupId;if(!o)return!1;var r=this.conversationCache.findIndex(function(e){return e.id===o});if(-1===r)return!1;var s=this.conversationCache[r],i=(null==(n=s.latest)?void 0:n.msgId)||0;return this.activeConversation&&this.activeConversation.id===o?s.unreadCount=0:t!==e.username&&(s.unreadCount+=e.msgId>i?e.msgId-i:1),s.latest=e,this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage(),!0},t.getGroupMessages=function(e){return this.recordAccess(e),!this.groupMessageCache[e]&&this.persistEnabled&&this.loadGroupMessagesFromStorage(e),this.groupMessageCache[e]||[]},t.addGroupMessage=function(e){if(e.groupId){this.recordAccess(e.groupId),this.groupMessageCache[e.groupId]||(this.groupMessageCache[e.groupId]=[]);var t=this.groupMessageCache[e.groupId].findIndex(function(t){return t.msgId===e.msgId});t>=0?this.groupMessageCache[e.groupId][t]=e:this.groupMessageCache[e.groupId].push(e),this.sortGroupMessages(e.groupId),this.limitGroupMessageCache(e.groupId),this.enforceMemoryLimits(),this.persistEnabled&&this.saveGroupMessagesToStorage(e.groupId)}},t.addGroupMessages=function(e){for(var t,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 h,g=function(){var e=h.value,t=n.groupMessageCache[d].findIndex(function(t){return t.msgId===e.msgId});t>=0?n.groupMessageCache[d][t]=e:n.groupMessageCache[d].push(e)},p=o(l);!(h=p()).done;)g();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(b.META_INFO);t&&(this.metaInfo=JSON.parse(t));var n=localStorage.getItem(b.CONVERSATIONS);n&&(this.conversationCache=JSON.parse(n)),Object.keys(localStorage).filter(function(e){return e.startsWith(b.GROUP_MESSAGES+".")}).forEach(function(t){var n=t.split(".")[1];n&&!isNaN(Number(n))&&(e.accessTimeRecord[n]=0)});var o=localStorage.getItem(b.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(b.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(b.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(b.GROUP_MESSAGES+"."+e+(a>0?"."+a:""),JSON.stringify(i))}}else localStorage.setItem(b.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(b.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=b.GROUP_MESSAGES+"."+e+(t>0?"."+t:"");null!==localStorage.getItem(o)?(localStorage.removeItem(o),t++):n=!1}},t.saveUserInfoToStorage=function(){try{localStorage.setItem(b.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(S)}));!(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}(),y=/*#__PURE__*/function(){function e(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=2e3*Math.random()+3e3,this.connectTimeout=1e4,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this.onMaxRetriesReachedCallback=void 0,this.onConnectionChangeCallback=void 0,this._openHandler=null,this._errorHandler=null,this._messageHandler=null,this._customHandlers=new Map,this.connectTimeoutRef=null,this.url=e.url,this.token=e.token,this.connectTimeout=e.connectTimeout||1e4,this.reconnectTimeout=e.retryInterval||2e3*Math.random()+3e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed,this.onMaxRetriesReachedCallback=e.onMaxRetriesReached,this.onConnectionChangeCallback=e.onConnectionChange}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.onConnectionChangeCallback&&e.onConnectionChangeCallback(!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,e.onConnectionChangeCallback&&e.onConnectionChangeCallback(!1),401===t.status||t.statusText&&t.statusText.includes("Unauthorized")?(e.cleanup(),e.connectTimeoutRef&&(clearTimeout(e.connectTimeoutRef),e.connectTimeoutRef=null),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)}),e.connectTimeoutRef=setTimeout(function(){e.connected||(o(new Error("Connection timeout")),e.handleReconnect())},e.connectTimeout);var r=e._openHandler;e._openHandler=function(t){clearTimeout(e.connectTimeoutRef),r(t)}}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),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"),this.destroySse(),void(this.onMaxRetriesReachedCallback&&this.onMaxRetriesReachedCallback());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,6e4),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}(),T=/*#__PURE__*/function(){function e(e){this.url=void 0,this.token=void 0,this.websocket=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=2e3*Math.random()+3e3,this.connectTimeout=1e4,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this.onMaxRetriesReachedCallback=void 0,this.onConnectionChangeCallback=void 0,this.connectTimeoutRef=null,this.url=e.url,this.token=e.token,this.connectTimeout=e.connectTimeout||1e4,this.reconnectTimeout=e.retryInterval||2e3*Math.random()+3e3,this.maxReconnectAttempts=e.maxRetries||5,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed,this.onMaxRetriesReachedCallback=e.onMaxRetriesReached,this.onConnectionChangeCallback=e.onConnectionChange}var t=e.prototype;return t.subscribe=function(e,t){this.handlers.set(e,t),this.websocket?this.addMessageHandler(e,t):this.connect()},t.addMessageHandler=function(e,t){this.websocket&&this.websocket.addEventListener("message",function(n){try{var o=JSON.parse(n.data);o.type===e&&t(o)}catch(e){console.error("Error parsing WebSocket message data:",e)}})},t.connect=function(){var e=this;return this.connected&&this.websocket?Promise.reject(new Error("WebSocket is already connected!")):new Promise(function(t,n){try{var o=new URL(e.url);o.searchParams.set("token",e.token),e.websocket=new WebSocket(o.toString()),e.connectTimeoutRef=setTimeout(function(){e.connected||(n(new Error("WebSocket connection timeout")),e.handleReconnect())},e.connectTimeout),e.websocket.onopen=function(n){console.log("WebSocket connection established"),e.connected=!0,clearTimeout(e.connectTimeoutRef),e.onConnectionChangeCallback&&e.onConnectionChangeCallback(!0),e.reconnectAttempts>0&&e.onReconnectSuccessCallback&&e.onReconnectSuccessCallback(),e.reconnectAttempts=0,e.reconnectTimeout=5e3,t("WebSocket connect successful!")},e.websocket.onerror=function(t){console.error("WebSocket connection error:",t),e.connected=!1,clearTimeout(e.connectTimeoutRef),e.onConnectionChangeCallback&&e.onConnectionChangeCallback(!1),e.handleReconnect(),e.connected||n(new Error("WebSocket connect error"))},e.websocket.onclose=function(t){console.log("WebSocket connection closed:",t.code,t.reason),e.connected=!1,e.onConnectionChangeCallback&&e.onConnectionChangeCallback(!1),1002===t.code||1003===t.code||t.reason&&t.reason.includes("Unauthorized")?(e.cleanup(),e.notifyConnectionClosed(!0)):e.handleReconnect()},e.websocket.onmessage=function(t){try{console.log("WebSocket received message:",t.data);var n=JSON.parse(t.data);if("pong"===n.type||2===n.ev)return void(e.connected=!0);e.onMessageCallback&&e.onMessageCallback(n)}catch(e){console.error("Error parsing WebSocket message:",e)}},e.handlers.forEach(function(t,n){e.addMessageHandler(n,t)})}catch(t){console.error("Failed to create WebSocket:",t),e.handleReconnect(),n(t)}})},t.notifyConnectionClosed=function(e){void 0===e&&(e=!1),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(e),e?console.warn("WebSocket connection closed due to authentication error"):console.log("WebSocket connection closed")},t.handleReconnect=function(){var e=this;if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return console.error("Max reconnection attempts reached"),this.destroyWebSocket(),void(this.onMaxRetriesReachedCallback&&this.onMaxRetriesReachedCallback());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,6e4),e.reconnectTimer=null,e.connect().catch(function(){})},this.reconnectTimeout)}},t.cleanup=function(){this.websocket&&(this.websocket.close(),this.websocket=null),this.connected=!1},t.unsubscribe=function(){this.cleanup(),this.handlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},t.destroyWebSocket=function(){this.unsubscribe(),this.reconnectAttempts=this.maxReconnectAttempts,this.notifyConnectionClosed()},t.close=function(){this.destroyWebSocket(),console.log("WebSocket 连接已关闭")},t.isConnected=function(){var e;return this.connected&&(null==(e=this.websocket)?void 0:e.readyState)===WebSocket.OPEN},e}(),P=["protocol"],G=/*#__PURE__*/function(){function t(){}return t.createClient=function(t){var n=t.protocol,o=function(e,t){if(null==e)return{};var n={};for(var o in e)if({}.hasOwnProperty.call(e,o)){if(t.includes(o))continue;n[o]=e[o]}return n}(t,P);switch(n){case e.ConnectionProtocol.SSE:return new y(o);case e.ConnectionProtocol.WEBSOCKET:return new T(o);default:throw new Error("Unsupported connection protocol: "+n)}},t}(),R=/*#__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}(),k=/*#__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.getMessageApi=function(t,n){return n===e.GroupType.PrivateChat?e.RequestApi.PushPrivateMessage:n===e.GroupType.LiveGroup?e.RequestApi.PushLiveMessage:null!=t&&t.receiverName?e.RequestApi.PushMessageToMember:e.RequestApi.CreateTextMessage},n.createMessage=function(t,n,o,s,i){void 0===s&&(s={});var a={groupType:o};o===e.GroupType.PublicGroup||o===e.GroupType.LiveGroup?a.groupId=n:a.receiverName=n;var c=r({},a,s,{msgType:t},i);return this.sendMessage(c,this.getMessageApi(a,o))},n.createTextMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.TEXT,n,o,r,{text:t}))}catch(e){return Promise.reject(e)}},n.createImageMessage=function(t,n,o,r,s){void 0===s&&(s={});try{return Promise.resolve(this.createMessage(e.MessageType.IMAGE,o,r,s,{link:t,snapshot:n}))}catch(e){return Promise.reject(e)}},n.createFileMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.FILE,n,o,r,{link:t}))}catch(e){return Promise.reject(e)}},n.createAudioMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.AUDIO,n,o,r,{link:t}))}catch(e){return Promise.reject(e)}},n.createVideoMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.VIDEO,n,o,r,{link:t}))}catch(e){return Promise.reject(e)}},n.createLinkMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.LINK,n,o,r,{text:t}))}catch(e){return Promise.reject(e)}},n.createGifMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.GIF,n,o,r,{link:t}))}catch(e){return Promise.reject(e)}},n.createOptionMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.OPTION,n,o,r,{text:t}))}catch(e){return Promise.reject(e)}},n.createEmojiMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.EMOJI,n,o,r,{text:t}))}catch(e){return Promise.reject(e)}},n.createCustomMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.CUSTOM,n,o,r,{text:t}))}catch(e){return Promise.reject(e)}},n.getHistoryMessageList=function(t){var n=t.groupId,o=t.lastId,r=t.type,s=t.size,i=void 0===s?100:s;try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.GetHistoryMessageList,method:"POST",data:{groupId:n,lastId:o,type:r,size:i}}))}catch(e){return Promise.reject(e)}},n.getLiveMessageList=function(t){var n=t.groupId;try{var o;return Promise.resolve(this.sdk.sendRequest({data:{groupId:n},url:null!=(o=this.sdk.getConfig)&&o.anonLogin?e.RequestApi.GetAnonymousLiveMessageList:e.RequestApi.GetLiveMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},t}(),A=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return n.getConversations=function(t){try{var n=this;return Promise.resolve(n.sdk.sendRequest({data:t,url:e.RequestApi.GetAllConversationList,method:"GET"})).then(function(e){return e.data.records=e.data.records.map(n.normalizeConversation),e})}catch(e){return Promise.reject(e)}},n.markConversationRead=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.MarkConversationMessageAsRead,method:"GET"}))}catch(e){return Promise.reject(e)}},n.normalizeConversation=function(e){var t,n,o,s,i,a;return r({},e,{id:e.id,name:e.name||"",groupType:e.groupType||0,avatar:e.avatar||"",status:null!=(t=e.status)?t:1,latest:null!=(n=e.latest)?n:{},unreadCount:null!=(o=e.unreadCount)?o:0,draftText:null!=(s=e.draftText)?s:"",custom:null!=(i=e.custom)?i:"",groupMemberId:null!=(a=e.groupMemberId)?a:""})},t}(),I=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return 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.getGroupMember=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:e.RequestApi.GetGroupMember,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{var n;return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:null!=(n=this.sdk.getConfig)&&n.anonLogin?e.RequestApi.AnonymousJoinGroup:e.RequestApi.JoinGroup,method:"GET"}))}catch(e){return Promise.reject(e)}},n.leftGroup=function(t){try{var n;return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:null!=(n=this.sdk.getConfig)&&n.anonLogin?e.RequestApi.AnonymousLeftGroup:e.RequestApi.LeftGroup,method:"GET"}))}catch(e){return Promise.reject(e)}},n.checkGroupBlock=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:e.RequestApi.CheckGroupBlock,method:"GET"}))}catch(e){return Promise.reject(e)}},n.updateLatestMessage=function(t){try{var n=Object.fromEntries(t.entries());return Promise.resolve(this.sdk.sendRequest({data:{latestMessage:n},url:e.RequestApi.UpdateLatestMessage,method:"POST"}))}catch(e){return Promise.reject(e)}},n.getGroupLatestMessage=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groups:t},url:e.RequestApi.GetLatestGroupChats,method:"POST"}))}catch(e){return Promise.reject(e)}},n.checkGroupLatestMessage=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{ttl:t},url:e.RequestApi.CheckLatestMessages,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getMyGroupPermission=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:e.RequestApi.GetMyGroupPermission,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getGroupPermission=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:e.RequestApi.GetGroupPermission,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getGroupMemberPermission=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,targetusername:n},url:e.RequestApi.GetGroupMemberPermission,method:"GET"}))}catch(e){return Promise.reject(e)}},n.updateGroupPermission=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.UpdateGroupPermission,method:"POST"}))}catch(e){return Promise.reject(e)}},n.updateGroupMemberPermission=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.UpdateGroupMemberPermission,method:"POST"}))}catch(e){return Promise.reject(e)}},n.kickGroupMember=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.kickGroupMember,method:"POST"}))}catch(e){return Promise.reject(e)}},n.muteMembers=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.muteMembers,method:"POST"}))}catch(e){return Promise.reject(e)}},n.editGroupName=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.editeGroupName,method:"GET",data:{groupId:t,name:n}}))}catch(e){return Promise.reject(e)}},n.editNotification=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.editeNotification,method:"GET",data:{groupId:t,notification:n}}))}catch(e){return Promise.reject(e)}},n.editGroupCustomer=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.editeGroupCustomer,method:"GET",data:{groupId:t,customer:n}}))}catch(e){return Promise.reject(e)}},n.addAdmin=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.addAdmin,method:"GET",data:{groupId:t,username:n}}))}catch(e){return Promise.reject(e)}},n.deleteAdmin=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.deleteAdmin,method:"GET",data:{groupId:t,username:n}}))}catch(e){return Promise.reject(e)}},n.pin=function(t,n,o){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.pin,method:"GET",data:{groupId:t,messageId:n,type:o}}))}catch(e){return Promise.reject(e)}},n.muteGroup=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.muteGroup,method:"GET",data:{groupId:t,type:n}}))}catch(e){return Promise.reject(e)}},n.muteMember=function(t,n,o){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.muteMember,method:"GET",data:{groupId:t,username:n,type:o}}))}catch(e){return Promise.reject(e)}},t}(),L=/*#__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 R(this.sdk);case e.ServiceName.MESSAGE:return new k(this.sdk);case e.ServiceName.CONVERSATION:return new A(this.sdk);case e.ServiceName.GROUP:return new I(this.sdk);default:throw new Error("Unknown service: "+t)}},n.reset=function(){this.services={}},t}();function N(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var U=[e.RequestApi.Logout,e.CbEvents.OnKickedOffline,e.CbEvents.OnUserTokenInvalid,e.CbEvents.OnUserTokenExpired];e.SIMSDK=/*#__PURE__*/function(t){function n(n){var o;return void 0===n&&(n=!1),(o=t.call(this)||this).config={debug:!1,isLive:!1,useProtobuf:!1,protocol:e.ConnectionProtocol.SSE},o.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},o.cacheManager=void 0,o.connectionClient=void 0,o.serviceManager=void 0,o.conversationSyncTimer=void 0,o.syncInterval=2e4,o.isSyncing=!1,o.lastFetchTtl=0,o.lastUnauthorizedTime=0,o.UNAUTHORIZED_THROTTLE_MS=3e3,o.syncConversationsWithServer=function(){try{if(o.isSyncing)return o.config.debug&&console.log("[SDK] Sync already in progress, skipping"),Promise.resolve();var t=o.isLoggedIn(),n=o.isConnected();if(!t||!n)return console.warn("[SDK] Not syncing. Login status: "+t+", Connection status: "+n),Promise.resolve();var r=function(t,n){try{var r=N(function(){return o.isSyncing=!0,Promise.resolve(o.group.checkGroupLatestMessage(o.lastFetchTtl)).then(function(t){console.log("res ",t);var n=function(){if(0==t.code){var n=t.data,r=n.groupChatIds;o.lastFetchTtl=n.ttl;var s=function(){if(r&&Object.keys(r).length>0)return Object.entries(r).forEach(function(e){var t=e[1],n=Number(e[0]);console.log("groupId: "+n+", messageId: "+t)}),Promise.resolve(o.conversation.getConversations({pageNo:1,pageSize:20})).then(function(t){if(0===t.code){var n=t.data.records,r=o.cacheManager.getConversations(),s=new Set(r.map(function(e){return e.id})),i=n.filter(function(e){return!s.has(e.id)});i.length>0&&(o.cacheManager.setConversations([].concat(r,i)),o.emit(e.CbEvents.OnConversationCreated,i),o.config.debug&&console.log("[SDK] Found "+i.length+" new conversations")),o.emit(e.CbEvents.OnConversationListUpdated,o.cacheManager.getConversations())}})}();if(s&&s.then)return s.then(function(){})}}();if(n&&n.then)return n.then(function(){})})},function(e){console.error("[SDK] Error during conversation sync:",e)})}catch(e){return n(!0,e)}return r&&r.then?r.then(n.bind(null,!1),n.bind(null,!0)):n(!1,r)}(0,function(e,t){if(o.isSyncing=!1,e)throw t;return t});return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},o.configure=function(e){void 0!==e.debug&&(o.config.debug=e.debug),e.isLive&&(o.config.isLive=e.isLive),e.apiAddr&&(o.config.apiAddr=e.apiAddr),e.wsAddr&&(o.config.wsAddr=e.wsAddr),e.ossApiAddr&&(o.config.ossApiAddr=e.ossApiAddr),e.appKey&&(o.config.appKey=e.appKey),e.token&&(o.config.token=e.token),e.connectTimeout&&(o.config.connectTimeout=e.connectTimeout),e.maxRetries&&(o.config.maxRetries=e.maxRetries),e.useProtobuf&&(o.config.useProtobuf=e.useProtobuf),e.protocol&&(o.config.protocol=e.protocol)},o.sendRequest=function(e){try{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 Promise.resolve(N(function(){return Promise.resolve(function(e){try{var t,n=function(e){if(t)return e;throw new Error("Unsupported platform")},o=function(){if(C){var n=new Promise(function(t,n){uni.request({url:e.url,method:e.method||"GET",header:e.headers,data:e.data,success:function(e){401!==e.statusCode?t(e.data):n({status:401,message:"Unauthorized"})},fail:function(e){return n(e)}})});return t=1,n}return function(){if(M)return Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){if(401===e.status)throw{status:401,message:"Unauthorized"};return Promise.resolve(e.json()).then(function(e){return t=1,e})})}()}();return Promise.resolve(o&&o.then?o.then(n):n(o))}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}))},function(e){throw 401!==(null==e?void 0:e.status)&&401!==(null==e?void 0:e.statusCode)||o.handleUnauthorizedWithThrottle(t),e}))}catch(e){return Promise.reject(e)}},o.handleUnauthorizedWithThrottle=function(e){var t=Date.now();t-o.lastUnauthorizedTime<o.UNAUTHORIZED_THROTTLE_MS?console.warn("401错误被节流限制,跳过处理:"+e):(o.lastUnauthorizedTime=t,o.handleUnauthorized(e))},o.handleUnauthorized=function(e){console.warn("未授权请求(401):",e),o.handleConnectionClosed(!0)},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(e){o.config.debug&&console.log("[SDK] handleMessage response",e),o.isProtobufFormat(e)?o.handleProtobufMessage(e):o.handleJsonMessage(e)},o.handleJsonMessage=function(t){switch(o.config.debug&&console.log("handleMessage response",t),t.ev){case e.SseEventType.EVENT_MESSAGE_PUSH:var n=t.dt;if(Array.isArray(n))if(1===n.length){var r=n[0];o.updateMessageCache(r),o.emit(e.CbEvents.OnReceiveMessage,r)}else n.length>1&&(n.forEach(function(e){o.updateMessageCache(e)}),o.emit(e.CbEvents.OnReceiveMessages,n));else console.warn("[SDK] Expected response.dt to be an array, but got:",n);break;case e.SseEventType.EVENT_PONG_IDLE:o.internalState.isConnected=!0;break;case e.SseEventType.EVENT_SYSTEM_MESSAGE_PUSH:o.emit(e.CbEvents.OnReceiveSystemMessage,t.dt);break;default:s=t.ev,Object.values(e.CbEvents).includes(s)?(o.emit(t.ev,t.dt),U.includes(t.ev)&&(o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1,o.connectionClient&&(o.connectionClient.close(),o.connectionClient=void 0))):o.config.debug&&console.warn("[SDK] 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(t){o.internalState.isConnected=!1,o.config.debug&&console.log("SSE connection closed"),o.emit(e.CbEvents.OnDisconnected,t)},o.handleMaxRetriesReached=function(){o.config.debug&&console.log("SSE connection max reconnection attempts reached"),o.emit(e.CbEvents.onMaxRetriesReached)},o.handleConnectionChange=function(t){o.config.debug&&console.log("Connection status changed:",t),o.emit(t?e.CbEvents.OnConnected:e.CbEvents.OnDisconnected)},o.login=function(t){try{var n,s,i=function(r){return n?r:(o.connectionClient=G.createClient({url:o.config.protocol===e.ConnectionProtocol.WEBSOCKET?o.config.wsAddr+"/conn?username="+t.username+"&token="+t.token+"&appKey="+o.config.appKey+"&random="+s:o.config.apiAddr+"/chat/sse/"+(t.anonLogin?"anonymousConn":"conn")+"?username="+t.username+"&token="+t.token+"&appKey="+o.config.appKey+"&random="+s,protocol:o.config.protocol||e.ConnectionProtocol.SSE,onMessage:o.handleMessage,onReconnectSuccess:o.handleReconnectSuccess,onConnectionClosed:o.handleConnectionClosed,onMaxRetriesReached:o.handleMaxRetriesReached,onConnectionChange:o.handleConnectionChange,token:t.token,connectTimeout:o.config.connectTimeout,maxRetries:o.config.maxRetries}),N(function(){return Promise.resolve(o.connectionClient.connect()).then(function(e){return o.internalState.isLoggedIn=!0,o.internalState.isConnected=!0,o.config.isLive||o.startConversationSync(),e})},function(e){return o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1,Promise.reject(e.message)}))};if(o.connectionClient&&(null==o.connectionClient.close||o.connectionClient.close(),o.connectionClient=void 0,o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1),!o.config.apiAddr)return Promise.reject("No apiAddr configured. Please call configure() before login().");if(!o.config.ossApiAddr)return Promise.reject("No ossApiAddr configured. Please call configure() before login().");if(!o.config.appKey)return Promise.reject("No appKey configured. Please call configure() before login().");if(!o.config.token)return Promise.reject("No token configured. Please call configure() before login().");if(o.config.username=t.username,o.config.anonLogin=t.anonLogin||!1,t.protocol&&(o.config.protocol=t.protocol),t.protocol==e.ConnectionProtocol.WEBSOCKET&&!o.config.wsAddr)return Promise.reject("WebSocket address (wsAddr) is not configured. Please call configure() before login().");if(o.config.debug&&(console.log("login params",t),console.log("apiAddr",o.config.apiAddr)),!o.config.isLive||!t.anonLogin){o.cacheManager.initialize(t.username),o.cacheManager.resetActiveConversation();var a=o.cacheManager.getConversations();a.length>0&&o.emit(e.CbEvents.OnConversationListUpdated,a),o.initializeConversationCache()}var c=function(){if(!t.anonLogin)return Promise.resolve(o.user.login(r({},t,{appKey:o.config.appKey}))).then(function(e){var t=e.code,o=e.data;if(0!=t){var r=Promise.resolve("Login failed, Server error, error code is "+t);return n=1,r}s=o})}();return Promise.resolve(c&&c.then?c.then(i):i(c))}catch(e){return Promise.reject(e)}},o.logout=function(){try{return o.connectionClient&&(o.connectionClient.close(),o.connectionClient=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{return Promise.resolve(N(function(){return Promise.resolve(o.conversation.getConversations(t)).then(function(n){var r=n.data;if(0===n.code&&r){var s=o.cacheManager.getConversations();if(1===t.pageNo)o.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);o.cacheManager.setConversations(u)}o.emit(e.CbEvents.OnConversationListUpdated,o.cacheManager.getConversations())}else{var d=o.cacheManager.getConversations();d.length>0&&o.emit(e.CbEvents.OnConversationListUpdated,d)}return!0})},function(t){console.error("Failed to get conversations:",t);var n=o.cacheManager.getConversations();return n.length>0&&o.emit(e.CbEvents.OnConversationListUpdated,n),!1}))}catch(e){return Promise.reject(e)}},o.internalUploadFile=function(t,n){try{return Promise.resolve(N(function(){var r=new FormData;return r.append("file",t),r.append("filename",t.name),r.append("groupId",n.toString()),Promise.resolve(fetch(""+o.config.ossApiAddr+e.RequestApi.UploadFile,{method:"POST",headers:{Authorization:o.config.token?"Bearer "+o.config.token:""},body:r})).then(function(e){if(!e.ok)throw new Error("Upload failed with status: "+e.status);return Promise.resolve(e.json()).then(function(e){var t=(null==e?void 0:e.data)||{};return{originalUrl:t.originalUrl||"",thumbnailUrl:t.thumbnailUrl||""}})})},function(e){return console.error("[Upload Error]",e),{error:e instanceof Error?e:new Error("Unknown upload error")}}))}catch(e){return Promise.reject(e)}},o.uploadFile=function(t,n){var r=t.file;try{return Promise.resolve(o.internalUploadFile(r,n)).then(function(t){var n,o=t.originalUrl,r=t.thumbnailUrl,s=t.error;return{data:{originalUrl:void 0===o?"":o,thumbnailUrl:void 0===r?"":r},msg:null!=(n=null==s?void 0:s.message)?n:"",code:s?e.ErrorCode.UnknownError:0}})}catch(e){return Promise.reject(e)}},o.sendTextMessage=function(e,t,n,r){return o.message.createTextMessage(e,t,n,r)},o.sendImageMessage=function(e,t,n,r,s){return o.message.createImageMessage(e,t,n,r,s)},o.sendFileMessage=function(e,t,n,r){return o.message.createFileMessage(e,t,n,r)},o.sendAudioMessage=function(e,t,n,r){return o.message.createAudioMessage(e,t,n,r)},o.sendVideoMessage=function(e,t,n,r){return o.message.createVideoMessage(e,t,n,r)},o.sendLinkMessage=function(e,t,n,r){return o.message.createLinkMessage(e,t,n,r)},o.sendGifMessage=function(e,t,n,r){return o.message.createGifMessage(e,t,n,r)},o.sendOptionMessage=function(e,t,n,r){return o.message.createOptionMessage(e,t,n,r)},o.sendEmojiMessage=function(e,t,n,r){return o.message.createEmojiMessage(e,t,n,r)},o.sendCustomMessage=function(e,t,n,r){return o.message.createCustomMessage(e,t,n,r)},o.getHistoryMessageList=function(e){return e.groupId&&o.cacheManager.markConversationAsActive(e.groupId),o.message.getHistoryMessageList(e)},o.getLiveMessageList=function(e){return o.message.getLiveMessageList(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.leftGroup=function(e){return o.group.leftGroup(e)},o.checkGroupBlock=function(e){return o.group.checkGroupBlock(e)},o.getMyGroupPermission=function(e){return o.group.getMyGroupPermission(e)},o.getGroupPermission=function(e){return o.group.getGroupPermission(e)},o.getGroupMember=function(e){return o.group.getGroupMember(e)},o.getGroupMemberPermission=function(e,t){return o.group.getGroupMemberPermission(e,t)},o.updateGroupPermission=function(e){return o.group.updateGroupPermission(e)},o.kickGroupMember=function(e){return o.group.kickGroupMember(e)},o.muteMembers=function(e){return o.group.muteMembers(e)},o.updateGroupMemberPermission=function(e){return o.group.updateGroupMemberPermission(e)},o.editGroupName=function(e,t){return o.group.editGroupName(e,t)},o.editNotification=function(e,t){return o.group.editNotification(e,t)},o.editGroupCustomer=function(e,t){return o.group.editGroupCustomer(e,t)},o.addAdmin=function(e,t){return o.group.addAdmin(e,t)},o.deleteAdmin=function(e,t){return o.group.deleteAdmin(e,t)},o.pin=function(e,t,n){return o.group.pin(e,t,n)},o.muteGroup=function(e,t){return o.group.muteGroup(e,t)},o.muteMember=function(e,t,n){return o.group.muteMember(e,t,n)},o.markConversationRead=function(e){return o.conversation.markConversationRead(e)},o.clearConversationUnread=function(t){o.cacheManager.clearConversationUnread(t);var n=o.cacheManager.getConversations();o.emit(e.CbEvents.OnConversationListUpdated,n)},o.clearAllConversationUnread=function(){o.cacheManager.clearAllConversationUnread();var t=o.cacheManager.getConversations();o.emit(e.CbEvents.OnConversationListUpdated,t)},o.config.debug=n,n&&(console.log("🚀 SIM SDK Web v1.1.0 (本地开发版本)"),console.log("📦 支持协议: SSE, WebSocket")),o.cacheManager=new O({persistEnabled:!0,debug:n}),o.serviceManager=new L(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.startConversationSync=function(e){this.stopConversationSync(),e&&e>0&&(this.syncInterval=e),this.conversationSyncTimer=window.setInterval(this.syncConversationsWithServer,this.syncInterval),this.config.debug&&console.log("[SDK] Started conversation sync timer with interval: "+this.syncInterval+"ms")},d.stopConversationSync=function(){this.conversationSyncTimer&&(clearInterval(this.conversationSyncTimer),this.conversationSyncTimer=void 0,this.config.debug&&console.log("[SDK] Stopped conversation sync timer"))},d.syncConversationsNow=function(){return this.syncConversationsWithServer()},d.destroy=function(){this.stopConversationSync(),this.connectionClient&&(this.connectionClient.close(),this.connectionClient=void 0),this.cacheManager.destroy(),this.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},this.config.debug&&console.log("[SDK] Resources destroyed")},d.getService=function(e){return this.serviceManager.get(e)},d.isConnected=function(){return this.config.debug&&console.log("[SDK] Connection status: "+(this.internalState.isConnected?"connected":"disconnected")),this.internalState.isConnected},d.isLoggedIn=function(){return this.config.debug&&console.log("[SDK] Login status: "+(this.internalState.isLoggedIn?"logged in":"not logged in")),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.log("%c─── 📦 Request Payload ───────────────────────────────","color: #999; font-style: italic;"),console.log("%c%s","color: #333; background: #f8f8f8; padding: 8px; border-radius: 4px; border-left: 4px solid #7CAEFF; font-family: monospace; line-height: 1.5;",JSON.stringify(e.data,null,2)),console.log("%c─────────────────────────────────────────────────────","color: #999;"))},d.handlePongMessage=function(e){e&&e.timestamp&&(this.config.debug&&console.log("[SDK] Received pong message with timestamp:",e.timestamp),this.internalState.isConnected=!0,this.internalState.lastActivity=Date.now())},d.isProtobufFormat=function(e){return this.config.useProtobuf||"string"==typeof e&&this.isBase64String(e)||e instanceof Uint8Array},d.isBase64String=function(e){try{return btoa(atob(e))===e}catch(e){return!1}},d.handleProtobufMessage=function(t){this.emit(e.CbEvents.OnReceiveProtoMessage,t)},d.initializeConversationCache=function(){try{var t=this,n=N(function(){return Promise.resolve(t.conversation.getConversations({pageNo:1,pageSize:20})).then(function(n){var o=n.code,r=n.data;if(t.config.debug&&console.log("initializeConversationCache Conversation 获取第一页会话数据",o,r),0===o&&r&&r.records){t.cacheManager.setConversations(r.records),console.log("initializeConversationCache Conversation 获取第一页会话数据 this.cacheManager.getConversations()",t.cacheManager.getConversations());var s=t.cacheManager.getConversations();t.emit(e.CbEvents.OnConversationListUpdated,s),t.config.debug&&console.log("Conversation cache initialized with",r.records.length,"conversations")}})},function(e){console.error("Failed to initialize conversation cache:",e)});return Promise.resolve(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,this.config.username)){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:"getConfig",get:function(){return this.config}},{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}(f)});
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,c,u,d,l;e.ServiceName=void 0,(a=e.ServiceName||(e.ServiceName={})).MESSAGE="message",a.CONVERSATION="conversation",a.GROUP="group",a.USER="user",a.CONTACT="contact",e.ContactType=void 0,(c=e.ContactType||(e.ContactType={}))[c.MEMBER=0]="MEMBER",c[c.COLLEAGUE=1]="COLLEAGUE",c[c.GROUP=2]="GROUP",e.ErrorCode=void 0,(u=e.ErrorCode||(e.ErrorCode={}))[u.UnknownError=10005]="UnknownError",e.RequestApi=void 0,(d=e.RequestApi||(e.RequestApi={})).Login="/chat/member/login",d.Logout="/chat/member/logout",d.GetGroupInfo="/chat/group/groupInfo",d.GetGroupMembers="/chat/group/groupMembers",d.JoinGroup="/chat/group/joinGroup",d.LeftGroup="/chat/group/leftGroup",d.AnonymousJoinGroup="/chat/group/anonymousJoinGroup",d.AnonymousLeftGroup="/chat/group/anonymousLeftGroup",d.CheckGroupBlock="/chat/group/checkBlock",d.GetMyGroupPermission="/chat/group/permission/getPermission",d.GetGroupPermission="/chat/group/permission/groupPermission",d.GetGroupMember="/chat/group/groupMember",d.GetGroupMemberPermission="/chat/group/permission/groupMemberPermission",d.UpdateGroupPermission="/chat/group/permission/updateGroupPermission",d.UpdateGroupMemberPermission="/chat/group/permission/updateGroupMemberPermission",d.editeGroupName="/chat/group/operation/editeGroupName",d.editeNotification="/chat/group/operation/editeNotification",d.editeGroupCustomer="/chat/group/operation/editeGroupCustomer",d.addAdmin="/chat/group/operation/addAdmin",d.deleteAdmin="/chat/group/operation/deleteAdmin",d.pin="/chat/group/operation/pin",d.muteGroup="/chat/group/operation/muteGroup",d.muteMember="/chat/group/operation/muteMember",d.kickGroupMember="/chat/group/operation/kickGroupMember",d.muteMembers="/chat/group/operation/muteMembers",d.GetAllConversationList="/chat/group/list",d.MarkConversationMessageAsRead="/chat/group/lastRead",d.UpdateLatestMessage="/chat/group/updateLatestMessage",d.GetLatestGroupChats="/chat/group/latestGroupChats",d.CheckLatestMessages="/chat/group/checkLatestMessages",d.CreateTextMessage="/chat/message/push",d.PushMessageToMember="/chat/message/push2Member",d.PushPrivateMessage="/chat/message/pushPrivateMessage",d.PushLiveMessage="/chat/message/liveGroupPush",d.GetHistoryMessageList="/chat/message/pull",d.GetLiveMessageList="/chat/message/liveGroupPull",d.GetAnonymousLiveMessageList="/chat/message/anonymousLiveGroupPull",d.UploadFile="/chat/img/upload",d.GetContactByType="/chat/contact/contactByType",d.EditContactTag="/chat/contact/editeContactTag",d.GetContactTag="/chat/contact/getContactTag",d.AllocationContactTag="/chat/contact/allocationContactTag",e.CbEvents=void 0,(l=e.CbEvents||(e.CbEvents={})).OnConnected="OnConnected",l.OnDisconnected="OnDisconnected",l.onMaxRetriesReached="onMaxRetriesReached",l.OnReconnecting="OnReconnecting",l.OnReconnected="OnReconnected",l.OnReconnectFailed="OnReconnectFailed",l.OnNetworkChange="OnNetworkChange",l.OnReceiveMessage="OnReceiveMessage",l.OnReceiveProtoMessage="OnReceiveProtoMessage",l.OnReceiveMessages="OnReceiveMessages",l.OnReceiveSystemMessage="OnReceiveSystemMessage",l.OnMessagesListLoaded="OnMessagesListLoaded",l.OnActiveConversationSync="OnActiveConversationSync",l.OnMessageSent="OnMessageSent",l.OnMessageFailed="OnMessageFailed",l.OnMessageRevoked="OnMessageRevoked",l.OnMessageDeleted="OnMessageDeleted",l.OnMessageRead="OnMessageRead",l.OnTypingStatusUpdate="OnTypingStatusUpdate",l.OnUserStatusChange="OnUserStatusChange",l.OnKickedOffline="OnKickedOffline",l.OnUserTokenInvalid="OnUserTokenInvalid",l.OnUserTokenExpired="OnUserTokenExpired",l.OnForceOffline="OnForceOffline",l.OnUserInfoUpdated="OnUserInfoUpdated",l.OnGroupCreated="OnGroupCreated",l.OnGroupInfoUpdated="OnGroupInfoUpdated",l.OnGroupDissolved="OnGroupDissolved",l.OnJoinGroup="OnJoinGroup",l.OnLeaveGroup="OnLeaveGroup",l.OnGroupMemberJoined="OnGroupMemberJoined",l.OnGroupMemberLeft="OnGroupMemberLeft",l.OnGroupMemberKicked="OnGroupMemberKicked",l.OnGroupOwnerChanged="OnGroupOwnerChanged",l.OnGroupAdminAdded="OnGroupAdminAdded",l.OnGroupAdminRemoved="OnGroupAdminRemoved",l.OnGroupMemberMuted="OnGroupMemberMuted",l.OnGroupMemberUnmuted="OnGroupMemberUnmuted",l.OnGroupAllMemberMuted="OnGroupAllMemberMuted",l.OnGroupAllMemberUnmuted="OnGroupAllMemberUnmuted",l.OnConversationCreated="OnConversationCreated",l.OnConversationDeleted="OnConversationDeleted",l.OnConversationListUpdated="OnConversationListUpdated",l.OnConversationUpdated="OnConversationUpdated",l.OnUnreadCountChanged="OnUnreadCountChanged",l.OnConversationPinned="OnConversationPinned",l.OnConversationUnpinned="OnConversationUnpinned",l.OnConversationMuted="OnConversationMuted",l.OnConversationUnmuted="OnConversationUnmuted",l.OnPongConn="OnPongConn",l.OnPongReConn="OnPongReConn",l.OnPongIdle="OnPongIdle",l.OnError="OnError",l.OnWarning="OnWarning",l.OnLog="OnLog";var g,h,p,m,v,f,C=/*#__PURE__*/function(){function t(){var t;this.events=((t={})[e.CbEvents.OnReceiveMessage]=[],t[e.CbEvents.OnReceiveSystemMessage]=[],t[e.CbEvents.OnReceiveMessages]=[],t[e.CbEvents.OnConversationListUpdated]=[],t[e.CbEvents.OnMessagesListLoaded]=[],t[e.CbEvents.OnActiveConversationSync]=[],t[e.CbEvents.OnConnected]=[],t[e.CbEvents.OnDisconnected]=[],t[e.CbEvents.OnReconnected]=[],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.GroupType=void 0,(g=e.GroupType||(e.GroupType={}))[g.PrivateChat=0]="PrivateChat",g[g.PrivateGroup=1]="PrivateGroup",g[g.PublicGroup=2]="PublicGroup",g[g.CustomerService=3]="CustomerService",g[g.LiveGroup=4]="LiveGroup",e.MessageType=void 0,(h=e.MessageType||(e.MessageType={}))[h.TEXT=0]="TEXT",h[h.IMAGE=1]="IMAGE",h[h.FILE=2]="FILE",h[h.AUDIO=3]="AUDIO",h[h.VIDEO=4]="VIDEO",h[h.LINK=5]="LINK",h[h.GIF=6]="GIF",h[h.OPTION=7]="OPTION",h[h.EMOJI=8]="EMOJI",h[h.CUSTOM=100]="CUSTOM",e.SseEventType=void 0,(p=e.SseEventType||(e.SseEventType={}))[p.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",p[p.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",p[p.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",p[p.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",p[p.EVENT_SYSTEM_MESSAGE_PUSH=4]="EVENT_SYSTEM_MESSAGE_PUSH",p[p.EVENT_LIVE_SYSTEM_MESSAGE_PUSH=5]="EVENT_LIVE_SYSTEM_MESSAGE_PUSH",e.GroupMemberEventType=void 0,(m=e.GroupMemberEventType||(e.GroupMemberEventType={}))[m.JOIN=0]="JOIN",m[m.LEFT=1]="LEFT",m[m.LAST_READ_UPDATE=2]="LAST_READ_UPDATE",m[m.PERMISSION_UPDATE=3]="PERMISSION_UPDATE",m[m.IDENTITY_UPDATE=4]="IDENTITY_UPDATE",m[m.PING_UPDATE=5]="PING_UPDATE",e.SystemMessageType=void 0,(v=e.SystemMessageType||(e.SystemMessageType={}))[v.GroupMemberPermissionChange=3]="GroupMemberPermissionChange",v[v.GroupPermissionChange=4]="GroupPermissionChange",e.ConnectionProtocol=void 0,(f=e.ConnectionProtocol||(e.ConnectionProtocol={})).SSE="sse",f.WEBSOCKET="websocket";var M="undefined"!=typeof uni,S="undefined"!=typeof window,b="simsdk_",E={CONVERSATIONS:b+"conversations",GROUP_MESSAGES:b+"group_messages",USER_INFO:b+"user_info",META_INFO:b+"meta"},T={MAX_CONVERSATIONS:100,MAX_GROUP_MESSAGES:200,STORAGE_CHUNK_SIZE:512e3,CACHE_TTL:6048e5,EXPIRY_CHECK_INTERVAL:18e5},y=/*#__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({},T,c)}var t=e.prototype;return t.initialize=function(e){this.userInfo.username=e,this.persistEnabled&&this.loadFromStorage(),this.setupCleanupInterval(),this.debug&&(console.log("Cache initialized for user:",e),console.log("Loaded conversations:",this.conversationCache.length),console.log("Loaded group messages for groups:",Object.keys(this.groupMessageCache).length))},t.clear=function(){this.conversationCache=[],this.groupMessageCache={},this.accessTimeRecord={},this.persistEnabled&&this.clearStorage(),this.debug&&console.log("Cache cleared")},t.getConversations=function(){return[].concat(this.conversationCache)},t.clearConversationUnread=function(e){var t=this.conversationCache.find(function(t){return t.id===e});t&&(t.unreadCount=0,this.persistEnabled&&this.saveConversationsToStorage())},t.clearAllConversationUnread=function(){this.conversationCache.forEach(function(e){e.unreadCount>0&&(e.unreadCount=0)}),this.persistEnabled&&this.saveConversationsToStorage()},t.getActiveConversation=function(){return this.activeConversation},t.setConversations=function(e){this.conversationCache=e.length>this.config.MAX_CONVERSATIONS?e.slice(0,this.config.MAX_CONVERSATIONS):[].concat(e),this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage()},t.updateConversation=function(e){var t=this.conversationCache.findIndex(function(t){return t.id===e.id});t>=0?this.conversationCache[t]=r({},e):(this.conversationCache.push(r({},e)),this.conversationCache.length>this.config.MAX_CONVERSATIONS&&this.enforceConversationLimit()),this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage()},t.updateConversationWithMessage=function(e,t){var n,o=e.groupId;if(!o)return!1;var r=this.conversationCache.findIndex(function(e){return e.id===o});if(-1===r)return!1;var s=this.conversationCache[r],i=(null==(n=s.latest)?void 0:n.msgId)||0;return this.activeConversation&&this.activeConversation.id===o?s.unreadCount=0:t!==e.username&&(s.unreadCount+=e.msgId>i?e.msgId-i:1),s.latest=e,this.sortConversations(),this.persistEnabled&&this.saveConversationsToStorage(),!0},t.getGroupMessages=function(e){return this.recordAccess(e),!this.groupMessageCache[e]&&this.persistEnabled&&this.loadGroupMessagesFromStorage(e),this.groupMessageCache[e]||[]},t.addGroupMessage=function(e){if(e.groupId){this.recordAccess(e.groupId),this.groupMessageCache[e.groupId]||(this.groupMessageCache[e.groupId]=[]);var t=this.groupMessageCache[e.groupId].findIndex(function(t){return t.msgId===e.msgId});t>=0?this.groupMessageCache[e.groupId][t]=e:this.groupMessageCache[e.groupId].push(e),this.sortGroupMessages(e.groupId),this.limitGroupMessageCache(e.groupId),this.enforceMemoryLimits(),this.persistEnabled&&this.saveGroupMessagesToStorage(e.groupId)}},t.addGroupMessages=function(e){for(var t,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.msgId===e.msgId});t>=0?n.groupMessageCache[d][t]=e:n.groupMessageCache[d].push(e)},p=o(l);!(g=p()).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(E.META_INFO);t&&(this.metaInfo=JSON.parse(t));var n=localStorage.getItem(E.CONVERSATIONS);n&&(this.conversationCache=JSON.parse(n)),Object.keys(localStorage).filter(function(e){return e.startsWith(E.GROUP_MESSAGES+".")}).forEach(function(t){var n=t.split(".")[1];n&&!isNaN(Number(n))&&(e.accessTimeRecord[n]=0)});var o=localStorage.getItem(E.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(E.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(E.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(E.GROUP_MESSAGES+"."+e+(a>0?"."+a:""),JSON.stringify(i))}}else localStorage.setItem(E.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(E.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=E.GROUP_MESSAGES+"."+e+(t>0?"."+t:"");null!==localStorage.getItem(o)?(localStorage.removeItem(o),t++):n=!1}},t.saveUserInfoToStorage=function(){try{localStorage.setItem(E.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(b)}));!(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}(),O=/*#__PURE__*/function(){function e(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=2e3*Math.random()+3e3,this.connectTimeout=1e4,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this.onMaxRetriesReachedCallback=void 0,this.onConnectionChangeCallback=void 0,this.isDestroyed=!1,this.debug=!1,this._openHandler=null,this._errorHandler=null,this._messageHandler=null,this._customHandlers=new Map,this.connectTimeoutRef=null,this.url=e.url,this.token=e.token,this.connectTimeout=e.connectTimeout||1e4,this.reconnectTimeout=e.retryInterval||2e3*Math.random()+3e3,this.maxReconnectAttempts=e.maxRetries||5,this.debug=e.debug||!1,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed,this.onMaxRetriesReachedCallback=e.onMaxRetriesReached,this.onConnectionChangeCallback=e.onConnectionChange}var n=e.prototype;return n.debugLog=function(e){var t;this.debug&&(t=console).log.apply(t,["[SSE] "+e].concat([].slice.call(arguments,1)))},n.debugError=function(e){var t;this.debug&&(t=console).error.apply(t,["[SSE] "+e].concat([].slice.call(arguments,1)))},n.debugWarn=function(e){var t;this.debug&&(t=console).warn.apply(t,["[SSE] "+e].concat([].slice.call(arguments,1)))},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){var n=this;this.handlers.set(e,t);var o=function(e){try{var o=JSON.parse(e.data);t(o)}catch(e){n.debugError("Error parsing message data:",e)}};this._customHandlers.set(e,o),this.eventSource?this.eventSource.addEventListener(e,o):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){e.debugLog("SSE connection established"),e.connected=!0,e.onConnectionChangeCallback&&e.onConnectionChangeCallback(!0),e.reconnectAttempts>0&&e.onReconnectSuccessCallback&&e.onReconnectSuccessCallback(),e.reconnectAttempts=0,e.reconnectTimeout=5e3,n("SSE connect successful!")},e._errorHandler=function(t){e.debugError("SSE connection error:",t),e.connected=!1,e.onConnectionChangeCallback&&e.onConnectionChangeCallback(!1),401===t.status||t.statusText&&t.statusText.includes("Unauthorized")?(e.cleanup(),e.connectTimeoutRef&&(clearTimeout(e.connectTimeoutRef),e.connectTimeoutRef=null),e.notifyConnectionClosed(!0)):e.handleReconnect(),e.connected||o(new Error("SSE connect error"))},e._messageHandler=function(t){try{e.debugLog("SSE received message:",t.data);var n=JSON.parse(t.data);e.onMessageCallback&&e.onMessageCallback(n)}catch(t){e.debugError("Error parsing message:",t)}},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)}),e.connectTimeoutRef=setTimeout(function(){e.connected||(o(new Error("Connection timeout")),e.handleReconnect())},e.connectTimeout);var r=e._openHandler;e._openHandler=function(t){clearTimeout(e.connectTimeoutRef),r(t)}}catch(t){e.debugError("Failed to create EventSource:",t),e.handleReconnect(),o(t)}})},n.notifyConnectionClosed=function(e){void 0===e&&(e=!1),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(e),e?this.debugWarn("SSE connection closed due to authentication error"):this.debugLog("SSE connection closed")},n.handleReconnect=function(){var e=this;if(this.isDestroyed)this.debugLog("SSE is destroyed, skipping reconnection");else if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return this.debugError("Max reconnection attempts reached"),this.destroySse(),void(this.onMaxRetriesReachedCallback&&this.onMaxRetriesReachedCallback());this.debugLog("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,6e4),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.isDestroyed=!0,this.notifyConnectionClosed()},n.close=function(){this.destroySse(),this.debugLog("SSE 连接已关闭")},n.isConnected=function(){return this.connected},e}(),P=/*#__PURE__*/function(){function e(e){this.url=void 0,this.token=void 0,this.websocket=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=2e3*Math.random()+3e3,this.connectTimeout=1e4,this.reconnectTimer=null,this.handlers=new Map,this.connected=!1,this.onMessageCallback=void 0,this.onReconnectSuccessCallback=void 0,this.onConnectionClosedCallback=void 0,this.onMaxRetriesReachedCallback=void 0,this.onConnectionChangeCallback=void 0,this.connectTimeoutRef=null,this.isDestroyed=!1,this.debug=!1,this.url=e.url,this.token=e.token,this.connectTimeout=e.connectTimeout||1e4,this.reconnectTimeout=e.retryInterval||2e3*Math.random()+3e3,this.maxReconnectAttempts=e.maxRetries||5,this.debug=e.debug||!1,this.onMessageCallback=e.onMessage,this.onReconnectSuccessCallback=e.onReconnectSuccess,this.onConnectionClosedCallback=e.onConnectionClosed,this.onMaxRetriesReachedCallback=e.onMaxRetriesReached,this.onConnectionChangeCallback=e.onConnectionChange}var t=e.prototype;return t.debugLog=function(e){var t;this.debug&&(t=console).log.apply(t,["[WebSocket] "+e].concat([].slice.call(arguments,1)))},t.debugError=function(e){var t;this.debug&&(t=console).error.apply(t,["[WebSocket] "+e].concat([].slice.call(arguments,1)))},t.debugWarn=function(e){var t;this.debug&&(t=console).warn.apply(t,["[WebSocket] "+e].concat([].slice.call(arguments,1)))},t.subscribe=function(e,t){this.handlers.set(e,t),this.websocket?this.addMessageHandler(e,t):this.connect()},t.addMessageHandler=function(e,t){var n=this;this.websocket&&this.websocket.addEventListener("message",function(o){try{var r=JSON.parse(o.data);r.type===e&&t(r)}catch(e){n.debugError("Error parsing WebSocket message data:",e)}})},t.connect=function(){var e=this;return this.connected&&this.websocket?Promise.reject(new Error("WebSocket is already connected!")):new Promise(function(t,n){try{var o=new URL(e.url);o.searchParams.set("token",e.token),e.websocket=new WebSocket(o.toString()),e.connectTimeoutRef=setTimeout(function(){e.connected||(n(new Error("WebSocket connection timeout")),e.handleReconnect())},e.connectTimeout),e.websocket.onopen=function(n){e.debugLog("WebSocket connection established"),e.connected=!0,clearTimeout(e.connectTimeoutRef),e.onConnectionChangeCallback&&e.onConnectionChangeCallback(!0),e.reconnectAttempts>0&&e.onReconnectSuccessCallback&&e.onReconnectSuccessCallback(),e.reconnectAttempts=0,e.reconnectTimeout=5e3,t("WebSocket connect successful!")},e.websocket.onerror=function(t){e.debugError("WebSocket connection error:",t),e.connected=!1,clearTimeout(e.connectTimeoutRef),e.onConnectionChangeCallback&&e.onConnectionChangeCallback(!1),e.handleReconnect(),e.connected||n(new Error("WebSocket connect error"))},e.websocket.onclose=function(t){e.debugLog("WebSocket connection closed:",t.code,t.reason),e.connected=!1,e.onConnectionChangeCallback&&e.onConnectionChangeCallback(!1),1002===t.code||1003===t.code||t.reason&&t.reason.includes("Unauthorized")?(e.cleanup(),e.notifyConnectionClosed(!0)):e.handleReconnect()},e.websocket.onmessage=function(t){try{e.debugLog("WebSocket received message:",t.data);var n=JSON.parse(t.data);if("pong"===n.type||2===n.ev)return void(e.connected=!0);e.onMessageCallback&&e.onMessageCallback(n)}catch(t){e.debugError("Error parsing WebSocket message:",t)}},e.handlers.forEach(function(t,n){e.addMessageHandler(n,t)})}catch(t){e.debugError("Failed to create WebSocket:",t),e.handleReconnect(),n(t)}})},t.notifyConnectionClosed=function(e){void 0===e&&(e=!1),this.onConnectionClosedCallback&&this.onConnectionClosedCallback(e),e?this.debugWarn("WebSocket connection closed due to authentication error"):this.debugLog("WebSocket connection closed")},t.handleReconnect=function(){var e=this;if(this.isDestroyed)this.debugLog("WebSocket is destroyed, skipping reconnection");else if(null===this.reconnectTimer){if(this.reconnectAttempts>=this.maxReconnectAttempts)return this.debugError("Max reconnection attempts reached"),this.destroyWebSocket(),void(this.onMaxRetriesReachedCallback&&this.onMaxRetriesReachedCallback());this.debugLog("Attempting to reconnect in "+this.reconnectTimeout/1e3+" seconds..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectAttempts++,e.reconnectTimeout=Math.min(2*e.reconnectTimeout,6e4),e.reconnectTimer=null,e.connect().catch(function(){})},this.reconnectTimeout)}},t.cleanup=function(){this.websocket&&(this.websocket.close(),this.websocket=null),this.connected=!1},t.unsubscribe=function(){this.cleanup(),this.handlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},t.destroyWebSocket=function(){this.unsubscribe(),this.isDestroyed=!0,this.notifyConnectionClosed()},t.close=function(){this.destroyWebSocket(),this.debugLog("WebSocket 连接已关闭")},t.isConnected=function(){var e;return this.connected&&(null==(e=this.websocket)?void 0:e.readyState)===WebSocket.OPEN},e}(),G=["protocol"],R=/*#__PURE__*/function(){function t(){}return t.createClient=function(t){var n=t.protocol,o=function(e,t){if(null==e)return{};var n={};for(var o in e)if({}.hasOwnProperty.call(e,o)){if(t.includes(o))continue;n[o]=e[o]}return n}(t,G);switch(n){case e.ConnectionProtocol.SSE:return new O(o);case e.ConnectionProtocol.WEBSOCKET:return new P(o);default:throw new Error("Unsupported connection protocol: "+n)}},t}(),k=/*#__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}(),A=/*#__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.getMessageApi=function(t,n){return n===e.GroupType.PrivateChat?e.RequestApi.PushPrivateMessage:n===e.GroupType.LiveGroup?e.RequestApi.PushLiveMessage:null!=t&&t.receiverName?e.RequestApi.PushMessageToMember:e.RequestApi.CreateTextMessage},n.createMessage=function(t,n,o,s,i){void 0===s&&(s={});var a={groupType:o};o===e.GroupType.PublicGroup||o===e.GroupType.LiveGroup?a.groupId=n:a.receiverName=n;var c=r({},a,s,{msgType:t},i);return this.sendMessage(c,this.getMessageApi(a,o))},n.createTextMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.TEXT,n,o,r,{text:t}))}catch(e){return Promise.reject(e)}},n.createImageMessage=function(t,n,o,r,s){void 0===s&&(s={});try{return Promise.resolve(this.createMessage(e.MessageType.IMAGE,o,r,s,{link:t,snapshot:n}))}catch(e){return Promise.reject(e)}},n.createFileMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.FILE,n,o,r,{link:t}))}catch(e){return Promise.reject(e)}},n.createAudioMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.AUDIO,n,o,r,{link:t}))}catch(e){return Promise.reject(e)}},n.createVideoMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.VIDEO,n,o,r,{link:t}))}catch(e){return Promise.reject(e)}},n.createLinkMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.LINK,n,o,r,{text:t}))}catch(e){return Promise.reject(e)}},n.createGifMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.GIF,n,o,r,{link:t}))}catch(e){return Promise.reject(e)}},n.createOptionMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.OPTION,n,o,r,{text:t}))}catch(e){return Promise.reject(e)}},n.createEmojiMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.EMOJI,n,o,r,{text:t}))}catch(e){return Promise.reject(e)}},n.createCustomMessage=function(t,n,o,r){void 0===r&&(r={});try{return Promise.resolve(this.createMessage(e.MessageType.CUSTOM,n,o,r,{text:t}))}catch(e){return Promise.reject(e)}},n.getHistoryMessageList=function(t){var n=t.groupId,o=t.lastId,r=t.type,s=t.size,i=void 0===s?100:s;try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.GetHistoryMessageList,method:"POST",data:{groupId:n,lastId:o,type:r,size:i}}))}catch(e){return Promise.reject(e)}},n.getLiveMessageList=function(t){var n=t.groupId;try{var o;return Promise.resolve(this.sdk.sendRequest({data:{groupId:n},url:null!=(o=this.sdk.getConfig)&&o.anonLogin?e.RequestApi.GetAnonymousLiveMessageList:e.RequestApi.GetLiveMessageList,method:"POST"}))}catch(e){return Promise.reject(e)}},t}(),I=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return n.getConversations=function(t){try{var n=this;return Promise.resolve(n.sdk.sendRequest({data:t,url:e.RequestApi.GetAllConversationList,method:"GET"})).then(function(e){return e.data.records=e.data.records.map(n.normalizeConversation),e})}catch(e){return Promise.reject(e)}},n.markConversationRead=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.MarkConversationMessageAsRead,method:"GET"}))}catch(e){return Promise.reject(e)}},n.normalizeConversation=function(e){var t,n,o,s,i,a;return r({},e,{id:e.id,name:e.name||"",groupType:e.groupType||0,avatar:e.avatar||"",status:null!=(t=e.status)?t:1,latest:null!=(n=e.latest)?n:{},unreadCount:null!=(o=e.unreadCount)?o:0,draftText:null!=(s=e.draftText)?s:"",custom:null!=(i=e.custom)?i:"",groupMemberId:null!=(a=e.groupMemberId)?a:""})},t}(),L=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return 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.getGroupMember=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:e.RequestApi.GetGroupMember,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{var n;return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:null!=(n=this.sdk.getConfig)&&n.anonLogin?e.RequestApi.AnonymousJoinGroup:e.RequestApi.JoinGroup,method:"GET"}))}catch(e){return Promise.reject(e)}},n.leftGroup=function(t){try{var n;return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:null!=(n=this.sdk.getConfig)&&n.anonLogin?e.RequestApi.AnonymousLeftGroup:e.RequestApi.LeftGroup,method:"GET"}))}catch(e){return Promise.reject(e)}},n.checkGroupBlock=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:e.RequestApi.CheckGroupBlock,method:"GET"}))}catch(e){return Promise.reject(e)}},n.updateLatestMessage=function(t){try{var n=Object.fromEntries(t.entries());return Promise.resolve(this.sdk.sendRequest({data:{latestMessage:n},url:e.RequestApi.UpdateLatestMessage,method:"POST"}))}catch(e){return Promise.reject(e)}},n.getGroupLatestMessage=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groups:t},url:e.RequestApi.GetLatestGroupChats,method:"POST"}))}catch(e){return Promise.reject(e)}},n.checkGroupLatestMessage=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{ttl:t},url:e.RequestApi.CheckLatestMessages,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getMyGroupPermission=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:e.RequestApi.GetMyGroupPermission,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getGroupPermission=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t},url:e.RequestApi.GetGroupPermission,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getGroupMemberPermission=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,targetusername:n},url:e.RequestApi.GetGroupMemberPermission,method:"GET"}))}catch(e){return Promise.reject(e)}},n.updateGroupPermission=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.UpdateGroupPermission,method:"POST"}))}catch(e){return Promise.reject(e)}},n.updateGroupMemberPermission=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.UpdateGroupMemberPermission,method:"POST"}))}catch(e){return Promise.reject(e)}},n.kickGroupMember=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.kickGroupMember,method:"POST"}))}catch(e){return Promise.reject(e)}},n.muteMembers=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.muteMembers,method:"POST"}))}catch(e){return Promise.reject(e)}},n.editGroupName=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.editeGroupName,method:"GET",data:{groupId:t,name:n}}))}catch(e){return Promise.reject(e)}},n.editNotification=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.editeNotification,method:"GET",data:{groupId:t,notification:n}}))}catch(e){return Promise.reject(e)}},n.editGroupCustomer=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.editeGroupCustomer,method:"GET",data:{groupId:t,customer:n}}))}catch(e){return Promise.reject(e)}},n.addAdmin=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.addAdmin,method:"GET",data:{groupId:t,username:n}}))}catch(e){return Promise.reject(e)}},n.deleteAdmin=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.deleteAdmin,method:"GET",data:{groupId:t,username:n}}))}catch(e){return Promise.reject(e)}},n.pin=function(t,n,o){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.pin,method:"GET",data:{groupId:t,messageId:n,type:o}}))}catch(e){return Promise.reject(e)}},n.muteGroup=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.muteGroup,method:"GET",data:{groupId:t,type:n}}))}catch(e){return Promise.reject(e)}},n.muteMember=function(t,n,o){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.muteMember,method:"GET",data:{groupId:t,username:n,type:o}}))}catch(e){return Promise.reject(e)}},t}(),N=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return n.getContactByType=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:{contactType:t},url:e.RequestApi.GetContactByType,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getMemberContacts=function(){try{return Promise.resolve(this.getContactByType(e.ContactType.MEMBER))}catch(e){return Promise.reject(e)}},n.getColleagueContacts=function(){try{return Promise.resolve(this.getContactByType(e.ContactType.COLLEAGUE))}catch(e){return Promise.reject(e)}},n.getGroupContacts=function(){try{return Promise.resolve(this.getContactByType(e.ContactType.GROUP))}catch(e){return Promise.reject(e)}},n.editContactTag=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.EditContactTag,method:"POST"}))}catch(e){return Promise.reject(e)}},n.getContactTag=function(){try{return Promise.resolve(this.sdk.sendRequest({data:{},url:e.RequestApi.GetContactTag,method:"GET"}))}catch(e){return Promise.reject(e)}},n.allocationContactTag=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.AllocationContactTag,method:"POST"}))}catch(e){return Promise.reject(e)}},n.allocationMemberTag=function(t,n){try{return Promise.resolve(this.allocationContactTag({contactType:e.ContactType.MEMBER,tag:t,targetIds:n}))}catch(e){return Promise.reject(e)}},n.allocationColleagueTag=function(t,n){try{return Promise.resolve(this.allocationContactTag({contactType:e.ContactType.COLLEAGUE,tag:t,targetIds:n}))}catch(e){return Promise.reject(e)}},n.allocationGroupTag=function(t,n){try{return Promise.resolve(this.allocationContactTag({contactType:e.ContactType.GROUP,tag:t,targetIds:n}))}catch(e){return Promise.reject(e)}},t}(),U=/*#__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 k(this.sdk);case e.ServiceName.MESSAGE:return new A(this.sdk);case e.ServiceName.CONVERSATION:return new I(this.sdk);case e.ServiceName.GROUP:return new L(this.sdk);case e.ServiceName.CONTACT:return new N(this.sdk);default:throw new Error("Unknown service: "+t)}},n.reset=function(){this.services={}},t}();function w(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var _=[e.RequestApi.Logout,e.CbEvents.OnKickedOffline,e.CbEvents.OnUserTokenInvalid,e.CbEvents.OnUserTokenExpired];e.SIMSDK=/*#__PURE__*/function(t){function n(n){var o;return void 0===n&&(n=!1),(o=t.call(this)||this).config={debug:!1,isLive:!1,useProtobuf:!1,protocol:e.ConnectionProtocol.SSE},o.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},o.cacheManager=void 0,o.connectionClient=void 0,o.serviceManager=void 0,o.conversationSyncTimer=void 0,o.syncInterval=2e4,o.isSyncing=!1,o.lastFetchTtl=0,o.lastUnauthorizedTime=0,o.UNAUTHORIZED_THROTTLE_MS=3e3,o.syncConversationsWithServer=function(){try{if(o.isSyncing)return o.config.debug&&console.log("[SDK] Sync already in progress, skipping"),Promise.resolve();var t=o.isLoggedIn(),n=o.isConnected();if(!t||!n)return console.warn("[SDK] Not syncing. Login status: "+t+", Connection status: "+n),Promise.resolve();var r=function(t,n){try{var r=w(function(){return o.isSyncing=!0,Promise.resolve(o.group.checkGroupLatestMessage(o.lastFetchTtl)).then(function(t){console.log("res ",t);var n=function(){if(0==t.code){var n=t.data,r=n.groupChatIds;o.lastFetchTtl=n.ttl;var s=function(){if(r&&Object.keys(r).length>0)return Object.entries(r).forEach(function(e){var t=e[1],n=Number(e[0]);console.log("groupId: "+n+", messageId: "+t)}),Promise.resolve(o.conversation.getConversations({pageNo:1,pageSize:20})).then(function(t){if(0===t.code){var n=t.data.records,r=o.cacheManager.getConversations(),s=new Set(r.map(function(e){return e.id})),i=n.filter(function(e){return!s.has(e.id)});i.length>0&&(o.cacheManager.setConversations([].concat(r,i)),o.emit(e.CbEvents.OnConversationCreated,i),o.config.debug&&console.log("[SDK] Found "+i.length+" new conversations")),o.emit(e.CbEvents.OnConversationListUpdated,o.cacheManager.getConversations())}})}();if(s&&s.then)return s.then(function(){})}}();if(n&&n.then)return n.then(function(){})})},function(e){console.error("[SDK] Error during conversation sync:",e)})}catch(e){return n(!0,e)}return r&&r.then?r.then(n.bind(null,!1),n.bind(null,!0)):n(!1,r)}(0,function(e,t){if(o.isSyncing=!1,e)throw t;return t});return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},o.configure=function(e){void 0!==e.debug&&(o.config.debug=e.debug),e.isLive&&(o.config.isLive=e.isLive),e.apiAddr&&(o.config.apiAddr=e.apiAddr),e.wsAddr&&(o.config.wsAddr=e.wsAddr),e.ossApiAddr&&(o.config.ossApiAddr=e.ossApiAddr),e.appKey&&(o.config.appKey=e.appKey),e.token&&(o.config.token=e.token),e.connectTimeout&&(o.config.connectTimeout=e.connectTimeout),e.maxRetries&&(o.config.maxRetries=e.maxRetries),e.useProtobuf&&(o.config.useProtobuf=e.useProtobuf),e.protocol&&(o.config.protocol=e.protocol)},o.sendRequest=function(e){try{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 Promise.resolve(w(function(){return Promise.resolve(function(e){try{var t,n=function(e){if(t)return e;throw new Error("Unsupported platform")},o=function(){if(M){var n=new Promise(function(t,n){uni.request({url:e.url,method:e.method||"GET",header:e.headers,data:e.data,success:function(e){401!==e.statusCode?t(e.data):n({status:401,message:"Unauthorized"})},fail:function(e){return n(e)}})});return t=1,n}return function(){if(S)return Promise.resolve(fetch(e.url,{method:e.method||"GET",headers:e.headers,body:e.data?JSON.stringify(e.data):null})).then(function(e){if(401===e.status)throw{status:401,message:"Unauthorized"};return Promise.resolve(e.json()).then(function(e){return t=1,e})})}()}();return Promise.resolve(o&&o.then?o.then(n):n(o))}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}))},function(e){throw 401!==(null==e?void 0:e.status)&&401!==(null==e?void 0:e.statusCode)||o.handleUnauthorizedWithThrottle(t),e}))}catch(e){return Promise.reject(e)}},o.handleUnauthorizedWithThrottle=function(e){var t=Date.now();t-o.lastUnauthorizedTime<o.UNAUTHORIZED_THROTTLE_MS?console.warn("401错误被节流限制,跳过处理:"+e):(o.lastUnauthorizedTime=t,o.handleUnauthorized(e))},o.handleUnauthorized=function(e){console.warn("未授权请求(401):",e),o.handleConnectionClosed(!0)},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(e){o.config.debug&&console.log("[SDK] handleMessage response",e),o.isProtobufFormat(e)?o.handleProtobufMessage(e):o.handleJsonMessage(e)},o.handleJsonMessage=function(t){switch(o.config.debug&&console.log("handleMessage response",t),t.ev){case e.SseEventType.EVENT_MESSAGE_PUSH:var n=t.dt;if(Array.isArray(n))if(1===n.length){var r=n[0];o.updateMessageCache(r),o.emit(e.CbEvents.OnReceiveMessage,r)}else n.length>1&&(n.forEach(function(e){o.updateMessageCache(e)}),o.emit(e.CbEvents.OnReceiveMessages,n));else console.warn("[SDK] Expected response.dt to be an array, but got:",n);break;case e.SseEventType.EVENT_PONG_IDLE:o.internalState.isConnected=!0;break;case e.SseEventType.EVENT_SYSTEM_MESSAGE_PUSH:o.emit(e.CbEvents.OnReceiveSystemMessage,t.dt);break;default:s=t.ev,Object.values(e.CbEvents).includes(s)?(o.emit(t.ev,t.dt),_.includes(t.ev)&&(o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1,o.connectionClient&&(o.connectionClient.close(),o.connectionClient=void 0))):o.config.debug&&console.warn("[SDK] 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(t){o.internalState.isConnected=!1,o.config.debug&&console.log("SSE connection closed"),o.emit(e.CbEvents.OnDisconnected,t)},o.handleMaxRetriesReached=function(){o.config.debug&&console.log("SSE connection max reconnection attempts reached"),o.emit(e.CbEvents.onMaxRetriesReached)},o.handleConnectionChange=function(t){o.config.debug&&console.log("Connection status changed:",t),o.emit(t?e.CbEvents.OnConnected:e.CbEvents.OnDisconnected)},o.login=function(t){try{var n,s,i=function(r){return n?r:(o.connectionClient=R.createClient({url:o.config.protocol===e.ConnectionProtocol.WEBSOCKET?o.config.wsAddr+"/conn?username="+t.username+"&token="+t.token+"&appKey="+o.config.appKey+"&random="+s:o.config.apiAddr+"/chat/sse/"+(t.anonLogin?"anonymousConn":"conn")+"?username="+t.username+"&token="+t.token+"&appKey="+o.config.appKey+"&random="+s,protocol:o.config.protocol||e.ConnectionProtocol.SSE,debug:o.config.debug,onMessage:o.handleMessage,onReconnectSuccess:o.handleReconnectSuccess,onConnectionClosed:o.handleConnectionClosed,onMaxRetriesReached:o.handleMaxRetriesReached,onConnectionChange:o.handleConnectionChange,token:t.token,connectTimeout:o.config.connectTimeout,maxRetries:o.config.maxRetries}),w(function(){return Promise.resolve(o.connectionClient.connect()).then(function(e){return o.internalState.isLoggedIn=!0,o.internalState.isConnected=!0,o.config.isLive||o.startConversationSync(),e})},function(e){return o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1,Promise.reject(e.message)}))};if(o.connectionClient&&(null==o.connectionClient.close||o.connectionClient.close(),o.connectionClient=void 0,o.internalState.isLoggedIn=!1,o.internalState.isConnected=!1),!o.config.apiAddr)return Promise.reject("No apiAddr configured. Please call configure() before login().");if(!o.config.ossApiAddr)return Promise.reject("No ossApiAddr configured. Please call configure() before login().");if(!o.config.appKey)return Promise.reject("No appKey configured. Please call configure() before login().");if(!o.config.token)return Promise.reject("No token configured. Please call configure() before login().");if(o.config.username=t.username,o.config.anonLogin=t.anonLogin||!1,t.protocol&&(o.config.protocol=t.protocol),t.protocol==e.ConnectionProtocol.WEBSOCKET&&!o.config.wsAddr)return Promise.reject("WebSocket address (wsAddr) is not configured. Please call configure() before login().");if(o.config.debug&&(console.log("login params",t),console.log("apiAddr",o.config.apiAddr)),!o.config.isLive||!t.anonLogin){o.cacheManager.initialize(t.username),o.cacheManager.resetActiveConversation();var a=o.cacheManager.getConversations();a.length>0&&o.emit(e.CbEvents.OnConversationListUpdated,a),o.initializeConversationCache()}var c=function(){if(!t.anonLogin)return Promise.resolve(o.user.login(r({},t,{appKey:o.config.appKey}))).then(function(e){var t=e.code,o=e.data;if(0!=t){var r=Promise.resolve("Login failed, Server error, error code is "+t);return n=1,r}s=o})}();return Promise.resolve(c&&c.then?c.then(i):i(c))}catch(e){return Promise.reject(e)}},o.logout=function(){try{return o.connectionClient&&(o.connectionClient.close(),o.connectionClient=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{return Promise.resolve(w(function(){return Promise.resolve(o.conversation.getConversations(t)).then(function(n){var r=n.data;if(0===n.code&&r){var s=o.cacheManager.getConversations();if(1===t.pageNo)o.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);o.cacheManager.setConversations(u)}o.emit(e.CbEvents.OnConversationListUpdated,o.cacheManager.getConversations())}else{var d=o.cacheManager.getConversations();d.length>0&&o.emit(e.CbEvents.OnConversationListUpdated,d)}return!0})},function(t){console.error("Failed to get conversations:",t);var n=o.cacheManager.getConversations();return n.length>0&&o.emit(e.CbEvents.OnConversationListUpdated,n),!1}))}catch(e){return Promise.reject(e)}},o.internalUploadFile=function(t,n){try{return Promise.resolve(w(function(){var r=new FormData;return r.append("file",t),r.append("filename",t.name),r.append("groupId",n.toString()),Promise.resolve(fetch(""+o.config.ossApiAddr+e.RequestApi.UploadFile,{method:"POST",headers:{Authorization:o.config.token?"Bearer "+o.config.token:""},body:r})).then(function(e){if(!e.ok)throw new Error("Upload failed with status: "+e.status);return Promise.resolve(e.json()).then(function(e){var t=(null==e?void 0:e.data)||{};return{originalUrl:t.originalUrl||"",thumbnailUrl:t.thumbnailUrl||""}})})},function(e){return console.error("[Upload Error]",e),{error:e instanceof Error?e:new Error("Unknown upload error")}}))}catch(e){return Promise.reject(e)}},o.uploadFile=function(t,n){var r=t.file;try{return Promise.resolve(o.internalUploadFile(r,n)).then(function(t){var n,o=t.originalUrl,r=t.thumbnailUrl,s=t.error;return{data:{originalUrl:void 0===o?"":o,thumbnailUrl:void 0===r?"":r},msg:null!=(n=null==s?void 0:s.message)?n:"",code:s?e.ErrorCode.UnknownError:0}})}catch(e){return Promise.reject(e)}},o.sendTextMessage=function(e,t,n,r){return o.message.createTextMessage(e,t,n,r)},o.sendImageMessage=function(e,t,n,r,s){return o.message.createImageMessage(e,t,n,r,s)},o.sendFileMessage=function(e,t,n,r){return o.message.createFileMessage(e,t,n,r)},o.sendAudioMessage=function(e,t,n,r){return o.message.createAudioMessage(e,t,n,r)},o.sendVideoMessage=function(e,t,n,r){return o.message.createVideoMessage(e,t,n,r)},o.sendLinkMessage=function(e,t,n,r){return o.message.createLinkMessage(e,t,n,r)},o.sendGifMessage=function(e,t,n,r){return o.message.createGifMessage(e,t,n,r)},o.sendOptionMessage=function(e,t,n,r){return o.message.createOptionMessage(e,t,n,r)},o.sendEmojiMessage=function(e,t,n,r){return o.message.createEmojiMessage(e,t,n,r)},o.sendCustomMessage=function(e,t,n,r){return o.message.createCustomMessage(e,t,n,r)},o.getHistoryMessageList=function(e){return e.groupId&&o.cacheManager.markConversationAsActive(e.groupId),o.message.getHistoryMessageList(e)},o.getLiveMessageList=function(e){return o.message.getLiveMessageList(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.leftGroup=function(e){return o.group.leftGroup(e)},o.checkGroupBlock=function(e){return o.group.checkGroupBlock(e)},o.getMyGroupPermission=function(e){return o.group.getMyGroupPermission(e)},o.getGroupPermission=function(e){return o.group.getGroupPermission(e)},o.getGroupMember=function(e){return o.group.getGroupMember(e)},o.getGroupMemberPermission=function(e,t){return o.group.getGroupMemberPermission(e,t)},o.updateGroupPermission=function(e){return o.group.updateGroupPermission(e)},o.kickGroupMember=function(e){return o.group.kickGroupMember(e)},o.muteMembers=function(e){return o.group.muteMembers(e)},o.updateGroupMemberPermission=function(e){return o.group.updateGroupMemberPermission(e)},o.editGroupName=function(e,t){return o.group.editGroupName(e,t)},o.editNotification=function(e,t){return o.group.editNotification(e,t)},o.editGroupCustomer=function(e,t){return o.group.editGroupCustomer(e,t)},o.addAdmin=function(e,t){return o.group.addAdmin(e,t)},o.deleteAdmin=function(e,t){return o.group.deleteAdmin(e,t)},o.pin=function(e,t,n){return o.group.pin(e,t,n)},o.muteGroup=function(e,t){return o.group.muteGroup(e,t)},o.muteMember=function(e,t,n){return o.group.muteMember(e,t,n)},o.markConversationRead=function(e){return o.conversation.markConversationRead(e)},o.clearConversationUnread=function(t){o.cacheManager.clearConversationUnread(t);var n=o.cacheManager.getConversations();o.emit(e.CbEvents.OnConversationListUpdated,n)},o.clearAllConversationUnread=function(){o.cacheManager.clearAllConversationUnread();var t=o.cacheManager.getConversations();o.emit(e.CbEvents.OnConversationListUpdated,t)},o.getContactByType=function(e){return o.contact.getContactByType(e)},o.getMemberContacts=function(){return o.contact.getMemberContacts()},o.getColleagueContacts=function(){return o.contact.getColleagueContacts()},o.getGroupContacts=function(){return o.contact.getGroupContacts()},o.editContactTag=function(e){return o.contact.editContactTag(e)},o.getContactTag=function(){return o.contact.getContactTag()},o.allocationContactTag=function(e){return o.contact.allocationContactTag(e)},o.allocationMemberTag=function(e,t){return o.contact.allocationMemberTag(e,t)},o.allocationColleagueTag=function(e,t){return o.contact.allocationColleagueTag(e,t)},o.allocationGroupTag=function(e,t){return o.contact.allocationGroupTag(e,t)},o.config.debug=n,n&&(console.log("🚀 SIM SDK Web v1.1.0 (本地开发版本)"),console.log("📦 支持协议: SSE, WebSocket")),o.cacheManager=new y({persistEnabled:!0,debug:n}),o.serviceManager=new U(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.startConversationSync=function(e){this.stopConversationSync(),e&&e>0&&(this.syncInterval=e),this.conversationSyncTimer=window.setInterval(this.syncConversationsWithServer,this.syncInterval),this.config.debug&&console.log("[SDK] Started conversation sync timer with interval: "+this.syncInterval+"ms")},d.stopConversationSync=function(){this.conversationSyncTimer&&(clearInterval(this.conversationSyncTimer),this.conversationSyncTimer=void 0,this.config.debug&&console.log("[SDK] Stopped conversation sync timer"))},d.syncConversationsNow=function(){return this.syncConversationsWithServer()},d.destroy=function(){this.stopConversationSync(),this.connectionClient&&(this.connectionClient.close(),this.connectionClient=void 0),this.cacheManager.destroy(),this.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},this.config.debug&&console.log("[SDK] Resources destroyed")},d.getService=function(e){return this.serviceManager.get(e)},d.isConnected=function(){return this.config.debug&&console.log("[SDK] Connection status: "+(this.internalState.isConnected?"connected":"disconnected")),this.internalState.isConnected},d.isLoggedIn=function(){return this.config.debug&&console.log("[SDK] Login status: "+(this.internalState.isLoggedIn?"logged in":"not logged in")),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.log("%c─── 📦 Request Payload ───────────────────────────────","color: #999; font-style: italic;"),console.log("%c%s","color: #333; background: #f8f8f8; padding: 8px; border-radius: 4px; border-left: 4px solid #7CAEFF; font-family: monospace; line-height: 1.5;",JSON.stringify(e.data,null,2)),console.log("%c─────────────────────────────────────────────────────","color: #999;"))},d.handlePongMessage=function(e){e&&e.timestamp&&(this.config.debug&&console.log("[SDK] Received pong message with timestamp:",e.timestamp),this.internalState.isConnected=!0,this.internalState.lastActivity=Date.now())},d.isProtobufFormat=function(e){return this.config.useProtobuf||"string"==typeof e&&this.isBase64String(e)||e instanceof Uint8Array},d.isBase64String=function(e){try{return btoa(atob(e))===e}catch(e){return!1}},d.handleProtobufMessage=function(t){this.emit(e.CbEvents.OnReceiveProtoMessage,t)},d.initializeConversationCache=function(){try{var t=this,n=w(function(){return Promise.resolve(t.conversation.getConversations({pageNo:1,pageSize:20})).then(function(n){var o=n.code,r=n.data;if(t.config.debug&&console.log("initializeConversationCache Conversation 获取第一页会话数据",o,r),0===o&&r&&r.records){t.cacheManager.setConversations(r.records),console.log("initializeConversationCache Conversation 获取第一页会话数据 this.cacheManager.getConversations()",t.cacheManager.getConversations());var s=t.cacheManager.getConversations();t.emit(e.CbEvents.OnConversationListUpdated,s),t.config.debug&&console.log("Conversation cache initialized with",r.records.length,"conversations")}})},function(e){console.error("Failed to initialize conversation cache:",e)});return Promise.resolve(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,this.config.username)){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:"contact",get:function(){return this.getService(e.ServiceName.CONTACT)}},{key:"username",get:function(){return this.config.username}},{key:"getConfig",get:function(){return this.config}},{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}(C)});
@@ -5,17 +5,20 @@ import { MessageService } from '../api/message';
5
5
  import { ConversationService } from '../api/conversation';
6
6
  import { GroupService } from '../api/group';
7
7
  import { UserService } from '../api/user';
8
+ import { ContactService } from '../api/contact';
8
9
  export type ServiceTypes = {
9
10
  user: UserService;
10
11
  message: MessageService;
11
12
  conversation: ConversationService;
12
13
  group: GroupService;
14
+ contact: ContactService;
13
15
  };
14
16
  export declare enum ServiceName {
15
17
  MESSAGE = "message",
16
18
  CONVERSATION = "conversation",
17
19
  GROUP = "group",
18
- USER = "user"
20
+ USER = "user",
21
+ CONTACT = "contact"
19
22
  }
20
23
  export interface Request {
21
24
  url: RequestApi;
@@ -253,4 +256,80 @@ export interface MuteMembersParams {
253
256
  /** 更新的权限列表 */
254
257
  usernames: string[];
255
258
  }
259
+ /**
260
+ * 联系人类型枚举
261
+ * 0: 查询会员 (客服对象:groupType 为 3 且 tag为 会员的)
262
+ * 1: 查询同事 (私聊对象 groupType为0)
263
+ * 2: 查询群聊 (groupType为 1和2)
264
+ */
265
+ export declare enum ContactType {
266
+ MEMBER = 0,// 会员
267
+ COLLEAGUE = 1,// 同事
268
+ GROUP = 2
269
+ }
270
+ /**
271
+ * 联系人信息
272
+ */
273
+ export interface ContactVO {
274
+ /** 群id */
275
+ groupId: number;
276
+ /** 群名称 */
277
+ name: string;
278
+ /** 聊天群类型: 0:一对一私聊 ,1:群聊,2:客服聊天 */
279
+ groupType: number;
280
+ /** 群头像 */
281
+ avatar: string;
282
+ /** 如果是私聊或者客服聊天对象id */
283
+ targetChatId?: number;
284
+ /** 聊天ID */
285
+ chatId?: number;
286
+ }
287
+ /**
288
+ * 联系人标签Bean
289
+ */
290
+ export interface ContactTagBean {
291
+ /** 标签名 */
292
+ tag: string;
293
+ /** 联系人列表 */
294
+ contactVOList: ContactVO[];
295
+ }
296
+ /**
297
+ * 联系人列表模型
298
+ */
299
+ export interface ContactListModel {
300
+ /** 联系人类型 */
301
+ concatType: ContactType;
302
+ /** 联系人标签列表 */
303
+ contactTagBeans: ContactTagBean[];
304
+ }
305
+ /**
306
+ * 编辑联系人标签DTO
307
+ */
308
+ export interface EditeContactTagDTO {
309
+ /** 联系人标签映射 */
310
+ contactTags: Map<ContactType, ContactTag[]>;
311
+ }
312
+ /**
313
+ * 联系人标签
314
+ */
315
+ export interface ContactTag {
316
+ /** 联系人类型 */
317
+ contactType: ContactType;
318
+ /** 分组名称 */
319
+ tag: string;
320
+ }
321
+ /**
322
+ * 分配联系人标签DTO
323
+ */
324
+ export interface AllocationContactTagDTO {
325
+ /** 联系人类型 */
326
+ contactType: ContactType;
327
+ /** 分组名称 */
328
+ tag: string;
329
+ /**
330
+ * contactType 为2(群聊):这里存的是groupId
331
+ * 否则存的是联系人的id
332
+ */
333
+ targetIds: number[];
334
+ }
256
335
  export {};
@@ -7,6 +7,7 @@ interface ConnectionClientOptions {
7
7
  retryInterval?: number;
8
8
  connectTimeout?: number;
9
9
  maxRetries?: number;
10
+ debug?: boolean;
10
11
  onMessage?: (response: SseData) => void;
11
12
  onReconnectSuccess?: () => void;
12
13
  onConnectionClosed?: (isAuthError: boolean) => void;
@@ -5,6 +5,7 @@ interface SseOptions {
5
5
  retryInterval?: number;
6
6
  connectTimeout?: number;
7
7
  maxRetries?: number;
8
+ debug?: boolean;
8
9
  onMessage?: (response: SseData) => void;
9
10
  onReconnectSuccess?: () => void;
10
11
  onConnectionClosed?: (isAuthError: boolean) => void;
@@ -27,7 +28,12 @@ declare class SseClient {
27
28
  private onConnectionClosedCallback?;
28
29
  private onMaxRetriesReachedCallback?;
29
30
  private onConnectionChangeCallback?;
31
+ private isDestroyed;
32
+ private debug;
30
33
  constructor(options: SseOptions);
34
+ private debugLog;
35
+ private debugError;
36
+ private debugWarn;
31
37
  private removeAllEventListeners;
32
38
  private _openHandler;
33
39
  private _errorHandler;
@@ -5,6 +5,7 @@ interface WebSocketOptions {
5
5
  retryInterval?: number;
6
6
  connectTimeout?: number;
7
7
  maxRetries?: number;
8
+ debug?: boolean;
8
9
  onMessage?: (response: SseData) => void;
9
10
  onReconnectSuccess?: () => void;
10
11
  onConnectionClosed?: (isAuthError: boolean) => void;
@@ -28,7 +29,12 @@ declare class WebSocketClient {
28
29
  private onMaxRetriesReachedCallback?;
29
30
  private onConnectionChangeCallback?;
30
31
  private connectTimeoutRef;
32
+ private isDestroyed;
33
+ private debug;
31
34
  constructor(options: WebSocketOptions);
35
+ private debugLog;
36
+ private debugError;
37
+ private debugWarn;
32
38
  subscribe(type: string, handler: Function): void;
33
39
  private addMessageHandler;
34
40
  connect(): Promise<string>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sim-sdk-web",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "description": "Sim SDK for Web - Support SSE and WebSocket protocols",
5
5
  "source": "src/index.ts",
6
6
  "main": "lib/index.js",