Skip to content

poizoncc/openapi-codegen

Repository files navigation

OpenAPI Typescript Codegen


Notice

This is a fork of openapi-typescript-codegen with most of the original code removed and core modules reworked. It is based on an outdated but functional version.

The original author has discontinued support. I do not plan to add new features beyond what has already been changed. All dependencies have been updated, and the project now builds with RollDown. This means:

  • no support is provided;
  • no liability for usage;
  • no guarantee it will work at all 😃

What changed

Original => src/templates/exportService.hbs — the key change is that the returned entity is a curried method within an object, not a class:

  return <T extends {{>result}}, R extends Return<T, R>>(
      fetcher: (args: typeof input) => R
  ) => fetcher(input);

This allows making API requests with the required parameters using a single mechanism that can be inherited or extended — from a plain Axios instance to a Tanstack Query wrapper with Axios as the fetcher.

Why

The original package generated everything as classes with its own built-in HttpClient versions.

---NOT GOOD---

Examples

Axios

  import { fetcher } from '@your/utils-package'

  const { data } = SomeService.someEndpoint({
    // Only works with properly annotated backend — we expect OpenAPI/Swagger specs to be generated, not hand-written
    // Request body and other flags are applied based on the model described in the endpoint
    // HTTP methods (get, post, put, ...) are automatically passed to the instance
  })(fetcher);

Tanstack Query

  import { useQuery } from '@your/utils-package'

  const { data } = SomeService.someEndpoint({
    // Same as above, but only get and post methods are available
  })(useQuery({
    // hook configuration — revalidation rules, invalidation, etc.
  }));

How it works

  import { fetcher } from '@your/utils-package'
  import { Return, Method } from "@your-scope/utils-package";

You'll need to implement this part yourself 😃


Внимание

Это форк openapi-typescript-codegen с удаленным почти всем + правки в core модулях, за основу была взята устаревшая, но работающая версия.

Кроме того, автор прекратил поддержку, а лично я не планирую добавлять новшеств, кроме тех, что уже были добавлены, обновлены все зависимости, начиная с банальных версий, заканчивая тем, что собирается через RollDown и сопутствующее, что значит

  • не осуществляю поддержку;
  • не несу ответственности за использование;
  • не гарантирую, что оно вообще будет работать 😃

Что изменено

Оригинал => src/templates/exportService.hbs, где вся суть в механизме возвращаемой сущности как каррированного метода в рамках объекта, а не класса, таким образом

  return <T extends {{>result}}, R extends Return<T, R>>(
      fetcher: (args: typeof input) => R
  ) => fetcher(input);

Позволяет сделать запрос к API с нужными параметрами, имея единый механизм, наследованный или расширенный, как просто от инстанса Axios, так и надстройки Tanstack Query с тем же Axios, в качестве фетчера

Зачем

Изначально оригинальный пакет выдавал всё классами и вшивая свои версии HttpClient

---NOT GOOD---

Примеры

Axios

  import { fetcher } from '@your/utils-package'

  const { data } = SomeService.someEndpoint({
    // Работает только при валидном написании со стороны Бэка, ожидаем, что нотации будут описаны и сваггер (опенапи), руками писаться не будет
    // тело запроса и иные флаги будут применены исходя из модели, описанной в эндпоинте
    // методы get, post, put, ... будут автоматически переданы в инстанс
  })(fetcher);

Tanstack Query

  import { useQuery } from '@your/utils-package'

  const { data } = SomeService.someEndpoint({
    // Тут аналогично, но нужно помнить, что доступны только get и post методы
  })(useQuery({
    // параметры настроек самого хука, правила ревалидации, инвалидации и так далее
  }));

Как оно работает

  import { fetcher } from '@your/utils-package'
  import { Return, Method } from "@your-scope/utils-package";

А это предстоит написать самостоятельно 😃

About

NodeJS library that generates Typescript models and services from OpenApi schemas

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors