Skip to content

Commit

Permalink
Fix(typedRoutes): fixed StaticRoutes and DynamicRoutes being empty ca…
Browse files Browse the repository at this point in the history
…using invalid syntax (vercel#46620)

When `dynamicRouteTypes`/`staticRouteTypes` is empty, an invalid `link.d.ts` is generated. This just handles that case.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md)

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] [e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs) tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md)

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm build && pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
  • Loading branch information
DuCanhGH authored Mar 1, 2023
1 parent 844776e commit fcfab17
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions packages/next/src/build/webpack/plugins/next-types-plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,6 @@ function createRouteDefinitions(
}
}

const fallback = !edgeRoutes.length && !nodeRoutes.length ? 'string' : ''
const routes = [...edgeRoutes, ...nodeRoutes, ...extraRoutes]

// By exposing the static route types separately as string literals,
Expand Down Expand Up @@ -267,10 +266,12 @@ declare namespace __next_route_internal_types__ {
type OptionalCatchAllSlug<S extends string> =
S extends \`\${string}\${SearchOrHash}\` ? never : S
type StaticRoutes = ${staticRouteTypes}
type DynamicRoutes<T extends string = string> = ${dynamicRouteTypes}
type StaticRoutes = ${staticRouteTypes || 'string'}
type DynamicRoutes<T extends string = string> = ${
dynamicRouteTypes || 'string'
}
type RouteImpl<T> = ${fallback}
type RouteImpl<T> =
| StaticRoutes
| \`\${StaticRoutes}\${Suffix}\`
| (T extends \`\${DynamicRoutes<infer _>}\${Suffix}\` ? T : never)
Expand Down

0 comments on commit fcfab17

Please sign in to comment.