@api-buddy/codegen
v3.0.0
Published
Code generation tools for API Buddy
Downloads
6
Maintainers
Readme
@api-buddy/codegen
Code generation tools for API Buddy. This package provides utilities to generate typed API routes, React hooks, and other common patterns in a Next.js application.
Features
- Generate typed API routes with authentication and validation
- Create auth-aware React hooks for data fetching and mutations
- Support for TypeScript and JavaScript
- Customizable templates
- Prettier integration for consistent code formatting
Installation
pnpm add -D @api-buddy/codegenUsage
Generating API Routes
import { createRouteGenerator } from '@api-buddy/codegen';
const routeGenerator = createRouteGenerator({
outputDir: './src/app/api',
typescript: true,
});
// Generate a new API route
await routeGenerator.generate({
path: '/users',
method: 'GET',
auth: true,
roles: ['admin'],
});Generating React Hooks
import { createHookGenerator } from '@api-buddy/codegen';
const hookGenerator = createHookGenerator({
outputDir: './src/hooks',
typescript: true,
});
// Generate a query hook
await hookGenerator.generate({
name: 'userProfile',
type: 'query',
auth: true,
});
// Generate a mutation hook
await hookGenerator.generate({
name: 'updateProfile',
type: 'mutation',
auth: true,
});Configuration
Route Generator Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| outputDir | string | './src/app/api' | Output directory for generated files |
| typescript | boolean | true | Generate TypeScript files |
| prettier | boolean | true | Format generated code with Prettier |
| templateDir | string | undefined | Custom template directory |
| dryRun | boolean | false | Don't write files, just return the results |
Hook Generator Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| outputDir | string | './src/hooks' | Output directory for generated files |
| typescript | boolean | true | Generate TypeScript files |
| prettier | boolean | true | Format generated code with Prettier |
| templateDir | string | undefined | Custom template directory |
| dryRun | boolean | false | Don't write files, just return the results |
Custom Templates
You can provide custom templates by creating a directory with the following structure:
custom-templates/
api-route.hbs
hook.hbs
hook-types.hbsThen pass the directory to the generator options:
const generator = createRouteGenerator({
outputDir: './src/app/api',
templateDir: './custom-templates',
});License
MIT
