prisma-zod-generator
Version:
Prisma 2+ generator to emit Zod schemas from your Prisma schema
151 lines (150 loc) • 4.4 kB
TypeScript
/**
* 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>;