27 lines
773 B
TypeScript
27 lines
773 B
TypeScript
export function parse(route: string, loose?: boolean): {
|
|
keys: string[];
|
|
pattern: RegExp;
|
|
}
|
|
|
|
export function parse(route: RegExp): {
|
|
keys: false;
|
|
pattern: RegExp;
|
|
}
|
|
|
|
export type RouteParams<T extends string> =
|
|
T extends `${infer Prev}/*/${infer Rest}`
|
|
? RouteParams<Prev> & { wild: string } & RouteParams<Rest>
|
|
: T extends `${string}:${infer P}?/${infer Rest}`
|
|
? { [K in P]?: string } & RouteParams<Rest>
|
|
: T extends `${string}:${infer P}/${infer Rest}`
|
|
? { [K in P]: string } & RouteParams<Rest>
|
|
: T extends `${string}:${infer P}?`
|
|
? { [K in P]?: string }
|
|
: T extends `${string}:${infer P}`
|
|
? { [K in P]: string }
|
|
: T extends `${string}*`
|
|
? { wild: string }
|
|
: {};
|
|
|
|
export function inject<T extends string>(route: T, values: RouteParams<T>): string;
|