Generate type-safe Axios API clients and React Query hooks from OpenAPI specifications.
- 🔄 Automatic code generation from OpenAPI/Swagger specs
- 📝 Type-safe API client functions
- 🎣 React Query integration with query options
- 📦 Support for multiple API specifications
- 📤 Handle multipart/form-data uploads
- 💪 Full TypeScript support
- 🔒 Type-safe request/response handling
npm install react-query-lightbase-codegenCreate a script to generate your API code (e.g., scripts/generate.ts):
import{codegenerate}from'react-query-lightbase-codegen';awaitcodegenerate({specSource: './specs/api.yaml',// or array of specsexportDir: './src/generated'});importaxiosfrom"axios";import{setApiClient}from"./src/generated/apiClient";constapi=axios.create({baseURL: "https://api.example.com"});// Set the API client instance to be used by the generated client functionssetApiClient(api);import{useQuery}from'@tanstack/react-query';import{characteristicListQueryOptions}from'./src/generated/pokiApi.queryOptions';const{ data, isLoading, error }=useQuery(characteristicListQueryOptions());and more complex queries:
import{useQuery}from'@tanstack/react-query';import{characteristicListQueryOptions}from'./src/generated/pokiApi.queryOptions';const{ data, isLoading, error }=useQuery({
...characteristicListQueryOptions(),select: (data)=>data.results.find(item=>item.id===itemId),});easier query invalidation:
queryClient.invalidateQueries(characteristicListQueryOptions());A single apiClient.ts file is generated to be used as a global Axios instance for all generated clients.
For each API specification, the following files are generated:
{api}.schema.ts- TypeScript types for requests/responses{api}.client.ts- Type-safe API client functions{api}.queryOptions.ts- React Query integration
awaitcodegenerate({specSource: ['./specs/auth-api.yaml','./specs/user-api.json','https://api.example.com/openapi.yaml'],exportDir: './src/generated'});