UNPKG

zod-urlsearchparams

Version:

serializes and deserializes a zod schema to URLSearchParams

38 lines (35 loc) 1.78 kB
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 };