#error #error-message #generate-typescript #solidity #parse-error #create #generator

app jesper

Jasper是一个简单而强大的Solidity错误生成器。它允许您从Solidity代码中生成typescript错误,并使用它们来创建自定义错误消息。

1 个不稳定版本

0.1.0 2024年1月29日

#1833 in 魔法豆

MIT 许可证

295KB
4K SLoC

TypeScript 3K SLoC // 0.0% comments Rust 758 SLoC // 0.1% comments
Jesper

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