fedorthinks
← Все проекты
БетаНоябрь 2026 — сейчас

openapi-typesafe — типобезопасные OpenAPI-клиенты, готовые к TypeScript 7

Поддерживаемая замена openapi-typescript и openapi-fetch один в один: их автор перестал их поддерживать в сентябре 2026 года. Генерирует TypeScript-типы из схемы OpenAPI 3.0, 3.1 или 3.2 и даёт полностью типизированный fetch-клиент. Генератор больше не использует API компилятора TypeScript, поэтому работает на TypeScript 5, 6 и 7. Каждый релиз проверяется на 1 820 реальных схемах: 50 960 случаев, 0 неожиданных расхождений.

ОткрытьОткрыть код
Роль
Мейнтейнер — форк, новый генератор, проверка совместимости, релизный пайплайн
Стек
TypeScript · Node.js · OpenAPI 3.x · Vitest · GitHub Actions · npm provenance · VitePress
Период
Ноябрь 2026 — сейчас
openapi-typesafe — типобезопасные OpenAPI-клиенты, готовые к TypeScript 7

Сгенерируйте типы и вызывайте API через типизированный клиент:

npx openapi-typesafe ./openapi.yaml -o ./src/api/schema.d.ts

Зачем он нужен

openapi-typescript и openapi-fetch — то, через что множество TypeScript-команд работают со своими API: даёшь им схему OpenAPI и получаешь типы для каждого пути, параметра и ответа. В сентябре 2026 года их автор перестал их поддерживать.

В то же время вышел TypeScript 7. Это нативный порт компилятора, и в его пакете typescript нет JavaScript API: ни ts.factory, ни принтера. openapi-typescript строит каждый тип через ts.factory, поэтому в проекте на TypeScript 7 он либо не ставится, либо падает сразу при загрузке.

То есть у тысяч проектов зависимость одновременно осталась без поддержки и вот-вот сломается.

Что я сделал

Сделал форк с полной историей исходного репозитория и поставил одно правило: переезд — это только смена имени пакета, и всё. Те же флаги CLI, тот же Node API, тот же генерируемый код, тот же клиент.

  • Генератор без API компилятора. Типы строятся как своё маленькое дерево и печатаются своим принтером. Пакет typescript вообще не нужен, поэтому всё работает рядом с TypeScript 5, 6 или 7.
  • Поддержка OpenAPI 3.2, которую оригинал отвергает.
  • Инструмент миграции (openapi-typesafe-migrate), который переводит проект: импорты, скрипты и настройки пакетов.
  • Биндинги для TanStack Query и общие хелперы типов — тоже замена один в один.

Как я знаю, что он совместим

«Один в один» — это обещание, значит, его надо измерять, а не заявлять. Публичный отчёт о совместимости сравнивает наш вывод с openapi-typescript 7.13 на 1 820 реальных документах OpenAPI: весь каталог APIs.guru плюс крупные — GitHub, Stripe, OpenAI, Cloudflare, Kubernetes. Каждая схема прогоняется с 28 наборами опций, итого 50 960 случаев.

Каждый случай проверяется в три шага: одинаковые байты, затем одинаковые типы (строгая проверка идентичности), затем — компилируется ли. Последний прогон: 99,87% совпадают байт в байт, 100% — одинаковые типы, 0 неожиданных расхождений. CI каждую ночь гоняет весь корпус, и каждый релиз ссылается на свой отчёт.

Безопасные релизы

Генератор кода запускается на вашей машине и пишет код в ваш проект, поэтому его цепочка поставки важна:

  • минимум зависимостей;
  • npm provenance и никаких долгоживущих токенов публикации;
  • модель угроз, политика безопасности со сроками ответа и закрытые сообщения об уязвимостях;
  • бейджи OpenSSF Scorecard и OpenSSF Best Practices.

Сделан для кодинг-агентов

В репозитории есть skill для агентов: он учит Claude Code (или любого агента, который читает skills) подключать клиент, делать типизированные вызовы, обрабатывать ошибки и переезжать с openapi-typescript. Отдельный набор evals измеряет этот skill на 34 задачах. Сайт документации отдаёт llms.txt, llms-full.txt и Markdown-копию каждой страницы.

Сделано через agentic engineering: код пишут кодинг-агенты, а дизайн, правило совместимости и доказательство, что оно выполняется, — на мне.

Статус

Релиз-кандидат: 1.0.0-rc.4 на npm. До 1.0.0 имена и вывод ещё могут меняться, дальше — семантическое версионирование. Лицензия MIT.