UNPKG

zod-form-kit

Version:

UI-agnostic form generation library based on Zod schemas with extensible adapter pattern

126 lines (125 loc) 4.78 kB
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;