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 😃
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.
The original package generated everything as classes with its own built-in HttpClient versions.
---NOT GOOD---
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); 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.
})); 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---
import { fetcher } from '@your/utils-package'
const { data } = SomeService.someEndpoint({
// Работает только при валидном написании со стороны Бэка, ожидаем, что нотации будут описаны и сваггер (опенапи), руками писаться не будет
// тело запроса и иные флаги будут применены исходя из модели, описанной в эндпоинте
// методы get, post, put, ... будут автоматически переданы в инстанс
})(fetcher); 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";А это предстоит написать самостоятельно 😃