Skip to content

Instantly share code, notes, and snippets.

View vixeven's full-sized avatar
🌛

Victor vixeven

🌛
View GitHub Profile
import { BaseSchema, parseAsync, ParseInfo, ValiError } from "valibot";
export class ValidationError extends Error {
public name = "ValidationError";
public inner: Array<{ path: string; message: string }> = [];
public constructor(message: string) {
super(message);
}
type Endpoint =
| "/users/:userId"
| "/users/:userId/photos/:photoId"
| "/reviews";
type ParseUrlParams<url> = url extends `${infer path}(${infer optionalPath})`
? ParseUrlParams<path> & Partial<ParseUrlParams<optionalPath>>
: url extends `${infer start}/${infer rest}`
? ParseUrlParams<start> & ParseUrlParams<rest>
: url extends `:${infer param}`