sim-sdk-web 1.2.30 → 1.3.0

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"),require("protobufjs")):"function"==typeof define&&define.amd?define(["exports","event-source-polyfill","protobufjs"],t):t((e||self).simSdkWeb={},e.eventSourcePolyfill,e.protobufjs)}(this,function(e,t,n){function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,s,i,a,c,u=/*#__PURE__*/o(n);function d(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 l(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(){return g=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},g.apply(null,arguments)}function h(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}function p(e,t){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},p(e,t)}function v(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+""}e.ServiceName=void 0,(r=e.ServiceName||(e.ServiceName={})).MESSAGE="message",r.CONVERSATION="conversation",r.GROUP="group",r.USER="user",r.CONTACT="contact",e.ContactType=void 0,(s=e.ContactType||(e.ContactType={}))[s.MEMBER=0]="MEMBER",s[s.COLLEAGUE=1]="COLLEAGUE",s[s.GROUP=2]="GROUP",e.ErrorCode=void 0,(i=e.ErrorCode||(e.ErrorCode={}))[i.UnknownError=10005]="UnknownError",e.RequestApi=void 0,(a=e.RequestApi||(e.RequestApi={})).Login="/chat/member/login",a.Logout="/chat/member/logout",a.GetChatMember="/chat/member/getChatMember",a.GetGroupInfo="/chat/group/groupInfo",a.GetGroupMembers="/chat/group/groupMembers",a.JoinGroup="/chat/group/joinGroup",a.LeftGroup="/chat/group/leftGroup",a.AnonymousJoinGroup="/chat/group/anonymousJoinGroup",a.AnonymousLeftGroup="/chat/group/anonymousLeftGroup",a.CheckGroupBlock="/chat/group/checkBlock",a.GetMyGroupPermission="/chat/group/permission/getPermission",a.GetGroupPermission="/chat/group/permission/groupPermission",a.GetGroupMember="/chat/group/groupMember",a.GetGroupMemberPermission="/chat/group/permission/groupMemberPermission",a.UpdateGroupPermission="/chat/group/permission/updateGroupPermission",a.UpdateGroupMemberPermission="/chat/group/permission/updateGroupMemberPermission",a.editeGroupName="/chat/group/operation/editeGroupName",a.editeNotification="/chat/group/operation/editeNotification",a.editeGroupCustomer="/chat/group/operation/editeGroupCustomer",a.addAdmin="/chat/group/operation/addAdmin",a.deleteAdmin="/chat/group/operation/deleteAdmin",a.pin="/chat/group/operation/pin",a.muteGroup="/chat/group/operation/muteGroup",a.muteMember="/chat/group/operation/muteMember",a.kickGroupMember="/chat/group/operation/kickGroupMember",a.muteMembers="/chat/group/operation/muteMembers",a.DissolveGroup="/chat/group/dissolve",a.GetAllConversationList="/chat/conversation/conversationList",a.GetConversationByQueryTypes="/chat/conversation/conversationListByQueryTypes",a.GetChannels="/chat/conversation/getChannels",a.MarkConversationMessageAsRead="/chat/conversation/lastRead",a.ConversationLastDelete="/chat/conversation/lastDelete",a.PinConversation="/chat/conversation/pinChat",a.MuteConversation="/chat/conversation/mute",a.UpdateLatestMessage="/chat/group/updateLatestMessage",a.GetLatestGroupChats="/chat/group/latestGroupChats",a.CheckLatestMessages="/chat/group/checkLatestMessages",a.CreateTextMessage="/chat/message/push",a.PushMessageToMember="/chat/message/push2Member",a.PushPrivateMessage="/chat/message/pushPrivateMessage",a.PushLiveMessage="/chat/message/liveGroupPush",a.GetHistoryMessageList="/chat/message/pull",a.GetLiveMessageList="/chat/message/liveGroupPull",a.GetAnonymousLiveMessageList="/chat/message/anonymousLiveGroupPull",a.PrePushCustomerMessage="/chat/message/prePushCustomerMessage",a.UploadFile="/chat/img/upload",a.UploadCredential="/chat/img/uploadCredential",a.GetContactByType="/chat/contact/contactByType",a.EditContactTag="/chat/contact/editeContactTag",a.GetContactTag="/chat/contact/getContactTag",a.AllocationContactTag="/chat/contact/allocationContactTag",a.AddGroupMembers="/chat/group/operation/addGroupMembers",a.GetFileByType="/chat/message/getFileByType",a.PinChat="/chat/member/pinChat",e.CbEvents=void 0,(c=e.CbEvents||(e.CbEvents={})).OnConnected="OnConnected",c.OnDisconnected="OnDisconnected",c.onMaxRetriesReached="onMaxRetriesReached",c.OnReconnecting="OnReconnecting",c.OnReconnected="OnReconnected",c.OnReconnectFailed="OnReconnectFailed",c.OnNetworkChange="OnNetworkChange",c.OnReceiveMessage="OnReceiveMessage",c.OnReceiveProtoMessage="OnReceiveProtoMessage",c.OnReceiveMessages="OnReceiveMessages",c.OnReceiveSubscribeMessage="OnReceiveSubscribeMessage",c.OnReceiveSystemMessage="OnReceiveSystemMessage",c.OnReceivePreMessage="OnReceivePreMessage",c.OnMessagesListLoaded="OnMessagesListLoaded",c.OnActiveConversationSync="OnActiveConversationSync",c.OnMessageSent="OnMessageSent",c.OnMessageFailed="OnMessageFailed",c.OnMessageRevoked="OnMessageRevoked",c.OnMessageDeleted="OnMessageDeleted",c.OnMessageRead="OnMessageRead",c.OnTypingStatusUpdate="OnTypingStatusUpdate",c.OnUserStatusChange="OnUserStatusChange",c.OnKickedOffline="OnKickedOffline",c.OnUserTokenInvalid="OnUserTokenInvalid",c.OnUserTokenExpired="OnUserTokenExpired",c.OnForceOffline="OnForceOffline",c.OnUserInfoUpdated="OnUserInfoUpdated",c.OnGroupCreated="OnGroupCreated",c.OnGroupInfoUpdated="OnGroupInfoUpdated",c.OnGroupDissolved="OnGroupDissolved",c.OnJoinGroup="OnJoinGroup",c.OnLeaveGroup="OnLeaveGroup",c.OnGroupMemberJoined="OnGroupMemberJoined",c.OnGroupMemberLeft="OnGroupMemberLeft",c.OnGroupMemberKicked="OnGroupMemberKicked",c.OnGroupOwnerChanged="OnGroupOwnerChanged",c.OnGroupAdminAdded="OnGroupAdminAdded",c.OnGroupAdminRemoved="OnGroupAdminRemoved",c.OnGroupMemberMuted="OnGroupMemberMuted",c.OnGroupMemberUnmuted="OnGroupMemberUnmuted",c.OnGroupAllMemberMuted="OnGroupAllMemberMuted",c.OnGroupAllMemberUnmuted="OnGroupAllMemberUnmuted",c.OnConversationCreated="OnConversationCreated",c.OnConversationDeleted="OnConversationDeleted",c.OnConversationListUpdated="OnConversationListUpdated",c.OnConversationUpdated="OnConversationUpdated",c.OnUnreadCountChanged="OnUnreadCountChanged",c.OnConversationPinned="OnConversationPinned",c.OnConversationUnpinned="OnConversationUnpinned",c.OnConversationMuted="OnConversationMuted",c.OnConversationUnmuted="OnConversationUnmuted",c.OnPongConn="OnPongConn",c.OnPongReConn="OnPongReConn",c.OnPongIdle="OnPongIdle",c.OnError="OnError",c.OnWarning="OnWarning",c.OnLog="OnLog";var m,f,y,C,T,E,S,b,P,M=/*#__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,(m=e.GroupType||(e.GroupType={}))[m.PrivateChat=0]="PrivateChat",m[m.PrivateGroup=1]="PrivateGroup",m[m.PublicGroup=2]="PublicGroup",m[m.CustomerService=3]="CustomerService",m[m.LiveGroup=4]="LiveGroup",m[m.ChanneRoom=5]="ChanneRoom",e.MessageType=void 0,(f=e.MessageType||(e.MessageType={}))[f.TEXT=0]="TEXT",f[f.IMAGE=1]="IMAGE",f[f.FILE=2]="FILE",f[f.AUDIO=3]="AUDIO",f[f.VIDEO=4]="VIDEO",f[f.LINK=5]="LINK",f[f.GIF=6]="GIF",f[f.OPTION=7]="OPTION",f[f.EMOJI=8]="EMOJI",f[f.CUSTOM=100]="CUSTOM",e.SseEventType=void 0,(y=e.SseEventType||(e.SseEventType={}))[y.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",y[y.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",y[y.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",y[y.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",y[y.EVENT_SYSTEM_MESSAGE_PUSH=4]="EVENT_SYSTEM_MESSAGE_PUSH",y[y.EVENT_LIVE_SYSTEM_MESSAGE_PUSH=5]="EVENT_LIVE_SYSTEM_MESSAGE_PUSH",y[y.EVENT_PRE_MESSAGE_PUSH=6]="EVENT_PRE_MESSAGE_PUSH",y[y.EVENT_SUBSCRIBE_MESSAGE_PUSH=7]="EVENT_SUBSCRIBE_MESSAGE_PUSH",e.GroupMemberEventType=void 0,(C=e.GroupMemberEventType||(e.GroupMemberEventType={}))[C.JOIN=0]="JOIN",C[C.LEFT=1]="LEFT",C[C.LAST_READ_UPDATE=2]="LAST_READ_UPDATE",C[C.PERMISSION_UPDATE=3]="PERMISSION_UPDATE",C[C.IDENTITY_UPDATE=4]="IDENTITY_UPDATE",C[C.PING_UPDATE=5]="PING_UPDATE",e.GroupEventType=void 0,(T=e.GroupEventType||(e.GroupEventType={}))[T.JOIN=0]="JOIN",T[T.LEFT=1]="LEFT",T[T.INVITE_JOIN=2]="INVITE_JOIN",T[T.CREATE_GROUP=3]="CREATE_GROUP",T[T.GROUP_DISSOLVE=4]="GROUP_DISSOLVE",T[T.PERMISSION_UPDATE=5]="PERMISSION_UPDATE",T[T.INFO_EDIT_NAME_UPDATE=6]="INFO_EDIT_NAME_UPDATE",T[T.INFO_NOTIFICATION_UPDATE=7]="INFO_NOTIFICATION_UPDATE",T[T.INFO_EDIT_CUSTOM_UPDATE=8]="INFO_EDIT_CUSTOM_UPDATE",T[T.ADD_ADMIN=9]="ADD_ADMIN",T[T.INFO_EDIT_ALL_UPDATE=10]="INFO_EDIT_ALL_UPDATE",T[T.PING_UPDATE=11]="PING_UPDATE",T[T.UNPING_UPDATE=12]="UNPING_UPDATE",T[T.KICK_UPDATE=13]="KICK_UPDATE",T[T.DELETE_ADMIN=14]="DELETE_ADMIN",T[T.GROUP_MEMBER_EVENT_TYPE_PERMISSION_UPDATE=15]="GROUP_MEMBER_EVENT_TYPE_PERMISSION_UPDATE",T[T.GROUP_MEMBER_EVENT_TYPE_SUPPORT_UPDATE=16]="GROUP_MEMBER_EVENT_TYPE_SUPPORT_UPDATE",e.SystemMessageType=void 0,(E=e.SystemMessageType||(e.SystemMessageType={}))[E.GroupMemberPermissionChange=3]="GroupMemberPermissionChange",E[E.GroupPermissionChange=4]="GroupPermissionChange",e.ConnectionProtocol=void 0,(S=e.ConnectionProtocol||(e.ConnectionProtocol={})).SSE="sse",S.WEBSOCKET="websocket",e.ConversationQueryType=void 0,(b=e.ConversationQueryType||(e.ConversationQueryType={}))[b.NonCustomer=0]="NonCustomer",b[b.CustomerService=3]="CustomerService",b[b.PrivateChat=4]="PrivateChat",b[b.GroupChats=5]="GroupChats",b[b.ConnectedServiceList=6]="ConnectedServiceList",b[b.ChannelList=7]="ChannelList",e.ConnectionCloseReason=void 0,(P=e.ConnectionCloseReason||(e.ConnectionCloseReason={})).ServerClosed="ServerClosed",P.AuthError="AuthError",P.Abnormal="Abnormal";var O="undefined"!=typeof uni,G="undefined"!=typeof window;function A(){return"undefined"!=typeof uni&&"function"==typeof uni.getStorageSync&&"function"==typeof uni.setStorageSync&&"function"==typeof uni.removeStorageSync}var R=function(e){if(A())try{var t=uni.getStorageSync(e);return null==t||""===t?null:"string"==typeof t?t:JSON.stringify(t)}catch(e){return null}return"undefined"!=typeof localStorage?localStorage.getItem(e):null},I=function(e,t){if(A())try{uni.setStorageSync(e,t)}catch(t){console.error("[persistenceStorage] setItem",e,t)}else"undefined"!=typeof localStorage&&localStorage.setItem(e,t)},k=function(e){if(A())try{uni.removeStorageSync(e)}catch(e){}else"undefined"!=typeof localStorage&&localStorage.removeItem(e)},N=function(){if(A()&&"function"==typeof uni.getStorageInfoSync)try{var e,t=null==(e=uni.getStorageInfoSync())?void 0:e.keys;return t?[].concat(t):[]}catch(e){return[]}return"undefined"!=typeof localStorage?Object.keys(localStorage):[]},_="simsdk_",U={CONVERSATIONS:_+"conversations",GROUP_MESSAGES:_+"group_messages",USER_INFO:_+"user_info",META_INFO:_+"meta"},L={MAX_CONVERSATIONS:1e3,MAX_GROUP_MESSAGES:2e3,STORAGE_CHUNK_SIZE:512e3,CACHE_TTL:6048e5,EXPIRY_CHECK_INTERVAL:18e5},w=/*#__PURE__*/function(){function t(e){var t=void 0===e?{}:e,n=t.persistEnabled,o=void 0===n||n,r=t.debug,s=void 0!==r&&r,i=t.config,a=void 0===i?{}:i;this.conversationCacheByQueryType={},this.conversationIdToQueryType={},this.groupIdToQueryTypes={},this.groupMessageCache={},this.accessTimeRecord={},this.pinnedConversationOrder=new Map,this.userInfo={},this.currentUsername=void 0,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=s,this.config=g({},L,a)}var n=t.prototype;return n.setDebug=function(e){this.debug=e},n.initialize=function(e){var t=this;this.currentUsername&&this.currentUsername!==e&&(this.debug&&console.log("User switched from "+this.currentUsername+" to "+e+", clearing cache"),this.clear()),this.currentUsername=e,this.userInfo.username=e,this.persistEnabled&&this.loadFromStorage(),this.setupCleanupInterval(),this.debug&&(console.log("Cache initialized for user:",e),console.log("Loaded conversations by queryType:",Object.keys(this.conversationCacheByQueryType).reduce(function(e,n){return e+t.conversationCacheByQueryType[n].length},0)),console.log("Loaded group messages for groups:",Object.keys(this.groupMessageCache).length))},n.getQueryTypeKey=function(e){return String(null!=e?e:3)},n.getConversationBucket=function(e){var t=this.getQueryTypeKey(e);return this.conversationCacheByQueryType[t]||(this.conversationCacheByQueryType[t]=[]),this.conversationCacheByQueryType[t]},n.getQueryTypesForGroup=function(e){return this.groupIdToQueryTypes[e]||new Set},n.syncConversationPrimaryQueryType=function(e){var t=this.getQueryTypesForGroup(e);if(0!==t.size){var n=Math.min.apply(Math,Array.from(t));Number.isFinite(n)?this.conversationIdToQueryType[e]=n:delete this.conversationIdToQueryType[e]}else delete this.conversationIdToQueryType[e]},n.registerGroupQueryType=function(e,t){var n=Number(t);Number.isFinite(n)?(this.groupIdToQueryTypes[e]||(this.groupIdToQueryTypes[e]=new Set),this.groupIdToQueryTypes[e].add(n),this.syncConversationPrimaryQueryType(e)):this.debug&&console.warn("[CacheManager] registerGroupQueryType: 忽略非法 queryType",{groupId:e,qt:t})},n.unregisterGroupQueryType=function(e,t){var n=Number(t);if(Number.isFinite(n)){var o=this.groupIdToQueryTypes[e];o&&(o.delete(n),0===o.size&&delete this.groupIdToQueryTypes[e],this.syncConversationPrimaryQueryType(e))}},n.rebuildGroupIdToQueryTypesFromBuckets=function(){var e=this;this.groupIdToQueryTypes={};for(var t=0,n=Object.keys(this.conversationCacheByQueryType);t<n.length;t++){var o=n[t],r=Number(o);if(!Number.isNaN(r)){var s=this.conversationCacheByQueryType[o];if(s)for(var i,a=l(s);!(i=a()).done;){var c=i.value.groupId;this.groupIdToQueryTypes[c]||(this.groupIdToQueryTypes[c]=new Set),this.groupIdToQueryTypes[c].add(r)}}}Object.keys(this.groupIdToQueryTypes).forEach(function(t){e.syncConversationPrimaryQueryType(Number(t))})},n.clear=function(){this.conversationCacheByQueryType={},this.conversationIdToQueryType={},this.groupIdToQueryTypes={},this.groupMessageCache={},this.accessTimeRecord={},this.pinnedConversationOrder.clear(),this.persistEnabled&&this.clearCurrentUserStorage(),this.debug&&console.log("Cache cleared")},n.clearCurrentUserStorage=function(){try{if(!this.currentUsername)return void this.clearStorage();var e=this.getUserStorageKey(U.CONVERSATIONS);N().filter(function(t){return t===e||t.startsWith(e+".")}).forEach(function(e){return k(e)});var t=this.getUserStorageKey(U.USER_INFO);k(t);for(var n,o=l(N().filter(function(e){return e.startsWith(U.GROUP_MESSAGES+".")}));!(n=o()).done;)k(n.value)}catch(e){console.error("Failed to clear current user storage:",e)}},n.getConversations=function(e){var t=this.getConversationBucket(e);return[].concat(t)},n.getQueryTypesWithData=function(){var e=this;return new Set(Object.keys(this.conversationCacheByQueryType).filter(function(t){var n,o;return(null!=(n=null==(o=e.conversationCacheByQueryType[t])?void 0:o.length)?n:0)>0}).map(function(e){return Number(e)}))},n.getQueryTypesContainingConversationInBuckets=function(e){for(var t=[],n=0,o=Object.keys(this.conversationCacheByQueryType);n<o.length;n++){var r,s=o[n],i=Number(s);Number.isNaN(i)||null!=(r=this.conversationCacheByQueryType[s])&&r.some(function(t){return t.groupId===e})&&t.push(i)}return t},n.clearConversationUnread=function(e){for(var t,n=l(this.getQueryTypesForGroup(e));!(t=n()).done;){var o=t.value,r=this.getConversationBucket(o).find(function(t){return t.groupId===e});r&&(r.unreadCount=0,this.persistEnabled&&this.saveConversationsToStorageByQueryType(o))}},n.updateConversationLastRead=function(e,t){for(var n,o=l(this.getQueryTypesForGroup(e));!(n=o()).done;){var r=n.value,s=this.getConversationBucket(r).find(function(t){return t.groupId===e});s&&(s.lastRead=t,s.unreadCount=0,this.persistEnabled&&this.saveConversationsToStorageByQueryType(r))}},n.clearAllConversationUnread=function(){var e=this;this.getQueryTypesWithData().forEach(function(t){e.conversationCacheByQueryType[t].forEach(function(e){e.unreadCount>0&&(e.unreadCount=0)}),e.persistEnabled&&e.saveConversationsToStorageByQueryType(t)})},n.getActiveConversation=function(){return this.activeConversation},n.setConversations=function(e,t,n){var o,r=this;if(void 0===t&&(t=!1),null==n||Number.isNaN(Number(n)))console.warn("[CacheManager] setConversations: queryType is required");else{var s,i=null!=(o=this.conversationCacheByQueryType[n])?o:[],a=new Set(i.map(function(e){return e.groupId}));s=e.length>this.config.MAX_CONVERSATIONS?e.slice(0,this.config.MAX_CONVERSATIONS):[].concat(e);var c=new Set(s.map(function(e){return e.groupId}));if(a.forEach(function(e){c.has(e)||r.unregisterGroupQueryType(e,n)}),c.forEach(function(e){r.registerGroupQueryType(e,n)}),this.conversationCacheByQueryType[n]=s,t)this.pinnedConversationOrder.clear(),s.forEach(function(e,t){e.pin&&r.pinnedConversationOrder.set(e.groupId,t)});else{var u=-1;this.pinnedConversationOrder.forEach(function(e){e>u&&(u=e)}),s.forEach(function(e,t){var n=e.groupId;e.pin&&!r.pinnedConversationOrder.has(n)&&r.pinnedConversationOrder.set(n,u+t+1)})}this.sortConversations(n),this.persistEnabled&&this.saveConversationsToStorageByQueryType(n)}},n.updateConversation=function(e){var t=e.groupId;if(null==t||Number.isNaN(Number(t)))console.warn("[CacheManager] updateConversation: missing valid groupId");else{var n=this.getQueryTypesForGroup(t);if(0!==n.size)for(var o,r=l(n);!(o=r()).done;){var s=o.value,i=this.getConversationBucket(s),a=i.findIndex(function(e){return e.groupId===t});a>=0?i[a]=g({},e):(i.push(g({},e)),i.length>this.config.MAX_CONVERSATIONS&&this.enforceConversationLimit(s)),this.sortConversations(s),this.persistEnabled&&this.saveConversationsToStorageByQueryType(s)}else console.warn("[CacheManager] updateConversation: no queryType list for groupId",t,"(mapping comes from getConversations; pull the list for the needed queryType first)")}},n.updateConversationPinStatus=function(e,t){for(var n,o=!1,r=!1,s=l(this.getQueryTypesForGroup(e));!(n=s()).done;){var i=n.value,a=this.getConversationBucket(i),c=a.findIndex(function(t){return t.groupId===e});if(-1!==c){o=!0;var u=a[c];r=r||!0===u.pin,u.pin=t,this.sortConversations(i),this.persistEnabled&&this.saveConversationsToStorageByQueryType(i)}}if(o)if(t&&!r){var d=-1;this.pinnedConversationOrder.forEach(function(e){e>d&&(d=e)}),this.pinnedConversationOrder.set(e,d+1)}else!t&&r&&this.pinnedConversationOrder.delete(e)},n.getQueryTypeForConversation=function(e){if(void 0!==this.conversationIdToQueryType[e])return this.conversationIdToQueryType[e];for(var t=0,n=Object.keys(this.conversationCacheByQueryType);t<n.length;t++){var o=n[t],r=this.conversationCacheByQueryType[o];if(null!=r&&r.some(function(t){return t.groupId===e}))return Number(o)}},n.updateConversationMuteStatus=function(e,t){for(var n,o=l(this.getQueryTypesForGroup(e));!(n=o()).done;){var r=n.value,s=this.getConversationBucket(r),i=s.findIndex(function(t){return t.groupId===e});-1!==i&&(s[i].mute=t,this.sortConversations(r),this.persistEnabled&&this.saveConversationsToStorageByQueryType(r))}},n.updateConversationSupportInfo=function(e,t,n){if(null==e||Number.isNaN(Number(e)))return[];var o=this.getQueryTypesForGroup(e);if(0===o.size){o=new Set;for(var r=0,s=Object.keys(this.conversationCacheByQueryType);r<s.length;r++){var i,a=s[r],c=Number(a);Number.isNaN(c)||null!=(i=this.conversationCacheByQueryType[a])&&i.some(function(t){return t.groupId===e})&&o.add(c)}}for(var u,d=[],g=l(o);!(u=g()).done;){var h=u.value,p=this.getConversationBucket(h),v=p.findIndex(function(t){return t.groupId===e});-1!==v&&(p[v].supportId=t,p[v].supportNick=n,d.push(h),this.sortConversations(h),this.persistEnabled&&this.saveConversationsToStorageByQueryType(h))}return d},n.updateConversationWithMessage=function(t,n){var o;if(!t.groupId)return{updated:!1};var r=t.groupId,s=e.ConversationQueryType.ConnectedServiceList,i=e.ConversationQueryType.CustomerService,a=this.getConversationBucket(s),c=this.getConversationBucket(i),u=new Set(this.getQueryTypesForGroup(r)),d=a.some(function(e){return e.groupId===r}),h=c.some(function(e){return e.groupId===r});if(d&&!h&&u.add(s),0===u.size)return{updated:!1};for(var p,v=!1,m=(null==(o=this.activeConversation)?void 0:o.groupId)===r,f=l(u);!(p=f()).done;){var y,C=p.value,T=this.getConversationBucket(C),E=T.findIndex(function(e){return e.groupId===r});if(-1!==E){var S=T[E],b=(null==(y=S.latest)?void 0:y.msgId)||0;m?(S.unreadCount=0,S.lastRead=t.msgId):n!==t.username&&(S.unreadCount+=t.msgId>b?t.msgId-b:1),S.latest=t,this.sortConversations(C),this.persistEnabled&&this.saveConversationsToStorageByQueryType(C),v=!0}}var P=a.findIndex(function(e){return e.groupId===r}),M=c.findIndex(function(e){return e.groupId===r});return P>=0&&-1===M&&(c.push(g({},a[P])),this.registerGroupQueryType(r,i),c.length>this.config.MAX_CONVERSATIONS&&this.enforceConversationLimit(i),this.sortConversations(i),this.persistEnabled&&this.saveConversationsToStorageByQueryType(i),v=!0,u.add(i)),v?{updated:!0,queryTypes:u}:{updated:!1}},n.getGroupMessages=function(e){return this.recordAccess(e),!this.groupMessageCache[e]&&this.persistEnabled&&this.loadGroupMessagesFromStorage(e),this.groupMessageCache[e]||[]},n.addGroupMessage=function(e){if(e.groupId){this.recordAccess(e.groupId),this.groupMessageCache[e.groupId]||(this.groupMessageCache[e.groupId]=[]);var 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)}},n.addGroupMessages=function(e){for(var t,n=this,o={},r=l(e);!(t=r()).done;){var s=t.value;s.groupId&&(o[s.groupId]||(o[s.groupId]=[]),o[s.groupId].push(s))}for(var i=0,a=Object.entries(o);i<a.length;i++){var c=a[i],u=c[0],d=c[1];this.recordAccess(Number(u)),this.groupMessageCache[u]||(this.groupMessageCache[u]=[]);for(var g,h=function(){var e=g.value,t=n.groupMessageCache[u].findIndex(function(t){return t.msgId===e.msgId});t>=0?n.groupMessageCache[u][t]=e:n.groupMessageCache[u].push(e)},p=l(d);!(g=p()).done;)h();this.sortGroupMessages(Number(u)),this.limitGroupMessageCache(Number(u)),this.persistEnabled&&this.saveGroupMessagesToStorage(Number(u))}this.enforceMemoryLimits()},n.sortConversations=function(e){var t=this;(void 0!==e?[this.getQueryTypeKey(e)]:Object.keys(this.conversationCacheByQueryType)).forEach(function(e){var n=t.conversationCacheByQueryType[e];n&&n.sort(function(e,n){var o,r,s,i,a=!0===e.pin,c=!0===n.pin;if(a&&!c)return-1;if(!a&&c)return 1;if(a&&c)return(null!=(s=t.pinnedConversationOrder.get(e.groupId))?s:0)-(null!=(i=t.pinnedConversationOrder.get(n.groupId))?i:0);var u=(null==(o=e.latest)?void 0:o.createTime)||0;return((null==(r=n.latest)?void 0:r.createTime)||0)-u})})},n.sortGroupMessages=function(e){this.groupMessageCache[e]&&this.groupMessageCache[e].sort(function(e,t){return(t.createTime||0)-(e.createTime||0)})},n.limitGroupMessageCache=function(e){this.groupMessageCache[e]&&this.groupMessageCache[e].length>this.config.MAX_GROUP_MESSAGES&&(this.groupMessageCache[e]=this.groupMessageCache[e].slice(0,this.config.MAX_GROUP_MESSAGES))},n.recordAccess=function(e){this.accessTimeRecord[e]=Date.now()},n.enforceConversationLimit=function(e){var t=this;if(!(this.getConversationBucket(e).length<=this.config.MAX_CONVERSATIONS)){this.sortConversations(e);var n=this.getQueryTypeKey(e),o=this.conversationCacheByQueryType[n],r=o.slice(0,this.config.MAX_CONVERSATIONS),s=new Set(r.map(function(e){return e.groupId}));o.forEach(function(n){s.has(n.groupId)||t.unregisterGroupQueryType(n.groupId,e)}),this.conversationCacheByQueryType[n]=r}},n.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))}}},n.setupCleanupInterval=function(){var e=this;this.cleanupTimer&&clearInterval(this.cleanupTimer),this.cleanupTimer=window.setInterval(function(){e.cleanupExpiredData()},this.config.EXPIRY_CHECK_INTERVAL)},n.cleanupExpiredData=function(){var e=Date.now();this.metaInfo.lastCleanup=e,this.debug&&console.log("Running cache cleanup");for(var 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()},n.getUserStorageKey=function(e){return this.currentUsername?e+"_"+this.currentUsername:e},n.loadFromStorage=function(){var e=this;try{var t=R(U.META_INFO);t&&(this.metaInfo=JSON.parse(t));var n=this.getUserStorageKey(U.CONVERSATIONS);this.conversationCacheByQueryType={},this.conversationIdToQueryType={},this.groupIdToQueryTypes={};var o=R(n);if(o)try{var r=JSON.parse(o);Array.isArray(r)&&(this.conversationCacheByQueryType[String(3)]=r)}catch(e){this.conversationCacheByQueryType[String(3)]=[]}var s=n+".";N().forEach(function(t){if(t.startsWith(s)){var n=t.slice(s.length),o=Number(n);if(!Number.isNaN(o)){var r=R(t);if(r)try{var i=JSON.parse(r);Array.isArray(i)&&(e.conversationCacheByQueryType[String(o)]=i)}catch(t){e.conversationCacheByQueryType[String(o)]=[]}}}}),0===Object.keys(this.conversationCacheByQueryType).length&&(this.conversationCacheByQueryType[String(3)]=[]),this.rebuildGroupIdToQueryTypesFromBuckets();var i=N().filter(function(e){return e.startsWith(U.GROUP_MESSAGES+".")});if(i.forEach(function(t){var n=t.split(".")[1];n&&!isNaN(Number(n))&&(e.accessTimeRecord[n]=0)}),this.debug){var a=Object.keys(this.conversationCacheByQueryType).map(function(t){var n,o;return{queryType:t,count:null!=(n=null==(o=e.conversationCacheByQueryType[t])?void 0:o.length)?n:0}});console.log("[CacheManager][persist] loadConversations",{user:this.currentUsername,prefix:n,legacyFlatKey:!!o,buckets:a,groupMessageStorageKeys:i.length})}var c=this.getUserStorageKey(U.USER_INFO),u=R(c);this.userInfo=u?JSON.parse(u):{username:this.currentUsername}}catch(e){console.error("Failed to load cache from storage:",e),this.clearStorage()}},n.loadGroupMessagesFromStorage=function(e){try{for(var t=[],n=0,o=!0;o;){var r=R(U.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)}},n.saveConversationsToStorageByQueryType=function(e){try{var t,n=this.getUserStorageKey(U.CONVERSATIONS)+"."+e;I(n,JSON.stringify(null!=(t=this.conversationCacheByQueryType[e])?t:[]))}catch(e){console.error("Failed to save conversations to storage:",e),this.handleStorageError()}},n.saveConversationsToStorage=function(){var e=this;try{if(Object.keys(this.conversationCacheByQueryType).forEach(function(t){var n=e.getUserStorageKey(U.CONVERSATIONS)+"."+t;I(n,JSON.stringify(e.conversationCacheByQueryType[t]))}),this.debug){var t=Object.keys(this.conversationCacheByQueryType).map(function(t){var n,o;return{queryType:t,count:null!=(n=null==(o=e.conversationCacheByQueryType[t])?void 0:o.length)?n:0}});console.log("[CacheManager][persist] saveConversations",{user:this.currentUsername,prefix:this.getUserStorageKey(U.CONVERSATIONS),buckets:t})}}catch(e){console.error("Failed to save conversations to storage:",e),this.handleStorageError()}},n.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(this.debug&&console.log("[CacheManager][persist] saveGroupMessages",{groupId:e,messageCount:t.length,approxBytes:n.length,chunked:n.length>this.config.STORAGE_CHUNK_SIZE}),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);I(U.GROUP_MESSAGES+"."+e+(a>0?"."+a:""),JSON.stringify(i))}}else I(U.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()}},n.saveMetaInfoToStorage=function(){try{I(U.META_INFO,JSON.stringify(this.metaInfo))}catch(e){console.error("Failed to save meta info to storage:",e)}},n.handleStorageError=function(){for(var e=this,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")},n.clearGroupMessageStorage=function(e){for(var t=0,n=!0;n;){var o=U.GROUP_MESSAGES+"."+e+(t>0?"."+t:"");null!==R(o)?(k(o),t++):n=!1}},n.saveUserInfoToStorage=function(){try{var e=this.getUserStorageKey(U.USER_INFO);I(e,JSON.stringify(this.userInfo))}catch(e){console.error("Failed to save user info to storage:",e)}},n.clearStorage=function(){try{for(var e,t=l(N().filter(function(e){return e.startsWith(_)}));!(e=t()).done;)k(e.value)}catch(e){console.error("Failed to clear storage:",e)}},n.destroy=function(){this.cleanupTimer&&(clearInterval(this.cleanupTimer),this.cleanupTimer=void 0),this.debug&&console.log("Cache manager destroyed")},n.markConversationAsActive=function(e,t){void 0===t&&(t=!0),this.accessTimeRecord[e]=Date.now();var n,o=this.getQueryTypesForGroup(e);if(0===o.size)return!1;for(var r,s=l(o);!(r=s()).done;){var i,a=r.value,c=this.getConversationBucket(a).find(function(t){return t.groupId===e});c&&(n||(n=c),t&&c.unreadCount>0&&(c.unreadCount=0,null!=(i=c.latest)&&i.msgId&&(c.lastRead=c.latest.msgId),this.persistEnabled&&this.saveConversationsToStorageByQueryType(a)))}return!!n&&(this.activeConversation=g({},n),!0)},n.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},t}(),D=/*#__PURE__*/function(){function n(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=2e3*Math.random()+3e3,this.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 o=n.prototype;return o.debugLog=function(e){var t;this.debug&&(t=console).log.apply(t,["[SSE] "+e].concat([].slice.call(arguments,1)))},o.debugError=function(e){var t;this.debug&&(t=console).error.apply(t,["[SSE] "+e].concat([].slice.call(arguments,1)))},o.debugWarn=function(e){var t;this.debug&&(t=console).warn.apply(t,["[SSE] "+e].concat([].slice.call(arguments,1)))},o.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)}))},o.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()},o.connect=function(){var n=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(o,r){try{n.eventSource=new t.EventSourcePolyfill(n.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+n.token}}),n._openHandler=function(e){n.debugLog("SSE connection established"),n.connected=!0,n.onConnectionChangeCallback&&n.onConnectionChangeCallback(!0),n.reconnectAttempts>0&&n.onReconnectSuccessCallback&&n.onReconnectSuccessCallback(),n.reconnectAttempts=0,n.reconnectTimeout=5e3,o("SSE connect successful!")},n._errorHandler=function(t){n.debugError("SSE connection error:",t),n.connected=!1,n.onConnectionChangeCallback&&n.onConnectionChangeCallback(!1),401===t.status||t.statusText&&t.statusText.includes("Unauthorized")?(n.cleanup(),n.connectTimeoutRef&&(clearTimeout(n.connectTimeoutRef),n.connectTimeoutRef=null),n.notifyConnectionClosed({reason:e.ConnectionCloseReason.AuthError})):n.handleReconnect(),n.connected||r(new Error("SSE connect error"))},n._messageHandler=function(e){try{n.debugLog("SSE received message:",e.data);var t=JSON.parse(e.data);n.onMessageCallback&&n.onMessageCallback(t)}catch(e){n.debugError("Error parsing message:",e)}},n.eventSource.addEventListener("open",n._openHandler),n.eventSource.addEventListener("error",n._errorHandler),n.eventSource.addEventListener("message",n._messageHandler),n.handlers.forEach(function(e,t){var o=n._customHandlers.get(t);o&&n.eventSource&&n.eventSource.addEventListener(t,o)}),n.connectTimeoutRef=setTimeout(function(){n.connected||(r(new Error("Connection timeout")),n.handleReconnect())},n.connectTimeout);var s=n._openHandler;n._openHandler=function(e){clearTimeout(n.connectTimeoutRef),s(e)}}catch(e){n.debugError("Failed to create EventSource:",e),n.handleReconnect(),r(e)}})},o.notifyConnectionClosed=function(t){this.onConnectionClosedCallback&&this.onConnectionClosedCallback(t),t.reason===e.ConnectionCloseReason.AuthError?this.debugWarn("SSE connection closed due to authentication error"):this.debugLog("SSE connection closed")},o.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)}},o.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},o.unsubscribe=function(){this.cleanup(),this.handlers.clear(),this._customHandlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},o.destroySse=function(){this.unsubscribe(),this.isDestroyed=!0,this.notifyConnectionClosed({reason:e.ConnectionCloseReason.Abnormal})},o.close=function(){this.destroySse(),this.debugLog("SSE 连接已关闭")},o.isConnected=function(){return this.connected},o.send=function(e){var t="当前协议不可用:SSE 是单向通信协议,不支持客户端向服务器发送消息";throw this.debugError(t),new Error(t)},n}(),B=/*#__PURE__*/function(){function t(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.lastPingTime=0,this.pingCheckTimer=null,this.pageVisibilityHandler=null,this.isPageVisible=!0,this.lastVisibleTime=Date.now(),this.PING_TIMEOUT=12e4,this.PING_CHECK_INTERVAL=5e3,this.RECONNECT_DELAY=3e3,this.PAGE_HIDDEN_TOLERANCE=6e4,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,this.initPageVisibilityDetection()}var n=t.prototype;return n.debugLog=function(e){var t;this.debug&&(t=console).log.apply(t,["[WebSocket] "+e].concat([].slice.call(arguments,1)))},n.debugError=function(e){var t;this.debug&&(t=console).error.apply(t,["[WebSocket] "+e].concat([].slice.call(arguments,1)))},n.debugWarn=function(e){var t;this.debug&&(t=console).warn.apply(t,["[WebSocket] "+e].concat([].slice.call(arguments,1)))},n.subscribe=function(e,t){this.handlers.set(e,t),this.websocket?this.addMessageHandler(e,t):this.connect()},n.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)}})},n.connect=function(){var t=this;return this.connected&&this.websocket?Promise.reject(new Error("WebSocket is already connected!")):new Promise(function(n,o){try{var r=new URL(t.url);r.searchParams.set("token",t.token),t.websocket=new WebSocket(r.toString()),t.websocket.binaryType="arraybuffer",t.connectTimeoutRef=setTimeout(function(){t.connected||(o(new Error("WebSocket connection timeout")),t.handleReconnect())},t.connectTimeout),t.websocket.onopen=function(e){t.debugLog("WebSocket connection established"),t.connected=!0,clearTimeout(t.connectTimeoutRef),t.lastPingTime=Date.now(),t.startPingTimeoutCheck(),t.onConnectionChangeCallback&&t.onConnectionChangeCallback(!0),t.reconnectAttempts>0&&t.onReconnectSuccessCallback&&t.onReconnectSuccessCallback(),t.reconnectAttempts=0,t.reconnectTimeout=5e3,n("WebSocket connect successful!")},t.websocket.onerror=function(e){t.debugError("WebSocket connection error:",e),t.connected=!1,clearTimeout(t.connectTimeoutRef),t.onConnectionChangeCallback&&t.onConnectionChangeCallback(!1),t.handleReconnect(),t.connected||o(new Error("WebSocket connect error"))},t.websocket.onclose=function(n){if(t.debugLog("WebSocket connection closed:",{code:n.code,reason:n.reason,wasClean:n.wasClean}),t.connected=!1,1003===n.code)return t.debugLog("WebSocket closed normally (NORMAL_CLOSURE), will not reconnect"),t.cleanup(),void t.notifyConnectionClosed({reason:e.ConnectionCloseReason.ServerClosed});n.reason&&n.reason.includes("Unauthorized")?(t.debugLog("WebSocket closed due to auth error, will not reconnect"),t.cleanup(),t.notifyConnectionClosed({reason:e.ConnectionCloseReason.AuthError})):(t.debugLog("WebSocket closed abnormally, will reconnect"),t.notifyConnectionClosed({reason:e.ConnectionCloseReason.Abnormal}),t.handleReconnect())},t.websocket.onmessage=function(e){try{e.data instanceof ArrayBuffer?t.handleBinaryMessage(e.data):t.handleTextMessage(e.data),t.lastPingTime=Date.now()}catch(e){t.debugError("Error handling WebSocket message:",e)}},t.handlers.forEach(function(e,n){t.addMessageHandler(n,e)})}catch(e){t.debugError("Failed to create WebSocket:",e),t.handleReconnect(),o(e)}})},n.notifyConnectionClosed=function(t){this.onConnectionClosedCallback&&this.onConnectionClosedCallback(t),t.reason===e.ConnectionCloseReason.AuthError?this.debugWarn("WebSocket connection closed due to authentication error"):this.debugLog(t.reason===e.ConnectionCloseReason.ServerClosed?"WebSocket connection closed by server (normal)":"WebSocket connection closed")},n.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... (attempt "+(this.reconnectAttempts+1)+"/"+this.maxReconnectAttempts+")"),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.handleBinaryMessage=function(e){var t=new DataView(e);if(!(e.byteLength<1)){var n=t.getUint8(0);if(125===n&&e.byteLength>=9){var o=t.getBigInt64(1,!1);return this.debugLog("收到服务端心跳 ping:",o.toString()),this.lastPingTime=Date.now(),void this.sendPong(o)}this.onMessageCallback?this.onMessageCallback(new Uint8Array(e)):this.debugLog("收到二进制消息,类型:","0x"+n.toString(16),"长度:",e.byteLength)}},n.handleTextMessage=function(e){try{this.debugLog("WebSocket received text message:",e);var t=JSON.parse(e);if("pong"===t.type||2===t.ev)return this.connected=!0,void(this.lastPingTime=Date.now());this.onMessageCallback&&this.onMessageCallback(t)}catch(e){this.debugError("Error parsing WebSocket text message:",e)}},n.sendPong=function(e){if(this.websocket&&this.websocket.readyState===WebSocket.OPEN)try{var t=new ArrayBuffer(9),n=new DataView(t);n.setUint8(0,126),n.setBigInt64(1,e,!1),this.websocket.send(t),this.debugLog("已回复心跳 pong, timestamp:",e.toString())}catch(e){this.debugError("Failed to send pong:",e)}else this.debugWarn("WebSocket is not open, cannot send pong")},n.initPageVisibilityDetection=function(){var e=this;"undefined"!=typeof document&&(this.isPageVisible=!document.hidden,this.lastVisibleTime=Date.now(),this.pageVisibilityHandler=function(){var t=e.isPageVisible;if(e.isPageVisible=!document.hidden,t&&!e.isPageVisible)e.lastVisibleTime=Date.now(),e.debugLog("Page became hidden, pausing ping timeout check");else if(!t&&e.isPageVisible){var n=Date.now()-e.lastVisibleTime;e.debugLog("Page became visible after "+n+"ms"),e.websocket&&e.websocket.readyState===WebSocket.OPEN&&n>e.PAGE_HIDDEN_TOLERANCE&&(e.debugLog("Page was hidden for a long time, adjusting ping time"),e.lastPingTime=Date.now()-(e.PING_TIMEOUT-e.PAGE_HIDDEN_TOLERANCE))}},document.addEventListener("visibilitychange",this.pageVisibilityHandler))},n.startPingTimeoutCheck=function(){var t=this;this.stopPingTimeoutCheck(),this.pingCheckTimer=window.setInterval(function(){if(!t.isDestroyed&&t.websocket)if(t.isPageVisible){if(t.websocket.readyState!==WebSocket.OPEN)return t.debugWarn("WebSocket state is "+t.websocket.readyState+", connection may be broken"),t.connected=!1,t.stopPingTimeoutCheck(),t.notifyConnectionClosed({reason:e.ConnectionCloseReason.Abnormal}),void t.delayedReconnect();var n=Date.now()-t.lastPingTime;n>t.PING_TIMEOUT?(t.debugWarn("Ping timeout: "+n+"ms since last ping, connection may be broken"),t.connected=!1,t.notifyConnectionClosed({reason:e.ConnectionCloseReason.Abnormal}),t.delayedReconnect()):t.debugLog("Last ping received "+n+"ms ago")}else t.debugLog("Page is hidden, skipping ping timeout check");else t.stopPingTimeoutCheck()},this.PING_CHECK_INTERVAL)},n.stopPingTimeoutCheck=function(){null!==this.pingCheckTimer&&(clearInterval(this.pingCheckTimer),this.pingCheckTimer=null)},n.delayedReconnect=function(){var e=this;null===this.reconnectTimer&&(this.debugLog("Delaying reconnect for "+this.RECONNECT_DELAY/1e3+" seconds to prevent reconnect storm..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectTimer=null,e.handleReconnect()},this.RECONNECT_DELAY))},n.cleanup=function(){this.stopPingTimeoutCheck(),this.websocket&&(this.websocket.close(),this.websocket=null),this.connected=!1},n.cleanupPageVisibilityDetection=function(){this.pageVisibilityHandler&&"undefined"!=typeof document&&(document.removeEventListener("visibilitychange",this.pageVisibilityHandler),this.pageVisibilityHandler=null)},n.unsubscribe=function(){this.cleanup(),this.handlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.cleanupPageVisibilityDetection()},n.destroyWebSocket=function(){this.unsubscribe(),this.isDestroyed=!0,this.cleanupPageVisibilityDetection(),this.notifyConnectionClosed({reason:e.ConnectionCloseReason.Abnormal})},n.close=function(){this.destroyWebSocket(),this.debugLog("WebSocket 连接已关闭")},n.isConnected=function(){var e;return this.connected&&(null==(e=this.websocket)?void 0:e.readyState)===WebSocket.OPEN},n.send=function(e){if(!this.websocket||!this.isConnected())return this.debugWarn("WebSocket is not connected, cannot send message"),!1;try{if("string"==typeof e)this.websocket.send(e),this.debugLog("WebSocket message sent (string):",e);else if(e instanceof ArrayBuffer||e instanceof Blob)this.websocket.send(e),this.debugLog("WebSocket message sent (binary):","ArrayBuffer/Blob ("+(e instanceof ArrayBuffer?e.byteLength:e.size)+" bytes)");else if(e instanceof Uint8Array||e instanceof Int8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Uint32Array||e instanceof Int32Array||e instanceof Float32Array||e instanceof Float64Array||e instanceof DataView)this.websocket.send(e),this.debugLog("WebSocket message sent (binary):","ArrayBufferView ("+e.byteLength+" bytes)");else{var t=JSON.stringify(e);this.websocket.send(t),this.debugLog("WebSocket message sent (JSON):",t)}return!0}catch(e){return this.debugError("Failed to send WebSocket message:",e),!1}},t}(),q=["protocol"],V=/*#__PURE__*/function(){function t(){}return t.createClient=function(t){var n=t.protocol,o=h(t,q);switch(n){case e.ConnectionProtocol.SSE:return new D(o);case e.ConnectionProtocol.WEBSOCKET:return new B(o);default:throw new Error("Unsupported connection protocol: "+n)}},t}(),Q=null,j=/*#__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)}},n.getChatMember=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({data:{chatId:t,parent:n},url:e.RequestApi.GetChatMember,method:"GET"}))}catch(e){return Promise.reject(e)}},t}(),F=/*#__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,r,s){void 0===r&&(r={});var i={groupType:o};o===e.GroupType.PublicGroup||o===e.GroupType.PrivateGroup||o===e.GroupType.LiveGroup?i.groupId=n:i.receiverName=n;var a=g({},i,r,{msgType:t},s);return this.sendMessage(a,this.getMessageApi(i,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,{link: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)}},n.prePushCustomerMessage=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.PrePushCustomerMessage,method:"POST"}))}catch(e){return Promise.reject(e)}},t}(),H=["queryTypes"],x=/*#__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.getConversationByQueryTypes=function(t){try{var n=this,o=t.queryTypes,r=h(t,H);return Promise.resolve(n.sdk.sendRequest({data:g({},r,{queryTypes:o.join(",")}),url:e.RequestApi.GetConversationByQueryTypes,method:"GET"})).then(function(e){var t=e.data||{},o=new Map;return Object.entries(t).forEach(function(e){var t=e[1];o.set(Number(e[0]),t.map(n.normalizeConversation))}),e.data=o,e})}catch(e){return Promise.reject(e)}},n.getChannels=function(t){try{var n=this;return Promise.resolve(n.sdk.sendRequest({data:t,url:e.RequestApi.GetChannels,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.markLastRead=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,msgId:n},url:e.RequestApi.MarkConversationMessageAsRead,method:"GET"}))}catch(e){return Promise.reject(e)}},n.markLastDelete=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,msgId:n},url:e.RequestApi.ConversationLastDelete,method:"GET"}))}catch(e){return Promise.reject(e)}},n.pinConversation=function(t,n){void 0===n&&(n=1);try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,isTop:n},url:e.RequestApi.PinConversation,method:"GET"}))}catch(e){return Promise.reject(e)}},n.muteConversation=function(t,n){void 0===n&&(n=1);try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,mute:n},url:e.RequestApi.MuteConversation,method:"GET"}))}catch(e){return Promise.reject(e)}},n.normalizeConversation=function(e){var t,n,o,r,s,i,a,c,u,d;return g({},e,{id:e.id,groupId:null!=(t=e.groupId)?t:e.id,name:e.name||"",groupType:e.groupType||0,avatar:e.avatar||"",status:null!=(n=e.status)?n:1,latest:null!=(o=e.latest)?o:{},unreadCount:null!=(r=e.unreadCount)?r:0,lastRead:e.lastRead,draftText:null!=(s=e.draftText)?s:"",custom:null!=(i=e.custom)?i:"",groupMemberId:null!=(a=e.groupMemberId)?a:"",pin:null!=(c=e.pin)&&c,supportId:e.supportId||"",supportNick:e.supportNick||"",identity:null!=(u=e.identity)?u:1,mute:null!=(d=e.mute)&&d})},t}(),K=/*#__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,targetMemberId: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,o){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.editeGroupName,method:"GET",data:{groupId:t,name:n,avatar:o}}))}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.dissolveGroup=function(t){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.DissolveGroup,method:"GET",data:{groupId:t}}))}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)}},n.addGroupMembers=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.AddGroupMembers,method:"POST"}))}catch(e){return Promise.reject(e)}},n.getFileByType=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.GetFileByType,method:"GET"}))}catch(e){return Promise.reject(e)}},n.pinChat=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,type:n},url:e.RequestApi.PinChat,method:"GET"}))}catch(e){return Promise.reject(e)}},t}(),W=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return n.getContactByType=function(t,n){try{var o={contactType:t};return void 0!==n&&(o.groupId=n),Promise.resolve(this.sdk.sendRequest({data:o,url:e.RequestApi.GetContactByType,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getMemberContacts=function(t){try{return Promise.resolve(this.getContactByType(e.ContactType.MEMBER,t))}catch(e){return Promise.reject(e)}},n.getColleagueContacts=function(t){try{return Promise.resolve(this.getContactByType(e.ContactType.COLLEAGUE,t))}catch(e){return Promise.reject(e)}},n.getGroupContacts=function(t){try{return Promise.resolve(this.getContactByType(e.ContactType.GROUP,t))}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(t){try{return Promise.resolve(this.sdk.sendRequest({data:{contactType:t},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,o){void 0===o&&(o=0);try{return Promise.resolve(this.allocationContactTag({contactType:e.ContactType.MEMBER,tag:t,groupIds:n,type:o}))}catch(e){return Promise.reject(e)}},n.allocationColleagueTag=function(t,n,o){void 0===o&&(o=0);try{return Promise.resolve(this.allocationContactTag({contactType:e.ContactType.COLLEAGUE,tag:t,groupIds:n,type:o}))}catch(e){return Promise.reject(e)}},n.allocationGroupTag=function(t,n,o){void 0===o&&(o=0);try{return Promise.resolve(this.allocationContactTag({contactType:e.ContactType.GROUP,tag:t,groupIds:n,type:o}))}catch(e){return Promise.reject(e)}},t}(),z=/*#__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 j(this.sdk);case e.ServiceName.MESSAGE:return new F(this.sdk);case e.ServiceName.CONVERSATION:return new x(this.sdk);case e.ServiceName.GROUP:return new K(this.sdk);case e.ServiceName.CONTACT:return new W(this.sdk);default:throw new Error("Unknown service: "+t)}},n.reset=function(){this.services={}},t}(),J=["conversationQueryTypes"];function Y(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var X=[e.RequestApi.Logout,e.CbEvents.OnKickedOffline,e.CbEvents.OnUserTokenInvalid,e.CbEvents.OnUserTokenExpired],Z=/*#__PURE__*/function(t){function n(o){var r;return void 0===o&&(o=!1),(r=t.call(this)||this).config={debug:!1,isLive:!1,useProtobuf:!1,protocol:e.ConnectionProtocol.SSE},r.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},r.cacheManager=void 0,r.connectionClient=void 0,r.serviceManager=void 0,r.lastUnauthorizedTime=0,r.UNAUTHORIZED_THROTTLE_MS=3e3,r.conversationUpdateTimer=null,r.CONVERSATION_UPDATE_THROTTLE_MS=500,r.pendingConversationUpdateQueryTypes=new Set,r.lastConversationUpdateTime=0,r.isPageVisible=!0,r.pageVisibilityHandler=null,r.PAGE_HIDDEN_STOP_DELAY_MS=3e3,r.pageHiddenTimer=null,r.isActuallyHidden=!1,r.PAGE_VISIBLE_STABLE_MS=1e3,r.pageVisibleStableTimer=null,r.configure=function(e){void 0!==e.debug&&(r.config.debug=e.debug),r.cacheManager.setDebug(r.config.debug),e.isLive&&(r.config.isLive=e.isLive),e.apiAddr&&(r.config.apiAddr=e.apiAddr),e.wsAddr&&(r.config.wsAddr=e.wsAddr),e.ossApiAddr&&(r.config.ossApiAddr=e.ossApiAddr),e.appKey&&(r.config.appKey=e.appKey),e.token&&(r.config.token=e.token),e.connectTimeout&&(r.config.connectTimeout=e.connectTimeout),e.maxRetries&&(r.config.maxRetries=e.maxRetries),e.useProtobuf&&(r.config.useProtobuf=e.useProtobuf),e.protocol&&(r.config.protocol=e.protocol)},r.sendRequest=function(e){try{r.internalState.lastActivity=Date.now(),r.config.debug&&r.logRequest(e);var t=r.config.apiAddr+e.url,n=e.data;if("GET"===e.method&&n){var o=new URLSearchParams;Object.entries(n).forEach(function(e){var t=e[1];null!=t&&o.append(e[0],String(t))});var s=o.toString();s&&(t+=(t.includes("?")?"&":"?")+s),n=void 0}return Promise.resolve(Y(function(){return Promise.resolve(function(e){try{var t,n=function(e){if(t)return e;throw new Error("Unsupported platform")},o=function(){if(O){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(G)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:r.config.token?"Bearer "+r.config.token:""},data:n}))},function(e){throw 401!==(null==e?void 0:e.status)&&401!==(null==e?void 0:e.statusCode)||r.handleUnauthorizedWithThrottle(t),e}))}catch(e){return Promise.reject(e)}},r.handleUnauthorizedWithThrottle=function(e){var t=Date.now();t-r.lastUnauthorizedTime<r.UNAUTHORIZED_THROTTLE_MS?console.warn("401错误被节流限制,跳过处理:"+e):(r.lastUnauthorizedTime=t,r.handleUnauthorized(e))},r.handleUnauthorized=function(t){console.warn("未授权请求(401):",t),r.handleConnectionClosed({reason:e.ConnectionCloseReason.AuthError})},r.createRequestFunction=function(e,t){return function(n){return r.sendRequest({data:n,url:e,method:t})}},r.createRequestFunctionWithoutParams=function(e,t){return function(){return r.sendRequest({data:void 0,method:t,url:e})}},r.handleMessage=function(e){if(r.config.debug&&console.log("[SDK] handleMessage response",e),r.isBinaryMessage(e)){var t=r.normalizeToBinaryBuffer(e);if(!t||t.length<1)r.config.debug&&console.warn("[SDK] [Proto] 二进制消息长度不足,已忽略");else{var o=t[0];switch(o){case n.BINARY_MSG_TYPE.BYTE_MESSAGE:r.handleProtobufMessage(t).catch(function(e){console.error("[SDK] handleProtobufMessage error",e)});break;case n.BINARY_MSG_TYPE.HEARTBEAT_PONG:r.internalState.isConnected=!0,r.config.debug&&console.log("[SDK] [Proto] 收到 PONG(0x7E),已更新 isConnected");break;case n.BINARY_MSG_TYPE.HEARTBEAT_PING:r.config.debug&&console.log("[SDK] [Proto] 收到 PING(0x7D),应由连接层回复 PONG");break;default:r.config.debug&&console.warn("[SDK] [Proto] 未知二进制类型,已忽略",{messageType:"0x"+o.toString(16),length:t.length})}}}else r.handleJsonMessage(e)},r.handleJsonMessage=function(t){switch(r.config.debug&&console.log("handleMessage response",t),t.ev){case e.SseEventType.EVENT_MESSAGE_PUSH:var n=t.dt;Array.isArray(n)?(n.forEach(function(e){r.updateMessageCache(e)}),r.emit(e.CbEvents.OnReceiveMessages,n)):console.warn("[SDK] Expected response.dt to be an array, but got:",n);break;case e.SseEventType.EVENT_PONG_IDLE:r.internalState.isConnected=!0;break;case e.SseEventType.EVENT_SYSTEM_MESSAGE_PUSH:r.handleSystemMessageForConversationCache(t.dt),r.emit(e.CbEvents.OnReceiveSystemMessage,t.dt);break;case e.SseEventType.EVENT_PRE_MESSAGE_PUSH:r.emit(e.CbEvents.OnReceivePreMessage,t.dt);break;case e.SseEventType.EVENT_SUBSCRIBE_MESSAGE_PUSH:r.emit(e.CbEvents.OnReceiveSubscribeMessage,t.dt);break;default:o=t.ev,Object.values(e.CbEvents).includes(o)?(r.emit(t.ev,t.dt),X.includes(t.ev)&&(r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1,r.connectionClient&&(r.connectionClient.close(),r.connectionClient=void 0))):r.config.debug&&console.warn("[SDK] Unknown SSE event type:",t.ev)}var o},r.handleReconnectSuccess=function(){r.config.username&&(r.internalState.isConnected=!0,r.internalState.reconnectAttempts=0,r.config.debug&&console.log("SSE reconnection successful"),r.emit(e.CbEvents.OnReconnected))},r.handleConnectionClosed=function(t){r.internalState.isConnected=!1,r.config.debug&&console.log("[SDK] Connection closed, reason:",t.reason),r.emit(e.CbEvents.OnDisconnected,t)},r.handleMaxRetriesReached=function(){r.config.debug&&console.log("SSE connection max reconnection attempts reached"),r.emit(e.CbEvents.onMaxRetriesReached)},r.handleConnectionChange=function(t){r.config.debug&&console.log("Connection status changed:",t),t?r.emit(e.CbEvents.OnConnected):r.emit(e.CbEvents.OnDisconnected,{reason:e.ConnectionCloseReason.Abnormal})},r.login=function(t){try{var n,o,s=function(s){return n?s:(r.connectionClient=V.createClient({url:r.config.wsAddr+"/"+(t.anonLogin?"anonymousConn":"conn")+"?username="+t.username+"&token="+t.token+"&appKey="+r.config.appKey+"&random="+o,protocol:r.config.protocol||e.ConnectionProtocol.WEBSOCKET,debug:r.config.debug,onMessage:r.handleMessage,onReconnectSuccess:r.handleReconnectSuccess,onConnectionClosed:r.handleConnectionClosed,onMaxRetriesReached:r.handleMaxRetriesReached,onConnectionChange:r.handleConnectionChange,token:t.token,connectTimeout:r.config.connectTimeout,maxRetries:r.config.maxRetries}),Y(function(){return Promise.resolve(r.connectionClient.connect()).then(function(e){return r.internalState.isLoggedIn=!0,r.internalState.isConnected=!0,r.config.isLive||r.initializeConversationCache(),e})},function(e){return r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1,Promise.reject(e.message)}))};if(r.connectionClient&&(null==r.connectionClient.close||r.connectionClient.close(),r.connectionClient=void 0,r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1),!r.config.apiAddr)return Promise.reject("No apiAddr configured. Please call configure() before login().");if(!r.config.ossApiAddr)return Promise.reject("No ossApiAddr configured. Please call configure() before login().");if(!r.config.appKey)return Promise.reject("No appKey configured. Please call configure() before login().");if(!r.config.token)return Promise.reject("No token configured. Please call configure() before login().");if(!r.config.isLive&&(void 0===t.conversationQueryTypes||0===t.conversationQueryTypes.length))return Promise.reject("conversationQueryTypes is required on login() in non-live mode");if(r.config.conversationQueryTypes=t.conversationQueryTypes,r.config.username=t.username,r.config.anonLogin=t.anonLogin||!1,t.protocol&&(r.config.protocol=t.protocol),t.protocol==e.ConnectionProtocol.WEBSOCKET&&!r.config.wsAddr)return Promise.reject("WebSocket address (wsAddr) is not configured. Please call configure() before login().");r.config.debug&&(console.log("login params",t),console.log("apiAddr",r.config.apiAddr)),r.config.isLive&&t.anonLogin||(r.cacheManager.setDebug(r.config.debug),r.cacheManager.initialize(t.username),r.cacheManager.resetActiveConversation(),r.config.conversationQueryTypes.forEach(function(e){r.cacheManager.getConversations(e).length>0&&r.emitConversationListUpdatedForQueryType(e)}));var i=function(){if(!t.anonLogin){var e=h(t,J);return Promise.resolve(r.user.login(g({},e,{appKey:r.config.appKey}))).then(function(e){var t=e.code,r=e.data;if(0!=t){var s=Promise.resolve("Login failed, Server error, error code is "+t);return n=1,s}o=r})}}();return Promise.resolve(i&&i.then?i.then(s):s(i))}catch(e){return Promise.reject(e)}},r.logout=function(){try{return r.connectionClient&&(r.connectionClient.close(),r.connectionClient=void 0),Promise.resolve(r.user.logout()).then(function(e){return r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1,r.config.username=void 0,r.config.token=void 0,r.config.conversationQueryTypes=void 0,r.cacheManager.clear(),e})}catch(e){return Promise.reject(e)}},r.getChatMember=function(e,t){return r.user.getChatMember(e,t)},r.getConversations=function(t){try{return Promise.resolve(Y(function(){var n,o=t.pageNo||1,s=null!=(n=t.pageSize)?n:50;if(null==t.queryType)return console.warn("[SDK] queryType is required"),{code:-1,msg:"queryType is required",data:{records:[],current:1,pages:0}};var i=t.queryType;if(o<1)return console.warn("[SDK] Invalid pageNo, must be >= 1"),{code:-1,msg:"Invalid pageNo, must be >= 1",data:{records:[],current:1,pages:0}};if(s<1||s>100)return console.warn("[SDK] Invalid pageSize, must be between 1 and 100"),{code:-1,msg:"Invalid pageSize, must be between 1 and 100",data:{records:[],current:1,pages:0}};if(o>=2&&i!==e.ConversationQueryType.NonCustomer&&null==t.score)return console.warn("[SDK] queryType≠0 时第二页起必须传入 score(游标分页)"),{code:-1,msg:"score is required for pageNo >= 2 when queryType is not 0 (cursor pagination)",data:{records:[],current:o,pages:0}};var a={pageNo:o,pageSize:s,queryType:i};return o>=2&&null!=t.score&&(a.score=t.score),Promise.resolve(r.conversation.getConversations(a)).then(function(e){var t=e.data;if(0===e.code&&t){var n=r.cacheManager.getConversations(i);if(1===o)r.cacheManager.setConversations([].concat(t.records),!0,i);else{var s=t.records||[],a=new Map;n.forEach(function(e){return a.set(e.id,e)});var c=[],u=[];s.forEach(function(e){a.has(e.id)?c.push(e):u.push(e)});var d=[];n.forEach(function(e){c.find(function(t){return t.id===e.id})||d.push(e)}),d.push.apply(d,c.concat(u)),r.cacheManager.setConversations(d,!1,i)}r.emitConversationListUpdatedForQueryType(i)}else r.cacheManager.getConversations(i).length>0&&r.emitConversationListUpdatedForQueryType(i);return e})},function(e){console.error("[SDK] Failed to get conversations",e);var n=t.queryType,o=null!=n?r.cacheManager.getConversations(n):[];return o.length>0&&null!=n&&r.emitConversationListUpdatedForQueryType(n),{code:-1,msg:e instanceof Error?e.message:"Failed to get conversations",data:{records:o,current:t.pageNo||1,pages:0}}}))}catch(e){return Promise.reject(e)}},r.getConversationByQueryTypes=function(e){try{return Promise.resolve(Y(function(){var t=e.pageNo,n=void 0===t?1:t,o=e.pageSize,s=void 0===o?50:o,i=e.queryTypes;return n>1?(console.warn("[SDK] getConversationByQueryTypes 仅支持第一页查询"),{code:-1,msg:"Only first page is supported",data:new Map}):Promise.resolve(r.conversation.getConversationByQueryTypes({pageNo:n,pageSize:s,queryTypes:i})).then(function(e){var t=e.data;return 0===e.code&&t&&t.forEach(function(e,t){r.cacheManager.setConversations([].concat(e||[]),!0,Number(t)),r.emitConversationListUpdatedForQueryType(Number(t))}),e})},function(e){return console.error("[SDK] Failed to get conversations",e),{code:-1,msg:e instanceof Error?e.message:"Failed to get conversations",data:new Map}}))}catch(e){return Promise.reject(e)}},r.internalUploadFile=function(t,n,o){try{return Promise.resolve(Y(function(){var s=""+r.config.apiAddr+e.RequestApi.UploadCredential+"?groupId="+n+"&filename="+encodeURIComponent(t.name)+"&ext="+encodeURIComponent(o);return Promise.resolve(fetch(s,{method:"GET",headers:{Authorization:r.config.token?"Bearer "+r.config.token:""}})).then(function(e){if(!e.ok)throw new Error("Get upload credential failed: "+e.status);return Promise.resolve(e.json()).then(function(e){var n=(null==e?void 0:e.data)||{};if(null==e||!e.success||null==n||!n.uploadUrl||null==n||!n.accessUrl)throw new Error((null==e?void 0:e.msg)||"Invalid upload credential response");var o=n.accessUrl;return Promise.resolve(fetch(n.uploadUrl,{method:"PUT",headers:{"Content-Type":t.type||"application/octet-stream"},body:t})).then(function(e){var r;if(!e.ok)throw new Error("Upload to OSS failed with status: "+e.status);var s=null!=(r=n.thumbnailUrl)?r:t.type.startsWith("image/")?o+(o.includes("?")?"&":"?")+"x-oss-process=image/resize,m_lfit,w_200,h_200":"";return{originalUrl:o,thumbnailUrl:s}})})})},function(e){return console.error("[Upload Error]",e),{error:e instanceof Error?e:new Error("Unknown upload error")}}))}catch(e){return Promise.reject(e)}},r.uploadFile=function(t,n){var o=t.file,s=t.ext,i=void 0===s?"":s;try{return Promise.resolve(r.internalUploadFile(o,n,i)).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)}},r.sendTextMessage=function(e,t,n,o){return r.message.createTextMessage(e,t,n,o)},r.sendImageMessage=function(e,t,n,o,s){return r.message.createImageMessage(e,t,n,o,s)},r.sendFileMessage=function(e,t,n,o){return r.message.createFileMessage(e,t,n,o)},r.sendAudioMessage=function(e,t,n,o){return r.message.createAudioMessage(e,t,n,o)},r.sendVideoMessage=function(e,t,n,o){return r.message.createVideoMessage(e,t,n,o)},r.sendLinkMessage=function(e,t,n,o){return r.message.createLinkMessage(e,t,n,o)},r.sendGifMessage=function(e,t,n,o){return r.message.createGifMessage(e,t,n,o)},r.sendOptionMessage=function(e,t,n,o){return r.message.createOptionMessage(e,t,n,o)},r.sendEmojiMessage=function(e,t,n,o){return r.message.createEmojiMessage(e,t,n,o)},r.sendCustomMessage=function(e,t,n,o){return r.message.createCustomMessage(e,t,n,o)},r.getHistoryMessageList=function(e){try{return Promise.resolve(r.message.getHistoryMessageList(e))}catch(e){return Promise.reject(e)}},r.getLiveMessageList=function(e){return r.message.getLiveMessageList(e)},r.prePushCustomerMessage=function(e){return r.message.prePushCustomerMessage(e)},r.getGroupInfo=function(e){return r.group.getGroupInfo(e)},r.getGroupMembers=function(e){return r.group.getGroupMembers(e)},r.joinGroup=function(e){return r.group.joinGroup(e)},r.leftGroup=function(e){return r.group.leftGroup(e)},r.checkGroupBlock=function(e){return r.group.checkGroupBlock(e)},r.getMyGroupPermission=function(e){return r.group.getMyGroupPermission(e)},r.getGroupPermission=function(e){return r.group.getGroupPermission(e)},r.getGroupMember=function(e){return r.group.getGroupMember(e)},r.getGroupMemberPermission=function(e,t){return r.group.getGroupMemberPermission(e,t)},r.updateGroupPermission=function(e){return r.group.updateGroupPermission(e)},r.kickGroupMember=function(e){return r.group.kickGroupMember(e)},r.muteMembers=function(e){return r.group.muteMembers(e)},r.updateGroupMemberPermission=function(e){return r.group.updateGroupMemberPermission(e)},r.editGroupName=function(e,t,n){try{return Promise.resolve(r.group.editGroupName(e,t,n)).then(function(o){if(0===o.code){for(var s,i,a=l(r.cacheManager.getQueryTypesForGroup(e));!(i=a()).done;){var c=r.cacheManager.getConversations(i.value).find(function(t){return t.groupId===e});if(c){s=g({},c,{name:t,avatar:n});break}}s&&(r.cacheManager.updateConversation(s),r.emitConversationListUpdatedForGroup(e))}return o})}catch(e){return Promise.reject(e)}},r.editNotification=function(e,t){return r.group.editNotification(e,t)},r.editGroupCustomer=function(e,t){return r.group.editGroupCustomer(e,t)},r.addAdmin=function(e,t){return r.group.addAdmin(e,t)},r.deleteAdmin=function(e,t){return r.group.deleteAdmin(e,t)},r.pin=function(e,t,n){return r.group.pin(e,t,n)},r.muteGroup=function(e,t){return r.group.muteGroup(e,t)},r.muteMember=function(e,t,n){return r.group.muteMember(e,t,n)},r.addGroupMembers=function(e){return r.group.addGroupMembers(e)},r.getFileByType=function(e){return r.group.getFileByType(e)},r.pinChat=function(e,t){return r.group.pinChat(e,t)},r.dissolveGroup=function(e){return r.group.dissolveGroup(e)},r.markConversationRead=function(e){try{return Promise.resolve(r.conversation.markConversationRead(e)).then(function(t){return 0===t.code&&e.groupId&&(e.id?r.cacheManager.updateConversationLastRead(e.groupId,e.id):r.cacheManager.clearConversationUnread(e.groupId),r.emitConversationListUpdatedForGroup(e.groupId)),t})}catch(e){return Promise.reject(e)}},r.markLastRead=function(e,t){try{return Promise.resolve(r.conversation.markLastRead(e,t)).then(function(n){return 0===n.code&&(r.cacheManager.updateConversationLastRead(e,t),r.emitConversationListUpdatedForGroup(e)),n})}catch(e){return Promise.reject(e)}},r.markLastDelete=function(e,t){try{return Promise.resolve(r.conversation.markLastDelete(e,t)).then(function(t){return 0===t.code&&r.emitConversationListUpdatedForGroup(e),t})}catch(e){return Promise.reject(e)}},r.markLastReadLocal=function(e,t){r.cacheManager.updateConversationLastRead(e,t),r.emitConversationListUpdatedForGroup(e)},r.pinConversation=function(e,t){void 0===t&&(t=1);try{return Promise.resolve(r.conversation.pinConversation(e,t)).then(function(n){return 0===n.code&&(r.cacheManager.updateConversationPinStatus(e,1===t),r.emitConversationListUpdatedForGroup(e)),n})}catch(e){return Promise.reject(e)}},r.muteConversation=function(e,t){void 0===t&&(t=1);try{return Promise.resolve(r.conversation.muteConversation(e,t)).then(function(n){return 0===n.code&&(r.cacheManager.updateConversationMuteStatus(e,1===t),r.emitConversationListUpdatedForGroup(e)),n})}catch(e){return Promise.reject(e)}},r.getChannels=function(e){return r.conversation.getChannels(e)},r.clearConversationUnread=function(e){r.cacheManager.clearConversationUnread(e),r.emitConversationListUpdatedForGroup(e)},r.clearAllConversationUnread=function(){r.cacheManager.clearAllConversationUnread(),r.emitConversationListUpdatedForQueryTypes(r.cacheManager.getQueryTypesWithData())},r.getContactByType=function(e,t){return r.contact.getContactByType(e,t)},r.getMemberContacts=function(e){return r.contact.getMemberContacts(e)},r.getColleagueContacts=function(e){return r.contact.getColleagueContacts(e)},r.getGroupContacts=function(e){return r.contact.getGroupContacts(e)},r.editContactTag=function(e){return r.contact.editContactTag(e)},r.getContactTag=function(e){return r.contact.getContactTag(e)},r.allocationContactTag=function(e){return r.contact.allocationContactTag(e)},r.allocationMemberTag=function(e,t,n){return void 0===n&&(n=0),r.contact.allocationMemberTag(e,t,n)},r.allocationColleagueTag=function(e,t,n){return void 0===n&&(n=0),r.contact.allocationColleagueTag(e,t,n)},r.allocationGroupTag=function(e,t,n){return void 0===n&&(n=0),r.contact.allocationGroupTag(e,t,n)},r.config.debug=o,o&&(console.log("🚀 SIM SDK Web v1.1.0 (本地开发版本)"),console.log("📦 支持协议: SSE, WebSocket")),r.cacheManager=new w({persistEnabled:!0,debug:o}),r.serviceManager=new z(r),r.initPageVisibilityDetection(),r}var o,r;r=t,(o=n).prototype=Object.create(r.prototype),o.prototype.constructor=o,p(o,r);var s,i,a=n.prototype;return a.initPageVisibilityDetection=function(){var e=this;"undefined"!=typeof document&&(this.isPageVisible=!document.hidden,this.isActuallyHidden=!this.isPageVisible,this.pageVisibilityHandler=function(){var t=e.isPageVisible;e.isPageVisible=!document.hidden,e.config.debug&&console.log("[SDK] Page visibility changed: "+(e.isPageVisible?"visible":"hidden")),t&&!e.isPageVisible?e.handlePageHidden():!t&&e.isPageVisible&&e.handlePageVisible()},document.addEventListener("visibilitychange",this.pageVisibilityHandler))},a.handlePageHidden=function(){var e=this;null!==this.pageVisibleStableTimer&&(clearTimeout(this.pageVisibleStableTimer),this.pageVisibleStableTimer=null),null!==this.pageHiddenTimer&&(clearTimeout(this.pageHiddenTimer),this.pageHiddenTimer=null),this.pageHiddenTimer=window.setTimeout(function(){e.isPageVisible||(e.isActuallyHidden=!0,e.config.debug&&console.log("[SDK] Page is actually hidden, stopping conversation updates")),e.pageHiddenTimer=null},this.PAGE_HIDDEN_STOP_DELAY_MS)},a.handlePageVisible=function(){var e=this;null!==this.pageHiddenTimer&&(clearTimeout(this.pageHiddenTimer),this.pageHiddenTimer=null),this.isActuallyHidden=!1,null!==this.pageVisibleStableTimer&&(clearTimeout(this.pageVisibleStableTimer),this.pageVisibleStableTimer=null),this.pageVisibleStableTimer=window.setTimeout(function(){e.isPageVisible&&e.pendingConversationUpdateQueryTypes.size>0&&(e.config.debug&&console.log("[SDK] Page is stable visible, triggering conversation update"),e.flushConversationUpdate()),e.pageVisibleStableTimer=null},this.PAGE_VISIBLE_STABLE_MS)},a.cleanupPageVisibilityDetection=function(){this.pageVisibilityHandler&&"undefined"!=typeof document&&(document.removeEventListener("visibilitychange",this.pageVisibilityHandler),this.pageVisibilityHandler=null),null!==this.pageHiddenTimer&&(clearTimeout(this.pageHiddenTimer),this.pageHiddenTimer=null),null!==this.pageVisibleStableTimer&&(clearTimeout(this.pageVisibleStableTimer),this.pageVisibleStableTimer=null)},a.destroy=function(){this.connectionClient&&(this.connectionClient.close(),this.connectionClient=void 0),this.cacheManager.destroy(),this.cleanupPageVisibilityDetection(),null!==this.conversationUpdateTimer&&(clearTimeout(this.conversationUpdateTimer),this.conversationUpdateTimer=null),this.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},this.config.debug&&console.log("[SDK] Resources destroyed")},a.getService=function(e){return this.serviceManager.get(e)},a.isConnected=function(){return this.config.debug&&console.log("[SDK] Connection status: "+(this.internalState.isConnected?"connected":"disconnected")),this.internalState.isConnected},a.isLoggedIn=function(){return this.config.debug&&console.log("[SDK] Login status: "+(this.internalState.isLoggedIn?"logged in":"not logged in")),this.internalState.isLoggedIn},a.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;"))},a.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())},a.isBinaryMessage=function(e){return e instanceof Uint8Array||"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer||"string"==typeof e&&this.isBase64String(e)},a.normalizeToBinaryBuffer=function(e){if(e instanceof Uint8Array)return e;if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer)return new Uint8Array(e);if("string"==typeof e)try{for(var t=atob(e),n=new Uint8Array(t.length),o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n}catch(e){return null}return null},a.isBase64String=function(e){try{return btoa(atob(e))===e}catch(e){return!1}},a.protoGroupChatToMessageItem=function(e){var t,n,o,r=function(t){var n;return null!=(n=e[t])?n:e[t.replace(/([A-Z])/g,"_$1").toLowerCase()]},s=function(e){return Number(r(e))||0},i=function(e){var t;return String(null!=(t=r(e))?t:"")},a=null!=(t=e.avatar_map)?t:e.avatarMap,c=s("send"),u=null!=(n=null==a||null==(o=a[c])?void 0:o.avatar)?n:"";return{msgId:s("msg_id"),groupId:s("group_id"),groupType:s("group_type"),replyMsgId:s("reply_msg_id"),clientMsgId:i("client_msg_id"),recvId:i("recv_id"),receiverName:i("receiverName")||"",userId:s("userId")||0,send:c,to:s("to")||0,username:i("username"),msgType:s("msg_type"),text:i("text")||void 0,link:i("link")||void 0,snapshot:i("snapshot")||void 0,createTime:s("create_time"),updateTime:s("update_time")||void 0,status:s("status"),avatar:u||void 0,ext:i("ext")||void 0}},a.handleProtobufMessage=function(t){try{var n,o,r=function(t){var n,r,i=Number(o.ev),a=null!=(r=((n={})[e.SseEventType.EVENT_PONG_CONN]="EVENT_PONG_CONN",n[e.SseEventType.EVENT_PONG_RE_CONN]="EVENT_PONG_RE_CONN",n[e.SseEventType.EVENT_PONG_IDLE]="EVENT_PONG_IDLE",n[e.SseEventType.EVENT_MESSAGE_PUSH]="EVENT_MESSAGE_PUSH",n[e.SseEventType.EVENT_SYSTEM_MESSAGE_PUSH]="EVENT_SYSTEM_MESSAGE_PUSH",n[e.SseEventType.EVENT_LIVE_SYSTEM_MESSAGE_PUSH]="EVENT_LIVE_SYSTEM_MESSAGE_PUSH",n[e.SseEventType.EVENT_PRE_MESSAGE_PUSH]="EVENT_PRE_MESSAGE_PUSH",n[e.SseEventType.EVENT_SUBSCRIBE_MESSAGE_PUSH]="EVENT_SUBSCRIBE_MESSAGE_PUSH",n)[i])?r:"ev="+i;switch(s.config.debug?console.log("[SDK] [Proto] 解码成功",{ev:i,evName:a,keys:Object.keys(o)}):console.log("[SDK] [Proto] ev=",a),i){case e.SseEventType.EVENT_PONG_IDLE:s.internalState.isConnected=!0,s.config.debug&&console.log("[SDK] [Proto] 心跳 PONG_IDLE,已更新 isConnected");break;case e.SseEventType.EVENT_MESSAGE_PUSH:var c,u,d=null!=(c=o.group_chat_list)?c:o.groupChatList,l=(null!=(u=null==d?void 0:d.items)?u:[]).map(function(e){return s.protoGroupChatToMessageItem(e)});s.config.debug&&console.log("[SDK] [Proto] EVENT_MESSAGE_PUSH",{count:l.length,msgIds:l.map(function(e){return e.msgId}),groupIds:[].concat(new Set(l.map(function(e){return e.groupId})))}),l.forEach(function(e){return s.updateMessageCache(e)}),s.emit(e.CbEvents.OnReceiveMessages,l);break;case e.SseEventType.EVENT_SYSTEM_MESSAGE_PUSH:var g,h=null!=(g=o.sys_message)?g:o.sysMessage;s.config.debug&&console.log("[SDK] [Proto] EVENT_SYSTEM_MESSAGE_PUSH",h),s.handleSystemMessageForConversationCache(h),s.emit(e.CbEvents.OnReceiveSystemMessage,h);break;case e.SseEventType.EVENT_PRE_MESSAGE_PUSH:var p,v=null!=(p=o.raw_data)?p:o.rawData,m="string"==typeof v?v?JSON.parse(v):void 0:null!=v?JSON.parse((new TextDecoder).decode(v)):void 0;s.config.debug&&console.log("[SDK] [Proto] EVENT_PRE_MESSAGE_PUSH",m),s.emit(e.CbEvents.OnReceivePreMessage,m);break;case e.SseEventType.EVENT_SUBSCRIBE_MESSAGE_PUSH:var f,y=null!=(f=o.subscribe_message)?f:o.subscribeMessage;s.config.debug&&console.log("[SDK] [Proto] EVENT_SUBSCRIBE_MESSAGE_PUSH",y),s.emit(e.CbEvents.OnReceiveSubscribeMessage,y);break;default:console.warn("[SDK] [Proto] 未知 ev,回退 OnReceiveProtoMessage",{ev:i,evName:a}),s.emit(e.CbEvents.OnReceiveProtoMessage,o)}},s=this,i=t instanceof Uint8Array;if(s.config.debug&&console.log("[SDK] [Proto] 入口",{type:i?"Uint8Array":"Base64",length:i||"string"==typeof t?t.length:0,preview:i&&t.length>0?"0x"+t[0].toString(16):void 0}),i)n=t.length>1?t.slice(1):t,s.config.debug&&console.log("[SDK] [Proto] 跳过首字节后 buffer.length=",n.length);else{var a=atob(t);n=new Uint8Array(a.length);for(var c=0;c<a.length;c++)n[c]=a.charCodeAt(c);n.length>1&&(n=n.slice(1)),s.config.debug&&console.log("[SDK] [Proto] Base64 解码后 buffer.length=",n.length)}var d=Y(function(){return Promise.resolve(function(e){return Promise.resolve(function(){try{var e=function(){if(!Q)return Promise.resolve(u.default.load("/proto/chat_message.proto")).then(function(e){Q=e})}();return Promise.resolve(e&&e.then?e.then(function(){return Q}):Q)}catch(e){return Promise.reject(e)}}()).then(function(t){var n=t.lookupType("com.chat.proto.SseMessage"),o=n.verify(e);if(o)throw new Error(o);var r=n.decode(e);return n.toObject(r,{longs:Number})})}(n)).then(function(e){o=e})},function(e){throw console.error("[SDK] [Proto] decodeSseMessage 失败",{bufferLength:n.length,error:e}),e});return Promise.resolve(d&&d.then?d.then(r):r())}catch(e){return Promise.reject(e)}},a.emitConversationListUpdatedForQueryType=function(t){var n=this.cacheManager.getConversations(t);this.config.debug&&console.log("[SDK][会话列表] 发出 OnConversationListUpdated",{queryType:t,conversationCount:n.length}),this.emit(e.CbEvents.OnConversationListUpdated,{conversations:n,queryType:t})},a.emitConversationListUpdatedForQueryTypes=function(e){for(var t,n=l(e);!(t=n()).done;)this.emitConversationListUpdatedForQueryType(t.value)},a.emitConversationListUpdatedForGroup=function(e){var t=this.cacheManager.getQueryTypesForGroup(e);this.config.debug&&console.log("[SDK][会话列表] 按群聚合刷新(直连 emit,不经消息节流)",{groupId:e,queryTypes:t}),this.emitConversationListUpdatedForQueryTypes(t)},a.handleSystemMessageForConversationCache=function(e){this.handleGroupEvent(e)},a.handleGroupEvent=function(t){if(t.type===e.GroupEventType.GROUP_MEMBER_EVENT_TYPE_SUPPORT_UPDATE){if(null==t.content||""==t.content)return;var n=JSON.parse(t.content),o=this.cacheManager.updateConversationSupportInfo(t.groupId,n.supportChatId,n.supportNick);this.emitConversationListUpdatedForQueryTypes(new Set(o))}},a.initializeConversationCache=function(){try{var e=this;return Promise.resolve(Y(function(){var t=e.config.conversationQueryTypes;if(void 0!==t&&0!==t.length&&!t.some(function(e){return Number.isNaN(Number(e))}))return Promise.resolve(e.conversation.getConversationByQueryTypes({pageNo:1,pageSize:50,queryTypes:t})).then(function(n){var o=n.code,r=n.data;e.config.debug&&console.log("[SDK] Initialize conversation cache:",o,r),0===o&&r&&(r.forEach(function(t,n){e.cacheManager.setConversations(t,!0,n)}),t.forEach(function(t){e.emitConversationListUpdatedForQueryType(t)}))});console.warn("[SDK] initializeConversationCache: conversationQueryTypes missing, skip")},function(e){console.error("[SDK] Failed to initialize conversation cache:",e)}))}catch(e){return Promise.reject(e)}},a.onMessage=function(t){var n=this;return this.on(e.CbEvents.OnReceiveMessage,t),function(){return n.off(e.CbEvents.OnReceiveMessage,t)}},a.onMessages=function(t){var n=this;return this.on(e.CbEvents.OnReceiveMessages,t),function(){return n.off(e.CbEvents.OnReceiveMessages,t)}},a.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)}},a.onKickedOffline=function(t){var n=this;return this.on(e.CbEvents.OnKickedOffline,t),function(){return n.off(e.CbEvents.OnKickedOffline,t)}},a.updateMessageCache=function(e){var t=this;e.groupId&&this.cacheManager.addGroupMessage(e);var n=this.cacheManager.updateConversationWithMessage(e,this.config.username);n.updated&&n.queryTypes&&n.queryTypes.size>0&&(this.config.debug&&console.log("[SDK][会话列表] ④ 服务端推送/收消息:updateMessageCache → scheduleConversationUpdate(500ms 节流)",{groupId:e.groupId,msgId:e.msgId,queryTypes:n.queryTypes}),n.queryTypes.forEach(function(e){return t.scheduleConversationUpdate(e)}))},a.scheduleConversationUpdate=function(e){var t=this;if(Number.isFinite(e))if(this.pendingConversationUpdateQueryTypes.add(e),this.isActuallyHidden)this.config.debug&&console.log("[SDK] Page is actually hidden, deferring conversation update");else{var n=Date.now()-this.lastConversationUpdateTime;if(n<this.CONVERSATION_UPDATE_THROTTLE_MS){if(null!==this.conversationUpdateTimer)return;this.conversationUpdateTimer=window.setTimeout(function(){t.flushConversationUpdate()},this.CONVERSATION_UPDATE_THROTTLE_MS-n)}else this.flushConversationUpdate()}},a.flushConversationUpdate=function(){null!==this.conversationUpdateTimer&&(clearTimeout(this.conversationUpdateTimer),this.conversationUpdateTimer=null);var e=new Set(this.pendingConversationUpdateQueryTypes);this.pendingConversationUpdateQueryTypes.clear(),this.lastConversationUpdateTime=Date.now(),this.emitConversationListUpdatedForQueryTypes(e),this.config.debug&&e.size>0&&console.log("[SDK][会话列表] ⑤ flush:节流到期,按 queryType 发出 OnConversationListUpdated",{queryTypes:[].concat(e)})},a.getCachedGroupMessages=function(e){return this.cacheManager.getGroupMessages(e)},s=n,(i=[{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:"getConnectionClient",get:function(){return this.connectionClient}},{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,v(o.key),o)}}(s.prototype,i),Object.defineProperty(s,"prototype",{writable:!1}),s}(M);Z.BINARY_MSG_TYPE={BYTE_MESSAGE:1,HEARTBEAT_PING:125,HEARTBEAT_PONG:126},e.SIMSDK=Z});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("event-source-polyfill"),require("protobufjs")):"function"==typeof define&&define.amd?define(["exports","event-source-polyfill","protobufjs"],t):t((e||self).simSdkWeb={},e.eventSourcePolyfill,e.protobufjs)}(this,function(e,t,n){function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,i,s,a,c,u=/*#__PURE__*/o(n);function d(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 l(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(){return g=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},g.apply(null,arguments)}function h(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}function p(e,t){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},p(e,t)}function v(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+""}e.ServiceName=void 0,(r=e.ServiceName||(e.ServiceName={})).MESSAGE="message",r.CONVERSATION="conversation",r.GROUP="group",r.USER="user",r.CONTACT="contact",e.ContactType=void 0,(i=e.ContactType||(e.ContactType={}))[i.MEMBER=0]="MEMBER",i[i.COLLEAGUE=1]="COLLEAGUE",i[i.GROUP=2]="GROUP",e.ErrorCode=void 0,(s=e.ErrorCode||(e.ErrorCode={}))[s.UnknownError=10005]="UnknownError",e.RequestApi=void 0,(a=e.RequestApi||(e.RequestApi={})).Login="/chat/member/login",a.Logout="/chat/member/logout",a.GetChatMember="/chat/member/getChatMember",a.GetGroupInfo="/chat/group/groupInfo",a.GetGroupMembers="/chat/group/groupMembers",a.JoinGroup="/chat/group/joinGroup",a.LeftGroup="/chat/group/leftGroup",a.AnonymousJoinGroup="/chat/group/anonymousJoinGroup",a.AnonymousLeftGroup="/chat/group/anonymousLeftGroup",a.CheckGroupBlock="/chat/group/checkBlock",a.GetMyGroupPermission="/chat/group/permission/getPermission",a.GetGroupPermission="/chat/group/permission/groupPermission",a.GetGroupMember="/chat/group/groupMember",a.GetGroupMemberPermission="/chat/group/permission/groupMemberPermission",a.UpdateGroupPermission="/chat/group/permission/updateGroupPermission",a.UpdateGroupMemberPermission="/chat/group/permission/updateGroupMemberPermission",a.editeGroupName="/chat/group/operation/editeGroupName",a.editeNotification="/chat/group/operation/editeNotification",a.editeGroupCustomer="/chat/group/operation/editeGroupCustomer",a.addAdmin="/chat/group/operation/addAdmin",a.deleteAdmin="/chat/group/operation/deleteAdmin",a.pin="/chat/group/operation/pin",a.muteGroup="/chat/group/operation/muteGroup",a.muteMember="/chat/group/operation/muteMember",a.kickGroupMember="/chat/group/operation/kickGroupMember",a.muteMembers="/chat/group/operation/muteMembers",a.DissolveGroup="/chat/group/dissolve",a.GetAllConversationList="/chat/conversation/conversationList",a.GetConversationByQueryTypes="/chat/conversation/conversationListByQueryTypes",a.GetChannels="/chat/conversation/getChannels",a.MarkConversationMessageAsRead="/chat/conversation/lastRead",a.ConversationLastDelete="/chat/conversation/lastDelete",a.PinConversation="/chat/conversation/pinChat",a.MuteConversation="/chat/conversation/mute",a.UpdateLatestMessage="/chat/group/updateLatestMessage",a.GetLatestGroupChats="/chat/group/latestGroupChats",a.CheckLatestMessages="/chat/group/checkLatestMessages",a.CreateTextMessage="/chat/message/push",a.PushMessageToMember="/chat/message/push2Member",a.PushPrivateMessage="/chat/message/pushPrivateMessage",a.PushLiveMessage="/chat/message/liveGroupPush",a.GetHistoryMessageList="/chat/message/pull",a.GetLiveMessageList="/chat/message/liveGroupPull",a.GetAnonymousLiveMessageList="/chat/message/anonymousLiveGroupPull",a.PrePushCustomerMessage="/chat/message/prePushCustomerMessage",a.UploadFile="/chat/img/upload",a.UploadCredential="/chat/img/uploadCredential",a.GetContactByType="/chat/contact/contactByType",a.EditContactTag="/chat/contact/editeContactTag",a.GetContactTag="/chat/contact/getContactTag",a.AllocationContactTag="/chat/contact/allocationContactTag",a.AddGroupMembers="/chat/group/operation/addGroupMembers",a.GetFileByType="/chat/message/getFileByType",a.PinChat="/chat/member/pinChat",e.CbEvents=void 0,(c=e.CbEvents||(e.CbEvents={})).OnConnected="OnConnected",c.OnDisconnected="OnDisconnected",c.onMaxRetriesReached="onMaxRetriesReached",c.OnReconnecting="OnReconnecting",c.OnReconnected="OnReconnected",c.OnReconnectFailed="OnReconnectFailed",c.OnNetworkChange="OnNetworkChange",c.OnReceiveMessage="OnReceiveMessage",c.OnReceiveProtoMessage="OnReceiveProtoMessage",c.OnReceiveMessages="OnReceiveMessages",c.OnReceiveSubscribeMessage="OnReceiveSubscribeMessage",c.OnReceiveSystemMessage="OnReceiveSystemMessage",c.OnReceivePreMessage="OnReceivePreMessage",c.OnMessagesListLoaded="OnMessagesListLoaded",c.OnActiveConversationSync="OnActiveConversationSync",c.OnMessageSent="OnMessageSent",c.OnMessageFailed="OnMessageFailed",c.OnMessageRevoked="OnMessageRevoked",c.OnMessageDeleted="OnMessageDeleted",c.OnMessageRead="OnMessageRead",c.OnTypingStatusUpdate="OnTypingStatusUpdate",c.OnUserStatusChange="OnUserStatusChange",c.OnKickedOffline="OnKickedOffline",c.OnUserTokenInvalid="OnUserTokenInvalid",c.OnUserTokenExpired="OnUserTokenExpired",c.OnForceOffline="OnForceOffline",c.OnUserInfoUpdated="OnUserInfoUpdated",c.OnGroupCreated="OnGroupCreated",c.OnGroupInfoUpdated="OnGroupInfoUpdated",c.OnGroupDissolved="OnGroupDissolved",c.OnJoinGroup="OnJoinGroup",c.OnLeaveGroup="OnLeaveGroup",c.OnGroupMemberJoined="OnGroupMemberJoined",c.OnGroupMemberLeft="OnGroupMemberLeft",c.OnGroupMemberKicked="OnGroupMemberKicked",c.OnGroupOwnerChanged="OnGroupOwnerChanged",c.OnGroupAdminAdded="OnGroupAdminAdded",c.OnGroupAdminRemoved="OnGroupAdminRemoved",c.OnGroupMemberMuted="OnGroupMemberMuted",c.OnGroupMemberUnmuted="OnGroupMemberUnmuted",c.OnGroupAllMemberMuted="OnGroupAllMemberMuted",c.OnGroupAllMemberUnmuted="OnGroupAllMemberUnmuted",c.OnConversationCreated="OnConversationCreated",c.OnConversationDeleted="OnConversationDeleted",c.OnConversationListUpdated="OnConversationListUpdated",c.OnConversationUpdated="OnConversationUpdated",c.OnUnreadCountChanged="OnUnreadCountChanged",c.OnConversationPinned="OnConversationPinned",c.OnConversationUnpinned="OnConversationUnpinned",c.OnConversationMuted="OnConversationMuted",c.OnConversationUnmuted="OnConversationUnmuted",c.OnPongConn="OnPongConn",c.OnPongReConn="OnPongReConn",c.OnPongIdle="OnPongIdle",c.OnError="OnError",c.OnWarning="OnWarning",c.OnLog="OnLog";var m,f,y,C,T,E,S,b,P,M=/*#__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,(m=e.GroupType||(e.GroupType={}))[m.PrivateChat=0]="PrivateChat",m[m.PrivateGroup=1]="PrivateGroup",m[m.PublicGroup=2]="PublicGroup",m[m.CustomerService=3]="CustomerService",m[m.LiveGroup=4]="LiveGroup",m[m.ChanneRoom=5]="ChanneRoom",e.MessageType=void 0,(f=e.MessageType||(e.MessageType={}))[f.TEXT=0]="TEXT",f[f.IMAGE=1]="IMAGE",f[f.FILE=2]="FILE",f[f.AUDIO=3]="AUDIO",f[f.VIDEO=4]="VIDEO",f[f.LINK=5]="LINK",f[f.GIF=6]="GIF",f[f.OPTION=7]="OPTION",f[f.EMOJI=8]="EMOJI",f[f.CUSTOM=100]="CUSTOM",e.SseEventType=void 0,(y=e.SseEventType||(e.SseEventType={}))[y.EVENT_PONG_CONN=0]="EVENT_PONG_CONN",y[y.EVENT_PONG_RE_CONN=1]="EVENT_PONG_RE_CONN",y[y.EVENT_PONG_IDLE=2]="EVENT_PONG_IDLE",y[y.EVENT_MESSAGE_PUSH=3]="EVENT_MESSAGE_PUSH",y[y.EVENT_SYSTEM_MESSAGE_PUSH=4]="EVENT_SYSTEM_MESSAGE_PUSH",y[y.EVENT_LIVE_SYSTEM_MESSAGE_PUSH=5]="EVENT_LIVE_SYSTEM_MESSAGE_PUSH",y[y.EVENT_PRE_MESSAGE_PUSH=6]="EVENT_PRE_MESSAGE_PUSH",y[y.EVENT_SUBSCRIBE_MESSAGE_PUSH=7]="EVENT_SUBSCRIBE_MESSAGE_PUSH",e.GroupMemberEventType=void 0,(C=e.GroupMemberEventType||(e.GroupMemberEventType={}))[C.JOIN=0]="JOIN",C[C.LEFT=1]="LEFT",C[C.LAST_READ_UPDATE=2]="LAST_READ_UPDATE",C[C.PERMISSION_UPDATE=3]="PERMISSION_UPDATE",C[C.IDENTITY_UPDATE=4]="IDENTITY_UPDATE",C[C.PING_UPDATE=5]="PING_UPDATE",e.GroupEventType=void 0,(T=e.GroupEventType||(e.GroupEventType={}))[T.JOIN=0]="JOIN",T[T.LEFT=1]="LEFT",T[T.INVITE_JOIN=2]="INVITE_JOIN",T[T.CREATE_GROUP=3]="CREATE_GROUP",T[T.GROUP_DISSOLVE=4]="GROUP_DISSOLVE",T[T.PERMISSION_UPDATE=5]="PERMISSION_UPDATE",T[T.INFO_EDIT_NAME_UPDATE=6]="INFO_EDIT_NAME_UPDATE",T[T.INFO_NOTIFICATION_UPDATE=7]="INFO_NOTIFICATION_UPDATE",T[T.INFO_EDIT_CUSTOM_UPDATE=8]="INFO_EDIT_CUSTOM_UPDATE",T[T.ADD_ADMIN=9]="ADD_ADMIN",T[T.INFO_EDIT_ALL_UPDATE=10]="INFO_EDIT_ALL_UPDATE",T[T.PING_UPDATE=11]="PING_UPDATE",T[T.UNPING_UPDATE=12]="UNPING_UPDATE",T[T.KICK_UPDATE=13]="KICK_UPDATE",T[T.DELETE_ADMIN=14]="DELETE_ADMIN",T[T.GROUP_MEMBER_EVENT_TYPE_PERMISSION_UPDATE=15]="GROUP_MEMBER_EVENT_TYPE_PERMISSION_UPDATE",T[T.GROUP_MEMBER_EVENT_TYPE_SUPPORT_UPDATE=16]="GROUP_MEMBER_EVENT_TYPE_SUPPORT_UPDATE",e.SystemMessageType=void 0,(E=e.SystemMessageType||(e.SystemMessageType={}))[E.GroupMemberPermissionChange=3]="GroupMemberPermissionChange",E[E.GroupPermissionChange=4]="GroupPermissionChange",e.ConnectionProtocol=void 0,(S=e.ConnectionProtocol||(e.ConnectionProtocol={})).SSE="sse",S.WEBSOCKET="websocket",e.ConversationQueryType=void 0,(b=e.ConversationQueryType||(e.ConversationQueryType={}))[b.NonCustomer=0]="NonCustomer",b[b.CustomerService=3]="CustomerService",b[b.PrivateChat=4]="PrivateChat",b[b.GroupChats=5]="GroupChats",b[b.ConnectedServiceList=6]="ConnectedServiceList",b[b.ChannelList=7]="ChannelList",e.ConnectionCloseReason=void 0,(P=e.ConnectionCloseReason||(e.ConnectionCloseReason={})).ServerClosed="ServerClosed",P.AuthError="AuthError",P.Abnormal="Abnormal";var O="undefined"!=typeof uni,G="undefined"!=typeof window;function A(){return"undefined"!=typeof uni&&"function"==typeof uni.getStorageSync&&"function"==typeof uni.setStorageSync&&"function"==typeof uni.removeStorageSync}var R=function(e){if(A())try{var t=uni.getStorageSync(e);return null==t||""===t?null:"string"==typeof t?t:JSON.stringify(t)}catch(e){return null}return"undefined"!=typeof localStorage?localStorage.getItem(e):null},k=function(e,t){if(A())try{uni.setStorageSync(e,t)}catch(t){console.error("[persistenceStorage] setItem",e,t)}else"undefined"!=typeof localStorage&&localStorage.setItem(e,t)},I=function(e){if(A())try{uni.removeStorageSync(e)}catch(e){}else"undefined"!=typeof localStorage&&localStorage.removeItem(e)},N=function(){if(A()&&"function"==typeof uni.getStorageInfoSync)try{var e,t=null==(e=uni.getStorageInfoSync())?void 0:e.keys;return t?[].concat(t):[]}catch(e){return[]}return"undefined"!=typeof localStorage?Object.keys(localStorage):[]},_="simsdk_",U={CONVERSATIONS:_+"conversations",USER_INFO:_+"user_info"},L=_+"group_messages",w={MAX_CONVERSATIONS:9999},D=/*#__PURE__*/function(){function t(e){var t=void 0===e?{}:e,n=t.persistEnabled,o=void 0===n||n,r=t.debug,i=void 0!==r&&r,s=t.config,a=void 0===s?{}:s;this.conversationCacheByQueryType={},this.conversationIdToQueryType={},this.groupIdToQueryTypes={},this.pinnedConversationOrder=new Map,this.userInfo={},this.currentUsername=void 0,this.activeConversation=void 0,this.persistEnabled=void 0,this.debug=void 0,this.config=void 0,this.persistEnabled=o,this.debug=i,this.config=g({},w,a)}var n=t.prototype;return n.setDebug=function(e){this.debug=e},n.initialize=function(e){var t=this;this.currentUsername&&this.currentUsername!==e&&(this.debug&&console.log("User switched from "+this.currentUsername+" to "+e+", clearing cache"),this.clear()),this.currentUsername=e,this.userInfo.username=e,this.persistEnabled&&(this.loadFromStorage(),this.purgeLegacyGroupMessageStorage()),this.debug&&(console.log("Cache initialized for user:",e),console.log("Loaded conversations by queryType:",Object.keys(this.conversationCacheByQueryType).reduce(function(e,n){return e+t.conversationCacheByQueryType[n].length},0)))},n.getQueryTypeKey=function(e){return String(null!=e?e:3)},n.getConversationBucket=function(e){var t=this.getQueryTypeKey(e);return this.conversationCacheByQueryType[t]||(this.conversationCacheByQueryType[t]=[]),this.conversationCacheByQueryType[t]},n.getQueryTypesForGroup=function(e){return this.groupIdToQueryTypes[e]||new Set},n.syncConversationPrimaryQueryType=function(e){var t=this.getQueryTypesForGroup(e);if(0!==t.size){var n=Math.min.apply(Math,Array.from(t));Number.isFinite(n)?this.conversationIdToQueryType[e]=n:delete this.conversationIdToQueryType[e]}else delete this.conversationIdToQueryType[e]},n.registerGroupQueryType=function(e,t){var n=Number(t);Number.isFinite(n)?(this.groupIdToQueryTypes[e]||(this.groupIdToQueryTypes[e]=new Set),this.groupIdToQueryTypes[e].add(n),this.syncConversationPrimaryQueryType(e)):this.debug&&console.warn("[CacheManager] registerGroupQueryType: 忽略非法 queryType",{groupId:e,qt:t})},n.unregisterGroupQueryType=function(e,t){var n=Number(t);if(Number.isFinite(n)){var o=this.groupIdToQueryTypes[e];o&&(o.delete(n),0===o.size&&delete this.groupIdToQueryTypes[e],this.syncConversationPrimaryQueryType(e))}},n.rebuildGroupIdToQueryTypesFromBuckets=function(){var e=this;this.groupIdToQueryTypes={};for(var t=0,n=Object.keys(this.conversationCacheByQueryType);t<n.length;t++){var o=n[t],r=Number(o);if(!Number.isNaN(r)){var i=this.conversationCacheByQueryType[o];if(i)for(var s,a=l(i);!(s=a()).done;){var c=s.value.groupId;this.groupIdToQueryTypes[c]||(this.groupIdToQueryTypes[c]=new Set),this.groupIdToQueryTypes[c].add(r)}}}Object.keys(this.groupIdToQueryTypes).forEach(function(t){e.syncConversationPrimaryQueryType(Number(t))})},n.clear=function(){this.conversationCacheByQueryType={},this.conversationIdToQueryType={},this.groupIdToQueryTypes={},this.pinnedConversationOrder.clear(),this.persistEnabled&&this.clearCurrentUserStorage(),this.debug&&console.log("Cache cleared")},n.clearCurrentUserStorage=function(){try{if(!this.currentUsername)return void this.clearStorage();var e=this.getUserStorageKey(U.CONVERSATIONS);N().filter(function(t){return t===e||t.startsWith(e+".")}).forEach(function(e){return I(e)});var t=this.getUserStorageKey(U.USER_INFO);I(t),this.purgeLegacyGroupMessageStorage()}catch(e){console.error("Failed to clear current user storage:",e)}},n.getConversations=function(e){var t=this.getConversationBucket(e);return[].concat(t)},n.getQueryTypesWithData=function(){var e=this;return new Set(Object.keys(this.conversationCacheByQueryType).filter(function(t){var n,o;return(null!=(n=null==(o=e.conversationCacheByQueryType[t])?void 0:o.length)?n:0)>0}).map(function(e){return Number(e)}))},n.getQueryTypesContainingConversationInBuckets=function(e){for(var t=[],n=0,o=Object.keys(this.conversationCacheByQueryType);n<o.length;n++){var r,i=o[n],s=Number(i);Number.isNaN(s)||null!=(r=this.conversationCacheByQueryType[i])&&r.some(function(t){return t.groupId===e})&&t.push(s)}return t},n.clearConversationUnread=function(e){for(var t,n=l(this.getQueryTypesForGroup(e));!(t=n()).done;){var o=t.value,r=this.getConversationBucket(o).find(function(t){return t.groupId===e});r&&(r.unreadCount=0,this.persistEnabled&&this.saveConversationsToStorageByQueryType(o))}},n.updateConversationLastRead=function(e,t){for(var n,o=l(this.getQueryTypesForGroup(e));!(n=o()).done;){var r=n.value,i=this.getConversationBucket(r).find(function(t){return t.groupId===e});i&&(i.lastRead=t,i.unreadCount=0,this.persistEnabled&&this.saveConversationsToStorageByQueryType(r))}},n.clearAllConversationUnread=function(){var e=this;this.getQueryTypesWithData().forEach(function(t){e.conversationCacheByQueryType[t].forEach(function(e){e.unreadCount>0&&(e.unreadCount=0)}),e.persistEnabled&&e.saveConversationsToStorageByQueryType(t)})},n.getActiveConversation=function(){return this.activeConversation},n.setConversations=function(e,t,n){var o,r=this;if(void 0===t&&(t=!1),null==n||Number.isNaN(Number(n)))console.warn("[CacheManager] setConversations: queryType is required");else{var i,s=null!=(o=this.conversationCacheByQueryType[n])?o:[],a=new Set(s.map(function(e){return e.groupId}));i=e.length>this.config.MAX_CONVERSATIONS?e.slice(0,this.config.MAX_CONVERSATIONS):[].concat(e);var c=new Set(i.map(function(e){return e.groupId}));if(a.forEach(function(e){c.has(e)||r.unregisterGroupQueryType(e,n)}),c.forEach(function(e){r.registerGroupQueryType(e,n)}),this.conversationCacheByQueryType[n]=i,t)this.pinnedConversationOrder.clear(),i.forEach(function(e,t){e.pin&&r.pinnedConversationOrder.set(e.groupId,t)});else{var u=-1;this.pinnedConversationOrder.forEach(function(e){e>u&&(u=e)}),i.forEach(function(e,t){var n=e.groupId;e.pin&&!r.pinnedConversationOrder.has(n)&&r.pinnedConversationOrder.set(n,u+t+1)})}this.sortConversations(n),this.persistEnabled&&this.saveConversationsToStorageByQueryType(n)}},n.updateConversation=function(e){var t=e.groupId;if(null==t||Number.isNaN(Number(t)))console.warn("[CacheManager] updateConversation: missing valid groupId");else{var n=this.getQueryTypesForGroup(t);if(0!==n.size)for(var o,r=l(n);!(o=r()).done;){var i=o.value,s=this.getConversationBucket(i),a=s.findIndex(function(e){return e.groupId===t});a>=0?s[a]=g({},e):(s.push(g({},e)),s.length>this.config.MAX_CONVERSATIONS&&this.enforceConversationLimit(i)),this.sortConversations(i),this.persistEnabled&&this.saveConversationsToStorageByQueryType(i)}else console.warn("[CacheManager] updateConversation: no queryType list for groupId",t,"(mapping comes from getConversations; pull the list for the needed queryType first)")}},n.updateConversationPinStatus=function(e,t){for(var n,o=!1,r=!1,i=l(this.getQueryTypesForGroup(e));!(n=i()).done;){var s=n.value,a=this.getConversationBucket(s),c=a.findIndex(function(t){return t.groupId===e});if(-1!==c){o=!0;var u=a[c];r=r||!0===u.pin,u.pin=t,this.sortConversations(s),this.persistEnabled&&this.saveConversationsToStorageByQueryType(s)}}if(o)if(t&&!r){var d=-1;this.pinnedConversationOrder.forEach(function(e){e>d&&(d=e)}),this.pinnedConversationOrder.set(e,d+1)}else!t&&r&&this.pinnedConversationOrder.delete(e)},n.getQueryTypeForConversation=function(e){if(void 0!==this.conversationIdToQueryType[e])return this.conversationIdToQueryType[e];for(var t=0,n=Object.keys(this.conversationCacheByQueryType);t<n.length;t++){var o=n[t],r=this.conversationCacheByQueryType[o];if(null!=r&&r.some(function(t){return t.groupId===e}))return Number(o)}},n.updateConversationMuteStatus=function(e,t){for(var n,o=l(this.getQueryTypesForGroup(e));!(n=o()).done;){var r=n.value,i=this.getConversationBucket(r),s=i.findIndex(function(t){return t.groupId===e});-1!==s&&(i[s].mute=t,this.sortConversations(r),this.persistEnabled&&this.saveConversationsToStorageByQueryType(r))}},n.updateConversationSupportInfo=function(e,t,n){if(null==e||Number.isNaN(Number(e)))return[];var o=this.getQueryTypesForGroup(e);if(0===o.size){o=new Set;for(var r=0,i=Object.keys(this.conversationCacheByQueryType);r<i.length;r++){var s,a=i[r],c=Number(a);Number.isNaN(c)||null!=(s=this.conversationCacheByQueryType[a])&&s.some(function(t){return t.groupId===e})&&o.add(c)}}for(var u,d=[],g=l(o);!(u=g()).done;){var h=u.value,p=this.getConversationBucket(h),v=p.findIndex(function(t){return t.groupId===e});-1!==v&&(p[v].supportId=t,p[v].supportNick=n,d.push(h),this.sortConversations(h),this.persistEnabled&&this.saveConversationsToStorageByQueryType(h))}return d},n.updateConversationWithMessage=function(t,n){var o;if(!t.groupId)return{updated:!1};var r=t.groupId,i=e.ConversationQueryType.ConnectedServiceList,s=e.ConversationQueryType.CustomerService,a=this.getConversationBucket(i),c=this.getConversationBucket(s),u=new Set(this.getQueryTypesForGroup(r)),d=a.some(function(e){return e.groupId===r}),h=c.some(function(e){return e.groupId===r});if(d&&!h&&u.add(i),0===u.size)return{updated:!1};for(var p,v=!1,m=(null==(o=this.activeConversation)?void 0:o.groupId)===r,f=l(u);!(p=f()).done;){var y,C=p.value,T=this.getConversationBucket(C),E=T.findIndex(function(e){return e.groupId===r});if(-1!==E){var S=T[E],b=(null==(y=S.latest)?void 0:y.msgId)||0;m?(S.unreadCount=0,S.lastRead=t.msgId):n!==t.username&&(S.unreadCount+=t.msgId>b?t.msgId-b:1),S.latest=t,this.sortConversations(C),this.persistEnabled&&this.saveConversationsToStorageByQueryType(C),v=!0}}var P=a.findIndex(function(e){return e.groupId===r}),M=c.findIndex(function(e){return e.groupId===r});return P>=0&&-1===M&&(c.push(g({},a[P])),this.registerGroupQueryType(r,s),c.length>this.config.MAX_CONVERSATIONS&&this.enforceConversationLimit(s),this.sortConversations(s),this.persistEnabled&&this.saveConversationsToStorageByQueryType(s),v=!0,u.add(s)),v?{updated:!0,queryTypes:u}:{updated:!1}},n.sortConversations=function(e){var t=this;(void 0!==e?[this.getQueryTypeKey(e)]:Object.keys(this.conversationCacheByQueryType)).forEach(function(e){var n=t.conversationCacheByQueryType[e];n&&n.sort(function(e,n){var o,r,i,s,a=!0===e.pin,c=!0===n.pin;if(a&&!c)return-1;if(!a&&c)return 1;if(a&&c)return(null!=(i=t.pinnedConversationOrder.get(e.groupId))?i:0)-(null!=(s=t.pinnedConversationOrder.get(n.groupId))?s:0);var u=(null==(o=e.latest)?void 0:o.createTime)||0;return((null==(r=n.latest)?void 0:r.createTime)||0)-u})})},n.enforceConversationLimit=function(e){var t=this;if(!(this.getConversationBucket(e).length<=this.config.MAX_CONVERSATIONS)){this.sortConversations(e);var n=this.getQueryTypeKey(e),o=this.conversationCacheByQueryType[n],r=o.slice(0,this.config.MAX_CONVERSATIONS),i=new Set(r.map(function(e){return e.groupId}));o.forEach(function(n){i.has(n.groupId)||t.unregisterGroupQueryType(n.groupId,e)}),this.conversationCacheByQueryType[n]=r}},n.getUserStorageKey=function(e){return this.currentUsername?e+"_"+this.currentUsername:e},n.loadFromStorage=function(){var e=this;try{var t=this.getUserStorageKey(U.CONVERSATIONS);this.conversationCacheByQueryType={},this.conversationIdToQueryType={},this.groupIdToQueryTypes={};var n=R(t);if(n)try{var o=JSON.parse(n);Array.isArray(o)&&(this.conversationCacheByQueryType[String(3)]=o)}catch(e){this.conversationCacheByQueryType[String(3)]=[]}var r=t+".";if(N().forEach(function(t){if(t.startsWith(r)){var n=t.slice(r.length),o=Number(n);if(!Number.isNaN(o)){var i=R(t);if(i)try{var s=JSON.parse(i);Array.isArray(s)&&(e.conversationCacheByQueryType[String(o)]=s)}catch(t){e.conversationCacheByQueryType[String(o)]=[]}}}}),0===Object.keys(this.conversationCacheByQueryType).length&&(this.conversationCacheByQueryType[String(3)]=[]),this.rebuildGroupIdToQueryTypesFromBuckets(),this.debug){var i=Object.keys(this.conversationCacheByQueryType).map(function(t){var n,o;return{queryType:t,count:null!=(n=null==(o=e.conversationCacheByQueryType[t])?void 0:o.length)?n:0}});console.log("[CacheManager][persist] loadConversations",{user:this.currentUsername,prefix:t,legacyFlatKey:!!n,buckets:i})}var s=this.getUserStorageKey(U.USER_INFO),a=R(s);this.userInfo=a?JSON.parse(a):{username:this.currentUsername}}catch(e){console.error("Failed to load cache from storage:",e),this.clearStorage()}},n.saveConversationsToStorageByQueryType=function(e){try{var t,n=this.getUserStorageKey(U.CONVERSATIONS)+"."+e;k(n,JSON.stringify(null!=(t=this.conversationCacheByQueryType[e])?t:[]))}catch(e){console.error("Failed to save conversations to storage:",e),this.handleStorageError()}},n.saveConversationsToStorage=function(){var e=this;try{if(Object.keys(this.conversationCacheByQueryType).forEach(function(t){var n=e.getUserStorageKey(U.CONVERSATIONS)+"."+t;k(n,JSON.stringify(e.conversationCacheByQueryType[t]))}),this.debug){var t=Object.keys(this.conversationCacheByQueryType).map(function(t){var n,o;return{queryType:t,count:null!=(n=null==(o=e.conversationCacheByQueryType[t])?void 0:o.length)?n:0}});console.log("[CacheManager][persist] saveConversations",{user:this.currentUsername,prefix:this.getUserStorageKey(U.CONVERSATIONS),buckets:t})}}catch(e){console.error("Failed to save conversations to storage:",e),this.handleStorageError()}},n.handleStorageError=function(){this.purgeLegacyGroupMessageStorage()},n.purgeLegacyGroupMessageStorage=function(){try{N().filter(function(e){return e.startsWith(L+".")}).forEach(function(e){return I(e)})}catch(e){console.error("Failed to purge legacy group message storage:",e)}},n.saveUserInfoToStorage=function(){try{var e=this.getUserStorageKey(U.USER_INFO);k(e,JSON.stringify(this.userInfo))}catch(e){console.error("Failed to save user info to storage:",e)}},n.clearStorage=function(){try{for(var e,t=l(N().filter(function(e){return e.startsWith(_)}));!(e=t()).done;)I(e.value)}catch(e){console.error("Failed to clear storage:",e)}},n.destroy=function(){this.debug&&console.log("Cache manager destroyed")},n.markConversationAsActive=function(e,t){void 0===t&&(t=!0);var n,o=this.getQueryTypesForGroup(e);if(0===o.size)return!1;for(var r,i=l(o);!(r=i()).done;){var s,a=r.value,c=this.getConversationBucket(a).find(function(t){return t.groupId===e});c&&(n||(n=c),t&&c.unreadCount>0&&(c.unreadCount=0,null!=(s=c.latest)&&s.msgId&&(c.lastRead=c.latest.msgId),this.persistEnabled&&this.saveConversationsToStorageByQueryType(a)))}return!!n&&(this.activeConversation=g({},n),!0)},n.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},t}(),B=/*#__PURE__*/function(){function n(e){this.url=void 0,this.token=void 0,this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimeout=2e3*Math.random()+3e3,this.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 o=n.prototype;return o.debugLog=function(e){var t;this.debug&&(t=console).log.apply(t,["[SSE] "+e].concat([].slice.call(arguments,1)))},o.debugError=function(e){var t;this.debug&&(t=console).error.apply(t,["[SSE] "+e].concat([].slice.call(arguments,1)))},o.debugWarn=function(e){var t;this.debug&&(t=console).warn.apply(t,["[SSE] "+e].concat([].slice.call(arguments,1)))},o.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)}))},o.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()},o.connect=function(){var n=this;return this.connected&&this.eventSource?Promise.reject(new Error("SSE is already connected!")):new Promise(function(o,r){try{n.eventSource=new t.EventSourcePolyfill(n.url,{heartbeatTimeout:36e5,withCredentials:!1,headers:{Authorization:"Bearer "+n.token}}),n._openHandler=function(e){n.debugLog("SSE connection established"),n.connected=!0,n.onConnectionChangeCallback&&n.onConnectionChangeCallback(!0),n.reconnectAttempts>0&&n.onReconnectSuccessCallback&&n.onReconnectSuccessCallback(),n.reconnectAttempts=0,n.reconnectTimeout=5e3,o("SSE connect successful!")},n._errorHandler=function(t){n.debugError("SSE connection error:",t),n.connected=!1,n.onConnectionChangeCallback&&n.onConnectionChangeCallback(!1),401===t.status||t.statusText&&t.statusText.includes("Unauthorized")?(n.cleanup(),n.connectTimeoutRef&&(clearTimeout(n.connectTimeoutRef),n.connectTimeoutRef=null),n.notifyConnectionClosed({reason:e.ConnectionCloseReason.AuthError})):n.handleReconnect(),n.connected||r(new Error("SSE connect error"))},n._messageHandler=function(e){try{n.debugLog("SSE received message:",e.data);var t=JSON.parse(e.data);n.onMessageCallback&&n.onMessageCallback(t)}catch(e){n.debugError("Error parsing message:",e)}},n.eventSource.addEventListener("open",n._openHandler),n.eventSource.addEventListener("error",n._errorHandler),n.eventSource.addEventListener("message",n._messageHandler),n.handlers.forEach(function(e,t){var o=n._customHandlers.get(t);o&&n.eventSource&&n.eventSource.addEventListener(t,o)}),n.connectTimeoutRef=setTimeout(function(){n.connected||(r(new Error("Connection timeout")),n.handleReconnect())},n.connectTimeout);var i=n._openHandler;n._openHandler=function(e){clearTimeout(n.connectTimeoutRef),i(e)}}catch(e){n.debugError("Failed to create EventSource:",e),n.handleReconnect(),r(e)}})},o.notifyConnectionClosed=function(t){this.onConnectionClosedCallback&&this.onConnectionClosedCallback(t),t.reason===e.ConnectionCloseReason.AuthError?this.debugWarn("SSE connection closed due to authentication error"):this.debugLog("SSE connection closed")},o.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)}},o.cleanup=function(){this.eventSource&&(this.removeAllEventListeners(),this.eventSource.close(),this.eventSource=null),this.connected=!1},o.unsubscribe=function(){this.cleanup(),this.handlers.clear(),this._customHandlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)},o.destroySse=function(){this.unsubscribe(),this.isDestroyed=!0,this.notifyConnectionClosed({reason:e.ConnectionCloseReason.Abnormal})},o.close=function(){this.destroySse(),this.debugLog("SSE 连接已关闭")},o.isConnected=function(){return this.connected},o.send=function(e){var t="当前协议不可用:SSE 是单向通信协议,不支持客户端向服务器发送消息";throw this.debugError(t),new Error(t)},n}(),q=/*#__PURE__*/function(){function t(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.lastPingTime=0,this.pingCheckTimer=null,this.pageVisibilityHandler=null,this.isPageVisible=!0,this.lastVisibleTime=Date.now(),this.PING_TIMEOUT=12e4,this.PING_CHECK_INTERVAL=5e3,this.RECONNECT_DELAY=3e3,this.PAGE_HIDDEN_TOLERANCE=6e4,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,this.initPageVisibilityDetection()}var n=t.prototype;return n.debugLog=function(e){var t;this.debug&&(t=console).log.apply(t,["[WebSocket] "+e].concat([].slice.call(arguments,1)))},n.debugError=function(e){var t;this.debug&&(t=console).error.apply(t,["[WebSocket] "+e].concat([].slice.call(arguments,1)))},n.debugWarn=function(e){var t;this.debug&&(t=console).warn.apply(t,["[WebSocket] "+e].concat([].slice.call(arguments,1)))},n.subscribe=function(e,t){this.handlers.set(e,t),this.websocket?this.addMessageHandler(e,t):this.connect()},n.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)}})},n.connect=function(){var t=this;return this.connected&&this.websocket?Promise.reject(new Error("WebSocket is already connected!")):new Promise(function(n,o){try{var r=new URL(t.url);r.searchParams.set("token",t.token),t.websocket=new WebSocket(r.toString()),t.websocket.binaryType="arraybuffer",t.connectTimeoutRef=setTimeout(function(){t.connected||(o(new Error("WebSocket connection timeout")),t.handleReconnect())},t.connectTimeout),t.websocket.onopen=function(e){t.debugLog("WebSocket connection established"),t.connected=!0,clearTimeout(t.connectTimeoutRef),t.lastPingTime=Date.now(),t.startPingTimeoutCheck(),t.onConnectionChangeCallback&&t.onConnectionChangeCallback(!0),t.reconnectAttempts>0&&t.onReconnectSuccessCallback&&t.onReconnectSuccessCallback(),t.reconnectAttempts=0,t.reconnectTimeout=5e3,n("WebSocket connect successful!")},t.websocket.onerror=function(e){t.debugError("WebSocket connection error:",e),t.connected=!1,clearTimeout(t.connectTimeoutRef),t.onConnectionChangeCallback&&t.onConnectionChangeCallback(!1),t.handleReconnect(),t.connected||o(new Error("WebSocket connect error"))},t.websocket.onclose=function(n){if(t.debugLog("WebSocket connection closed:",{code:n.code,reason:n.reason,wasClean:n.wasClean}),t.connected=!1,1003===n.code)return t.debugLog("WebSocket closed normally (NORMAL_CLOSURE), will not reconnect"),t.cleanup(),void t.notifyConnectionClosed({reason:e.ConnectionCloseReason.ServerClosed});n.reason&&n.reason.includes("Unauthorized")?(t.debugLog("WebSocket closed due to auth error, will not reconnect"),t.cleanup(),t.notifyConnectionClosed({reason:e.ConnectionCloseReason.AuthError})):(t.debugLog("WebSocket closed abnormally, will reconnect"),t.notifyConnectionClosed({reason:e.ConnectionCloseReason.Abnormal}),t.handleReconnect())},t.websocket.onmessage=function(e){try{e.data instanceof ArrayBuffer?t.handleBinaryMessage(e.data):t.handleTextMessage(e.data),t.lastPingTime=Date.now()}catch(e){t.debugError("Error handling WebSocket message:",e)}},t.handlers.forEach(function(e,n){t.addMessageHandler(n,e)})}catch(e){t.debugError("Failed to create WebSocket:",e),t.handleReconnect(),o(e)}})},n.notifyConnectionClosed=function(t){this.onConnectionClosedCallback&&this.onConnectionClosedCallback(t),t.reason===e.ConnectionCloseReason.AuthError?this.debugWarn("WebSocket connection closed due to authentication error"):this.debugLog(t.reason===e.ConnectionCloseReason.ServerClosed?"WebSocket connection closed by server (normal)":"WebSocket connection closed")},n.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... (attempt "+(this.reconnectAttempts+1)+"/"+this.maxReconnectAttempts+")"),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.handleBinaryMessage=function(e){var t=new DataView(e);if(!(e.byteLength<1)){var n=t.getUint8(0);if(125===n&&e.byteLength>=9){var o=t.getBigInt64(1,!1);return this.debugLog("收到服务端心跳 ping:",o.toString()),this.lastPingTime=Date.now(),void this.sendPong(o)}this.onMessageCallback?this.onMessageCallback(new Uint8Array(e)):this.debugLog("收到二进制消息,类型:","0x"+n.toString(16),"长度:",e.byteLength)}},n.handleTextMessage=function(e){try{this.debugLog("WebSocket received text message:",e);var t=JSON.parse(e);if("pong"===t.type||2===t.ev)return this.connected=!0,void(this.lastPingTime=Date.now());this.onMessageCallback&&this.onMessageCallback(t)}catch(e){this.debugError("Error parsing WebSocket text message:",e)}},n.sendPong=function(e){if(this.websocket&&this.websocket.readyState===WebSocket.OPEN)try{var t=new ArrayBuffer(9),n=new DataView(t);n.setUint8(0,126),n.setBigInt64(1,e,!1),this.websocket.send(t),this.debugLog("已回复心跳 pong, timestamp:",e.toString())}catch(e){this.debugError("Failed to send pong:",e)}else this.debugWarn("WebSocket is not open, cannot send pong")},n.initPageVisibilityDetection=function(){var e=this;"undefined"!=typeof document&&(this.isPageVisible=!document.hidden,this.lastVisibleTime=Date.now(),this.pageVisibilityHandler=function(){var t=e.isPageVisible;if(e.isPageVisible=!document.hidden,t&&!e.isPageVisible)e.lastVisibleTime=Date.now(),e.debugLog("Page became hidden, pausing ping timeout check");else if(!t&&e.isPageVisible){var n=Date.now()-e.lastVisibleTime;e.debugLog("Page became visible after "+n+"ms"),e.websocket&&e.websocket.readyState===WebSocket.OPEN&&n>e.PAGE_HIDDEN_TOLERANCE&&(e.debugLog("Page was hidden for a long time, adjusting ping time"),e.lastPingTime=Date.now()-(e.PING_TIMEOUT-e.PAGE_HIDDEN_TOLERANCE))}},document.addEventListener("visibilitychange",this.pageVisibilityHandler))},n.startPingTimeoutCheck=function(){var t=this;this.stopPingTimeoutCheck(),this.pingCheckTimer=window.setInterval(function(){if(!t.isDestroyed&&t.websocket)if(t.isPageVisible){if(t.websocket.readyState!==WebSocket.OPEN)return t.debugWarn("WebSocket state is "+t.websocket.readyState+", connection may be broken"),t.connected=!1,t.stopPingTimeoutCheck(),t.notifyConnectionClosed({reason:e.ConnectionCloseReason.Abnormal}),void t.delayedReconnect();var n=Date.now()-t.lastPingTime;n>t.PING_TIMEOUT?(t.debugWarn("Ping timeout: "+n+"ms since last ping, connection may be broken"),t.connected=!1,t.notifyConnectionClosed({reason:e.ConnectionCloseReason.Abnormal}),t.delayedReconnect()):t.debugLog("Last ping received "+n+"ms ago")}else t.debugLog("Page is hidden, skipping ping timeout check");else t.stopPingTimeoutCheck()},this.PING_CHECK_INTERVAL)},n.stopPingTimeoutCheck=function(){null!==this.pingCheckTimer&&(clearInterval(this.pingCheckTimer),this.pingCheckTimer=null)},n.delayedReconnect=function(){var e=this;null===this.reconnectTimer&&(this.debugLog("Delaying reconnect for "+this.RECONNECT_DELAY/1e3+" seconds to prevent reconnect storm..."),this.cleanup(),this.reconnectTimer=window.setTimeout(function(){e.reconnectTimer=null,e.handleReconnect()},this.RECONNECT_DELAY))},n.cleanup=function(){this.stopPingTimeoutCheck(),this.websocket&&(this.websocket.close(),this.websocket=null),this.connected=!1},n.cleanupPageVisibilityDetection=function(){this.pageVisibilityHandler&&"undefined"!=typeof document&&(document.removeEventListener("visibilitychange",this.pageVisibilityHandler),this.pageVisibilityHandler=null)},n.unsubscribe=function(){this.cleanup(),this.handlers.clear(),null!==this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.cleanupPageVisibilityDetection()},n.destroyWebSocket=function(){this.unsubscribe(),this.isDestroyed=!0,this.cleanupPageVisibilityDetection(),this.notifyConnectionClosed({reason:e.ConnectionCloseReason.Abnormal})},n.close=function(){this.destroyWebSocket(),this.debugLog("WebSocket 连接已关闭")},n.isConnected=function(){var e;return this.connected&&(null==(e=this.websocket)?void 0:e.readyState)===WebSocket.OPEN},n.send=function(e){if(!this.websocket||!this.isConnected())return this.debugWarn("WebSocket is not connected, cannot send message"),!1;try{if("string"==typeof e)this.websocket.send(e),this.debugLog("WebSocket message sent (string):",e);else if(e instanceof ArrayBuffer||e instanceof Blob)this.websocket.send(e),this.debugLog("WebSocket message sent (binary):","ArrayBuffer/Blob ("+(e instanceof ArrayBuffer?e.byteLength:e.size)+" bytes)");else if(e instanceof Uint8Array||e instanceof Int8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Uint32Array||e instanceof Int32Array||e instanceof Float32Array||e instanceof Float64Array||e instanceof DataView)this.websocket.send(e),this.debugLog("WebSocket message sent (binary):","ArrayBufferView ("+e.byteLength+" bytes)");else{var t=JSON.stringify(e);this.websocket.send(t),this.debugLog("WebSocket message sent (JSON):",t)}return!0}catch(e){return this.debugError("Failed to send WebSocket message:",e),!1}},t}(),Q=["protocol"],V=/*#__PURE__*/function(){function t(){}return t.createClient=function(t){var n=t.protocol,o=h(t,Q);switch(n){case e.ConnectionProtocol.SSE:return new B(o);case e.ConnectionProtocol.WEBSOCKET:return new q(o);default:throw new Error("Unsupported connection protocol: "+n)}},t}(),j=null,F=/*#__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)}},n.getChatMember=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({data:{chatId:t,parent:n},url:e.RequestApi.GetChatMember,method:"GET"}))}catch(e){return Promise.reject(e)}},t}(),H=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return n.sendMessage=function(e,t){try{var n=this;return Promise.resolve(function(o,r){try{var i=Promise.resolve(n.sdk.sendRequest({data:e,url:t,method:"POST"}))}catch(e){return r(e)}return i&&i.then?i.then(void 0,r):i}(0,function(e){throw console.error("Failed to send message",e),e}))}catch(e){return Promise.reject(e)}},n.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,r,i){void 0===r&&(r={});var s={groupType:o};o===e.GroupType.PublicGroup||o===e.GroupType.PrivateGroup||o===e.GroupType.LiveGroup?s.groupId=n:s.receiverName=n;var a=g({},s,r,{msgType:t},i);return this.sendMessage(a,this.getMessageApi(s,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,i){void 0===i&&(i={});try{return Promise.resolve(this.createMessage(e.MessageType.IMAGE,o,r,i,{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,{link: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,i=t.size,s=void 0===i?100:i;try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.GetHistoryMessageList,method:"POST",data:{groupId:n,lastId:o,type:r,size:s}}))}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)}},n.prePushCustomerMessage=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.PrePushCustomerMessage,method:"POST"}))}catch(e){return Promise.reject(e)}},t}(),x=["queryTypes"],K=/*#__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.getConversationByQueryTypes=function(t){try{var n=this,o=t.queryTypes,r=h(t,x);return Promise.resolve(n.sdk.sendRequest({data:g({},r,{queryTypes:o.join(",")}),url:e.RequestApi.GetConversationByQueryTypes,method:"GET"})).then(function(e){var t=e.data||{},o=new Map;return Object.entries(t).forEach(function(e){var t=e[1];o.set(Number(e[0]),t.map(n.normalizeConversation))}),e.data=o,e})}catch(e){return Promise.reject(e)}},n.getChannels=function(t){try{var n=this;return Promise.resolve(n.sdk.sendRequest({data:t,url:e.RequestApi.GetChannels,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.markLastRead=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,msgId:n},url:e.RequestApi.MarkConversationMessageAsRead,method:"GET"}))}catch(e){return Promise.reject(e)}},n.markLastDelete=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,msgId:n},url:e.RequestApi.ConversationLastDelete,method:"GET"}))}catch(e){return Promise.reject(e)}},n.pinConversation=function(t,n){void 0===n&&(n=1);try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,isTop:n},url:e.RequestApi.PinConversation,method:"GET"}))}catch(e){return Promise.reject(e)}},n.muteConversation=function(t,n){void 0===n&&(n=1);try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,mute:n},url:e.RequestApi.MuteConversation,method:"GET"}))}catch(e){return Promise.reject(e)}},n.normalizeConversation=function(e){var t,n,o,r,i,s,a,c,u,d;return g({},e,{id:e.id,groupId:null!=(t=e.groupId)?t:e.id,name:e.name||"",groupType:e.groupType||0,avatar:e.avatar||"",status:null!=(n=e.status)?n:1,latest:null!=(o=e.latest)?o:{},unreadCount:null!=(r=e.unreadCount)?r:0,lastRead:e.lastRead,draftText:null!=(i=e.draftText)?i:"",custom:null!=(s=e.custom)?s:"",groupMemberId:null!=(a=e.groupMemberId)?a:"",pin:null!=(c=e.pin)&&c,supportId:e.supportId||"",supportNick:e.supportNick||"",identity:null!=(u=e.identity)?u:1,mute:null!=(d=e.mute)&&d})},t}(),W=/*#__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,targetMemberId: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,o){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.editeGroupName,method:"GET",data:{groupId:t,name:n,avatar:o}}))}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.dissolveGroup=function(t){try{return Promise.resolve(this.sdk.sendRequest({url:e.RequestApi.DissolveGroup,method:"GET",data:{groupId:t}}))}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)}},n.addGroupMembers=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.AddGroupMembers,method:"POST"}))}catch(e){return Promise.reject(e)}},n.getFileByType=function(t){try{return Promise.resolve(this.sdk.sendRequest({data:t,url:e.RequestApi.GetFileByType,method:"GET"}))}catch(e){return Promise.reject(e)}},n.pinChat=function(t,n){try{return Promise.resolve(this.sdk.sendRequest({data:{groupId:t,type:n},url:e.RequestApi.PinChat,method:"GET"}))}catch(e){return Promise.reject(e)}},t}(),z=/*#__PURE__*/function(){function t(e){this.sdk=void 0,this.sdk=e}var n=t.prototype;return n.getContactByType=function(t,n,o,r){void 0===o&&(o=1),void 0===r&&(r=50);try{var i={contactType:t,pageNo:o,pageSize:r};return void 0!==n&&(i.groupId=n),Promise.resolve(this.sdk.sendRequest({data:i,url:e.RequestApi.GetContactByType,method:"GET"}))}catch(e){return Promise.reject(e)}},n.getMemberContacts=function(t){try{return Promise.resolve(this.getContactByType(e.ContactType.MEMBER,t))}catch(e){return Promise.reject(e)}},n.getColleagueContacts=function(t){try{return Promise.resolve(this.getContactByType(e.ContactType.COLLEAGUE,t))}catch(e){return Promise.reject(e)}},n.getGroupContacts=function(t){try{return Promise.resolve(this.getContactByType(e.ContactType.GROUP,t))}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(t){try{return Promise.resolve(this.sdk.sendRequest({data:{contactType:t},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,o){void 0===o&&(o=0);try{return Promise.resolve(this.allocationContactTag({contactType:e.ContactType.MEMBER,tag:t,groupIds:n,type:o}))}catch(e){return Promise.reject(e)}},n.allocationColleagueTag=function(t,n,o){void 0===o&&(o=0);try{return Promise.resolve(this.allocationContactTag({contactType:e.ContactType.COLLEAGUE,tag:t,groupIds:n,type:o}))}catch(e){return Promise.reject(e)}},n.allocationGroupTag=function(t,n,o){void 0===o&&(o=0);try{return Promise.resolve(this.allocationContactTag({contactType:e.ContactType.GROUP,tag:t,groupIds:n,type:o}))}catch(e){return Promise.reject(e)}},t}(),J=/*#__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 F(this.sdk);case e.ServiceName.MESSAGE:return new H(this.sdk);case e.ServiceName.CONVERSATION:return new K(this.sdk);case e.ServiceName.GROUP:return new W(this.sdk);case e.ServiceName.CONTACT:return new z(this.sdk);default:throw new Error("Unknown service: "+t)}},n.reset=function(){this.services={}},t}(),Y=["conversationQueryTypes"];function X(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var Z=[e.RequestApi.Logout,e.CbEvents.OnKickedOffline,e.CbEvents.OnUserTokenInvalid,e.CbEvents.OnUserTokenExpired],$=/*#__PURE__*/function(t){function n(o){var r;return void 0===o&&(o=!1),(r=t.call(this)||this).config={debug:!1,isLive:!1,useProtobuf:!1,protocol:e.ConnectionProtocol.SSE},r.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},r.cacheManager=void 0,r.connectionClient=void 0,r.serviceManager=void 0,r.lastUnauthorizedTime=0,r.UNAUTHORIZED_THROTTLE_MS=3e3,r.conversationUpdateTimer=null,r.CONVERSATION_UPDATE_THROTTLE_MS=500,r.pendingConversationUpdateQueryTypes=new Set,r.lastConversationUpdateTime=0,r.isPageVisible=!0,r.pageVisibilityHandler=null,r.PAGE_HIDDEN_STOP_DELAY_MS=3e3,r.pageHiddenTimer=null,r.isActuallyHidden=!1,r.PAGE_VISIBLE_STABLE_MS=1e3,r.pageVisibleStableTimer=null,r.configure=function(e){void 0!==e.debug&&(r.config.debug=e.debug),r.cacheManager.setDebug(r.config.debug),e.isLive&&(r.config.isLive=e.isLive),e.apiAddr&&(r.config.apiAddr=e.apiAddr),e.wsAddr&&(r.config.wsAddr=e.wsAddr),e.ossApiAddr&&(r.config.ossApiAddr=e.ossApiAddr),e.appKey&&(r.config.appKey=e.appKey),e.token&&(r.config.token=e.token),e.connectTimeout&&(r.config.connectTimeout=e.connectTimeout),e.maxRetries&&(r.config.maxRetries=e.maxRetries),e.useProtobuf&&(r.config.useProtobuf=e.useProtobuf),e.protocol&&(r.config.protocol=e.protocol)},r.sendRequest=function(e){try{r.internalState.lastActivity=Date.now(),r.config.debug&&r.logRequest(e);var t=r.config.apiAddr+e.url,n=e.data;if("GET"===e.method&&n){var o=new URLSearchParams;Object.entries(n).forEach(function(e){var t=e[1];null!=t&&o.append(e[0],String(t))});var i=o.toString();i&&(t+=(t.includes("?")?"&":"?")+i),n=void 0}return Promise.resolve(X(function(){return Promise.resolve(function(e){try{var t,n=function(e){if(t)return e;throw new Error("Unsupported platform")},o=function(){if(O){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(G)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:r.config.token?"Bearer "+r.config.token:""},data:n}))},function(e){throw 401!==(null==e?void 0:e.status)&&401!==(null==e?void 0:e.statusCode)||r.handleUnauthorizedWithThrottle(t),e}))}catch(e){return Promise.reject(e)}},r.handleUnauthorizedWithThrottle=function(e){var t=Date.now();t-r.lastUnauthorizedTime<r.UNAUTHORIZED_THROTTLE_MS?console.warn("401错误被节流限制,跳过处理:"+e):(r.lastUnauthorizedTime=t,r.handleUnauthorized(e))},r.handleUnauthorized=function(t){console.warn("未授权请求(401):",t),r.handleConnectionClosed({reason:e.ConnectionCloseReason.AuthError})},r.createRequestFunction=function(e,t){return function(n){return r.sendRequest({data:n,url:e,method:t})}},r.createRequestFunctionWithoutParams=function(e,t){return function(){return r.sendRequest({data:void 0,method:t,url:e})}},r.handleMessage=function(e){if(r.config.debug&&console.log("[SDK] handleMessage response",e),r.isBinaryMessage(e)){var t=r.normalizeToBinaryBuffer(e);if(!t||t.length<1)r.config.debug&&console.warn("[SDK] [Proto] 二进制消息长度不足,已忽略");else{var o=t[0];switch(o){case n.BINARY_MSG_TYPE.BYTE_MESSAGE:r.handleProtobufMessage(t).catch(function(e){console.error("[SDK] handleProtobufMessage error",e)});break;case n.BINARY_MSG_TYPE.HEARTBEAT_PONG:r.internalState.isConnected=!0,r.config.debug&&console.log("[SDK] [Proto] 收到 PONG(0x7E),已更新 isConnected");break;case n.BINARY_MSG_TYPE.HEARTBEAT_PING:r.config.debug&&console.log("[SDK] [Proto] 收到 PING(0x7D),应由连接层回复 PONG");break;default:r.config.debug&&console.warn("[SDK] [Proto] 未知二进制类型,已忽略",{messageType:"0x"+o.toString(16),length:t.length})}}}else r.handleJsonMessage(e)},r.handleJsonMessage=function(t){switch(r.config.debug&&console.log("handleMessage response",t),t.ev){case e.SseEventType.EVENT_MESSAGE_PUSH:var n=t.dt;Array.isArray(n)?(n.forEach(function(e){r.updateMessageCache(e)}),r.emit(e.CbEvents.OnReceiveMessages,n)):console.warn("[SDK] Expected response.dt to be an array, but got:",n);break;case e.SseEventType.EVENT_PONG_IDLE:r.internalState.isConnected=!0;break;case e.SseEventType.EVENT_SYSTEM_MESSAGE_PUSH:r.handleSystemMessageForConversationCache(t.dt),r.emit(e.CbEvents.OnReceiveSystemMessage,t.dt);break;case e.SseEventType.EVENT_PRE_MESSAGE_PUSH:r.emit(e.CbEvents.OnReceivePreMessage,t.dt);break;case e.SseEventType.EVENT_SUBSCRIBE_MESSAGE_PUSH:r.emit(e.CbEvents.OnReceiveSubscribeMessage,t.dt);break;default:o=t.ev,Object.values(e.CbEvents).includes(o)?(r.emit(t.ev,t.dt),Z.includes(t.ev)&&(r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1,r.connectionClient&&(r.connectionClient.close(),r.connectionClient=void 0))):r.config.debug&&console.warn("[SDK] Unknown SSE event type:",t.ev)}var o},r.handleReconnectSuccess=function(){r.config.username&&(r.internalState.isConnected=!0,r.internalState.reconnectAttempts=0,r.config.debug&&console.log("SSE reconnection successful"),r.emit(e.CbEvents.OnReconnected))},r.handleConnectionClosed=function(t){r.internalState.isConnected=!1,r.config.debug&&console.log("[SDK] Connection closed, reason:",t.reason),r.emit(e.CbEvents.OnDisconnected,t)},r.handleMaxRetriesReached=function(){r.config.debug&&console.log("SSE connection max reconnection attempts reached"),r.emit(e.CbEvents.onMaxRetriesReached)},r.handleConnectionChange=function(t){r.config.debug&&console.log("Connection status changed:",t),t?r.emit(e.CbEvents.OnConnected):r.emit(e.CbEvents.OnDisconnected,{reason:e.ConnectionCloseReason.Abnormal})},r.login=function(t){try{var n,o,i=function(i){return n?i:(r.connectionClient=V.createClient({url:r.config.wsAddr+"/"+(t.anonLogin?"anonymousConn":"conn")+"?username="+t.username+"&token="+t.token+"&appKey="+r.config.appKey+"&random="+o,protocol:r.config.protocol||e.ConnectionProtocol.WEBSOCKET,debug:r.config.debug,onMessage:r.handleMessage,onReconnectSuccess:r.handleReconnectSuccess,onConnectionClosed:r.handleConnectionClosed,onMaxRetriesReached:r.handleMaxRetriesReached,onConnectionChange:r.handleConnectionChange,token:t.token,connectTimeout:r.config.connectTimeout,maxRetries:r.config.maxRetries}),X(function(){return Promise.resolve(r.connectionClient.connect()).then(function(e){return r.internalState.isLoggedIn=!0,r.internalState.isConnected=!0,r.config.isLive||r.initializeConversationCache(),e})},function(e){return r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1,Promise.reject(e.message)}))};if(r.connectionClient&&(null==r.connectionClient.close||r.connectionClient.close(),r.connectionClient=void 0,r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1),!r.config.apiAddr)return Promise.reject("No apiAddr configured. Please call configure() before login().");if(!r.config.ossApiAddr)return Promise.reject("No ossApiAddr configured. Please call configure() before login().");if(!r.config.appKey)return Promise.reject("No appKey configured. Please call configure() before login().");if(!r.config.token)return Promise.reject("No token configured. Please call configure() before login().");if(!r.config.isLive&&(void 0===t.conversationQueryTypes||0===t.conversationQueryTypes.length))return Promise.reject("conversationQueryTypes is required on login() in non-live mode");if(r.config.conversationQueryTypes=t.conversationQueryTypes,r.config.username=t.username,r.config.anonLogin=t.anonLogin||!1,t.protocol&&(r.config.protocol=t.protocol),t.protocol==e.ConnectionProtocol.WEBSOCKET&&!r.config.wsAddr)return Promise.reject("WebSocket address (wsAddr) is not configured. Please call configure() before login().");r.config.debug&&(console.log("login params",t),console.log("apiAddr",r.config.apiAddr)),r.config.isLive&&t.anonLogin||(r.cacheManager.setDebug(r.config.debug),r.cacheManager.initialize(t.username),r.cacheManager.resetActiveConversation(),r.config.conversationQueryTypes.forEach(function(e){r.cacheManager.getConversations(e).length>0&&r.emitConversationListUpdatedForQueryType(e)}));var s=function(){if(!t.anonLogin){var e=h(t,Y);return Promise.resolve(r.user.login(g({},e,{appKey:r.config.appKey}))).then(function(e){var t=e.code,r=e.data;if(0!=t){var i=Promise.resolve("Login failed, Server error, error code is "+t);return n=1,i}o=r})}}();return Promise.resolve(s&&s.then?s.then(i):i(s))}catch(e){return Promise.reject(e)}},r.logout=function(){try{return r.connectionClient&&(r.connectionClient.close(),r.connectionClient=void 0),Promise.resolve(r.user.logout()).then(function(e){return r.internalState.isLoggedIn=!1,r.internalState.isConnected=!1,r.config.username=void 0,r.config.token=void 0,r.config.conversationQueryTypes=void 0,r.cacheManager.clear(),e})}catch(e){return Promise.reject(e)}},r.getChatMember=function(e,t){return r.user.getChatMember(e,t)},r.getConversations=function(t){try{return Promise.resolve(X(function(){var n,o=t.pageNo||1,i=null!=(n=t.pageSize)?n:50;if(null==t.queryType)return console.warn("[SDK] queryType is required"),{code:-1,msg:"queryType is required",data:{records:[],current:1,pages:0}};var s=t.queryType;if(o<1)return console.warn("[SDK] Invalid pageNo, must be >= 1"),{code:-1,msg:"Invalid pageNo, must be >= 1",data:{records:[],current:1,pages:0}};if(i<1||i>100)return console.warn("[SDK] Invalid pageSize, must be between 1 and 100"),{code:-1,msg:"Invalid pageSize, must be between 1 and 100",data:{records:[],current:1,pages:0}};if(o>=2&&s!==e.ConversationQueryType.NonCustomer&&null==t.score)return console.warn("[SDK] queryType≠0 时第二页起必须传入 score(游标分页)"),{code:-1,msg:"score is required for pageNo >= 2 when queryType is not 0 (cursor pagination)",data:{records:[],current:o,pages:0}};var a={pageNo:o,pageSize:i,queryType:s};return o>=2&&null!=t.score&&(a.score=t.score),Promise.resolve(r.conversation.getConversations(a)).then(function(e){var t=e.data;if(0===e.code&&t){var n=r.cacheManager.getConversations(s);if(1===o)r.cacheManager.setConversations([].concat(t.records),!0,s);else{var i=t.records||[],a=new Map;n.forEach(function(e){return a.set(e.id,e)});var c=[],u=[];i.forEach(function(e){a.has(e.id)?c.push(e):u.push(e)});var d=[];n.forEach(function(e){c.find(function(t){return t.id===e.id})||d.push(e)}),d.push.apply(d,c.concat(u)),r.cacheManager.setConversations(d,!1,s)}r.emitConversationListUpdatedForQueryType(s)}else r.cacheManager.getConversations(s).length>0&&r.emitConversationListUpdatedForQueryType(s);return e})},function(e){console.error("[SDK] Failed to get conversations",e);var n=t.queryType,o=null!=n?r.cacheManager.getConversations(n):[];return o.length>0&&null!=n&&r.emitConversationListUpdatedForQueryType(n),{code:-1,msg:e instanceof Error?e.message:"Failed to get conversations",data:{records:o,current:t.pageNo||1,pages:0}}}))}catch(e){return Promise.reject(e)}},r.getConversationByQueryTypes=function(e){try{return Promise.resolve(X(function(){var t=e.pageNo,n=void 0===t?1:t,o=e.pageSize,i=void 0===o?50:o,s=e.queryTypes;return n>1?(console.warn("[SDK] getConversationByQueryTypes 仅支持第一页查询"),{code:-1,msg:"Only first page is supported",data:new Map}):Promise.resolve(r.conversation.getConversationByQueryTypes({pageNo:n,pageSize:i,queryTypes:s})).then(function(e){var t=e.data;return 0===e.code&&t&&t.forEach(function(e,t){r.cacheManager.setConversations([].concat(e||[]),!0,Number(t)),r.emitConversationListUpdatedForQueryType(Number(t))}),e})},function(e){return console.error("[SDK] Failed to get conversations",e),{code:-1,msg:e instanceof Error?e.message:"Failed to get conversations",data:new Map}}))}catch(e){return Promise.reject(e)}},r.internalUploadFile=function(t,n,o){try{return Promise.resolve(X(function(){var i=""+r.config.apiAddr+e.RequestApi.UploadCredential+"?groupId="+n+"&filename="+encodeURIComponent(t.name)+"&ext="+encodeURIComponent(o);return Promise.resolve(fetch(i,{method:"GET",headers:{Authorization:r.config.token?"Bearer "+r.config.token:""}})).then(function(e){if(!e.ok)throw new Error("Get upload credential failed: "+e.status);return Promise.resolve(e.json()).then(function(e){var n=(null==e?void 0:e.data)||{};if(null==e||!e.success||null==n||!n.uploadUrl||null==n||!n.accessUrl)throw new Error((null==e?void 0:e.msg)||"Invalid upload credential response");var o=n.accessUrl;return Promise.resolve(fetch(n.uploadUrl,{method:"PUT",headers:{"Content-Type":t.type||"application/octet-stream"},body:t})).then(function(e){var r;if(!e.ok)throw new Error("Upload to OSS failed with status: "+e.status);var i=null!=(r=n.thumbnailUrl)?r:t.type.startsWith("image/")?o+(o.includes("?")?"&":"?")+"x-oss-process=image/resize,m_lfit,w_200,h_200":"";return{originalUrl:o,thumbnailUrl:i}})})})},function(e){return console.error("[Upload Error]",e),{error:e instanceof Error?e:new Error("Unknown upload error")}}))}catch(e){return Promise.reject(e)}},r.uploadFile=function(t,n){var o=t.file,i=t.ext,s=void 0===i?"":i;try{return Promise.resolve(r.internalUploadFile(o,n,s)).then(function(t){var n,o=t.originalUrl,r=t.thumbnailUrl,i=t.error;return{data:{originalUrl:void 0===o?"":o,thumbnailUrl:void 0===r?"":r},msg:null!=(n=null==i?void 0:i.message)?n:"",code:i?e.ErrorCode.UnknownError:0}})}catch(e){return Promise.reject(e)}},r.sendTextMessage=function(e,t,n,o){return r.message.createTextMessage(e,t,n,o)},r.sendImageMessage=function(e,t,n,o,i){return r.message.createImageMessage(e,t,n,o,i)},r.sendFileMessage=function(e,t,n,o){return r.message.createFileMessage(e,t,n,o)},r.sendAudioMessage=function(e,t,n,o){return r.message.createAudioMessage(e,t,n,o)},r.sendVideoMessage=function(e,t,n,o){return r.message.createVideoMessage(e,t,n,o)},r.sendLinkMessage=function(e,t,n,o){return r.message.createLinkMessage(e,t,n,o)},r.sendGifMessage=function(e,t,n,o){return r.message.createGifMessage(e,t,n,o)},r.sendOptionMessage=function(e,t,n,o){return r.message.createOptionMessage(e,t,n,o)},r.sendEmojiMessage=function(e,t,n,o){return r.message.createEmojiMessage(e,t,n,o)},r.sendCustomMessage=function(e,t,n,o){return r.message.createCustomMessage(e,t,n,o)},r.getHistoryMessageList=function(e){try{return Promise.resolve(r.message.getHistoryMessageList(e))}catch(e){return Promise.reject(e)}},r.getLiveMessageList=function(e){return r.message.getLiveMessageList(e)},r.prePushCustomerMessage=function(e){return r.message.prePushCustomerMessage(e)},r.getGroupInfo=function(e){return r.group.getGroupInfo(e)},r.getGroupMembers=function(e){return r.group.getGroupMembers(e)},r.joinGroup=function(e){return r.group.joinGroup(e)},r.leftGroup=function(e){return r.group.leftGroup(e)},r.checkGroupBlock=function(e){return r.group.checkGroupBlock(e)},r.getMyGroupPermission=function(e){return r.group.getMyGroupPermission(e)},r.getGroupPermission=function(e){return r.group.getGroupPermission(e)},r.getGroupMember=function(e){return r.group.getGroupMember(e)},r.getGroupMemberPermission=function(e,t){return r.group.getGroupMemberPermission(e,t)},r.updateGroupPermission=function(e){return r.group.updateGroupPermission(e)},r.kickGroupMember=function(e){return r.group.kickGroupMember(e)},r.muteMembers=function(e){return r.group.muteMembers(e)},r.updateGroupMemberPermission=function(e){return r.group.updateGroupMemberPermission(e)},r.editGroupName=function(e,t,n){try{return Promise.resolve(r.group.editGroupName(e,t,n)).then(function(o){if(0===o.code){for(var i,s,a=l(r.cacheManager.getQueryTypesForGroup(e));!(s=a()).done;){var c=r.cacheManager.getConversations(s.value).find(function(t){return t.groupId===e});if(c){i=g({},c,{name:t,avatar:n});break}}i&&(r.cacheManager.updateConversation(i),r.emitConversationListUpdatedForGroup(e))}return o})}catch(e){return Promise.reject(e)}},r.editNotification=function(e,t){return r.group.editNotification(e,t)},r.editGroupCustomer=function(e,t){return r.group.editGroupCustomer(e,t)},r.addAdmin=function(e,t){return r.group.addAdmin(e,t)},r.deleteAdmin=function(e,t){return r.group.deleteAdmin(e,t)},r.pin=function(e,t,n){return r.group.pin(e,t,n)},r.muteGroup=function(e,t){return r.group.muteGroup(e,t)},r.muteMember=function(e,t,n){return r.group.muteMember(e,t,n)},r.addGroupMembers=function(e){return r.group.addGroupMembers(e)},r.getFileByType=function(e){return r.group.getFileByType(e)},r.pinChat=function(e,t){return r.group.pinChat(e,t)},r.dissolveGroup=function(e){return r.group.dissolveGroup(e)},r.markConversationRead=function(e){try{return Promise.resolve(r.conversation.markConversationRead(e)).then(function(t){return 0===t.code&&e.groupId&&(e.id?r.cacheManager.updateConversationLastRead(e.groupId,e.id):r.cacheManager.clearConversationUnread(e.groupId),r.emitConversationListUpdatedForGroup(e.groupId)),t})}catch(e){return Promise.reject(e)}},r.markLastRead=function(e,t){try{return Promise.resolve(r.conversation.markLastRead(e,t)).then(function(n){return 0===n.code&&(r.cacheManager.updateConversationLastRead(e,t),r.emitConversationListUpdatedForGroup(e)),n})}catch(e){return Promise.reject(e)}},r.markLastDelete=function(e,t){try{return Promise.resolve(r.conversation.markLastDelete(e,t)).then(function(t){return 0===t.code&&r.emitConversationListUpdatedForGroup(e),t})}catch(e){return Promise.reject(e)}},r.markLastReadLocal=function(e,t){r.cacheManager.updateConversationLastRead(e,t),r.emitConversationListUpdatedForGroup(e)},r.pinConversation=function(e,t){void 0===t&&(t=1);try{return Promise.resolve(r.conversation.pinConversation(e,t)).then(function(n){return 0===n.code&&(r.cacheManager.updateConversationPinStatus(e,1===t),r.emitConversationListUpdatedForGroup(e)),n})}catch(e){return Promise.reject(e)}},r.muteConversation=function(e,t){void 0===t&&(t=1);try{return Promise.resolve(r.conversation.muteConversation(e,t)).then(function(n){return 0===n.code&&(r.cacheManager.updateConversationMuteStatus(e,1===t),r.emitConversationListUpdatedForGroup(e)),n})}catch(e){return Promise.reject(e)}},r.getChannels=function(e){return r.conversation.getChannels(e)},r.clearConversationUnread=function(e){r.cacheManager.clearConversationUnread(e),r.emitConversationListUpdatedForGroup(e)},r.clearAllConversationUnread=function(){r.cacheManager.clearAllConversationUnread(),r.emitConversationListUpdatedForQueryTypes(r.cacheManager.getQueryTypesWithData())},r.getContactByType=function(e,t,n,o){return r.contact.getContactByType(e,t,n,o)},r.getMemberContacts=function(e){return r.contact.getMemberContacts(e)},r.getColleagueContacts=function(e){return r.contact.getColleagueContacts(e)},r.getGroupContacts=function(e){return r.contact.getGroupContacts(e)},r.editContactTag=function(e){return r.contact.editContactTag(e)},r.getContactTag=function(e){return r.contact.getContactTag(e)},r.allocationContactTag=function(e){return r.contact.allocationContactTag(e)},r.allocationMemberTag=function(e,t,n){return void 0===n&&(n=0),r.contact.allocationMemberTag(e,t,n)},r.allocationColleagueTag=function(e,t,n){return void 0===n&&(n=0),r.contact.allocationColleagueTag(e,t,n)},r.allocationGroupTag=function(e,t,n){return void 0===n&&(n=0),r.contact.allocationGroupTag(e,t,n)},r.config.debug=o,o&&(console.log("🚀 SIM SDK Web v1.1.0 (本地开发版本)"),console.log("📦 支持协议: SSE, WebSocket")),r.cacheManager=new D({persistEnabled:!0,debug:o}),r.serviceManager=new J(r),r.initPageVisibilityDetection(),r}var o,r;r=t,(o=n).prototype=Object.create(r.prototype),o.prototype.constructor=o,p(o,r);var i,s,a=n.prototype;return a.initPageVisibilityDetection=function(){var e=this;"undefined"!=typeof document&&(this.isPageVisible=!document.hidden,this.isActuallyHidden=!this.isPageVisible,this.pageVisibilityHandler=function(){var t=e.isPageVisible;e.isPageVisible=!document.hidden,e.config.debug&&console.log("[SDK] Page visibility changed: "+(e.isPageVisible?"visible":"hidden")),t&&!e.isPageVisible?e.handlePageHidden():!t&&e.isPageVisible&&e.handlePageVisible()},document.addEventListener("visibilitychange",this.pageVisibilityHandler))},a.handlePageHidden=function(){var e=this;null!==this.pageVisibleStableTimer&&(clearTimeout(this.pageVisibleStableTimer),this.pageVisibleStableTimer=null),null!==this.pageHiddenTimer&&(clearTimeout(this.pageHiddenTimer),this.pageHiddenTimer=null),this.pageHiddenTimer=window.setTimeout(function(){e.isPageVisible||(e.isActuallyHidden=!0,e.config.debug&&console.log("[SDK] Page is actually hidden, stopping conversation updates")),e.pageHiddenTimer=null},this.PAGE_HIDDEN_STOP_DELAY_MS)},a.handlePageVisible=function(){var e=this;null!==this.pageHiddenTimer&&(clearTimeout(this.pageHiddenTimer),this.pageHiddenTimer=null),this.isActuallyHidden=!1,null!==this.pageVisibleStableTimer&&(clearTimeout(this.pageVisibleStableTimer),this.pageVisibleStableTimer=null),this.pageVisibleStableTimer=window.setTimeout(function(){e.isPageVisible&&e.pendingConversationUpdateQueryTypes.size>0&&(e.config.debug&&console.log("[SDK] Page is stable visible, triggering conversation update"),e.flushConversationUpdate()),e.pageVisibleStableTimer=null},this.PAGE_VISIBLE_STABLE_MS)},a.cleanupPageVisibilityDetection=function(){this.pageVisibilityHandler&&"undefined"!=typeof document&&(document.removeEventListener("visibilitychange",this.pageVisibilityHandler),this.pageVisibilityHandler=null),null!==this.pageHiddenTimer&&(clearTimeout(this.pageHiddenTimer),this.pageHiddenTimer=null),null!==this.pageVisibleStableTimer&&(clearTimeout(this.pageVisibleStableTimer),this.pageVisibleStableTimer=null)},a.destroy=function(){this.connectionClient&&(this.connectionClient.close(),this.connectionClient=void 0),this.cacheManager.destroy(),this.cleanupPageVisibilityDetection(),null!==this.conversationUpdateTimer&&(clearTimeout(this.conversationUpdateTimer),this.conversationUpdateTimer=null),this.internalState={isConnected:!1,isLoggedIn:!1,reconnectAttempts:0,lastActivity:Date.now()},this.config.debug&&console.log("[SDK] Resources destroyed")},a.getService=function(e){return this.serviceManager.get(e)},a.isConnected=function(){return this.config.debug&&console.log("[SDK] Connection status: "+(this.internalState.isConnected?"connected":"disconnected")),this.internalState.isConnected},a.isLoggedIn=function(){return this.config.debug&&console.log("[SDK] Login status: "+(this.internalState.isLoggedIn?"logged in":"not logged in")),this.internalState.isLoggedIn},a.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;"))},a.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())},a.isBinaryMessage=function(e){return e instanceof Uint8Array||"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer||"string"==typeof e&&this.isBase64String(e)},a.normalizeToBinaryBuffer=function(e){if(e instanceof Uint8Array)return e;if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer)return new Uint8Array(e);if("string"==typeof e)try{for(var t=atob(e),n=new Uint8Array(t.length),o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n}catch(e){return null}return null},a.isBase64String=function(e){try{return btoa(atob(e))===e}catch(e){return!1}},a.protoGroupChatToMessageItem=function(e){var t,n,o,r=function(t){var n;return null!=(n=e[t])?n:e[t.replace(/([A-Z])/g,"_$1").toLowerCase()]},i=function(e){return Number(r(e))||0},s=function(e){var t;return String(null!=(t=r(e))?t:"")},a=null!=(t=e.avatar_map)?t:e.avatarMap,c=i("send"),u=null!=(n=null==a||null==(o=a[c])?void 0:o.avatar)?n:"";return{msgId:i("msg_id"),groupId:i("group_id"),groupType:i("group_type"),replyMsgId:i("reply_msg_id"),clientMsgId:s("client_msg_id"),recvId:s("recv_id"),receiverName:s("receiverName")||"",userId:i("userId")||0,send:c,to:i("to")||0,username:s("username"),msgType:i("msg_type"),text:s("text")||void 0,link:s("link")||void 0,snapshot:s("snapshot")||void 0,createTime:i("create_time"),updateTime:i("update_time")||void 0,status:i("status"),avatar:u||void 0,ext:s("ext")||void 0}},a.handleProtobufMessage=function(t){try{var n,o,r=function(t){var n,r,s=Number(o.ev),a=null!=(r=((n={})[e.SseEventType.EVENT_PONG_CONN]="EVENT_PONG_CONN",n[e.SseEventType.EVENT_PONG_RE_CONN]="EVENT_PONG_RE_CONN",n[e.SseEventType.EVENT_PONG_IDLE]="EVENT_PONG_IDLE",n[e.SseEventType.EVENT_MESSAGE_PUSH]="EVENT_MESSAGE_PUSH",n[e.SseEventType.EVENT_SYSTEM_MESSAGE_PUSH]="EVENT_SYSTEM_MESSAGE_PUSH",n[e.SseEventType.EVENT_LIVE_SYSTEM_MESSAGE_PUSH]="EVENT_LIVE_SYSTEM_MESSAGE_PUSH",n[e.SseEventType.EVENT_PRE_MESSAGE_PUSH]="EVENT_PRE_MESSAGE_PUSH",n[e.SseEventType.EVENT_SUBSCRIBE_MESSAGE_PUSH]="EVENT_SUBSCRIBE_MESSAGE_PUSH",n)[s])?r:"ev="+s;switch(i.config.debug?console.log("[SDK] [Proto] 解码成功",{ev:s,evName:a,keys:Object.keys(o)}):console.log("[SDK] [Proto] ev=",a),s){case e.SseEventType.EVENT_PONG_IDLE:i.internalState.isConnected=!0,i.config.debug&&console.log("[SDK] [Proto] 心跳 PONG_IDLE,已更新 isConnected");break;case e.SseEventType.EVENT_MESSAGE_PUSH:var c,u,d=null!=(c=o.group_chat_list)?c:o.groupChatList,l=(null!=(u=null==d?void 0:d.items)?u:[]).map(function(e){return i.protoGroupChatToMessageItem(e)});i.config.debug&&console.log("[SDK] [Proto] EVENT_MESSAGE_PUSH",{count:l.length,msgIds:l.map(function(e){return e.msgId}),groupIds:[].concat(new Set(l.map(function(e){return e.groupId})))}),l.forEach(function(e){return i.updateMessageCache(e)}),i.emit(e.CbEvents.OnReceiveMessages,l);break;case e.SseEventType.EVENT_SYSTEM_MESSAGE_PUSH:var g,h=null!=(g=o.sys_message)?g:o.sysMessage;i.config.debug&&console.log("[SDK] [Proto] EVENT_SYSTEM_MESSAGE_PUSH",h),i.handleSystemMessageForConversationCache(h),i.emit(e.CbEvents.OnReceiveSystemMessage,h);break;case e.SseEventType.EVENT_PRE_MESSAGE_PUSH:var p,v=null!=(p=o.raw_data)?p:o.rawData,m="string"==typeof v?v?JSON.parse(v):void 0:null!=v?JSON.parse((new TextDecoder).decode(v)):void 0;i.config.debug&&console.log("[SDK] [Proto] EVENT_PRE_MESSAGE_PUSH",m),i.emit(e.CbEvents.OnReceivePreMessage,m);break;case e.SseEventType.EVENT_SUBSCRIBE_MESSAGE_PUSH:var f,y=null!=(f=o.subscribe_message)?f:o.subscribeMessage;i.config.debug&&console.log("[SDK] [Proto] EVENT_SUBSCRIBE_MESSAGE_PUSH",y),i.emit(e.CbEvents.OnReceiveSubscribeMessage,y);break;default:console.warn("[SDK] [Proto] 未知 ev,回退 OnReceiveProtoMessage",{ev:s,evName:a}),i.emit(e.CbEvents.OnReceiveProtoMessage,o)}},i=this,s=t instanceof Uint8Array;if(i.config.debug&&console.log("[SDK] [Proto] 入口",{type:s?"Uint8Array":"Base64",length:s||"string"==typeof t?t.length:0,preview:s&&t.length>0?"0x"+t[0].toString(16):void 0}),s)n=t.length>1?t.slice(1):t,i.config.debug&&console.log("[SDK] [Proto] 跳过首字节后 buffer.length=",n.length);else{var a=atob(t);n=new Uint8Array(a.length);for(var c=0;c<a.length;c++)n[c]=a.charCodeAt(c);n.length>1&&(n=n.slice(1)),i.config.debug&&console.log("[SDK] [Proto] Base64 解码后 buffer.length=",n.length)}var d=X(function(){return Promise.resolve(function(e){return Promise.resolve(function(){try{var e=function(){if(!j)return Promise.resolve(u.default.load("/proto/chat_message.proto")).then(function(e){j=e})}();return Promise.resolve(e&&e.then?e.then(function(){return j}):j)}catch(e){return Promise.reject(e)}}()).then(function(t){var n=t.lookupType("com.chat.proto.SseMessage"),o=n.verify(e);if(o)throw new Error(o);var r=n.decode(e);return n.toObject(r,{longs:Number})})}(n)).then(function(e){o=e})},function(e){throw console.error("[SDK] [Proto] decodeSseMessage 失败",{bufferLength:n.length,error:e}),e});return Promise.resolve(d&&d.then?d.then(r):r())}catch(e){return Promise.reject(e)}},a.emitConversationListUpdatedForQueryType=function(t){var n=this.cacheManager.getConversations(t);this.config.debug&&console.log("[SDK][会话列表] 发出 OnConversationListUpdated",{queryType:t,conversationCount:n.length}),this.emit(e.CbEvents.OnConversationListUpdated,{conversations:n,queryType:t})},a.emitConversationListUpdatedForQueryTypes=function(e){for(var t,n=l(e);!(t=n()).done;)this.emitConversationListUpdatedForQueryType(t.value)},a.emitConversationListUpdatedForGroup=function(e){var t=this.cacheManager.getQueryTypesForGroup(e);this.config.debug&&console.log("[SDK][会话列表] 按群聚合刷新(直连 emit,不经消息节流)",{groupId:e,queryTypes:t}),this.emitConversationListUpdatedForQueryTypes(t)},a.handleSystemMessageForConversationCache=function(e){this.handleGroupEvent(e)},a.handleGroupEvent=function(t){if(t.type===e.GroupEventType.GROUP_MEMBER_EVENT_TYPE_SUPPORT_UPDATE){if(null==t.content||""==t.content)return;var n=JSON.parse(t.content),o=this.cacheManager.updateConversationSupportInfo(t.groupId,n.supportChatId,n.supportNick);this.emitConversationListUpdatedForQueryTypes(new Set(o))}},a.initializeConversationCache=function(){try{var e=this;return Promise.resolve(X(function(){var t=e.config.conversationQueryTypes;if(void 0!==t&&0!==t.length&&!t.some(function(e){return Number.isNaN(Number(e))}))return Promise.resolve(e.conversation.getConversationByQueryTypes({pageNo:1,pageSize:50,queryTypes:t})).then(function(n){var o=n.code,r=n.data;e.config.debug&&console.log("[SDK] Initialize conversation cache:",o,r),0===o&&r&&(r.forEach(function(t,n){e.cacheManager.setConversations(t,!0,n)}),t.forEach(function(t){e.emitConversationListUpdatedForQueryType(t)}))});console.warn("[SDK] initializeConversationCache: conversationQueryTypes missing, skip")},function(e){console.error("[SDK] Failed to initialize conversation cache:",e)}))}catch(e){return Promise.reject(e)}},a.onMessage=function(t){var n=this;return this.on(e.CbEvents.OnReceiveMessage,t),function(){return n.off(e.CbEvents.OnReceiveMessage,t)}},a.onMessages=function(t){var n=this;return this.on(e.CbEvents.OnReceiveMessages,t),function(){return n.off(e.CbEvents.OnReceiveMessages,t)}},a.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)}},a.onKickedOffline=function(t){var n=this;return this.on(e.CbEvents.OnKickedOffline,t),function(){return n.off(e.CbEvents.OnKickedOffline,t)}},a.updateMessageCache=function(e){var t=this,n=this.cacheManager.updateConversationWithMessage(e,this.config.username);n.updated&&n.queryTypes&&n.queryTypes.size>0&&(this.config.debug&&console.log("[SDK][会话列表] ④ 服务端推送/收消息:updateMessageCache → scheduleConversationUpdate(500ms 节流)",{groupId:e.groupId,msgId:e.msgId,queryTypes:n.queryTypes}),n.queryTypes.forEach(function(e){return t.scheduleConversationUpdate(e)}))},a.scheduleConversationUpdate=function(e){var t=this;if(Number.isFinite(e))if(this.pendingConversationUpdateQueryTypes.add(e),this.isActuallyHidden)this.config.debug&&console.log("[SDK] Page is actually hidden, deferring conversation update");else{var n=Date.now()-this.lastConversationUpdateTime;if(n<this.CONVERSATION_UPDATE_THROTTLE_MS){if(null!==this.conversationUpdateTimer)return;this.conversationUpdateTimer=window.setTimeout(function(){t.flushConversationUpdate()},this.CONVERSATION_UPDATE_THROTTLE_MS-n)}else this.flushConversationUpdate()}},a.flushConversationUpdate=function(){null!==this.conversationUpdateTimer&&(clearTimeout(this.conversationUpdateTimer),this.conversationUpdateTimer=null);var e=new Set(this.pendingConversationUpdateQueryTypes);this.pendingConversationUpdateQueryTypes.clear(),this.lastConversationUpdateTime=Date.now(),this.emitConversationListUpdatedForQueryTypes(e),this.config.debug&&e.size>0&&console.log("[SDK][会话列表] ⑤ flush:节流到期,按 queryType 发出 OnConversationListUpdated",{queryTypes:[].concat(e)})},i=n,(s=[{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:"getConnectionClient",get:function(){return this.connectionClient}},{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,v(o.key),o)}}(i.prototype,s),Object.defineProperty(i,"prototype",{writable:!1}),i}(M);$.BINARY_MSG_TYPE={BYTE_MESSAGE:1,HEARTBEAT_PING:125,HEARTBEAT_PONG:126},e.SIMSDK=$});
@@ -1,10 +1,6 @@
1
1
  import { ConversationItem, MessageItem } from '../types/entity';
2
2
  declare const DEFAULT_CONFIG: {
3
3
  MAX_CONVERSATIONS: number;
4
- MAX_GROUP_MESSAGES: number;
5
- STORAGE_CHUNK_SIZE: number;
6
- CACHE_TTL: number;
7
- EXPIRY_CHECK_INTERVAL: number;
8
4
  };
9
5
  /**
10
6
  * 缓存管理器 - 负责内存缓存和持久化存储的管理
@@ -17,17 +13,13 @@ export declare class CacheManager {
17
13
  /** 逻辑结构:Map<groupId, Set<queryType>>(实现为 Record<number, Set<number>>)。
18
14
  * Set 里每一项就是一个「列表类型」数字(如 3、6);不是把 Set 本身当作 queryType。 */
19
15
  private groupIdToQueryTypes;
20
- private groupMessageCache;
21
- private accessTimeRecord;
22
16
  private pinnedConversationOrder;
23
17
  private userInfo;
24
18
  private currentUsername?;
25
19
  private activeConversation?;
26
- private metaInfo;
27
20
  private persistEnabled;
28
21
  private debug;
29
22
  private config;
30
- private cleanupTimer?;
31
23
  /**
32
24
  * 创建缓存管理器实例
33
25
  * @param options 选项
@@ -137,57 +129,15 @@ export declare class CacheManager {
137
129
  updated: boolean;
138
130
  queryTypes?: Set<number>;
139
131
  };
140
- /**
141
- * 获取群组消息
142
- * @param groupId 群组ID
143
- */
144
- getGroupMessages(groupId: number): MessageItem[];
145
- /**
146
- * 添加群组消息
147
- * @param message 消息
148
- */
149
- addGroupMessage(message: MessageItem): void;
150
- /**
151
- * 批量添加群组消息
152
- * @param messages 消息数组
153
- */
154
- addGroupMessages(messages: MessageItem[]): void;
155
132
  /**
156
133
  * 对会话排序:置顶的会话在最上面(按初始顺序),非置顶的按最新消息时间排序
157
134
  * @param queryType 只排序该桶;不传则排序所有桶
158
135
  */
159
136
  private sortConversations;
160
- /**
161
- * 对群组消息按时间排序
162
- * @param groupId 群组ID
163
- */
164
- private sortGroupMessages;
165
- /**
166
- * 限制群组消息缓存大小
167
- * @param groupId 群组ID
168
- */
169
- private limitGroupMessageCache;
170
- /**
171
- * 记录访问时间(用于LRU算法)
172
- * @param groupId 群组ID
173
- */
174
- private recordAccess;
175
137
  /**
176
138
  * 强制限制会话数量(按 queryType 桶)
177
139
  */
178
140
  private enforceConversationLimit;
179
- /**
180
- * 强制内存限制 - 可能从内存中移除不活跃的群组消息
181
- */
182
- private enforceMemoryLimits;
183
- /**
184
- * 设置定期清理过期数据的定时器
185
- */
186
- private setupCleanupInterval;
187
- /**
188
- * 清理过期数据
189
- */
190
- private cleanupExpiredData;
191
141
  /**
192
142
  * 获取用户相关的存储键名
193
143
  * @param baseKey 基础键名
@@ -198,11 +148,6 @@ export declare class CacheManager {
198
148
  * 从本地存储加载数据
199
149
  */
200
150
  private loadFromStorage;
201
- /**
202
- * 从存储中加载特定群组的消息
203
- * @param groupId 群组ID
204
- */
205
- private loadGroupMessagesFromStorage;
206
151
  /**
207
152
  * 保存会话列表到本地存储(按 queryType 分桶)
208
153
  */
@@ -211,24 +156,12 @@ export declare class CacheManager {
211
156
  * 保存会话列表到本地存储(按 queryType 分桶)
212
157
  */
213
158
  private saveConversationsToStorage;
214
- /**
215
- * 保存群组消息到本地存储
216
- * @param groupId 如果提供,只保存指定群组的消息
217
- */
218
- private saveGroupMessagesToStorage;
219
- /**
220
- * 保存元数据到本地存储
221
- */
222
- private saveMetaInfoToStorage;
223
159
  /**
224
160
  * 处理存储错误,主要处理配额超出问题
225
161
  */
226
162
  private handleStorageError;
227
- /**
228
- * 清除特定群组的消息存储
229
- * @param groupId 群组ID
230
- */
231
- private clearGroupMessageStorage;
163
+ /** 清理历史版本遗留的群消息 localStorage 键 */
164
+ private purgeLegacyGroupMessageStorage;
232
165
  /**
233
166
  * 保存用户信息到本地存储
234
167
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sim-sdk-web",
3
- "version": "1.2.30",
3
+ "version": "1.3.0",
4
4
  "description": "Sim SDK for Web - Support SSE and WebSocket protocols",
5
5
  "source": "src/index.ts",
6
6
  "main": "lib/index.js",