Files
api-codegen/README.md
2025-10-28 09:58:44 +03:00

115 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# API CodeGen
CLI утилита для генерации TypeScript API клиента из OpenAPI спецификации.
## Установка
```bash
bun install
```
## Использование
```bash
api-codegen -u <URL> -i <INPUT> -o <OUTPUT> [-n <NAME>]
```
**Аргументы:**
- `-u, --url <url>` - Базовый URL API
- `-i, --input <path>` - Путь к OpenAPI файлу (локальный или URL)
- `-o, --output <path>` - Директория для сохранения файлов
- `-n, --name <name>` - Имя сгенерированного файла (опционально)
**Примеры:**
```bash
# Локальный файл
api-codegen -u https://api.example.com -i ./openapi.json -o ./src/api
# URL на спецификацию
api-codegen -u https://api.example.com -i https://petstore.swagger.io/v2/swagger.json -o ./src/api
# С кастомным именем файла
api-codegen -u https://api.example.com -i ./openapi.json -o ./src/api -n MyApiClient
```
## Пример использования
```typescript
import { Api, HttpClient } from './src/api/Api';
const httpClient = new HttpClient();
httpClient.setSecurityData({ token: 'jwt-token' });
const api = new Api(httpClient);
// GET запрос
const user = await api.auth.getProfile();
// POST запрос
const result = await api.auth.login({ email, password });
// React + SWR
function Profile() {
const { data } = useSWR('/auth/me', () => api.auth.getProfile());
return <div>{data?.email}</div>;
}
```
## Разработка
### Сборка
```bash
bun run build
```
### Тестирование
Проект использует комплексную систему тестирования с максимальным покрытием (~72 тестовых кейса).
**Запуск всех тестов:**
```bash
bun test
```
**Только юнит тесты:**
```bash
bun test:unit
```
**Только интеграционные тесты:**
```bash
bun test:integration
```
**Watch режим:**
```bash
bun test:watch
```
**С coverage:**
```bash
bun test:coverage
```
Подробная документация по тестированию доступна в [`tests/README.md`](tests/README.md).
### Структура тестов
- **Юнит тесты** - CLI, генератор, утилиты, валидация
- **Интеграционные тесты** - E2E генерация, сгенерированный клиент
- **Тестовые фикстуры** - 7 OpenAPI спецификаций для различных сценариев
- **Mock сервер** - для тестирования HTTP запросов
**Покрываемые сценарии:**
- ✅ CLI команды и обработка ошибок
- ✅ Генерация TypeScript кода
- ✅ Компиляция сгенерированного кода
- ✅ HTTP запросы с mock сервером
- ✅ Аутентификация (Bearer tokens)
- ✅ Edge cases (Unicode, большие спецификации)
## Лицензия
MIT