UNPKG

prisma-zod-generator

Version:

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

105 lines (104 loc) 3.48 kB
/** * 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; /** * 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; } /** * 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[];