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
No description provided
Readme 137 KiB
Languages
TypeScript 68.2%
EJS 29.7%
JavaScript 2.1%