1 个不稳定版本
0.1.0 | 2024年1月29日 |
---|
#1833 in 魔法豆
295KB
4K SLoC
Jesper
Jesper是一个简单而强大的Solidity错误生成器。它允许您从Solidity代码中生成typescript错误,并使用它们来创建自定义错误消息。
安装
npm install jasper
使用
Jesper将自动解析您框架的输出文件夹,并生成一个包含所有错误的typescript文件。然后您可以将此文件导入并用于创建自定义错误消息。
您还可以选择在错误上方留下消息,这将向错误添加自定义消息。您还可以通过使用{}
语法将错误参数注入到消息中。
规则
- 错误消息必须与错误声明在同一行
- 错误消息必须以
//#Message:
开头 - 错误消息必须与错误声明在同一行
- 注入的参数必须用
{}
包裹 - 错误必须用引号""包裹
contract MyContract {
error ErrIsContract();
//#Message: "USDG: NotVetoCouncilMember"
error ErrNotVetoCouncilMember();
//#Message: "USDG: PermanentlyFrozen"
error ErrPermanentlyFrozen();
//#Message: "USDG: ToCannotBeUSDCReceiver"
error ToCannotBeUSDCReceiver();
//#Message: "USDG: CannotSwapZero"
error ErrCannotSwapZero();
//#Message: "Cannot send to {user}"
error ErrCannotSendToUser(address user, address sender);
//......rest of logic
}
命令
初始化项目
这将在项目根目录下创建一个默认的jesper-config.json
文件。
jesper init
生成错误
jesper gen
配置
{
"outputFolder": "./jesper-bindings", // The folder where the generated typescript file will be placed
"typescript": true, //does nothing for now, will get JS bindings soon
"framework": "foundry", //foundry | hardhat
"contractsPath": "./contracts", //The path where the contracts are located
"excludedFiles": ["./contracts/Migrations.sol"], //Files to exclude, doesen't work yet
"extraIncludedFiles": [], //Extra files to include, doesen't work yet
"modes": ["Viem"] //Viem | EthersV5
}
关于输出
Jesper将输出一个包含所有错误的typescript文件。该文件将命名为jesper-bindings.ts
,并放置在配置中指定的outputFolder
中。
根据配置文件中指定的 modes
,将生成另一个文件。此文件将被命名为 jesperParseError<mode>.ts
并放置在配置中指定的 outputFolder
中。
它导出一个名为 jesperParseError
的函数,该函数接受错误数据并返回一个字符串。此函数用于解析错误消息并将参数注入到消息中。
路线图
- 确保您不能注入一个不存在的错误参数。
- 设置测试
- 设置持续集成
- 更多我没想到的事情,只是在这上面做了12小时的努力
作者
由 0xSimon 制作
依赖项
~5–14MB
~174K SLoC