2026-04-01 19:21:34 +03:00
|
|
|
|
# @gromlab/api-codegen
|
2025-10-26 22:30:58 +03:00
|
|
|
|
|
|
|
|
|
|
CLI утилита для генерации TypeScript API клиента из OpenAPI спецификации.
|
|
|
|
|
|
|
|
|
|
|
|
## Использование
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-04-01 19:21:34 +03:00
|
|
|
|
npx @gromlab/api-codegen -i <INPUT> -o <OUTPUT> [-n <NAME>] [--swr]
|
2025-10-26 22:30:58 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Аргументы:**
|
2026-04-01 19:21:34 +03:00
|
|
|
|
- `-i, --input <path>` - Путь к OpenAPI файлу (локальный файл или URL)
|
2025-10-26 22:30:58 +03:00
|
|
|
|
- `-o, --output <path>` - Директория для сохранения файлов
|
2026-04-01 19:21:34 +03:00
|
|
|
|
- `-n, --name <name>` - Имя сгенерированного файла (опционально, по умолчанию из `spec.info.title`)
|
|
|
|
|
|
- `--swr` - Генерировать SWR хуки для React
|
2025-10-26 22:30:58 +03:00
|
|
|
|
|
|
|
|
|
|
**Примеры:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# Локальный файл
|
2026-04-01 19:21:34 +03:00
|
|
|
|
npx @gromlab/api-codegen -i ./openapi.json -o ./src/api
|
2025-10-26 22:30:58 +03:00
|
|
|
|
|
|
|
|
|
|
# URL на спецификацию
|
2026-04-01 19:21:34 +03:00
|
|
|
|
npx @gromlab/api-codegen -i https://httpbin.org/spec.json -o ./src/api
|
2025-10-26 22:30:58 +03:00
|
|
|
|
|
|
|
|
|
|
# С кастомным именем файла
|
2026-04-01 19:21:34 +03:00
|
|
|
|
npx @gromlab/api-codegen -i ./openapi.json -o ./src/api -n MyApi
|
|
|
|
|
|
|
|
|
|
|
|
# С генерацией SWR хуков
|
|
|
|
|
|
npx @gromlab/api-codegen -i ./openapi.json -o ./src/api --swr
|
2025-10-26 22:30:58 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-01 19:21:34 +03:00
|
|
|
|
## Пример использования сгенерированного кода
|
2025-10-26 22:30:58 +03:00
|
|
|
|
|
|
|
|
|
|
```typescript
|
2026-04-01 19:21:34 +03:00
|
|
|
|
import { Api, HttpClient } from './src/api/MyApi';
|
2025-10-26 22:30:58 +03:00
|
|
|
|
|
|
|
|
|
|
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 });
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-10-28 09:58:44 +03:00
|
|
|
|
## Разработка
|
|
|
|
|
|
|
|
|
|
|
|
### Сборка
|
|
|
|
|
|
```bash
|
|
|
|
|
|
bun run build
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Тестирование
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-04-01 19:21:34 +03:00
|
|
|
|
# Все тесты
|
2025-10-28 09:58:44 +03:00
|
|
|
|
bun test
|
|
|
|
|
|
|
2026-04-01 19:21:34 +03:00
|
|
|
|
# Юнит тесты
|
|
|
|
|
|
bun run test:unit
|
2025-10-28 09:58:44 +03:00
|
|
|
|
|
2026-04-01 19:21:34 +03:00
|
|
|
|
# Интеграционные тесты
|
|
|
|
|
|
bun run test:integration
|
2025-10-28 09:58:44 +03:00
|
|
|
|
|
2026-04-01 19:21:34 +03:00
|
|
|
|
# Watch режим
|
|
|
|
|
|
bun run test:watch
|
2025-10-28 09:58:44 +03:00
|
|
|
|
|
2026-04-01 19:21:34 +03:00
|
|
|
|
# С coverage
|
|
|
|
|
|
bun run test:coverage
|
2025-10-28 09:58:44 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-01 19:21:34 +03:00
|
|
|
|
Подробная документация по тестированию в [`tests/README.md`](tests/README.md).
|
2025-10-28 09:58:44 +03:00
|
|
|
|
|
2025-10-26 22:30:58 +03:00
|
|
|
|
## Лицензия
|
|
|
|
|
|
|
|
|
|
|
|
MIT
|