/** * Variant File Generation Coordinator * Orchestrates creation of multiple schema files for each variant */ import { DMMF } from '@prisma/generator-helper'; import { PrismaTypeMapper } from '../generators/model'; import { ModelVariantCollection, VariantConfig, VariantGenerationResult, VariantType } from '../types/variants'; import { NamingResult, VariantNamingSystem } from '../utils/naming'; import { VariantConfigurationManager } from './config'; /** * File generation context */ export interface GenerationContext { model: DMMF.Model; variant: VariantType; config: VariantConfig; naming: NamingResult; outputDirectory: string; typeMapper: PrismaTypeMapper; } /** * Generation coordination options */ export interface GenerationCoordinationOptions { enabledVariants?: VariantType[]; outputDirectory?: string; preserveExisting?: boolean; generateIndexFiles?: boolean; validateDependencies?: boolean; parallelGeneration?: boolean; } /** * Generation progress tracking */ export interface GenerationProgress { totalModels: number; processedModels: number; totalVariants: number; processedVariants: number; currentModel: string; currentVariant: VariantType; startTime: number; errors: Array<{ model: string; variant: VariantType; error: string; timestamp: number; }>; } /** * Generation statistics */ export interface GenerationStatistics { totalTime: number; averageModelTime: number; variantCounts: Record; errorCounts: Record; filesSizesKB: Record; dependencyGraph: Record; } /** * Variant File Generation Coordinator * Main class that orchestrates generation of all schema variants */ export declare class VariantFileGenerationCoordinator { private configManager; private namingSystem; private typeMapper; private progressCallbacks; constructor(configManager?: VariantConfigurationManager, namingSystem?: VariantNamingSystem, typeMapper?: PrismaTypeMapper); /** * Generate all variants for multiple models */ generateAllVariants(models: DMMF.Model[], options?: GenerationCoordinationOptions, importExtension?: string): Promise<{ collections: ModelVariantCollection[]; statistics: GenerationStatistics; errors: string[]; }>; /** * Generate variants for a single model */ generateModelVariants(model: DMMF.Model, options?: GenerationCoordinationOptions, progress?: GenerationProgress, importExtension?: string): Promise; /** * Generate a single variant for a model */ generateSingleVariant(model: DMMF.Model, variantType: VariantType, options?: GenerationCoordinationOptions): Promise; /** * Apply variant-specific customizations to content */ private applyVariantCustomizations; /** * Extract custom imports from content (non-enum related) */ private extractCustomImports; /** * Extract model-level validation from content */ private extractModelLevelValidation; /** * Restore custom imports to content */ private restoreCustomImports; /** * Restore model-level validation to content */ private restoreModelLevelValidation; private resolveVariantPrismaImportPath; /** * Generate model index file */ private generateModelIndexFile; /** * Generate global index files for all variants */ private generateIndexFiles; /** * Calculate cross-variant references */ private calculateCrossVariantReferences; /** * Helper methods */ private calculateTotalVariants; private calculateExcludedFields; private calculateValidationCount; private formatContent; private writeVariantFile; private validateDependencies; private calculateStatistics; private notifyProgress; /** * Public API methods */ /** * Add progress callback */ onProgress(callback: (progress: GenerationProgress) => void): void; /** * Remove progress callback */ removeProgressCallback(callback: (progress: GenerationProgress) => void): void; /** * Get current configuration */ getConfiguration(): VariantConfigurationManager; /** * Update configuration */ updateConfiguration(configManager: VariantConfigurationManager): void; } export default VariantFileGenerationCoordinator;