# @calimero-network/mero-js 中文文档

规范地址：https://npmcn.com/package/%40calimero-network/mero-js/

版本：29\.7\.1
npm 元数据更新时间：2026-11-09T08:59:06.508Z
中文译文更新时间：2026-11-08T23:57:34.814Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40calimero-network/mero-js
原文对照：https://npmcn.com/package/%40calimero-network/mero-js/?lang=original
项目主页：https://github.com/calimero-network/mero-js/blob/master/README.md
源码仓库：https://github.com/calimero-network/mero-js

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

- 包体积（解压后）：1.9 MB，57 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=18\.0\.0
- 运行依赖：1 个
- 首次发布：2026-01-22T16:24:18.177Z
- 最新版本发布：2026-11-09T08:59:06.093Z
- 近 30 天下载量：16907（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：210（近 12 个月 210 个）

## 中文简介

Calimero 1.0 的 JavaScript 客户端: 经认证的 TEE 节点, 一个密封的通道, 密码和 API 密钥

## 安装

```sh
npm install @calimero-network/mero-js
```

也可以使用：`pnpm add @calimero-network/mero-js`、`yarn add @calimero-network/mero-js`、`bun add @calimero-network/mero-js`

## README

# Mero.js — Calimero 1.0 的 JavaScript客户端

JavaScript/ TypeScript 客户端 [卡利梅罗](https://calimero-network.github.io/core/) 1.0, 密论云. `CalimeroClient` 验证一个节点的TDX证明, 封存每一份结束的请求(Noise NK, `calimero/sealed-http/v2`),标志 使用WebAuthn 密码和 API 密钥的机器,并调用应用程序 每一个运行在自己的复制日志。 它运行在浏览器和节点 18+,并且是 与核心字节兼容 `calimero-sealed` 财务报告和审定财务报表 `calimero-client`。 。 。 .

> **27版本仅是Calimero 1.0客户端.** 用于 merod 0.x 节点的 v1 SDK (单位:千美元)`MeroJs`,管理员和认证 API 客户端,JSON-RPC,上下文和命名空间) 是在26x。 见 [从v1 移动](https://calimero-network.github.io/mero-js/reference/migrating-from-v1/)。 。 。 .

## 文档

**[https://calimero-network.github.io/mero-js/ (中文(简体) )](https://calimero-network.github.io/mero-js/)**:快速启动、向导和 用于每个方法和它所调用的路由的参考。 来源在 [`docs/`](https://npmcn.com/package/%40calimero-network/mero-js/docs/)。 。 。 .

## 安装

```bash
npm install @calimero-network/mero-js
```

软件包 ESM、CommonJS和精密浏览器 TypeScript 声明. 它唯一的依赖, `@phala/dcap-qvl`,验证TDX 引用并被加载在第一个使用上.

## 快开始

```ts
import { CalimeroClient, browserPasskey } from '@calimero-network/mero-js';

// Reach a Calimero Cloud cluster by name.
const client = await CalimeroClient.connect({
  cluster: 'eu-shared-1',
  // Trust the signed mero-tee release the node names, from this one up.
  policy: { release: { minReleaseVersion: '2.3.109' } },
});

await client.signUp(browserPasskey(), 'alice'); // or signIn(browserPasskey())
await client.installPackage('com.example.kv', '1.0.0'); // signed .mpk from the registry
const app = await client.createApp('kv', { package: 'com.example.kv', version: '1.0.0' }, { confirmMethods: ['clear'] });

await client.call(app, 'set', { key: 'a', value: '1' });
const { result } = await client.view(app, 'get', { key: 'a' });
await client.callConfirmed(app, 'clear', {}, browserPasskey()); // passkey consent
for await (const event of client.events(app)) console.log(event);
await client.upgradeApp(app, { version: '1.1.0' }, browserPasskey()); // the owner approves
```

发展组`merod local`, (中文(简体) ), `merod run --dev`以模拟的教训盟誓, 仅通过 `policy: { allowMock: true }`。从 环境.

## 连接到集群

`CalimeroClient.connect({ cluster, policy })` 建议的实现方式 卡利梅罗云团. 它从公共节点读取集群的节点 目录( e)`DEFAULT_DIRECTORY`, (中文(简体) ), `https://manager.cloud.calimero.network/api/v2/directory`· ; `directory` 名称(另一个),把这些放在 `zone` 当你给一个,和 按目录的权重加权。 一组 目录不知道,或者一个没有可用的节点,丢出 `DirectoryError`。 。 。 .

目录只选择要尝试的节点, 选择的顺序 。 没有 信任: 每个节点在下面被验证 **** `policy` 在事情发生之前 因此,一个错误或被篡改的列表只能使连接失败.

集群的任何节点都满足任何请求。 使用中的节点答案 `503` 或无法到达, 呼叫或视图被重审到那里(`retry`; 当这些 再试一次,它失败了 到下一个节点,然后重新开始那里, 与 **不变** 一能键,应用程序复制的日志解答一次 整个集群。 每个节点每个请求都尝试一次;当全部失败时 最后一个 `UnavailableError` 到达你。 失败后,一旦目录 `refreshAfterSeconds` 客户端已经通过(在下次请求时选中) 在背景中再次读取目录: 使用中的节点先保留, 不再列出的节点被删除 . `client.nodeUrl` 是正在使用的节点, `client.nodes` 名单.

对于固定的节点列表或集群,您自己运行,构建客户端 直接 : `new CalimeroClient({ baseUrl, nodes, policy })`失败结束 介于 `baseUrl` 财务报告和审定财务报表 `nodes` 永远不要读目录.

## 什么客户检查

就像核心的Rust客户端所做的那样 在它把任何东西送到节点之前`Measurements::Release`:

1.  节点名称是它运行的地铁释放。 以下发布 `minReleaseVersion` 在获取任何物品之前被拒绝.
2.  释放 `published-mrtds.json` 正在获取,其Sigstore 签名将对照 mero-tee 节点发布工作流程检查. 默认它来自 `cloud.calimero.network` 镜像; `releaseSource: 'github'` 读取 GitHub 版本取而代之(仅节点: GitHub 发送无 CORS 头 ).
3.  引文与英特尔的抵押物核对 `@phala/dcap-qvl`:签名链和TCB状态. 担保品出自"云镜"("相克")`DEFAULT_COLLATERAL_MIRROR`),浏览器可以读取;它只携带由英特尔签名的项目. `collateralSource: 'intel'` 询问 Intel 的 PCS (没有 CORS: 不在浏览器中), `fetchCollateral` 替换获取,以及 `maxCollateralAgeDays` 拒绝更早前发布的抵押情报.
4.  拒绝调试 TD .
5.  登记簿必须是释放的 `locked-read-only` 图像; 仅信任调试配置文件 `allowDebugProfile`。 。 。 .
6.  引文中的报告数据绑定了客户端的非ce和密封信道打开的传输密钥.

固定测量通过 `policy.verifyQuote` (单位:千美元)`createQuoteVerifier`) (中文(简体) ).

## API( API )

-   **全权证书**数字 : `signUp` (与 `invite`(a) 通过邀请获取新账户的集群; `signUpPolicy` 读到, `signIn`, (中文(简体) ), `refresh`, (中文(简体) ), `signOut`, (中文(简体) ), `signOutEverywhere`, (中文(简体) ), `useSession`, (中文(简体) ), `useApiKey`, (中文(简体) ), `me`, (中文(简体) ), `usage`, (中文(简体) ), `addPasskey`, (中文(简体) ), `labelPasskey`, (中文(简体) ), `removePasskey`, (中文(简体) ), `createApiKey`, (中文(简体) ), `listApiKeys`, (中文(简体) ), `revokeApiKey`。添加或去除密码并创建 API 密钥时,会使用该账户已有的密码.
-   **账户回收** (核心号4844): `createRecoveryCode`, (中文(简体) ), `removeRecoveryCode` (密码核准;代码显示一次),然后签出 `startAccountRecovery(code, passkey)` 72小时后, `finishAccountRecovery(passkey, accountId?)`;账户的密码在两者之间仍然被取消(`cancelAccountRecovery`· ; `me()` 显示 `recoveryCode` 财务报告和审定财务报表 `recoveryPending`) (中文(简体) ).
-   **软件包来源**数字 : `packageOrigins.list`, (中文(简体) ), `packageOrigins.add`, (中文(简体) ), `packageOrigins.remove`. 软件包的管理人员登记他们自己主机的前端的网络来源(用密码核准); `signUp` 财务报告和审定财务报表 `signIn` 在这样的页面上发送其来源,为该来源的依赖方编号签名,并打开一个与软件包相绑的会话(`me()` 答对它 `app` 财务报告和审定财务报表 `origin`) (中文(简体) ). 拒绝提供未登记来源 `OriginNotRegistered`。 。 。 . `packageOrigins.add(pkg, origin, passkey, { served: true })` 注册自定义域: 集群还服务于软件包的前端, 从它所签名的捆绑(`https://host`,无端口;密码的许可名称 `served: true`(三); `list` 答题 `served` 并且额外的拒绝是 `NotServing` (组别无前端), `ClusterNotUpgraded` (节点在旧版上), `QuotaExceeded` (每包4份,每组64份) `OriginTaken` (与他人持有) `served`) (中文(简体) ).
-   **软件包**数字 : `installPackage`, (中文(简体) ), `uploadPackage`, (中文(简体) ), `packages`, (中文(简体) ), `package`, (中文(简体) ), `uninstallPackage`· ; `uploadBundle` (raw WASM,只开发集群).
-   **应用程序**数字 : `createApp`, (中文(简体) ), `listApps`, (中文(简体) ), `getApp`, (中文(简体) ), `deleteApp`, (中文(简体) ), `setAccess`, (中文(简体) ), `setAppMetadata`, (中文(简体) ), `appStorage`, (中文(简体) ), `appAbi`, (中文(简体) ), `upgradeApp`, (中文(简体) ), `transferApp`。 。 。 .
-   **电话**数字 : `call`, (中文(简体) ), `callConfirmed`, (中文(简体) ), `view`, (中文(简体) ), `events`。一个电话总是带一个“一能”密钥,在节点回答时随它再次发出 `503`,然后转到下一个节点.
-   **集团和存在**数字 : `uploadBlob`, (中文(简体) ), `downloadBlob`, (中文(简体) ), `listBlobs`, (中文(简体) ), `blobInfo`, (中文(简体) ), `deleteBlob`· ; `publishPresence`, (中文(简体) ), `presence`, (中文(简体) ), `presenceStream`。 。 。 .
-   **组织**数字 : `createOrg`, (中文(简体) ), `getOrg`, (中文(简体) ), `deleteOrg`, (中文(简体) ), `setOrgMetadata`, (中文(简体) ), `setMember`, (中文(简体) ), `removeMember`, (中文(简体) ), `setMemberMetadata`, (中文(简体) ), `setCapabilities` (单位:千美元)`ORG_CAPABILITIES`),团队, `invite`, (中文(简体) ), `redeemInvite`恢复(`setRecoveryKey`, (中文(简体) ), `startRecovery`, (中文(简体) ), `cancelRecovery`, (中文(简体) ), `finishRecovery`· ; `newRecoverySeed`, (中文(简体) ), `recoveryPublicKey`) (中文(简体) ). 设置或删除成员或团队成员,能力和邀请书由呼叫者的密码批准;赎回邀请书不是.
-   **所有人的决定** (passkey批准,从未从应用程序的前端): `upgradeOrg`, (中文(简体) ), `upgradeRun`, (中文(简体) ), `retryUpgradeRun`, (中文(简体) ), `approveRelease`, (中文(简体) ), `approveOutbound`, (中文(简体) ), `bindPublisher`, (中文(简体) ), `upgradePublished`。 。 。 .
-   **应用程序的核准**数字 : `appsReport`, (中文(简体) ), `releaseRules`, (中文(简体) ), `pendingApprovals`,则 `requestConsent` 编号 : `openConsentPage` 将用户发送到节点的同意页面,以及 `consentResult`显示答案 `code` 发送给用户之前 `url` (单位:千美元)`openConsentPage`是因为 `confirm` 钩;它们应该在页面上看到相同的代码(`confirmationCode(requestId)` 检查它。 见 [请用户批准节点图像和应用程序升级](https://calimero-network.github.io/mero-js/guides/user-approvals/)。 。 。 .
-   **运算符** (ops sorders): (原始内容存档于2018-03-21) `opsApps`, (中文(简体) ), `opsOrgs`, (中文(简体) ), `opsServedOrigins` (每个自定义域 日志持有, 通过包标签), `setReleaseDeadline`, (中文(简体) ), `liftReleaseDeadline`。 。 。 .
-   **任何路线**数字 : `get`, (中文(简体) ), `post`, (中文(简体) ), `put`, (中文(简体) ), `delete`· ; `postConfirmed` 财务报告和审定财务报表 `deleteConfirmed` 答复 a `412 CONFIRM_REQUIRED` 有钥匙.

拒绝的打字(`LoginRequired`, (中文(简体) ), `PasskeyUnknownHere`, (中文(简体) ), `WrongNode`, (中文(简体) ), `NotFound`, (中文(简体) ), `ConfirmRequired`, (中文(简体) ), `ConfirmCancelled`, (中文(简体) ), `ArgsTooLarge`, (中文(简体) ), `IdempotencyMismatch`, (中文(简体) ), `ReleaseDeadlineError`, (中文(简体) ), `ConsentStale`, (中文(简体) ), `AppError`, (中文(简体) ), `TrapError`, (中文(简体) ), `UnavailableError`, (中文(简体) ), `OriginNotRegistered`, (中文(简体) ), `BadOrigin`, (中文(简体) ), `OriginTaken`, (中文(简体) ), `QuotaExceeded`, (中文(简体) ), 所有扩展 `CalimeroError` 与节点 `status` 财务报告和审定财务报表 `code`A级 `401` 一次 发布会话的节点被替换或无法到达的节点由一个解答 刷新并重复; a `421 WRONG_NODE` 移动到下一个 `nodes` 客户是 给出。 见 [错误模型](https://calimero-network.github.io/mero-js/reference/error-model/)。 。 。 .

由它建造的部件也出口:密封运输 (单位:千美元)`createSealedFetch`,引文和签名释放核查 (单位:千美元)`createQuoteVerifier`, (中文(简体) ), `createSignedReleaseVerifier`, (中文(简体) ), `trustSignedRelease`),以及 梅罗泰私人代理大门的客户端(`attestAgent`, (中文(简体) ), `provisionAgent`, (中文(简体) ), `releaseAgent`) (中文(简体) ).

## 发展

```bash
pnpm install
pnpm build
pnpm test:unit   # unit tests, against a stand-in node over a real sealed channel
pnpm lint
pnpm typecheck
pnpm typecheck:consumer
```

组群测试`tests/cloud-v2`开始 3 `merod run --dev` 节点和 运行客户端反对他们:

```bash
MEROD_BINARY=/path/to/merod KV_STORE_WASM=/path/to/kv_store.wasm pnpm test:cloud-v2
```

没有他们使用的变量 `../core/target/debug/merod` 财务报告和审定财务报表 `../core/target/wasm32-unknown-unknown/app-release/kv_store.wasm` 从一个兄弟 核心检出. `scripts/download-released-merod.sh` 获取最新发布的 1.0 国家 `merod` 和它的kv-商店的固定, 这是CI运行 他们与;核心的 `e2e.yml` 运行同一个套房 与核心自己的树.

## 许可证

麻省理工学院——见 [自由主义](https://npmcn.com/package/%40calimero-network/mero-js/LICENSE)。 。 。 .

## 常见问题

### @calimero-network/mero-js 是什么？

Calimero 1\.0 的 JavaScript 客户端: 经认证的 TEE 节点, 一个密封的通道, 密码和 API 密钥

### 如何安装 @calimero-network/mero-js？

在项目目录运行 npm install @calimero-network/mero-js，或使用 pnpm add / yarn add / bun add。

### @calimero-network/mero-js 支持 TypeScript 吗？

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

### @calimero-network/mero-js 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @calimero-network/mero-js 需要什么版本的 Node\.js？

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

### @calimero-network/mero-js 可以商用吗？

@calimero-network/mero-js 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @calimero-network/mero-js 的下载量有多少？

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

### @calimero-network/mero-js 还在维护吗？

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

