(validateSearch: AnyValidator, input: unknown)
| 2983 | } |
| 2984 | |
| 2985 | function validateSearch(validateSearch: AnyValidator, input: unknown): unknown { |
| 2986 | if (validateSearch == null) return {} |
| 2987 | |
| 2988 | if ('~standard' in validateSearch) { |
| 2989 | const result = validateSearch['~standard'].validate(input) |
| 2990 | |
| 2991 | if (result instanceof Promise) |
| 2992 | throw new SearchParamError('Async validation not supported') |
| 2993 | |
| 2994 | if (result.issues) |
| 2995 | throw new SearchParamError(JSON.stringify(result.issues, undefined, 2), { |
| 2996 | cause: result, |
| 2997 | }) |
| 2998 | |
| 2999 | return result.value |
| 3000 | } |
| 3001 | |
| 3002 | if ('parse' in validateSearch) { |
| 3003 | return validateSearch.parse(input) |
| 3004 | } |
| 3005 | |
| 3006 | if (typeof validateSearch === 'function') { |
| 3007 | return validateSearch(input) |
| 3008 | } |
| 3009 | |
| 3010 | return {} |
| 3011 | } |
| 3012 | |
| 3013 | /** |
| 3014 | * Build the matched route chain and extract params for a pathname. |
no test coverage detected