prisma-zod-generator
Version:
Prisma 2+ generator to emit Zod schemas from your Prisma schema
125 lines (124 loc) • 4.42 kB
TypeScript
/**
* Extended generator options for Prisma Zod Generator
*
* This module provides parsing and validation for both existing and new
* generator options while maintaining backward compatibility.
*/
/**
* Extended generator configuration options
*/
export interface ExtendedGeneratorOptions {
config?: string;
minimal?: boolean;
variants?: string[];
useMultipleFiles?: boolean;
singleFileName?: string;
placeSingleFileAtRoot?: boolean;
pureModelsLean?: boolean;
pureModelsIncludeRelations?: boolean;
pureModelsExcludeCircularRelations?: boolean;
dateTimeStrategy?: 'date' | 'coerce' | 'isoString';
dateTimeSplitStrategy?: boolean;
jsonSchemaCompatible?: boolean;
jsonSchemaOptions?: {
dateTimeFormat?: 'isoString' | 'isoDate';
bigIntFormat?: 'string' | 'number';
bytesFormat?: 'base64String' | 'hexString';
conversionOptions?: {
unrepresentable?: 'throw' | 'any';
cycles?: 'ref' | 'throw';
reused?: 'inline' | 'ref';
};
};
optionalFieldBehavior?: 'optional' | 'nullable' | 'nullish';
isGenerateSelect?: boolean;
isGenerateInclude?: boolean;
raw: Record<string, string>;
}
/**
* Parse and validate generator options from Prisma config
*/
export declare function parseGeneratorOptions(generatorConfig?: Record<string, string>): ExtendedGeneratorOptions;
/**
* Validate generator options compatibility
*/
export declare function validateGeneratorOptions(options: ExtendedGeneratorOptions): void;
/**
* Create default generator options
*/
export declare function createDefaultGeneratorOptions(): ExtendedGeneratorOptions;
/**
* Merge generator options with defaults
*/
export declare function mergeGeneratorOptions(options: Partial<ExtendedGeneratorOptions>, defaults?: ExtendedGeneratorOptions): ExtendedGeneratorOptions;
/**
* Convert generator options to configuration overrides
*
* This creates a partial configuration that can be merged with
* the loaded configuration file to implement option precedence.
*/
export declare function generatorOptionsToConfigOverrides(options: ExtendedGeneratorOptions): GeneratorConfigOverrides;
/**
* Generator configuration overrides from options
*/
export interface GeneratorConfigOverrides {
mode?: 'full' | 'minimal' | 'custom';
output?: string;
isGenerateSelect?: boolean;
isGenerateInclude?: boolean;
useMultipleFiles?: boolean;
singleFileName?: string;
placeSingleFileAtRoot?: boolean;
pureModelsLean?: boolean;
pureModelsIncludeRelations?: boolean;
pureModelsExcludeCircularRelations?: boolean;
dateTimeStrategy?: 'date' | 'coerce' | 'isoString';
dateTimeSplitStrategy?: boolean;
jsonSchemaCompatible?: boolean;
jsonSchemaOptions?: {
dateTimeFormat?: 'isoString' | 'isoDate';
bigIntFormat?: 'string' | 'number';
bytesFormat?: 'base64String' | 'hexString';
};
optionalFieldBehavior?: 'optional' | 'nullable' | 'nullish';
variants?: {
pure?: {
enabled?: boolean;
};
input?: {
enabled?: boolean;
};
result?: {
enabled?: boolean;
};
};
}
/**
* Generator option parsing error
*/
export declare class GeneratorOptionError extends Error {
readonly optionName: string;
readonly optionValue: unknown;
constructor(optionName: string, optionValue: unknown, message: string);
getUserFriendlyMessage(): string;
}
/**
* Format generator options for display/debugging
*/
export declare function formatGeneratorOptions(options: ExtendedGeneratorOptions): string;
/**
* Check if generator options indicate legacy usage
*/
export declare function isLegacyUsage(options: ExtendedGeneratorOptions): boolean;
/**
* Get migration suggestions for legacy usage
*/
export declare function getLegacyMigrationSuggestions(options: ExtendedGeneratorOptions): string[];
/**
* Check if there are conflicting options between generator options and expected config file
*/
export declare function detectOptionConflicts(generatorOptions: ExtendedGeneratorOptions, configFileHasOptions: boolean): string[];
/**
* Get effective configuration summary showing which options are active and their source
*/
export declare function getEffectiveConfigurationSummary(generatorOptions: ExtendedGeneratorOptions, hasConfigFile: boolean): string;