⚠️ Actively searching for contributors, if you want to help, please contact me on [discord](https://discord.gg/6fC2sjDU7w) ⚠️
### Code Generation
`orval` is able to generate client with appropriate type-signatures (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either in `yaml` or `json` formats.
### Supported clients
`generate` models, requests, hooks, [mocks](https://mswjs.io/) and more, for these supported clients:
- [React](https://react.dev/)
- [React Query](https://tanstack.com/query/latest/docs/framework/react/overview)
- [React with swr](https://swr.vercel.app/)
- [Vue Query](https://tanstack.com/query/latest/docs/framework/vue/overview)
- [Svelte Query](https://tanstack.com/query/latest/docs/framework/svelte/overview)
- [Angular](https://angular.dev/)
- [Hono](https://hono.dev/)
- [zod](https://zod.dev/)
- [native fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
- [mcp](https://modelcontextprotocol.io/introduction)
### Samples
You can find some samples below:
- [react app](https://github.com/orval-labs/orval/tree/master/samples/react-app)
- [react query](https://github.com/orval-labs/orval/tree/master/samples/react-query)
- [svelte query](https://github.com/orval-labs/orval/tree/master/samples/svelte-query)
- [vue query](https://github.com/orval-labs/orval/tree/master/samples/vue-query)
- [react app with swr](https://github.com/orval-labs/orval/tree/master/samples/react-app-with-swr)
- [angular app](https://github.com/orval-labs/orval/tree/master/samples/angular-app)
- [hono](https://github.com/orval-labs/orval/tree/master/samples/hono)
- [next app with fetch](https://github.com/orval-labs/orval/tree/master/samples/next-app-with-fetch)
- [mcp server](https://github.com/orval-labs/orval/tree/master/samples/mcp)
### Playground
Try Orval out for yourself using our [Playground](https://orval.dev/playground) application!
## Developers
This project uses [Yarn](https://yarnpkg.com/) for package management and building. Here are the key scripts available for development:
### Prerequisites
Before using Yarn scripts, ensure you have Yarn installed. You can install it globally using npm:
```bash
npm install -g yarn
```
Alternatively, you can enable Corepack (which comes with Node.js 16.10+) to manage Yarn:
```bash
corepack enable
```
### Build Scripts
- **`yarn nuke:all`** - Completely clean your workspace by removing all build artifacts, node_modules, and cached files. Use this when you want to start fresh.
- **`yarn build`** - Build the project and make changes available to the workspace. Run this after making code changes to compile TypeScript and prepare the project for use.
### Test Scripts
- **`yarn test`** - Run unit tests in all packages.
- **`yarn update-samples`** - Generate sample outputs using the newly built version of Orval. This regenerates the sample code based on the current build.
- **`yarn test:samples`** - Run tests in the samples directory using the newly generated output from `update-samples`.
- **`yarn test:cli`** - Test that the generated output (not samples) is valid TypeScript. This validates the TypeScript compilation of the generated code.
### Development Workflow
A typical development workflow would be:
1. Make your code changes
2. Run `yarn build` to compile your changes
3. Run `yarn test` to ensure unit tests pass
4. Run `yarn update-samples` to regenerate sample outputs
5. Run `yarn test:samples` to verify samples work correctly
6. Run `yarn test:cli` to validate TypeScript compilation
If you encounter issues or want to start completely fresh:
1. Run `yarn nuke:all` to clean everything
2. Reinstall dependencies and rebuild from scratch
## Star History
### All Thanks To Our Contributors: