Skip to content

Commit

Permalink
Simplify input route types
Browse files Browse the repository at this point in the history
  • Loading branch information
ai committed Feb 10, 2024
1 parent 4e0aa93 commit 27de355
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 4 deletions.
13 changes: 9 additions & 4 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,15 @@ export type InputPage<
Config extends RouterConfig = RouterConfig,
PageName extends keyof Config = any
> = PageName extends any
? {
params: Input<ParamsFromConfig<Config>[PageName]>
route: PageName
}
? Input<ParamsFromConfig<Config>[PageName]> extends EmptyObject
? {
params?: Input<ParamsFromConfig<Config>[PageName]>
route: PageName
}
: {
params: Input<ParamsFromConfig<Config>[PageName]>
route: PageName
}
: never

export type Page<
Expand Down
2 changes: 2 additions & 0 deletions test/router.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,8 @@ test('allows RegExp routes', () => {

test('generates URLs', () => {
equal(getPagePath(router, 'home'), '/')
equal(getPagePath(router, 'home', {}), '/')
equal(getPagePath(router, { route: 'home' }), '/')
equal(getPagePath(router, 'posts'), '/posts')
equal(getPagePath(router, 'posts', {}, { a: '1' }), '/posts?a=1')
equal(
Expand Down
3 changes: 3 additions & 0 deletions test/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,11 @@ router.subscribe(page => {
openPage(router, 'profile', {})
openPage(router, 'profile', { userId: '123' })
openPage(router, 'profile', { userId: 123 })
openPage(router, { route: 'profile', params: {} })
openPage(router, { route: 'post', params: { id: '1' } })
openPage(router, { route: 'post', params: { id: 1 } })
openPage(router, { route: 'home', params: {} })
openPage(router, { route: 'home' })
redirectPage(router, 'post', { id: '1' })
redirectPage(router, 'home')
} else if (page.route === 'create') {
Expand Down

0 comments on commit 27de355

Please sign in to comment.