9805399faa
Reverts vercel/next.js#32601
41 lines
1 KiB
TypeScript
41 lines
1 KiB
TypeScript
import { getParametrizedRoute, RouteRegex } from './route-regex'
|
|
|
|
export function getMiddlewareRegex(
|
|
normalizedRoute: string,
|
|
catchAll: boolean = true
|
|
): RouteRegex {
|
|
const result = getParametrizedRoute(normalizedRoute)
|
|
|
|
let catchAllRegex = catchAll ? '(?!_next).*' : ''
|
|
let catchAllGroupedRegex = catchAll ? '(?:(/.*)?)' : ''
|
|
|
|
if ('routeKeys' in result) {
|
|
if (result.parameterizedRoute === '/') {
|
|
return {
|
|
groups: {},
|
|
namedRegex: `^/${catchAllRegex}$`,
|
|
re: new RegExp(`^/${catchAllRegex}$`),
|
|
routeKeys: {},
|
|
}
|
|
}
|
|
|
|
return {
|
|
groups: result.groups,
|
|
namedRegex: `^${result.namedParameterizedRoute}${catchAllGroupedRegex}$`,
|
|
re: new RegExp(`^${result.parameterizedRoute}${catchAllGroupedRegex}$`),
|
|
routeKeys: result.routeKeys,
|
|
}
|
|
}
|
|
|
|
if (result.parameterizedRoute === '/') {
|
|
return {
|
|
groups: {},
|
|
re: new RegExp(`^/${catchAllRegex}$`),
|
|
}
|
|
}
|
|
|
|
return {
|
|
groups: {},
|
|
re: new RegExp(`^${result.parameterizedRoute}${catchAllGroupedRegex}$`),
|
|
}
|
|
}
|