يقوم Codama بإنشاء عملاء TypeScript وRust من ملف IDL الخاص بالبرنامج. تتضمن العملاء المُنشأة وظائف لاستدعاء التعليمات واسترجاع الحسابات، مما يلغي الحاجة إلى تسلسل وفك تسلسل حسابات البرنامج أو instruction data يدويًا.
Codama قيد التطوير النشط وعرضة للتغيير. يرجى الرجوع إلى المستودعات المرتبطة في المرجع السريع للحصول على أحدث المعلومات.
مرجع سريع
أوامر واجهة سطر الأوامر
| الأمر | الوصف |
|---|---|
codama init | إنشاء ملف تكوين codama |
codama run | إنشاء عملاء البرنامج من ملف التكوين |
مولدات العملاء
| الحزمة | الوصف |
|---|---|
@codama/renderers-js | إنشاء عملاء TypeScript متوافقة مع @solana/kit |
@codama/renderers-rust | إنشاء عملاء Rust متوافقة مع solana_sdk |
@codama/nodes-from-anchor | تحويل IDLs الخاصة بـ Anchor إلى IDLs الخاصة بـ Codama لإنشاء العملاء |
موارد إضافية
| المورد | الوصف |
|---|---|
| Codama | GitHub الخاص بـ Codama |
| Codama CLI | GitHub الخاص بواجهة سطر أوامر Codama |
| Codama Macros | GitHub الخاص بـ Codama Macros. إنشاء Codama IDL من برامج Rust الأصلية باستخدام وحدات ماكرو Codama |
| Codama Macros Example Program | برنامج مثال يوضح استخدام وحدات ماكرو Codama |
مثال
يشرح هذا المثال عملية إنشاء العملاء من IDL برنامج Anchor.
إعداد ملفات المشروع
للمتابعة، قم بإنشاء دليل جديد يسمى example وأضف ملف idl.json وملف
package.json من مقتطفات الكود.
يستخدم هذا المثال IDL لبرنامج العداد. عرض المصدر.
في مشروع Anchor، يوجد IDL في target/idl/<program_name>.json بعد تشغيل
anchor build.
إنشاء ملف تكوين Codama
يستخدم Codama ملف تكوين لتحديد موقع ملف IDL، ولغات العميل التي سيتم إنشاؤها، وأين سيتم إخراج الكود المُنشأ. قم بإنشاء هذا التكوين عن طريق تشغيل:
$npx codama init
سيطالبك هذا بأسئلة لإنشاء ملف codama.json في الجذر لمشروعك وتثبيت تبعيات
Codama الضرورية.
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
إنشاء العملاء
بمجرد إنشاء ملف التكوين، قم بتشغيل أمر الإنشاء لتوليد العملاء:
$npx codama run --all
سيقوم هذا بإنشاء عملاء البرنامج في مسارات الملفات المحددة في ملف تكوين codama.
{"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}]}}}
لا يتم عرض جميع الملفات المُنشأة في مقتطفات الكود المقابلة.
استخدام العملاء المُنشأين
تتضمن العملاء المُنشأة كود مصدري للتفاعل مع برنامجك ولكن لا تتضمن package.json
(لـ TypeScript) أو Cargo.toml (لـ Rust).
ستحتاج إما إلى إنشاء ملفات package.json و Cargo.toml جديدة أو إضافة التبعيات
المطلوبة من العملاء المُنشأة إلى ملفات مشروعك الحالية.
دمجها في تطبيقك
قم بإنشاء العميل مباشرة في دليل المصدر الخاص بتطبيقك ثم أضف التبعيات المطلوبة
إلى ملف package.json أو Cargo.toml الموجود لديك.
استخدم هذا النهج عند بناء تطبيق لا تحتاج فيه شيفرة العميل إلى المشاركة أو النشر.
حزم أو صناديق مستقلة
أنشئ حزم TypeScript منفصلة أو صناديق Rust لكل عميل. على سبيل المثال، أضف
package.json في clients/js/ و Cargo.toml في clients/rust/.
استخدم هذا النهج لنشر العميل كمكتبة قابلة لإعادة الاستخدام (npm أو crates.io) أو مشاركة العميل عبر تطبيقات متعددة في مستودع أحادي.
Is this page helpful?