rsnext/test/e2e/app-dir/parallel-routes-catchall-specificity/next.config.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

7 lines
96 B
JavaScript
Raw Normal View History

fix logic error in parallel route catch-all normalization (#63879) ### What & Why There was some code added in the catch-all route normalization that doesn't seem to make sense -- it was checking if the provided `appPath` depth was larger than the catch-all route depth, prior to inserting it. But it was comparing depths in an inconsistent way (`.length` vs `.length - 1`), and the catch all path was also considering the `@slot` and `/page` suffix as part of the path depth. This means that if you had a `@modal/[...catchAll]` slot, it wouldn't be considered for a page like `/foo/bar/baz`, because `/foo/bar/baz` (depth: 4 with the current logic) and `/@modal/[...catchAll]/page` (depth: 3 with the current logic) signaled that the `/foo/bar/baz` route was "more specific" and shouldn't match the catch-all. I think this was most likely added to resolve a bug where we were inserting optional catch-all (`[[...catchAll]]`) routes into parallel slots. However, optional catch-all routes are currently unsupported with parallel routes, so this feature didn't work properly and the partial support introduced a bug for regular catch-all routes. ### How This removes the confusing workaround and skips optional catch-all segments in this handling. Separately, we can add support for optional catch-all parallel routes, but doing so will require quite a bit more changes & also similar handling in Turbopack. Namely, if have a top-level optional catch-all, in both the Turbopack & current Webpack implementation, that top-level catch-all wouldn't be matched. And if you tried to have an optional catch-all slot, in both implementations, the app would error with: > You cannot define a route with the same specificity as a optional catch-all route ("/" and "/[[...catchAll]]") because our route normalization logic does not treat slots specificity differently than pages. **Note**: This keeps the test that was added when this logic was first introduced in #60776 to ensure that the case this was originally added for still passes. Fixes #62948 Closes NEXT-2728
2024-04-01 17:50:54 +02:00
/**
* @type {import('next').NextConfig}
*/
const nextConfig = {}
module.exports = nextConfig