API CodeGen
CLI утилита для генерации TypeScript API клиента из OpenAPI спецификации.
Установка
bun install
Использование
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>- Имя сгенерированного файла (опционально)
Примеры:
# Локальный файл
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
Пример использования
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>;
}
Разработка
Сборка
bun run build
Тестирование
Проект использует комплексную систему тестирования с максимальным покрытием (~72 тестовых кейса).
Запуск всех тестов:
bun test
Только юнит тесты:
bun test:unit
Только интеграционные тесты:
bun test:integration
Watch режим:
bun test:watch
С coverage:
bun test:coverage
Подробная документация по тестированию доступна в tests/README.md.
Структура тестов
- Юнит тесты - CLI, генератор, утилиты, валидация
- Интеграционные тесты - E2E генерация, сгенерированный клиент
- Тестовые фикстуры - 7 OpenAPI спецификаций для различных сценариев
- Mock сервер - для тестирования HTTP запросов
Покрываемые сценарии:
- ✅ CLI команды и обработка ошибок
- ✅ Генерация TypeScript кода
- ✅ Компиляция сгенерированного кода
- ✅ HTTP запросы с mock сервером
- ✅ Аутентификация (Bearer tokens)
- ✅ Edge cases (Unicode, большие спецификации)
Лицензия
MIT
Description
Languages
TypeScript
68.2%
EJS
29.7%
JavaScript
2.1%