zod-urlsearchparams
Version:
serializes and deserializes a zod schema to URLSearchParams
38 lines (35 loc) • 1.78 kB
text/typescript
import { z } from 'zod';
type Schema = z.ZodObject<Record<string, z.ZodTypeAny>>;
type ParseArgs<T extends Schema> = {
schema: T;
input: URLSearchParams;
/**
* Default data to use if the key is not present in the input, shallow merge
*/
defaultData?: Readonly<Partial<z.infer<T>>>;
};
declare function shape<T extends Schema>({ schema, input, defaultData, }: ParseArgs<T>): Record<string, unknown>;
declare function parse<T extends Schema>({ schema, input, defaultData }: ParseArgs<T>): z.infer<T>;
declare function safeParse<T extends Schema>({ schema, input, defaultData, }: ParseArgs<T>): z.SafeParseReturnType<z.infer<T>, z.infer<T>>;
declare function lenientParse<T extends Schema>({ schema, input, defaultData, }: Omit<ParseArgs<T>, "defaultData"> & {
defaultData: z.infer<T>;
}): z.infer<T>;
type SerializeArgs<T extends Schema> = {
schema: T;
data: Readonly<z.infer<T>>;
/**
* Default data to use if the key is not present in the input, shallow merge
*/
defaultData?: Readonly<Partial<z.infer<T>>>;
};
declare function serialize<T extends Schema>({ schema, data, defaultData, }: SerializeArgs<T>): URLSearchParams;
declare class ZodURLSearchParamSerializer<T extends Schema> {
private schema;
private defaultData?;
constructor(schema: T, defaultData?: Readonly<Partial<z.infer<T>>> | undefined);
serialize(data: Readonly<z.infer<T>>): URLSearchParams;
parse(input: URLSearchParams): z.TypeOf<T>;
safeParse(input: URLSearchParams): z.SafeParseReturnType<z.TypeOf<T>, z.TypeOf<T>>;
lenientParse(input: URLSearchParams, defaultData: z.infer<T>): z.TypeOf<T>;
}
export { type ParseArgs, type SerializeArgs, ZodURLSearchParamSerializer, lenientParse, parse, safeParse, serialize, shape };