k2-im 0.1.12 → 0.1.14
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/dist/browser.js +1 -1
- package/dist/chat-kit-pinia.js +1 -1
- package/dist/chat-kit-vue.js +1 -1
- package/dist/chat-kit.js +1 -1
- package/dist/{chunk-TQF5HUEX.js → chunk-5IN5YRAI.js} +1 -1
- package/dist/{chunk-ZV7BEDOX.js → chunk-CNVMQYSD.js} +1 -1
- package/dist/{chunk-J77VLO7C.js → chunk-EGOTRH4T.js} +1 -1
- package/dist/chunk-HN4N3I2C.js +7 -0
- package/dist/{chunk-MKV7J6WB.js → chunk-ONYQKOD6.js} +1 -1
- package/dist/chunk-ZAYTBGR2.js +2 -0
- package/dist/chunk-ZPQ3HWNX.js +1 -0
- package/dist/i18n.js +1 -1
- package/dist/index.d.ts +44 -1
- package/dist/index.js +1 -1
- package/dist/sdk.d.ts +44 -1
- package/dist/sdk.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-6QR5GVQ3.js +0 -7
- package/dist/chunk-BO5YFCS4.js +0 -1
- package/dist/chunk-ZAIRD3YB.js +0 -2
package/dist/i18n.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import'./chunk-SXY56EVC.js';export{a as DEFAULT_LOCALE,k as createImI18n,f as formatFailure,h as formatLastMessageSummary,i as formatMediaPlaceholder,j as formatMentionAll,l as formatServiceText,g as formatSystemMessage,c as getImTimeCatalog,b as normalizeImLocale,d as registerImCatalogOverrides,e as resetImCatalogOverrides}from'./chunk-
|
|
1
|
+
import'./chunk-SXY56EVC.js';export{a as DEFAULT_LOCALE,k as createImI18n,f as formatFailure,h as formatLastMessageSummary,i as formatMediaPlaceholder,j as formatMentionAll,l as formatServiceText,g as formatSystemMessage,c as getImTimeCatalog,b as normalizeImLocale,d as registerImCatalogOverrides,e as resetImCatalogOverrides}from'./chunk-5IN5YRAI.js';import'./chunk-ZPQ3HWNX.js';import'./chunk-WOT6VMZA.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -2512,6 +2512,49 @@ declare function canTransmitContent(message: ForwardContentCandidate): boolean;
|
|
|
2512
2512
|
*/
|
|
2513
2513
|
declare function canTransmit(message: ForwardCandidateMessage): boolean;
|
|
2514
2514
|
|
|
2515
|
+
/**
|
|
2516
|
+
* 表情回应的父消息判定,是「这条消息能不能被回应」的唯一真相源。
|
|
2517
|
+
*
|
|
2518
|
+
* Core 的发送守卫用它在入队前拒绝非法父消息,宿主用它决定长按浮层和残留胶囊的显隐。
|
|
2519
|
+
* 两侧共用同一份口径,避免出现「UI 放行但发送必然返回 unsupported-message」这类漂移。
|
|
2520
|
+
*/
|
|
2521
|
+
|
|
2522
|
+
/**
|
|
2523
|
+
* 允许被表情回应的父消息正文类型,与 iOS `SZChatReactionService.supportsReactionForMessage:` 的协议白名单一致:
|
|
2524
|
+
* 文本、图片、视频、语音、文件、贴纸、名片、小程序、骰子/猜拳,以及转账、通话记录卡片和红包卡片本身。
|
|
2525
|
+
* 系统灰条(含红包领取通知、群提示、频道通知)与 unknown(未知/未来类型)不在白名单内。
|
|
2526
|
+
*
|
|
2527
|
+
* 这里刻意维持显式白名单而不是「排除 system 和 unknown」:新增 contentType 时默认拒绝,
|
|
2528
|
+
* 必须显式决策后才放行。
|
|
2529
|
+
*/
|
|
2530
|
+
declare const REACTION_SUPPORTED_CONTENT_TYPES: ReadonlySet<MessageContentType>;
|
|
2531
|
+
/**
|
|
2532
|
+
* `canReactToMessage` 需要的最小消息字段。
|
|
2533
|
+
*
|
|
2534
|
+
* 只声明判定真正读取的字段,让 Core 的 `ImMessage` 和产品层的 `ImMessageView` 都能直接传入,
|
|
2535
|
+
* 不必为两种 DTO 各写一份判定。
|
|
2536
|
+
*/
|
|
2537
|
+
interface ReactionParentMessage {
|
|
2538
|
+
contentType: MessageContentType;
|
|
2539
|
+
/** 撤回者与撤回时间;存在即已撤回。 */
|
|
2540
|
+
recalled?: unknown;
|
|
2541
|
+
/** 全员删除标记;存在即已被替换成灰条。 */
|
|
2542
|
+
deletedForEveryone?: unknown;
|
|
2543
|
+
/** 端到端加密状态;解密失败的密文占位不能被回应。 */
|
|
2544
|
+
encryption: {
|
|
2545
|
+
decryptFailed?: boolean;
|
|
2546
|
+
};
|
|
2547
|
+
}
|
|
2548
|
+
/**
|
|
2549
|
+
* 判断一条父消息能否承载表情回应。
|
|
2550
|
+
*
|
|
2551
|
+
* 类型白名单之外还要求消息仍是可寻址的正文气泡:撤回和全员删除后消息已变成灰条(回应聚合也会在
|
|
2552
|
+
* merge 时清掉),解密失败的密文占位对应 iOS 的 Unknown 类型,三者都拒绝。
|
|
2553
|
+
*
|
|
2554
|
+
* 本判定不涉及发送状态和权限:能否「新增」回应由调用方按各自场景另行判断。
|
|
2555
|
+
*/
|
|
2556
|
+
declare function canReactToMessage(message: ReactionParentMessage): boolean;
|
|
2557
|
+
|
|
2515
2558
|
type RecallFailReason = 'not-found' | 'not-own' | 'not-sent' | 'expired' | 'unsupported' | 'timeout' | 'server-expired' | 'failed' | 'disconnected';
|
|
2516
2559
|
|
|
2517
2560
|
/**
|
|
@@ -8801,5 +8844,5 @@ declare function resampleWaveform(data: readonly number[], targetCount: number):
|
|
|
8801
8844
|
*/
|
|
8802
8845
|
declare function placeholderWaveform(seed: string, count: number): number[];
|
|
8803
8846
|
|
|
8804
|
-
export { DEFAULT_EMOJI_ASSET_BASE, DEFAULT_LOADING_MINIMUM_VISIBLE_MS, DEFAULT_LOADING_SHOW_DELAY_MS, DEFAULT_LOCALE, EDIT_WINDOW_MS, EMOJI_CATALOG, EMOJI_GAME_DICE_STABLE_KEY, EMOJI_GAME_RPS_STABLE_KEY, EMOJI_TOKEN_RE, IM_CHAT_FONT_SCALES, IM_DIAGNOSTIC_CATEGORIES, IM_EMOJI_CATALOG, ImPinnedMessageOperationError, MAX_BATCH_FILES, MAX_RECENT_EMOJI_COUNT, SPIKE_STEP, UNICODE_EMOJI_CATALOG, blockReasonForChannelSession, blockReasonForChannelState, blockReasonForGroupState, blockReasonForSession, calculateMediaBox, canEditMessage, canPinChannelMessage, canPinGroupMessage, canPinMessage, canPromoteMediaPresentationSource, canRecallMessage, canTransmit, canTransmitByType, canTransmitContent, cancelMediaUpload, captureRuntimeClientOperation, captureRuntimeOperation, classifyStickerImageType, createChatRuntime, createDelayedLoadingIndicator, createEmojiMatcher, createFaceToFaceGroupQrPayload, createImClient, createImConsoleDiagnosticSink, createImDiagnosticMemoryBuffer, createImI18n, createImTextSearchMatcher, createLinkMatcher, createNewMessageBadgeController, createSdkDiagnosticWriter, createThreadItems, createVoicePlayer, createVoiceRecordingSession, decideConversationAction, decideMemberTargetAction, decideMessageAction, detectVoiceCapabilities, emojiAssetUrl, emojiUrlByCode, extractSearchText, fetchConversationFileBatch, fetchConversationImageBatch, fetchConversationMessageBatch, fetchConversationVideoBatch, fetchConversationVoiceBatch, fetchNextConversationSearchBatch, formatChatDateSeparator, formatConversationDisplayTime, formatFailure, formatFileSize, formatLastMessageSummary, formatMediaDuration, formatMediaPlaceholder, formatMentionAll, formatServiceText, formatSystemMessage, forward_service as forwardService, getFileExtension, getImTextSearchInitial, getImTimeCatalog, getLocalDayKey, hasEmojiCandidate, hasLinkCandidate, highlightSegments, isGifFile, isMessageLocateScrollProtected, isMessageTailChangeFromOlderWindowTrim, isMessageViewportMeasurable, isMessageVisibleForNewMessageBadge, isPinnedMessageProtected, isVoiceStorageConfigured, loadOlderUntilBoundary, mediaBatchBudgetBytes, media_service as mediaService, message_service as messageService, migrateImCachePrefix, normalizeImLocale, normalizeLinkHref, parseUnicodeEmojiCode, pinnedMessage_service as pinnedMessageService, placeholderWaveform, prependRecentEmoji, profile_service as profileService, read_service as readService, refreshPrependMessageAnchorPosition, registerImCatalogOverrides, replaceInterruptedMediaFile, requiresConversationEncryption, requiresForwardTypeConfirmation, resampleWaveform, resetImCatalogOverrides, resolveBestMediaPresentationSource, resolveCenteredMessageScrollTop, resolveChannelAccess, resolveChannelMemberAvatarUrl, resolveChannelMemberDisplayName, resolveConversationListPresentation, resolveDisplayTimestamp, resolveEmojiToken, resolveFriendDisplayName, resolveImEmojiToken, resolveImProfileAccessDestination, resolveImThreadActiveDate, resolveMediaPresentation, resolveMemberDisplayName, resolveMessageBodyKind, resolveMessageTimelineTimestamp, resolvePrependMessageAnchor, resolvePrependMessageAnchorAdjustment, resolvePrependMessageAnchorPosition, resolvePublicNickname, resolveQuotedMessagePresentation, resolveSenderAvatarUrl, resolveStandaloneEmojiMessage, resolveSurvivingMessageAnchorAdjustment, resolveTextSegments, resolveUnicodeEmoji, resolveVisibleMessageAnchorPositions, retryMessage, runMediaSendBatch, sendAsFilesBatch, sendBlockReasonForDecision, sendMediaFile, sendMediaFilesBatch, sendText, sendVoice, shouldCompleteInitialViewport, shouldFillInitialHistoryViewport, shouldFollowIncomingMessage, shouldLoadNewerHistoryPage, shouldPrefetchOlderHistory, shouldRestoreMessageViewportFocus, shouldShowChatDateSeparator, shouldTrackRemoteMessageForBadge, sortSessions, spikeCountForDuration, sumSessionsUnread, supportsConversationMention, unicodeEmojiTextFromCode, voiceErrorCodeOf };
|
|
8847
|
+
export { DEFAULT_EMOJI_ASSET_BASE, DEFAULT_LOADING_MINIMUM_VISIBLE_MS, DEFAULT_LOADING_SHOW_DELAY_MS, DEFAULT_LOCALE, EDIT_WINDOW_MS, EMOJI_CATALOG, EMOJI_GAME_DICE_STABLE_KEY, EMOJI_GAME_RPS_STABLE_KEY, EMOJI_TOKEN_RE, IM_CHAT_FONT_SCALES, IM_DIAGNOSTIC_CATEGORIES, IM_EMOJI_CATALOG, ImPinnedMessageOperationError, MAX_BATCH_FILES, MAX_RECENT_EMOJI_COUNT, REACTION_SUPPORTED_CONTENT_TYPES, SPIKE_STEP, UNICODE_EMOJI_CATALOG, blockReasonForChannelSession, blockReasonForChannelState, blockReasonForGroupState, blockReasonForSession, calculateMediaBox, canEditMessage, canPinChannelMessage, canPinGroupMessage, canPinMessage, canPromoteMediaPresentationSource, canReactToMessage, canRecallMessage, canTransmit, canTransmitByType, canTransmitContent, cancelMediaUpload, captureRuntimeClientOperation, captureRuntimeOperation, classifyStickerImageType, createChatRuntime, createDelayedLoadingIndicator, createEmojiMatcher, createFaceToFaceGroupQrPayload, createImClient, createImConsoleDiagnosticSink, createImDiagnosticMemoryBuffer, createImI18n, createImTextSearchMatcher, createLinkMatcher, createNewMessageBadgeController, createSdkDiagnosticWriter, createThreadItems, createVoicePlayer, createVoiceRecordingSession, decideConversationAction, decideMemberTargetAction, decideMessageAction, detectVoiceCapabilities, emojiAssetUrl, emojiUrlByCode, extractSearchText, fetchConversationFileBatch, fetchConversationImageBatch, fetchConversationMessageBatch, fetchConversationVideoBatch, fetchConversationVoiceBatch, fetchNextConversationSearchBatch, formatChatDateSeparator, formatConversationDisplayTime, formatFailure, formatFileSize, formatLastMessageSummary, formatMediaDuration, formatMediaPlaceholder, formatMentionAll, formatServiceText, formatSystemMessage, forward_service as forwardService, getFileExtension, getImTextSearchInitial, getImTimeCatalog, getLocalDayKey, hasEmojiCandidate, hasLinkCandidate, highlightSegments, isGifFile, isMessageLocateScrollProtected, isMessageTailChangeFromOlderWindowTrim, isMessageViewportMeasurable, isMessageVisibleForNewMessageBadge, isPinnedMessageProtected, isVoiceStorageConfigured, loadOlderUntilBoundary, mediaBatchBudgetBytes, media_service as mediaService, message_service as messageService, migrateImCachePrefix, normalizeImLocale, normalizeLinkHref, parseUnicodeEmojiCode, pinnedMessage_service as pinnedMessageService, placeholderWaveform, prependRecentEmoji, profile_service as profileService, read_service as readService, refreshPrependMessageAnchorPosition, registerImCatalogOverrides, replaceInterruptedMediaFile, requiresConversationEncryption, requiresForwardTypeConfirmation, resampleWaveform, resetImCatalogOverrides, resolveBestMediaPresentationSource, resolveCenteredMessageScrollTop, resolveChannelAccess, resolveChannelMemberAvatarUrl, resolveChannelMemberDisplayName, resolveConversationListPresentation, resolveDisplayTimestamp, resolveEmojiToken, resolveFriendDisplayName, resolveImEmojiToken, resolveImProfileAccessDestination, resolveImThreadActiveDate, resolveMediaPresentation, resolveMemberDisplayName, resolveMessageBodyKind, resolveMessageTimelineTimestamp, resolvePrependMessageAnchor, resolvePrependMessageAnchorAdjustment, resolvePrependMessageAnchorPosition, resolvePublicNickname, resolveQuotedMessagePresentation, resolveSenderAvatarUrl, resolveStandaloneEmojiMessage, resolveSurvivingMessageAnchorAdjustment, resolveTextSegments, resolveUnicodeEmoji, resolveVisibleMessageAnchorPositions, retryMessage, runMediaSendBatch, sendAsFilesBatch, sendBlockReasonForDecision, sendMediaFile, sendMediaFilesBatch, sendText, sendVoice, shouldCompleteInitialViewport, shouldFillInitialHistoryViewport, shouldFollowIncomingMessage, shouldLoadNewerHistoryPage, shouldPrefetchOlderHistory, shouldRestoreMessageViewportFocus, shouldShowChatDateSeparator, shouldTrackRemoteMessageForBadge, sortSessions, spikeCountForDuration, sumSessionsUnread, supportsConversationMention, unicodeEmojiTextFromCode, voiceErrorCodeOf };
|
|
8805
8848
|
export type { ApplySessionResult, BrowseMessagesInput, CanPinMessageInput, CapabilityAvailability, CapabilityDecision, CapabilityReason, CenteredMessageScrollInput, ChannelAccessSnapshot, ChannelBaseSessionState, ChannelConversationCapabilities, ChannelConversationMessageApi, ChannelJoinApplication, ChannelJoinApplicationNotification, ChannelJoinApplicationPage, ChannelMember, ChannelMemberPage, ChannelMentionMember, ChannelMentionMemberPage, ChannelMiniProgramRel, ChannelMiniProgramRelConfigType, ChannelMuteReason, ChannelPermissionSet, ChannelProfile, ChannelRole, ChannelSessionState, ChatMediaMessageRef, ChatProfileAdapter, ChatRuntime, ChatRuntimeCredentials, ChatRuntimeFactories, ChatRuntimeHostDeps, ChatRuntimeOpResult, ContactCardInput, ContactMessageOptions, ConversationBackgroundPreset, ConversationBackgroundSelection, ConversationCapabilityAction, ConversationCapabilitySnapshot, ConversationDraft, ConversationDraftApi, ConversationEntryUnreadSnapshot, ConversationHandle, ConversationHandleSnapshot, ConversationInitialPosition, ConversationLastMessageSummary, ConversationListItem, ConversationListMention, ConversationListPresentation, ConversationListPresentationLabels, ConversationListPresentationOptions, ConversationListPreviewSegment, ConversationMessageApi, ConversationOpenOptions, ConversationRef, ConversationSearchCategory, ConversationSearchPage, ConversationSearchResult, ConversationSystemSummary, ConversationType, CreateThreadItemsInput, DelayedLoadingIndicator, DelayedLoadingIndicatorOptions, DirectConversationCapabilities, DirectConversationMessageApi, DraftInput, EditTextOptions, EmojiEntry, EmojiRecentItem, EmojiSegment, ExpressionMessageOptions, FileMessageOptions, FormatFailureContext, FormatLastMessageContext, FormatMediaPlaceholderContext, FormatServiceTextContext, FormatSystemMessageContext, FormatTimeDisplayContext, ForwardCommandHooks, ForwardFailReason, ForwardItemStatus, ForwardMessageFailure, ForwardMessagesInput, ForwardMessagesResult, ForwardTarget, ForwardedMessageRef, GameMessageOptions, GifMessageOptions, GroupConversationCapabilities, GroupConversationMessageApi, GroupMemberItem, GroupProfile, HighlightSegment, ImAppearanceSettingsApi, ImApplicationItem, ImApplicationRef, ImApplicationsApi, ImAuthIssue, ImAuthProvider, ImCacheOptions, ImCachePrefixMigrationContext, ImCachePrefixMigrator, ImCallKind, ImCallOutcome, ImCallRecordBody, ImCatalog, ImCatalogOverrides, ImChannelConversationAccessSnapshot, ImChannelMemberPresentation, ImChannelMentionApi, ImChannelMentionPresentation, ImChannelMiniProgramRel, ImChannelPermissions, ImChannelPinnedMessage, ImChannelProfile, ImChannelProfilePresentation, ImChannelRole, ImChannelState, ImChannelsApi, ImChatFontScale, ImClientOptions, ImConnectionState, ImContactBody, ImContactKind, ImContactProfile, ImContactRelationship, ImContactRemarkPhone, ImContactSearchResult, ImContactsApi, ImConversationBackgroundApi, ImConversationCapabilitiesApi, ImConversationListApi, ImConversationListSnapshot, ImConversationListState, ImConversationSearchApi, ImCoreApiOptions, ImCreateChannelInput, ImCreateChannelResult, ImCreateFaceToFaceGroupResult, ImCreateGroupInput, ImCreateGroupResult, ImCreatedChannel, ImCreatedGroup, ImDebugOptions, ImDiagnosticCategory, ImDiagnosticError, ImDiagnosticLayer, ImDiagnosticLevel, ImDiagnosticMemoryBuffer, ImDiagnosticMemoryBufferFilter, ImDiagnosticMemoryBufferOptions, ImDiagnosticMemoryBufferSnapshot, ImDiagnosticMessage, ImDiagnosticRecord, ImDiagnosticSink, ImDiagnosticWriter, ImDirectCallAnswerResult, ImDirectCallFailReason, ImDirectCallHangupInput, ImDirectCallHangupReason, ImDirectCallInviteInput, ImDirectCallNotifyAudioInput, ImDirectCallTargetInput, ImDirectCallsApi, ImDirectReadReceiptSettings, ImDirectoryApi, ImDirectoryFieldMatch, ImDirectoryItem, ImDirectoryKind, ImDirectoryPage, ImDirectorySearchApi, ImDirectorySearchItem, ImDirectorySearchResult, ImDraftsApi, ImEmojiCatalogEntry, ImEndpointProvider, ImEventsApi, ImExpressionAsset, ImExpressionAssetInput, ImExpressionEmojiRecentInput, ImExpressionFavoriteKind, ImExpressionOptions, ImExpressionRecentInput, ImExpressionRecentItem, ImExpressionRecentItemKind, ImExpressionsApi, ImFaceToFaceGroup, ImFailureCatalog, ImFileBody, ImForwardOperationResult, ImFriendshipRequestResult, ImGameBody, ImGameType, ImGifAssetInput, ImGiphyAsset, ImGiphyPage, ImGiphyPageOptions, ImGroupCallAnswerInput, ImGroupCallBusyInput, ImGroupCallCreateInput, ImGroupCallJoinInput, ImGroupCallMeetingSnapshot, ImGroupCallMember, ImGroupCallMemberStatus, ImGroupCallStatusInput, ImGroupCallTargetInput, ImGroupCallsApi, ImGroupConversationState, ImGroupMemberPresentation, ImGroupMentionApi, ImGroupPinnedMessage, ImGroupProfile, ImGroupsApi, ImI18n, ImImageBody, ImLastMessageCatalog, ImLifecycleSnapshot, ImLocalDataApi, ImLocalDataInfo, ImLocale, ImLogoutOptions, ImMediaBatchSendResult, ImMediaCatalog, ImMediaConfig, ImMediaTask, ImMediaTasksApi, ImMembershipJoinResult, ImMentionCatalog, ImMessageActionResult, ImMessageBodyKind, ImMessageMention, ImMessageReactionAggregate, ImMessageReactions, ImMessageRef, ImMessageSearchApi, ImMessageView, ImMessageViewBody, ImMiniProgramBody, ImMiniProgramShowType, ImOutboxApi, ImOutboxItem, ImPageToken, ImPartialCatalog, ImPinnedMessageActionResult, ImPinnedMessageErrorKind, ImPinnedMessageOperation, ImPinnedMessageSnapshot, ImProductApplicationUpdate, ImProductAuthInvalidReason, ImProductClient, ImProductEvent, ImProductEventError, ImProductEventMap, ImProductMessage, ImProfileAccessDestination, ImQuotedMessagePresentation, ImReactionChangeAction, ImReactionChangeResult, ImReadReceiptSettingsApi, ImRedPacketBody, ImRedPacketType, ImSdkErrorCategory, ImSdkErrorShape, ImSearchApi, ImServiceCatalog, ImServiceTextKey, ImSessionApi, ImSessionLifecycleState, ImSettingsApi, ImStickerAssetInput, ImStickerBody, ImStickerPack, ImSupportedConversationRef, ImSystemCatalog, ImTextResolver, ImTextSearchMatch, ImTextSearchMatchOptions, ImTextSearchMatcher, ImTextSearchRange, ImThreadActiveDateSnapshot, ImThreadDateMarkerMetric, ImThreadDecoration, ImThreadEncryptionItem, ImThreadIntent, ImThreadItem, ImThreadPresentationAdapter, ImThreadReadActions, ImThreadReadTargetResolver, ImThreadViewportMetrics, ImTimeCatalog, ImTransferBody, ImTransferSessionType, ImTransferStatus, ImVideoBody, ImVoiceBody, ImWeekdayKey, ImageMessageOptions, ImagePreviewMetadata, IncomingMessageFollowInput, InitialHistoryViewportFillInput, InitialViewportCompletionInput, LinkSegment, LocalConversationHistoryClearResult, LocalMessageDeletionResult, MediaBatchBudgetOptions, MediaBatchLimitInfo, MediaLimitItem, MediaObjectUrlLease, MediaPresentationFit, MediaPresentationPolicy, MediaPresentationRule, MediaPresentationSourceCandidate, MediaPresentationSourceQuality, MediaSendBatchResult, MemberTargetCapabilityAction, MemberTargetCapabilityInput, MentionCandidate, MentionCandidatePage, MentionInput, MessageCapabilityAction, MessageCapabilityInput, MessageContentType, MessageLocateScrollProtectionInput, MessageWindowInfo, MessageWindowPage, MigrateImCachePrefixInput, MiniProgramMessageOptions, NewMessageBadgeController, NewMessageBadgeCountListener, NewMessageBadgeVisibilityInput, NewerHistoryPageTriggerInput, OlderHistoryPrefetchInput, PrependAnchorCandidate, PrependAnchorViewport, PrependMessageAnchorPosition, ProductConversationListType, ProductHandleConversationType, ProductMessageSearchPage, ProductMessageSearchResult, RemoteMessageBadgeTrackingInput, ResolveMediaPresentationInput, ResolveTextOptions, ResolvedConversationBackground, ResolvedMediaPresentation, RichExtraSegment, RuntimeClientOperation, RuntimeOperation, SearchBatchResult, SearchFilesInput, SearchMessagesInput, SearchTextMessagesInput, SegmentMatch, SegmentMatcher, SendCapabilityMode, SendCommandHooks, SendMessageResult, SendVoicePayload, SenderProfileEntry, ServiceNoteHooks, StandaloneEmojiMessage, StickerAssetKind, TextMessageOptions, TextSegment, TransferMessageOptions, UnicodeEmojiEntry, UnknownMessageBody, UserProfile, VideoMessageOptions, VideoPreviewMetadata, VoiceCapabilities, VoiceErrorCode, VoiceMessageMetadata, VoicePlayer, VoicePlayerOptions, VoicePlayerState, VoiceRecordingResult, VoiceRecordingSession, VoiceRecordingSessionOptions, VoiceRecordingState, VoiceToggleOptions };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import'./chunk-IDECJJXC.js';import'./chunk-SXY56EVC.js';export{c as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,b as DEFAULT_LOADING_SHOW_DELAY_MS,u as SPIKE_STEP,q as calculateMediaBox,f as canPromoteMediaPresentationSource,h as captureRuntimeClientOperation,g as captureRuntimeOperation,d as createDelayedLoadingIndicator,o as createLinkMatcher,s as formatFileSize,r as formatMediaDuration,t as getFileExtension,n as hasLinkCandidate,l as highlightSegments,i as mediaService,m as normalizeLinkHref,x as placeholderWaveform,j as readService,w as resampleWaveform,e as resolveBestMediaPresentationSource,a as resolveConversationListPresentation,p as resolveMediaPresentation,k as resolveQuotedMessagePresentation,v as spikeCountForDuration}from'./chunk-
|
|
1
|
+
import'./chunk-IDECJJXC.js';import'./chunk-SXY56EVC.js';export{c as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,b as DEFAULT_LOADING_SHOW_DELAY_MS,u as SPIKE_STEP,q as calculateMediaBox,f as canPromoteMediaPresentationSource,h as captureRuntimeClientOperation,g as captureRuntimeOperation,d as createDelayedLoadingIndicator,o as createLinkMatcher,s as formatFileSize,r as formatMediaDuration,t as getFileExtension,n as hasLinkCandidate,l as highlightSegments,i as mediaService,m as normalizeLinkHref,x as placeholderWaveform,j as readService,w as resampleWaveform,e as resolveBestMediaPresentationSource,a as resolveConversationListPresentation,p as resolveMediaPresentation,k as resolveQuotedMessagePresentation,v as spikeCountForDuration}from'./chunk-EGOTRH4T.js';export{j as DEFAULT_EMOJI_ASSET_BASE,i as EMOJI_CATALOG,c as EMOJI_GAME_DICE_STABLE_KEY,b as EMOJI_GAME_RPS_STABLE_KEY,m as EMOJI_TOKEN_RE,K as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,J as blockReasonForChannelSession,I as blockReasonForChannelState,O as blockReasonForGroupState,R as blockReasonForSession,D as canEditMessage,t as canPinChannelMessage,s as canPinGroupMessage,u as canPinMessage,C as canRecallMessage,Z as cancelMediaUpload,r as createChatRuntime,p as createEmojiMatcher,F as decideConversationAction,H as decideMemberTargetAction,G as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,xa as fetchConversationFileBatch,ya as fetchConversationImageBatch,va as fetchConversationMessageBatch,za as fetchConversationVideoBatch,Aa as fetchConversationVoiceBatch,Ba as fetchNextConversationSearchBatch,aa as forwardService,o as hasEmojiCandidate,N as isGifFile,v as isPinnedMessageProtected,V as isVoiceStorageConfigured,L as mediaBatchBudgetBytes,fa as messageService,e as parseUnicodeEmojiCode,ka as pinnedMessageService,d as prependRecentEmoji,ua as profileService,U as replaceInterruptedMediaFile,P as requiresConversationEncryption,y as resolveChannelMemberAvatarUrl,x as resolveChannelMemberDisplayName,k as resolveEmojiToken,B as resolveFriendDisplayName,la as resolveImProfileAccessDestination,w as resolveMemberDisplayName,A as resolvePublicNickname,z as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,_ as retryMessage,M as runMediaSendBatch,Y as sendAsFilesBatch,E as sendBlockReasonForDecision,T as sendMediaFile,X as sendMediaFilesBatch,S as sendText,W as sendVoice,Q as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-CNVMQYSD.js';export{C as createNewMessageBadgeController,i as createThreadItems,f as formatChatDateSeparator,e as formatConversationDisplayTime,c as getLocalDayKey,l as isMessageLocateScrollProtected,v as isMessageTailChangeFromOlderWindowTrim,k as isMessageViewportMeasurable,B as isMessageVisibleForNewMessageBadge,x as loadOlderUntilBoundary,p as refreshPrependMessageAnchorPosition,j as resolveCenteredMessageScrollTop,a as resolveDisplayTimestamp,g as resolveImThreadActiveDate,h as resolveMessageBodyKind,b as resolveMessageTimelineTimestamp,n as resolvePrependMessageAnchor,q as resolvePrependMessageAnchorAdjustment,o as resolvePrependMessageAnchorPosition,s as resolveSurvivingMessageAnchorAdjustment,r as resolveVisibleMessageAnchorPositions,t as shouldCompleteInitialViewport,y as shouldFillInitialHistoryViewport,u as shouldFollowIncomingMessage,z as shouldLoadNewerHistoryPage,m as shouldPrefetchOlderHistory,w as shouldRestoreMessageViewportFocus,d as shouldShowChatDateSeparator,A as shouldTrackRemoteMessageForBadge}from'./chunk-ONYQKOD6.js';export{a as DEFAULT_LOCALE,k as createImI18n,f as formatFailure,h as formatLastMessageSummary,i as formatMediaPlaceholder,j as formatMentionAll,l as formatServiceText,g as formatSystemMessage,c as getImTimeCatalog,b as normalizeImLocale,d as registerImCatalogOverrides,e as resetImCatalogOverrides}from'./chunk-5IN5YRAI.js';export{j as IM_CHAT_FONT_SCALES,e as IM_DIAGNOSTIC_CATEGORIES,h as IM_EMOJI_CATALOG,c as ImPinnedMessageOperationError,d as createFaceToFaceGroupQrPayload,k as createImClient,f as createImConsoleDiagnosticSink,n as createImDiagnosticMemoryBuffer,g as createSdkDiagnosticWriter,a as migrateImCachePrefix,i as resolveImEmojiToken}from'./chunk-ZAYTBGR2.js';export{Sa as createVoicePlayer,Ta as createVoiceRecordingSession,Qa as detectVoiceCapabilities,Ra as voiceErrorCodeOf}from'./chunk-HN4N3I2C.js';export{ba as EDIT_WINDOW_MS,ia as REACTION_SUPPORTED_CONTENT_TYPES,ja as canReactToMessage,fa as canTransmit,da as canTransmitByType,ea as canTransmitContent,o as classifyStickerImageType,U as createImTextSearchMatcher,S as extractSearchText,T as getImTextSearchInitial,ca as requiresForwardTypeConfirmation,la as resolveChannelAccess,X as resolveTextSegments,ra as sortSessions,sa as sumSessionsUnread}from'./chunk-ZPQ3HWNX.js';import'./chunk-WOT6VMZA.js';
|
package/dist/sdk.d.ts
CHANGED
|
@@ -1832,6 +1832,49 @@ declare function canTransmitContent(message: ForwardContentCandidate): boolean;
|
|
|
1832
1832
|
*/
|
|
1833
1833
|
declare function canTransmit(message: ForwardCandidateMessage): boolean;
|
|
1834
1834
|
|
|
1835
|
+
/**
|
|
1836
|
+
* 表情回应的父消息判定,是「这条消息能不能被回应」的唯一真相源。
|
|
1837
|
+
*
|
|
1838
|
+
* Core 的发送守卫用它在入队前拒绝非法父消息,宿主用它决定长按浮层和残留胶囊的显隐。
|
|
1839
|
+
* 两侧共用同一份口径,避免出现「UI 放行但发送必然返回 unsupported-message」这类漂移。
|
|
1840
|
+
*/
|
|
1841
|
+
|
|
1842
|
+
/**
|
|
1843
|
+
* 允许被表情回应的父消息正文类型,与 iOS `SZChatReactionService.supportsReactionForMessage:` 的协议白名单一致:
|
|
1844
|
+
* 文本、图片、视频、语音、文件、贴纸、名片、小程序、骰子/猜拳,以及转账、通话记录卡片和红包卡片本身。
|
|
1845
|
+
* 系统灰条(含红包领取通知、群提示、频道通知)与 unknown(未知/未来类型)不在白名单内。
|
|
1846
|
+
*
|
|
1847
|
+
* 这里刻意维持显式白名单而不是「排除 system 和 unknown」:新增 contentType 时默认拒绝,
|
|
1848
|
+
* 必须显式决策后才放行。
|
|
1849
|
+
*/
|
|
1850
|
+
declare const REACTION_SUPPORTED_CONTENT_TYPES: ReadonlySet<MessageContentType>;
|
|
1851
|
+
/**
|
|
1852
|
+
* `canReactToMessage` 需要的最小消息字段。
|
|
1853
|
+
*
|
|
1854
|
+
* 只声明判定真正读取的字段,让 Core 的 `ImMessage` 和产品层的 `ImMessageView` 都能直接传入,
|
|
1855
|
+
* 不必为两种 DTO 各写一份判定。
|
|
1856
|
+
*/
|
|
1857
|
+
interface ReactionParentMessage {
|
|
1858
|
+
contentType: MessageContentType;
|
|
1859
|
+
/** 撤回者与撤回时间;存在即已撤回。 */
|
|
1860
|
+
recalled?: unknown;
|
|
1861
|
+
/** 全员删除标记;存在即已被替换成灰条。 */
|
|
1862
|
+
deletedForEveryone?: unknown;
|
|
1863
|
+
/** 端到端加密状态;解密失败的密文占位不能被回应。 */
|
|
1864
|
+
encryption: {
|
|
1865
|
+
decryptFailed?: boolean;
|
|
1866
|
+
};
|
|
1867
|
+
}
|
|
1868
|
+
/**
|
|
1869
|
+
* 判断一条父消息能否承载表情回应。
|
|
1870
|
+
*
|
|
1871
|
+
* 类型白名单之外还要求消息仍是可寻址的正文气泡:撤回和全员删除后消息已变成灰条(回应聚合也会在
|
|
1872
|
+
* merge 时清掉),解密失败的密文占位对应 iOS 的 Unknown 类型,三者都拒绝。
|
|
1873
|
+
*
|
|
1874
|
+
* 本判定不涉及发送状态和权限:能否「新增」回应由调用方按各自场景另行判断。
|
|
1875
|
+
*/
|
|
1876
|
+
declare function canReactToMessage(message: ReactionParentMessage): boolean;
|
|
1877
|
+
|
|
1835
1878
|
/**
|
|
1836
1879
|
* 在宿主显式授权时迁移旧 `cache.prefix` 下的当前账号本地数据。
|
|
1837
1880
|
* 迁移使用新旧 namespace factory 精确定位,不扫描未知库,也不自动删除源数据;失败必须由调用方处理。
|
|
@@ -5134,5 +5177,5 @@ interface ImDiagnosticMemoryBuffer extends ImDiagnosticSink {
|
|
|
5134
5177
|
*/
|
|
5135
5178
|
declare function createImDiagnosticMemoryBuffer(options?: ImDiagnosticMemoryBufferOptions): ImDiagnosticMemoryBuffer;
|
|
5136
5179
|
|
|
5137
|
-
export { EDIT_WINDOW_MS, IM_CHAT_FONT_SCALES, IM_DIAGNOSTIC_CATEGORIES, IM_EMOJI_CATALOG, ImPinnedMessageOperationError, canTransmit, canTransmitByType, canTransmitContent, classifyStickerImageType, createFaceToFaceGroupQrPayload, createImClient, createImConsoleDiagnosticSink, createImDiagnosticMemoryBuffer, createImTextSearchMatcher, createSdkDiagnosticWriter, createVoicePlayer, createVoiceRecordingSession, detectVoiceCapabilities, extractSearchText, getImTextSearchInitial, migrateImCachePrefix, requiresForwardTypeConfirmation, resolveChannelAccess, resolveImEmojiToken, resolveTextSegments, sortSessions, sumSessionsUnread, voiceErrorCodeOf };
|
|
5180
|
+
export { EDIT_WINDOW_MS, IM_CHAT_FONT_SCALES, IM_DIAGNOSTIC_CATEGORIES, IM_EMOJI_CATALOG, ImPinnedMessageOperationError, REACTION_SUPPORTED_CONTENT_TYPES, canReactToMessage, canTransmit, canTransmitByType, canTransmitContent, classifyStickerImageType, createFaceToFaceGroupQrPayload, createImClient, createImConsoleDiagnosticSink, createImDiagnosticMemoryBuffer, createImTextSearchMatcher, createSdkDiagnosticWriter, createVoicePlayer, createVoiceRecordingSession, detectVoiceCapabilities, extractSearchText, getImTextSearchInitial, migrateImCachePrefix, requiresForwardTypeConfirmation, resolveChannelAccess, resolveImEmojiToken, resolveTextSegments, sortSessions, sumSessionsUnread, voiceErrorCodeOf };
|
|
5138
5181
|
export type { CapabilityAvailability, CapabilityDecision, CapabilityReason, ChannelAccessSnapshot, ChannelBaseSessionState, ChannelConversationCapabilities, ChannelConversationMessageApi, ChannelJoinApplication, ChannelJoinApplicationNotification, ChannelJoinApplicationPage, ChannelMember, ChannelMemberPage, ChannelMentionMember, ChannelMentionMemberPage, ChannelMiniProgramRel, ChannelMiniProgramRelConfigType, ChannelMuteReason, ChannelPermissionSet, ChannelProfile, ChannelRole, ChannelSessionState, ContactCardInput, ContactMessageOptions, ConversationBackgroundPreset, ConversationBackgroundSelection, ConversationCapabilitySnapshot, ConversationDraft, ConversationDraftApi, ConversationEntryUnreadSnapshot, ConversationHandle, ConversationHandleSnapshot, ConversationInitialPosition, ConversationLastMessageSummary, ConversationListItem, ConversationListMention, ConversationMessageApi, ConversationOpenOptions, ConversationRef, ConversationSearchPage, ConversationSearchResult, ConversationSystemSummary, ConversationType, DirectConversationCapabilities, DirectConversationMessageApi, DraftInput, EditTextOptions, ExpressionMessageOptions, FileMessageOptions, ForwardFailReason, ForwardItemStatus, ForwardMessageFailure, ForwardMessagesInput, ForwardMessagesResult, ForwardTarget, ForwardedMessageRef, GameMessageOptions, GifMessageOptions, GroupConversationCapabilities, GroupConversationMessageApi, GroupMemberItem, GroupProfile, ImAppearanceSettingsApi, ImApplicationItem, ImApplicationRef, ImApplicationsApi, ImAuthIssue, ImAuthProvider, ImCacheOptions, ImCachePrefixMigrationContext, ImCachePrefixMigrator, ImCallKind, ImCallOutcome, ImCallRecordBody, ImChannelConversationAccessSnapshot, ImChannelMentionApi, ImChannelMiniProgramRel, ImChannelPermissions, ImChannelPinnedMessage, ImChannelProfile, ImChannelRole, ImChannelState, ImChannelsApi, ImChatFontScale, ImClientOptions, ImConnectionState, ImContactBody, ImContactKind, ImContactProfile, ImContactRelationship, ImContactRemarkPhone, ImContactSearchResult, ImContactsApi, ImConversationBackgroundApi, ImConversationCapabilitiesApi, ImConversationListApi, ImConversationListSnapshot, ImConversationListState, ImConversationSearchApi, ImCoreApiOptions, ImCreateChannelInput, ImCreateChannelResult, ImCreateFaceToFaceGroupResult, ImCreateGroupInput, ImCreateGroupResult, ImCreatedChannel, ImCreatedGroup, ImDebugOptions, ImDiagnosticCategory, ImDiagnosticError, ImDiagnosticLayer, ImDiagnosticLevel, ImDiagnosticMemoryBuffer, ImDiagnosticMemoryBufferFilter, ImDiagnosticMemoryBufferOptions, ImDiagnosticMemoryBufferSnapshot, ImDiagnosticMessage, ImDiagnosticRecord, ImDiagnosticSink, ImDiagnosticWriter, ImDirectCallAnswerResult, ImDirectCallFailReason, ImDirectCallHangupInput, ImDirectCallHangupReason, ImDirectCallInviteInput, ImDirectCallNotifyAudioInput, ImDirectCallTargetInput, ImDirectCallsApi, ImDirectReadReceiptSettings, ImDirectoryApi, ImDirectoryFieldMatch, ImDirectoryItem, ImDirectoryKind, ImDirectoryPage, ImDirectorySearchApi, ImDirectorySearchItem, ImDirectorySearchResult, ImDraftsApi, ImEmojiCatalogEntry, ImEndpointProvider, ImEventsApi, ImExpressionAsset, ImExpressionAssetInput, ImExpressionEmojiRecentInput, ImExpressionFavoriteKind, ImExpressionOptions, ImExpressionRecentInput, ImExpressionRecentItem, ImExpressionRecentItemKind, ImExpressionsApi, ImFaceToFaceGroup, ImFileBody, ImFriendshipRequestResult, ImGameBody, ImGameType, ImGifAssetInput, ImGiphyAsset, ImGiphyPage, ImGiphyPageOptions, ImGroupCallAnswerInput, ImGroupCallBusyInput, ImGroupCallCreateInput, ImGroupCallJoinInput, ImGroupCallMeetingSnapshot, ImGroupCallMember, ImGroupCallMemberStatus, ImGroupCallStatusInput, ImGroupCallTargetInput, ImGroupCallsApi, ImGroupConversationState, ImGroupMentionApi, ImGroupPinnedMessage, ImGroupProfile, ImGroupsApi, ImImageBody, ImLifecycleSnapshot, ImLocalDataApi, ImLocalDataInfo, ImLogoutOptions, ImMediaConfig, ImMediaTask, ImMediaTasksApi, ImMembershipJoinResult, ImMessageMention, ImMessageReactionAggregate, ImMessageReactions, ImMessageRef, ImMessageSearchApi, ImMessageView, ImMessageViewBody, ImMiniProgramBody, ImMiniProgramShowType, ImOutboxApi, ImOutboxItem, ImPageToken, ImPinnedMessageErrorKind, ImPinnedMessageOperation, ImProductApplicationUpdate, ImProductAuthInvalidReason, ImProductClient, ImProductEvent, ImProductEventError, ImProductEventMap, ImProductMessage, ImReactionChangeAction, ImReactionChangeResult, ImReadReceiptSettingsApi, ImRedPacketBody, ImRedPacketType, ImSdkErrorCategory, ImSdkErrorShape, ImSearchApi, ImSessionApi, ImSessionLifecycleState, ImSettingsApi, ImStickerAssetInput, ImStickerBody, ImStickerPack, ImSupportedConversationRef, ImTextSearchMatch, ImTextSearchMatchOptions, ImTextSearchMatcher, ImTextSearchRange, ImTransferBody, ImTransferSessionType, ImTransferStatus, ImVideoBody, ImVoiceBody, ImageMessageOptions, ImagePreviewMetadata, LocalConversationHistoryClearResult, LocalMessageDeletionResult, MentionCandidate, MentionCandidatePage, MentionInput, MessageContentType, MessageWindowInfo, MessageWindowPage, MigrateImCachePrefixInput, MiniProgramMessageOptions, ProductConversationListType, ProductHandleConversationType, ProductMessageSearchPage, ProductMessageSearchResult, ResolveTextOptions, ResolvedConversationBackground, SegmentMatch, SegmentMatcher, SendMessageResult, StickerAssetKind, TextMessageOptions, TextSegment, TransferMessageOptions, UnknownMessageBody, UserProfile, VideoMessageOptions, VideoPreviewMetadata, VoiceCapabilities, VoiceErrorCode, VoiceMessageMetadata, VoicePlayer, VoicePlayerOptions, VoicePlayerState, VoiceRecordingResult, VoiceRecordingSession, VoiceRecordingSessionOptions, VoiceRecordingState, VoiceToggleOptions };
|
package/dist/sdk.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import'./chunk-IDECJJXC.js';export{j as IM_CHAT_FONT_SCALES,e as IM_DIAGNOSTIC_CATEGORIES,h as IM_EMOJI_CATALOG,c as ImPinnedMessageOperationError,d as createFaceToFaceGroupQrPayload,k as createImClient,f as createImConsoleDiagnosticSink,n as createImDiagnosticMemoryBuffer,g as createSdkDiagnosticWriter,a as migrateImCachePrefix,i as resolveImEmojiToken}from'./chunk-
|
|
1
|
+
import'./chunk-IDECJJXC.js';export{j as IM_CHAT_FONT_SCALES,e as IM_DIAGNOSTIC_CATEGORIES,h as IM_EMOJI_CATALOG,c as ImPinnedMessageOperationError,d as createFaceToFaceGroupQrPayload,k as createImClient,f as createImConsoleDiagnosticSink,n as createImDiagnosticMemoryBuffer,g as createSdkDiagnosticWriter,a as migrateImCachePrefix,i as resolveImEmojiToken}from'./chunk-ZAYTBGR2.js';export{Sa as createVoicePlayer,Ta as createVoiceRecordingSession,Qa as detectVoiceCapabilities,Ra as voiceErrorCodeOf}from'./chunk-HN4N3I2C.js';export{ba as EDIT_WINDOW_MS,ia as REACTION_SUPPORTED_CONTENT_TYPES,ja as canReactToMessage,fa as canTransmit,da as canTransmitByType,ea as canTransmitContent,o as classifyStickerImageType,U as createImTextSearchMatcher,S as extractSearchText,T as getImTextSearchInitial,ca as requiresForwardTypeConfirmation,la as resolveChannelAccess,X as resolveTextSegments,ra as sortSessions,sa as sumSessionsUnread}from'./chunk-ZPQ3HWNX.js';import'./chunk-WOT6VMZA.js';
|
package/package.json
CHANGED
package/dist/chunk-6QR5GVQ3.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import {y,B,f,g,i,K,L as L$1,x as x$1,A,k,e,z as z$1,C,M,N as N$1,E,G as G$1,F as F$1,H as H$1,I,J,oa as oa$1,na as na$1,ma as ma$1,U,W as W$1,S,la as la$1,O as O$1,P,ja as ja$1,ia as ia$1,Q as Q$1,R}from'./chunk-BO5YFCS4.js';import*as V from'node-forge';import {deleteDB,openDB}from'idb';function Fr(e,n=async t=>{let{createBrowserApiProtocolClient:r}=await import('./browser-BKCNJDKR.js');return r(t)}){let t=null;function r(){if(t!==null)return t;let o=n(e);return t=o,o.catch(()=>{t===o&&(t=null);}),o}return async(o,a)=>(await r())(o,a)}function Jr(){if(typeof window>"u"||typeof document>"u")return {recordingSupported:false,recordingBlockers:["no-media-devices"],playbackSupported:false};let e=[];window.isSecureContext===false&&e.push("insecure-context"),(typeof navigator>"u"||navigator.mediaDevices?.getUserMedia===void 0)&&e.push("no-media-devices"),typeof MediaRecorder>"u"&&e.push("no-media-recorder");let n=window,t=window.AudioContext!==void 0||n.webkitAudioContext!==void 0,r=window.OfflineAudioContext!==void 0||n.webkitOfflineAudioContext!==void 0;return (!t||!r)&&e.push("audio-context-blocked"),{recordingSupported:e.length===0,recordingBlockers:e,playbackSupported:typeof Audio<"u"}}var G=class extends Error{code;constructor(n,t,r){super(t??n,r),this.name="VoiceError",this.code=n;}};function Je(e){return e instanceof G?e.code:void 0}function ft(e){switch(e instanceof DOMException||e instanceof Error?e.name:""){case "NotAllowedError":case "SecurityError":case "PermissionDeniedError":return new G("permission-denied","\u9EA6\u514B\u98CE\u6743\u9650\u88AB\u62D2\u7EDD",{cause:e});case "NotFoundError":case "DevicesNotFoundError":return new G("device-not-found","\u672A\u627E\u5230\u53EF\u7528\u9EA6\u514B\u98CE",{cause:e});case "NotReadableError":case "TrackStartError":case "AbortError":return new G("device-busy","\u9EA6\u514B\u98CE\u88AB\u5360\u7528\u6216\u542F\u52A8\u5931\u8D25",{cause:e});default:return new G("device-busy",e instanceof Error?e.message:"\u9EA6\u514B\u98CE\u542F\u52A8\u5931\u8D25",{cause:e})}}var Z=16e3,Vr=new URL("./speex-runtime.txt",import.meta.url).href,fn=null;async function jr(){if(document.querySelector('script[data-speex-runtime="true"]')!==null)return;let n=await fetch(Vr);if(!n.ok)throw new Error(`Speex runtime fetch failed: ${n.status}`);let t=await n.text(),r=document.createElement("script");r.dataset.speexRuntime="true",r.text=t,document.head.appendChild(r);}async function mn(){let e=typeof window>"u"?void 0:window;return e?.__speexInH5!==void 0?e.__speexInH5:(fn??=(async()=>{if(e===void 0||typeof document>"u")throw new G("codec-unavailable","Speex \u8FD0\u884C\u65F6\u4EC5\u53EF\u5728\u6D4F\u89C8\u5668\u73AF\u5883\u52A0\u8F7D");if(await jr(),e.__speexInH5===void 0&&e.initAudio?.(),e.__speexInH5===void 0)throw new G("codec-unavailable","Speex \u8FD0\u884C\u65F6\u521D\u59CB\u5316\u5931\u8D25");return e.__speexInH5})().catch(n=>{throw fn=null,n instanceof G?n:new G("codec-unavailable","Speex \u8FD0\u884C\u65F6\u52A0\u8F7D\u5931\u8D25",{cause:n})}),fn)}function mt(){mn().catch(()=>{});}function ce(e,n,t){for(let r=0;r<t.length;r+=1)e.setUint8(n+r,t.charCodeAt(r));}function qr(e,n){let r=new ArrayBuffer(44+e.length*2),o=new DataView(r);ce(o,0,"RIFF"),o.setUint32(4,36+e.length*2,true),ce(o,8,"WAVE"),ce(o,12,"fmt "),o.setUint32(16,16,true),o.setUint16(20,1,true),o.setUint16(22,1,true),o.setUint32(24,n,true),o.setUint32(28,n*2,true),o.setUint16(32,2,true),o.setUint16(34,16,true),ce(o,36,"data"),o.setUint32(40,e.length*2,true);let a=44;for(let s=0;s<e.length;s+=1){let d=Math.max(-1,Math.min(1,e[s]??0));o.setInt16(a,d<0?d*32768:d*32767,true),a+=2;}return r}function gn(e){if(e instanceof Int16Array)return e;let n=new Int16Array(e.length);for(let t=0;t<e.length;t+=1){let r=Math.max(-1,Math.min(1,e[t]??0));n[t]=r<0?r*32768:r*32767;}return n}var zr=40,hn=120,Wr=40,yn=80;function Yr(e,n){let t=Math.min(Math.floor(n*zr/1e3),Math.floor(e.length/2));for(let r=0;r<t;r+=1){let o=r/t;e[r]=Math.round((e[r]??0)*o);let a=e.length-1-r;e[a]=Math.round((e[a]??0)*o);}return e}function Cn(e,n){if(e.length===0)return e;let t=Math.min(Math.floor(n*hn/1e3),Math.max(0,e.length-1)),r=t>0?e.subarray(t):e,o=new Float32Array(r),a=Math.min(Math.floor(n*Wr/1e3),Math.floor(o.length/2));for(let s=0;s<a;s+=1){let d=s/a;o[s]=(o[s]??0)*d;let i=o.length-1-s;o[i]=(o[i]??0)*d;}return o}function Ve(e,n){let r=new ArrayBuffer(44+e.length*2),o=new DataView(r);return ce(o,0,"RIFF"),o.setUint32(4,36+e.length*2,true),ce(o,8,"WAVE"),ce(o,12,"fmt "),o.setUint32(16,16,true),o.setUint16(20,1,true),o.setUint16(22,1,true),o.setUint32(24,n,true),o.setUint32(28,n*2,true),o.setUint16(32,2,true),o.setUint16(34,16,true),ce(o,36,"data"),o.setUint32(40,e.length*2,true),new Int16Array(r,44).set(e),new Uint8Array(r)}function Qr(e){let n=new Uint8Array(e.length);for(let t=0;t<e.length;t+=1)n[t]=e.charCodeAt(t)&255;return n}function Xr(e){let t="";for(let r=0;r<e.length;r+=32768)t+=String.fromCharCode(...e.subarray(r,Math.min(r+32768,e.length)));return t}async function gt(e,n){let t=await mn(),r=Math.floor(n*yn/1e3),o=new Float32Array(r+e.length);o.set(e,r);let a=qr(o,n);try{return Qr(t.encodeFile(a))}catch(s){throw new G("encode-failed","\u8BED\u97F3\u7F16\u7801\u5931\u8D25",{cause:s})}}async function ht(e){let n=await mn();try{let[t,r]=n.decodeFile(Xr(e));if(t.length===0)throw new Error("decoded empty pcm");let o=Yr(gn(t),r.rate>0?r.rate:Z),a=r.rate>0?r.rate:Z;return {samples:o,sampleRate:a,durationMs:Math.round(o.length/a*1e3)}}catch(t){throw t instanceof G?t:new G("decode-failed","\u8BED\u97F3\u89E3\u7801\u5931\u8D25",{cause:t})}}async function yt(e){let n=await ht(e);return {wavData:Ve(n.samples,n.sampleRate),durationMs:n.durationMs}}function Zr(e={}){let n=e.cacheMax??8,t={activeId:"",isPlaying:false,loadingId:"",progress:0,currentTimeMs:0,errorIds:new Set},r=new Set;function o(){for(let l of r)l(t);}let a=null,s=new Map,d=0,i=false,f=false;function g(l){let _=s.get(l);return _!==void 0&&(s.delete(l),s.set(l,_)),_}function b(l,_){if(i)return URL.revokeObjectURL(_.url),_;let C=s.get(l);if(C!==void 0)return URL.revokeObjectURL(_.url),s.delete(l),s.set(l,C),C;for(s.set(l,_);s.size>n;){let I;for(let M of s.keys())if(M!==t.activeId){I=M;break}if(I===void 0)break;let A=s.get(I);s.delete(I),A!==void 0&&URL.revokeObjectURL(A.url);}return _}function h(l){l.paused||l.pause(),l.removeAttribute("src");try{l.load();}catch{}}function p(l,_){return !i&&l===d&&t.activeId===_}function S(){if(a!==null)return a;let l=new Audio;return l.preload="auto",l.addEventListener("timeupdate",()=>{t.activeId!==""&&(t.currentTimeMs=l.currentTime*1e3,t.progress=l.duration>0?Math.min(1,l.currentTime/l.duration):0,o());}),l.addEventListener("ended",()=>{v(),h(l),o();}),l.addEventListener("pause",()=>{t.activeId!==""&&(t.isPlaying=false,o());}),a=l,l}function v(){t.activeId="",t.isPlaying=false,t.progress=0,t.currentTimeMs=0;}function E(){d+=1,f=false,t.loadingId="",v(),a!==null&&h(a),o();}function c(l){t.errorIds=new Set([...t.errorIds,l]);}function u(l){if(!t.errorIds.has(l))return;let _=new Set(t.errorIds);_.delete(l),t.errorIds=_;}async function y(l,_){let C=g(l);if(C!==void 0)return {entry:C};let I;try{I=await _();}catch(A){return {entry:null,error:{code:Je(A),cause:A}}}if(I===null)return {entry:null};try{let{wavData:A,durationMs:M}=await yt(I),R={url:URL.createObjectURL(new Blob([A],{type:"audio/wav"})),durationMs:M};return {entry:b(l,R)}}catch(A){return {entry:null,error:{code:Je(A),cause:A}}}}async function m(l,_){if(i)return;let C=S();if(u(l),t.activeId===l){if(t.isPlaying){C.pause();return}let M=++d;try{await C.play();}catch{if(!p(M,l))return;c(l),o();return}if(!p(M,l))return;t.isPlaying=true,o(),_.onPlayStart?.();return}if(t.loadingId===l)return;E();let I=++d;t.loadingId=l,o();let A=await y(l,_.load);if(I===d){if(t.loadingId="",A.entry===null){c(l),o(),A.error!==void 0&&_.onDecodeError?.(A.error.code,A.error.cause);return}C.src=A.entry.url,t.activeId=l,t.progress=0,t.currentTimeMs=0,o();try{await C.play();}catch(M){if(!p(I,l))return;v(),h(C),c(l),o(),_.onDecodeError?.(void 0,M);return}p(I,l)&&(t.isPlaying=true,o(),_.onPlayStart?.());}}function P(l,_){a===null||t.activeId!==l||!Number.isFinite(a.duration)||a.duration<=0||(a.currentTime=Math.min(Math.max(_,0),.999)*a.duration);}function k(l){a===null||t.activeId!==l||t.isPlaying&&(f=true,a.pause());}function D(l){if(a===null||t.activeId!==l||!f)return;f=false;let _=++d;a.play().then(()=>{p(_,l)&&(t.isPlaying=true,o());}).catch(()=>{p(_,l)&&(c(l),o());});}function w(){if(!i){i=true,E();for(let l of s.values())URL.revokeObjectURL(l.url);s.clear(),r.clear(),a=null;}}return {getState:()=>t,subscribe:l=>(r.add(l),()=>r.delete(l)),toggle:m,seek:P,beginScrub:k,endScrub:D,stop:E,dispose:w}}function eo(e){if(e.length===0)return 0;let n=0;for(let t=0;t<e.length;t+=1){let r=((e[t]??128)-128)/128;n+=r*r;}return Math.min(1,Math.sqrt(n/e.length)*Math.SQRT2)}function no(e,n,t){if(e.length===0||n<=0||t<=0)return 0;let r=n/t,o=0,a=0;for(let s=0;s<e.length;s+=1){let d=s*r,i=.2;d<200?i=.15:d<300?i=.4:d<=3400?i=1:d<=6e3&&(i=.45),o+=(e[s]??0)/255*i,a+=i;}return a>0?o/a:0}function Ct(e){let n=eo(e.timeDomain),t=no(e.frequency,e.sampleRate,e.fftSize),r=n*.55+t*.45;return Math.min(1,r*e.boost)**.72}var je=class{constructor(n=.45,t=.18){this.attack=n;this.release=t;}attack;release;value=0;next(n){let t=Math.min(1,Math.max(0,n));return t>this.value?this.value+=(t-this.value)*this.attack:this.value+=(t-this.value)*this.release,this.value}};function to(){return {channelCount:1,echoCancellation:true,noiseSuppression:true,autoGainControl:true}}var ro=50,oo=.12,io=2.6,ao=.06,so=256;function co(){return typeof MediaRecorder>"u"?"":["audio/webm","audio/webm;codecs=opus","audio/mp4","audio/aac","audio/ogg;codecs=opus"].find(n=>MediaRecorder.isTypeSupported(n))??""}async function uo(e,n,t){let r=window.AudioContext??window.webkitAudioContext,o=window.OfflineAudioContext??window.webkitOfflineAudioContext;if(o===void 0||t==null&&r===void 0)throw new G("audio-context-blocked","AudioContext \u4E0D\u53EF\u7528");let a=t??new r,s=t==null;try{a.state==="suspended"&&await a.resume().catch(()=>{});let d=await a.decodeAudioData(await e.arrayBuffer()),i=Math.max(1,Math.ceil(d.duration*n)),f=new o(1,i,n),g=f.createBufferSource();return g.buffer=d,g.connect(f.destination),g.start(0),(await f.startRendering()).getChannelData(0).slice()}catch(d){throw d instanceof G?d:new G("decode-failed","\u5F55\u97F3\u6BB5\u89E3\u7801\u5931\u8D25",{cause:d})}finally{s&&await a.close().catch(()=>{});}}function bt(e){let n=0;for(let o of e)n+=o.length;let t=new Float32Array(n),r=0;for(let o of e)t.set(o,r),r+=o.length;return t}async function lo(e={}){if(typeof MediaRecorder>"u")throw new G("no-media-recorder","\u5F53\u524D\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u5F55\u97F3");let n;if(e.stream!==void 0)n=e.stream;else {if(typeof navigator>"u"||navigator.mediaDevices?.getUserMedia===void 0)throw new G("no-media-devices","\u5F53\u524D\u73AF\u5883\u4E0D\u652F\u6301\u9EA6\u514B\u98CE\u91C7\u96C6");try{n=await navigator.mediaDevices.getUserMedia({audio:to()});}catch(C){throw ft(C)}}mt();let t=co(),r=e.maxDurationMs??6e4,o="recording",a=[],s=0,d=[],i=null,f=null,g=null,b=[],h=0,p=false;function S(){try{let C;try{C=t!==""?new MediaRecorder(n,{mimeType:t}):new MediaRecorder(n);}catch{C=new MediaRecorder(n);}return b=[],C.ondataavailable=I=>{I.data.size>0&&b.push(I.data);},C.start(250),h=Date.now(),C}catch(C){throw C instanceof G?C:new G("device-busy","\u5F55\u97F3\u5668\u542F\u52A8\u5931\u8D25",{cause:C})}}let v=e.amplitude?.intervalMs??ro,E=e.amplitude?.boost??io,c=e.amplitude?.smoothing??oo,u=e.amplitude?.minVolume??ao;function y(){let C=Math.floor(r/1e3*Z),I=0;for(let M of a)I+=M.length;if(I>C){let M=C,R=[];for(let T of a){if(M<=0)break;T.length<=M?(R.push(T),M-=T.length):(R.push(T.slice(0,M)),M=0);}a.length=0,a.push(...R);}s=Math.min(s,r);let A=Math.max(0,Math.ceil(r/v));d.length>A&&(d.length=A);}async function m(){if(o!=="recording"){e.onMaxDuration?.();return}e.onMaxDuration?.(),o="paused";let C=_().then(()=>y());g=C;try{await C;}catch(I){console.warn("[im-browser] pauseAtMaxDuration settle failed",I);}}let P=setInterval(()=>{!p&&o==="recording"&&w()>=r&&(p=true,m());},250),k=null,D=null;try{let C=window.AudioContext??window.webkitAudioContext;if(C!==void 0){k=new C,k.state==="suspended"&&k.resume().catch(()=>{});let I=k.createMediaStreamSource(n),A=k.createAnalyser();A.fftSize=so,A.smoothingTimeConstant=c,I.connect(A);let M=new Uint8Array(A.frequencyBinCount),R=new Uint8Array(A.fftSize),T=new je;D=setInterval(()=>{if(o!=="recording"||i===null)return;A.getByteFrequencyData(M),A.getByteTimeDomainData(R);let U=Ct({timeDomain:R,frequency:M,sampleRate:k.sampleRate,fftSize:A.fftSize,boost:E}),B=T.next(U),$=B<u?0:B;d.push(Math.round($*255)),e.onAmplitude?.($);},v);}}catch(C){console.warn("[im-browser] amplitude analyser setup failed",C);}function w(){let C=o==="recording"&&i!==null?Date.now()-h:0;return s+C}function l(){P!==null&&(clearInterval(P),P=null),D!==null&&(clearInterval(D),D=null),k?.close().catch(()=>{}),k=null;for(let C of n.getTracks())C.stop();}function _(){if(f!==null)return f;let C=i;return C===null?Promise.resolve():(i=null,f=(async()=>{await new Promise(M=>{if(C.state==="inactive"){M();return}C.onstop=()=>M(),C.stop();});let I=new Blob(b,{type:C.mimeType||t||"audio/webm"});if(b=[],I.size===0)return;let A=await uo(I,Z,k);A.length!==0&&(a.push(A),s+=A.length/Z*1e3);})().finally(()=>{f=null;}),f)}try{i=S();}catch(C){throw o="closed",l(),C}return {getState:()=>o,recordedMs:w,async pause(){o==="recording"&&(o="paused",await _(),(p||s>=r)&&y());},async resume(){o!=="paused"||p||(i=S(),o="recording");},async finish(){if(o==="closed")throw new G("empty-recording","\u5F55\u97F3\u4F1A\u8BDD\u5DF2\u7ED3\u675F");o="closed";try{g!==null?await g:await _(),y();}finally{l();}let C=bt(a);if(C.length===0)throw new G("empty-recording","\u5F55\u97F3\u5185\u5BB9\u4E3A\u7A7A");let I=Cn(C,Z);if(I.length===0)throw new G("empty-recording","\u5F55\u97F3\u5185\u5BB9\u4E3A\u7A7A");let A=Math.min(d.length,Math.ceil(hn/v));return {data:await gt(I,Z),durationMs:Math.round(I.length/Z*1e3)+yn,waveform:d.slice(A),filename:`AUDIO_${Date.now()}.ogg`,mimeType:"audio/ogg"}},cancel(){if(o==="closed")return;o="closed";let C=i;if(i=null,C!==null&&(C.ondataavailable=null,C.onstop=null,C.state!=="inactive"))try{C.stop();}catch{}a.length=0,l();},async previewWav(){g!==null?await g:f!==null&&await f,y();let C=bt(a),I=Cn(C,Z);if(I.length===0)throw new G("empty-recording","\u6682\u65E0\u53EF\u8BD5\u542C\u7684\u5F55\u97F3\u5185\u5BB9");return {wavData:Ve(gn(I),Z),durationMs:Math.round(I.length/Z*1e3)}}}}var ee=class extends Error{constructor(n,t){super(n,t),this.name="ChannelKeyError";}};function Pt(e){let n=e.trim(),t=n.replace(/-/g,"+").replace(/_/g,"/");if(t===""||!/^[A-Z0-9+/]*={0,2}$/i.test(t)||t.length%4===1)throw new ee("channel secret_key \u4E0D\u662F\u5408\u6CD5 Base64");let r=t.replace(/=+$/,""),o=r+"=".repeat((4-r.length%4)%4),a;try{a=atob(o);}catch(f){throw new ee("channel secret_key Base64 \u89E3\u7801\u5931\u8D25",{cause:f})}let s=Uint8Array.from(a,f=>f.charCodeAt(0)&255);if(s.length===0)throw new ee("channel secret_key Base64 \u89E3\u7801\u7ED3\u679C\u4E3A\u7A7A");let d=new Uint8Array(16);d.set(s.subarray(0,d.length));let i=n.length===16&&/^[\x20-\x7E]+$/.test(n)?Uint8Array.from(n,f=>f.charCodeAt(0)):void 0;return {canonical:d,...i===void 0?{}:{legacyAscii:i},metadata:{channelKeyCharLength:n.length,decodedByteLength:s.length,padByteCount:Math.max(0,16-s.length),legacyAsciiCandidate:i!==void 0}}}function po(e){let n=new Map,t=new Map,r=new Map,o=new Map;function a(u){return {canonical:u.canonical.slice(),...u.legacyAscii===void 0?{}:{legacyAscii:u.legacyAscii.slice()},metadata:{...u.metadata}}}function s(u){return [{strategy:"canonical-base64-pad",key:u.canonical.slice()},...u.legacyAscii===void 0?[]:[{strategy:"legacy-ascii16",key:u.legacyAscii.slice()}]]}function d(u){n.delete(u),t.delete(u),r.delete(u),o.set(u,(o.get(u)??0)+1);}function i(u){let y=o.get(u)??0,m=(async()=>{try{let P=await e.loadSecretKey(u);if(P===null||P.trim()==="")throw new ee(`channel secret_key \u7F3A\u5931\uFF08channelId=${u}\uFF09`);let k=Pt(P);return (o.get(u)??0)===y&&n.set(u,a(k)),k}catch(P){let k=P instanceof ee?P:new ee(`channel secret_key \u52A0\u8F7D\u5931\u8D25\uFF08channelId=${u}\uFF09`,{cause:P});throw e.onError?.(k.message,P),k}})().finally(()=>{t.get(u)===m&&t.delete(u);});return t.set(u,m),m}function f(u,y){let m=u.trim();if(m===""){let k=new ee("channel id \u4E0D\u80FD\u4E3A\u7A7A");return e.onError?.(k.message),Promise.reject(k)}y?.force===true&&d(m);let P=n.get(m);return P!==void 0?Promise.resolve(a(P)):t.get(m)??i(m)}function g(u,y){let m=u.trim();if(m===""){let w=new ee("channel id \u4E0D\u80FD\u4E3A\u7A7A");return e.onError?.(w.message),Promise.reject(w)}y?.force===true&&d(m);let P=n.get(m);if(P!==void 0)return Promise.resolve(P.canonical.slice());let k=r.get(m);if(k!==void 0)return k;let D=(t.get(m)??i(m)).then(w=>w.canonical.slice()).finally(()=>{r.get(m)===D&&r.delete(m);});return r.set(m,D),D}function b(u){return n.get(u.trim())?.canonical.slice()??null}async function h(u,y){let m=await f(u,y);return s(m)}function p(u){let y=n.get(u.trim());return y===void 0?[]:s(y)}function S(u){let y=n.get(u.trim());return y===void 0?null:{...y.metadata}}function v(u,y){let m=u.trim();if(m==="")throw new ee("channel id \u4E0D\u80FD\u4E3A\u7A7A");let P=Pt(y);d(m),n.set(m,a(P));}function E(u){let y=u.trim();y!==""&&d(y);}function c(){let u=new Set([...n.keys(),...t.keys(),...r.keys(),...o.keys()]);for(let y of u)o.set(y,(o.get(y)??0)+1);n.clear(),t.clear(),r.clear();}return {getChannelKey:g,getCachedChannelKey:b,getChannelKeyCandidates:h,getCachedChannelKeyCandidates:p,getCachedChannelKeyMetadata:S,primeChannelKey:v,clearChannelKey:E,clearAll:c}}var fo="core";var xe=class extends Error{code=502;constructor(n,t){super(`core JSON \u4F20\u8F93\u5931\u8D25\uFF1A${n||"unknown transport error"}`,t===void 0?void 0:{cause:t}),this.name="CoreJsonTransportError";}},q=class extends Error{businessCode;operation;constructor(n,t,r){super(`${n}\u5931\u8D25\uFF1Acode=${t}${r?` ${r}`:""}`),this.name="CoreJsonBusinessError",this.businessCode=t,this.operation=n;}};async function x(e,n,t,r){let o=r!==void 0&&"responseMode"in r&&r.responseMode==="strict",a;try{a=await e(n,{target:fo,data:t,...r?.method===void 0?{}:{method:r.method},...r?.headers===void 0?{}:{headers:r.headers},...r?.prefix===void 0?{}:{prefix:r.prefix}});}catch(s){throw o?new xe(s instanceof Error?s.message:String(s),s):s}if(o){let s=typeof a.msg=="string"?a.msg:"";if(a.code===502)throw new xe(s);return a.code!==200?{ok:false,code:a.code,message:s,data:a.data}:{ok:true,code:200,message:s,data:a.data}}return {code:a.code,data:a.code===200&&a.data!=null?a.data:null}}function wt(e,n){let t=n.clientType===void 0?{public_key:n.publicKey}:{public_key:n.publicKey,clientType:n.clientType},r=n.clientType===void 0?void 0:{headers:{"Client-type":String(n.clientType)}};return x(e,"/user/encrypt_info/info",t,r)}function mo(e){let n=e.trim().replace(/-/g,"+").replace(/_/g,"/"),t=n+"=".repeat((4-n.length%4)%4),r=atob(t),o=new Uint8Array(r.length);for(let a=0;a<r.length;a++)o[a]=r.charCodeAt(a)&255;return o}function go(e){let n=e.clientType,t=new Map,r=new Map,o=null,a=null;function s(b,h){e.onError?.(b,h);}function d(){if(o!==null)return Promise.resolve(o);if(a!==null)return a;let b=Promise.resolve().then(()=>e.crypto.generateTempKeyPair()).then(h=>(o=h,h)).finally(()=>{a===b&&(a=null);});return a=b,b}async function i(b){let h;try{h=await d();}catch(E){return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\uFF1A\u751F\u6210\u4E34\u65F6 RSA \u5BC6\u94A5\u5931\u8D25\uFF08userId=${b}\uFF09`,E),null}let p;try{p=await wt(e.client,{publicKey:h.publicKeyBase64,clientType:n});}catch(E){return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\u8BF7\u6C42\u5F02\u5E38\uFF08userId=${b}\uFF09`,E),null}if(p.data===null)return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\u4E1A\u52A1\u5931\u8D25\uFF08userId=${b}\uFF0Ccode=${p.code}\uFF09`),null;let S=p.data.prv_key??p.data.prvKey??"",v=String(p.data.version??"").trim();if(S==="")return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\u54CD\u5E94\u7F3A\u5C11 prv_key\uFF08userId=${b}\uFF09`),null;try{let E=e.crypto.rsaDecryptPkcs1({data:mo(S),privateKey:h.privateKey}),c=new TextDecoder().decode(E).trim();if(c==="")return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\uFF1A\u89E3\u51FA\u7684\u79C1\u94A5\u4E3A\u7A7A\uFF08userId=${b}\uFF09`),null;let u={privateKey:c,version:v};return t.set(b,u),u}catch(E){return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\uFF1A\u4E34\u65F6\u79C1\u94A5\u89E3 prv_key \u5931\u8D25\uFF08userId=${b}\uFF09`,E),null}}function f(b,h){let p=b.trim();if(p==="")return Promise.resolve(null);h?.force===true&&t.delete(p);let S=t.get(p);if(S!==void 0)return Promise.resolve(S);let v=r.get(p);if(v!==void 0)return v;let E=i(p).finally(()=>{r.get(p)===E&&r.delete(p);});return r.set(p,E),E}function g(b){return t.get(b.trim())??null}return {getUserPrivateKey:f,getCachedPrivateKey:g}}function It(e,n){let t=n.clientType===void 0?{group_id:n.groupId,public_key:n.publicKey}:{group_id:n.groupId,public_key:n.publicKey,clientType:n.clientType},r=n.clientType===void 0?void 0:{headers:{"Client-type":String(n.clientType)}};return x(e,"/user_group/encrypt_info",t,r)}function ho(e){let n=e.trim().replace(/-/g,"+").replace(/_/g,"/"),t=n+"=".repeat((4-n.length%4)%4),r=atob(t),o=new Uint8Array(r.length);for(let a=0;a<r.length;a++)o[a]=r.charCodeAt(a)&255;return o}function yo(e){let n=e.clientType,t=new Map,r=new Map,o=new Map,a=null,s=null;function d(){if(a!==null)return Promise.resolve(a);if(s!==null)return s;let h=Promise.resolve().then(()=>e.crypto.generateTempKeyPair()).then(p=>(a=p,p)).finally(()=>{s===h&&(s=null);});return s=h,h}async function i(h){let p=o.get(h)??0,S;try{S=await d();}catch(m){return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\uFF1A\u751F\u6210\u4E34\u65F6 RSA \u5BC6\u94A5\u5931\u8D25\uFF08groupId=${h}\uFF09`,m),null}let v;try{v=await It(e.client,{groupId:h,publicKey:S.publicKeyBase64,clientType:n});}catch(m){return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\u8BF7\u6C42\u5F02\u5E38\uFF08groupId=${h}\uFF09`,m),null}if(v.data===null)return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\u4E1A\u52A1\u5931\u8D25\uFF08groupId=${h}\uFF0Ccode=${v.code}\uFF09`),null;let E=v.data,c=String(E.prv_key??E.prvKey??E.private_key??"").trim(),u=String(E.pub_key??E.pubKey??E.public_key??"").trim(),y=String(E.version??"").trim();if(c==="")return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\u54CD\u5E94\u7F3A\u5C11 prv_key\uFF08groupId=${h}\uFF09`),null;try{let m=e.crypto.rsaDecryptPkcs1({data:ho(c),privateKey:S.privateKey}),P=new TextDecoder().decode(m).trim();if(P==="")return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\uFF1A\u89E3\u51FA\u7684\u7FA4\u79C1\u94A5\u4E3A\u7A7A\uFF08groupId=${h}\uFF09`),null;let k={privateKey:P,publicKey:u,version:y};return (o.get(h)??0)===p&&t.set(h,k),k}catch(m){return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\uFF1A\u4E34\u65F6\u79C1\u94A5\u89E3 prv_key \u5931\u8D25\uFF08groupId=${h}\uFF09`,m),null}}function f(h,p){let S=h.trim();if(S==="")return Promise.resolve(null);p?.force===true&&t.delete(S);let v=t.get(S);if(v!==void 0)return Promise.resolve(v);let E=r.get(S);if(E!==void 0)return E;let c=i(S).finally(()=>{r.get(S)===c&&r.delete(S);});return r.set(S,c),c}function g(h){return t.get(h.trim())??null}function b(h){let p=h.trim();t.delete(p),r.delete(p),o.set(p,(o.get(p)??0)+1);}return {getGroupKeys:f,getCachedGroupKeys:g,clearGroupKeys:b}}async function Ee(e,n){let t=n.clientType===void 0?{other_user_openid:n.userId}:{other_user_openid:n.userId,clientType:n.clientType},r=n.clientType===void 0?void 0:{headers:{"Client-type":String(n.clientType)}};return (await x(e,"/user/info/other",t,r)).data}function Co(e){let n=e.clientType,t=new Map,r=new Map;async function o(s){try{let i=((await Ee(e.client,{userId:s,clientType:n}))?.public_key??"").trim();return i===""?(e.onError?.(`\u53D6\u5BF9\u7AEF\u516C\u94A5\uFF1A/user/info/other \u65E0 public_key\uFF08userId=${s}\uFF09`),null):(t.set(s,i),i)}catch(d){return e.onError?.(`\u53D6\u5BF9\u7AEF\u516C\u94A5\u8BF7\u6C42\u5F02\u5E38\uFF08userId=${s}\uFF09`,d),null}}function a(s,d){let i=s.trim();if(i==="")return Promise.resolve(null);d?.force===true&&t.delete(i);let f=t.get(i);if(f!==void 0)return Promise.resolve(f);let g=r.get(i);if(g!==void 0)return g;let b=o(i).finally(()=>{r.get(i)===b&&r.delete(i);});return r.set(i,b),b}return {getPeerPublicKey:a}}function bo(e){if(e.length<16)throw new Error(`TEA key \u957F\u5EA6\u4E0D\u8DB3\uFF1A${e.length}\uFF0C\u9700 \u2265 16 \u5B57\u8282`);let n=new DataView(e.buffer,e.byteOffset,16);return [n.getUint32(0,true),n.getUint32(4,true),n.getUint32(8,true),n.getUint32(12,true)]}function _t([e,n],[t,r,o,a]){let s=e>>>0,d=n>>>0,i=Math.imul(2654435769,16)>>>0;for(let f=0;f<16;f++)d=d-(Math.imul(s,16)+o^s+i^(s>>>5)+a)>>>0,s=s-(Math.imul(d,16)+t^d+i^(d>>>5)+r)>>>0,i=i-2654435769>>>0;return [s,d]}function St([e,n],[t,r,o,a]){let s=e>>>0,d=n>>>0,i=0;for(let f=0;f<16;f++)i=i+2654435769>>>0,s=s+(Math.imul(d,16)+t^d+i^(d>>>5)+r)>>>0,d=d+(Math.imul(s,16)+o^s+i^(s>>>5)+a)>>>0;return [s,d]}function qe(e,n,t,r){let o=bo(n),a=new Uint8Array(e.length),s=Math.floor(e.length/8),d=r===void 0?s:Math.min(s,Math.floor(r/8)),i=new DataView(e.buffer,e.byteOffset,e.byteLength),f=new DataView(a.buffer);for(let b=0;b<d;b++){let h=b*8,[p,S]=t([i.getUint32(h,true),i.getUint32(h+4,true)],o);f.setUint32(h,p,true),f.setUint32(h+4,S,true);}let g=d*8;return g<e.length&&a.set(e.subarray(g),g),a}function bn(e,n){return qe(n,e,_t)}function Pn(e,n){return qe(n,e,St)}function At(e,n){return qe(n,e,St,32)}function vt(e,n){return qe(n,e,_t,32)}var ue=16;function Mt(e){let n="";for(let t of e)n+=String.fromCharCode(t);return n}function xt(e){let n=new Uint8Array(e.length);for(let t=0;t<e.length;t++)n[t]=e.charCodeAt(t)&255;return n}function Et(e){return e.replace(/(.{64})/g,`$1
|
|
2
|
-
`).trim()}function Po(e){return e.replace(/-----BEGIN[^-]+-----/g,"").replace(/-----END[^-]+-----/g,"").replace(/\s+/g,"")}function wo(e){let n=(e??"").trim();if(n==="")throw new Error("RSA \u79C1\u94A5\u4E3A\u7A7A");if(n.includes("-----BEGIN"))return V.pki.privateKeyFromPem(n);let t=n.replace(/\s+/g,""),r=[];try{return V.pki.privateKeyFromAsn1(V.asn1.fromDer(V.util.decode64(t)))}catch(a){r.push(a);}let o=Et(t);for(let a of ["PRIVATE KEY","RSA PRIVATE KEY"])try{return V.pki.privateKeyFromPem(`-----BEGIN ${a}-----
|
|
3
|
-
${o}
|
|
4
|
-
-----END ${a}-----`)}catch(s){r.push(s);}throw new Error(`RSA \u79C1\u94A5\u89E3\u6790\u5931\u8D25\uFF08\u5DF2\u8BD5 PKCS1-DER / PKCS8-PEM / PKCS1-PEM\uFF09\uFF1A${r[0]instanceof Error?r[0].message:String(r[0])}`)}function kt(e){let n=wo(e.privateKey),t=Math.ceil(n.n.bitLength()/8),{data:r}=e;if(r.length===0)throw new Error("RSA \u89E3\u5BC6\uFF1A\u5BC6\u6587\u4E3A\u7A7A");let o=[];for(let i=0;i<r.length;i+=t){let f=Math.min(i+t,r.length);try{let g=n.decrypt(Mt(r.subarray(i,f)),"RSAES-PKCS1-V1_5");o.push(xt(g));}catch(g){let b=g instanceof Error?g.message:String(g);throw new Error(`RSA-PKCS1 \u89E3\u5BC6\u5931\u8D25\uFF08\u5BC6\u6587 ${r.length}B\uFF0C\u5757 ${i}..${f}\uFF0CkeySize ${t}B\uFF0C\u79C1\u94A5 ${n.n.bitLength()}bit\uFF09\uFF1A${b}`)}}let a=o.reduce((i,f)=>i+f.length,0),s=new Uint8Array(a),d=0;for(let i of o)s.set(i,d),d+=i.length;return s}function Io(e){let n=kt({data:e.secretKey,privateKey:e.privateKey});if(n.length<ue)throw new Error(`\u7AEF\u5230\u7AEF\u89E3\u5BC6\u5931\u8D25\uFF1ARSA \u89E3\u51FA\u7684 teaKey \u957F\u5EA6 ${n.length} < ${ue}`);return bn(n,e.cipherData)}function _o(e){let n=(e??"").trim();if(n==="")throw new Error("RSA \u516C\u94A5\u4E3A\u7A7A");if(n.includes("-----BEGIN"))return V.pki.publicKeyFromPem(n);let t=n.replace(/\s+/g,""),r=[];try{return V.pki.publicKeyFromAsn1(V.asn1.fromDer(V.util.decode64(t)))}catch(a){r.push(a);}let o=Et(t);for(let a of ["PUBLIC KEY","RSA PUBLIC KEY"])try{return V.pki.publicKeyFromPem(`-----BEGIN ${a}-----
|
|
5
|
-
${o}
|
|
6
|
-
-----END ${a}-----`)}catch(s){r.push(s);}throw new Error(`RSA \u516C\u94A5\u89E3\u6790\u5931\u8D25\uFF08\u5DF2\u8BD5 SPKI-DER / SPKI-PEM / PKCS1-PEM\uFF09\uFF1A${r[0]instanceof Error?r[0].message:String(r[0])}`)}function Tt(){let e=new Uint8Array(ue),n=new Uint8Array(1);for(let t=0;t<ue;t++){let r=0;do globalThis.crypto.getRandomValues(n),r=n[0]??0;while(r===0);e[t]=r;}return e}function So(e,n){if(n.length===0)throw new Error("RSA \u52A0\u5BC6\uFF1A\u660E\u6587\u4E3A\u7A7A");let t=_o(e),r=Math.ceil(t.n.bitLength()/8)-11;if(r<=0)throw new Error(`RSA \u52A0\u5BC6\uFF1A\u516C\u94A5\u4F4D\u6570\u8FC7\u5C0F\uFF08${t.n.bitLength()}bit\uFF09`);let o=[];for(let i=0;i<n.length;i+=r){let f=Math.min(i+r,n.length),g=t.encrypt(Mt(n.subarray(i,f)),"RSAES-PKCS1-V1_5");o.push(xt(g));}let a=o.reduce((i,f)=>i+f.length,0),s=new Uint8Array(a),d=0;for(let i of o)s.set(i,d),d+=i.length;return s}function Ao(e){let n=e.teaKey??Tt();if(n.length<ue)throw new Error(`\u7AEF\u5230\u7AEF\u52A0\u5BC6\u5931\u8D25\uFF1AteaKey \u957F\u5EA6 ${n.length} < ${ue}`);let t=n.subarray(0,ue),r=Pn(t,e.plain);return {secretKey:So(e.publicKey,t),cipherData:r}}function vo(e){return bn(e.teaKey,e.cipherData)}function Mo(e){return Pn(e.teaKey,e.plain)}function xo(e){return At(e.teaKey,e.plain)}function Eo(e){return vt(e.teaKey,e.cipherData)}function ko(){return new Promise((e,n)=>{V.pki.rsa.generateKeyPair({bits:2048,e:65537,workers:-1},(t,r)=>{if(t){n(t);return}e({publicKeyBase64:Po(V.pki.publicKeyToPem(r.publicKey)),privateKey:V.pki.privateKeyToPem(r.privateKey)});});})}function To(){return {decryptEndToEnd:Io,encryptEndToEnd:Ao,decryptSymmetric:vo,encryptSymmetric:Mo,encryptFileSimple:xo,decryptFileSimple:Eo,randomTeaKey:Tt,generateTempKeyPair:ko,rsaDecryptPkcs1:kt}}function wn(e,n){return {responseMode:"strict",method:n,...e===void 0?{}:{headers:{"Client-type":String(e)}}}}function ke(e,n){return x(e,"/friend/apply/list_paginated",{type:n.listType,page:n.page,page_size:n.pageSize},wn(n.clientType,"GET"))}function Te(e,n){return x(e,"/friend/apply/agree",{id:n.applicationId},wn(n.clientType,"POST"))}function Re(e,n){return x(e,"/friend/apply/del",{id:n.applicationId},wn(n.clientType,"POST"))}var Rt=50,Dt=20,Ut=1,In=2,_n=3,Ro=4,Do=5,Ot=0,Uo=1,Oo=2;function Bo(e){switch(e){case Ot:case Uo:case Oo:return e;default:return}}var Ce=class extends Error{constructor(t,r){super(`application HTTP \u5931\u8D25\uFF08${t}\uFF09\uFF1A${r||"unknown error"}`);this.code=t;this.name="ApplicationHttpError";}code},j=class extends Error{constructor(n){super(`application \u6620\u5C04\u5931\u8D25\uFF1A${n}`),this.name="ApplicationMappingError";}};function N(e){return typeof e=="string"||typeof e=="number"?String(e).trim():""}function Bt(e){let n=N(e);if(n==="")return;if(/^\d+$/.test(n)){let r=Number(n);return !Number.isSafeInteger(r)||r<=0?void 0:n.length>=13?r:r*1e3}let t=Date.parse(n);return Number.isFinite(t)?t:void 0}function Nt(e){let n=N(e.status);if(e.status===void 0||n==="")return true;let t=Number(n),r=Bo(t);if(r===void 0)throw new j(`\u672A\u77E5\u7533\u8BF7\u72B6\u6001\uFF1A${n}`);return r===Ot}function No(e){let n=N(e.type);if(n==="")return true;if(Number(n)!==Ut)throw new j(`\u8054\u7CFB\u4EBA\u7533\u8BF7\u9875\u51FA\u73B0\u672A\u77E5 type\uFF1A${n}`);return true}function Go(e){let n=Number(N(e.type));if(n!==In&&n!==_n&&n!==Ro&&n!==Do)throw new j(`GROUP/CHANNEL \u6DF7\u5408\u9875\u51FA\u73B0\u672A\u77E5 type\uFF1A${N(e.type)||"<empty>"}`);return n}function ze(e){if(!Number.isInteger(e.limit)||e.limit<=0||e.limit>Rt)throw new j(`limit \u5FC5\u987B\u4E3A 1-${Rt}`);if(e.cursor===void 0)return {page:1,pageSize:e.limit};if(!/^[1-9]\d*$/.test(e.cursor))throw new j("page cursor \u5FC5\u987B\u4E3A\u6B63\u5341\u8FDB\u5236\u6574\u6570");let n=Number(e.cursor);if(!Number.isSafeInteger(n))throw new j("page cursor \u8D85\u51FA\u5B89\u5168\u6574\u6570\u8303\u56F4");return {page:n,pageSize:e.limit}}function Gt(e){if(e!=null&&Array.isArray(e.list))return e.list;let n=e?.count??e?.total,t=n===0||typeof n=="string"&&/^0+$/.test(n.trim());if(e?.list===null&&t)return [];throw new j("data.list \u5FC5\u987B\u662F\u6570\u7EC4\uFF0C\u6216\u5728 count=0 \u65F6\u4E3A null")}function Sn(e){let n=e.trim();if(n==="")throw new j("\u7533\u8BF7\u8BB0\u5F55 id \u4E0D\u80FD\u4E3A\u7A7A");return n}function Ko(e){let n=Sn(N(e.id)||N(e.aid)),t=N(e.user_id)||N(e.user_info?.user_id),r=N(e.nick_name??e.nickname??e.name)||N(e.user_info?.nick_name??e.user_info?.nickname??e.user_info?.name);if(t===""||r==="")throw new j(`\u8054\u7CFB\u4EBA\u7533\u8BF7\u4EBA\u8EAB\u4EFD\u4E0D\u80FD\u4E3A\u7A7A\uFF08applicationId=${n}\uFF09`);let o=N(e.head_img_url??e.avatar)||N(e.user_info?.head_img_url??e.user_info?.avatar),a=N(e.user_info?.mid),s=Bt(e.create_time??e.createTime??e.update_version);return {applicationId:n,applicantId:t,applicantName:r,...o===""?{}:{applicantAvatar:o},...a===""?{}:{applicantDisplayId:a},message:N(e.remarks??e.introduce_self),...s===void 0?{}:{createdAt:s}}}function Lo(e){let n=Sn(N(e.id)||N(e.aid)),t=N(e.group_id)||N(e.group_info?.group_id);if(t==="")throw new j(`GROUP id \u4E0D\u80FD\u4E3A\u7A7A\uFF08applicationId=${n}\uFF09`);let r=N(e.user_id)||N(e.user_info?.user_id),o=N(e.nick_name??e.nickname??e.name)||N(e.user_info?.nick_name??e.user_info?.nickname??e.user_info?.name);if(r===""||o==="")throw new j(`GROUP \u7533\u8BF7\u4EBA\u6216\u9080\u8BF7\u4EBA\u8EAB\u4EFD\u4E0D\u80FD\u4E3A\u7A7A\uFF08applicationId=${n}\uFF09`);let a=N(e.head_img_url??e.avatar)||N(e.user_info?.head_img_url??e.user_info?.avatar),s=N(e.user_info?.mid),d=N(e.group_info?.name??e.group_info?.group_name);if(d==="")throw new j(`GROUP \u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\uFF08applicationId=${n}\uFF09`);let i=N(e.group_info?.head_img_url??e.group_info?.avatar),f=Bt(e.create_time??e.createTime??e.update_version);return {applicationId:n,groupId:t,kind:Number(e.type)===_n?"invite":"request",actor:{id:r,name:o,...a===""?{}:{avatarUrl:a},...s===""?{}:{displayId:s}},target:{id:t,name:d,...i===""?{}:{avatarUrl:i}},message:N(e.remarks??e.introduce_self),...f===void 0?{}:{createdAt:f}}}async function We(e,n,t){let r=await t(e.client,{applicationId:Sn(n),clientType:e.clientType});if(!r.ok)throw new Ce(r.code,r.message)}function Ho(e){async function n(t){let{pageSize:r}=ze(t),{page:o}=ze(t);for(let a=0;a<Dt;a+=1){let s=await ke(e.client,{listType:Ut,page:o,pageSize:r,clientType:e.clientType});if(!s.ok)throw new Ce(s.code,s.message);let d=Gt(s.data),i=d.filter(b=>No(b)&&Nt(b)).map(Ko),f=d.length<r,g=o+1;if(i.length>0||f)return {items:i,exhausted:f,...f?{}:{nextCursor:String(g)}};o=g;}return {items:[],exhausted:false,nextCursor:String(o)}}return {listPendingApplications:n,acceptApplication:t=>We(e,t,Te),ignoreApplication:t=>We(e,t,Re)}}function $o(e){async function n(t){let{pageSize:r}=ze(t),{page:o}=ze(t);for(let a=0;a<Dt;a+=1){let s=await ke(e.client,{listType:In,page:o,pageSize:r,clientType:e.clientType});if(!s.ok)throw new Ce(s.code,s.message);let d=Gt(s.data),i=d.filter(b=>{let h=Go(b);return (h===In||h===_n)&&Nt(b)}).map(Lo),f=d.length<r,g=o+1;if(i.length>0||f)return {items:i,exhausted:f,...f?{}:{nextCursor:String(g)}};o=g;}return {items:[],exhausted:false,nextCursor:String(o)}}return {listPendingApplications:n,acceptApplication:t=>We(e,t,Te),ignoreApplication:t=>We(e,t,Re)}}function O(e){let n=typeof e=="string"||typeof e=="number"?String(e).trim():"";return n===""?void 0:n}function Fo(e){if(typeof e=="boolean")return e;if(typeof e=="number")return e===0?false:e===1?true:void 0;if(typeof e=="string"){let n=e.trim();if(n==="0"||n.toLowerCase()==="false")return false;if(n==="1"||n.toLowerCase()==="true")return true}}function Jo(e){let n=Number(e);return n===1?{configType:"pinned-game"}:n===2?{configType:"float-link"}:n===3?{configType:"float-game"}:Number.isInteger(n)&&n>=0?{configType:"unknown",rawConfigType:n}:{configType:"unknown"}}function Vo(e){let n=Number(e.product_id),t=Fo(e.is_dynamic);return {...Jo(e.config_type),...O(e.appid)===void 0?{}:{appId:O(e.appid)},...Number.isInteger(n)?{productId:n}:{},...O(e.domain)===void 0?{}:{domain:O(e.domain)},...O(e.suffix_address)===void 0?{}:{suffixAddress:O(e.suffix_address)},...O(e.developer_id)===void 0?{}:{developerId:O(e.developer_id)},...O(e.introduction)===void 0?{}:{introduction:O(e.introduction)},...O(e.icon)===void 0?{}:{icon:O(e.icon)},...O(e.icon_small)===void 0?{}:{iconSmall:O(e.icon_small)},...O(e.icon_medium)===void 0?{}:{iconMedium:O(e.icon_medium)},...O(e.icon_large)===void 0?{}:{iconLarge:O(e.icon_large)},...t===void 0?{}:{isDynamic:t},...O(e.lang_types)===void 0?{}:{langTypes:O(e.lang_types)},...O(e.currency_types)===void 0?{}:{currencyTypes:O(e.currency_types)},...O(e.simple_chinese_name)===void 0?{}:{nameZhHans:O(e.simple_chinese_name)},...O(e.unsimplified_chinese_name)===void 0?{}:{nameZhHant:O(e.unsimplified_chinese_name)},...O(e.english_name)===void 0?{}:{nameEn:O(e.english_name)},...O(e.vietnamese_name)===void 0?{}:{nameVi:O(e.vietnamese_name)},...O(e.thai_name)===void 0?{}:{nameTh:O(e.thai_name)},...O(e.h5_url)===void 0?{}:{h5Url:O(e.h5_url)}}}function Kt(e,n){return Array.isArray(e.mini_program_rel_list)?e.mini_program_rel_list.filter(t=>t!==null&&typeof t=="object").map(t=>Vo(t)):n.source==="info"?[]:void 0}function Lt(e,n){return {responseMode:"strict",method:n,...e===void 0?{}:{headers:{"Client-type":String(e)}}}}function Ht(e,n){return x(e,"/user_radio/list",{user_id:n.userId,update_version:n.updateVersion,page:n.page,page_size:n.pageSize},Lt(n.clientType,"GET"))}function $t(e,n){return x(e,"/user_radio/info",{radio_id:n.channelId},Lt(n.clientType,"POST"))}var Ft=500,De=class extends Error{constructor(t,r){super(`CHANNEL HTTP \u5931\u8D25\uFF08${t}\uFF09\uFF1A${r||"unknown error"}`);this.code=t;this.name="ChannelHttpError";}code},re=class extends Error{constructor(n){super(`CHANNEL profile \u6620\u5C04\u5931\u8D25\uFF1A${n}`),this.name="ChannelProfileMappingError";}};function Jt(e,n){let t=typeof e=="string"||typeof e=="number"?String(e).trim():"";if(t==="")throw new re(`${n} \u4E0D\u80FD\u4E3A\u7A7A`);return t}function le(e){let n=typeof e=="string"||typeof e=="number"?String(e).trim():"";return n===""?void 0:n}function be(e){return Number(e)===1}function jo(e){if(typeof e=="number")return e===0?false:e===1?true:void 0;if(typeof e=="string"){let n=e.trim();if(n==="0")return false;if(n==="1")return true}}function qo(e,n){return Number(e)===1?"member":Number(e)===9?"admin":Number(e)===10?"owner":n===false?"guest":"unknown"}function zo(e){let n=e.is_in===void 0?void 0:be(e.is_in),t=be(e.radio_user?.is_del),r=be(e.radio_user?.is_black);return Number(e.status)===3?"dismissed":t&&r?"removed":r?"blacklisted":t?"left":n===false?"guest":e.status!==void 0&&Number(e.status)!==2?"unknown_restricted":"active"}function Wo(e,n,t){let r=le(e.radio_user?.user_id),o=e.radio_setting?.un_speaking_user_ids,a=le(e.radio_setting?.un_speaking_period);return {role:n,baseState:t,resolvedState:t,allMembersMuted:be(e.radio_setting?.is_unspeeking_all),currentUserMuted:r!==void 0&&Array.isArray(o)&&o.map(String).includes(r),...a===void 0?{}:{mutePeriod:a}}}function Yo(e){if(e!=null)return Number(e)===1?"standard":Number(e)===2?"competition":"unknown"}function Qo(e){let n=le(e);return n!==void 0&&/^\d+$/.test(n)?n.replace(/^0+(?=\d)/,""):void 0}function Xo(e,n){let t=e.replace(/^0+(?=\d)/,""),r=n.replace(/^0+(?=\d)/,"");return t.length!==r.length?t.length>r.length?t:r:t>=r?t:r}function Vt(e,n,t){let r=Jt(e.radio_id??e.id,"id"),o=Jt(e.name,"name"),a=e.is_in===void 0?void 0:be(e.is_in),s=qo(e.radio_user?.role_id,a),d=zo(e),i=Wo(e,s,d),f=ja$1({channelState:d,snapshot:i,nowMs:n}),g={...i,resolvedState:f.channelState},b=Qo(e.update_version),h=le(e.head_img_url),p=le(e.desc),S=le(e.user_id),v=Number(e.total_users),E=Yo(e.type),c=jo(e.radio_setting?.is_unvisit_other),u=e.verify_way===void 0?void 0:Number(e.verify_way),y=u!==void 0&&Number.isSafeInteger(u)?u:void 0,m=le(e.invite_code),P=Kt(e,{source:t});return {id:r,name:o,...h===void 0?{}:{avatar:h},...p===void 0?{}:{description:p},...S===void 0?{}:{ownerId:S},...Number.isFinite(v)&&v>=0?{memberCount:v}:{},...y===void 0?{}:{verifyType:y},...m===void 0?{}:{inviteCode:m},role:s,permissions:f.permissions,channelState:f.channelState,allMembersMuted:g.allMembersMuted,...c===void 0?{}:{memberPrivateChatDisabled:c},accessSnapshot:g,...e.radio_user?.is_undisturb===void 0?{}:{muted:be(e.radio_user.is_undisturb)},...E===void 0?{}:{channelKind:E},...b===void 0?{}:{updateVersion:b},...P===void 0?{}:{miniProgramRels:P}}}function jt(e){return {...e,updatedAt:Date.now()}}function qt(e,n){if(e.accessSnapshot===void 0)return {...e,permissions:ia$1(e.role,e.channelState)};let t=ja$1({channelState:e.channelState,snapshot:e.accessSnapshot,permissions:e.permissions,nowMs:n});return {...e,channelState:t.channelState,permissions:t.permissions,allMembersMuted:e.allMembersMuted??e.accessSnapshot.allMembersMuted,accessSnapshot:{...e.accessSnapshot,resolvedState:t.channelState}}}function An(e,n){let{updatedAt:t,...r}=qt(e,n);return r}function Zo(e){let n=new Map,t=new Map,r=new Map,o="0",a=false,s=null,d=0,i=null,f=0;function g(){if(a)return Promise.resolve();if(s!==null)return s;let p=d;return s=(async()=>{if(e.storage!==void 0){let[S,v]=await Promise.all([e.storage.getChannelProfiles(),e.storage.getChannelListVersion()]);if(p!==d)return;for(let E of S)n.set(E.id,qt(E,e.now?.()??Date.now()));o=/^\d+$/.test(v)?v:"0";}a=true;})().finally(()=>{s=null;}),s}function b(p){if(p?.forceRefresh!==true&&i!==null)return i;let S=++f,v=(async()=>{await g();let E=(await e.getUserId()).trim();if(E==="")throw new re("user_id \u4E0D\u80FD\u4E3A\u7A7A");let c=p?.forceRefresh===true?"0":o,u=[];for(let m=1;;m+=1){let P=await Ht(e.client,{userId:E,updateVersion:c,page:m,pageSize:Ft,clientType:e.clientType});if(!P.ok)throw new De(P.code,P.message);if(P.data===null)break;if(!Array.isArray(P.data))throw new re("list data \u5FC5\u987B\u662F\u6570\u7EC4");let k=e.now?.()??Date.now(),D=P.data.map(w=>Vt(w,k,"list"));if(u.push(...D),D.length<Ft)break}if(S!==f)return [...n.values()].map(m=>An(m,e.now?.()??Date.now()));let y=o;for(let m of u)n.set(m.id,jt(m)),m.updateVersion!==void 0&&(y=Xo(y,m.updateVersion));return o=y,e.storage!==void 0&&(await e.storage.saveChannelProfiles([...n.values()]),await e.storage.saveChannelListVersion(o)),[...n.values()].map(m=>An(m,e.now?.()??Date.now()))})();return i=v,v.finally(()=>{i===v&&(i=null);}).catch(()=>{}),v}function h(p,S){let v=p.trim();if(v==="")return Promise.reject(new re("channel id \u4E0D\u80FD\u4E3A\u7A7A"));let E=S?.forceRefresh===true;if(!E){let y=t.get(v);if(y!==void 0)return y}let c=(r.get(v)??0)+1;E&&r.set(v,c);let u=(async()=>{await g();let y=n.get(v);if(!E&&y!==void 0&&y.miniProgramRels!==void 0)return An(y,e.now?.()??Date.now());let m=await $t(e.client,{channelId:v,clientType:e.clientType});if(!m.ok)throw new De(m.code,m.message);if(m.data===null||m.data===void 0)throw new re("info data \u4E0D\u80FD\u4E3A\u7A7A");let P=Vt(m.data,e.now?.()??Date.now(),"info");if(P.id!==v)throw new re(`info id \u4E0D\u5339\u914D\uFF1A\u8BF7\u6C42 ${v}\uFF0C\u54CD\u5E94 ${P.id}`);if((r.get(v)??c)===c){let k=jt(P);n.set(v,k),await e.storage?.saveChannelProfiles([k]);}return P})().finally(()=>{t.get(v)===u&&t.delete(v);});return r.set(v,c),t.set(v,u),u}return {listProfiles:b,getProfile:h,clearCache(){d+=1,f+=1;for(let p of new Set([...n.keys(),...t.keys(),...r.keys()]))r.set(p,(r.get(p)??0)+1);n.clear(),t.clear(),i=null,o="0",a=true,s=null;}}}function zt(e,n){return ke(e,{listType:2,page:n.page,pageSize:n.pageSize,clientType:n.clientType})}function Wt(e,n){return Te(e,n)}function Yt(e,n){return Re(e,n)}var ei=20,Qt=50,ni=20,ti=2,ri=3,Zt=4,oi=5,er=0,ii=1,ai=2;function si(e){switch(e){case er:case ii:case ai:return e;default:return}}var Ue=class extends Error{constructor(t,r){super(`CHANNEL join application HTTP \u5931\u8D25\uFF08${t}\uFF09\uFF1A${r||"unknown error"}`);this.code=t;this.name="ChannelJoinApplicationHttpError";}code},W=class extends Error{constructor(n){super(`CHANNEL join application \u6620\u5C04\u5931\u8D25\uFF1A${n}`),this.name="ChannelJoinApplicationMappingError";}};function L(e){return typeof e=="string"||typeof e=="number"?String(e).trim():""}function ci(e){let n=L(e);if(n==="")return;if(/^\d+$/.test(n)){let r=Number(n);return !Number.isSafeInteger(r)||r<=0?void 0:n.length>=13?r:r*1e3}let t=Date.parse(n);return Number.isFinite(t)?t:void 0}function di(e){let n=L(e.status);if(e.status===void 0||n==="")return true;let t=Number(n),r=si(t);if(r===void 0)throw new W(`\u672A\u77E5\u7533\u8BF7\u72B6\u6001\uFF1A${n}`);return r===er}function ui(e){let n=Number(L(e.type));if(n!==ti&&n!==ri&&n!==Zt&&n!==oi)throw new W(`GROUP/CHANNEL \u6DF7\u5408\u9875\u51FA\u73B0\u672A\u77E5 type\uFF1A${L(e.type)||"<empty>"}`);return n}function li(e){let n=L(e.id)||L(e.aid),t=L(e.user_id)||L(e.user_info?.user_id),r=e.radio_info??e.channel_info,o=L(e.radio_id)||L(e.channel_id)||L(r?.radio_id)||L(r?.channel_id);if(n==="")throw new W("\u7533\u8BF7\u8BB0\u5F55 id \u4E0D\u80FD\u4E3A\u7A7A");if(t==="")throw new W(`\u7533\u8BF7\u4EBA id \u4E0D\u80FD\u4E3A\u7A7A\uFF08applicationId=${n}\uFF09`);if(o==="")throw new W(`CHANNEL id \u4E0D\u80FD\u4E3A\u7A7A\uFF08applicationId=${n}\uFF09`);let a=L(e.user_info?.nick_name)||L(e.user_info?.nickname)||L(e.user_info?.name)||t,s=L(e.user_info?.head_img_url)||L(e.user_info?.avatar),d=L(e.user_info?.mid),i=L(r?.name)||L(r?.radio_name)||L(r?.channel_name)||o,f=L(r?.head_img_url)||L(r?.avatar),g=ci(e.create_time??e.createTime);return {applicationId:n,applicantId:t,applicantName:a,...s===""?{}:{applicantAvatar:s},...d===""?{}:{applicantDisplayId:d},channelId:o,channelName:i,...f===""?{}:{channelAvatar:f},message:L(e.remarks)||L(e.introduce_self),...g===void 0?{}:{createdAt:g}}}function Xt(e){if(!Number.isInteger(e.limit)||e.limit<=0||e.limit>Qt)throw new W(`limit \u5FC5\u987B\u4E3A 1-${Qt}`);if(e.cursor===void 0)return {page:1,pageSize:e.limit||ei};if(!/^[1-9]\d*$/.test(e.cursor))throw new W("page cursor \u5FC5\u987B\u4E3A\u6B63\u5341\u8FDB\u5236\u6574\u6570");let n=Number(e.cursor);if(!Number.isSafeInteger(n))throw new W("page cursor \u8D85\u51FA\u5B89\u5168\u6574\u6570\u8303\u56F4");return {page:n,pageSize:e.limit}}function pi(e){if(e!=null&&Array.isArray(e.list))return e.list;let n=e?.count??e?.total,t=n===0||typeof n=="string"&&/^0+$/.test(n.trim());if(e?.list===null&&t)return [];throw new W("data.list \u5FC5\u987B\u662F\u6570\u7EC4\uFF0C\u6216\u5728 count=0 \u65F6\u4E3A null")}function fi(e){let n=e.trim();if(n==="")throw new W("\u7533\u8BF7\u8BB0\u5F55 id \u4E0D\u80FD\u4E3A\u7A7A");return n}function mi(e){async function n(r){let{pageSize:o}=Xt(r),{page:a}=Xt(r);for(let s=0;s<ni;s+=1){let d=await zt(e.client,{page:a,pageSize:o,clientType:e.clientType});if(!d.ok)throw new Ue(d.code,d.message);let i=pi(d.data),f=i.filter(h=>ui(h)===Zt&&di(h)).map(li),g=i.length<o,b=a+1;if(f.length>0||g)return {items:f,exhausted:g,...g?{}:{nextCursor:String(b)}};a=b;}return {items:[],exhausted:false,nextCursor:String(a)}}async function t(r,o){let a=await o(e.client,{applicationId:fi(r),clientType:e.clientType});if(!a.ok)throw new Ue(a.code,a.message)}return {listJoinApplications:n,acceptJoinApplication:r=>t(r,Wt),ignoreJoinApplication:r=>t(r,Yt)}}function Ye(e,n){return {responseMode:"strict",method:n,...e===void 0?{}:{headers:{"Client-type":String(e)}}}}function vn(e,n){return x(e,"/user_radio/users",{radio_id:n.channelId,page:n.page,page_size:n.pageSize},Ye(n.clientType,"GET"))}function Mn(e,n){return x(e,"/user_radio/search_user",{radio_id:n.channelId,nick_name:n.query,page:n.page,page_size:n.pageSize,update_version:n.updateVersion??"0"},Ye(n.clientType,"POST"))}function nr(e,n){return x(e,"/user_radio/admins",{radio_id:n.channelId,page:n.page,page_size:n.pageSize},Ye(n.clientType,"GET"))}function tr(e,n){return x(e,"/user_radio/user/infos",{radio_id:n.channelId,user_ids:n.userIds.join(",")},Ye(n.clientType,"POST"))}var Qe=18,gi=12,hi=300*1e3,yi=32,Oe=class extends Error{constructor(t,r){super(`CHANNEL member HTTP \u5931\u8D25\uFF08${t}\uFF09\uFF1A${r||"unknown error"}`);this.code=t;this.name="ChannelMemberHttpError";}code},F=class extends Error{constructor(n){super(`CHANNEL member \u6620\u5C04\u5931\u8D25\uFF1A${n}`),this.name="ChannelMemberMappingError";}};function oe(e){return typeof e=="string"||typeof e=="number"?String(e).trim():""}function Ci(e){return Number(e)===1?"member":Number(e)===9?"admin":Number(e)===10?"owner":"unknown"}function bi(e){let n=oe(e);return /^\d+$/.test(n)?n.replace(/^0+(?=\d)/,""):void 0}function xn(e,n){return e===void 0?n===void 0?0:-1:n===void 0?1:e.length!==n.length?e.length>n.length?1:-1:e===n?0:e>n?1:-1}function rr(e,n){let t=oe(e.radio_id);if(t==="")throw new F("radio_id \u4E0D\u80FD\u4E3A\u7A7A");if(t!==n)throw new F(`\u6210\u5458\u9891\u9053 ${t} \u4E0E\u8BF7\u6C42\u9891\u9053 ${n} \u4E0D\u4E00\u81F4`);let r=oe(e.user_id)||oe(e.user_info?.user_id);if(r==="")throw new F("user_id \u4E0D\u80FD\u4E3A\u7A7A");if(e.is_master!==void 0){let f=Number(e.is_master);if(f!==0&&f!==1)throw new F(`is_master \u975E\u6CD5\uFF1A${oe(e.is_master)}`)}let o=oe(e.nick_name),a=oe(e.user_info?.nick_name)||oe(e.user_info?.name),s=oe(e.user_info?.head_img_url),d=bi(e.update_version),i=Number(e.join_type);return {userId:r,...o===""?{}:{nickname:o},displayName:o||a||r,...s===""?{}:{avatar:s},role:Ci(e.role_id),...Number.isInteger(i)?{joinType:i}:{},...d===void 0?{}:{updateVersion:d}}}function Pi(e){if(e.channelId.trim()==="")throw new F("channelId \u4E0D\u80FD\u4E3A\u7A7A");if(!Number.isInteger(e.limit)||e.limit<=0||e.limit>Qe)throw new F(`limit \u5FC5\u987B\u4E3A 1-${Qe}`);if(e.cursor===void 0)return {page:1,pageSize:e.limit};if(!/^[1-9]\d*$/.test(e.cursor))throw new F("page cursor \u5FC5\u987B\u4E3A\u6B63\u5341\u8FDB\u5236\u6574\u6570");let t=Number(e.cursor);if(!Number.isSafeInteger(t))throw new F("page cursor \u8D85\u51FA\u5B89\u5168\u6574\u6570\u8303\u56F4");return {page:t,pageSize:e.limit}}function or(e){let n=[],t=new Map;for(let r of e)t.has(r.userId)||n.push(r.userId),t.set(r.userId,r);return n.map(r=>t.get(r))}function wi(e){let n=e.now??(()=>Date.now()),t=e.isActive??(()=>true),r=e.cacheTtlMs??hi,o=new Map,a=new Map,s=new Map,d=new Map,i=new Map,f=new Set,g=new Set,b=(w,l)=>`${w}:${l}`;function h(w){let l=i.get(w);return l!==void 0?l:(i.set(w,0),0)}function p(w){let l=w.trim();if(l==="")throw new F("channelId \u4E0D\u80FD\u4E3A\u7A7A");return l}function S(w){for(a.delete(w.channelId),a.set(w.channelId,w);a.size>yi;){let l=a.keys().next().value;if(l===void 0)break;a.delete(l);}}function v(w){let l=a.get(w);if(l!==void 0)return S(l),Promise.resolve(l);if(g.has(w)||e.storage?.getChannelMemberSnapshot===void 0)return Promise.resolve(null);let _=s.get(w);if(_!==void 0)return _;let C=h(w),I=e.storage.getChannelMemberSnapshot(w).then(A=>!t()||A===null||A.channelId!==w||C!==h(w)||g.has(w)?null:(S(A),A)).finally(()=>{s.get(w)===I&&s.delete(w);});return s.set(w,I),I}function E(w,l){let _=w.map(I=>I.userId),C=new Map(w.map(I=>[I.userId,I]));for(let I of l){C.has(I.userId)||_.push(I.userId);let A=C.get(I.userId);(A===void 0||xn(I.updateVersion,A.updateVersion)>=0)&&C.set(I.userId,I);}return _.map(I=>C.get(I))}async function c(w,l){let _=await U(l);return w.filter(C=>_.match(C.displayName)!==null||_.match(C.userId,{pinyin:false})!==null)}async function u(w,l,_={}){if(!t()||l!==h(w.channelId))return;let C=w.channelId,I=g.has(C),A=_.allowPersistentRebuild===true&&I&&e.storage?.deleteChannelMemberSnapshot===void 0&&e.storage?.saveChannelMemberSnapshot!==void 0;(!I||A)&&await e.storage?.saveChannelMemberSnapshot?.(w),t()&&l===h(C)&&(S(w),_.allowPersistentRebuild===true&&(!I||e.storage?.deleteChannelMemberSnapshot===void 0)&&g.delete(C));}async function y(w,l,_,C,I=false,A){let M=await v(w);if(!t()||_!==h(w))return;let R=n(),T=A!==void 0&&M?.nextCursor===A,U=I&&M!==null&&!T,B=C!==void 0&&!U?C.nextCursor:M?.nextCursor,$={channelId:w,items:E(M?.items??[],l),...B===void 0?{}:{nextCursor:B},exhausted:U?M.exhausted:C?.exhausted??M?.exhausted??false,updatedAt:R};await u($,_);}async function m(w,l,_){if(!t()||_!==h(w))return [...l];let C=n(),I=C+r,A=[],M=[],R=new Map;for(let T of l){let U=b(w,T.userId),B=o.get(U)?.member;if(B!==void 0&&xn(T.updateVersion,B.updateVersion)<0){M.push(B);continue}A.push({channelId:w,...T,updatedAt:C}),M.push(T),R.set(U,{member:T,expiresAt:I});}if(A.length>0&&t()&&_===h(w)&&!f.has(w)&&(await e.storage?.saveChannelMembers?.(A),e.storage?.getChannelMembers!==void 0&&t()&&_===h(w))){let T=await e.storage.getChannelMembers(w,A.map(B=>B.userId)),U=new Map(T.map(B=>{let{channelId:$,updatedAt:J,...ae}=B;return [ae.userId,{member:ae,updatedAt:J}]}));for(let B=0;B<M.length;B+=1){let $=M[B];if($===void 0)continue;let J=U.get($.userId);J===void 0||xn(J.member.updateVersion,$.updateVersion)<=0||(M[B]=J.member,R.set(b(w,$.userId),{member:J.member,expiresAt:J.updatedAt+r}));}}if(t()&&_===h(w))for(let[T,U]of R)o.set(T,U);return M}async function P(w,l){let _=p(w.channelId),{page:C,pageSize:I}=Pi({...w,channelId:_}),A=h(_),M=await l(_,C,I);if(!M.ok)throw new Oe(M.code,M.message);if(M.data!==null&&!Array.isArray(M.data))throw new F("data \u5FC5\u987B\u4E3A\u6570\u7EC4\u6216 null");let R=or((M.data??[]).map(B=>rr(B,_))),T=await m(_,R,A),U=(M.data??[]).length<I;return {items:T,exhausted:U,...U?{}:{nextCursor:String(C+1)}}}function k(w){let l=p(w),_=d.get(l);if(_!==void 0)return _;let C=h(l),I=(async()=>{let A,M=false,R=[];for(let U=0;U<gi&&!M;U+=1){let B=await P({channelId:l,limit:Qe,...A===void 0?{}:{cursor:A}},($,J,ae)=>vn(e.client,{channelId:$,page:J,pageSize:ae,clientType:e.clientType}));if(!t()||C!==h(l))throw new F("\u6210\u5458\u5FEB\u7167\u9884\u53D6\u5DF2\u56E0\u6210\u5458\u53D8\u5316\u5931\u6548");R=E(R,B.items),A=B.nextCursor,M=B.exhausted;}let T={channelId:l,items:R,...A===void 0?{}:{nextCursor:A},exhausted:M,updatedAt:n()};return await u(T,C,{allowPersistentRebuild:true}),{items:T.items,...T.nextCursor===void 0?{}:{nextCursor:T.nextCursor},exhausted:T.exhausted}})().finally(()=>{d.get(l)===I&&d.delete(l);});return d.set(l,I),I}async function D(w){let l=p(w),_=h(l)+1;i.set(l,_),f.add(l),g.add(l),a.delete(l),s.delete(l),d.delete(l);let C=`${l}:`;for(let I of o.keys())I.startsWith(C)&&o.delete(I);e.storage?.deleteChannelMembers===void 0&&e.storage?.deleteChannelMemberSnapshot===void 0||(await Promise.all([e.storage.deleteChannelMembers?.(l),e.storage.deleteChannelMemberSnapshot?.(l)]),_===h(l)&&(e.storage?.deleteChannelMembers!==void 0&&f.delete(l),e.storage?.deleteChannelMemberSnapshot!==void 0&&g.delete(l)));}return {async prefetchMembers(w){let l=p(w),_=await v(l),C=g.has(l);_!==null&&!C&&_.updatedAt+r>n()||await k(l);},async getCachedMembers(w){let l=p(w.channelId),_=await v(l);if(_===null)return null;let C=w.query?.trim()??"";return C===""&&g.has(l)?null:C===""?{items:[..._.items],..._.nextCursor===void 0?{}:{nextCursor:_.nextCursor},exhausted:_.exhausted}:{items:await c(_.items,C),exhausted:true}},async refreshMembers(w){let l=p(w.channelId),_=w.query?.trim()??"";if(_==="")return k(l);let C=h(l),[I,A]=await Promise.all([P({channelId:l,query:_,limit:Qe},(R,T,U)=>Mn(e.client,{channelId:R,query:_,page:T,pageSize:U,updateVersion:"0",clientType:e.clientType})),v(l)]),M=A===null?[]:await c(A.items,_);return await y(l,I.items,C),{...I,items:E(I.items,M)}},async listMembers(w){let l=p(w.channelId),_={...w,channelId:l},C=h(l),I=await P(_,(A,M,R)=>vn(e.client,{channelId:A,page:M,pageSize:R,clientType:e.clientType}));return await y(l,I.items,C,I,_.cursor!==void 0,_.cursor),I},async searchMembers(w){let l=w.query.trim();if(l==="")return Promise.reject(new F("\u641C\u7D22\u5173\u952E\u8BCD\u4E0D\u80FD\u4E3A\u7A7A"));let _=p(w.channelId),C={...w,channelId:_},I=h(_),A=await P(C,(M,R,T)=>Mn(e.client,{channelId:M,query:l,page:R,pageSize:T,updateVersion:"0",clientType:e.clientType}));return await y(_,A.items,I),A},listAdmins:w=>P(w,(l,_,C)=>nr(e.client,{channelId:l,page:_,pageSize:C,clientType:e.clientType})),async getMembersByIds(w,l,_){let C=w.trim();if(C==="")throw new F("channelId \u4E0D\u80FD\u4E3A\u7A7A");let I=[...new Set(l.map(T=>T.trim()).filter(Boolean))];if(I.length===0)return [];let A=_?.forceRefresh===true,M=new Map,R=[];for(let T of I){let U=o.get(b(C,T));!A&&U!==void 0&&U.expiresAt>n()?M.set(T,U.member):R.push(T);}if(!A&&R.length>0&&!f.has(C)&&e.storage?.getChannelMembers!==void 0){let T=h(C),U=await e.storage.getChannelMembers(C,R);if(t()&&T===h(C))for(let{channelId:B,updatedAt:$,...J}of U)B===C&&(o.set(b(C,J.userId),{member:J,expiresAt:$+r}),$+r>n()&&M.set(J.userId,J));R=R.filter(B=>!M.has(B));}if(!t())return I.flatMap(T=>M.has(T)?[M.get(T)]:[]);if(R.length>0){let T=h(C),U=await tr(e.client,{channelId:C,userIds:R,clientType:e.clientType});if(!U.ok)throw new Oe(U.code,U.message);if(U.data!==null&&!Array.isArray(U.data))throw new F("data \u5FC5\u987B\u4E3A\u6570\u7EC4\u6216 null");let B=or((U.data??[]).map(ye=>rr(ye,C))),$=R.filter(ye=>!B.some($r=>$r.userId===ye)),J=A&&$.length>0&&T===h(C),ae;J?(await D(C),ae=B):ae=await m(C,B,T);for(let ye of ae)M.set(ye.userId,ye);}return I.flatMap(T=>M.has(T)?[M.get(T)]:[])},invalidateChannelMembers:D,clearCache(){let w=new Set(i.keys());for(let l of o.keys())w.add(l.slice(0,l.indexOf(":")));for(let l of a.keys())w.add(l);for(let l of s.keys())w.add(l);for(let l of d.keys())w.add(l);for(let l of f)w.add(l);for(let l of g)w.add(l);for(let l of w)i.set(l,h(l)+1);o.clear(),a.clear(),s.clear(),d.clear(),f.clear(),g.clear();}}}function ir(e){return {responseMode:"strict",method:"POST",...e===void 0?{}:{headers:{"Client-type":String(e)}}}}function ar(e,n){return x(e,"/user_radio/member/list",{radio_id:n.channelId,page:n.page,page_size:n.pageSize},ir(n.clientType))}function sr(e,n){return x(e,"/user_radio/member/search",{radio_id:n.channelId,search_name:n.query,page:n.page,page_size:n.pageSize},ir(n.clientType))}var cr=18,Xe=class extends Error{constructor(t,r){super(`CHANNEL @ member HTTP \u5931\u8D25\uFF08${t}\uFF09\uFF1A${r||"unknown error"}`);this.code=t;this.name="ChannelMentionMemberHttpError";}code},ne=class extends Error{constructor(n){super(`CHANNEL @ member \u6620\u5C04\u5931\u8D25\uFF1A${n}`),this.name="ChannelMentionMemberMappingError";}};function Pe(e){return typeof e=="string"||typeof e=="number"?String(e).trim():""}function Ii(e){let n=Pe(e.user_id);if(n==="")throw new ne("user_id \u4E0D\u80FD\u4E3A\u7A7A");let t=Pe(e.radio_user_nickname)||Pe(e.nick_name)||Pe(e.name)||Pe(e.mid)||n,r=Pe(e.head_img_url);return {userId:n,displayName:t,...r===""?{}:{avatar:r}}}function _i(e){let n=e.channelId.trim();if(n==="")throw new ne("channelId \u4E0D\u80FD\u4E3A\u7A7A");if(!Number.isInteger(e.limit)||e.limit<=0||e.limit>cr)throw new ne(`limit \u5FC5\u987B\u4E3A 1-${cr}`);if(e.cursor===void 0)return {channelId:n,page:1,pageSize:e.limit};if(!/^[1-9]\d*$/.test(e.cursor))throw new ne("page cursor \u5FC5\u987B\u4E3A\u6B63\u5341\u8FDB\u5236\u6574\u6570");let t=Number(e.cursor);if(!Number.isSafeInteger(t))throw new ne("page cursor \u8D85\u51FA\u5B89\u5168\u6574\u6570\u8303\u56F4");return {channelId:n,page:t,pageSize:e.limit}}function Si(e){let n=[],t=new Map;for(let r of e)t.has(r.userId)||n.push(r.userId),t.set(r.userId,r);return n.map(r=>t.get(r))}function Ai(e){async function n(t,r){let{channelId:o,page:a,pageSize:s}=_i(t),d=await r({channelId:o,page:a,pageSize:s,clientType:e.clientType});if(!d.ok)throw new Xe(d.code,d.message);if(d.data!==null&&!Array.isArray(d.data))throw new ne("data \u5FC5\u987B\u4E3A\u6570\u7EC4\u6216 null");let i=d.data??[],f=Si(i.map(Ii)),g=i.length<s;return {items:f,exhausted:g,...g?{}:{nextCursor:String(a+1)}}}return {listMentionMembers:t=>n(t,r=>ar(e.client,r)),searchMentionMembers:t=>{let r=t.query.trim();return r===""?Promise.reject(new ne("\u641C\u7D22\u5173\u952E\u8BCD\u4E0D\u80FD\u4E3A\u7A7A")):n(t,o=>sr(e.client,{...o,query:r}))}}}function vi(e){let n=e.fetch??((t,r)=>globalThis.fetch(t,r));return {async postProtobuf({path:t,body:r,headers:o,signal:a}){let s=await e.getBaseUrl();if(!s)throw new Error("CmHttp.postProtobuf\uFF1A\u7F3A\u5C11 CM HTTP \u57FA\u5740\uFF08getCmHttpBaseUrl \u4E3A\u7A7A\uFF09");let d={"Content-Type":"application/octet-stream"},i=e.getClientType?.();i!==void 0&&(d["Client-type"]=String(i)),Object.assign(d,o);let f=await e.getAuth();f!==null&&f.token!==""&&f.userId!==""&&(d.Authorization=`${f.token}:${f.userId}`);let g=await n(`${s}${t}`,{method:"POST",body:r,headers:d,signal:a});if(!g.ok)throw new Error(`CmHttp.postProtobuf \u5931\u8D25\uFF1Apath=${t} status=${g.status} ${g.statusText}`);let b=await g.arrayBuffer();return new Uint8Array(b)}}}var te=class extends Error{constructor(n){super(n),this.name="DirectoryMappingError";}};function Ze(e,n){if(e===null||typeof e!="object"||Array.isArray(e))throw new te(`${n} \u5FC5\u987B\u662F\u5BF9\u8C61`);return e}function z(e){return typeof e=="string"||typeof e=="number"?String(e).trim():""}function Be(e){let n=z(e);return n===""?void 0:n}function Mi(e){let n=Ze(e,"\u8054\u7CFB\u4EBA\u76EE\u5F55\u9879"),t=n.user_info===void 0?n:Ze(n.user_info,"\u8054\u7CFB\u4EBA user_info"),r=z(t.user_id??n.friend_user_id??n.user_id);if(r==="")throw new te("\u8054\u7CFB\u4EBA\u76EE\u5F55\u9879\u7F3A\u5C11\u7A33\u5B9A user_id");let o=z(n.remark_name)||z(n.contact_name)||z(t.nick_name)||z(t.username)||z(t.mid)||r,a=z(t.nick_name)||z(t.username)||z(t.mid)||r,s=Be(t.head_img_url),d=Be(t.username)??Be(t.mid);return {id:r,kind:"individual",displayName:o,cardDisplayName:a,...s===void 0?{}:{avatarUrl:s},...d===void 0?{}:{username:d}}}function xi(e){let n=Ze(e,"\u7FA4\u7EC4\u76EE\u5F55\u9879"),t=z(n.group_id);if(t==="")throw new te("\u7FA4\u7EC4\u76EE\u5F55\u9879\u7F3A\u5C11\u7A33\u5B9A group_id");let r=Be(n.head_img_url),o=z(n.name)||t;return {id:t,kind:"group",displayName:o,cardDisplayName:o,...r===void 0?{}:{avatarUrl:r}}}function Ei(e){let n=Ze(e,"\u793E\u7FA4\u76EE\u5F55\u9879"),t=z(n.radio_id??n.id);if(t==="")throw new te("\u793E\u7FA4\u76EE\u5F55\u9879\u7F3A\u5C11\u7A33\u5B9A radio_id/id");let r=Be(n.head_img_url),o=z(n.name)||t;return {id:t,kind:"channel",displayName:o,cardDisplayName:o,...r===void 0?{}:{avatarUrl:r}}}function ki(e,n){if(!Number.isSafeInteger(e)||e<1)throw new te("\u76EE\u5F55 page \u5FC5\u987B\u662F\u6B63\u6574\u6570");if(!Number.isSafeInteger(n)||n<1||n>100)throw new te("\u76EE\u5F55 pageSize \u5FC5\u987B\u662F 1-100 \u7684\u6574\u6570")}function Ti(e){return {async list(n){ki(n.page,n.pageSize);let t=n.kind==="individual"?"/friend/list":n.kind==="group"?"/user_group/list":"/user_radio/list",r=n.kind==="channel"&&e.getUserId!==void 0?String(await e.getUserId()).trim():"",a=(await x(e.client,t,{...r===""?{}:{user_id:r},update_version:0,page:n.page,page_size:n.pageSize},{responseMode:"strict",method:"GET",...e.clientType===void 0?{}:{headers:{"Client-type":String(e.clientType)}}})).data??[];if(!Array.isArray(a))throw new te(`${n.kind} \u76EE\u5F55 data \u5FC5\u987B\u662F\u6570\u7EC4`);let s=n.kind==="individual"?Mi:n.kind==="group"?xi:Ei,d=new Map;for(let f of a){let g=s(f);d.set(g.id,g);}let i=a.length<n.pageSize;return {items:[...d.values()],...i?{}:{nextPage:n.page+1},exhausted:i}}}}var Ri="https://api.giphy.com/v1/gifs",we=class extends Error{constructor(t){super(t==="core"?"\u8868\u60C5 Core API \u672A\u914D\u7F6E":"Giphy API key \u672A\u914D\u7F6E");this.provider=t;this.name="ExpressionProviderUnavailableError";}provider},H=class extends Error{constructor(n){super(n),this.name="ExpressionMappingError";}},pe=class extends Error{constructor(t,r){super(`Giphy \u8BF7\u6C42\u5931\u8D25\uFF1AHTTP ${t}${r?` ${r}`:""}`);this.status=t;this.name="GiphyHttpError";}status};function Q(e,n){if(e===null||typeof e!="object"||Array.isArray(e))throw new H(`${n} \u5FC5\u987B\u662F\u5BF9\u8C61`);return e}function Y(e){return typeof e=="string"||typeof e=="number"?String(e).trim():""}function de(e,n){let t=Y(e);if(t==="")throw new H(`${n} \u4E0D\u80FD\u4E3A\u7A7A`);return t}function _e(e){let n=Y(e);return n===""?void 0:n}function Ie(e,n){let t=Number(e);if(!Number.isSafeInteger(t)||t<0)throw new H(`${n} \u5FC5\u987B\u662F\u975E\u8D1F\u6574\u6570`);return t}function Di(e,n){let t=Number(e);if(!Number.isSafeInteger(t))throw new H(`${n} \u5FC5\u987B\u662F\u5B89\u5168\u6574\u6570`);return t}function dr(e,n){let t=Number(e);if(!Number.isFinite(t)||t<=0)throw new H(`${n} \u5FC5\u987B\u662F\u6709\u9650\u6B63\u6570`);return t}function fe(e,n){let t=de(e,n),r;try{r=new URL(t);}catch(o){throw new H(`${n} \u4E0D\u662F\u5408\u6CD5 URL\uFF1A${o instanceof Error?o.message:String(o)}`)}if(r.protocol!=="https:"&&r.protocol!=="http:")throw new H(`${n} \u53EA\u652F\u6301 HTTP(S)`);if(r.username!==""||r.password!=="")throw new H(`${n} \u4E0D\u5141\u8BB8\u5305\u542B URL \u51ED\u636E`);return t}function En(e,n){if(e==null)return [];if(Array.isArray(e))return e;let r=Q(e,n).list;if(r==null)return [];if(!Array.isArray(r))throw new H(`${n}.list \u5FC5\u987B\u662F\u6570\u7EC4\u6216 null`);return r}function Ne(e){return e==="sticker"?1:e==="gif"?2:3}function ur(e){let n=Q(e,"\u8D34\u56FE\u5305"),t=_e(n.onlineTime??n.online_time),r=n.isPlatformIssued??n.is_platform_issued;return {id:de(n.packId??n.pack_id,"\u8D34\u56FE\u5305 packId"),nameZh:Y(n.nameZh??n.name_zh),nameEn:Y(n.nameEn??n.name_en),nameTh:Y(n.nameTh??n.name_th),nameTw:Y(n.nameTw??n.name_tw),nameVi:Y(n.nameVi??n.name_vi),publisher:Y(n.publisher),trayIconUrl:fe(n.trayIcon??n.tray_icon,"\u8D34\u56FE\u5305 trayIcon"),sortWeight:Di(n.sortWeight??n.sort_weight??0,"\u8D34\u56FE\u5305 sortWeight"),isPlatformIssued:r===true||Number(r)===1,...t===void 0?{}:{onlineTime:t},stickerCount:Ie(n.stickerCount??n.sticker_count??0,"\u8D34\u56FE\u5305 stickerCount")}}function kn(e,n,t,r){let o=Q(e,t),a=_e(o.id),s={...a===void 0?{}:{recordId:a},url:fe(o.imgUrl??o.img_url,`${t} imgUrl`),width:Ie(o.width??0,`${t} width`),height:Ie(o.height??0,`${t} height`)};if(n==="sticker")return {kind:n,...s,packageId:de(r??o.packId??o.pack_id,`${t} packageId`),resourceId:de(o.fileName??o.file_name,`${t} resourceId`)};let d=_e(o.fileName??o.file_name);return {kind:n,...s,...d===void 0?{}:{resourceId:d}}}function Ui(e,n){if(n!=="emoji")return kn(e,n,"\u6700\u8FD1\u4F7F\u7528\u9879");let t=Q(e,"\u6700\u8FD1 emoji"),r=_e(t.id);return {kind:"emoji",...r===void 0?{}:{recordId:r},token:de(t.imgUrl??t.img_url,"\u6700\u8FD1 emoji token"),resourceId:de(t.fileName??t.file_name,"\u6700\u8FD1 emoji resourceId")}}function lr(e,n,t){let r=Ne(n);return En(e,t).filter(o=>{let a=Q(o,`${t} item`),s=a.favType??a.fav_type;if(s==null)return true;let d=Number(s);if(d!==1&&d!==2&&d!==3)throw new H(`${t} item.favType \u5FC5\u987B\u662F 1\u30012 \u6216 3`);return d===r})}function fr(e){return {fav_type:Ne(e.kind),pack_id:e.kind==="sticker"?e.packageId:"",img_url:fe(e.url,"\u8868\u60C5\u5199\u5165 imgUrl"),file_name:e.resourceId??"",width:e.width,height:e.height}}function Oi(e){return e.kind!=="emoji"?fr(e):{fav_type:Ne(e.kind),pack_id:"",img_url:e.token,file_name:e.resourceId,width:0,height:0}}function pr(e){let n=[...new Set(e.map(t=>t.trim()).filter(Boolean))];if(n.length===0||n.length>30||n.some(t=>t.includes("|")))throw new H("\u6279\u91CF\u5220\u9664 recordIds \u5FC5\u987B\u5305\u542B 1-30 \u4E2A\u4E0D\u542B\u7AD6\u7EBF\u7684\u552F\u4E00\u975E\u7A7A id");return n.join("|")}function Bi(e){let n=Q(e,"Giphy item"),t=Q(n.images,"Giphy item.images"),r=Q(t.original,"Giphy item.images.original"),o=t.fixed_width,a=o==null?void 0:Q(o,"Giphy item.images.fixed_width"),s=fe(r.url,"Giphy original.url"),d=a===void 0?void 0:_e(a.url),i=a===void 0?void 0:_e(a.webp),f=i===void 0?d===void 0?s:fe(d,"Giphy fixed_width.url"):fe(i,"Giphy fixed_width.webp"),g=i!==void 0&&d!==void 0&&d!==i?fe(d,"Giphy fixed_width.url"):void 0;return {kind:"gif",resourceId:de(n.id,"Giphy item.id"),title:Y(n.title)||"GIF",url:s,previewUrl:f,...g===void 0?{}:{fallbackPreviewUrl:g},width:dr(r.width,"Giphy original.width"),height:dr(r.height,"Giphy original.height")}}function Ni(e,n){let t=Q(e,"Giphy response");if(!Array.isArray(t.data))throw new H("Giphy response.data \u5FC5\u987B\u662F\u6570\u7EC4");let r=Q(t.pagination,"Giphy response.pagination"),o=Ie(r.offset??n,"Giphy pagination.offset");if(o!==n)throw new H("Giphy pagination.offset \u4E0E\u8BF7\u6C42 offset \u4E0D\u4E00\u81F4");let a=Ie(r.count??t.data.length,"Giphy pagination.count"),s=Ie(r.total_count??r.totalCount??0,"Giphy pagination.total_count"),d=new Map;for(let f of t.data){let g=Bi(f);d.set(g.resourceId,g);}let i=o+a;return {items:[...d.values()],offset:o,totalCount:s,...a>0&&i<s?{nextOffset:i}:{}}}function Gi(e){async function n(r,o,a){if(e.coreClient===void 0)throw new we("core");let s=await x(e.coreClient,r,o,{method:"POST",responseMode:"strict"});if(!s.ok)throw new q(a,s.code,s.message);return s.data}async function t(r,o){let a=e.giphyApiKey?.trim()??"";if(a==="")throw new we("giphy");let s=e.fetcher??globalThis.fetch;if(typeof s!="function")throw new we("giphy");let d=new URLSearchParams({api_key:a,limit:String(o.limit),offset:String(o.offset),...o.query===void 0?{}:{q:o.query,lang:"en"}}),i;try{i=await s(`${Ri}/${r}?${d.toString()}`);}catch{throw new pe(0,"network failure")}let f;try{f=await i.json();}catch(b){throw i.ok?new H(`Giphy response \u4E0D\u662F JSON\uFF1A${b instanceof Error?b.message:String(b)}`):new pe(i.status,"")}if(!i.ok){let b=f!==null&&typeof f=="object"&&!Array.isArray(f)?f.meta:void 0,h=b!==null&&typeof b=="object"&&!Array.isArray(b)?Y(b.msg):"";throw new pe(i.status,h)}let g=f!==null&&typeof f=="object"&&!Array.isArray(f)?f.meta:void 0;if(g!==null&&typeof g=="object"&&!Array.isArray(g)){let b=g,h=Number(b.status);if(Number.isFinite(h)&&h!==200)throw new pe(h,Y(b.msg))}return Ni(f,o.offset)}return {async listStickerPacks(r){let o=await n("/user/sticker/pack_list",r===void 0?{}:{version:r},"\u8D34\u56FE\u5305\u5217\u8868");if(Array.isArray(o))return {version:"",items:o.map(ur)};if(o==null)return {version:"",items:[]};let a=Q(o,"\u8D34\u56FE\u5305\u5217\u8868 data"),s=a.list??a.packs;if(s==null)return {version:Y(a.version),items:[]};if(!Array.isArray(s))throw new H("\u8D34\u56FE\u5305\u5217\u8868 data.list \u5FC5\u987B\u662F\u6570\u7EC4\u6216 null");return {version:Y(a.version),items:s.map(ur)}},async listStickerItems(r){let o=await n("/user/sticker/item_list",{pack_id:r},"\u8D34\u56FE\u660E\u7EC6\u5217\u8868");return En(o,"\u8D34\u56FE\u660E\u7EC6\u5217\u8868 data").map(a=>kn(a,"sticker","\u8D34\u56FE\u660E\u7EC6",r))},async listFavorites(r){let o=await n("/user/sticker/my_fav/list",{fav_type:Ne(r)},"\u8868\u60C5\u6536\u85CF\u5217\u8868");return lr(o,r,"\u8868\u60C5\u6536\u85CF\u5217\u8868 data").map(a=>kn(a,r,"\u8868\u60C5\u6536\u85CF\u9879"))},async addFavorite(r){await n("/user/sticker/my_fav/add",fr(r),"\u6DFB\u52A0\u8868\u60C5\u6536\u85CF");},async deleteFavorites(r){await n("/user/sticker/my_fav/del",{ids:pr(r)},"\u5220\u9664\u8868\u60C5\u6536\u85CF");},async listRecent(r){let o=await n("/user/sticker/recent/list",{fav_type:Ne(r)},"\u6700\u8FD1\u4F7F\u7528\u5217\u8868");return lr(o,r,"\u6700\u8FD1\u4F7F\u7528\u5217\u8868 data").map(a=>Ui(a,r))},async reportRecent(r){await n("/user/sticker/recent/report",Oi(r),"\u4E0A\u62A5\u6700\u8FD1\u4F7F\u7528");},async deleteRecent(r){await n("/user/sticker/recent/del",{ids:pr(r)},"\u5220\u9664\u6700\u8FD1\u4F7F\u7528");},async listReactionTop(r){let o=await n("/user/reaction/emoji/top",r===void 0?{}:{limit:r},"\u5FEB\u6377\u56DE\u5E94 Top \u5217\u8868");return En(o,"\u5FEB\u6377\u56DE\u5E94 Top data").map(a=>{let s=Q(a,"\u5FEB\u6377\u56DE\u5E94 Top \u9879");return de(s.emoji,"\u5FEB\u6377\u56DE\u5E94 emoji")})},async reportReaction(r){await n("/user/reaction/emoji/report",{emoji:r},"\u4E0A\u62A5\u5FEB\u6377\u56DE\u5E94");},listGiphyTrending:r=>t("trending",r),searchGiphy:r=>t("search",r)}}async function mr(e,n){let t=n.clientType===void 0?void 0:{headers:{"Client-type":String(n.clientType)}};return (await x(e,"/user_group/info",{group_id:n.groupId},t)).data}function Ki(e){if(Array.isArray(e))return e;if(typeof e!="object"||e===null)return [];let n=e,t=["list","users","user_list","members","member_list","members_list"];for(let r of t)if(Array.isArray(n[r]))return n[r];if(Array.isArray(n.data))return n.data;if(typeof n.data=="object"&&n.data!==null){let r=n.data;for(let o of t)if(Array.isArray(r[o]))return r[o]}return []}function Li(e){if(typeof e=="number")return e;if(typeof e=="string"&&e.trim()!==""){let n=Number(e);return Number.isNaN(n)?void 0:n}}var gr=200,Hi=50;async function hr(e,n){let t=String(n.updateVersion??0).trim()||"0",r=[],o;for(let a=1;a<=Hi;a++){let s={group_id:n.groupId,update_version:t,page:String(a),page_size:String(gr)},{data:d}=await x(e,"/user_group/user/list",s,{method:"GET",...n.clientType===void 0?{}:{headers:{"Client-type":String(n.clientType)}}});if(d===null)break;let i=Ki(d);if(i.length===0)break;for(let g of i){let b=String(g.user_id??g.userId??"").trim();if(b==="")continue;let h={userId:b,nickName:String(g.nick_name??g.nickName??"").trim()},p=Li(g.join_type??g.joinType);p!==void 0&&(h.joinType=p),r.push(h);}let f=d.update_version;if(typeof f=="number"&&(o=f),i.length<gr)break}return {members:r,updateVersion:o}}async function yr(e,n){return (await x(e,"/user/info/friend",{friend_user_id:n.userId})).data}var $i=1440*60*1e3;function Tn(e,n,t=$i){let r=new Map,o=new Map,a=new Map;function s(g){let b=(a.get(g)??0)+1;a.set(g,b);let h=e(g).then(p=>(p!==null&&a.get(g)===b&&(r.set(g,p),n?.save(g,p).catch(()=>{})),p)).finally(()=>{o.get(g)===h&&o.delete(g);});return o.set(g,h),h}return {get:async(g,b)=>{if(b?.forceRefresh===true)return s(g);let h=r.get(g);if(h!==void 0)return h;let p=o.get(g);if(p!==void 0)return p;if(n!==void 0)try{let S=a.get(g)??0,v=await n.get(g);if(v!==null)return (a.get(g)??0)===S&&(r.set(g,v.value),Date.now()-v.updatedAt>t&&s(g)),v.value}catch{}return s(g)},peek:async g=>{let b=r.get(g);if(b!==void 0)return {value:b,stale:false};if(n===void 0)return null;try{let h=a.get(g)??0,p=await n.get(g);if(p!==null)return (a.get(g)??0)===h&&r.set(g,p.value),{value:p.value,stale:Date.now()-p.updatedAt>t}}catch{}return null},clear:()=>{for(let g of new Set([...r.keys(),...o.keys(),...a.keys()]))a.set(g,(a.get(g)??0)+1);r.clear(),o.clear();}}}function Fi(e){async function n(h){let p=await yr(e.client,{userId:h})??await Ee(e.client,{userId:h});return p===null?null:Q$1(p)}async function t(h){let p=await mr(e.client,{groupId:h,clientType:e.clientType});return p===null?null:R(p)}async function r(h){let{members:p}=await hr(e.client,{groupId:h,clientType:e.clientType});return p.length===0?null:p}function o(h){let p={};for(let S of h)S.nickName!==""&&(p[S.userId]=S.nickName);return p}let{storage:a}=e,s=a===void 0?void 0:{get:async h=>{let p=await a.getUserProfile(h);return p===null?null:{value:p,updatedAt:p.updatedAt}},save:async(h,p)=>{await a.saveUserProfile({...p,updatedAt:Date.now()});}},d=a===void 0?void 0:{get:async h=>{let p=await a.getGroupMembers(h);return p===null?null:{value:p.members.map(S=>({userId:S.userId,nickName:S.groupNick,...S.joinType===void 0?{}:{joinType:S.joinType}})),updatedAt:p.updatedAt}},save:async(h,p)=>{let S=p.map(v=>({userId:v.userId,groupNick:v.nickName,...v.joinType===void 0?{}:{joinType:v.joinType}}));await a.saveGroupMembers({groupId:h,members:S,updatedAt:Date.now()});}},i=a===void 0?void 0:{get:async h=>{let p=await a.getGroupProfile(h);return p===null?null:{value:p,updatedAt:p.updatedAt}},save:async(h,p)=>{await a.saveGroupProfile({...p,updatedAt:Date.now()});}},f=Tn(n,s),g=Tn(t,i),b=Tn(r,d);return {getUserProfile:(h,p)=>f.get(h,p),getGroupProfile:(h,p)=>g.get(h,p),getGroupMemberNames:async(h,p)=>{let S=await b.get(h,p);return S===null?null:o(S)},listGroupMembers:(h,p)=>b.get(h,p),peekUserProfile:h=>f.peek(h),peekGroupMemberNames:async h=>{let p=await b.peek(h);return p===null?null:{value:o(p.value),stale:p.stale}},peekGroupMembers:h=>b.peek(h),peekGroupProfile:h=>g.peek(h),clearCache:()=>{f.clear(),g.clear(),b.clear();}}}function Ji(e){let n=Number(e);return Number.isSafeInteger(n)&&String(n)===e?n:e}async function X(e,n,t,r){let o=await x(e,n,t,{method:"POST",responseMode:"strict"});if(!o.ok)throw new q(r,o.code,o.message)}function Vi(e){return X(e.client,"/user_radio/edit",{radio_id:e.channelId,...e.name===void 0?{}:{name:e.name},...e.avatarUrl===void 0?{}:{head_img_url:e.avatarUrl},...e.description===void 0?{}:{desc:e.description}},"\u4FEE\u6539\u793E\u7FA4\u8D44\u6599")}function ji(e){return X(e.client,"/user_radio/user/setting",{radio_id:e.channelId,nick_name:e.nickname},"\u4FEE\u6539\u793E\u7FA4\u6635\u79F0")}function qi(e){return X(e.client,"/user_radio/member/edit",{radio_id:e.channelId,radio_user_id:e.userId,nick_name:e.nickname},"\u4FEE\u6539\u793E\u7FA4\u6635\u79F0")}function zi(e){let n=e.userIds.map(t=>({user_id:Ji(t)}));return X(e.client,"/user_radio/invited_users",{radio_id:e.channelId,members:JSON.stringify(n)},"\u9080\u8BF7\u793E\u7FA4\u6210\u5458")}function Wi(e){return X(e.client,"/user_radio/kick_user",{radio_id:e.channelId,user_id:e.userId},"\u79FB\u9664\u793E\u7FA4\u6210\u5458")}function Yi(e){return X(e.client,"/user_radio/add_admin",{radio_id:e.channelId,user_id:e.userId},"\u8BBE\u4E3A\u793E\u7FA4\u7BA1\u7406\u5458")}function Qi(e){return X(e.client,"/user_radio/del_admin",{radio_id:e.channelId,user_id:e.userId},"\u53D6\u6D88\u793E\u7FA4\u7BA1\u7406\u5458")}function Xi(e){return X(e.client,"/user_radio/transfer",{radio_id:e.channelId,user_id:e.userId},"\u8F6C\u8BA9\u793E\u7FA4")}function Zi(e){return X(e.client,"/user_radio/user/quit",{radio_id:e.channelId,...e.newOwnerId===void 0?{}:{user_id:e.newOwnerId}},"\u9000\u51FA\u793E\u7FA4")}function ea(e){return X(e.client,"/user_radio/edit_setting",{radio_id:e.channelId,verify_way:e.verifyType,...e.verifyType===4&&e.inviteCode!==void 0?{invite_code:e.inviteCode}:{}},"\u4FEE\u6539\u793E\u7FA4\u5165\u7FA4\u9A8C\u8BC1\u65B9\u5F0F")}function na(e){return X(e.client,"/user_radio/edit_setting",{radio_id:e.channelId,is_unspeeking_all:e.muted?"1":"0"},e.muted?"\u5F00\u542F\u793E\u7FA4\u5168\u5458\u7981\u8A00":"\u5173\u95ED\u793E\u7FA4\u5168\u5458\u7981\u8A00")}function ta(e){return X(e.client,"/user_radio/edit_setting",{radio_id:e.channelId,is_unvisit_other:e.disabled?"1":"0"},e.disabled?"\u5F00\u542F\u793E\u7FA4\u5168\u5458\u7981\u79C1\u804A":"\u5173\u95ED\u793E\u7FA4\u5168\u5458\u7981\u79C1\u804A")}function ra(e){return X(e.client,"/user_radio/closed",{radio_id:e.channelId},"\u89E3\u6563\u793E\u7FA4")}async function oa(e){ia(e.channelId,"channel");let n=e.index.trim();if(n==="")throw new Error("CHANNEL \u5386\u53F2\u4E0A\u4E0B\u6587 index \u7F3A\u5931");e.decryptDeps!==void 0&&e.prepareKey!==void 0&&await e.prepareKey(e.channelId);let t=e.containAnchor??true,r=y({userId:e.userId,clientType:e.clientType,pulls:[{channelId:e.channelId,baseIndex:n,direction:0,count:20,contain:t?1:0}]}),o=await e.http.postProtobuf({path:"/channel/v1/offlineMessages",body:r}),a=B(o,{selfId:e.userId,keepRaw:true,expectedChannelIds:[e.channelId],onContentDecodeError:e.onContentDecodeError,onReaction:e.onReaction},e.decryptDeps);if(t){let d=a.messages.filter(i=>i.extensions?.historyCursor===n);if(d.length!==1)throw new Error(`CHANNEL \u5386\u53F2\u4E0A\u4E0B\u6587 anchor \u5FC5\u987B\u4E00\u4E00\u5BF9\u5E94\uFF08channelId=${e.channelId}, index=${n}, count=${d.length}\uFF09`)}let s=a.nextBaseIndexes[e.channelId];return {messages:a.messages,hasNewer:(a.messageCounts[e.channelId]??0)===20&&s!==void 0&&s!==n,...s===void 0?{}:{nextCursor:s}}}function ia(e,n){if(!/^\d+$/.test(e))throw new Error(`CHANNEL ${n} id \u975E\u6CD5\uFF1A${e}`);let t=BigInt(e);if(t<=0n)throw new Error(`CHANNEL ${n} id \u975E\u6CD5\uFF1A${e}`);return t}async function aa(e){let n=sa(e.indexes),t=f.encode(f.create({sUserId:Rn(e.userId,"user"),lsIndex:n.map(a=>({sChnnId:Rn(a.channelId,"channel"),sIndex:a.readCursor}))})),r=await e.http.postProtobuf({path:"/channel/v1/readIndexes/edit",body:t}),o=g.decode(r);if(o.errcode!==0)throw new Error(`CHANNEL readIndexes/edit \u5931\u8D25\uFF1Aerrcode=${o.errcode}`)}function sa(e){if(e.length===0)throw new Error("CHANNEL readIndexes/edit \u81F3\u5C11\u9700\u8981\u4E00\u4E2A index");let n=new Set;return e.map(t=>{Rn(t.channelId,"channel");let r=t.readCursor.trim();if(r==="")throw new Error(`CHANNEL readIndexes/edit cursor \u7F3A\u5931\uFF08channelId=${t.channelId}\uFF09`);if(n.has(t.channelId))throw new Error(`CHANNEL readIndexes/edit \u9891\u9053\u91CD\u590D\uFF08channelId=${t.channelId}\uFF09`);return n.add(t.channelId),{channelId:t.channelId,readCursor:r}})}function Rn(e,n){if(!/^\d+$/.test(e))throw new Error(`CHANNEL readIndexes ${n} id \u975E\u6CD5\uFF1A${e}`);let t=BigInt(e);if(t<=0n)throw new Error(`CHANNEL readIndexes ${n} id \u975E\u6CD5\uFF1A${e}`);return t}async function ca(e,n){let t=n.userId.trim();if(t==="")throw new Error("\u8BBE\u7F6E\u9ED1\u540D\u5355\uFF1AuserId \u4E0D\u80FD\u4E3A\u7A7A");let r=await x(e,"/user/black/set",{friend_user_id:t,status:n.blocked?2:1},{responseMode:"strict",method:"POST"});if(!r.ok)throw new Error(`${n.blocked?"\u52A0\u5165":"\u79FB\u51FA"}\u9ED1\u540D\u5355\u5931\u8D25\uFF08${r.code}\uFF09\uFF1A${r.message||"unknown error"}`)}var en=class extends Error{responseCode;constructor(n,t){super(`\u641C\u7D22\u7528\u6237\u5931\u8D25\uFF08${n}\uFF09\uFF1A${t||"unknown error"}`),this.name="ContactUserSearchError",this.responseCode=n;}},nn=class extends Error{kind;responseCode;constructor(n,t,r){super(`\u53D1\u9001\u597D\u53CB\u7533\u8BF7\u5931\u8D25\uFF08${t}\uFF09\uFF1A${r||"unknown error"}`),this.name="ContactFriendshipRequestError",this.kind=n,this.responseCode=t;}},Dn={HIDDEN_CONTACT:40112,OWN_FRIEND_LIMIT_REACHED:40121,TARGET_FRIEND_LIMIT_REACHED:40122},da=36875,ua=40113;function Un(e){return typeof e=="string"||typeof e=="number"?String(e).trim():""}function ie(e){let n=Un(e);return n===""?void 0:n}function Cr(e){let n=Array.isArray(e)?e[0]:e;return n!==null&&typeof n=="object"?n:void 0}function la(e){switch(e){case Dn.HIDDEN_CONTACT:return "hidden-contact";case Dn.OWN_FRIEND_LIMIT_REACHED:return "own-friend-limit";case Dn.TARGET_FRIEND_LIMIT_REACHED:return "target-friend-limit";default:return "remote"}}async function pa(e,n){let t=n.query.trim();if(t==="")throw new Error("\u641C\u7D22\u7528\u6237\uFF1Aquery \u4E0D\u80FD\u4E3A\u7A7A");let r=await x(e,"/user/info/search",{username:t},{responseMode:"strict",...n.clientType===void 0?{}:{headers:{"Client-type":String(n.clientType)}}});if(!r.ok)throw new en(r.code,r.message);let o=Cr(r.data);if(o===void 0)return null;let a=Un(o.user_id??o.userId);if(a==="")throw new Error("\u641C\u7D22\u7528\u6237\uFF1A\u54CD\u5E94\u7F3A\u5C11 user_id");let s=Un(o.nick_name??o.nickname??o.name)||a,d=o.friend_status??o.friendStatus,i=d===void 0?void 0:Number(d);if(i!==void 0&&!Number.isInteger(i))throw new Error("\u641C\u7D22\u7528\u6237\uFF1Afriend_status \u975E\u6CD5");return {userId:a,nickname:s,...ie(o.username)===void 0?{}:{username:ie(o.username)},...ie(o.mid)===void 0?{}:{miCallId:ie(o.mid)},...ie(o.head_img_url??o.avatar)===void 0?{}:{avatarUrl:ie(o.head_img_url??o.avatar)},...ie(o.per_signature??o.signature)===void 0?{}:{signature:ie(o.per_signature??o.signature)},...i===void 0?{}:{friendStatus:i}}}async function fa(e,n){let t=n.userId.trim(),r=n.message.trim(),o=n.remark?.trim();if(t===""||r==="")throw new Error("\u53D1\u9001\u597D\u53CB\u7533\u8BF7\uFF1AuserId \u548C message \u4E0D\u80FD\u4E3A\u7A7A");let a=await x(e,"/friend/apply/do",{to_user_id:t,remarks:r,...o===void 0||o===""?{}:{remark_nick_name:o}},{responseMode:"strict",method:"POST",...n.clientType===void 0?{}:{headers:{"Client-type":String(n.clientType)}}});if(!a.ok)throw new nn(la(a.code),a.code,a.message);let s=Cr(a.data),d=Number(s?.status??0);if(d!==0&&d!==1&&d!==2)throw new Error(`\u53D1\u9001\u597D\u53CB\u7533\u8BF7\uFF1A\u672A\u77E5\u7ED3\u679C\u72B6\u6001 ${d}`);let i=ie(s?.message??s?.msg??a.message);return {status:d,...i===void 0?{}:{message:i}}}async function ma(e,n){let t=n.userId.trim();if(t==="")throw new Error("\u5220\u9664\u597D\u53CB\uFF1AuserId \u4E0D\u80FD\u4E3A\u7A7A");let r=await x(e,"/friend/del",{friend_user_id:t},{responseMode:"strict",method:"POST",...n.clientType===void 0?{}:{headers:{"Client-type":String(n.clientType)}}});if(!r.ok&&r.code!==ua)throw new Error(`\u5220\u9664\u597D\u53CB\u5931\u8D25\uFF08${r.code}\uFF09\uFF1A${r.message||"unknown error"}`)}async function ga(e,n){let t=n.reporterUserId.trim(),r=n.targetUserId.trim(),o=n.problem.trim();if(t===""||r===""||o==="")throw new Error("\u4E3E\u62A5\u8054\u7CFB\u4EBA\uFF1AreporterUserId\u3001targetUserId \u548C problem \u4E0D\u80FD\u4E3A\u7A7A");let a=await x(e,"/user/report_user/add",{user_id:t,to_user_id:r,problem:o,images:"1"},{responseMode:"strict",method:"POST"});if(!a.ok)throw new q("\u4E3E\u62A5\u8054\u7CFB\u4EBA",a.code,a.message)}function ha(e){let n=Number(e);return Number.isSafeInteger(n)&&String(n)===e?n:e}function ya(e){let n=e.memberIds.map(t=>({user_id:ha(t)}));return x(e.client,"/user_radio/create",{name:e.name,secret_key:e.secretKey,is_hidden:"0",members:JSON.stringify(n),...e.avatarUrl===void 0?{}:{head_img_url:e.avatarUrl}},{method:"POST",responseMode:"strict"})}function Ca(e){return x(e.client,"/user_group/create_face",{is_hidden:"0"},{method:"POST",responseMode:"strict"})}function ba(e){let n=Number(e);return Number.isSafeInteger(n)&&String(n)===e?n:e}function Pa(e){let n=e.memberIds.map(t=>({user_id:ba(t)}));return x(e.client,"/user_group/create",{name:e.name,is_hidden:"0",members:JSON.stringify(n),...e.avatarUrl===void 0?{}:{head_img_url:e.avatarUrl}},{method:"POST",responseMode:"strict"})}function Se(e){if(e.trim()==="")throw new Error("board pinned message groupId \u4E0D\u80FD\u4E3A\u7A7A")}function Ae(e){if(e.trim()==="")throw new Error("channel board pinned message channelId \u4E0D\u80FD\u4E3A\u7A7A")}function br(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function wa(e){Se(e.groupId);let n=await x(e.client,"/api/v1/board/get_board_msg_top",{group_ids:e.groupId,group_type:2},{method:"POST",prefix:"",responseMode:"strict"});if(!n.ok)return n;if(!br(n.data))throw new Error("board get \u54CD\u5E94\u7ED3\u6784\u975E\u6CD5\uFF1A\u6210\u529F data \u5FC5\u987B\u4E3A\u5BF9\u8C61");let t=n.data[e.groupId];if(t===void 0&&Object.keys(n.data).length===0)return {...n,data:null};if(t===void 0)throw new Error("board get \u54CD\u5E94\u7ED3\u6784\u975E\u6CD5\uFF1A\u5355\u7FA4\u54CD\u5E94\u5305\u542B\u975E\u76EE\u6807 groupId");if(!br(t)||t.group_id!==e.groupId||t.group_type!==2||typeof t.msg_content!="string"||t.msg_content==="")throw new Error("board get \u54CD\u5E94\u7ED3\u6784\u975E\u6CD5\uFF1A\u7F6E\u9876\u8BB0\u5F55\u5B57\u6BB5\u4E0D\u5339\u914D");let r=t,o=i(r.msg_content);if(o.envelope.convType!==2)throw new Error("board get \u5FEB\u7167 convType \u5FC5\u987B\u4E3A 2");if(o.envelope.receiverId!==e.groupId)throw new Error("board get \u5FEB\u7167 receiverId \u4E0E\u54CD\u5E94 groupId \u4E0D\u4E00\u81F4");return {...n,data:{groupId:r.group_id,groupType:2,messageContent:r.msg_content}}}function Pr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Ia(e){Ae(e.channelId);let n=await x(e.client,"/api/v1/board/get_board_msg_top",{group_ids:e.channelId,group_type:1},{method:"POST",prefix:"",responseMode:"strict"});if(!n.ok)return n;if(!Pr(n.data))throw new Error("channel board get \u54CD\u5E94\u7ED3\u6784\u975E\u6CD5\uFF1A\u6210\u529F data \u5FC5\u987B\u4E3A\u5BF9\u8C61");let t=n.data[e.channelId];if(t===void 0&&Object.keys(n.data).length===0)return {...n,data:null};if(t===void 0)throw new Error("channel board get \u54CD\u5E94\u7ED3\u6784\u975E\u6CD5\uFF1A\u5355\u9891\u9053\u54CD\u5E94\u5305\u542B\u975E\u76EE\u6807 channelId");if(!Pr(t)||t.group_id!==e.channelId||t.group_type!==1||typeof t.msg_content!="string"||t.msg_content==="")throw new Error("channel board get \u54CD\u5E94\u7ED3\u6784\u975E\u6CD5\uFF1A\u7F6E\u9876\u8BB0\u5F55\u5B57\u6BB5\u4E0D\u5339\u914D");let r=t,o=i(r.msg_content);if(o.envelope.convType!==3)throw new Error("channel board get \u5FEB\u7167 convType \u5FC5\u987B\u4E3A 3");if(o.envelope.receiverId!==e.channelId)throw new Error("channel board get \u5FEB\u7167 receiverId \u4E0E\u54CD\u5E94 channelId \u4E0D\u4E00\u81F4");return {...n,data:{channelId:r.group_id,groupType:1,messageContent:r.msg_content}}}async function _a(e,n){let r=(await x(e,"/user_radio/info",{radio_id:n.channelId},{...n.clientType===void 0?{}:{headers:{"Client-type":String(n.clientType)}}})).data?.secret_key;return typeof r=="string"&&r.trim()!==""?r:null}function Sa(e){if(typeof e!="string"||e.length===0)return false;try{let n=new URL(e);return n.protocol==="http:"||n.protocol==="https:"}catch{return false}}async function Aa(e){let n=await e("/system/background/list",{target:"core",method:"POST",data:{}});if(n.code!==200)throw new Error(`\u4F1A\u8BDD\u80CC\u666F\u9884\u7F6E\u5217\u8868\u8BF7\u6C42\u5931\u8D25\uFF1A${n.code}${n.msg?` ${n.msg}`:""}`);if(!Array.isArray(n.data?.lists))throw new Error("\u4F1A\u8BDD\u80CC\u666F\u9884\u7F6E\u5217\u8868\u54CD\u5E94\u7F3A\u5C11 lists");let t=[],r=new Set;for(let o of n.data.lists){let a=typeof o.id=="string"||typeof o.id=="number"?String(o.id):"";a.length===0||o.is_enabled!==1||!Sa(o.img_url)||r.has(a)||(r.add(a),t.push({id:a,url:o.img_url,...typeof o.name=="string"&&o.name.length>0?{name:o.name}:{}}));}return t}function va(e){let n=Number(e);return Number.isSafeInteger(n)&&String(n)===e?n:e}async function Ge(e,n,t,r){let o=await x(e,n,t,{method:"POST",responseMode:"strict"});if(!o.ok)throw new q(r,o.code,o.message)}function Ma(e){let n=e.userIds.map(t=>({user_id:va(t)}));return Ge(e.client,"/user_group/invited",{group_id:e.groupId,members:JSON.stringify(n)},"\u9080\u8BF7\u7FA4\u6210\u5458")}function xa(e){return Ge(e.client,"/user_group/kick",{group_id:e.groupId,out_user_id:e.userId},"\u79FB\u9664\u7FA4\u6210\u5458")}function Ea(e){return Ge(e.client,"/user_group/transfer",{group_id:e.groupId,new_user_id:e.userId},"\u8F6C\u8BA9\u7FA4\u7EC4")}function ka(e){return Ge(e.client,"/user_group/user/quit",{group_id:e.groupId,...e.newOwnerId===void 0?{}:{new_user_id:e.newOwnerId}},"\u9000\u51FA\u7FA4\u7EC4")}function Ta(e){return Ge(e.client,"/user_group/edit",{group_id:e.groupId,verify_way:e.verifyWay,...e.verifyWay===4&&e.inviteCode!==void 0?{invite_code:e.inviteCode}:{}},"\u4FEE\u6539\u666E\u901A\u7FA4\u5165\u7FA4\u9A8C\u8BC1\u65B9\u5F0F")}var Ra=new Set([200,32768]);async function Da(e){let n=K({userId:e.userId,groupId:e.groupId}),t=await e.http.postProtobuf({path:"/offline/v1/group/read_all",body:n}),{code:r}=L$1(t);if(!Ra.has(r))throw new Error(`\u7FA4 read_all \u4E1A\u52A1\u5931\u8D25\uFF1Acode=${r}\uFF08groupId=${e.groupId}\uFF09`)}var Ke=class extends Error{constructor(n){super(`${n}\u54CD\u5E94\u5305\u542B\u65E0\u6CD5\u8BC6\u522B\u7684 is_waitting`),this.name="MembershipJoinMappingError";}};function Ua(e,n){if(e===true||e===1||e==="1")return Object.freeze({outcome:"waiting"});if(e==null||e===false||e===0||e==="0")return Object.freeze({outcome:"joined"});throw new Ke(n)}async function wr(e,n,t,r){let o=await x(e,n,t,{method:"POST",responseMode:"strict"});if(!o.ok)throw new q(r,o.code,o.message);if(o.data===null||o.data===void 0)throw new Ke(r);return Ua(o.data.is_waitting,r)}async function Ir(e,n,t,r){let o=await x(e,n,t,{method:"POST",responseMode:"strict"});if(!o.ok)throw new q(r,o.code,o.message);return Object.freeze({outcome:"joined"})}function Oa(e){return wr(e.client,"/user_group/apply",{group_id:e.groupId,qrcode_type:2,remarks:e.remarks??""},"\u7533\u8BF7\u52A0\u5165\u666E\u901A\u7FA4")}function Ba(e){return Ir(e.client,"/user_group/enter_by_invite_code",{group_id:e.groupId,invite_code:e.inviteCode},"\u4F7F\u7528\u9080\u8BF7\u7801\u52A0\u5165\u666E\u901A\u7FA4")}function Na(e){return wr(e.client,"/user_radio/add/apply",{radio_id:e.channelId,remarks:e.remarks??""},"\u7533\u8BF7\u52A0\u5165\u793E\u7FA4")}function Ga(e){return Ir(e.client,"/user_radio/enter_by_invite_code",{radio_id:e.channelId,invite_code:e.inviteCode},"\u4F7F\u7528\u9080\u8BF7\u7801\u52A0\u5165\u793E\u7FA4")}async function Ka(e){if(Se(e.groupId),e.messageContent.trim()==="")throw new Error("board pinned message messageContent \u4E0D\u80FD\u4E3A\u7A7A");let n=i(e.messageContent);if(n.envelope.convType!==2)throw new Error("board pin \u5FEB\u7167 convType \u5FC5\u987B\u4E3A 2");if(n.envelope.receiverId!==e.groupId)throw new Error("board pin \u5FEB\u7167 receiverId \u4E0E\u76EE\u6807 groupId \u4E0D\u4E00\u81F4");let t=await x(e.client,"/api/v1/board/board_msg_top",{group_id:e.groupId,group_type:2,msg_content:e.messageContent},{method:"POST",prefix:"",responseMode:"strict"});if(!t.ok)return t;if(t.data!==null)throw new Error("board pin \u54CD\u5E94\u7ED3\u6784\u975E\u6CD5\uFF1A\u6210\u529F data \u5FC5\u987B\u4E3A\u7A7A");return {...t,data:null}}async function La(e){if(Ae(e.channelId),e.messageContent.trim()==="")throw new Error("channel board pinned message messageContent \u4E0D\u80FD\u4E3A\u7A7A");let n=i(e.messageContent);if(n.envelope.convType!==3)throw new Error("channel board pin \u5FEB\u7167 convType \u5FC5\u987B\u4E3A 3");if(n.envelope.receiverId!==e.channelId)throw new Error("channel board pin \u5FEB\u7167 receiverId \u4E0E\u76EE\u6807 channelId \u4E0D\u4E00\u81F4");let t=await x(e.client,"/api/v1/board/board_msg_top",{group_id:e.channelId,group_type:1,msg_content:e.messageContent},{method:"POST",prefix:"",responseMode:"strict"});if(!t.ok)return t;if(t.data!==null)throw new Error("channel board pin \u54CD\u5E94\u7ED3\u6784\u975E\u6CD5\uFF1A\u6210\u529F data \u5FC5\u987B\u4E3A\u7A7A");return {...t,data:null}}var Ha=20,_r=10,On=30,$a=100;async function Fa(e){let n=[];for(let t of Ar(e.channels,Ha)){let r=x$1({userId:e.userId,channels:t}),o=await e.http.postProtobuf({path:"/channel/v1/sessions",body:r}),a={selfId:e.userId,keepRaw:true,expectedChannelIds:t.map(d=>d.channelId),diagnostic:{endpoint:"sessions",surface:"session-last",...e.operationId===void 0?{}:{operationId:e.operationId},clientTypeHeader:e.clientType,clientTypeBody:"absent"}},s=A(o,a);await Sr(e,s.sessions.filter(d=>d.channelState==="active"||d.raw?.status===0).map(d=>d.channelId)),n.push(...A(o,{...a,onContentDecodeError:e.onContentDecodeError,onReaction:e.onReaction},e.decryptDeps).sessions);}return n}async function Ja(e){let n=qa(e.channelBatchSize),t=e.messageCount??On,r=za(e.maxPagesPerBatch),o=new Map;for(let a of Ar(e.pulls,n)){let s=a.map(f=>({...f})),d=new Map(s.map(f=>[f.channelId,new Set([f.baseIndex])])),i=0;for(;s.length>0;){if(i>=r)throw new Error(`channel offline \u5206\u9875\u8D85\u8FC7 maxPagesPerBatch=${r}`);i+=1;let f=y({userId:e.userId,clientType:e.clientType,pulls:s.map(p=>({channelId:p.channelId,baseIndex:p.baseIndex,direction:0,count:t,contain:0}))}),g=await e.http.postProtobuf({path:"/channel/v1/offlineMessages",body:f});await Sr(e,s.map(p=>p.channelId));let b=B(g,{selfId:e.userId,keepRaw:true,expectedChannelIds:s.map(p=>p.channelId),diagnostic:{endpoint:"offlineMessages",surface:"offline-batch",...e.operationId===void 0?{}:{operationId:e.operationId},clientTypeHeader:e.clientType,clientTypeBody:e.clientType},onContentDecodeError:e.onContentDecodeError,onReaction:e.onReaction},e.decryptDeps);for(let p of b.messages)o.has(p.id)||o.set(p.id,p);let h=[];for(let p of s){let S=b.nextBaseIndexes[p.channelId],v=b.messageCounts[p.channelId]??0;if(S===void 0)continue;let E=d.get(p.channelId);if(E.has(S))throw new Error(`channel offline cursor \u5FAA\u73AF\uFF08channelId=${p.channelId}, baseIndex=${S}\uFF09`);v<t||(E.add(S),h.push({channelId:p.channelId,baseIndex:S}));}s=h;}}return [...o.values()].sort(k)}async function Va(e$1){let n=e$1.count??On;if(!Number.isInteger(n)||n<=0)throw new Error("channel latest: count \u5FC5\u987B\u4E3A\u6B63\u6574\u6570");e$1.decryptDeps!==void 0&&e$1.prepareKey!==void 0&&await e$1.prepareKey(e$1.channelId);let t=y({userId:e$1.userId,clientType:e$1.clientType,pulls:[{channelId:e$1.channelId,baseIndex:"",direction:1,count:n,contain:0}]}),r=await e$1.http.postProtobuf({path:"/channel/v1/offlineMessages",body:t}),o=B(r,{selfId:e$1.userId,keepRaw:true,expectedChannelIds:[e$1.channelId],diagnostic:{endpoint:"offlineMessages",surface:"history-page",...e$1.operationId===void 0?{}:{operationId:e$1.operationId},clientTypeHeader:e$1.clientType,clientTypeBody:e$1.clientType},onContentDecodeError:e$1.onContentDecodeError,onReaction:e$1.onReaction},e$1.decryptDeps),a=e.decode(r),s=o.batchSize===n,d=a.lsMessage[0]?.sIndex;if(s&&(typeof d!="string"||d.trim()===""))throw new Error(`channel latest: \u6EE1\u9875\u7F3A\u5C11\u5411\u65E7 cursor\uFF08channelId=${e$1.channelId}\uFF09`);return {messages:o.messages,hasOlder:s,...s?{nextCursor:d}:{}}}async function ja(e){let n=e.count??On;e.decryptDeps!==void 0&&e.prepareKey!==void 0&&await e.prepareKey(e.channelId);let t=z$1({userId:e.userId,clientType:e.clientType,channelId:e.channelId,baseIndex:e.baseIndex,count:n,contain:e.contain??0}),r=await e.http.postProtobuf({path:"/channel/v1/offlineMessages",body:t});return C(r,{selfId:e.userId,channelId:e.channelId,requestedBaseIndex:e.baseIndex,requestedCount:n,keepRaw:true,diagnostic:{endpoint:"history",surface:"history-page",...e.operationId===void 0?{}:{operationId:e.operationId},clientTypeHeader:e.clientType,clientTypeBody:e.clientType},onContentDecodeError:e.onContentDecodeError,onReaction:e.onReaction},e.decryptDeps)}async function Sr(e,n){if(e.decryptDeps===void 0||e.prepareKeys===void 0)return;let t=[...new Set(n.filter(Boolean))];t.length>0&&await e.prepareKeys(t);}function qa(e){if(e===void 0)return _r;if(!Number.isInteger(e)||e<=0)throw new Error("channel offline: channelBatchSize \u5FC5\u987B\u4E3A\u6B63\u6574\u6570");return Math.min(e,_r)}function za(e){if(e===void 0)return $a;if(!Number.isInteger(e)||e<=0)throw new Error("channel offline: maxPagesPerBatch \u5FC5\u987B\u4E3A\u6B63\u6574\u6570");return e}function Ar(e,n){let t=[];for(let r=0;r<e.length;r+=n)t.push(e.slice(r,r+n));return t}async function vr(e,n){let t=O$1({userId:n.userId,clientType:n.clientType,limit:n.limit,deliveredMsgInfos:n.deliveredMsgInfos}),r=await n.http.postProtobuf({path:e,body:t});return P(r,{selfId:n.userId,keepRaw:true,onReaction:n.onReaction},n.decryptDeps)}function Mr(e){return vr("/offline/v1/chat",e)}function xr(e){return vr("/offline/v1/owner_chat",e)}function Wa(e){return Mr(e).then(n=>n.messages)}function Ya(e){return xr(e).then(n=>n.messages)}async function Qa(e){let n=M({userId:e.userId,clientType:e.clientType,limit:e.limit??100,msgId:String(Date.now()),deliveredMsgIds:e.deliveredMsgIds}),t=await e.http.postProtobuf({path:"/offline/v1/signal",body:n});return N$1(t)}function Er(e){return [...new Set(e.filter(n=>n!==void 0&&n!==""))]}async function Xa(e){let n=E({userId:e.userId,clientType:e.clientType,limit:e.limit,deliveredMsgIds:e.deliveredMsgInfos?.map(r=>r.msgId)}),t=await e.http.postProtobuf({path:"/offline/v1/group",body:n});if(e.prepareKeys!==void 0&&e.decryptDeps!==void 0){let r=G$1(t,{selfId:e.userId}),o=Er(r.messages.map(a=>a.conversationId));o.length>0&&await e.prepareKeys(o);}return G$1(t,{selfId:e.userId,keepRaw:true,onReaction:e.onReaction},e.decryptDeps)}async function Za(e){let n=F$1({userId:e.userId,clientType:e.clientType,size:e.size}),t=await e.http.postProtobuf({path:"/offline/v1/group/session",body:n});if(e.prepareKeys!==void 0&&e.decryptDeps!==void 0){let r=H$1(t,{selfId:e.userId}),o=Er([...r.unreads.map(a=>a.groupId),...r.messages.map(a=>a.conversationId)]);o.length>0&&await e.prepareKeys(o);}return H$1(t,{selfId:e.userId,keepRaw:true,onReaction:e.onReaction},e.decryptDeps)}async function es(e){e.prepareKeys!==void 0&&e.decryptDeps!==void 0&&e.groupId!==""&&await e.prepareKeys([e.groupId]);let n=I({userId:e.userId,groupId:e.groupId,baseTime:e.baseTime,direct:e.direct,limit:e.limit,clientType:e.clientType}),t=await e.http.postProtobuf({path:"/offline/v1/group/history_msg",body:n});return J(t,{selfId:e.userId,keepRaw:true,source:"history",onReaction:e.onReaction},e.decryptDeps)}var ns={direct:"/friend/undisturb/set",group:"/user_group/user/edit",channel:"/user_radio/user/setting"},ts={direct:"friend_user_id",group:"group_id",channel:"radio_id"};async function rs(e){let n=ns[e.conversationType],t=ts[e.conversationType];if(n===void 0||t===void 0)throw new Error(`\u514D\u6253\u6270\u672A\u652F\u6301\u4F1A\u8BDD\u7C7B\u578B\uFF1A${e.conversationType}`);let{code:r}=await x(e.client,n,{[t]:e.targetId,is_undisturb:e.muted?"1":"0"},{method:"POST"});if(r!==200)throw new Error(`\u514D\u6253\u6270\u8BBE\u7F6E\u5931\u8D25\uFF1Acode=${r}\uFF08${e.conversationType} ${e.targetId}\uFF09`)}async function os(e){let n={friend_user_id:e.userId};e.name!==void 0&&(n.nick_name=e.name),e.email!==void 0&&(n.ext_email=JSON.stringify(e.email)),e.phones!==void 0&&(n.ext_mobile=JSON.stringify(e.phones.map(r=>({country_code:r.countryCode,mobile:r.mobile}))));let{code:t}=await x(e.client,"/friend/remarks/update",n,{method:"POST"});if(t!==200)throw new Error(`\u8BBE\u7F6E\u597D\u53CB\u5907\u6CE8\u5931\u8D25\uFF1Acode=${t}\uFF08userId=${e.userId}\uFF09`)}async function is(e){let{code:n}=await x(e.client,"/user_group/user/edit",{group_id:e.groupId,nick_name:e.nickname},{method:"POST"});if(n!==200)throw new Error(`\u4FEE\u6539\u7FA4\u5185\u6635\u79F0\u5931\u8D25\uFF1Acode=${n}\uFF08groupId=${e.groupId}\uFF09`)}async function as(e){Se(e.groupId);let n=await x(e.client,"/api/v1/board/board_msg_top_cancel",{group_id:e.groupId,group_type:2},{method:"POST",prefix:"",responseMode:"strict"});if(!n.ok)return n;if(n.data!==null)throw new Error("board unpin \u54CD\u5E94\u7ED3\u6784\u975E\u6CD5\uFF1A\u6210\u529F data \u5FC5\u987B\u4E3A\u7A7A");return {...n,data:null}}async function ss(e){Ae(e.channelId);let n=await x(e.client,"/api/v1/board/board_msg_top_cancel",{group_id:e.channelId,group_type:1},{method:"POST",prefix:"",responseMode:"strict"});if(!n.ok)return n;if(n.data!==null)throw new Error("channel board unpin \u54CD\u5E94\u7ED3\u6784\u975E\u6CD5\uFF1A\u6210\u529F data \u5FC5\u987B\u4E3A\u7A7A");return {...n,data:null}}async function cs(e){let n={group_id:e.groupId};e.name!==void 0&&(n.name=e.name),e.avatarUrl!==void 0&&(n.head_img_url=e.avatarUrl);let{code:t}=await x(e.client,"/user_group/edit",n,{method:"POST"});if(t!==200)throw new Error(`\u4FEE\u6539\u7FA4\u8D44\u6599\u5931\u8D25\uFF1Acode=${t}\uFF08groupId=${e.groupId}\uFF09`)}function ds(){let e=typeof navigator>"u"?void 0:navigator,n=e?.hardwareConcurrency??4;return (e?.deviceMemory??4)<=2?2:Math.min(4,Math.max(2,Math.floor(n/4)))}function us(e){let n={active:0,disposed:false},t=[];function r(){for(;!n.disposed&&n.active<e&&t.length>0;){let o=t.shift();if(o.signal?.aborted){o.reject(new DOMException("\u5A92\u4F53\u9884\u89C8\u51C6\u5907\u5DF2\u53D6\u6D88","AbortError"));continue}o.onAbort!==void 0&&o.signal?.removeEventListener("abort",o.onAbort),n.active+=1;let a=false;o.resolve(()=>{a||(a=true,n.active-=1,r());});}}return {acquire(o){return n.disposed?Promise.reject(new Error("\u5A92\u4F53\u9884\u89C8\u6267\u884C\u5668\u5DF2\u91CA\u653E")):new Promise((a,s)=>{let d={resolve:a,reject:s,...o===void 0?{}:{signal:o}};o!==void 0&&(d.onAbort=()=>{let i=t.indexOf(d);i>=0&&t.splice(i,1),s(new DOMException("\u5A92\u4F53\u9884\u89C8\u51C6\u5907\u5DF2\u53D6\u6D88","AbortError"));},o.addEventListener("abort",d.onAbort,{once:true})),t.push(d),r();})},dispose(){n.disposed=true;for(let o of t.splice(0))o.onAbort!==void 0&&o.signal?.removeEventListener("abort",o.onAbort),o.reject(new Error("\u5A92\u4F53\u9884\u89C8\u6267\u884C\u5668\u5DF2\u91CA\u653E"));}}}function tn(e){if(e?.aborted)throw new DOMException("\u5A92\u4F53\u9884\u89C8\u51C6\u5907\u5DF2\u53D6\u6D88","AbortError")}function kr(e,n,t){let r=Math.min(1,t/Math.max(e,n));return {width:Math.max(1,Math.round(e*r)),height:Math.max(1,Math.round(n*r))}}async function Tr(e,n,t,r,o){tn(o);let a=document.createElement("canvas");a.width=n,a.height=t;let s=a.getContext("2d");if(s===null)throw new Error("\u5A92\u4F53\u9884\u89C8\u51C6\u5907\u5931\u8D25\uFF1A\u65E0\u6CD5\u521B\u5EFA Canvas 2D \u4E0A\u4E0B\u6587");s.drawImage(e,0,0,n,t);let d=await new Promise(i=>a.toBlob(i,"image/jpeg",r));if(tn(o),d===null)throw new Error("\u5A92\u4F53\u9884\u89C8\u51C6\u5907\u5931\u8D25\uFF1ACanvas \u7F16\u7801\u8FD4\u56DE\u7A7A\u7ED3\u679C");return await d.arrayBuffer()}function Bn(e,n){if(!Number.isInteger(e)||e<=0)throw new RangeError(`${n}\u5FC5\u987B\u662F\u6B63\u6574\u6570`)}function Rr(e,n){if(!Number.isFinite(e)||e<=0||e>1)throw new RangeError(`${n}\u5FC5\u987B\u5927\u4E8E 0 \u4E14\u4E0D\u8D85\u8FC7 1`)}async function Nn(e,n,t,r,o){let a=r.kind==="video",s=a?"\u89C6\u9891\u5C01\u9762":"\u56FE\u7247\u7F29\u7565\u56FE",d=r.maxSize??320,i=r.targetBytes??(a?10240:12288),f=r.maxBytes??(a?16384:20480),g=r.quality??(a?.84:.9),b=r.minQuality??(a?.68:.72);if(Bn(d,`${s}\u6700\u5927\u8FB9\u957F`),Bn(i,`${s}\u76EE\u6807\u5B57\u8282\u6570`),Bn(f,`${s}\u6700\u5927\u5B57\u8282\u6570`),Rr(g,`${s}\u521D\u59CB\u8D28\u91CF`),Rr(b,`${s}\u6700\u4F4E\u8D28\u91CF`),i>f)throw new RangeError(`${s}\u76EE\u6807\u5B57\u8282\u6570\u4E0D\u80FD\u8D85\u8FC7\u6700\u5927\u5B57\u8282\u6570`);if(b>g)throw new RangeError(`${s}\u6700\u4F4E\u8D28\u91CF\u4E0D\u80FD\u9AD8\u4E8E\u521D\u59CB\u8D28\u91CF`);let h=kr(n,t,d),p=Math.min(200,Math.max(h.width,h.height)),S,v=[...new Set([g,Math.max(b,g-.12),b])];for(let c of v){let u=await Tr(e,h.width,h.height,c,o);if((S===void 0||u.byteLength<S.byteLength)&&(S=u),u.byteLength<=i)return u}let E=Math.max(h.width,h.height);if(E>p&&S!==void 0){let c=Math.sqrt(i/S.byteLength),u=Math.max(p,Math.floor(E*Math.min(.9,Math.max(.5,c))));h=kr(n,t,u);for(let y of [g,b]){let m=await Tr(e,h.width,h.height,y,o);if(m.byteLength<S.byteLength&&(S=m),m.byteLength<=i)return m}}if(S!==void 0&&S.byteLength<=f)return S;throw new Error(`${s}\u751F\u6210\u5931\u8D25\uFF1A\u7F16\u7801\u7ED3\u679C\u8D85\u8FC7 ${f} \u5B57\u8282\u786C\u4E0A\u9650`)}function Dr(e,n,t){return new Promise((r,o)=>{let a,s,d,i,f=()=>{a!==void 0&&clearTimeout(a),e.removeEventListener(n,s),e.removeEventListener("error",d),t?.removeEventListener("abort",i);};s=()=>{f(),r();},d=()=>{f(),o(new Error(`\u89C6\u9891\u9884\u89C8\u51C6\u5907\u5931\u8D25\uFF1A${n} \u524D\u89E3\u7801\u9519\u8BEF`));},i=()=>{f(),o(new DOMException("\u5A92\u4F53\u9884\u89C8\u51C6\u5907\u5DF2\u53D6\u6D88","AbortError"));},a=setTimeout(()=>{f(),o(new Error(`\u89C6\u9891\u9884\u89C8\u51C6\u5907\u5931\u8D25\uFF1A${n} \u8D85\u65F6`));},15e3),e.addEventListener(n,s,{once:true}),e.addEventListener("error",d,{once:true}),t?.addEventListener("abort",i,{once:true});})}async function ls(e,n){tn(n);let t;try{t=await createImageBitmap(e.file);}catch(a){if(n?.aborted)throw a}if(t!==void 0)try{if(tn(n),e.includePoster===!1)return {width:t.width,height:t.height};let a=e.maxBytes??20480;return e.file.type==="image/jpeg"&&e.file.size<=a&&Math.max(t.width,t.height)<=(e.maxSize??320)?{width:t.width,height:t.height,posterData:await e.file.arrayBuffer()}:{width:t.width,height:t.height,posterData:await Nn(t,t.width,t.height,e,n)}}finally{t.close();}let r=URL.createObjectURL(e.file),o=new Image;try{if(await new Promise((s,d)=>{let i,f,g=()=>{i!==void 0&&clearTimeout(i),o.onload=null,o.onerror=null,n?.removeEventListener("abort",f);};f=()=>{g(),d(new DOMException("\u5A92\u4F53\u9884\u89C8\u51C6\u5907\u5DF2\u53D6\u6D88","AbortError"));},o.onload=()=>{g(),s();},o.onerror=()=>{g(),d(new Error("\u56FE\u7247\u9884\u89C8\u51C6\u5907\u5931\u8D25\uFF1AImage \u89E3\u7801\u9519\u8BEF"));},i=setTimeout(()=>{g(),d(new Error("\u56FE\u7247\u9884\u89C8\u51C6\u5907\u5931\u8D25\uFF1AImage \u89E3\u7801\u8D85\u65F6"));},15e3),n?.addEventListener("abort",f,{once:!0}),o.src=r;}),e.includePoster===!1)return {width:o.naturalWidth,height:o.naturalHeight};let a=e.maxBytes??20480;return e.file.type==="image/jpeg"&&e.file.size<=a&&Math.max(o.naturalWidth,o.naturalHeight)<=(e.maxSize??320)?{width:o.naturalWidth,height:o.naturalHeight,posterData:await e.file.arrayBuffer()}:{width:o.naturalWidth,height:o.naturalHeight,posterData:await Nn(o,o.naturalWidth,o.naturalHeight,e,n)}}finally{o.removeAttribute("src"),URL.revokeObjectURL(r);}}async function ps(e,n){let t=URL.createObjectURL(e.file),r=document.createElement("video");r.muted=true,r.preload="metadata",r.playsInline=true;try{r.src=t,r.load(),await Dr(r,"loadeddata",n);let o=r.videoWidth,a=r.videoHeight;if(o<=0||a<=0)throw new Error("\u89C6\u9891\u9884\u89C8\u51C6\u5907\u5931\u8D25\uFF1A\u89C6\u9891\u5C3A\u5BF8\u65E0\u6548");let s=Number.isFinite(r.duration)&&r.duration>0?r.duration:void 0,d=e.atTime===void 0?s===void 0?0:Math.min(1,s/2):Math.max(0,Math.min(e.atTime,s??e.atTime));d>0&&(r.currentTime=d,await Dr(r,"seeked",n));let i=s===void 0?void 0:s,f;try{f=await Nn(r,o,a,e,n);}catch(g){if(n?.aborted||g instanceof RangeError)throw g}return {width:o,height:a,...i===void 0?{}:{duration:i},...f===void 0?{}:{posterData:f}}}finally{r.pause(),r.removeAttribute("src"),r.load(),URL.revokeObjectURL(t);}}function Gn(e={}){let n=e.maxConcurrency??ds();if(!Number.isInteger(n)||n<1||n>4)throw new RangeError("\u5A92\u4F53\u9884\u89C8\u5E76\u53D1\u6570\u5FC5\u987B\u662F 1-4 \u7684\u6574\u6570");let t=us(n),r=false;return {async prepare(o,a){if(r)throw new Error("\u5A92\u4F53\u9884\u89C8\u6267\u884C\u5668\u5DF2\u91CA\u653E");let s=await t.acquire(a);try{return o.kind==="video"?await ps(o,a):await ls(o,a)}finally{s();}},dispose(){r||(r=true,t.dispose());}}}var Ur="image/jpeg";function Kn(e,n){return new Blob([e],n===void 0||n===""?{}:{type:n})}function fs(){let e=Gn(),n=0;return {async imageDimensions(t,r){let o=await e.prepare({operationId:`core-image-dimensions-${++n}`,generation:0,kind:"image",file:Kn(t,r),includePoster:false});return {width:o.width,height:o.height}},async imageThumbnail(t,r){let o=await e.prepare({operationId:`core-image-thumbnail-${++n}`,generation:0,kind:"image",file:Kn(t,r?.mimeType),...r?.maxSize===void 0?{}:{maxSize:r.maxSize},...r?.targetBytes===void 0?{}:{targetBytes:r.targetBytes},...r?.maxBytes===void 0?{}:{maxBytes:r.maxBytes},...r?.quality===void 0?{}:{quality:r.quality},...r?.minQuality===void 0?{}:{minQuality:r.minQuality}});if(o.posterData===void 0)throw new Error("\u56FE\u7247\u7F29\u7565\u56FE\u751F\u6210\u5931\u8D25\uFF1A\u6267\u884C\u5668\u672A\u8FD4\u56DE poster");return {data:new Uint8Array(o.posterData),width:o.width,height:o.height,mimeType:Ur}},async videoPoster(t,r){let o=await e.prepare({operationId:`core-video-poster-${++n}`,generation:0,kind:"video",file:Kn(t,r?.mimeType),...r?.maxSize===void 0?{}:{maxSize:r.maxSize},...r?.targetBytes===void 0?{}:{targetBytes:r.targetBytes},...r?.maxBytes===void 0?{}:{maxBytes:r.maxBytes},...r?.quality===void 0?{}:{quality:r.quality},...r?.minQuality===void 0?{}:{minQuality:r.minQuality},...r?.atTime===void 0?{}:{atTime:r.atTime}});if(o.posterData===void 0)throw new Error("\u89C6\u9891\u5C01\u9762\u751F\u6210\u5931\u8D25\uFF1A\u6267\u884C\u5668\u672A\u8FD4\u56DE poster");return {data:new Uint8Array(o.posterData),width:o.width,height:o.height,duration:Math.round(o.duration??0),mimeType:Ur}}}}var Le;function ms(){if(Le!==void 0)return Le;let n=Promise.all([import('@aws-sdk/client-s3'),import('@aws-sdk/credential-provider-cognito-identity'),import('@aws-sdk/lib-storage'),import('@aws-sdk/xhr-http-handler')]).then(([t,r,o,a])=>({S3Client:t.S3Client,fromCognitoIdentityPool:r.fromCognitoIdentityPool,Upload:o.Upload,XhrHttpHandler:a.XhrHttpHandler})).catch(t=>{throw Le===n&&(Le=void 0),t});return Le=n,n}function gs(e){if(e===void 0)return "";let n=e.lastIndexOf(".");return n>=0?e.slice(n):""}function hs(e){return globalThis.crypto.randomUUID()+gs(e)}function ys(e){let n=e.identityPoolId.split(":")[0]??"",t;function r(i){return t??=i.fromCognitoIdentityPool({identityPoolId:e.identityPoolId,clientConfig:{region:n}}),new i.S3Client({region:n,credentials:t,useAccelerateEndpoint:e.useAccelerateEndpoint??true,requestHandler:new i.XhrHttpHandler({})})}async function o(i,f,g){if(f===void 0||f.bucket===""||f.host==="")throw new Error(`media upload: kind=${g} \u7684 bucket/host \u672A\u914D\u7F6E\uFF08\u5BBF\u4E3B IM \u5BF9\u8C61\u5B58\u50A8\u914D\u7F6E\u7F3A\u8BE5\u8D44\u6E90\u7C7B\u578B\uFF09`);let b=await ms(),h=hs(i.filename),p=r(b),S=new b.Upload({client:p,params:{Bucket:f.bucket,Key:h,Body:i.data,ACL:"public-read",...i.mimeType!==void 0&&i.mimeType!==""?{ContentType:i.mimeType}:{}},partSize:Math.max(5242880,i.data.byteLength)});i.onProgress!==void 0&&S.on("httpUploadProgress",E=>{let c=E.total??i.data.byteLength,u=E.loaded??0,y=c>0?Math.min(99,Math.round(u/c*100)):0;i.onProgress?.({percent:y,bytesTransferred:u,bytesTotal:c,phase:c>0&&u>=c?"finalizing":"transferring"});});let v=()=>{S.abort();};i.signal?.aborted?await S.abort():i.signal?.addEventListener("abort",v,{once:true});try{await S.done();}finally{i.signal?.removeEventListener("abort",v),p.destroy();}return i.onProgress?.({percent:100,bytesTransferred:i.data.byteLength,bytesTotal:i.data.byteLength,phase:"finalizing"}),{url:`${f.host}/${h}`}}function a(i){return o(i,e.buckets[i.kind],i.kind)}function s(i){return o(i,e.avatar,"avatar")}async function d(i){if(i.onProgress!==void 0&&typeof XMLHttpRequest<"u")return Cs(i);let f=await fetch(i.url,i.signal!==void 0?{signal:i.signal}:{});if(!f.ok)throw new Error(`media download \u5931\u8D25\uFF1AHTTP ${f.status} ${i.url}`);return i.onProgress===void 0||f.body===null?new Uint8Array(await f.arrayBuffer()):bs(f,i.onProgress,i.expectedBytes)}return {upload:a,uploadAvatar:s,download:d}}function Cs(e){return new Promise((n,t)=>{let r=new XMLHttpRequest,o=false,a=()=>{},s=()=>{e.signal?.removeEventListener("abort",a),r.onprogress=null,r.onload=null,r.onerror=null,r.onabort=null;},d=i=>{o||(o=true,s(),i());};if(a=()=>{r.abort(),d(()=>t(new DOMException("media download canceled","AbortError")));},r.open("GET",e.url,true),r.responseType="arraybuffer",r.onprogress=i=>{let f=e.expectedBytes!==void 0&&Number.isFinite(e.expectedBytes)&&e.expectedBytes>0?Math.floor(e.expectedBytes):0,g=i.lengthComputable&&i.total>0?i.total:f,b=g>0?Math.min(99,Math.round(i.loaded/g*100)):0;e.onProgress?.({percent:b,bytesTransferred:i.loaded,bytesTotal:g});},r.onload=()=>{if(r.status<200||r.status>=300){d(()=>t(new Error(`media download \u5931\u8D25\uFF1AHTTP ${r.status} ${e.url}`)));return}let i=r.response;if(!(i instanceof ArrayBuffer)){d(()=>t(new Error("media download \u5931\u8D25\uFF1AXHR \u672A\u8FD4\u56DE ArrayBuffer")));return}d(()=>n(new Uint8Array(i)));},r.onerror=()=>d(()=>t(new Error(`media download \u5931\u8D25\uFF1Anetwork ${e.url}`))),r.onabort=()=>d(()=>t(new DOMException("media download canceled","AbortError"))),e.signal?.aborted){a();return}e.signal?.addEventListener("abort",a,{once:true}),r.send();})}async function bs(e,n,t){let r=Number(e.headers.get("content-length")??0),o=t!==void 0&&Number.isFinite(t)&&t>0?Math.floor(t):0,a=r>0?r:o,s=e.body.getReader(),d=[],i=0;for(;;){let{done:b,value:h}=await s.read();if(b)break;d.push(h),i+=h.byteLength;let p=a>0?Math.min(99,Math.round(i/a*100)):0;n({percent:p,bytesTransferred:i,bytesTotal:a});}let f=new Uint8Array(i),g=0;for(let b of d)f.set(b,g),g+=b.byteLength;return f}function Ps(){let e=globalThis;return typeof e.addEventListener=="function"&&typeof e.removeEventListener=="function"?e:void 0}function ws(e,n={}){let t=n.target!==void 0?n.target:Ps(),r=n.visibilitySource!==void 0?n.visibilitySource:globalThis.document,o=n.pageLifecycleSource!==void 0?n.pageLifecycleSource:t,a=false,s=()=>e.onOnline?.(),d=()=>e.onOffline?.(),i=()=>{r!=null&&r.visibilityState==="visible"&&e.onVisible?.();},f=()=>e.onPageHide?.(),g=()=>e.onPageShow?.();return {start(){a||(a=true,t!=null&&(t.addEventListener("online",s),t.addEventListener("offline",d)),r?.addEventListener("visibilitychange",i),o!=null&&(o.addEventListener("pagehide",f),o.addEventListener("pageshow",g)));},stop(){a&&(a=false,t!=null&&(t.removeEventListener("online",s),t.removeEventListener("offline",d)),r?.removeEventListener("visibilitychange",i),o!=null&&(o.removeEventListener("pagehide",f),o.removeEventListener("pageshow",g)));},get running(){return a}}}var Ss=12,As=2*1024*1024*1024,Or=1024*1024*1024,vs=512*1024*1024,Ms=256*1024*1024,xs=64*1024,Ln="channel:list-version",Br="schema:conversation-key-v1",Hn="default",ge="\uFFFF";function Nr(e){if(!(e===void 0||!/^\d+$/.test(e)))return e.replace(/^0+(?=\d)/,"")}function Es(e,n){let t=Nr(e),r=Nr(n);return t===void 0?r===void 0?0:-1:r===void 0?1:t.length!==r.length?t.length>r.length?1:-1:t===r?0:t>r?1:-1}function He(e){return `conversation:${oa$1(e)}`}function $n(e,n){return `${oa$1(e)}\0${n}`}function ks(e){let n=oa$1(e.conversation);return {...e,key:$n(e.conversation,e.messageId),conversationKey:n,conversation:{...e.conversation},sContent:e.sContent.slice()}}function Ts(e){let{key:n,conversationKey:t,...r}=e;return {...r,conversation:{...r.conversation},sContent:r.sContent.slice()}}function Lr(e){return {...e,conversationKey:oa$1(la$1(e))}}function he(e){let{conversationKey:n,...t}=e;return t}function rn(e){return {...e,id:oa$1(ma$1(e)),conversationId:e.id}}function Fn(e){if(e.conversationId===void 0)return e;let{conversationId:n,...t}=e;return {...t,id:n}}function Jn(e){return e.conversationType===void 0?e:{...e,conversationId:oa$1(e),storageConversationId:e.conversationId}}function Gr(e){if(e.storageConversationId===void 0)return e;let{storageConversationId:n,...t}=e;return {...t,conversationId:n}}function Hr(e){return {...e,conversationId:oa$1(na$1(e)),storageConversationId:e.conversationId}}function Vn(e){if(e.storageConversationId===void 0)return e;let{storageConversationId:n,...t}=e;return {...t,conversationId:n}}function Rs(e){return {...e,conversationKey:oa$1(e.ref)}}function Ds(e){let{conversationKey:n,...t}=e;return t}function Us(e){return typeof e=="string"?e:e.conversationId}function $e(e,n){if(new Set(n.map(t=>t.conversationType)).size>1)throw new Error(`\u88F8 conversationId \u5B58\u5728\u591A\u7C7B\u578B\u6B67\u4E49\uFF1A${e}`)}async function Os(e){let n=e.transaction(["messages","sessions","readStates","pinnedMessages","meta"],"readwrite");try{let t=n.objectStore("meta");if((await t.get(Br))?.value===!0){await n.done;return}let r=n.objectStore("messages");for(let i of await r.getAll())i.conversationKey===void 0&&await r.put(Lr(i));let o=n.objectStore("sessions"),a=new Map;for(let i of await o.getAll()){if(i.conversationId!==void 0)continue;let f=Fn(i);a.set(f.id,f.type),await o.put(rn(f)),await o.delete(i.id);}let s=n.objectStore("readStates");for(let i of await s.getAll()){if(i.storageConversationId!==void 0)continue;let f=i.conversationType??a.get(i.conversationId);if(f===void 0)continue;let g={...i,conversationType:f};await s.put(Jn(g)),await s.delete(i.conversationId);}let d=n.objectStore("pinnedMessages");for(let i of await d.getAll()){if(i.storageConversationId!==void 0)continue;let f=Vn(i);await d.put(Hr(f)),await d.delete(i.conversationId);}await t.put({key:Br,value:!0}),await n.done;}catch(t){try{n.abort();}catch{}try{await n.done;}catch{}throw t}}function Kr(e){return `${e.kind}:${encodeURIComponent(e.messageId)}:${e.resourceVersion}`}async function Bs(e,n){let t=n.namespaceFactory.forAccount(e).name("durable","storage","indexed-db");typeof indexedDB>"u"||await deleteDB(t);}function Ns(e){let{namespaceFactory:n}=e,t=null,r=null,o=0,a=Promise.resolve(),s=0,d=e.mediaAssetCache?.maxPendingWriteBytes??Ms;if(!Number.isSafeInteger(d)||d<=0)throw new RangeError("\u5A92\u4F53\u8D44\u4EA7\u7F13\u5B58\u5F85\u5199\u5185\u5B58\u9884\u7B97\u5FC5\u987B\u662F\u6B63\u6574\u6570");function i(){if(t===null)throw new Error("ImStoragePort \u672A open\uFF1A\u8BF7\u5148 open({ namespace }) \u518D\u8BFB\u5199");return t}async function f(c){if(typeof c!="string")return;let u=IDBKeyRange.bound([c,""],[c,ge]),y=(await i().transaction("messages").store.index("by_conv_sort").getAll(u)).map(he);$e(c,y);}function g(c){let u=a.then(c,c);return a=u.then(()=>{},()=>{}),u}function b(c,u){if(c!==o||u===null||u!==r)throw new Error("\u5A92\u4F53\u8D44\u4EA7\u7F13\u5B58\u8D26\u53F7\u4EE3\u9645\u5DF2\u5931\u6548")}function h(){return Math.max(0,Math.floor(e.mediaAssetCache?.now?.()??Date.now()))}async function p(c){let u=e.mediaAssetCache?.estimateStorage??(async()=>typeof navigator>"u"||navigator.storage?.estimate===void 0?{}:await navigator.storage.estimate());try{let{quota:y,usage:m}=await u();if(y===void 0||!Number.isFinite(y)||y<=0)return Or;let P=c.reduce((w,l)=>w+l.byteLength,0),k=Math.max(0,(m??0)-P),D=Math.max(vs,Math.floor(y*.2));return Math.max(0,Math.min(As,Math.floor(y-k-D)))}catch{return Or}}async function S$1(c,u,y){if(c.length===0)return;b(u,y);let m=i().transaction(["mediaAssets","mediaAssetMeta"],"readwrite");await Promise.all(c.flatMap(P=>[m.objectStore("mediaAssets").delete(P),m.objectStore("mediaAssetMeta").delete(P)])),await m.done;}async function v(c,u,y,m){b(c,u);let P=i(),k=e.mediaAssetCache?.strategies;if(k===void 0)return;let D=m??await P.getAll("mediaAssetMeta");b(c,u);let w=new Set;for(let I of k.list()){let A=D.filter(T=>T.kind===I.kind).sort((T,U)=>T.lastAccessedAt-U.lastAccessedAt),M=A.reduce((T,U)=>T+U.byteLength,0),R=A.length;for(let T of A){if(M<=I.softMaxBytes&&R<=I.maxEntries)break;w.add(T.key),M-=T.byteLength,R-=1;}}let l=D.filter(I=>!w.has(I.key)).sort((I,A)=>I.lastAccessedAt-A.lastAccessedAt),_=Math.max(0,Math.min(await p(D),y??Number.POSITIVE_INFINITY)),C=l.reduce((I,A)=>I+A.byteLength,0);for(let I of l){if(C<=_)break;w.add(I.key),C-=I.byteLength;}await S$1([...w],c,u);}async function E(c,u,y){b(u,y);let m=e.mediaAssetCache?.strategies.resolve(c.kind);if(m===void 0)return "skipped";let P=c.bytes,k=await i().getAll("mediaAssetMeta"),D=await p(k);if(b(u,y),P.byteLength===0||P.byteLength>m.maxEntryBytes||D<=0||P.byteLength>Math.floor(D/2))return "skipped";let w=Kr(c),l=h(),_=k.find(R=>R.key===w),C={key:w,kind:c.kind,messageId:c.messageId,resourceVersion:c.resourceVersion,byteLength:P.byteLength,...c.mimeType===void 0?{}:{mimeType:c.mimeType},createdAt:_?.createdAt??l,lastAccessedAt:l},I=async()=>{b(u,y);let R=i().transaction(["mediaAssets","mediaAssetMeta"],"readwrite");await Promise.all([R.objectStore("mediaAssets").put({key:w,bytes:P}),R.objectStore("mediaAssetMeta").put(C)]),await R.done;},A=false;try{await I();}catch(R){if(!(R instanceof DOMException)||R.name!=="QuotaExceededError")throw R;A=true,await v(u,y,Math.max(0,D-P.byteLength)),await I();}let M=_===void 0?[...k,C]:k.map(R=>R.key===w?C:R);return await v(u,y,void 0,A?void 0:M),b(u,y),await i().get("mediaAssets",w)===void 0?"skipped":"stored"}return {async open({namespace:c}){if(t!==null&&r===c)return;t!==null&&(t.close(),t=null),r=c;let u=++o,y=n.forAccount(c).name("durable","storage","indexed-db"),m=await openDB(y,Ss,{upgrade(P,k,D,w){if(P.objectStoreNames.contains("messages"))w.objectStore("messages").indexNames.contains("by_conversation_key_sort")||w.objectStore("messages").createIndex("by_conversation_key_sort",["conversationKey","sortKey"]);else {let l=P.createObjectStore("messages",{keyPath:"id"});l.createIndex("by_conv_sort",["conversationId","sortKey"]),l.createIndex("by_conversation_key_sort",["conversationKey","sortKey"]);}if(P.objectStoreNames.contains("sessions")||P.createObjectStore("sessions",{keyPath:"id"}),P.objectStoreNames.contains("readStates")||P.createObjectStore("readStates",{keyPath:"conversationId"}),P.objectStoreNames.contains("drafts")||P.createObjectStore("drafts",{keyPath:"conversationKey"}),P.objectStoreNames.contains("outbox")||P.createObjectStore("outbox",{keyPath:"id"}),P.objectStoreNames.contains("meta")||P.createObjectStore("meta",{keyPath:"key"}),P.objectStoreNames.contains("userProfiles")||P.createObjectStore("userProfiles",{keyPath:"id"}),P.objectStoreNames.contains("groupMembers")||P.createObjectStore("groupMembers",{keyPath:"groupId"}),P.objectStoreNames.contains("groupProfiles")||P.createObjectStore("groupProfiles",{keyPath:"id"}),P.objectStoreNames.contains("pinnedMessages")||P.createObjectStore("pinnedMessages",{keyPath:"conversationId"}),P.objectStoreNames.contains("channelProfiles")||P.createObjectStore("channelProfiles",{keyPath:"id"}),P.objectStoreNames.contains("channelMembers")||P.createObjectStore("channelMembers",{keyPath:["channelId","userId"]}),P.objectStoreNames.contains("channelMemberSnapshots")||P.createObjectStore("channelMemberSnapshots",{keyPath:"channelId"}),P.objectStoreNames.contains("channelMentionCandidateSnapshots")||P.createObjectStore("channelMentionCandidateSnapshots",{keyPath:"channelId"}),P.objectStoreNames.contains("conversationBackgrounds")||P.createObjectStore("conversationBackgrounds",{keyPath:"key"}),P.objectStoreNames.contains("mediaAssets")||P.createObjectStore("mediaAssets",{keyPath:"key"}),!P.objectStoreNames.contains("mediaAssetMeta")){let l=P.createObjectStore("mediaAssetMeta",{keyPath:"key"});l.createIndex("by_kind_access",["kind","lastAccessedAt"]),l.createIndex("by_access","lastAccessedAt");}P.objectStoreNames.contains("decryptRecoveries")||P.createObjectStore("decryptRecoveries",{keyPath:"key"}).createIndex("by_conversation","conversationKey");}});if(u!==o){m.close();return}try{await Os(m);}catch(P){throw m.close(),P}if(u!==o){m.close();return}t=m;},async close(){o+=1,r=null,t!==null&&(t.close(),t=null);},async clearRebuildableCaches(){let c=o,u=r;await g(async()=>{b(c,u);let m=i().transaction(["userProfiles","groupMembers","groupProfiles","channelProfiles","channelMembers","channelMemberSnapshots","channelMentionCandidateSnapshots","mediaAssets","mediaAssetMeta","meta"],"readwrite");await Promise.all([m.objectStore("userProfiles").clear(),m.objectStore("groupMembers").clear(),m.objectStore("groupProfiles").clear(),m.objectStore("channelProfiles").clear(),m.objectStore("channelMembers").clear(),m.objectStore("channelMemberSnapshots").clear(),m.objectStore("channelMentionCandidateSnapshots").clear(),m.objectStore("mediaAssets").clear(),m.objectStore("mediaAssetMeta").clear(),m.objectStore("meta").delete(Ln),m.done]);});},async get(c){let u=o,y=r;return await g(async()=>{if(b(u,y),e.mediaAssetCache?.strategies.resolve(c.kind)===void 0)return null;let m=Kr(c),P=i(),[k,D]=await Promise.all([P.get("mediaAssets",m),P.get("mediaAssetMeta",m)]);return b(u,y),k===void 0||D===void 0?(await S$1([m],u,y),null):(await P.put("mediaAssetMeta",{...D,lastAccessedAt:h()}),{kind:D.kind,messageId:D.messageId,resourceVersion:D.resourceVersion,bytes:k.bytes,...D.mimeType===void 0?{}:{mimeType:D.mimeType}})})},async put(c){let u=o,y=r;b(u,y);let m=c.bytes.byteLength;if(m>d||s+m>d)return "skipped";s+=m;try{return await g(()=>E(c,u,y))}finally{s=Math.max(0,s-m);}},async clear(){let c=o,u=r;await g(async()=>{b(c,u);let y=i().transaction(["mediaAssets","mediaAssetMeta"],"readwrite");await Promise.all([y.objectStore("mediaAssets").clear(),y.objectStore("mediaAssetMeta").clear(),y.done]);});},async getMessage(c,u){let y=await i().get("messages",u);if(y===void 0)return null;let m=he(y);return oa$1(la$1(m))===oa$1(c)?m:null},async getMessages(c,u){let y=typeof c=="string"?"by_conv_sort":"by_conversation_key_sort",m=typeof c=="string"?c:oa$1(c);if(await f(c),u.beforeSortKey===void 0&&u.afterSortKey!==void 0){let w=IDBKeyRange.bound([m,u.afterSortKey],[m,ge]),l=[],_=await i().transaction("messages").store.index(y).openCursor(w,"next");for(;_!==null&&l.length<u.limit;)l.push(_.value),_=await _.continue();return l.map(he)}let P=u.beforeSortKey===void 0?IDBKeyRange.bound([m,""],[m,ge]):IDBKeyRange.bound([m,""],[m,u.beforeSortKey],false,true),k=[],D=await i().transaction("messages").store.index(y).openCursor(P,"prev");for(;D!==null&&k.length<u.limit;)k.push(D.value),D=await D.continue();return k.reverse().map(he)},async saveMessages(c){if(c.length===0)return;let u=i().transaction("messages","readwrite");await Promise.all([...c.map(y=>u.store.put(Lr(y))),u.done]);},async searchMessages(c,u){let y=oa$1(c),m=u.keyword?.trim()??"",P=u.contentTypes;if(m===""&&(P===void 0||P.length===0))return {items:[],exhausted:true};let k=m===""?void 0:await U(m),D=u.beforeSortKey===void 0?IDBKeyRange.bound([y,""],[y,ge]):IDBKeyRange.bound([y,""],[y,u.beforeSortKey],false,true),w=2e3,l=[],_=0,C,I=await i().transaction("messages").store.index("by_conversation_key_sort").openCursor(D,"prev");for(;I!==null&&l.length<u.limit&&_<w;){let M=W$1(he(I.value));_+=1,C=M.sortKey;let R=P===void 0||P.includes(M.contentType),T=k===void 0||k.match(S(M))!==null;R&&T&&l.push(M),I=await I.continue();}let A=I===null;return {items:l,exhausted:A,...A?{}:{nextBeforeSortKey:C}}},async getDecryptRecoveries(c){let u=oa$1(c);return (await i().getAllFromIndex("decryptRecoveries","by_conversation",u)).map(Ts)},async saveDecryptRecovery(c){if(c.sContent.byteLength===0||c.sContent.byteLength>xs)throw new Error(`\u89E3\u5BC6\u6062\u590D\u5BC6\u6587\u5B57\u8282\u957F\u5EA6\u975E\u6CD5\uFF1A${c.sContent.byteLength}`);await i().put("decryptRecoveries",ks(c));},async deleteDecryptRecovery(c,u){await i().delete("decryptRecoveries",$n(c,u));},async deleteConversationDecryptRecoveries(c){let u=oa$1(c),y=i().transaction("decryptRecoveries","readwrite"),m=await y.store.index("by_conversation").openCursor(IDBKeyRange.only(u));for(;m!==null;)await m.delete(),m=await m.continue();await y.done;},async getSessions(){return (await i().getAll("sessions")).map(Fn)},async saveSessions(c){if(c.length===0)return;let u=i().transaction("sessions","readwrite");for(let y of c)await u.store.put(rn(y)),await u.store.delete(y.id);await u.done;},async deleteSession(c){if(typeof c!="string"){let m=i().transaction(["sessions","conversationBackgrounds"],"readwrite");await m.objectStore("sessions").delete(oa$1(c)),await m.objectStore("conversationBackgrounds").delete(He(c)),await m.done;return}let u=(await i().getAll("sessions")).map(Fn).filter(m=>m.id===c);$e(c,u.map(m=>({conversationType:m.type})));let y=i().transaction(["sessions","conversationBackgrounds"],"readwrite");if(u[0]!==void 0){let m=ma$1(u[0]);await y.objectStore("sessions").delete(oa$1(m)),await y.objectStore("conversationBackgrounds").delete(He(m));}await y.objectStore("sessions").delete(c),await y.done;},async deleteReadState(c){if(typeof c!="string"){await i().delete("readStates",oa$1(c));return}let y=(await i().getAll("readStates")).map(Gr).filter(m=>m.conversationId===c).filter(m=>m.conversationType!==void 0);$e(c,y),y[0]!==void 0&&await i().delete("readStates",oa$1(y[0])),await i().delete("readStates",c);},async deleteMessage(c,u,y){let m=i().transaction(["messages","sessions","decryptRecoveries"],"readwrite"),P=await m.objectStore("messages").get(u);if(P!==void 0){let k=he(P);if(k.conversationType!==c.conversationType||k.conversationId!==c.conversationId)return await m.done,false;await m.objectStore("messages").delete(u);}return await m.objectStore("decryptRecoveries").delete($n(c,u)),y!==void 0&&await m.objectStore("sessions").put(rn(y)),await m.done,P!==void 0},async deleteConversationMessages(c){let u=Us(c),y=typeof c=="string"?"by_conv_sort":"by_conversation_key_sort",m=typeof c=="string"?c:oa$1(c),P=IDBKeyRange.bound([m,""],[m,ge]),k=i().transaction(["messages","decryptRecoveries"],"readwrite"),D=k.objectStore("messages"),w=k.objectStore("decryptRecoveries"),l=[];if(typeof c=="string"){let C=(await D.index("by_conv_sort").getAll(P)).map(he);l=(await w.getAll()).filter(I=>I.conversation.conversationId===c),$e(u,[...C,...l.map(I=>({conversationType:I.conversation.conversationType}))]);}let _=await D.index(y).openCursor(P);for(;_!==null;)await _.delete(),_=await _.continue();if(typeof c=="string")for(let C of l)await w.delete(C.key);else {let C=await w.index("by_conversation").openCursor(IDBKeyRange.only(oa$1(c)));for(;C!==null;)await C.delete(),C=await C.continue();}await k.done;},async clearConversationHistory(c,u,y){let m=oa$1(c),P=IDBKeyRange.bound([m,""],[m,ge]),k=i().transaction(["messages","sessions","readStates","decryptRecoveries"],"readwrite"),D=await k.objectStore("messages").index("by_conversation_key_sort").openCursor(P);for(;D!==null;)await D.delete(),D=await D.continue();let w=await k.objectStore("decryptRecoveries").index("by_conversation").openCursor(IDBKeyRange.only(m));for(;w!==null;)await w.delete(),w=await w.continue();u!==void 0&&await k.objectStore("sessions").put(rn(u)),y!==void 0&&(await k.objectStore("readStates").put(Jn(y)),await k.objectStore("readStates").delete(y.conversationId)),await k.done;},async getReadStates(){return (await i().getAll("readStates")).map(Gr)},async saveReadState(c){let u=i().transaction("readStates","readwrite");await u.store.put(Jn(c)),c.conversationType!==void 0&&await u.store.delete(c.conversationId),await u.done;},async getDrafts(){return (await i().getAll("drafts")).map(Ds)},async saveDraft(c){await i().put("drafts",Rs(c));},async deleteDraft(c){await i().delete("drafts",oa$1(c));},async getConversationBackground(c){return (await i().get("conversationBackgrounds",He(c)))?.background??null},async saveConversationBackground(c,u){let y=He(c);await i().put("conversationBackgrounds",{key:y,background:u});},async deleteConversationBackground(c){await i().delete("conversationBackgrounds",He(c));},async getDefaultConversationBackground(){return (await i().get("conversationBackgrounds",Hn))?.background??null},async saveDefaultConversationBackground(c){await i().put("conversationBackgrounds",{key:Hn,background:c});},async deleteDefaultConversationBackground(){await i().delete("conversationBackgrounds",Hn);},async getOutbox(){return i().getAll("outbox")},async saveOutboxMessage(c){await i().put("outbox",c);},async removeOutboxMessage(c){await i().delete("outbox",c);},async getPinnedMessages(){return (await i().getAll("pinnedMessages")).map(Vn)},async savePinnedMessage(c){let u=i().transaction("pinnedMessages","readwrite");await u.store.put(Hr(c)),await u.store.delete(c.conversationId),await u.done;},async removePinnedMessage(c){if(typeof c!="string"){await i().delete("pinnedMessages",oa$1(c));return}let u=(await i().getAll("pinnedMessages")).map(Vn).filter(y=>y.conversationId===c);$e(c,u),u[0]!==void 0&&await i().delete("pinnedMessages",oa$1(na$1(u[0]))),await i().delete("pinnedMessages",c);},async getMeta(c){let u=await i().get("meta",c);return u===void 0?null:u.value},async setMeta(c,u){await i().put("meta",{key:c,value:u});},async getUserProfile(c){return await i().get("userProfiles",c)??null},async saveUserProfile(c){await i().put("userProfiles",c);},async getGroupMembers(c){return await i().get("groupMembers",c)??null},async saveGroupMembers(c){await i().put("groupMembers",c);},async getGroupProfile(c){return await i().get("groupProfiles",c)??null},async saveGroupProfile(c){await i().put("groupProfiles",c);},async getChannelProfile(c){return await i().get("channelProfiles",c)??null},async getChannelProfiles(){return i().getAll("channelProfiles")},async saveChannelProfiles(c){if(c.length===0)return;let u=i().transaction("channelProfiles","readwrite");await Promise.all([...c.map(y=>u.store.put(y)),u.done]);},async getChannelListVersion(){let c=await i().get("meta",Ln);return typeof c?.value=="string"&&/^\d+$/.test(c.value)?c.value:"0"},async saveChannelListVersion(c){if(!/^\d+$/.test(c))throw new Error(`CHANNEL list version \u975E\u6CD5\uFF1A${c}`);await i().put("meta",{key:Ln,value:c});},async getChannelMembers(c,u){if(u.length===0)return [];let y=i().transaction("channelMembers"),m=await Promise.all(u.map(P=>y.store.get([c,P])));return await y.done,m.filter(P=>P!==void 0)},async saveChannelMembers(c){if(c.length===0)return;let u=i().transaction("channelMembers","readwrite");for(let y of c){let m=await u.store.get([y.channelId,y.userId]);m!==void 0&&Es(y.updateVersion,m.updateVersion)<0||await u.store.put(y);}await u.done;},async deleteChannelMembers(c){let u=IDBKeyRange.bound([c,""],[c,ge]),y=i().transaction("channelMembers","readwrite"),m=await y.store.openCursor(u);for(;m!==null;)await m.delete(),m=await m.continue();await y.done;},async getChannelMemberSnapshot(c){return await i().get("channelMemberSnapshots",c)??null},async saveChannelMemberSnapshot(c){await i().put("channelMemberSnapshots",c);},async deleteChannelMemberSnapshot(c){await i().delete("channelMemberSnapshots",c);},async getChannelMentionCandidateSnapshot(c){return await i().get("channelMentionCandidateSnapshots",c)??null},async saveChannelMentionCandidateSnapshot(c){await i().put("channelMentionCandidateSnapshots",c);},async deleteChannelMentionCandidateSnapshot(c){await i().delete("channelMentionCandidateSnapshots",c);}}}function Gs(e={}){let n=e.createSocket??(p=>new globalThis.WebSocket(p)),t=e.connectTimeoutMs??1e4,r={open:new Set,message:new Set,close:new Set,error:new Set},o,a,s="idle",d;function i(p,S){for(let v of [...r[p]])v(S);}function f(){d!==void 0&&(clearTimeout(d),d=void 0);}function g(p,S){S!==void 0&&(p.removeEventListener("open",S.onOpen),p.removeEventListener("message",S.onMessage),p.removeEventListener("error",S.onError),p.removeEventListener("close",S.onClose));}function b(){if(f(),o!==void 0){g(o,a);try{o.close(1e3);}catch{}o=void 0;}a=void 0;}function h(p,S,v){let E={onOpen:()=>{p===o&&(f(),s="open",i("open",{endpoint:S}));},onMessage:c=>{if(p!==o)return;let u=c?.data;if(u instanceof ArrayBuffer){i("message",{data:u});return}i("error",{error:new Error(`WsTransport\uFF1A\u6536\u5230\u975E ArrayBuffer \u6D88\u606F\uFF08${typeof u}\uFF09\uFF0C\u5DF2\u5FFD\u7565`)});},onError:c=>{p===o&&i("error",{error:new Error(`WsTransport\uFF1AWebSocket error \u4E8B\u4EF6\uFF08${c instanceof Event?c.type:typeof c}\uFF09`)});},onClose:c=>{p===o&&(f(),g(p,E),o=void 0,a=void 0,s="closed",i("close",{code:c?.code??1006,reason:c?.reason??"",wasClean:c?.wasClean??false}));}};if(a=E,p.addEventListener("open",E.onOpen),p.addEventListener("message",E.onMessage),p.addEventListener("error",E.onError),p.addEventListener("close",E.onClose),v>0){let c=setTimeout(()=>{if(!(p!==o||s!=="connecting")){i("error",{error:new Error(`WsTransport\uFF1A\u8FDE\u63A5\u8D85\u65F6\uFF08${v}ms \u672A open\uFF09`)});try{p.close();}catch{}}},v);c.unref?.(),d=c;}}return {get state(){return s},async connect(p,S){let v=p[0];if(v===void 0)throw new Error("WsTransport.connect\uFF1Aendpoints \u4E3A\u7A7A\uFF08P0 single \u7B56\u7565\u9700\u81F3\u5C11\u4E00\u4E2A\u7AEF\u70B9\uFF09");b(),s="connecting";let E;try{E=n(v.url);}catch(c){throw s="closed",c}E.binaryType="arraybuffer",o=E,h(E,v,S?.connectTimeoutMs??t);},async send(p){if(o===void 0||s!=="open")throw new Error(`WsTransport.send\uFF1A\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF08state=${s}\uFF09\uFF0C\u62D2\u7EDD\u53D1\u9001`);o.send(p);},async close(p=1e3,S){f(),o!==void 0&&(s==="connecting"||s==="open")&&(s="closing",o.close(p,S));},on(p,S){return r[p].add(S),()=>{r[p].delete(S);}}}}
|
|
7
|
-
export{Pa as $,Fr as A,Xa as Aa,Fi as B,Za as Ba,Vi as C,es as Ca,ji as D,rs as Da,qi as E,os as Ea,zi as F,is as Fa,Wi as G,as as Ga,Yi as H,ss as Ha,Qi as I,cs as Ia,Xi as J,Gn as Ja,Zi as K,fs as Ka,ea as L,ys as La,na as M,ws as Ma,ta as N,Bs as Na,ra as O,Ns as Oa,oa as P,Gs as Pa,aa as Q,Jr as Qa,ca as R,Je as Ra,en as S,Zr as Sa,nn as T,lo as Ta,da as U,pa as V,fa as W,ma as X,ga as Y,ya as Z,Ca as _,po as a,wa as aa,xe as b,Ia as ba,q as c,_a as ca,go as d,Aa as da,yo as e,Ma as ea,Ee as f,xa as fa,Co as g,Ea as ga,To as h,ka as ha,Ce as i,Ta as ia,j,Da as ja,Ho as k,Ke as ka,$o as l,Oa as la,De as m,Ba as ma,re as n,Na as na,Zo as o,Ga as oa,Ue as p,Ka as pa,W as q,La as qa,mi as r,Fa as ra,wi as s,Ja as sa,Ai as t,Va as ta,vi as u,ja as ua,Ti as v,Mr as va,we as w,xr as wa,H as x,Wa as xa,pe as y,Ya as ya,Gi as z,Qa as za};
|