@limechain/codama-dart
v0.1.1
Published
Solana Dart Client Generator, Powered by Codama
Readme
Codama ➤ Renderers ➤ Dart
This package generates Dart clients from your Codama IDLs. The generated clients are compatible with the Solana Dart package.
1. Pre-requisites
1.1 Install Codama
pnpm install -g codama1.2. Install Dart
https://dart.dev/get-dart
2. Renderer Installation
pnpm install @limechain/codama-dart3. Usage
3.1. Add the following script into codama.json.
{
"idl": "path/to/idl",
"before": [],
"scripts": {
"dart": [
{
"from": "@limechain/codama-dart",
"args": [
"generated",
{
"deleteFolderBeforeRendering": true,
"formatCode": true,
"generateBorsh": true
}
]
}
]
}
}3.2. Run code generation
pnpm codama run dart3.3. (Only if generateBorsh is set to false) Run Dart Borsh code generation
cd generated
dart pub get
dart run build_runner build4. Generated Output
The renderer generates a complete Dart package with the following structure:
lib/
└─ProgramName
├── lib.dart # Main library export file
|
├── accounts/ # Account data classes
│
├── instructions/ # Instruction functions
│
├── types/ # Custom type definitions
│
├── errors/ # Program error classes
│
├── pdas/ # PDA derivation functions
│
└── programs/ # Program constants and metadata5. Features
- Account Serialization/Deserialization: Automatic Borsh serialization for all account types
- Instruction Builders: Type-safe instruction creation with automatic PDA resolution
- PDA Derivation: Automatic generation of PDA derivation functions
- Error Handling: Strongly-typed program error definitions
- Type Safety: Full Dart type safety with null safety support
6. Options
The renderVisitor accepts the following options.
| Name | Type | Default | Description |
| ----------------------------- | ------ | ------- | --------------------------------------------------------------- |
| deleteFolderBeforeRendering | bool | true | Flag for deleting the output folder before generating it again. |
| formatCode | bool | true | Flag for formatting the Dart code after generation |
| generateBorsh | bool | true | Flag for running Borsh code generation after rendering |
