# @corva/chat-core 中文文档

规范地址：https://npmcn.com/package/%40corva/chat-core/

版本：0\.1\.19
npm 元数据更新时间：2026-11-10T17:34:17.024Z
中文译文更新时间：2026-11-10T20:19:16.093Z
软件包许可：UNLICENSED

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40corva/chat-core
原文对照：https://npmcn.com/package/%40corva/chat-core/?lang=original
项目主页：https://github.com/corva-ai/corva-chat-core#readme
源码仓库：https://github.com/corva-ai/corva-chat-core

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：873 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^24
- 运行依赖：2 个
- peer 依赖：zustand ^4\.5\.0 \|\| ^5\.0\.0
- 首次发布：2026-09-24T14:36:26.012Z
- 最新版本发布：2026-11-10T17:34:16.811Z
- 近 30 天下载量：4422（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：20（近 12 个月 20 个）

## 中文简介

Corva Team Chat的平台不可知核心,由网络和移动应用程序共享

## 安装

```sh
npm install @corva/chat-core
```

也可以使用：`pnpm add @corva/chat-core`、`yarn add @corva/chat-core`、`bun add @corva/chat-core`

## README

# @corva/聊天核心

Corva Team Chat 的平台-不可知核心,由 [网络前端](https://github.com/corva-ai/corva-web-frontend) 财务报告和审定财务报表 [corva- react-native-app (英语)](https://github.com/corva-ai/corva-react-native-app)。 。 。 .

它持有所有不是UI的东西:Revolt/Stoat API和socket客户端,聊天商店,以及 `$$CORVA::` 信件有线格式。 每个应用程序都会在它上面做自己的UI.

## 规则

-   **无平台环球.** 类型环境是 `es2022` 只有,没有DOM或节点类型。 唯一一个 允许环球是定时器, `console` 财务报告和审定财务报表 `requestAnimationFrame` 已声明 `src/platform.d.ts` 财务报告和审定财务报表 `src/raf.d.ts`。 。 。 . `fetch`, (中文(简体) ), `WebSocket`, (中文(简体) ), 存储,通知和app状态事件由主机应用程序通过适配器注入.
-   **没有反应.** 存储使用 `zustand/vanilla`每个应用程序都用自己的钩子包裹它们.
-   **无用户界面依赖性** (单位:千美元)`@corva/ui`, MUI, 反应原生).

运行时间依赖性也必须通过 `main` 字段:移动应用程序运行 Metro 软件包 `exports` 关闭,这就是为什么 `uuid` 仅停留在v11(v12+)上 `exports`) (中文(简体) ).

主机必须提供全球 `crypto.getRandomValues` 页:1 `uuid`:浏览器有它,移动 应用程序安装到 `polyfillWebCrypto()` 从 `expo-standard-web-crypto` 在其根布局中.

林特和打字检查执行这些规则.

## 设置

打电话 `configureChat(host)` 一旦在应用启动, 在触摸任何商店之前, 然后 `ensureChatSession(corvaUser)` 以 :

```ts
import { configureChat, ensureChatSession } from '@corva/chat-core';

configureChat({
  apiUrl, // Revolt REST, e.g. https://stoat.corva.ai/api
  wsUrl, // Revolt events, e.g. wss://stoat.corva.ai/ws
  platform, // ChatPlatform, see below
  storage, // KeyValueStorage: localStorage on web
  corvaApi, // { get, post } against corva-api with the Corva JWT
  appState, // { isHidden, isInactive, subscribe, onTerminate? }
  dates, // { startOfTomorrowAt(hour, now) } in the user's timezone
  notifier, // optional { showIncomingMessage, onMessageSent, onLogout }
});

await ensureChatSession(corvaUser);
```

| 主办成员 | 网页 | 原生反应 |
| --- | --- | --- |
| `storage` | `localStorage` | MMKV,或水合模版地图 |
| `corvaApi` | `apiCore` 编号 : `jsonApi` (单位:千美元)`get` 重复数组键) | 应用程序 `ApiClient` |
| `appState` | `visibilityState`, (中文(简体) ), `hasFocus()`, (中文(简体) ), `pagehide` | `AppState` (单位:千美元)`background` 隐藏数) |
| `dates` | `moment` 使用时区默认值 | `date-fns` 在设备时区 |
| `notifier` | 浏览器通知 + 声音, 通知提示, favicon | 推/当地通知、徽章 |

仓库是 `zustand/vanilla` 库存(`roomStore`, (中文(简体) ), `messageStore`(中文(简体) ). React Apps 包装它们:

```ts
import { useStore } from 'zustand';
import { roomStore } from '@corva/chat-core';

export const useRoomStore = <T>(selector: (state: ReturnType<typeof roomStore.getState>) => T) =>
  useStore(roomStore, selector);
```

## 平台适配器

`ChatPlatform` (单位:千美元)`src/platform/types.ts`)是东道主的运输部分,也是由下列人员直接取走的: `createRevoltAPI` 财务报告和审定财务报表 `createRevoltSocket`数字 :

| 成员 | 网页 | 原生反应 |
| --- | --- | --- |
| `fetch` | `(url, init) => fetch(url, init)` | 不变 |
| `createWebSocket` | `url => new WebSocket(url)` | 不变 |
| `createUploadBody` | `FormData` 与 `File` | `FormData` 与 `{ uri, name, type }` |
| `subscribeReconnectHints` | `online` + 键 `visibilitychange` | 网络信息+ `AppState` `active` |

`typecheck/browserPlatform.ts` 是一个只编译的参考网页适配器(平台和app状态),可以证明浏览器API适配.

## 发展

```sh
nvm use
yarn install
yarn test        # vitest, node environment
yarn lint        # eslint + prettier
yarn typecheck
yarn build       # tsup → dist/ (ESM + .d.ts)
```

### 在应用程序中尝试本地构建

```sh
yarn build && npx yalc publish      # in this repo
npx yalc add @corva/chat-core       # in the consuming app
```

## 出版

```sh
npm version patch   # or minor / major
npm publish         # prepublishOnly runs lint, typecheck, tests, build and package checks
git push --follow-tags
```

在应用程序中测试分支的加那利建筑 :

```sh
npm version 0.0.0-$(git rev-parse --short HEAD) --no-git-tag-version
npm publish --tag canary && git checkout package.json
```

## 常见问题

### @corva/chat-core 是什么？

Corva Team Chat的平台不可知核心,由网络和移动应用程序共享

### 如何安装 @corva/chat-core？

在项目目录运行 npm install @corva/chat-core，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：zustand（^4\.5\.0 \|\| ^5\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @corva/chat-core 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @corva/chat-core 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @corva/chat-core 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^24。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @corva/chat-core 可以商用吗？

@corva/chat-core 使用 UNLICENSED 许可。作者声明为 UNLICENSED，即不授予公开使用许可（与公共领域的 Unlicense 不同）。使用前需获得作者授权。以上为概括，不构成法律意见，请以许可原文为准。

### @corva/chat-core 的下载量有多少？

根据 npm 官方下载统计，@corva/chat-core 在 2026/10/11 – 2026/11/09 这 30 天内被下载 4,422 次，日均约 147 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @corva/chat-core 还在维护吗？

最新版本 0\.1\.19 发布于 2026/11/11（今天）；至今共发布 20 个版本，其中过去 12 个月发布了 20 个；首次发布于 2026/09/24。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

