k2-im 0.1.19 → 0.1.21
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 +36 -0
- package/dist/browser.js +1 -1
- package/dist/chat-kit-pinia.d.ts +349 -24
- package/dist/chat-kit-pinia.js +1 -1
- package/dist/chat-kit-vue.d.ts +92 -6
- package/dist/chat-kit-vue.js +1 -1
- package/dist/chat-kit.d.ts +429 -30
- package/dist/chat-kit.js +1 -1
- package/dist/chunk-2GZMQCIP.js +1 -0
- package/dist/chunk-4X7RCGEV.js +1 -0
- package/dist/chunk-5I7S6LWE.js +2 -0
- package/dist/chunk-A2BLOVZ5.js +2 -0
- package/dist/chunk-DN4H5C7G.js +2 -0
- package/dist/chunk-P4HOR4XO.js +1 -0
- package/dist/chunk-YAM4YHKF.js +7 -0
- package/dist/i18n.d.ts +140 -7
- package/dist/i18n.js +1 -1
- package/dist/index.d.ts +574 -38
- package/dist/index.js +1 -1
- package/dist/sdk.d.ts +377 -24
- package/dist/sdk.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-CD5SF7WI.js +0 -1
- package/dist/chunk-KLEMN4CG.js +0 -1
- package/dist/chunk-NBLASAT2.js +0 -2
- package/dist/chunk-NVF5RDHB.js +0 -2
- package/dist/chunk-ULJD6ZA3.js +0 -7
- package/dist/chunk-W2FKET4Z.js +0 -1
- package/dist/chunk-YPS6Y5ZY.js +0 -1
package/dist/i18n.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ interface ConversationRef<TType extends ConversationType = ConversationType> {
|
|
|
32
32
|
conversationId: string;
|
|
33
33
|
}
|
|
34
34
|
/** 消息内容类型。sticker=表情/贴图(BMessage contentType=7);call=单聊通话记录(contentType=10);transfer=转账(contentType=16);miniProgram=小程序分享卡(contentType=22);redPacket=红包卡(contentType=25);game=小游戏(contentType=27);未知 wire 正文统一归一为 unknown。 */
|
|
35
|
-
type MessageContentType = 'text' | 'system' | 'image' | 'video' | 'voice' | 'file' | 'sticker' | 'contact' | 'miniProgram' | 'game' | 'transfer' | 'call' | 'redPacket' | 'unknown';
|
|
35
|
+
type MessageContentType = 'text' | 'system' | 'image' | 'video' | 'voice' | 'file' | 'sticker' | 'contact' | 'miniProgram' | 'game' | 'transfer' | 'call' | 'redPacket' | 'mediaAlbum' | 'unknown';
|
|
36
36
|
/**
|
|
37
37
|
* 发送态(客户端态):消息从本地创建到服务端确认的生命周期。
|
|
38
38
|
* `uploading` 仅媒体消息使用:文件上传阶段(uploading→pending→sending→sent);
|
|
@@ -42,7 +42,7 @@ type MessageSendStatus = 'pending' | 'uploading' | 'sending' | 'sent' | 'failed'
|
|
|
42
42
|
/** 送达/已读态(服务端态):消息在对端的回执状态。 */
|
|
43
43
|
type MessageReceipt = 'unread' | 'delivered' | 'read';
|
|
44
44
|
/** 群系统提示事件类型(结构化语义;UI/i18n 层据此渲染文案,**不在 mapper 写死中文**)。 */
|
|
45
|
-
type ImSystemEventType = 'direct_contact_established' | 'direct_contact_required' | 'direct_message_refused' | 'group_info_changed' | 'group_activated' | 'group_member_joined' | 'group_member_invited' | 'group_member_left' | 'group_member_removed' | 'group_master_changed' | 'group_dismissed' | 'group_member_renamed' | 'group_message_pinned' | 'group_message_unpinned' | 'channel_name_changed' | 'channel_avatar_changed' | 'channel_announcement_changed' | 'channel_member_joined' | 'channel_member_invited' | 'channel_member_left' | 'channel_member_removed' | 'channel_owner_transferred' | 'channel_admin_added' | 'channel_admin_removed' | 'channel_dismissed' | 'channel_all_muted' | 'channel_all_unmuted' | 'channel_created' | 'channel_private_chat_disabled' | 'channel_private_chat_enabled' | 'channel_member_renamed' | 'channel_member_muted' | 'channel_member_unmuted' | 'channel_message_pinned' | 'channel_message_unpinned' | 'channel_unknown' | 'red_packet_claimed' | 'red_packet_claimed_thunder' | 'unknown';
|
|
45
|
+
type ImSystemEventType = 'direct_contact_established' | 'direct_contact_required' | 'direct_message_refused' | 'group_info_changed' | 'group_activated' | 'group_member_joined' | 'group_member_invited' | 'group_member_left' | 'group_member_removed' | 'group_master_changed' | 'group_dismissed' | 'group_member_renamed' | 'group_message_pinned' | 'group_message_unpinned' | 'group_call_started' | 'group_call_ended' | 'group_call_missed' | 'channel_name_changed' | 'channel_avatar_changed' | 'channel_announcement_changed' | 'channel_member_joined' | 'channel_member_invited' | 'channel_member_left' | 'channel_member_removed' | 'channel_owner_transferred' | 'channel_admin_added' | 'channel_admin_removed' | 'channel_dismissed' | 'channel_all_muted' | 'channel_all_unmuted' | 'channel_created' | 'channel_private_chat_disabled' | 'channel_private_chat_enabled' | 'channel_member_renamed' | 'channel_member_muted' | 'channel_member_unmuted' | 'channel_message_pinned' | 'channel_message_unpinned' | 'channel_unknown' | 'red_packet_claimed' | 'red_packet_claimed_thunder' | 'unknown';
|
|
46
46
|
/** 系统提示结构化内容(contentType==='system'):存语义,不把最终中文句子当主数据源(UI/composable 据 eventType + 资料生成文案)。 */
|
|
47
47
|
interface ImSystemMessageBody {
|
|
48
48
|
eventType: ImSystemEventType;
|
|
@@ -109,6 +109,23 @@ type LastMessageSummary = {
|
|
|
109
109
|
} | {
|
|
110
110
|
kind: 'voice';
|
|
111
111
|
durationMs?: number;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 媒体合集(contentType 28)。
|
|
115
|
+
*
|
|
116
|
+
* 只给结构化计数与配文,**不在这里拼「2 张照片, 1 个视频」这种文案**——中英文的量词、复数与
|
|
117
|
+
* 连接符各不相同,必须由 im-i18n 按 locale 组装。`caption` 非空时宿主优先显示配文(对齐三端)。
|
|
118
|
+
*
|
|
119
|
+
* `firstItemKind` 是第一项是照片还是视频。有配文时列表显示的是配文,光看计数无法决定该配
|
|
120
|
+
* 照片图标还是视频图标,三端统一按第一项取(对齐 iOS `IMMediaAlbumMessageBody`)。
|
|
121
|
+
* 入站解析后所有项都被丢弃时缺省,宿主据此不显示类型图标。
|
|
122
|
+
*/
|
|
123
|
+
| {
|
|
124
|
+
kind: 'mediaAlbum';
|
|
125
|
+
imageCount: number;
|
|
126
|
+
videoCount: number;
|
|
127
|
+
caption?: string;
|
|
128
|
+
firstItemKind?: 'image' | 'video';
|
|
112
129
|
} | {
|
|
113
130
|
kind: 'encrypted';
|
|
114
131
|
} | {
|
|
@@ -405,6 +422,59 @@ interface UnknownMessageBody {
|
|
|
405
422
|
reason: 'unsupported-content-type' | 'malformed-content';
|
|
406
423
|
}
|
|
407
424
|
/** 按 contentType 的结构化内容体。 */
|
|
425
|
+
/**
|
|
426
|
+
* 媒体合集单项:一张图片或一个视频。
|
|
427
|
+
*
|
|
428
|
+
* 对应协议 `content` JSON 里 `items[]` 的一个元素(wire `mediaType` 1=图片 2=视频)。
|
|
429
|
+
* 与 `ImImageBody` / `ImVideoBody` 的区别是它**不是**独立的一条消息——同一条合集消息里的
|
|
430
|
+
* 若干项共享消息级的撤回、已读、引用与转发语义。
|
|
431
|
+
*/
|
|
432
|
+
interface ImMediaAlbumItem {
|
|
433
|
+
/** 该项是图片还是视频;由协议 `mediaType` 归一而来,未知取值的项在解析阶段已被丢弃。 */
|
|
434
|
+
kind: 'image' | 'video';
|
|
435
|
+
/** 远端地址。加密项也是这个地址,解密用本项自己的 `teaKey`。 */
|
|
436
|
+
url: string;
|
|
437
|
+
/** 原始像素宽。宫格按它判定朝向,为 0 时宿主用兜底几何。 */
|
|
438
|
+
width: number;
|
|
439
|
+
/** 原始像素高。 */
|
|
440
|
+
height: number;
|
|
441
|
+
/**
|
|
442
|
+
* 视频时长,**毫秒**。
|
|
443
|
+
*
|
|
444
|
+
* 协议 `items[].duration` 本身就是毫秒,这里不做换算——注意这与单视频消息
|
|
445
|
+
* `ImVideoBody.duration`(秒)单位不同,所以刻意用 `durationMs` 命名区分。图片项没有此字段。
|
|
446
|
+
*/
|
|
447
|
+
durationMs?: number;
|
|
448
|
+
/** 远端缩略图地址;可能缺省,此时只能用 `thumbData`。 */
|
|
449
|
+
thumbUrl?: string;
|
|
450
|
+
/** 内嵌缩略图/封面 JPEG 字节。加密消息服务端出不了封面,宫格首屏只能靠它。 */
|
|
451
|
+
thumbData?: Uint8Array;
|
|
452
|
+
/** 原文件 MD5。 */
|
|
453
|
+
md5?: string;
|
|
454
|
+
/** 原文件大小(字节)。 */
|
|
455
|
+
size?: number;
|
|
456
|
+
/** 本项的文件解密 TEA key;`fileEncryptType` 为 0/2/3 时必有。 */
|
|
457
|
+
teaKey?: Uint8Array;
|
|
458
|
+
/** 文件加密类型:0=跟随消息 1=不加密 2=前 32 字节 TEA 3=完整 TEA。 */
|
|
459
|
+
fileEncryptType?: number;
|
|
460
|
+
/** 发送方勾选了「原图」。仅作展示角标,不影响下载与解密。 */
|
|
461
|
+
hd?: boolean;
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* 媒体合集正文(`contentType === 'mediaAlbum'`,协议 28)。
|
|
465
|
+
*
|
|
466
|
+
* 一条消息同时承载一段可选配文和 1–9 个图片/视频项。产品上的「图文消息」就是
|
|
467
|
+
* `items.length === 1 && caption` 非空的情形,所以**分档判断一律看 `items.length`,不要看 contentType**。
|
|
468
|
+
*
|
|
469
|
+
* `items` 为空数组只会出现在入站解析残缺时(所有项的 `mediaType` 都不认识,或都无法解密);
|
|
470
|
+
* 这种正文不可出站——出站编码会显式拒绝,避免把坏消息转发出去。
|
|
471
|
+
*/
|
|
472
|
+
interface ImMediaAlbumBody {
|
|
473
|
+
/** 配文;缺省与空串等价,出站不写空串。 */
|
|
474
|
+
caption?: string;
|
|
475
|
+
/** 媒体项,顺序即用户选择顺序(决定宫格 index 与首项朝向)。 */
|
|
476
|
+
items: readonly ImMediaAlbumItem[];
|
|
477
|
+
}
|
|
408
478
|
interface ImMessageBody {
|
|
409
479
|
/** P0 文本内容(明文,解密后的结果)。 */
|
|
410
480
|
text?: string;
|
|
@@ -432,6 +502,8 @@ interface ImMessageBody {
|
|
|
432
502
|
call?: ImCallRecordBody;
|
|
433
503
|
/** contentType==='redPacket' 时的红包卡片。 */
|
|
434
504
|
redPacket?: ImRedPacketBody;
|
|
505
|
+
/** contentType==='mediaAlbum' 时的媒体合集正文(配文 + 1~9 个图片/视频项)。 */
|
|
506
|
+
mediaAlbum?: ImMediaAlbumBody;
|
|
435
507
|
/** contentType==='unknown' 时的稳定未知正文,不含原始 wire type。 */
|
|
436
508
|
unknown?: UnknownMessageBody;
|
|
437
509
|
}
|
|
@@ -466,7 +538,7 @@ type ImMessageFailureReason = 'timeout' | 'rejected' | 'encrypt_failed' | 'netwo
|
|
|
466
538
|
* 失败**展示语义**码(强类型枚举,非裸串):供 im-i18n 按 locale 渲染失败气泡文案。
|
|
467
539
|
* 由 `reason` / `SendMediaFailReason` / ACK errcode 穷尽映射而来,与 im-i18n failure catalog 键一一对应(media.* 带 mediaKind 参数)。
|
|
468
540
|
*/
|
|
469
|
-
type ImFailureDisplayCode = 'media.empty' | 'media.noCrypto' | 'media.previewFailed' | 'media.encryptFailed' | 'media.uploadFailed' | 'media.cancelled' | 'media.invalidDuration' | 'media.uploadInterrupted' | 'contactRequired' | 'messageRefused' | 'forbiddenOrLeft' | 'contentRejected' | 'groupDismissed' | 'groupUnavailable' | 'channelDismissed' | 'channelMuted' | 'channelNotMember' | 'channelAdminRequired' | 'conversationUnsupported' | 'sendCanceled' | 'sessionLoggedOut' | 'timeout' | 'network' | 'unknown';
|
|
541
|
+
type ImFailureDisplayCode = 'media.empty' | 'media.noCrypto' | 'media.previewFailed' | 'media.encryptFailed' | 'media.uploadFailed' | 'media.cancelled' | 'media.invalidDuration' | 'media.uploadInterrupted' | 'media.contentTooLarge' | 'contactRequired' | 'messageRefused' | 'forbiddenOrLeft' | 'contentRejected' | 'groupDismissed' | 'groupUnavailable' | 'channelDismissed' | 'channelMuted' | 'channelNotMember' | 'channelAdminRequired' | 'conversationUnsupported' | 'sendCanceled' | 'sessionLoggedOut' | 'timeout' | 'network' | 'unknown';
|
|
470
542
|
interface ImMessageFailure {
|
|
471
543
|
/** 归一后的错误码(来自 MESChatAck.errcode 或本地失败码,本地码用负值)。 */
|
|
472
544
|
code: number;
|
|
@@ -723,6 +795,14 @@ interface ImSystemCatalog {
|
|
|
723
795
|
groupMessagePinned: string;
|
|
724
796
|
/** 移除置顶。参数:{operator}。 */
|
|
725
797
|
groupMessageUnpinned: string;
|
|
798
|
+
/** 自己发起群通话。对齐 Android `you_started_a_group_call` / iOS `rea_yousendgroupmediasession`。 */
|
|
799
|
+
groupCallStartedBySelf: string;
|
|
800
|
+
/** 他人发起群通话。参数:{operator}。对齐 Android `somebody_started_a_group_call` / iOS `rea_othersendgroupmediasession`。 */
|
|
801
|
+
groupCallStarted: string;
|
|
802
|
+
/** 群通话已结束。对齐 Android `group_cal_ended` / iOS `rea_grouphaveend`。 */
|
|
803
|
+
groupCallEnded: string;
|
|
804
|
+
/** 群通话未接听。对齐 Android `group_call_missed` / iOS `rea_groupunconnect`。 */
|
|
805
|
+
groupCallMissed: string;
|
|
726
806
|
channelNameChanged: string;
|
|
727
807
|
channelAvatarChanged: string;
|
|
728
808
|
channelAnnouncementChanged: string;
|
|
@@ -802,6 +882,19 @@ interface ImMediaCatalog {
|
|
|
802
882
|
gameDice: string;
|
|
803
883
|
/** 石头剪刀布消息的回复摘要。 */
|
|
804
884
|
gameRockPaperScissors: string;
|
|
885
|
+
/**
|
|
886
|
+
* 媒体合集:多张照片,参数 `{count}`(≥2;恰好 1 项时复用 `image`,避免每种语言再写一套单数模板)。
|
|
887
|
+
*
|
|
888
|
+
* 这一组与 `lastMessage.mediaAlbum*` 现在是**同一份词**(都不带方括号,决策 D26)。两边仍保留
|
|
889
|
+
* 各自的 key,是因为两个界面的其它类型并不一致:会话列表给没有图标的类型加方括号,回复摘要一律不加。
|
|
890
|
+
* 有配文的合集显示配文而不是这些文案,但那是调用方的取舍——与单视频消息的 `describe` 一样,
|
|
891
|
+
* `formatMediaPlaceholder` 只负责类型占位,不读正文文本。
|
|
892
|
+
*/
|
|
893
|
+
mediaAlbumPhotos: string;
|
|
894
|
+
/** 媒体合集:多个视频,参数 `{count}`(≥2;恰好 1 项时复用 `video`)。 */
|
|
895
|
+
mediaAlbumVideos: string;
|
|
896
|
+
/** 媒体合集:图片与视频混合,参数 `{photoCount}` `{videoCount}`(各语言自行决定量词与连接符)。 */
|
|
897
|
+
mediaAlbumMixed: string;
|
|
805
898
|
}
|
|
806
899
|
/** 失败气泡文案(formatFailure 用;逐字对齐 core 现有 ImMessageFailure.message,阶段 4b 零回归)。 */
|
|
807
900
|
interface ImFailureCatalog {
|
|
@@ -823,6 +916,12 @@ interface ImFailureCatalog {
|
|
|
823
916
|
mediaInvalidDuration: string;
|
|
824
917
|
/** media.uploadInterrupted,参数 {label}。 */
|
|
825
918
|
mediaUploadInterrupted: string;
|
|
919
|
+
/**
|
|
920
|
+
* media.contentTooLarge:媒体合集的出站正文体积未通过发送前闸门。
|
|
921
|
+
*
|
|
922
|
+
* 与其它 media.* 不同,**不带 {label}**——一条合集里可能同时有照片和视频,没有单一媒体类型名。
|
|
923
|
+
*/
|
|
924
|
+
mediaContentTooLarge: string;
|
|
826
925
|
/** direct 0x8201:双方已不是好友。 */
|
|
827
926
|
contactRequired: string;
|
|
828
927
|
/** direct 0x8212:消息因对方黑名单策略被拒收。 */
|
|
@@ -851,13 +950,23 @@ interface ImFailureCatalog {
|
|
|
851
950
|
network: string;
|
|
852
951
|
unknown: string;
|
|
853
952
|
}
|
|
854
|
-
/**
|
|
953
|
+
/**
|
|
954
|
+
* 会话列表预览文案(formatLastMessageSummary 用;system 复用 formatSystemMessage 带名版)。
|
|
955
|
+
*
|
|
956
|
+
* 方括号只保留给**列表里不带类型图标**的那些:语音、文件、名片、小程序、转账、通话、红包、
|
|
957
|
+
* 小游戏、加密、不支持。它们没有图标,方括号是唯一能和「对方真的发了『语音』两个字」区分开的标记。
|
|
958
|
+
*
|
|
959
|
+
* 照片、视频、GIF、贴图和媒体合集在 PC/H5 会话列表里都带 16px 类型图标(设计稿 13328:305728),
|
|
960
|
+
* 图标已经表明类型,所以文案不带方括号、与回复摘要 `media.*` 用同一份词(决策 D26)。
|
|
961
|
+
*/
|
|
855
962
|
interface ImLastMessageCatalog {
|
|
963
|
+
/** 单张照片,与 `media.image` 同词;列表里前面带照片图标,不加方括号。 */
|
|
856
964
|
image: string;
|
|
857
|
-
/** GIF 会话摘要,例如 `
|
|
965
|
+
/** GIF 会话摘要,例如 `GIF`;列表里前面带 GIF 图标。 */
|
|
858
966
|
gif: string;
|
|
859
|
-
/** 静态贴图会话摘要,例如
|
|
967
|
+
/** 静态贴图会话摘要,例如 `贴图`;列表里前面带贴图图标。 */
|
|
860
968
|
sticker: string;
|
|
969
|
+
/** 单个视频,与 `media.video` 同词;列表里前面带视频图标。 */
|
|
861
970
|
video: string;
|
|
862
971
|
voice: string;
|
|
863
972
|
file: string;
|
|
@@ -874,6 +983,15 @@ interface ImLastMessageCatalog {
|
|
|
874
983
|
redPacket: string;
|
|
875
984
|
/** 小游戏消息的统一会话列表摘要;不在列表中暴露骰子/RPS 的具体类型。 */
|
|
876
985
|
game: string;
|
|
986
|
+
/**
|
|
987
|
+
* 媒体合集:多张照片,参数 `{count}`(≥2;恰好 1 项时复用 `image`,避免各语言再写一套单数模板)。
|
|
988
|
+
* 有配文的合集直接显示配文,不用这些 key。合集在列表里带类型图标,所以同样不加方括号。
|
|
989
|
+
*/
|
|
990
|
+
mediaAlbumPhotos: string;
|
|
991
|
+
/** 媒体合集:多个视频,参数 `{count}`(≥2;恰好 1 项时复用 `video`)。 */
|
|
992
|
+
mediaAlbumVideos: string;
|
|
993
|
+
/** 媒体合集:图片与视频混合,参数 `{photoCount}` `{videoCount}`(各语言自行决定量词与连接符)。 */
|
|
994
|
+
mediaAlbumMixed: string;
|
|
877
995
|
encrypted: string;
|
|
878
996
|
/** 未注册或无法解析的正文。 */
|
|
879
997
|
unknown: string;
|
|
@@ -889,7 +1007,7 @@ interface ImLastMessageCatalog {
|
|
|
889
1007
|
* 二期收敛:kit 框架无关层不再直接产中文,改产本联合里的码 + 参数(如 {reason}/{label}/{size}),由宿主经 im-i18n 渲染。
|
|
890
1008
|
* 动态原始报错(error.message)作为 `{reason}` 参数拼接,不入 catalog(属诊断,不翻译)。
|
|
891
1009
|
*/
|
|
892
|
-
type ImServiceTextKey = 'common.notConnected' | 'common.selectOrOpenConversation' | 'common.conversationTypeNotReady' | 'common.conversationNotReady' | `recall.${RecallFailReason}` | `edit.${EditFailReason}` | 'localDelete.done' | 'localDelete.notFound' | 'localDelete.inFlight' | 'localDelete.failed' | 'channelDelete.notFound' | 'channelDelete.unsupported' | 'channelDelete.notSent' | 'channelDelete.unavailable' | 'channelDelete.forbidden' | 'channelDelete.timeout' | 'channelDelete.failed' | 'channelDelete.disconnected' | 'directBlock.contactRequired' | 'groupBlock.left' | 'groupBlock.removed' | 'groupBlock.dismissed' | 'groupBlock.unknownRestricted' | 'channelBlock.guest' | 'channelBlock.left' | 'channelBlock.removed' | 'channelBlock.dismissed' | 'channelBlock.muted' | 'channelBlock.allMembersMuted' | 'channelBlock.currentUserMuted' | 'channelBlock.blacklisted' | 'channelBlock.unknownRestricted' | 'channelProfile.loadFailed' | 'channelProfile.notFound' | 'channelProfile.retryAction' | 'channelMembers.title' | 'channelMembers.searchPlaceholder' | 'channelMembers.loading' | 'channelMembers.loadFailed' | 'channelMembers.retryAction' | 'channelMembers.empty' | 'channelMembers.loadingMore' | 'channelMembers.loadMoreFailed' | 'channelMembers.exhausted' | 'channelMembers.loadMoreAction' | 'label.image' | 'label.video' | 'label.file' | 'label.sticker' | 'send.failed' | 'send.retryFailed' | 'send.cancelFailed' | 'send.mediaFailed' | 'send.mediaEmpty' | 'send.mediaCancelled' | 'send.mediaCountLimit' | 'send.mediaTooLarge' | 'send.videoTooLong' | 'send.videoDurationUnavailable' | 'send.voiceEmpty' | 'send.voiceStorageNotConfigured' | 'send.voiceCancelled' | 'send.voiceFailed' | 'media.voiceNotReady' | 'media.voiceLoadEmpty' | 'media.voiceLoadFailed' | 'media.videoOpenEmpty' | 'media.videoLoadFailed' | 'media.imageInvalid' | 'media.imageLoadFailed' | 'media.fileDownloadEmpty' | 'media.fileDownloadFailed' | 'conversation.muteEnableFailed' | 'conversation.muteDisableFailed' | 'read.markReadFailed' | 'pinned.forbidden' | 'pinned.network' | 'pinned.contract' | 'pinned.unsupported' | 'pinned.failed' | 'pinned.previewUnavailable' | 'pinned.locateFailed' | 'pinned.recalled' | 'pinned.deleted' | 'pinned.protected' | 'pinned.pinAction' | 'pinned.unpinAction' | 'pinned.unpinConfirm' | 'pinned.cancelAction' | 'lifecycle.missingLoginState' | 'lifecycle.prepareFailed' | 'lifecycle.missingConnectParams' | 'lifecycle.connectFailed' | 'lifecycle.disposed' | 'forward.emptyInput' | 'forward.allSkipped' | 'forward.partialSkipped' | 'forward.done' | 'forward.failed';
|
|
1010
|
+
type ImServiceTextKey = 'common.notConnected' | 'common.selectOrOpenConversation' | 'common.conversationTypeNotReady' | 'common.conversationNotReady' | `recall.${RecallFailReason}` | `edit.${EditFailReason}` | 'localDelete.done' | 'localDelete.notFound' | 'localDelete.inFlight' | 'localDelete.failed' | 'channelDelete.notFound' | 'channelDelete.unsupported' | 'channelDelete.notSent' | 'channelDelete.unavailable' | 'channelDelete.forbidden' | 'channelDelete.timeout' | 'channelDelete.failed' | 'channelDelete.disconnected' | 'directBlock.contactRequired' | 'groupBlock.left' | 'groupBlock.removed' | 'groupBlock.dismissed' | 'groupBlock.unknownRestricted' | 'channelBlock.guest' | 'channelBlock.left' | 'channelBlock.removed' | 'channelBlock.dismissed' | 'channelBlock.muted' | 'channelBlock.allMembersMuted' | 'channelBlock.currentUserMuted' | 'channelBlock.blacklisted' | 'channelBlock.unknownRestricted' | 'channelProfile.loadFailed' | 'channelProfile.notFound' | 'channelProfile.retryAction' | 'channelMembers.title' | 'channelMembers.searchPlaceholder' | 'channelMembers.loading' | 'channelMembers.loadFailed' | 'channelMembers.retryAction' | 'channelMembers.empty' | 'channelMembers.loadingMore' | 'channelMembers.loadMoreFailed' | 'channelMembers.exhausted' | 'channelMembers.loadMoreAction' | 'label.image' | 'label.video' | 'label.file' | 'label.sticker' | 'send.failed' | 'send.retryFailed' | 'send.cancelFailed' | 'send.mediaFailed' | 'send.mediaEmpty' | 'send.mediaCancelled' | 'send.mediaCountLimit' | 'send.mediaTooLarge' | 'send.mediaFormatMismatch' | 'send.videoTooLong' | 'send.videoDurationUnavailable' | 'send.voiceEmpty' | 'send.voiceStorageNotConfigured' | 'send.voiceCancelled' | 'send.voiceFailed' | 'media.uploadWaiting' | 'media.voiceNotReady' | 'media.voiceLoadEmpty' | 'media.voiceLoadFailed' | 'media.videoOpenEmpty' | 'media.videoLoadFailed' | 'media.imageInvalid' | 'media.imageLoadFailed' | 'media.fileDownloadEmpty' | 'media.fileDownloadFailed' | 'conversation.muteEnableFailed' | 'conversation.muteDisableFailed' | 'conversation.backgroundLoadFailed' | 'read.markReadFailed' | 'storage.failed' | 'sync.failed' | 'draft.saveFailed' | 'history.returnLatestFailed' | 'pinned.forbidden' | 'pinned.network' | 'pinned.contract' | 'pinned.unsupported' | 'pinned.failed' | 'pinned.previewUnavailable' | 'pinned.locateFailed' | 'pinned.recalled' | 'pinned.deleted' | 'pinned.protected' | 'pinned.pinAction' | 'pinned.unpinAction' | 'pinned.unpinConfirm' | 'pinned.cancelAction' | 'lifecycle.missingLoginState' | 'lifecycle.prepareFailed' | 'lifecycle.missingConnectParams' | 'lifecycle.connectFailed' | 'lifecycle.disposed' | 'forward.emptyInput' | 'forward.allSkipped' | 'forward.partialSkipped' | 'forward.done' | 'forward.failed';
|
|
893
1011
|
/** 命令/生命周期操作提示 catalog(key 齐全,模板含 {reason}/{label}/{size} 占位)。 */
|
|
894
1012
|
type ImServiceCatalog = Record<ImServiceTextKey, string>;
|
|
895
1013
|
/** 星期文案键按 JavaScript `Date#getDay()` 的 Sunday-first 顺序命名。 */
|
|
@@ -985,6 +1103,11 @@ interface ImI18n {
|
|
|
985
1103
|
durationMs?: number;
|
|
986
1104
|
stickerImageType?: number;
|
|
987
1105
|
gameType?: ImGameType;
|
|
1106
|
+
callKind?: 'audio' | 'video';
|
|
1107
|
+
mediaAlbum?: {
|
|
1108
|
+
imageCount: number;
|
|
1109
|
+
videoCount: number;
|
|
1110
|
+
};
|
|
988
1111
|
}) => string;
|
|
989
1112
|
formatMentionAll: () => string;
|
|
990
1113
|
formatFailure: (displayCode: ImFailureDisplayCode, opts?: {
|
|
@@ -1047,6 +1170,16 @@ interface FormatMediaPlaceholderContext {
|
|
|
1047
1170
|
gameType?: ImGameType;
|
|
1048
1171
|
/** 通话记录媒体类型;缺失时不把损坏正文伪装成语音或视频通话。 */
|
|
1049
1172
|
callKind?: 'audio' | 'video';
|
|
1173
|
+
/**
|
|
1174
|
+
* 媒体合集的项数构成;缺失或两个计数都是 0 时返回空串,不假装有内容。
|
|
1175
|
+
*
|
|
1176
|
+
* **不含配文**:与单视频消息的 `describe` 一样,本函数只负责类型占位,正文文本由调用方决定
|
|
1177
|
+
* 要不要优先显示(引用摘要通常会把配文走自己的表情/@ 分段管线,不该从这里绕过去)。
|
|
1178
|
+
*/
|
|
1179
|
+
mediaAlbum?: {
|
|
1180
|
+
imageCount: number;
|
|
1181
|
+
videoCount: number;
|
|
1182
|
+
};
|
|
1050
1183
|
}
|
|
1051
1184
|
/**
|
|
1052
1185
|
* 媒体消息 → 单行占位文案(回复摘要 / 会话预览降级用)。对齐 use-message-preview:
|
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-P4HOR4XO.js';import'./chunk-A2BLOVZ5.js';import'./chunk-WOT6VMZA.js';
|