UNPKG

@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
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 };