prisma-zod-generator
Version:
Prisma 2+ generator to emit Zod schemas from your Prisma schema
57 lines (56 loc) • 1.77 kB
TypeScript
/**
* PZG Pro - Form UX Generator
* DMMF-based implementation for React form generation
*/
import { ProFeatureBase } from '../../core/ProFeatureBase';
export type FormUILibrary = 'barebones' | 'shadcn' | 'mantine' | 'chakra' | 'mui';
export interface FormUXConfig {
outputPath?: string;
framework?: 'react-hook-form' | 'formik' | 'react-final-form';
uiLibrary?: FormUILibrary;
enableI18n?: boolean;
i18nNamespace?: string;
defaultValues?: boolean;
validation?: 'zod' | 'yup';
generateTests?: boolean;
}
export interface FormFieldConfig {
name: string;
type: string;
label?: string;
placeholder?: string;
required?: boolean;
defaultValue?: unknown;
validation?: string[];
component?: 'input' | 'textarea' | 'select' | 'checkbox' | 'radio' | 'date' | 'file';
options?: Array<{
value: string;
label: string;
}>;
}
export interface FormSchema {
name: string;
fields: FormFieldConfig[];
validationSchema: string;
defaultValues: Record<string, unknown>;
}
export declare class FormUXGenerator extends ProFeatureBase {
private config;
constructor(context: any, config?: FormUXConfig);
protected getFeatureName(): string;
protected generateFeature(): Promise<void>;
private convertModelToFormSchema;
private convertFieldToFormConfig;
private getFormComponentType;
private generateDefaultValue;
private generateReactHookForm;
private generateFieldComponent;
private generateBarebonesField;
private generateValidationHelpers;
private generateI18nKeys;
private generateFormTests;
private generateZodSchemasFile;
private mapFieldToZodSchema;
private generateIndexFile;
private generateFormUXDocumentation;
}