@web-bee-ru/openapi-axios
Version:
A TypeScript abstraction over Axios for typed requests generated from OpenAPI (Swagger) schemas using openapi-typescript.
23 lines (22 loc) • 2.67 kB
TypeScript
import type { MethodType, MethodTypeWithBody } from "../const/methods.js";
import type { OptionsType, ValidStatusType } from "./options.js";
import type { RouteQuery, RouteRequestBody, RoutesForMethod, SchemaType } from "./schemeTypes.js";
import type { NotNever } from "./utils.js";
/**
* @description Type definition for fetcher functions without a request body.
* This type handles methods that do not require a request body (e.g., GET, DELETE).
*
* @template Schema - The OpenAPI schema type.
* @template Method - The HTTP method type (excluding methods with a body).
* @template Route - The route type within the schema.
*/
export type FetcherWithoutBodyParameters<Schema extends SchemaType, Method extends Exclude<MethodType, MethodTypeWithBody>, Route extends RoutesForMethod<Schema, Method>, MethodValidStatus extends ValidStatusType | undefined = undefined, StrictOptions extends boolean = NotNever<RouteQuery<Schema, Method, Route>>> = Parameters<(...args: StrictOptions extends true ? Parameters<(path: Route, options: OptionsType<Schema, Method, Route, MethodValidStatus>) => never> : Parameters<(path: Route, options?: OptionsType<Schema, Method, Route, MethodValidStatus>) => never>) => never>;
/**
* @description Type definition for fetcher functions with a request body.
* This type handles methods that require a request body (e.g., POST, PUT).
*
* @template Schema - The OpenAPI schema type.
* @template Method - The HTTP method type (requiring a body).
* @template Route - The route type within the schema.
*/
export type FetcherWithBodyParameters<Schema extends SchemaType, Method extends MethodTypeWithBody, Route extends RoutesForMethod<Schema, Method>, MethodValidStatus extends ValidStatusType | undefined = undefined, Body extends NotNever<RouteRequestBody<Schema, Method, Route>> extends true ? RouteRequestBody<Schema, Method, Route> : undefined = NotNever<RouteRequestBody<Schema, Method, Route>> extends true ? RouteRequestBody<Schema, Method, Route> : undefined, StrictBody extends boolean = NotNever<RouteRequestBody<Schema, Method, Route>>, StrictOptions extends boolean = NotNever<RouteQuery<Schema, Method, Route>>, HasBody extends boolean = StrictOptions extends true ? true : StrictBody> = Parameters<(...args: StrictOptions extends true ? Parameters<(path: Route, body: Body, options: OptionsType<Schema, Method, Route, MethodValidStatus>) => never> : HasBody extends true ? Parameters<(path: Route, body: Body, options?: OptionsType<Schema, Method, Route, MethodValidStatus>) => never> : Parameters<(path: Route, body?: Body, options?: OptionsType<Schema, Method, Route, MethodValidStatus>) => never>) => never>;