next-typesafe-path
Version:
Type-safe path for Next.js
25 lines (24 loc) • 2.47 kB
TypeScript
import { z } from 'zod';
export type ParamBuilder = {
stringOr: (defaultValue?: string) => z.ZodType<string>;
numberOr: (defaultValue?: number) => z.ZodType<number>;
booleanOr: (defaultValue?: boolean) => z.ZodType<boolean>;
enumOr: <T extends [string, ...string[]]>(values: readonly [...T], defaultValue: T[number]) => z.ZodType<T[number]>;
or: <T>(schema: z.ZodType<T>, defaultValue: T) => z.ZodType<T>;
dateOr: (defaultValue: Date) => z.ZodType<Date>;
listOr: <T>(type: z.ZodType<T>, separator?: string) => z.ZodType<T[]>;
optional: <T>(schema: z.ZodType<T>) => z.ZodOptional<z.ZodType<T>>;
arrayOr: (defaultValue?: string[]) => z.ZodType<string[]>;
parse: {
number: () => z.ZodNumber;
string: () => z.ZodString;
boolean: () => z.ZodBoolean;
};
custom: <T>(schema: z.ZodType<T>, validator: (value: T) => boolean, errorMessage: string) => z.ZodType<T>;
};
export declare const defineSearchParams: <T extends Record<string, z.ZodType>>(builder: (p: ParamBuilder) => T) => z.ZodObject<T, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<T>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<T>, any>[k]; } : never, z.baseObjectInputType<T> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<T>[k_1]; } : never>;
export declare const createSearchParams: <T extends Record<string, z.ZodType>>(builder: (p: ParamBuilder) => T) => z.ZodObject<T, z.UnknownKeysParam, z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<T>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<T>, any>[k]; } : never, z.baseObjectInputType<T> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<T>[k_1]; } : never>;
export declare const createGlobalSearchParams: <T extends Record<string, z.ZodType>>(builder: (p: ParamBuilder) => T) => z.ZodObject<T, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<T>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<T>, any>[k]; } : never, z.baseObjectInputType<T> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<T>[k_1]; } : never>;
export declare const parseSearchParams: <T extends z.ZodObject<z.ZodRawShape>>(schema: T, input: URLSearchParams | Record<string, unknown>, options?: {
passthrough?: boolean;
}) => z.infer<T>;