remix-params-helper
Version:
This package makes it simple to use Zod with standard URLSearchParams and FormData which are typically used in Remix apps.
49 lines (48 loc) • 1.72 kB
TypeScript
import { z, ZodType } from 'zod';
export declare function getParams<T extends ZodType<any, any, any>>(params: URLSearchParams | FormData | Record<string, string | undefined>, schema: T): {
success: false;
data: undefined;
errors: {
[key: string]: string;
};
} | {
success: true;
data: z.TypeOf<T>;
errors: undefined;
};
export declare function getSearchParams<T extends ZodType<any, any, any>>(request: Pick<Request, 'url'>, schema: T): {
success: false;
data: undefined;
errors: {
[key: string]: string;
};
} | {
success: true;
data: z.TypeOf<T>;
errors: undefined;
};
export declare function getFormData<T extends ZodType<any, any, any>>(request: Pick<Request, 'formData'>, schema: T): Promise<{
success: false;
data: undefined;
errors: {
[key: string]: string;
};
} | {
success: true;
data: z.TypeOf<T>;
errors: undefined;
}>;
export declare function getParamsOrFail<T extends ZodType<any, any, any>>(params: URLSearchParams | FormData | Record<string, string | undefined>, schema: T): z.TypeOf<T>;
export declare function getSearchParamsOrFail<T extends ZodType<any, any, any>>(request: Pick<Request, 'url'>, schema: T): z.TypeOf<T>;
export declare function getFormDataOrFail<T extends ZodType<any, any, any>>(request: Pick<Request, 'formData'>, schema: T): Promise<z.TypeOf<T>>;
export declare type InputPropType = {
name: string;
type: string;
required?: boolean;
min?: number;
max?: number;
minLength?: number;
maxLength?: number;
pattern?: string;
};
export declare function useFormInputProps(schema: any, options?: any): (key: string, options?: any) => InputPropType;