İstemci Oluşturma
Codama, bir programın IDL dosyasından TypeScript ve Rust istemcileri oluşturur. Oluşturulan istemciler, talimatları çağırmak ve hesapları getirmek için fonksiyonlar içerir, program hesaplarını veya instruction data'yı manuel olarak serileştirme ve ters serileştirme ihtiyacını ortadan kaldırır.
Codama aktif geliştirme aşamasındadır ve değişikliğe tabidir. En güncel bilgiler için hızlı referansta bağlantısı verilen depolara bakın.
Hızlı Referans
CLI Komutları
| Komut | Açıklama |
|---|---|
codama init | Bir codama yapılandırma dosyası oluştur |
codama run | Yapılandırma dosyasından program istemcileri oluştur |
İstemci Oluşturucuları
| Paket | Açıklama |
|---|---|
@codama/renderers-js | @solana/kit uyumlu TypeScript istemcileri oluştur |
@codama/renderers-rust | solana_sdk uyumlu Rust istemcileri oluştur |
@codama/nodes-from-anchor | İstemci oluşturmak için Anchor IDL'lerini Codama IDL'lerine dönüştür |
Ek Kaynaklar
| Kaynak | Açıklama |
|---|---|
| Codama | Codama GitHub |
| Codama CLI | Codama CLI GitHub |
| Codama Macros | Codama Macros GitHub. Codama makroları ile yerel Rust programlarından Codama IDL oluştur |
| Codama Macros Example Program | Codama makrolarının kullanımını gösteren örnek program |
Örnek
Bu örnek, bir Anchor program IDL'inden istemci oluşturma sürecini adım adım anlatır.
Proje Dosyalarını Kurma
Takip etmek için, example adında yeni bir dizin oluşturun ve kod
parçacıklarından idl.json dosyasını ve package.json dosyasını ekleyin.
Bu örnek bir sayaç programı IDL'si kullanır. Kaynak kodu görüntüle.
Bir Anchor projesinde, IDL dosyası target/idl/<program_name>.json konumunda
bulunur anchor build çalıştırıldıktan sonra.
Codama yapılandırma dosyası oluştur
Codama, IDL dosyasının konumunu, hangi istemci dillerinin oluşturulacağını ve oluşturulan kodun nereye çıktı alınacağını belirtmek için bir yapılandırma dosyası kullanır. Bu yapılandırmayı şu komutu çalıştırarak oluşturun:
$npx codama init
Bu, projenizin kök dizininde bir codama.json dosyası oluşturmak ve gerekli
Codama bağımlılıklarını yüklemek için size sorular soracaktır.
Welcome to Codama!✔ Where is your IDL located? (Supports Codama and Anchor IDLs). … idl.json✔ Which script preset would you like to use? › Generate JavaScript client, Generate Rust client✔ [js] Where should the JavaScript code be generated? … clients/js/src/generated✔ [rust] Where is the Rust client crate located? … clients/rust✔ [rust] Where should the Rust code be generated? … clients/rust/src/generated▲ Your configuration requires additional dependencies.▲ Install command: pnpm install @codama/nodes-from-anchor @codama/renderers-js @codama/renderers-rust✔ Install dependencies? … yes→ Installing├─ @codama/nodes-from-anchor├─ @codama/renderers-js└─ @codama/renderers-rust✔ Dependencies installed successfully.✔ Configuration file created.└─ Path: /example/codama.json
İstemcileri oluştur
Yapılandırma dosyası oluşturulduktan sonra, istemcileri oluşturmak için oluşturma komutunu çalıştırın:
$npx codama run --all
Bu, codama yapılandırma dosyasında belirtilen dosya yollarında program istemcilerini oluşturacaktır.
{"idl": "idl.json","before": [],"scripts": {"js": {"from": "@codama/renderers-js","args": ["clients/js/src/generated"]},"rust": {"from": "@codama/renderers-rust","args": ["clients/rust/src/generated",{"crateFolder": "clients/rust","formatCode": true}]}}}
Oluşturulan tüm dosyalar ilgili kod parçacıklarında gösterilmemektedir.
Oluşturulan istemcileri kullanma
Oluşturulan istemciler, programınızla etkileşim kurmak için kaynak kodu içerir
ancak package.json (TypeScript için) veya Cargo.toml (Rust için) dosyalarını
içermez.
Ya yeni bir package.json ve Cargo.toml dosyaları oluşturmanız ya da
oluşturulan istemcilerden gerekli bağımlılıkları projenizin mevcut dosyalarına
eklemeniz gerekecektir.
Uygulamanıza entegre edilmiş
İstemciyi doğrudan uygulamanızın kaynak dizinine oluşturun ve ardından gerekli
bağımlılıkları mevcut package.json veya Cargo.toml dosyalarınıza ekleyin.
İstemci kodunun paylaşılması veya yayınlanması gerekmeyen bir uygulama oluştururken bu yaklaşımı kullanın.
Bağımsız paketler veya crate'ler
Her istemci için ayrı TypeScript paketleri veya Rust crate'leri oluşturun.
Örneğin, clients/js/ içine package.json ve clients/rust/ içine
Cargo.toml ekleyin.
İstemciyi yeniden kullanılabilir bir kütüphane (npm veya crates.io) olarak yayınlamak veya bir monorepo'da birden fazla uygulama arasında istemciyi paylaşmak için bu yaklaşımı kullanın.
Is this page helpful?