prisma-zod-generator
Version:
Prisma 2+ generator to emit Zod schemas from your Prisma schema
151 lines (150 loc) • 4.46 kB
TypeScript
/**
* Variant-Specific Configuration Handler
* Manages per-variant configuration including field exclusions and validation rules
*/
import { VariantType, VariantConfig, VariantManagerConfig } from '../types/variants';
/**
* Configuration inheritance hierarchy
*/
export declare enum ConfigInheritanceLevel {
DEFAULT = "default",
GLOBAL = "global",
VARIANT = "variant",
MODEL = "model"
}
/**
* Configuration validation result
*/
export interface ConfigValidationResult {
isValid: boolean;
errors: string[];
warnings: string[];
level: ConfigInheritanceLevel;
appliedConfig: VariantConfig;
}
/**
* Configuration merger interface
*/
export interface ConfigMerger {
mergeConfigs<T>(base: T, override: Partial<T>): T;
validateMergedConfig(config: VariantConfig): ConfigValidationResult;
}
/**
* Variant Configuration Manager
* Handles configuration inheritance, validation, and caching
*/
export declare class VariantConfigurationManager implements ConfigMerger {
private configCache;
private cacheTimeout;
private globalConfig;
constructor(globalConfig?: Partial<VariantManagerConfig>);
/**
* Get configuration for a specific model and variant
*/
getVariantConfig(modelName: string, variantType: VariantType, overrides?: Partial<VariantConfig>): VariantConfig;
/**
* Build configuration hierarchy from defaults to model-specific overrides
*/
private buildConfigurationHierarchy;
/**
* Get default configuration for a variant type
*/
getDefaultVariantConfig(variantType: VariantType): VariantConfig;
/**
* Merge configurations with proper deep merging
*/
mergeConfigs<T>(base: T, override: Partial<T>): T;
/**
* Validate merged configuration
*/
validateMergedConfig(config: VariantConfig): ConfigValidationResult;
/**
* Update global configuration
*/
updateGlobalConfig(updates: Partial<VariantManagerConfig>): void;
/**
* Add model-specific override
*/
addModelOverride(modelName: string, variantType: VariantType, override: Partial<VariantConfig>): void;
/**
* Remove model-specific override
*/
removeModelOverride(modelName: string, variantType?: VariantType): void;
/**
* Get effective field exclusions for a model variant
*/
getEffectiveFieldExclusions(modelName: string, variantType: VariantType, fieldNames: string[]): {
excludedFields: string[];
includedFields: string[];
exclusionReasons: Record<string, string[]>;
};
/**
* Get effective validation customizations
*/
getEffectiveValidationCustomizations(modelName: string, variantType: VariantType, fieldName: string): {
validations: string[];
isInlineDisabled: boolean;
customTemplate?: string;
};
/**
* Export configuration as JSON
*/
exportConfiguration(): string;
/**
* Import configuration from JSON
*/
importConfiguration(configJson: string): void;
/**
* Private helper methods
*/
private buildDefaultGlobalConfig;
private getDefaultPriority;
private generateCacheKey;
private getCachedConfig;
private cacheConfig;
private clearCache;
private clearModelCache;
private getInheritanceChain;
private isPlainObject;
private isAutoGeneratedField;
private hashObject;
}
/**
* Configuration utility functions
*/
export declare class ConfigurationUtils {
/**
* Compare two configurations for differences
*/
static compareConfigs(config1: VariantConfig, config2: VariantConfig): {
areSame: boolean;
differences: Array<{
path: string;
value1: unknown;
value2: unknown;
}>;
};
/**
* Get configuration summary
*/
static getConfigSummary(config: VariantConfig): {
type: VariantType;
excludedFieldsCount: number;
customValidationsCount: number;
hasDocumentation: boolean;
priority: number;
};
/**
* Validate configuration compatibility
*/
static validateCompatibility(configs: VariantConfig[]): {
isCompatible: boolean;
conflicts: Array<{
config1: VariantType;
config2: VariantType;
issue: string;
}>;
};
private static deepCompare;
}
export default VariantConfigurationManager;