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