A @hey-api/openapi-ts plugin that generates typed enum arrays with intelligent conflict resolution.
- 🎯 Zero numbered fallbacks - No more
accountType2Values
,accountType3Values
- 🧠 Intelligent merging - Automatically merges duplicate enum arrays
- 🔄 Context-aware naming - Generates meaningful names like
queryTypes
,requestTypes
- 📦 Universal compatibility - Works with any OpenAPI specification
- 🚀 Significant reduction - Up to 78% reduction in generated code
npm install @v19i/openapi-enum-arrays
Add the plugin to your openapi-ts.config.js
:
import { defineConfig } from '@hey-api/openapi-ts'
import { enumArraysPlugin } from '@v19i/openapi-enum-arrays'
export default defineConfig({
client: '@hey-api/client-axios',
input: 'path/to/openapi.json',
output: 'src/client',
plugins: [
enumArraysPlugin({
arrayPrefix: '', // Optional prefix for generated arrays
}),
],
})
// Multiple duplicate enums with numbered fallbacks
export const getUsersResponseTypes = ['json', 'xml', 'csv'] as const
export const postUsersDataBodyTypes = ['json', 'xml', 'csv'] as const
export const putUsersDataBodyTypes = ['json', 'xml', 'csv'] as const
export const userStatus2Values = ['active', 'inactive', 'pending'] as const
export const userStatus3Values = ['active', 'inactive', 'pending'] as const
export const userStatus4Values = ['active', 'inactive', 'pending'] as const
// ... 50+ more arrays
// Clean, merged enums with contextual naming
export const responseTypes = ['json', 'xml', 'csv'] as const
export const userStatuses = ['active', 'inactive', 'pending'] as const
export const queryFormats = ['compact', 'detailed', 'summary'] as const
export const requestMethods = ['GET', 'POST', 'PUT', 'DELETE'] as const
// ... only 12 arrays total
interface PluginOptions {
arrayPrefix?: string // Prefix for generated array names (default: '')
}
- Name Conflict Resolution: Handles enums with same names but different values using OpenAPI path context
- Value-Based Merging: Merges enums with identical values to eliminate redundancy
- Context-Aware Naming: Extracts meaningful context from OpenAPI paths (
query
,request
,response
) - Intelligent Fallbacks: Uses full path names when context extraction fails
See the examples/
directory for working implementations with different OpenAPI specifications.
Contributions welcome! Please read our contributing guidelines and submit pull requests to our GitHub repository.
MIT © v19i