UNPKG

rune-form

Version:

Type-safe reactive form builder for Svelte 5

77 lines (76 loc) 2.85 kB
import type { z, ZodObject, ZodTypeAny } from 'zod'; import type { ArrayPaths, CustomValidator, Paths, PathValue } from './types.js'; export interface Validator<T> { parse(data: unknown): T; safeParse(data: unknown): { success: true; data: T; } | { success: false; errors: Record<string, string[]>; }; safeParseAsync?(data: unknown): Promise<{ success: true; data: T; } | { success: false; errors: Record<string, string[]>; }>; resolveDefaults?(data: Partial<T>): T; getPaths?: () => string[]; getInputAttributes?: (path: string) => Record<string, unknown>; } export declare class RuneForm<T extends Record<string, unknown>> { private validator; private initialData; private _data; errors: Record<string, string[]>; customErrors: Partial<Record<string, string[]>>; touched: Record<string, boolean>; isValid: boolean; isValidating: boolean; private _pathCache; private _fieldCache; private _validPaths; private _isInternalUpdate; private _validationTimeoutId?; private _proxyCache; private _methodCache; private _pendingArrayValidation; private static readonly _MUTATING_ARRAY_METHODS; private static readonly _MAX_CACHE_SIZE; constructor(validator: Validator<T>, initialData?: Partial<T>); private createReactive; private wrapArrayMethod; private queueValidation; get data(): T; set data(value: T); static fromSchema<S extends ZodObject<Record<string, ZodTypeAny>>>(schema: S, initialData?: Partial<z.infer<S>>): RuneForm<z.core.output<S>>; static fromCustom<T extends Record<string, unknown>>(validator: CustomValidator<T>, initialData?: Partial<T>): RuneForm<T>; getField<K extends Paths<T>>(path: K): { value: PathValue<T, K>; error: string; errors: string[]; touched: boolean; constraints: Record<string, unknown>; readonly isValidating: boolean; }; private createField; private compilePath; private safePopulate; validateSchema(): Promise<void>; markTouched(path: Paths<T>): void; markFieldAsPristine(path: Paths<T>): void; markAllTouched(): void; markAllAsPristine(): void; private executeArrayOp; push<K extends ArrayPaths<T>>(path: K, value: PathValue<T, `${K}.${number}`>): void; swap<K extends ArrayPaths<T>>(path: K, i: number, j: number): void; splice<K extends ArrayPaths<T>>(path: K, start: number, deleteCount?: number, ...items: PathValue<T, `${K}.${number}`>[]): void; setCustomError(path: Paths<T> | (string & {}), message: string): void; setCustomErrors(path: Paths<T> | (string & {}), messages: string[]): void; private clearAll; reset(): void; dispose(): void; [Symbol.dispose](): void; }