@toktokhan-dev/cli-plugin-gen-api-react-query
Version:
A CLI plugin for generating API hooks with React Query built by TOKTOKHAN.DEV
61 lines (58 loc) • 2.39 kB
TypeScript
import * as _toktokhan_dev_cli from '@toktokhan-dev/cli';
/**
* `Swagger` 의 json 을 조회하여 타입정의와 `api class`, `react-query` 관련 모듈을 생성합니다.
* `axios` 를 사용하는 환경에서 사용가능합니다.
*
* @packageDocumentation
*/
type GenerateFn = (param: {
apiInstanceName: string;
functionName: string;
pagination: {
keywords: string[];
nextKey: string;
};
}) => string;
interface PaginationConfig {
/** api 의 queryParams key 에 keywords 가 포함되어 있는 항목만 생성됩니다. 키워드 배열은 AND 연산으로써 사용됩니다. */
keywords: string[];
/** InfiniteQuery 의 nextPage 와 nextPageParam 을 구하는 함수를 작성하기 위해 사용됩니다. */
nextKey: string;
/**
* InfiniteQuery 의 initialPage 를 커스텀하기 위해 사용됩니다.
*/
initialPageParam?: string | GenerateFn;
/** InfiniteQuery 의 nextPage 를 구하는 함수를 커스텀하기 위해 사용됩니다. */
getNextPage?: string | GenerateFn;
/** InfiniteQuery 의 nextPageParam 을 구하는 함수를 커스텀하기 위해 사용됩니다. */
getNextPageParam?: string | GenerateFn;
}
/**
* @category Types
*/
interface GenerateSwaggerApiConfig {
/** 조회할 스웨거의 url 혹은 file(yaml, json) 경로 입니다. 통상적으로
* 백앤드 개발자에게 공유받은 api-swagger-url 의 '/openapi.json' 경로에 해당합니다.
*/
swaggerSchemaUrl: string;
/** 생성될 파일들이 위치할 경로입니다. */
output: string;
/** 생성되는 코드의 useQuery, useInfiniteQuery 포함 여부 입니다. */
includeReactQuery: boolean;
/** 생성되는 코드의 useSuspenseQuery, useSuspenseInfiniteQuery 포함 여부 입니다. */
includeReactSuspenseQuery: boolean;
/** Api 의 axios 혹은 fetch 요청 instance 주소입니다. */
instancePath: string;
/** http client 타입입니다. */
httpClientType: 'axios' | 'fetch';
/**
* infiniteQuery 를 생성할 함수 필터 목록 입니다.
* */
paginationSets: PaginationConfig[];
}
/**
* @category Commands
*/
declare const genApi: _toktokhan_dev_cli.MyCommand<GenerateSwaggerApiConfig, "gen:api">;
export { genApi };
export type { GenerateFn, GenerateSwaggerApiConfig, PaginationConfig };