UNPKG

prisma-zod-generator

Version:

Prisma 2+ generator to emit Zod schemas from your Prisma schema

151 lines (150 loc) 4.4 kB
/** * Variant Management System Types * Defines TypeScript interfaces for schema variant generation system */ import { DMMF } from '@prisma/generator-helper'; /** * Supported schema variant types */ export declare enum VariantType { PURE = "pure",// Raw model schema INPUT = "input",// API input validation RESULT = "result" } /** * File naming configuration for variants */ export interface NamingConfig { suffix: string; schemaNameSuffix: string; typeNameSuffix: string; } /** * Field exclusion rules for variants */ export interface FieldExclusionRule { excludeFields?: string[]; excludeFieldTypes?: string[]; excludeRelations?: boolean; excludeAutoGenerated?: boolean; excludeWithAttributes?: string[]; } /** * Validation customization for variants */ export interface ValidationCustomization { fieldValidations?: Record<string, string>; additionalValidations?: Record<string, string[]>; disableInlineValidations?: boolean; validationTemplates?: Record<string, string>; partial?: boolean; } /** * Schema generation options for variants */ export interface SchemaGenerationOptions { includeDocumentation?: boolean; includeExamples?: boolean; generateTypes?: boolean; includeStatistics?: boolean; customImports?: string[]; } /** * Configuration for a single variant */ export interface VariantConfig { type: VariantType; enabled: boolean; naming: NamingConfig; fieldExclusions: FieldExclusionRule; validationCustomizations: ValidationCustomization; schemaOptions: SchemaGenerationOptions; priority: number; } /** * Global variant management configuration */ export interface VariantManagerConfig { outputDirectory: string; enableVariants: boolean; variantDefaults: Record<VariantType, Partial<VariantConfig>>; modelOverrides: Record<string, Partial<Record<VariantType, Partial<VariantConfig>>>>; globalNaming: { useModelPrefix: boolean; usePascalCase: boolean; customSeparator?: string; }; } /** * Variant generation result */ export interface VariantGenerationResult { variantType: VariantType; fileName: string; filePath: string; schemaName: string; typeName: string; content: string; dependencies: string[]; exports: Set<string>; imports: Set<string>; fieldCount: number; excludedFieldCount: number; validationCount: number; errors: string[]; } /** * Collection of all variant results for a model */ export interface ModelVariantCollection { modelName: string; variants: Record<VariantType, VariantGenerationResult | null>; dependencies: Set<string>; crossVariantReferences: Record<VariantType, VariantType[]>; indexFile: { fileName: string; content: string; exports: Set<string>; }; generationSummary: { totalVariants: number; successfulVariants: number; failedVariants: number; totalErrors: number; processingTime: number; }; } /** * Variant manager interface */ export interface VariantManager { generateModelVariants(model: DMMF.Model, config?: Partial<VariantManagerConfig>): Promise<ModelVariantCollection>; generateVariant(model: DMMF.Model, variantType: VariantType, config?: Partial<VariantConfig>): Promise<VariantGenerationResult>; validateConfig(config: VariantManagerConfig): { isValid: boolean; errors: string[]; warnings: string[]; }; getDefaultConfig(variantType: VariantType): VariantConfig; resolveDependencies(collections: ModelVariantCollection[]): { dependencyOrder: string[]; circularDependencies: string[][]; unresolvedDependencies: string[]; }; } /** * Default naming configurations for each variant type */ export declare const DEFAULT_NAMING_CONFIGS: Record<VariantType, NamingConfig>; /** * Default field exclusion rules for each variant type */ export declare const DEFAULT_FIELD_EXCLUSIONS: Record<VariantType, FieldExclusionRule>; /** * Default validation customizations for each variant type */ export declare const DEFAULT_VALIDATION_CUSTOMIZATIONS: Record<VariantType, ValidationCustomization>; /** * Default schema generation options for each variant type */ export declare const DEFAULT_SCHEMA_OPTIONS: Record<VariantType, SchemaGenerationOptions>;