( url: string, schema: ZodType<TParams> )
| 54 | type ParamType = Record<string, any>; |
| 55 | |
| 56 | export function createSearchParams<TParams extends ParamType>( |
| 57 | url: string, |
| 58 | schema: ZodType<TParams> |
| 59 | ): SearchParamsResult<TParams> { |
| 60 | const searchParams = new URL(url).searchParams; |
| 61 | const params = Object.fromEntries(searchParams.entries()); |
| 62 | |
| 63 | const parsed = parseSearchParams(params, schema); |
| 64 | |
| 65 | if (!parsed.success) { |
| 66 | return { success: false, error: parsed.error }; |
| 67 | } |
| 68 | |
| 69 | return { success: true, params: new SearchParams<TParams>(parsed.params as TParams, schema) }; |
| 70 | } |
| 71 | |
| 72 | function parseSearchParams<TParams extends ParamType>(params: TParams, schema: ZodType<TParams>) { |
| 73 | const parsedParams = schema.safeParse(params); |
no test coverage detected
searching dependent graphs…