AlgoKit 类型Script 客户端生成器(algokit-client-generator-ts)
此工程在 TypeScript 为 Algorand Blockchain 生成一个类型安全的智能合同客户端,该客户端可以包装 应用程序客户端 内 阿尔戈基特Utils 并调整它在特定的智能合同。 它通过阅读一个 ARC-56 (韩语) 或者说 ARC-32 (韩语) 应用程序 spec文件并生成一个客户端,该客户端会曝光目标智能合同中每个ABI方法的方法,同时帮助创建,更新并删除应用程序.
使用量
先决条件
为了能够消耗生成的文件, 您需要将其包含在 TypeScript 工程中, 该工程( 至少) 安装了以下软件包 :
npm install @algorandfoundation/algokit-utils@^9.0.0
注:生成器第6版需要 @algorandfoundation/algokit-utils@^9.0.0 (与 algosdk v3; 它与从 algosdk 解开的 AlgoKit Utils v10不相容.
移徙
如果您正在将您的项目从一个旧生成的打字客户端迁移到 v4 , 请参考 v4 迁移指南。 。 。 .
使用
Cli可以通过以下命令生成客户端.
npx --yes @algorandfoundation/algokit-client-generator generate -a ./application.json -o ./client.generated.ts
CLI 选项
CLI支持以下选项:
-a, --application <path>(需要):指定ARC-56或ARC-32应用程序的路径. json 文件-o, --output <path>(需要):指定生成类型脚本客户端的输出文件路径--pn, --preserve-names: 保存应用程序中的名称. json spec 而不是将其消毒到骆驼Case-m, --mode <mode>: 在指定模式生成客户端( 默认 ):full(中文(简体) )full: 生成具有工厂、部署能力和所有特性的完整客户端minimal:生成一个没有工厂或部署能力的轻量级客户端,导致产出更小
CLI 实例
生成完整的客户端( 默认 ) :
npx --yes @algorandfoundation/algokit-client-generator generate -a ./application.json -o ./client.ts
生成一个最小客户端 :
npx --yes @algorandfoundation/algokit-client-generator generate -a ./application.json -o ./client.ts -m minimal
生成模式
生成器支持两种模式:
全模式( 默认) :
- 包括制造和部署智能合同的工厂类别
- 包括部署类型和方法
- 包括与部署有关的所有元数据(源代码、字节代码、模板变量)
- 包括与已部署合同互动的客户类别
- 最适合开发、部署和互动工作流程,或产出规模不那么重要的地方
最小模式 :
- 不包括工厂类别和部署能力
- 不包括减少产出规模的与部署有关的元数据
- 仅包括与已部署合同互动的客户类别
- 仅需要与现有合同互动的假设情况最好
程序化 API
或者,可以通过引用代码生成客户端 generate 函数配对 writeDocumentPartsToString 或者说 writeDocumentPartsToStream 取决于你的需求。 我们也让帮助者可以任意加载并验证一个应用程序.json文件.
import fs from 'fs'
import {
writeDocumentPartsToStream,
writeDocumentPartsToString,
generate,
loadApplicationJson,
validateApplicationJson,
} from '@algorandfoundation/algokit-client-generator'
import appJson from './application.json'
const appJsonFromFile = loadApplicationJson('./application.json')
const appJsonFromObject = validateApplicationJson(appJson)
const fileStream = fs.createWriteStream('./client.ts', {
flags: 'w',
})
writeDocumentPartsToStream(generate(appJsonFromFile), fileStream)
// Generate a full client (default)
const clientAsString = writeDocumentPartsToString(generate(appJsonFromObject))
// Generate a minimal client
const minimalClientAsString = writeDocumentPartsToString(generate(appJsonFromObject, { mode: 'minimal' }))
关于如何使用生成的客户端的详情,请参见更详细的 使用文档
代码示例
有范围 实例 可以查看源智能合同(例如:. {contract.py}),生成客户端(client.ts)和一些显示如何使用客户端的测试(client.spec.ts) (中文(简体) ).
捐款
如果您想为该项目做出贡献,以下信息将有所帮助.
初始设置
-
克隆此本地寄存器
-
安装先决条件 :
-
打开工程并开始调试 / 通过 :
- VS 代码
- 在 VS 代码中打开寄存器根
- 安装推荐的扩展
- 通过测试探索器运行测试
- EIDO( 如 PyCharm) : 化学反应
- 在 IDE 中打开寄存器根
- 它应该自动检测它是一个"诗"项目,并设置了Python解释器和虚拟环境.
- 运行测试
- 其它
- 在您选择的文本编辑器中打开寄存器根
- 运行
pnpm run test
- VS 代码
随后
- 如果您更新了最新的源代码, 并且您需要运行新的依赖性
algokit bootstrap all再来一次 - 遵循上文第3步
树立榜样
在那个 examples 文件夹中有一系列实例合同及其生成的客户端。 这些合同是使用下列方法建造的: 阿尔高朗活字。 。 。 .
如果您想要修改任何智能合同实例, 并重新生成 ARC- 0032 应用程序。 然后更改相应的文件 examples/{contract}/{contract}.py 文件然后运行 :
poetry run python -m examples
或者在Visual Studio代码中,您可以使用默认的构建任务(Ctrl+Shift+B).
重新生成运行的生成客户端 pnpm run update-approvals。 。 。 .
持续整合/持续部署(CI/CD)
这个项目使用 GitHub 动作 以定义 CI/CD 工作流程,这些工作流程位于 .github/workflows 文件夹.
核准测试
对生成的代码作任何修改将会导致批准测试失败. 通过生成客户端版本进行审批测试
并输出到 ./examples/APP_NAME/client.generated.ts 然后与核准的版本比较 ./examples/APP_NAME/client.ts。如果
更改并打破批准测试, 您需要更新批准版本, 用生成的版本覆盖它 .
你们可以跑 pnpm run update-approvals 一次更新所有核准客户.