UNPKG

prisma-zod-generator

Version:

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

181 lines (180 loc) 4.62 kB
/** * Variant Naming Convention System * Provides utilities for generating consistent file names and schema names for different variants */ import { VariantType, NamingConfig } from '../types/variants'; /** * Global naming configuration options */ export interface GlobalNamingOptions { useModelPrefix?: boolean; usePascalCase?: boolean; customSeparator?: string; baseDirectory?: string; } /** * Name collision resolution strategies */ export declare enum CollisionStrategy { SUFFIX_INCREMENT = "suffix_increment",// Add _1, _2, etc. PREFIX_VARIANT = "prefix_variant",// Add variant prefix THROW_ERROR = "throw_error" } /** * Naming collision resolution configuration */ export interface CollisionResolutionConfig { strategy: CollisionStrategy; maxAttempts?: number; customPrefix?: string; customSuffix?: string; } /** * Generated naming result */ export interface NamingResult { fileName: string; filePath: string; directoryPath: string; schemaName: string; typeName: string; schemaExportName: string; typeExportName: string; variantType: VariantType; modelName: string; isCollisionResolved: boolean; originalNames?: { fileName: string; schemaName: string; typeName: string; }; } /** * Name validation result */ export interface NameValidationResult { isValid: boolean; errors: string[]; warnings: string[]; suggestions: string[]; } /** * Utility class for variant naming conventions */ export declare class VariantNamingSystem { private globalOptions; private collisionConfig; private usedFileNames; private usedSchemaNames; constructor(globalOptions?: GlobalNamingOptions, collisionConfig?: CollisionResolutionConfig); /** * Generate complete naming for a model variant */ generateNaming(modelName: string, variantType: VariantType, customConfig?: Partial<NamingConfig>): NamingResult; /** * Generate file name for a variant */ private generateFileName; /** * Generate schema name for a variant */ private generateSchemaName; /** * Generate type name for a variant */ private generateTypeName; /** * Build directory path for variant */ private buildDirectoryPath; /** * Build full file path */ private buildFilePath; /** * Resolve naming collisions */ private resolveNamingCollisions; /** * Resolve file name collision */ private resolveFileNameCollision; /** * Resolve schema name collision */ private resolveSchemaNameCollision; /** * Merge naming configuration with defaults */ private mergeNamingConfig; /** * Normalize model name for consistent naming */ private normalizeModelName; /** * Convert string to PascalCase */ private toPascalCase; /** * Convert string to camelCase */ private toCamelCase; /** * Validate naming conventions */ validateNaming(naming: NamingResult): NameValidationResult; /** * Check if file name is valid for file system */ private isValidFileName; /** * Check if schema name follows TypeScript naming conventions */ private isValidSchemaName; /** * Check if type name follows TypeScript naming conventions */ private isValidTypeName; /** * Clear tracked names (useful for batch operations) */ clearTrackedNames(): void; /** * Get all tracked file names */ getTrackedFileNames(): string[]; /** * Get all tracked schema names */ getTrackedSchemaNames(): string[]; } /** * Utility functions for common naming operations */ export declare class NamingUtils { /** * Generate barrel export file name for variant type */ static generateBarrelFileName(variantType: VariantType): string; /** * Generate index file name for all variants */ static generateIndexFileName(): string; /** * Generate variant directory name */ static generateVariantDirectoryName(variantType: VariantType): string; /** * Extract model name from file name */ static extractModelNameFromFileName(fileName: string, variantType: VariantType): string; /** * Check if two names would conflict */ static wouldConflict(name1: string, name2: string): boolean; /** * Generate safe identifier from string */ static toSafeIdentifier(input: string): string; } export default VariantNamingSystem;