docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api
uk/docs/api/sdk/ts.md
новий файл +71
−0
TypeScript SDK
| Пакет | @ufotech/rpc-ts-sdk (npm) |
| Версія | 1.0.4 |
| Залежності | немає; Node.js 18+ (вбудований fetch) |
| Код | GitHub |
Генератор TypeScript-інтерфейсів зі схем документа OpenRPC. Для сервера на JsonRpcBundle це DTO й enum з components.schemas відповіді GET /rpc — типи, які фронтенд отримує й надсилає.
Пакет генерує лише типи даних, а не клієнт з методами: запити надсилайте будь-яким HTTP-клієнтом, а згенеровані інтерфейси використовуйте для параметрів і результатів.
Встановлення
npm install -g @ufotech/rpc-ts-sdk # або локально: npm install -D @ufotech/rpc-ts-sdk
Генерація з консолі
rpc-ts-sdk-gen -i https://api.example.com/rpc -o ./src/api/schemas.ts
rpc-ts-sdk-gen -i ./openrpc.json -o ./src/api/schemas.ts
| Опція | За замовчуванням | Опис |
|---|---|---|
-i, --input |
openrpc.json у поточному каталозі |
Шлях або URL документа OpenRPC |
-o, --out |
schemas.ts у поточному каталозі |
Файл з інтерфейсами |
Генерація з коду
import { generateSchemas } from '@ufotech/rpc-ts-sdk/generate-schemas';
await generateSchemas({
input: 'https://api.example.com/rpc',
output: './src/api/schemas.ts',
});
README пакета показує імпорт з @ufo-tech/rpc-ts-sdk, але пакет опубліковано як @ufotech/rpc-ts-sdk, а в exports є лише шлях ./generate-schemas. Імпортуйте саме @ufotech/rpc-ts-sdk/generate-schemas.
Що генерується
- інтерфейс для кожної схеми з
components.schemas; enum→ union-типи значень,oneOf/anyOf→ union-типи, масиви, вкладені об'єкти,$ref, nullable-поля;- базовий інтерфейс помилки:
export interface RpcError {
code: number;
message: string;
data?: any;
}
Якщо в документі немає components.schemas, генерація завершується помилкою No components.schemas found!.
Поради
- Генеруйте типи на етапі збирання фронтенду — так вони завжди відповідають актуальній документації сервера.
- Для різних версій чи груп API генеруйте окремі файли з відповідних адрес (
/rpc/v2,/rpc/internal). - Захищену
protected_docдокументацію генератор отримати не може (запит без заголовків) — збережіть документ у файл і генеруйте з нього.