@nevr/generator
v0.3.5
Published
Code generators for Nevr - Prisma schema, TypeScript types, API client
Maintainers
Readme
🎯 What It Does
The generator takes your Nevr entity definitions and produces:
- Prisma Schema — Complete database schema with relations
- OpenAPI Spec — Swagger/OpenAPI 3.0 specification
- TypeScript Types — Fully typed interfaces (deprecated, use
$Infer) - API Client — Ready-to-use fetch wrapper (deprecated, use
createClient)
📦 Installation
npm install @nevr/generatorNote: Usually used via
@nevr/cli. Direct usage is for advanced cases.
🚀 Quick Usage
import { generateSchema } from "@nevr/generator"
import { user, post } from "./entities"
// Generate Prisma schema
generateSchema([user, post], {
provider: "postgresql",
output: "./prisma",
})📖 API Reference
generateSchema(entities, options)
Main function to generate complete Prisma schema.
generateSchema(entities, {
provider: "sqlite" | "postgresql" | "mysql",
output: "./generated",
useCache: true, // Enable incremental builds
})generatePrismaSchema(entities, options)
Generate only the Prisma schema string.
const schema = generatePrismaSchema(entities, {
provider: "postgresql",
})
console.log(schema) // Complete .prisma contentgeneratePrismaModels(entities)
Generate only model definitions (no datasource/generator blocks).
const models = generatePrismaModels(entities)
// model User { ... }
// model Post { ... }generatePrismaHeader(options)
Generate only the datasource and generator blocks.
url: 'env("DATABASE_URL")',
})generateOpenAPI(entities, options)
Generate OpenAPI 3.0 specification.
const spec = generateOpenAPI(entities, {
info: { title: "My API", version: "1.0.0" },
servers: [{ url: "http://localhost:3000" }],
outPath: "./openapi.json",
security: true // Add bearer auth scheme
})⚡ Incremental Caching
The generator caches entity hashes to skip unchanged entities:
.nevr-cache.json
├── version: "1.0.0"
├── entities: { user: "abc123...", post: "def456..." }
└── lastGenerated: "2024-01-15T10:30:00Z"Disable with useCache: false.
⚠️ Deprecated Functions
These functions still work but are deprecated in favor of type inference:
| Deprecated | Replacement |
|------------|-------------|
| generateTypes() | Use $Infer pattern |
| generateClient() | Use createClient<typeof api>() |
// ❌ Old way
const types = generateTypes(entities)
// ✅ New way - types inferred automatically
import type { API } from "./server"
type User = API["$Infer"]["Entities"]["user"]📚 Related
| Package | Description |
|---------|-------------|
| nevr | Core framework |
| @nevr/cli | CLI interface |
| create-nevr | Project scaffolder |
📄 License
MIT © Nevr Contributors
