10d814d31a
Fixes incorrect generated manifest and generated directory for `index/[...dynamic]` pages Too much normalizing adding extra `index/` prefix to `index/[...dynamic]` routes which lead to the incorrected generated routes like `.next/server/pages/index/index/index/[...dynamic]` ## Bug Fixes https://github.com/vercel/customer-issues/issues/146 - [x] Related issues linked using `fixes #number` - [x] Integration tests added - [ ] Errors have helpful link attached, see `contributing.md`
25 lines
843 B
TypeScript
25 lines
843 B
TypeScript
import { posix } from 'path'
|
|
import { isDynamicRoute } from '../shared/lib/router/utils'
|
|
|
|
export { normalizePathSep, denormalizePagePath } from './denormalize-page-path'
|
|
|
|
export function normalizePagePath(page: string): string {
|
|
// If the page is `/` we need to append `/index`, otherwise the returned directory root will be bundles instead of pages
|
|
if (page === '/') {
|
|
page = '/index'
|
|
} else if (/^\/index(\/|$)/.test(page) && !isDynamicRoute(page)) {
|
|
page = `/index${page}`
|
|
}
|
|
// Resolve on anything that doesn't start with `/`
|
|
if (!page.startsWith('/')) {
|
|
page = `/${page}`
|
|
}
|
|
// Throw when using ../ etc in the pathname
|
|
const resolvedPage = posix.normalize(page)
|
|
if (page !== resolvedPage) {
|
|
throw new Error(
|
|
`Requested and resolved page mismatch: ${page} ${resolvedPage}`
|
|
)
|
|
}
|
|
return page
|
|
}
|