k2-im 0.2.6 → 0.2.8
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 +2 -0
- package/dist/chat-kit-pinia.d.ts +1 -0
- package/dist/chat-kit.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/modules/im-browser/src/http/directory-http-adapter.js +1 -1
- package/dist/sdk.d.ts +1 -0
- package/dist/vendor/crypto/index_bg.wasm +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,6 +39,8 @@ const encrypted = crypto.encryptAes(new TextEncoder().encode(JSON.stringify(payl
|
|
|
39
39
|
|
|
40
40
|
H5 的 `common/net/crypto` 仅保留原函数名的兼容转发,不再保存另一份 WASM 或生成胶水。PC 的 workspace 协议客户端仍直接消费 `@k2/crypto/browser`,其请求客户端由宿主注入 IM,共享该实现的模块缓存。请求 WASM 与消息 RSA/TEA、媒体指纹 `hash-wasm` 职责不同。
|
|
41
41
|
|
|
42
|
+
请求 WASM 使用固定协议基准生成不依赖 SIMD 的标量制品;local/public 构建均校验实际携带的字节。来源、可复现转换和新旧协议对照见 [请求加密制品](../crypto/README.md)。这项兼容修复不等于所有旧版 iOS 已完成产品验收。
|
|
43
|
+
|
|
42
44
|
可以运行 `node scripts/check-im-request-crypto.mjs --consumer-root <已安装 SDK 的消费者目录>` 检查独立入口的真实 Rspack 依赖图;生成页面验证普通请求初始化后,延后加载 IM 并发请求不会再次获取和实例化 WASM。此验证使用合成数据和 mock transport,不代表真实后端或首屏耗时测试。
|
|
43
45
|
|
|
44
46
|
## 国际化(i18n)
|
package/dist/chat-kit-pinia.d.ts
CHANGED
|
@@ -1755,6 +1755,7 @@ interface ImDirectoryItem<TKind extends ImDirectoryKind = ImDirectoryKind> {
|
|
|
1755
1755
|
displayName: string;
|
|
1756
1756
|
cardDisplayName: string;
|
|
1757
1757
|
avatarUrl?: string;
|
|
1758
|
+
/** 面向用户展示的账号;HTTP 目录优先映射 mid(金刚号),与内部 id 分开。 */
|
|
1758
1759
|
username?: string;
|
|
1759
1760
|
}
|
|
1760
1761
|
/** HTTP adapter 返回的页;页码只在 port 内可见,不进入产品 API。 */
|
package/dist/chat-kit.d.ts
CHANGED
|
@@ -1752,6 +1752,7 @@ interface ImDirectoryItem<TKind extends ImDirectoryKind = ImDirectoryKind> {
|
|
|
1752
1752
|
displayName: string;
|
|
1753
1753
|
cardDisplayName: string;
|
|
1754
1754
|
avatarUrl?: string;
|
|
1755
|
+
/** 面向用户展示的账号;HTTP 目录优先映射 mid(金刚号),与内部 id 分开。 */
|
|
1755
1756
|
username?: string;
|
|
1756
1757
|
}
|
|
1757
1758
|
/** HTTP adapter 返回的页;页码只在 port 内可见,不进入产品 API。 */
|
package/dist/index.d.ts
CHANGED
|
@@ -1793,6 +1793,7 @@ interface ImDirectoryItem<TKind extends ImDirectoryKind = ImDirectoryKind> {
|
|
|
1793
1793
|
displayName: string;
|
|
1794
1794
|
cardDisplayName: string;
|
|
1795
1795
|
avatarUrl?: string;
|
|
1796
|
+
/** 面向用户展示的账号;HTTP 目录优先映射 mid(金刚号),与内部 id 分开。 */
|
|
1796
1797
|
username?: string;
|
|
1797
1798
|
}
|
|
1798
1799
|
/** HTTP adapter 返回的页;页码只在 port 内可见,不进入产品 API。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{requestCoreJson as e}from"./requests/core-json-request.js";class i extends Error{constructor(e){super(e),this.name="DirectoryMappingError"}}function r(e,r){if(null===e||"object"!=typeof e||Array.isArray(e))throw new i(`${r} 必须是对象`);return e}function n(e){return"string"==typeof e||"number"==typeof e?String(e).trim():""}function t(e){const i=n(e);return""===i?void 0:i}function a(e){const a=r(e,"联系人目录项"),o=void 0===a.user_info?a:r(a.user_info,"联系人 user_info"),d=n(o.user_id??a.friend_user_id??a.user_id);if(""===d)throw new i("联系人目录项缺少稳定 user_id");const s=n(a.remark_name)||n(a.contact_name)||n(o.nick_name)||n(o.username)||n(o.mid)||d,u=n(o.nick_name)||n(o.username)||n(o.mid)||d,c=t(o.head_img_url),p=t(o.
|
|
1
|
+
import{requestCoreJson as e}from"./requests/core-json-request.js";class i extends Error{constructor(e){super(e),this.name="DirectoryMappingError"}}function r(e,r){if(null===e||"object"!=typeof e||Array.isArray(e))throw new i(`${r} 必须是对象`);return e}function n(e){return"string"==typeof e||"number"==typeof e?String(e).trim():""}function t(e){const i=n(e);return""===i?void 0:i}function a(e){const a=r(e,"联系人目录项"),o=void 0===a.user_info?a:r(a.user_info,"联系人 user_info"),d=n(o.user_id??a.friend_user_id??a.user_id);if(""===d)throw new i("联系人目录项缺少稳定 user_id");const s=n(a.remark_name)||n(a.contact_name)||n(o.nick_name)||n(o.username)||n(o.mid)||d,u=n(o.nick_name)||n(o.username)||n(o.mid)||d,c=t(o.head_img_url),p=t(o.mid)??t(o.username);return{id:d,kind:"individual",displayName:s,cardDisplayName:u,...void 0===c?{}:{avatarUrl:c},...void 0===p?{}:{username:p}}}function o(e){const a=r(e,"群组目录项"),o=n(a.group_id);if(""===o)throw new i("群组目录项缺少稳定 group_id");const d=t(a.head_img_url),s=n(a.name)||o;return{id:o,kind:"group",displayName:s,cardDisplayName:s,...void 0===d?{}:{avatarUrl:d}}}function d(e){const a=r(e,"社群目录项"),o=n(a.radio_id??a.id);if(""===o)throw new i("社群目录项缺少稳定 radio_id/id");const d=t(a.head_img_url),s=n(a.name)||o;return{id:o,kind:"channel",displayName:s,cardDisplayName:s,...void 0===d?{}:{avatarUrl:d}}}function s(r){return{async list(n){!function(e,r){if(!Number.isSafeInteger(e)||e<1)throw new i("目录 page 必须是正整数");if(!Number.isSafeInteger(r)||r<1||r>100)throw new i("目录 pageSize 必须是 1-100 的整数")}(n.page,n.pageSize);const t="individual"===n.kind?"/friend/list":"group"===n.kind?"/user_group/list":"/user_radio/list",s="channel"===n.kind&&void 0!==r.getUserId?String(await r.getUserId()).trim():"",u=(await e(r.client,t,{...""===s?{}:{user_id:s},update_version:0,page:n.page,page_size:n.pageSize},{responseMode:"strict",method:"GET",...void 0===r.clientType?{}:{headers:{"Client-type":String(r.clientType)}}})).data??[];if(!Array.isArray(u))throw new i(`${n.kind} 目录 data 必须是数组`);const c="individual"===n.kind?a:"group"===n.kind?o:d,p=/* @__PURE__ */new Map;for(const e of u){const i=c(e);p.set(i.id,i)}const m=u.length<n.pageSize;return{items:[...p.values()],...m?{}:{nextPage:n.page+1},exhausted:m}}}}export{i as DirectoryMappingError,s as createDirectoryHttpAdapter};
|
package/dist/sdk.d.ts
CHANGED
|
@@ -1597,6 +1597,7 @@ interface ImDirectoryItem<TKind extends ImDirectoryKind = ImDirectoryKind> {
|
|
|
1597
1597
|
displayName: string;
|
|
1598
1598
|
cardDisplayName: string;
|
|
1599
1599
|
avatarUrl?: string;
|
|
1600
|
+
/** 面向用户展示的账号;HTTP 目录优先映射 mid(金刚号),与内部 id 分开。 */
|
|
1600
1601
|
username?: string;
|
|
1601
1602
|
}
|
|
1602
1603
|
|
|
Binary file
|