rsnext/packages/next/shared/lib/router/utils/get-middleware-regex.ts
Shu Ding 5ddee4494b
Add new target for middleware (#30299)
Co-authored-by: Jiachi Liu <inbox@huozhi.im>
Co-authored-by: Tobias Koppers <tobias.koppers@googlemail.com>
Co-authored-by: Tim Neutkens <timneutkens@me.com>
2021-10-26 18:50:56 +02:00

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}$`),
}
}