k2-im 0.1.49 → 0.1.51
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/README.md +21 -2
- package/dist/browser-2MUNHRDS.js +1 -0
- package/dist/browser-RTCHWSQ2.js +2 -0
- package/dist/browser.js +1 -1
- package/dist/chat-kit-pinia.d.ts +54 -13
- package/dist/chat-kit-pinia.js +1 -1
- package/dist/chat-kit-vue.d.ts +28 -3
- package/dist/chat-kit-vue.js +1 -1
- package/dist/chat-kit.d.ts +32 -10
- package/dist/chat-kit.js +1 -1
- package/dist/{chunk-EQSL3SQW.js → chunk-2R4KVYRU.js} +1 -1
- package/dist/{chunk-ZUL5OBYN.js → chunk-HJYSLPY4.js} +1 -1
- package/dist/chunk-JXCG3DYB.js +1 -0
- package/dist/chunk-KV7I2SAC.js +8 -0
- package/dist/chunk-OUXI5ZYL.js +2 -0
- package/dist/chunk-Q2DEFN53.js +1 -0
- package/dist/chunk-Q6TFPZMF.js +2 -0
- package/dist/{chunk-YOS2232I.js → chunk-YJV5ZN3V.js} +1 -1
- package/dist/crypto.worker.js +25 -0
- package/dist/i18n.d.ts +4 -1
- package/dist/i18n.js +1 -1
- package/dist/index.d.ts +32 -10
- package/dist/index.js +1 -1
- package/dist/request-crypto.d.ts +31 -0
- package/dist/request-crypto.js +1 -0
- package/dist/sdk.d.ts +32 -10
- package/dist/sdk.js +1 -1
- package/package.json +5 -1
- package/dist/browser-YLMJKRLM.js +0 -2
- package/dist/chunk-527YCOBJ.js +0 -2
- package/dist/chunk-A6UPH4T4.js +0 -1
- package/dist/chunk-SEFYSJSB.js +0 -2
- package/dist/chunk-SWWW7C2U.js +0 -7
package/dist/i18n.d.ts
CHANGED
|
@@ -103,8 +103,11 @@ type LastMessageSummary = {
|
|
|
103
103
|
kind: 'transfer';
|
|
104
104
|
} | {
|
|
105
105
|
kind: 'gift';
|
|
106
|
-
}
|
|
106
|
+
}
|
|
107
|
+
/** 直播间分享。`title` 是房间标题,没有房间标题再用主播昵称。 */
|
|
108
|
+
| {
|
|
107
109
|
kind: 'liveRoom';
|
|
110
|
+
title?: string;
|
|
108
111
|
} | {
|
|
109
112
|
kind: 'call';
|
|
110
113
|
callKind: ImCallKind;
|
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-2R4KVYRU.js';import'./chunk-Q6TFPZMF.js';import'./chunk-WOT6VMZA.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -119,8 +119,11 @@ type LastMessageSummary = {
|
|
|
119
119
|
kind: 'transfer';
|
|
120
120
|
} | {
|
|
121
121
|
kind: 'gift';
|
|
122
|
-
}
|
|
122
|
+
}
|
|
123
|
+
/** 直播间分享。`title` 是房间标题,没有房间标题再用主播昵称。 */
|
|
124
|
+
| {
|
|
123
125
|
kind: 'liveRoom';
|
|
126
|
+
title?: string;
|
|
124
127
|
} | {
|
|
125
128
|
kind: 'call';
|
|
126
129
|
callKind: ImCallKind;
|
|
@@ -3754,6 +3757,8 @@ interface ImSdkErrorShape {
|
|
|
3754
3757
|
category: ImSdkErrorCategory;
|
|
3755
3758
|
operation: string;
|
|
3756
3759
|
retryable: boolean;
|
|
3760
|
+
/** 执行设施已终止;宿主可在保存草稿后提供用户主动整页刷新,不得自动重试。 */
|
|
3761
|
+
recovery?: 'reload-app';
|
|
3757
3762
|
conversation?: ConversationRef;
|
|
3758
3763
|
details?: Readonly<Record<string, unknown>>;
|
|
3759
3764
|
cause?: unknown;
|
|
@@ -5080,8 +5085,11 @@ type ConversationLastMessageSummary = {
|
|
|
5080
5085
|
kind: 'transfer';
|
|
5081
5086
|
} | {
|
|
5082
5087
|
kind: 'gift';
|
|
5083
|
-
}
|
|
5088
|
+
}
|
|
5089
|
+
/** 直播间分享。`title` 是房间标题,没有房间标题再用主播昵称。 */
|
|
5090
|
+
| {
|
|
5084
5091
|
kind: 'liveRoom';
|
|
5092
|
+
title?: string;
|
|
5085
5093
|
} | {
|
|
5086
5094
|
kind: 'redPacket';
|
|
5087
5095
|
} | {
|
|
@@ -5580,7 +5588,7 @@ interface ForwardMessagesResult {
|
|
|
5580
5588
|
* 只有 `sendText` 消费文本草稿;媒体、语音、文件、GIF 与名片拥有独立选择态,不清理 Composer 文本。
|
|
5581
5589
|
*/
|
|
5582
5590
|
interface ConversationMessageApi {
|
|
5583
|
-
/**
|
|
5591
|
+
/** 发送文本;单聊新文本固定加密,mention 与其他会话的加密方式由各自 sibling 决定。 */
|
|
5584
5592
|
sendText: (text: string, options?: TextMessageOptions) => Promise<SendMessageResult>;
|
|
5585
5593
|
/** 分享个人、普通群或社群名片;发送目标仍由当前 handle 的精确会话身份决定。 */
|
|
5586
5594
|
sendContact: (contact: ContactCardInput, options?: ContactMessageOptions) => Promise<SendMessageResult>;
|
|
@@ -5844,14 +5852,16 @@ interface ConversationHandle<TType extends ProductHandleConversationType = Produ
|
|
|
5844
5852
|
/**
|
|
5845
5853
|
* 按稳定消息 id 打开目标附近的连续历史窗口。
|
|
5846
5854
|
*
|
|
5847
|
-
* @remarks
|
|
5848
|
-
*
|
|
5849
|
-
*
|
|
5850
|
-
*
|
|
5851
|
-
*
|
|
5852
|
-
*
|
|
5855
|
+
* @remarks 冷启动置顶和搜索结果只提供目标 id;目标不在当前窗口或本地原文时,须经精确会话
|
|
5856
|
+
* `by_id` 确认真实原文及排序位置。预览或搜索位置不能充当历史游标。
|
|
5857
|
+
* GROUP/CHANNEL 使用远端相邻页准备两侧上下文后一次替换窗口;失败保留原窗口。
|
|
5858
|
+
* `signal` 取消本次定位,阻止提交准备中的窗口;不会撤销共享按 ID 查询已取得的合法缓存。
|
|
5859
|
+
* @throws 仅 `by_id` 明确确认缺失时抛 `IM_SDK_MESSAGE_NOT_FOUND`;没有可信原文时抛
|
|
5860
|
+
* `IM_SDK_MESSAGE_ANCHOR_UNAVAILABLE`。存储、权限与协议异常保留原错误身份。
|
|
5853
5861
|
*/
|
|
5854
|
-
loadAround: (messageId: string
|
|
5862
|
+
loadAround: (messageId: string, options?: {
|
|
5863
|
+
signal?: AbortSignal;
|
|
5864
|
+
}) => Promise<void>;
|
|
5855
5865
|
/**
|
|
5856
5866
|
* 清空当前账号下此精确会话的本机历史。
|
|
5857
5867
|
*
|
|
@@ -6155,6 +6165,18 @@ interface ImMediaTasksApi {
|
|
|
6155
6165
|
file: Blob;
|
|
6156
6166
|
signal?: AbortSignal;
|
|
6157
6167
|
}) => Promise<Blob | null>;
|
|
6168
|
+
/**
|
|
6169
|
+
* 为本地图片生成仅供胶片条/相册格显示的缩略图,不上传、不写缓存、不改变发送文件与元信息。
|
|
6170
|
+
* JPEG 按文件签名识别,最长边最多 256px 且不放大,与发送预读共用账号的图片解码预算。
|
|
6171
|
+
* 其它格式直接返回原 Blob,保留透明与动画;宿主负责返回 Blob 的 object URL 生命周期。
|
|
6172
|
+
* 生成失败返回 null 并记录诊断;取消、账号失效和未装配能力保持明确错误。
|
|
6173
|
+
* @param input.file 原始本地图片;返回的显示资源不得代替它传入发送命令。
|
|
6174
|
+
* @param input.signal 删除文件、关闭预览或切换账号时取消请求。
|
|
6175
|
+
*/
|
|
6176
|
+
prepareLocalImageThumbnail: (input: {
|
|
6177
|
+
file: Blob;
|
|
6178
|
+
signal?: AbortSignal;
|
|
6179
|
+
}) => Promise<Blob | null>;
|
|
6158
6180
|
}
|
|
6159
6181
|
|
|
6160
6182
|
/**
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import'./chunk-IDECJJXC.js';import'./chunk-SXY56EVC.js';export{q as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,x as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,w as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,e as MINI_PROGRAM_LANG_NUMBERS,S as SPIKE_STEP,N as calculateMediaBox,E as canCopyMessageImage,t as canPromoteMediaPresentationSource,B as captureRuntimeClientOperation,A as captureRuntimeOperation,n as channelMiniProgramRelKey,z as createConversationPrefetchController,r as createDelayedLoadingIndicator,L as createLinkMatcher,F as createMessageImageCopySource,f as csvIncludes,d as decideChannelMiniProgramRelOpen,P as formatFileSize,O as formatMediaDuration,Q as getFileExtension,D as getMessageCopyImageUrl,C as getMessageCopyText,K as hasLinkCandidate,u as highlightSegments,a as isMiniProgramShowTypeOpenable,G as mediaService,J as normalizeLinkHref,V as placeholderWaveform,H as readService,U as resampleWaveform,s as resolveBestMediaPresentationSource,h as resolveChannelMiniProgramRelIcon,g as resolveChannelMiniProgramRelName,j as resolveChannelMiniProgramRelOpenSurface,i as resolveChannelMiniProgramRelUrl,k as resolveChannelPinnedGameCopy,o as resolveConversationListPresentation,M as resolveMediaPresentation,R as resolveMediaTransferPresentation,v as resolveMessageSearchPreview,c as resolveMiniProgramFloatLinkUrl,y as resolveMiniProgramGamePreviewLayout,b as resolveMiniProgramOpenUrl,I as resolveQuotedMessagePresentation,m as resolveVisibleChannelMiniProgramRels,l as sortChannelMiniProgramFloatingItems,T as spikeCountForDuration}from'./chunk-
|
|
1
|
+
import'./chunk-IDECJJXC.js';import'./chunk-SXY56EVC.js';export{q as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,x as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,w as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,e as MINI_PROGRAM_LANG_NUMBERS,S as SPIKE_STEP,N as calculateMediaBox,E as canCopyMessageImage,t as canPromoteMediaPresentationSource,B as captureRuntimeClientOperation,A as captureRuntimeOperation,n as channelMiniProgramRelKey,z as createConversationPrefetchController,r as createDelayedLoadingIndicator,L as createLinkMatcher,F as createMessageImageCopySource,f as csvIncludes,d as decideChannelMiniProgramRelOpen,P as formatFileSize,O as formatMediaDuration,Q as getFileExtension,D as getMessageCopyImageUrl,C as getMessageCopyText,K as hasLinkCandidate,u as highlightSegments,a as isMiniProgramShowTypeOpenable,G as mediaService,J as normalizeLinkHref,V as placeholderWaveform,H as readService,U as resampleWaveform,s as resolveBestMediaPresentationSource,h as resolveChannelMiniProgramRelIcon,g as resolveChannelMiniProgramRelName,j as resolveChannelMiniProgramRelOpenSurface,i as resolveChannelMiniProgramRelUrl,k as resolveChannelPinnedGameCopy,o as resolveConversationListPresentation,M as resolveMediaPresentation,R as resolveMediaTransferPresentation,v as resolveMessageSearchPreview,c as resolveMiniProgramFloatLinkUrl,y as resolveMiniProgramGamePreviewLayout,b as resolveMiniProgramOpenUrl,I as resolveQuotedMessagePresentation,m as resolveVisibleChannelMiniProgramRels,l as sortChannelMiniProgramFloatingItems,T as spikeCountForDuration}from'./chunk-YJV5ZN3V.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,P as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,O as blockReasonForChannelSession,N as blockReasonForChannelState,V as blockReasonForGroupState,Y as blockReasonForSession,I as canEditMessage,w as canPinChannelMessage,v as canPinGroupMessage,x as canPinMessage,H as canRecallMessage,fa as cancelMediaUpload,T as classifyGifFile,S as classifyMediaFile,s as countUnreadConversations,u as createChatRuntime,p as createEmojiMatcher,K as decideConversationAction,M as decideMemberTargetAction,L as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,Fa as fetchConversationFileBatch,Ga as fetchConversationImageBatch,Da as fetchConversationMessageBatch,Ha as fetchConversationVideoBatch,Ia as fetchConversationVoiceBatch,Ja as fetchNextConversationSearchBatch,r as formatConversationUnreadBadge,ia as forwardService,o as hasEmojiCandidate,U as isGifFile,y as isPinnedMessageProtected,aa as isVoiceStorageConfigured,Q as mediaBatchBudgetBytes,na as messageService,e as parseUnicodeEmojiCode,sa as pinnedMessageService,d as prependRecentEmoji,Ca as profileService,$ as replaceInterruptedMediaFile,W as requiresConversationEncryption,D as resolveChannelMemberAvatarUrl,C as resolveChannelMemberDisplayName,k as resolveEmojiToken,G as resolveFriendDisplayName,ta as resolveImProfileAccessDestination,A as resolveMemberDisplayName,t as resolveMessageNotificationDecision,F as resolvePublicNickname,E as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,ga as retryMessage,R as runMediaSendBatch,ea as sendAsFilesBatch,J as sendBlockReasonForDecision,ca as sendMediaAlbum,_ as sendMediaFile,da as sendMediaFilesBatch,Z as sendText,ba as sendVoice,X as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-JXCG3DYB.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-HJYSLPY4.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-2R4KVYRU.js';export{e as IMAGE_MESSAGE_ACCEPT,n as IM_CHAT_FONT_SCALES,g as IM_DIAGNOSTIC_CATEGORIES,j as IM_EMOJI_CATALOG,c as ImPinnedMessageOperationError,m as buildSessionFavoritePlainBody,d as createFaceToFaceGroupQrPayload,o as createImClient,h as createImConsoleDiagnosticSink,r as createImDiagnosticMemoryBuffer,s as createImResourceUploader,i as createSdkDiagnosticWriter,f as isSupportedImageFile,a as migrateImCachePrefix,k as resolveImEmojiToken,l as resolveSessionFavoriteKindFromMessage}from'./chunk-OUXI5ZYL.js';export{Za as MediaTransferError,lb as createVoicePlayer,mb as createVoiceRecordingSession,jb as detectVoiceCapabilities,_a as mediaTransferErrorCodeOf,ab as normalizeMediaUploadCredentials,kb as voiceErrorCodeOf}from'./chunk-KV7I2SAC.js';export{Na as EDIT_WINDOW_MS,q as MEDIA_ALBUM_CAPTION_MAX_LENGTH,r as MEDIA_ALBUM_MAX_ITEMS,Sa as REACTION_SUPPORTED_CONTENT_TYPES,Ta as canReactToMessage,Ra as canTransmit,Pa as canTransmitByType,Qa as canTransmitContent,y as classifyStickerImageType,Ca as createImTextSearchMatcher,Aa as extractSearchText,Ba as getImTextSearchInitial,Mb as parseSessionFavoriteAlbumItems,Pb as parseSessionFavoriteFileItems,Oa as requiresForwardTypeConfirmation,Va as resolveChannelAccess,s as resolveMediaAlbumSendContentType,Nb as resolveSessionFavoriteAlbumCaption,Lb as resolveSessionFavoriteAlbumItemPreviewUrl,Ha as resolveTextSegments,_a as sortSessions,$a as sumSessionsUnread}from'./chunk-Q6TFPZMF.js';import'./chunk-WOT6VMZA.js';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* K2 H5 crypto wasm 暴露给业务层的稳定能力集合。
|
|
3
|
+
* 该接口不包含任何 Node/Nitro 文件系统逻辑,浏览器和服务端 loader 都应返回同一组方法。
|
|
4
|
+
*/
|
|
5
|
+
interface CryptoDriver {
|
|
6
|
+
/** 计算底层 wasm 实现的 MD5,返回值保持 wasm 原始大小写格式。 */
|
|
7
|
+
cryptMd5: (input: string) => string
|
|
8
|
+
/** 按 H5 上游接口约定生成请求签名。 */
|
|
9
|
+
generateSign: (
|
|
10
|
+
signType: string,
|
|
11
|
+
envType: string,
|
|
12
|
+
businessParams: Record<string, string>,
|
|
13
|
+
eTag?: string | null,
|
|
14
|
+
) => string
|
|
15
|
+
/** 使用 wasm 内置 AES 规则加密二进制 payload。 */
|
|
16
|
+
encryptAes: (payload: Uint8Array) => Uint8Array
|
|
17
|
+
/** 使用 wasm 内置 AES 规则解密二进制 payload。 */
|
|
18
|
+
decryptAes: (payload: Uint8Array) => Uint8Array
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* 加载页面请求共用的 WASM 加解密实例。
|
|
23
|
+
*
|
|
24
|
+
* 此入口只依赖请求 crypto,不加载 IM 客户端、Chat Kit 或框架。普通业务可在首个请求前
|
|
25
|
+
* await 一次并保留返回的同步 driver;后续 IM Core 请求复用同一实例。导入入口本身不
|
|
26
|
+
* 请求 WASM,Node/SSR 可以安全解析它;加载失败会向调用方传播。
|
|
27
|
+
*/
|
|
28
|
+
declare function loadBrowserCryptoDriver(): Promise<CryptoDriver>;
|
|
29
|
+
|
|
30
|
+
export { loadBrowserCryptoDriver };
|
|
31
|
+
export type { CryptoDriver };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import'./chunk-WOT6VMZA.js';async function o(){return (await import('./browser-RTCHWSQ2.js')).loadBrowserCryptoDriver()}export{o as loadBrowserCryptoDriver};
|
package/dist/sdk.d.ts
CHANGED
|
@@ -119,8 +119,11 @@ type LastMessageSummary = {
|
|
|
119
119
|
kind: 'transfer';
|
|
120
120
|
} | {
|
|
121
121
|
kind: 'gift';
|
|
122
|
-
}
|
|
122
|
+
}
|
|
123
|
+
/** 直播间分享。`title` 是房间标题,没有房间标题再用主播昵称。 */
|
|
124
|
+
| {
|
|
123
125
|
kind: 'liveRoom';
|
|
126
|
+
title?: string;
|
|
124
127
|
} | {
|
|
125
128
|
kind: 'call';
|
|
126
129
|
callKind: ImCallKind;
|
|
@@ -2778,6 +2781,8 @@ interface ImSdkErrorShape {
|
|
|
2778
2781
|
category: ImSdkErrorCategory;
|
|
2779
2782
|
operation: string;
|
|
2780
2783
|
retryable: boolean;
|
|
2784
|
+
/** 执行设施已终止;宿主可在保存草稿后提供用户主动整页刷新,不得自动重试。 */
|
|
2785
|
+
recovery?: 'reload-app';
|
|
2781
2786
|
conversation?: ConversationRef;
|
|
2782
2787
|
details?: Readonly<Record<string, unknown>>;
|
|
2783
2788
|
cause?: unknown;
|
|
@@ -4104,8 +4109,11 @@ type ConversationLastMessageSummary = {
|
|
|
4104
4109
|
kind: 'transfer';
|
|
4105
4110
|
} | {
|
|
4106
4111
|
kind: 'gift';
|
|
4107
|
-
}
|
|
4112
|
+
}
|
|
4113
|
+
/** 直播间分享。`title` 是房间标题,没有房间标题再用主播昵称。 */
|
|
4114
|
+
| {
|
|
4108
4115
|
kind: 'liveRoom';
|
|
4116
|
+
title?: string;
|
|
4109
4117
|
} | {
|
|
4110
4118
|
kind: 'redPacket';
|
|
4111
4119
|
} | {
|
|
@@ -4604,7 +4612,7 @@ interface ForwardMessagesResult {
|
|
|
4604
4612
|
* 只有 `sendText` 消费文本草稿;媒体、语音、文件、GIF 与名片拥有独立选择态,不清理 Composer 文本。
|
|
4605
4613
|
*/
|
|
4606
4614
|
interface ConversationMessageApi {
|
|
4607
|
-
/**
|
|
4615
|
+
/** 发送文本;单聊新文本固定加密,mention 与其他会话的加密方式由各自 sibling 决定。 */
|
|
4608
4616
|
sendText: (text: string, options?: TextMessageOptions) => Promise<SendMessageResult>;
|
|
4609
4617
|
/** 分享个人、普通群或社群名片;发送目标仍由当前 handle 的精确会话身份决定。 */
|
|
4610
4618
|
sendContact: (contact: ContactCardInput, options?: ContactMessageOptions) => Promise<SendMessageResult>;
|
|
@@ -4868,14 +4876,16 @@ interface ConversationHandle<TType extends ProductHandleConversationType = Produ
|
|
|
4868
4876
|
/**
|
|
4869
4877
|
* 按稳定消息 id 打开目标附近的连续历史窗口。
|
|
4870
4878
|
*
|
|
4871
|
-
* @remarks
|
|
4872
|
-
*
|
|
4873
|
-
*
|
|
4874
|
-
*
|
|
4875
|
-
*
|
|
4876
|
-
*
|
|
4879
|
+
* @remarks 冷启动置顶和搜索结果只提供目标 id;目标不在当前窗口或本地原文时,须经精确会话
|
|
4880
|
+
* `by_id` 确认真实原文及排序位置。预览或搜索位置不能充当历史游标。
|
|
4881
|
+
* GROUP/CHANNEL 使用远端相邻页准备两侧上下文后一次替换窗口;失败保留原窗口。
|
|
4882
|
+
* `signal` 取消本次定位,阻止提交准备中的窗口;不会撤销共享按 ID 查询已取得的合法缓存。
|
|
4883
|
+
* @throws 仅 `by_id` 明确确认缺失时抛 `IM_SDK_MESSAGE_NOT_FOUND`;没有可信原文时抛
|
|
4884
|
+
* `IM_SDK_MESSAGE_ANCHOR_UNAVAILABLE`。存储、权限与协议异常保留原错误身份。
|
|
4877
4885
|
*/
|
|
4878
|
-
loadAround: (messageId: string
|
|
4886
|
+
loadAround: (messageId: string, options?: {
|
|
4887
|
+
signal?: AbortSignal;
|
|
4888
|
+
}) => Promise<void>;
|
|
4879
4889
|
/**
|
|
4880
4890
|
* 清空当前账号下此精确会话的本机历史。
|
|
4881
4891
|
*
|
|
@@ -5179,6 +5189,18 @@ interface ImMediaTasksApi {
|
|
|
5179
5189
|
file: Blob;
|
|
5180
5190
|
signal?: AbortSignal;
|
|
5181
5191
|
}) => Promise<Blob | null>;
|
|
5192
|
+
/**
|
|
5193
|
+
* 为本地图片生成仅供胶片条/相册格显示的缩略图,不上传、不写缓存、不改变发送文件与元信息。
|
|
5194
|
+
* JPEG 按文件签名识别,最长边最多 256px 且不放大,与发送预读共用账号的图片解码预算。
|
|
5195
|
+
* 其它格式直接返回原 Blob,保留透明与动画;宿主负责返回 Blob 的 object URL 生命周期。
|
|
5196
|
+
* 生成失败返回 null 并记录诊断;取消、账号失效和未装配能力保持明确错误。
|
|
5197
|
+
* @param input.file 原始本地图片;返回的显示资源不得代替它传入发送命令。
|
|
5198
|
+
* @param input.signal 删除文件、关闭预览或切换账号时取消请求。
|
|
5199
|
+
*/
|
|
5200
|
+
prepareLocalImageThumbnail: (input: {
|
|
5201
|
+
file: Blob;
|
|
5202
|
+
signal?: AbortSignal;
|
|
5203
|
+
}) => Promise<Blob | null>;
|
|
5182
5204
|
}
|
|
5183
5205
|
|
|
5184
5206
|
/**
|
package/dist/sdk.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import'./chunk-IDECJJXC.js';export{e as IMAGE_MESSAGE_ACCEPT,n as IM_CHAT_FONT_SCALES,g as IM_DIAGNOSTIC_CATEGORIES,j as IM_EMOJI_CATALOG,c as ImPinnedMessageOperationError,m as buildSessionFavoritePlainBody,d as createFaceToFaceGroupQrPayload,o as createImClient,h as createImConsoleDiagnosticSink,r as createImDiagnosticMemoryBuffer,s as createImResourceUploader,i as createSdkDiagnosticWriter,f as isSupportedImageFile,a as migrateImCachePrefix,k as resolveImEmojiToken,l as resolveSessionFavoriteKindFromMessage}from'./chunk-
|
|
1
|
+
import'./chunk-IDECJJXC.js';export{e as IMAGE_MESSAGE_ACCEPT,n as IM_CHAT_FONT_SCALES,g as IM_DIAGNOSTIC_CATEGORIES,j as IM_EMOJI_CATALOG,c as ImPinnedMessageOperationError,m as buildSessionFavoritePlainBody,d as createFaceToFaceGroupQrPayload,o as createImClient,h as createImConsoleDiagnosticSink,r as createImDiagnosticMemoryBuffer,s as createImResourceUploader,i as createSdkDiagnosticWriter,f as isSupportedImageFile,a as migrateImCachePrefix,k as resolveImEmojiToken,l as resolveSessionFavoriteKindFromMessage}from'./chunk-OUXI5ZYL.js';export{Za as MediaTransferError,lb as createVoicePlayer,mb as createVoiceRecordingSession,jb as detectVoiceCapabilities,_a as mediaTransferErrorCodeOf,ab as normalizeMediaUploadCredentials,kb as voiceErrorCodeOf}from'./chunk-KV7I2SAC.js';export{Na as EDIT_WINDOW_MS,q as MEDIA_ALBUM_CAPTION_MAX_LENGTH,r as MEDIA_ALBUM_MAX_ITEMS,Sa as REACTION_SUPPORTED_CONTENT_TYPES,Ta as canReactToMessage,Ra as canTransmit,Pa as canTransmitByType,Qa as canTransmitContent,y as classifyStickerImageType,Ca as createImTextSearchMatcher,Aa as extractSearchText,Ba as getImTextSearchInitial,Mb as parseSessionFavoriteAlbumItems,Pb as parseSessionFavoriteFileItems,Oa as requiresForwardTypeConfirmation,Va as resolveChannelAccess,s as resolveMediaAlbumSendContentType,Nb as resolveSessionFavoriteAlbumCaption,Lb as resolveSessionFavoriteAlbumItemPreviewUrl,Ha as resolveTextSegments,_a as sortSessions,$a as sumSessionsUnread}from'./chunk-Q6TFPZMF.js';import'./chunk-WOT6VMZA.js';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "k2-im",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.51",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"publishConfig": {
|
|
@@ -36,6 +36,10 @@
|
|
|
36
36
|
"./chat-kit/vue": {
|
|
37
37
|
"types": "./dist/chat-kit-vue.d.ts",
|
|
38
38
|
"import": "./dist/chat-kit-vue.js"
|
|
39
|
+
},
|
|
40
|
+
"./request-crypto": {
|
|
41
|
+
"types": "./dist/request-crypto.d.ts",
|
|
42
|
+
"import": "./dist/request-crypto.js"
|
|
39
43
|
}
|
|
40
44
|
},
|
|
41
45
|
"files": [
|
package/dist/browser-YLMJKRLM.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-WOT6VMZA.js';import {parse,isInteger,isSafeNumber}from'lossless-json';import Oe from'axios';function st(t){return {cryptMd5:t.crypt_md5,generateSign:t.generate_sign,encryptAes:t.encrypt_aes,decryptAes:t.decrypt_aes}}var j={};a$1(j,{__wbg_get_67b2ba62fc30de12:()=>Kt,__wbg_get_b9b93047fe3cf45b:()=>Xt,__wbg_length_e2d2a49132c1b256:()=>Qt,__wbg_ownKeys_3930041068756f1f:()=>Zt,__wbg_set_wasm:()=>K,__wbindgen_debug_string:()=>te,__wbindgen_init_externref_table:()=>ee,__wbindgen_is_object:()=>re,__wbindgen_string_get:()=>ne,__wbindgen_string_new:()=>oe,__wbindgen_throw:()=>se,crypt_md5:()=>Vt,decrypt_aes:()=>Gt,encrypt_aes:()=>Yt,generate_sign:()=>Jt});var a;function K(t){a=t;}function $t(t){let e=a.__externref_table_alloc();return a.__wbindgen_export_2.set(e,t),e}function it(t,e){try{return t.apply(this,e)}catch(r){let n=$t(r);a.__wbindgen_exn_store(n);}}function G(t){let e=typeof t;if(e=="number"||e=="boolean"||t==null)return `${t}`;if(e=="string")return `"${t}"`;if(e=="symbol"){let o=t.description;return o==null?"Symbol":`Symbol(${o})`}if(e=="function"){let o=t.name;return typeof o=="string"&&o.length>0?`Function(${o})`:"Function"}if(Array.isArray(t)){let o=t.length,s="[";o>0&&(s+=G(t[0]));for(let i=1;i<o;i++)s+=`, ${G(t[i])}`;return s+="]",s}let r=/\[object ([^\]]+)\]/.exec(toString.call(t)),n;if(r&&r.length>1)n=r[1];else return toString.call(t);if(n=="Object")try{return `Object(${JSON.stringify(t)})`}catch{return "Object"}return t instanceof Error?`${t.name}: ${t.message}
|
|
2
|
-
${t.stack}`:n}var m=0,L=null;function O(){return (L===null||L.byteLength===0)&&(L=new Uint8Array(a.memory.buffer)),L}var Ft=typeof TextEncoder>"u"?(0, module.require)("util").TextEncoder:TextEncoder,v=new Ft("utf-8"),qt=typeof v.encodeInto=="function"?function(t,e){return v.encodeInto(t,e)}:function(t,e){let r=v.encode(t);return e.set(r),{read:t.length,written:r.length}};function E(t,e,r){if(r===void 0){let u=v.encode(t),c=e(u.length,1)>>>0;return O().subarray(c,c+u.length).set(u),m=u.length,c}let n=t.length,o=e(n,1)>>>0,s=O(),i=0;for(;i<n;i++){let u=t.charCodeAt(i);if(u>127)break;s[o+i]=u;}if(i!==n){i!==0&&(t=t.slice(i)),o=r(o,n,n=i+t.length*3,1)>>>0;let u=O().subarray(o+i,o+n),c=qt(t,u);i+=c.written,o=r(o,n,i,1)>>>0;}return m=i,o}var I=null;function N(){return (I===null||I.buffer.detached===true||I.buffer.detached===void 0&&I.buffer!==a.memory.buffer)&&(I=new DataView(a.memory.buffer)),I}function at(t){return t==null}var Wt=typeof TextDecoder>"u"?(0, module.require)("util").TextDecoder:TextDecoder,ct=new Wt("utf-8",{ignoreBOM:true,fatal:true});ct.decode();function H(t,e){return t=t>>>0,ct.decode(O().subarray(t,t+e))}function Vt(t){let e,r;try{let n=E(t,a.__wbindgen_malloc,a.__wbindgen_realloc),o=m,s=a.crypt_md5(n,o);return e=s[0],r=s[1],H(s[0],s[1])}finally{a.__wbindgen_free(e,r,1);}}function zt(t){let e=a.__wbindgen_export_2.get(t);return a.__externref_table_dealloc(t),e}function Jt(t,e,r,n){let o,s;try{let i=E(t,a.__wbindgen_malloc,a.__wbindgen_realloc),u=m,c=E(e,a.__wbindgen_malloc,a.__wbindgen_realloc),f=m,l=at(n)?0:E(n,a.__wbindgen_malloc,a.__wbindgen_realloc),p=m,d=a.generate_sign(i,u,c,f,r,l,p),b=d[0],g=d[1];if(d[3])throw b=0,g=0,zt(d[2]);return o=b,s=g,H(b,g)}finally{a.__wbindgen_free(o,s,1);}}function ut(t,e){let r=e(t.length*1,1)>>>0;return O().set(t,r/1),m=t.length,r}function lt(t,e){return t=t>>>0,O().subarray(t/1,t/1+e)}function Yt(t){let e=ut(t,a.__wbindgen_malloc),r=m,n=a.encrypt_aes(e,r),o=lt(n[0],n[1]).slice();return a.__wbindgen_free(n[0],n[1]*1,1),o}function Gt(t){let e=ut(t,a.__wbindgen_malloc),r=m,n=a.decrypt_aes(e,r),o=lt(n[0],n[1]).slice();return a.__wbindgen_free(n[0],n[1]*1,1),o}function Kt(){return it((t,e)=>Reflect.get(t,e),arguments)}function Xt(t,e){return t[e>>>0]}function Qt(t){return t.length}function Zt(){return it(t=>Reflect.ownKeys(t),arguments)}function te(t,e){let r=G(e),n=E(r,a.__wbindgen_malloc,a.__wbindgen_realloc),o=m;N().setInt32(t+4,o,true),N().setInt32(t+0,n,true);}function ee(){let t=a.__wbindgen_export_2,e=t.grow(4);t.set(0,void 0),t.set(e+0,void 0),t.set(e+1,null),t.set(e+2,true),t.set(e+3,false);}function re(t){let e=t;return typeof e=="object"&&e!==null}function ne(t,e){let r=e,n=typeof r=="string"?r:void 0,o=at(n)?0:E(n,a.__wbindgen_malloc,a.__wbindgen_realloc),s=m;N().setInt32(t+4,s,true),N().setInt32(t+0,o,true);}function oe(t,e){return H(t,e)}function se(t,e){throw new Error(H(t,e))}var pt=null,$=null;async function ie(){let t=await fetch(new URL("./vendor/crypto/index_bg.wasm",import.meta.url));if(!t.ok)throw new Error(`crypto wasm \u52A0\u8F7D\u5931\u8D25\uFF1AHTTP ${t.status}`);let e={"./index_bg.js":j},r;if(typeof WebAssembly.instantiateStreaming=="function")try{r=await WebAssembly.instantiateStreaming(t.clone(),e);}catch{r=await WebAssembly.instantiate(await t.arrayBuffer(),e);}else r=await WebAssembly.instantiate(await t.arrayBuffer(),e);return K(r.instance.exports),r.instance.exports.__wbindgen_start(),st(j)}async function X(){return $||($=ie().catch(t=>{throw $=null,t})),pt=await $,pt}await X();var ft="b097f885e9577cdb04d9faf91aa08329";function ae(t){return Object.keys(t).sort((r,n)=>r.localeCompare(n,void 0,{numeric:true})).map(r=>r+t[r]).join("")}function dt(t,e){let r=ae(e);return t.cryptMd5(ft+r+ft).toUpperCase()}var gt="123456789";var mt={core:"/api/h5",wallet:"/api/h5",bi:"/bi/h5",im:""};function pe(t){return isInteger(t)?isSafeNumber(t)?Number.parseInt(t,10):t:Number.parseFloat(t)}function F(t){return parse(t,void 0,{parseNumber:pe})}var bt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function _t(t){return t?t instanceof Headers?Object.fromEntries(t.entries()):Array.isArray(t)?Object.fromEntries(t):{...t}:{}}function yt(t){return t?t instanceof Headers?Object.fromEntries(t.entries()):Object.fromEntries(Object.entries(t).map(([e,r])=>[e,Array.isArray(r)?r.join(", "):String(r)])):{}}function Pt(t,e){let r=e.toLowerCase();return Object.entries(t).find(([o])=>o.toLowerCase()===r)?.[1]??null}function M(t,e=2){return t.toString().padStart(e,"0")}function wt(t){return `${t.getFullYear()}-${M(t.getMonth()+1)}-${M(t.getDate())} ${M(t.getHours())}:${M(t.getMinutes())}:${M(t.getSeconds())}`}function de(t){if(t!=null)return typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"||typeof t=="bigint"?String(t):t&&typeof t=="object"?JSON.stringify(t):String(t)}function Tt(t){let e={};for(let[r,n]of Object.entries(t)){let o=de(n);o!==void 0&&(e[r]=o);}return e}function At(t=16){let e="";for(let r=0;r<t;r+=1){let n=Math.floor(Math.random()*bt.length);e+=bt.charAt(n);}return e}function Rt(t){let e={deviceBrand:"web",deviceInfo:"web",deviceNumber:"",deviceToken:"web"},r=t||(typeof navigator<"u"?navigator.userAgent:"");if(!r)return e;let n=r.match(/(Chrome|Firefox|Safari|Edg)\/([\d.]+)/i);return n?{deviceBrand:"web",deviceInfo:`${n[1]}/${n[2]}`,deviceNumber:n[2]??"",deviceToken:"web"}:{...e,deviceInfo:r}}function ht(t){let e=String(t||"").trim().toLowerCase();return e==="cn"||e.startsWith("zh-cn")?"cn":e==="tc"||e.startsWith("zh-tw")||e.startsWith("zh-hk")?"tc":e==="vn"||e.startsWith("vi")?"vn":e==="th"||e.startsWith("th")?"th":e==="en"||e.startsWith("en")?"en":"cn"}function h(t,e){return {baseUrl:e?.baseUrl??"",prefix:e?.prefix??mt[t]}}function ge(t){return t.replace(/^\/+|\/+$/g,"")}function xt(t,e,r){let n=t.replace(/\/+$/g,""),o=ge(e),s=r.startsWith("/")?r:`/${r}`,i=o?`/${o}`:"";return `${n}${i}${s}`}function Ct(t,e){let r=new URLSearchParams(Object.entries(e).map(([u,c])=>[u,String(c)])).toString();if(!r)return t;let n=t.indexOf("#"),o=n>=0?t.slice(0,n):t,s=n>=0?t.slice(n):"",i=o.includes("?")?o.endsWith("?")||o.endsWith("&")?"":"&":"?";return `${o}${i}${r}${s}`}function Q(t){return !!t&&t.toLowerCase().includes("application/json")}function Z(t){return !!t&&t.toLowerCase().startsWith("text/")}function k(t){return t==null?new Uint8Array:typeof t=="string"?new TextEncoder().encode(t):t instanceof ArrayBuffer?new Uint8Array(t):ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new TextEncoder().encode(JSON.stringify(t))}function q(t){return typeof t=="string"?t:new TextDecoder().decode(k(t))}function It(t){return typeof FormData<"u"&&t instanceof FormData}var Pe=new Set(["content-etag","token","req-id"]);function St(t){let e=t.rawBody,r=e!==null&&typeof e=="object"&&"code"in e?e.code:void 0;return {transportStatus:t.transportStatus,...t.httpStatus===void 0?{}:{httpStatus:t.httpStatus},...typeof r=="number"&&Number.isFinite(r)?{businessCode:r}:{}}}function we(t){return Number.isInteger(t)&&t>=400&&t<=599?t:502}function Te(t,e){return {code:t.status,msg:t.statusText,data:null,time:Math.floor(e/1e3)}}function Ae(t,e){return {code:502,msg:t instanceof Error?t.message:String(t),data:null,time:Math.floor(e/1e3)}}function Re(t){if(!t||typeof t!="object")return false;let e=t;return Number.isFinite(e.code)&&"data"in e}function Et(t,e,r,n){if(Q(r))return F(q(e.data));if(Z(r))return q(e.data);let o=k(e.data),s=n?t.crypto.decryptAes(o):o,i=new TextDecoder().decode(s);return F(i)}async function Dt(t,e,r){if(!t.onDebugRecord)return;let n={...e.meta,response:e.response,...r?{error:{name:r instanceof Error?r.name:void 0,message:r instanceof Error?r.message:String(r)}}:{}};try{await t.onDebugRecord(n);}catch{}}function he(t,e,r,n,o){if(r.customUrl)return t;let s=h(n,e.config.targets[n]),i=r.baseUrl??s.baseUrl;return xt(i,o,t)}function xe(t,e){let r=new AbortController,n=setTimeout(()=>r.abort(),t),o=()=>r.abort();return e&&(e.aborted?r.abort():e.addEventListener("abort",o,{once:true})),{signal:r.signal,dispose:()=>{clearTimeout(n),e?.removeEventListener("abort",o);}}}async function Ce(t,e,r,n,o,s,i){let u=yt(e.headers),c=Pt(u,"content-type");if(e.status<200||e.status>=300){let l;if(n)l=void 0;else try{l=Et(t,e,c,r);}catch{l=void 0;}return {response:Re(l)?l:Te(e,i),meta:{...o,transportStatus:"http_error",httpStatus:e.status,contentType:c,responseHeaders:u,...l!==void 0?{rawBody:l}:{},timings:{totalMs:i-s,upstreamMs:i-s}}}}let f=Date.now();if(n){let l=k(e.data),p=Date.now();return {response:{code:e.status,data:l,time:Math.floor(p/1e3)},meta:{...o,transportStatus:"success",httpStatus:e.status,contentType:c,responseHeaders:u,rawBody:l,timings:{totalMs:p-s,upstreamMs:i-s,parseMs:p-f}}}}try{if(Q(c)){let T=Et(t,e,c,!1),_=Date.now();return {response:T,meta:{...o,transportStatus:"success",httpStatus:e.status,contentType:c,responseHeaders:u,rawBody:T,timings:{totalMs:_-s,upstreamMs:i-s,parseMs:_-f}}}}if(Z(c)){let T=q(e.data),_=Date.now();return {response:{code:e.status,msg:e.statusText,data:T,time:Math.floor(_/1e3)},meta:{...o,transportStatus:"success",httpStatus:e.status,contentType:c,responseHeaders:u,rawBody:T,timings:{totalMs:_-s,upstreamMs:i-s,parseMs:_-f}}}}let l=k(e.data),p=Date.now(),d=r?t.crypto.decryptAes(l):l,b=Date.now(),g=new TextDecoder().decode(d),D=F(g),B=Date.now();return {response:D,meta:{...o,transportStatus:"success",httpStatus:e.status,contentType:c,responseHeaders:u,rawBody:D,timings:{totalMs:B-s,upstreamMs:i-s,parseMs:B-f,...r?{decryptMs:b-p}:{}}}}}catch(l){let p=Date.now();return {response:{code:we(e.status),msg:l instanceof Error?l.message:String(l),data:null,time:Math.floor(p/1e3)},meta:{...o,transportStatus:"invalid_response",httpStatus:e.status,contentType:c,responseHeaders:u,timings:{totalMs:p-s,upstreamMs:i-s,parseMs:p-f}}}}}function Ie(t){return async function(r,n={}){let o=t.now??(()=>new Date),s=t.randomNonce??(()=>gt),i=t.randomRequestId??(()=>`req-${crypto.randomUUID().replaceAll("-","")}`),u=t.randomETag??(()=>At()),c=(n.method??"POST").toUpperCase(),f=n.target??"core",l=h(f,t.config.targets[f]),p=n.prefix??l.prefix??"",d=n.body!=null,b=Tt(n.data??{}),g=r==="/v1/feedback"&&p==="/bi/h5",D=g?false:n.encrypt??!d,B=g?false:n.sign??!d,T=o(),_=u(),tt=i(),Ut=n.token??await t.getToken?.()??"",Lt=ht(n.locale??t.getLocale?.()),S=t.getBrowserInfo?.()??Rt(n.userAgent),W={app_id:"5",os_type:"4",app_version:t.config.appVersion,sign_method:"md5",timestamp:wt(T),nonce:s()},y={...W,...b},V=W,et=b,x=y;!g&&B&&(y.sign=t.crypto.generateSign("api",t.config.envType,y,_),W.sign=y.sign);let vt={app_version:t.config.appVersion,"X-ENC-VERSION":t.config.appVersion,"X-APP-TYPE":"h5","Client-type":"2","Content-ETag":_,"brand-id":t.config.brandId,"channel-id":n.channelId||t.config.channelId,device_brand:S.deviceBrand,device_info:S.deviceInfo,device_number:S.deviceNumber,device_token:S.deviceToken,lang:Lt,"mch-id":t.config.merchantId,"req-id":tt,token:Ut},Nt=_t(n.headers),Ht=Object.fromEntries(Object.entries(Nt).filter(([A])=>!Pe.has(A.toLowerCase()))),z=r,C,P={...vt,...Ht};if(d)C=n.body??void 0,V=null,et=n.data??null,x=n.data??null;else if(g){let A=String(T.getTime()),w={"app-id":"1","app-version":t.config.appVersion,"sys-type":"h5","sys-version":S.deviceNumber,time:A};V=w,P={...P,...w,sign:dt(t.crypto,w),"Content-Type":"application/json"},C=JSON.stringify(b),x=b;}else c==="GET"?(z=Ct(z,y),x=y):D?(C=t.crypto.encryptAes(new TextEncoder().encode(JSON.stringify(y))),P["Content-Type"]=P["Content-Type"]||"application/octet-stream",x=y):(C=JSON.stringify(y),P["Content-Type"]=P["Content-Type"]||"application/json",x=y);It(C)&&delete P["Content-Type"];let J=he(z,t,n,f,p),Y=Date.now(),rt=n.timeoutMs??6e4,nt=xe(rt,n.signal),ot={requestId:tt,eTag:_,method:c,upstreamUrl:J,requestHeaders:P,requestCommonParams:V,requestBusinessParams:et,requestParams:x},U;try{let A=await t.transport({url:J,method:c,headers:P,body:C,signal:nt.signal,timeoutMs:rt,onUploadProgress:n.onUploadProgress}),w=Date.now(),R=await Ce(t,A,D&&!g,n.responseMode==="raw",ot,Y,w);return n.onResponse&&(U=St(R.meta),R.observation=U),await Dt(t,R),!n.skipBusinessResponseHandler&&t.onBusinessResponse&&await t.onBusinessResponse(R.response,{request:{path:r,method:c,target:f,url:J},options:n}),R}catch(A){let w=Date.now(),R={response:Ae(A,w),...U===void 0?{}:{observation:U},meta:{...ot,transportStatus:"network_error",timings:{totalMs:w-Y,upstreamMs:w-Y}}};return await Dt(t,R,A),R}finally{nt.dispose();}}}function Mt(t){let e=Ie(t);return async function(n,o={}){let s=await e(n,o);return await o.onResponse?.(s.observation??St(s.meta)),s.response}}function kt(t={}){let e={core:h("core",{baseUrl:t.coreBaseUrl||"",...t.targets?.core}),wallet:h("wallet",{baseUrl:t.walletBaseUrl||"",...t.targets?.wallet}),bi:h("bi",{baseUrl:t.biBaseUrl||"",...t.targets?.bi}),im:h("im",{baseUrl:t.imBaseUrl||"",...t.targets?.im})};return {appVersion:t.appVersion||"",brandId:t.brandId||"",merchantId:t.merchantId||"",channelId:t.channelId||"",envType:t.envType||"prod",targets:e}}function Bt(t={}){let e=t.axios??Oe.create();return async r=>{let n=await e.request({url:r.url,method:r.method,headers:r.headers,data:r.body,signal:r.signal,timeout:r.timeoutMs,onUploadProgress:r.onUploadProgress?o=>{let s=typeof o.progress=="number"?o.progress:typeof o.total=="number"&&o.total>0?o.loaded/o.total:void 0;r.onUploadProgress?.({loaded:o.loaded,...typeof o.total=="number"?{total:o.total}:{},...typeof s=="number"?{progress:s}:{},event:o});}:void 0,responseType:"arraybuffer",transformResponse:o=>o,validateStatus:()=>true});return {status:n.status,statusText:n.statusText,headers:n.headers,data:n.data}}}async function Xe(t={}){let e=await X(),r=kt(t.config);return Mt({...t,config:r,crypto:e,transport:t.transport??Bt()})}export{Xe as createBrowserApiProtocolClient};
|