zod-form-kit
Version:
UI-agnostic form generation library based on Zod schemas with extensible adapter pattern
126 lines (125 loc) • 4.78 kB
TypeScript
import { FieldType, FieldRendererComponent, UIAdapter, PluginRegistry, PluginSystemConfig, SchemaPatternMatcher, SchemaPatternRenderer, PatternRegistryEntry } from '../types/plugin-system';
import { z } from 'zod';
declare class PluginRegistryManager {
private registry;
private config;
constructor(config?: PluginSystemConfig);
private registerDefaultRenderers;
/**
* Register a custom field renderer for a specific field type
*/
registerFieldRenderer<T extends FieldType>(fieldType: T, component: FieldRendererComponent): void;
/**
* Register a schema pattern renderer
* @param id - Unique identifier for this pattern
* @param matcher - Function or Zod schema to match against
* @param component - React component to render when pattern matches
* @param priority - Priority level (higher numbers = higher priority)
*/
registerSchemaPatternRenderer(id: string, matcher: SchemaPatternMatcher | z.ZodTypeAny, component: SchemaPatternRenderer, priority?: number): void;
/**
* Helper method to compare Zod object schemas structurally
*/
private compareZodObjectSchemas;
/**
* Helper method to compare Zod number schemas with constraints
*/
private compareZodNumberSchemas;
/**
* Helper method to compare Zod string schemas with constraints
*/
private compareZodStringSchemas;
/**
* Register a complete UI adapter
*/
registerUIAdapter(adapter: UIAdapter): void;
/**
* Get a registered field renderer for a specific field type
*/
getRegisteredRenderer(fieldType: FieldType): FieldRendererComponent | undefined;
/**
* Get a registered UI adapter by name
*/
getUIAdapter(adapterName: string): UIAdapter | undefined;
/**
* Get the default UI adapter
*/
getDefaultAdapter(): UIAdapter | undefined;
/**
* Set the default UI adapter
*/
setDefaultAdapter(adapterName: string): void;
/**
* Get pattern renderer that matches the given schema
*/
getMatchingPatternRenderer(zodSchema: z.ZodTypeAny, parsedField: any, formValue?: any): SchemaPatternRenderer | undefined;
/**
* Remove a pattern renderer by ID
*/
removeSchemaPatternRenderer(id: string): boolean;
/**
* Get all registered field renderers
*/
getAllFieldRenderers(): Map<FieldType, FieldRendererComponent>;
/**
* Get all registered UI adapters
*/
getAllUIAdapters(): Map<string, UIAdapter>;
/**
* Get all registered pattern renderers
*/
getAllPatternRenderers(): PatternRegistryEntry[];
/**
* Clear all custom field renderers (keeps defaults)
*/
clearCustomFieldRenderers(): void;
/**
* Clear all UI adapters
*/
clearUIAdapters(): void;
/**
* Clear all pattern renderers
*/
clearPatternRenderers(): void;
/**
* Reset the entire registry to defaults
*/
reset(): void;
/**
* Check if a field renderer is registered for a specific type
*/
hasFieldRenderer(fieldType: FieldType): boolean;
/**
* Check if a UI adapter is registered
*/
hasUIAdapter(adapterName: string): boolean;
/**
* Check if a pattern renderer is registered
*/
hasPatternRenderer(id: string): boolean;
/**
* Get the current registry state
*/
getRegistry(): PluginRegistry;
/**
* Get the current configuration
*/
getConfig(): PluginSystemConfig;
/**
* Update the configuration
*/
updateConfig(newConfig: Partial<PluginSystemConfig>): void;
}
declare const pluginRegistry: PluginRegistryManager;
export { pluginRegistry, PluginRegistryManager };
export declare const registerFieldRenderer: (fieldType: FieldType, component: FieldRendererComponent) => void;
export declare const registerUIAdapter: (adapter: UIAdapter) => void;
export declare const getRegisteredRenderer: (fieldType: FieldType) => FieldRendererComponent | undefined;
export declare const getUIAdapter: (adapterName: string) => UIAdapter | undefined;
export declare const getDefaultAdapter: () => UIAdapter | undefined;
export declare const setDefaultAdapter: (adapterName: string) => void;
export declare const registerSchemaPatternRenderer: (id: string, matcher: SchemaPatternMatcher | z.ZodTypeAny, component: SchemaPatternRenderer, priority?: number) => void;
export declare const getMatchingPatternRenderer: (zodSchema: z.ZodTypeAny, parsedField: any, formValue?: any) => SchemaPatternRenderer | undefined;
export declare const removeSchemaPatternRenderer: (id: string) => boolean;
export declare const getAllPatternRenderers: () => PatternRegistryEntry[];
export declare const clearPatternRenderers: () => void;