Skip to content

Commit 50bfaef

Browse files
committed
Style tweaks
1 parent a80250a commit 50bfaef

File tree

1 file changed

+22
-24
lines changed
  • packages/route-pattern/src/lib

1 file changed

+22
-24
lines changed

packages/route-pattern/src/lib/href.ts

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,25 @@ type HrefBuilderArgs<T extends string> =
1616
[Record<P, string>] | [Record<P, string>, SearchParams] :
1717
never
1818

19+
// prettier-ignore
20+
type Params<T extends string> =
21+
Parse<T> extends infer A extends Ast ?
22+
| (A['protocol'] extends Part ? PartParams<A['protocol']> : never)
23+
| (A['hostname'] extends Part ? PartParams<A['hostname']> : never)
24+
| (A['pathname'] extends Part ? PartParams<A['pathname']> : never) :
25+
never
26+
27+
// prettier-ignore
28+
type PartParams<T extends Part> =
29+
T extends [infer L extends PartNode, ...infer R extends Array<PartNode>] ?
30+
L extends PartNode<'variable'> ? L['name'] | PartParams<R> :
31+
L extends PartNode<'wildcard'> ? (L extends { name: infer N extends string } ? N : '*') | PartParams<R> :
32+
L extends PartNode<'optional'> ? PartParams<L['nodes']> | PartParams<R> :
33+
PartParams<R> :
34+
never
35+
36+
type SearchParams = NonNullable<ConstructorParameters<typeof URLSearchParams>[0]>
37+
1938
interface HrefBuilderOptions {
2039
/**
2140
* The default protocol to use when the pattern doesn't specify one.
@@ -29,10 +48,10 @@ interface HrefBuilderOptions {
2948
host?: string
3049
}
3150

32-
export function createHrefBuilder<Source extends string | undefined = undefined>(
51+
export function createHrefBuilder<T extends string | undefined = undefined>(
3352
options: HrefBuilderOptions = {},
34-
): HrefBuilder<Source> {
35-
return <V extends Source extends string ? Variant<Source> : string>(
53+
): HrefBuilder<T> {
54+
return <V extends T extends string ? Variant<T> : string>(
3655
variant: V,
3756
...args: HrefBuilderArgs<V>
3857
) => {
@@ -99,24 +118,3 @@ function resolveNode(node: PartNode, params: Record<string, string>): string {
99118
// text
100119
return node.value
101120
}
102-
103-
// Params and SearchParams -----------------------------------------------------------------------
104-
105-
// prettier-ignore
106-
type Params<T extends string> =
107-
Parse<T> extends infer A extends Ast ?
108-
| (A['protocol'] extends Part ? PartParams<A['protocol']> : never)
109-
| (A['hostname'] extends Part ? PartParams<A['hostname']> : never)
110-
| (A['pathname'] extends Part ? PartParams<A['pathname']> : never) :
111-
never
112-
113-
// prettier-ignore
114-
type PartParams<T extends Part> =
115-
T extends [infer L extends PartNode, ...infer R extends Array<PartNode>] ?
116-
L extends PartNode<'variable'> ? L['name'] | PartParams<R> :
117-
L extends PartNode<'wildcard'> ? (L extends { name: infer N extends string } ? N : '*') | PartParams<R> :
118-
L extends PartNode<'optional'> ? PartParams<L['nodes']> | PartParams<R> :
119-
PartParams<R> :
120-
never
121-
122-
type SearchParams = NonNullable<ConstructorParameters<typeof URLSearchParams>[0]>

0 commit comments

Comments
 (0)