# @calimero-network/abi-codegen 中文文档

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

版本：2\.5\.0
npm 元数据更新时间：2026-10-29T09:56:10.090Z
中文译文更新时间：2026-11-08T23:56:28.831Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：271 kB，48 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2025-10-03T11:39:27.512Z
- 最新版本发布：2026-10-29T09:56:09.692Z
- 近 30 天下载量：3906（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：20（近 12 个月 18 个）

## 中文简介

WASM-ABI v1 卡利默罗解析器和代码生成器

## 安装

```sh
npm install @calimero-network/abi-codegen
```

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

## README

# @ calimero-network/abi-codegen (中文(简体) )

一个用于 Calimero 应用的 WASM-ABI v1 解析器和代码生成器 .

## 安装

```bash
npm install @calimero-network/abi-codegen
```

## 使用量

### 国 际

```bash
# Basic usage
npx calimero-abi-codegen -i abi.json -o src

# With custom client name
npx calimero-abi-codegen -i abi.json -o src --client-name MyClient

# Derive the client name from a file path (e.g. the .wasm binary)
npx calimero-abi-codegen -i abi.json -o src --name-from kv_store.wasm

# Point generated imports at a different runtime package
npx calimero-abi-codegen -i abi.json -o src --import-path @calimero-network/mero-js

# Validate ABI manifest only (no code generation)
npx calimero-abi-codegen --validate -i abi.json
```

旗帜 : `-i, --input <file>` (默认) `abi.json`, (中文(简体) ), `-o, --output <dir>` (默认) `src`, (中文(简体) ), `--client-name <Name>`, (中文(简体) ), `--name-from <path>`, (中文(简体) ), `--import-path <path>` (默认) `@calimero-network/mero-react`, (中文(简体) ), `--target <ts|swift|kotlin>` (默认) `ts`, (中文(简体) ), `--package <name>` (只有考特林语), `--validate`, (中文(简体) ), `-h, --help`中的全部细节 [CLI 参考](https://calimero-network.github.io/mero-devtools-js/reference/cli/)。 。 。 .

### 程序化

```typescript
import { loadAbiManifestFromFile } from '@calimero-network/abi-codegen/parse';
import { generateClient } from '@calimero-network/abi-codegen/generate/client';
import fs from 'node:fs';

const manifest = loadAbiManifestFromFile('./abi.json');
const clientContent = generateClient(manifest, 'MyClient');
fs.writeFileSync('src/generated/MyClient.ts', clientContent);
```

`generateClient` 它的输出包括类型定义和 客户类一起。 见 [方案 API 参考](https://calimero-network.github.io/mero-devtools-js/reference/api/) 用于整个地表(`parseAbiManifest` 和命名公用事业 内 `generate/emit`) (中文(简体) ).

## 生成的文件

CLI写道: **单人** 文档, `{ClientName}.ts` (或 `.swift` 编号 : `.kt` 联 合 国 ,输入输出目录. 类型定义和客户类生活在一个文件中——有 无单独的 `types.ts` 模块.

## 斯威夫特和克特林客户端

`--target swift` 财务报告和审定财务报表 `--target kotlin` 为移动应用程序创建本地客户端 而不是类型脚本 。 每个都是自成一体的文件,没有SDK 依赖关系:类型、客户端和a `ContextContractCalling` 运输 app在自己的节点或中继连接上执行.

```bash
# Writes Sources/Generated/ForumClient.swift
npx calimero-abi-codegen -i logic/res/abi.json -o Sources/Generated \
  --target swift --client-name ForumClient

# Writes app/src/main/kotlin/network/calimero/forum/ForumClient.kt
npx calimero-abi-codegen -i logic/res/abi.json \
  -o app/src/main/kotlin/network/calimero/forum \
  --target kotlin --package network.calimero.forum --client-name ForumClient
```

`--target` 实值 `ts` (违约,不变), `swift` 或者说 `kotlin`· ; `--package` 设置 Kotlin 文件软件包( 无) `package` 线条没有它. `--import-path` 适用于 `ts` 只有这个.

生成的内容 :

-   **挥发**数字 : `Codable, Sendable, Equatable` 每类ABI型的钢筋和铝, (单位:千美元) `struct {ClientName}` 一个 `async throws` 每个方法的函数.
-   **科特林语Name**: kotlinx. 序列化 `@Serializable` 数据类,enum类 和封存的阶级 `class {ClientName}` 一个 `suspend` 函数数 方法。 属性为骆驼Case `@SerialName` 带着电线的名字. 需要一个 `org.jetbrains.kotlin.plugin.serialization` 插件和标签 `kotlinx-serialization-json`。 。 。 .

运输方式是每条路线一个呼叫:

```swift
public protocol ContextContractCalling: Sendable {
    func query(method: String, argsJSON: Data) async throws -> Data
    func execute(method: String, argsJSON: Data) async throws -> Data
}
```

```kotlin
interface ContextContractCalling {
    suspend fun query(method: String, argsJson: String): String
    suspend fun execute(method: String, argsJson: String): String
}
```

ABI的方法 `intent` 实值 `read_only` 是一个视图,然后转到 `query`; 每一个 其他方法( 以`mutating`, (中文(简体) ), `unspecified`,或无意) `execute`作为 节点治疗. 每个函数的医生评论都这么说.

线形是 TypeScript 客户端的:整数为 JSON 数字,字节为 数字数组数组(`[UInt8]` 编号 : `List<UByte>`),tuples是数组 (单位:千美元)`ContractTuple2<A, B>`,.),而enums遵循了serde的标记(bare name, `{ "Variant": payload }`,内部/相邻标记,或无标记. 映射密钥 这不是字符串键入 `String`因为JSON的钥匙是。 一个区别: 左侧的可选参数 `nil`编号 :`null` 在参数对象中省略 以 `null`;合同读取缺失 `Option` 作为 `None`。 。 。 .

每个 Swift 模块或 Kotlin 软件包生成一个客户端: 传输和 每个生成的文件都声明帮助者类型.

有本地的SDK,通过 `--transport-import` 用于使用 `ContextContractCalling` 所以SDK的契约就是运输 没有适配器 : `--transport-import MeroKit` (宽)或 `--transport-import com.calimero.mero.app.ContextContractCalling` (科特林语).

```swift
let forum = ForumClient(transport: contract.bound(to: contextId))
```

## 实例

见 [代码示例](https://npmcn.com/package/%40calimero-network/codegen-example) 用于完整的反应示例.

## 发展

```bash
npm install
npm run build
npm run test
```

## 常见问题

### @calimero-network/abi-codegen 是什么？

WASM-ABI v1 卡利默罗解析器和代码生成器

### 如何安装 @calimero-network/abi-codegen？

在项目目录运行 npm install @calimero-network/abi-codegen，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 calimero-abi-codegen，可以用 npx calimero-abi-codegen 直接运行。

### @calimero-network/abi-codegen 支持 TypeScript 吗？

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

### @calimero-network/abi-codegen 支持 ESM 还是 CommonJS？

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

### @calimero-network/abi-codegen 可以商用吗？

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

### @calimero-network/abi-codegen 的下载量有多少？

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

### @calimero-network/abi-codegen 还在维护吗？

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

