/opt/canhelp/node_modules/next/dist/esm/server/lib/router-utils
NameSizeModeActions
block-cross-site.js29900644editdlrm
block-cross-site.js.map52360644editdlrm
build-data-route.js14030644editdlrm
build-data-route.js.map27120644editdlrm
build-prefetch-segment-data-route.js20210644editdlrm
build-prefetch-segment-data-route.js.map36900644editdlrm
decode-path-params.js11120644editdlrm
decode-path-params.js.map15890644editdlrm
filesystem.js241490644editdlrm
filesystem.js.map377210644editdlrm
instrumentation-globals.external.js26820644editdlrm
instrumentation-globals.external.js.map47630644editdlrm
instrumentation-node-extensions.js46250644editdlrm
instrumentation-node-extensions.js.map72050644editdlrm
is-postpone.js2340644editdlrm
is-postpone.js.map5790644editdlrm
proxy-request.js38500644editdlrm
proxy-request.js.map66030644editdlrm
resolve-routes.js322520644editdlrm
resolve-routes.js.map471150644editdlrm
route-types-utils.js105090644editdlrm
route-types-utils.js.map191970644editdlrm
router-server-context.js1800644editdlrm
router-server-context.js.map22470644editdlrm
setup-dev-bundler.js437580644editdlrm
setup-dev-bundler.js.map685420644editdlrm
typegen.js240920644editdlrm
typegen.js.map346700644editdlrm
types.js460644editdlrm
types.js.map3540644editdlrm
Edit: /opt/canhelp/node_modules/next/dist/esm/server/lib/router-utils/resolve-routes.js.map (47115B)
{"version":3,"sources":["../../../../src/server/lib/router-utils/resolve-routes.ts"],"sourcesContent":["import type { FsOutput } from './filesystem'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextConfigComplete } from '../../config-shared'\nimport type { RenderServer, initialize } from '../router-server'\nimport type { PatchMatcher } from '../../../shared/lib/router/utils/path-match'\nimport type { Redirect } from '../../../types'\nimport type { Header, Rewrite } from '../../../lib/load-custom-routes'\nimport type { UnwrapPromise } from '../../../lib/coalesced-function'\nimport type { NextUrlWithParsedQuery } from '../../request-meta'\n\nimport url from 'url'\nimport path from 'node:path'\nimport setupDebug from 'next/dist/compiled/debug'\nimport { getCloneableBody } from '../../body-streams'\nimport { filterReqHeaders, ipcForbiddenHeaders } from '../server-ipc/utils'\nimport { stringifyQuery } from '../../server-route-utils'\nimport { formatHostname } from '../format-hostname'\nimport { toNodeOutgoingHttpHeaders } from '../../web/utils'\nimport { isAbortError } from '../../pipe-readable'\nimport { getHostname } from '../../../shared/lib/get-hostname'\nimport {\n getRedirectStatus,\n allowedStatusCodes,\n} from '../../../lib/redirect-status'\nimport { normalizeRepeatedSlashes } from '../../../shared/lib/utils'\nimport { getRelativeURL } from '../../../shared/lib/router/utils/relativize-url'\nimport { addPathPrefix } from '../../../shared/lib/router/utils/add-path-prefix'\nimport { pathHasPrefix } from '../../../shared/lib/router/utils/path-has-prefix'\nimport { detectDomainLocale } from '../../../shared/lib/i18n/detect-domain-locale'\nimport { normalizeLocalePath } from '../../../shared/lib/i18n/normalize-locale-path'\nimport { removePathPrefix } from '../../../shared/lib/router/utils/remove-path-prefix'\nimport { NextDataPathnameNormalizer } from '../../normalizers/request/next-data'\nimport { BasePathPathnameNormalizer } from '../../normalizers/request/base-path'\n\nimport { addRequestMeta } from '../../request-meta'\nimport {\n compileNonPath,\n matchHas,\n prepareDestination,\n} from '../../../shared/lib/router/utils/prepare-destination'\nimport type { TLSSocket } from 'tls'\nimport {\n NEXT_REWRITTEN_PATH_HEADER,\n NEXT_REWRITTEN_QUERY_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n RSC_HEADER,\n} from '../../../client/components/app-router-headers'\nimport { getSelectedParams } from '../../../client/components/router-reducer/compute-changed-path'\nimport { isInterceptionRouteRewrite } from '../../../lib/generate-interception-routes-rewrites'\nimport { parseAndValidateFlightRouterState } from '../../app-render/parse-and-validate-flight-router-state'\n\nconst debug = setupDebug('next:router-server:resolve-routes')\n\nexport function getResolveRoutes(\n fsChecker: UnwrapPromise<\n ReturnType\n >,\n config: NextConfigComplete,\n opts: Parameters[0],\n renderServer: RenderServer,\n renderServerOpts: Parameters[0],\n ensureMiddleware?: (url?: string) => Promise\n) {\n type Route = {\n /**\n * The path matcher to check if this route applies to this request.\n */\n match: PatchMatcher\n check?: boolean\n name?: string\n } & Partial
&\n Partial\n\n const routes: Route[] = [\n // _next/data with middleware handling\n { match: () => ({}), name: 'middleware_next_data' },\n\n ...(opts.minimalMode ? [] : fsChecker.headers),\n ...(opts.minimalMode ? [] : fsChecker.redirects),\n\n // check middleware (using matchers)\n { match: () => ({}), name: 'middleware' },\n\n ...(opts.minimalMode ? [] : fsChecker.rewrites.beforeFiles),\n\n // check middleware (using matchers)\n { match: () => ({}), name: 'before_files_end' },\n\n // we check exact matches on fs before continuing to\n // after files rewrites\n { match: () => ({}), name: 'check_fs' },\n\n ...(opts.minimalMode ? [] : fsChecker.rewrites.afterFiles),\n\n // we always do the check: true handling before continuing to\n // fallback rewrites\n {\n check: true,\n match: () => ({}),\n name: 'after files check: true',\n },\n\n ...(opts.minimalMode ? [] : fsChecker.rewrites.fallback),\n ]\n\n async function resolveRoutes({\n req,\n res,\n isUpgradeReq,\n invokedOutputs,\n }: {\n req: IncomingMessage\n res: ServerResponse\n isUpgradeReq: boolean\n signal: AbortSignal\n invokedOutputs?: Set\n }): Promise<{\n finished: boolean\n statusCode?: number\n bodyStream?: ReadableStream | null\n resHeaders: Record\n parsedUrl: NextUrlWithParsedQuery\n matchedOutput?: FsOutput | null\n }> {\n let finished = false\n let resHeaders: Record = {}\n let matchedOutput: FsOutput | null = null\n let parsedUrl = url.parse(req.url || '', true) as NextUrlWithParsedQuery\n let didRewrite = false\n\n const urlParts = (req.url || '').split('?', 1)\n const urlNoQuery = urlParts[0]\n\n // this normalizes repeated slashes in the path e.g. hello//world ->\n // hello/world or backslashes to forward slashes, this does not\n // handle trailing slash as that is handled the same as a next.config.js\n // redirect\n if (urlNoQuery?.match(/(\\\\|\\/\\/)/)) {\n parsedUrl = url.parse(normalizeRepeatedSlashes(req.url!), true)\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n statusCode: 308,\n }\n }\n // TODO: inherit this from higher up\n const protocol =\n (req?.socket as TLSSocket)?.encrypted ||\n req.headers['x-forwarded-proto']?.includes('https')\n ? 'https'\n : 'http'\n\n // When there are hostname and port we build an absolute URL\n const initUrl = (config.experimental as any).trustHostHeader\n ? `https://${req.headers.host || 'localhost'}${req.url}`\n : opts.port\n ? `${protocol}://${formatHostname(opts.hostname || 'localhost')}:${\n opts.port\n }${req.url}`\n : req.url || ''\n\n addRequestMeta(req, 'initURL', initUrl)\n addRequestMeta(req, 'initQuery', { ...parsedUrl.query })\n addRequestMeta(req, 'initProtocol', protocol)\n\n if (!isUpgradeReq) {\n const bodySizeLimit = config.experimental.middlewareClientMaxBodySize as\n | number\n | undefined\n addRequestMeta(req, 'clonableBody', getCloneableBody(req, bodySizeLimit))\n }\n\n const maybeAddTrailingSlash = (pathname: string) => {\n if (\n config.trailingSlash &&\n !config.skipMiddlewareUrlNormalize &&\n !pathname.endsWith('/')\n ) {\n return `${pathname}/`\n }\n return pathname\n }\n\n let domainLocale: ReturnType | undefined\n let defaultLocale: string | undefined\n let initialLocaleResult:\n | ReturnType\n | undefined = undefined\n\n if (config.i18n) {\n const hadTrailingSlash = parsedUrl.pathname?.endsWith('/')\n const hadBasePath = pathHasPrefix(\n parsedUrl.pathname || '',\n config.basePath\n )\n let normalizedPath = parsedUrl.pathname || '/'\n\n if (config.basePath && pathHasPrefix(normalizedPath, config.basePath)) {\n normalizedPath = removePathPrefix(normalizedPath, config.basePath)\n } else if (\n config.assetPrefix &&\n pathHasPrefix(normalizedPath, config.assetPrefix)\n ) {\n normalizedPath = removePathPrefix(normalizedPath, config.assetPrefix)\n }\n\n initialLocaleResult = normalizeLocalePath(\n normalizedPath,\n config.i18n.locales\n )\n\n domainLocale = detectDomainLocale(\n config.i18n.domains,\n getHostname(parsedUrl, req.headers)\n )\n defaultLocale = domainLocale?.defaultLocale || config.i18n.defaultLocale\n\n addRequestMeta(req, 'defaultLocale', defaultLocale)\n addRequestMeta(\n req,\n 'locale',\n initialLocaleResult.detectedLocale || defaultLocale\n )\n\n // ensure locale is present for resolving routes\n if (\n !initialLocaleResult.detectedLocale &&\n !initialLocaleResult.pathname.startsWith('/_next/')\n ) {\n parsedUrl.pathname = addPathPrefix(\n initialLocaleResult.pathname === '/'\n ? `/${defaultLocale}`\n : addPathPrefix(\n initialLocaleResult.pathname || '',\n `/${defaultLocale}`\n ),\n hadBasePath ? config.basePath : ''\n )\n\n if (hadTrailingSlash) {\n parsedUrl.pathname = maybeAddTrailingSlash(parsedUrl.pathname)\n }\n }\n }\n\n const checkLocaleApi = (pathname: string) => {\n if (\n config.i18n &&\n pathname === urlNoQuery &&\n initialLocaleResult?.detectedLocale &&\n pathHasPrefix(initialLocaleResult.pathname, '/api')\n ) {\n return true\n }\n }\n\n async function checkTrue() {\n const pathname = parsedUrl.pathname || '/'\n\n if (checkLocaleApi(pathname)) {\n return\n }\n if (!invokedOutputs?.has(pathname)) {\n const output = await fsChecker.getItem(pathname)\n\n if (output) {\n if (\n config.useFileSystemPublicRoutes ||\n didRewrite ||\n (output.type !== 'appFile' && output.type !== 'pageFile')\n ) {\n return output\n }\n }\n }\n const dynamicRoutes = fsChecker.getDynamicRoutes()\n let curPathname = parsedUrl.pathname\n\n if (config.basePath) {\n if (!pathHasPrefix(curPathname || '', config.basePath)) {\n return\n }\n curPathname = curPathname?.substring(config.basePath.length) || '/'\n }\n const localeResult = fsChecker.handleLocale(curPathname || '')\n\n for (const route of dynamicRoutes) {\n // when resolving fallback: false the\n // render worker may return a no-fallback response\n // which signals we need to continue resolving.\n // TODO: optimize this to collect static paths\n // to use at the routing layer\n if (invokedOutputs?.has(route.page)) {\n continue\n }\n const params = route.match(localeResult.pathname)\n\n if (params) {\n const pageOutput = await fsChecker.getItem(\n addPathPrefix(route.page, config.basePath || '')\n )\n\n // i18n locales aren't matched for app dir\n if (\n pageOutput?.type === 'appFile' &&\n initialLocaleResult?.detectedLocale\n ) {\n continue\n }\n\n if (pageOutput && curPathname?.startsWith('/_next/data')) {\n addRequestMeta(req, 'isNextDataReq', true)\n }\n\n if (config.useFileSystemPublicRoutes || didRewrite) {\n return pageOutput\n }\n }\n }\n }\n\n const normalizers = {\n basePath:\n config.basePath && config.basePath !== '/'\n ? new BasePathPathnameNormalizer(config.basePath)\n : undefined,\n data: new NextDataPathnameNormalizer(fsChecker.buildId),\n }\n\n async function handleRoute(\n route: Route\n ): Promise> | void> {\n let curPathname = parsedUrl.pathname || '/'\n\n if (config.i18n && route.internal) {\n const hadTrailingSlash = curPathname.endsWith('/')\n\n if (config.basePath) {\n curPathname = removePathPrefix(curPathname, config.basePath)\n }\n const hadBasePath = curPathname !== parsedUrl.pathname\n\n const localeResult = normalizeLocalePath(\n curPathname,\n config.i18n.locales\n )\n const isDefaultLocale = localeResult.detectedLocale === defaultLocale\n\n if (isDefaultLocale) {\n curPathname =\n localeResult.pathname === '/' && hadBasePath\n ? config.basePath\n : addPathPrefix(\n localeResult.pathname,\n hadBasePath ? config.basePath : ''\n )\n } else if (hadBasePath) {\n curPathname =\n curPathname === '/'\n ? config.basePath\n : addPathPrefix(curPathname, config.basePath)\n }\n\n if ((isDefaultLocale || hadBasePath) && hadTrailingSlash) {\n curPathname = maybeAddTrailingSlash(curPathname)\n }\n }\n let params = route.match(curPathname)\n\n if ((route.has || route.missing) && params) {\n const hasParams = matchHas(\n req,\n parsedUrl.query,\n route.has,\n route.missing\n )\n if (hasParams) {\n Object.assign(params, hasParams)\n } else {\n params = false\n }\n }\n\n if (params) {\n if (\n fsChecker.exportPathMapRoutes &&\n route.name === 'before_files_end'\n ) {\n for (const exportPathMapRoute of fsChecker.exportPathMapRoutes) {\n const result = await handleRoute(exportPathMapRoute)\n\n if (result) {\n return result\n }\n }\n }\n\n if (route.name === 'middleware_next_data' && parsedUrl.pathname) {\n if (fsChecker.getMiddlewareMatchers()?.length) {\n let normalized = parsedUrl.pathname\n\n // Remove the base path if it exists.\n const hadBasePath = normalizers.basePath?.match(parsedUrl.pathname)\n if (hadBasePath && normalizers.basePath) {\n normalized = normalizers.basePath.normalize(normalized, true)\n }\n\n let updated = false\n if (normalizers.data.match(normalized)) {\n updated = true\n addRequestMeta(req, 'isNextDataReq', true)\n normalized = normalizers.data.normalize(normalized, true)\n }\n\n if (config.i18n) {\n const curLocaleResult = normalizeLocalePath(\n normalized,\n config.i18n.locales\n )\n\n if (curLocaleResult.detectedLocale) {\n addRequestMeta(req, 'locale', curLocaleResult.detectedLocale)\n }\n }\n\n // If we updated the pathname, and it had a base path, re-add the\n // base path.\n if (updated) {\n if (hadBasePath) {\n normalized =\n normalized === '/'\n ? config.basePath\n : path.posix.join(config.basePath, normalized)\n }\n\n // Re-add the trailing slash (if required).\n normalized = maybeAddTrailingSlash(normalized)\n\n parsedUrl.pathname = normalized\n }\n }\n }\n\n if (route.name === 'check_fs') {\n const pathname = parsedUrl.pathname || '/'\n\n if (invokedOutputs?.has(pathname) || checkLocaleApi(pathname)) {\n return\n }\n const output = await fsChecker.getItem(pathname)\n\n if (\n output &&\n !(\n config.i18n &&\n initialLocaleResult?.detectedLocale &&\n pathHasPrefix(pathname, '/api')\n )\n ) {\n if (\n config.useFileSystemPublicRoutes ||\n didRewrite ||\n (output.type !== 'appFile' && output.type !== 'pageFile')\n ) {\n matchedOutput = output\n\n if (output.locale) {\n addRequestMeta(req, 'locale', output.locale)\n }\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n matchedOutput,\n }\n }\n }\n }\n\n if (!opts.minimalMode && route.name === 'middleware') {\n const match = fsChecker.getMiddlewareMatchers()\n let maybeDecodedPathname = parsedUrl.pathname || '/'\n\n try {\n maybeDecodedPathname = decodeURIComponent(maybeDecodedPathname)\n } catch {\n /* non-fatal we can't decode so can't match it */\n }\n\n if (\n // @ts-expect-error BaseNextRequest stuff\n match?.(parsedUrl.pathname, req, parsedUrl.query) ||\n match?.(\n maybeDecodedPathname,\n // @ts-expect-error BaseNextRequest stuff\n req,\n parsedUrl.query\n )\n ) {\n if (ensureMiddleware) {\n await ensureMiddleware(req.url)\n }\n\n const serverResult =\n await renderServer?.initialize(renderServerOpts)\n\n if (!serverResult) {\n throw new Error(`Failed to initialize render server \"middleware\"`)\n }\n\n addRequestMeta(req, 'invokePath', '')\n addRequestMeta(req, 'invokeOutput', '')\n addRequestMeta(req, 'invokeQuery', {})\n addRequestMeta(req, 'middlewareInvoke', true)\n debug('invoking middleware', req.url, req.headers)\n\n let middlewareRes: Response | undefined = undefined\n let bodyStream: ReadableStream | undefined = undefined\n try {\n try {\n await serverResult.requestHandler(req, res, parsedUrl)\n } catch (err: any) {\n if (!('result' in err) || !('response' in err.result)) {\n throw err\n }\n middlewareRes = err.result.response as Response\n res.statusCode = middlewareRes.status\n\n if (middlewareRes.body) {\n bodyStream = middlewareRes.body\n } else if (middlewareRes.status) {\n bodyStream = new ReadableStream({\n start(controller) {\n controller.enqueue('')\n controller.close()\n },\n })\n }\n }\n } catch (e) {\n // If the client aborts before we can receive a response object\n // (when the headers are flushed), then we can early exit without\n // further processing.\n if (isAbortError(e)) {\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n }\n }\n throw e\n }\n\n if (res.closed || res.finished || !middlewareRes) {\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n }\n }\n\n const middlewareHeaders = toNodeOutgoingHttpHeaders(\n middlewareRes.headers\n ) as Record\n\n debug('middleware res', middlewareRes.status, middlewareHeaders)\n\n if (middlewareHeaders['x-middleware-override-headers']) {\n const overriddenHeaders: Set = new Set()\n let overrideHeaders: string | string[] =\n middlewareHeaders['x-middleware-override-headers']\n\n if (typeof overrideHeaders === 'string') {\n overrideHeaders = overrideHeaders.split(',')\n }\n\n for (const key of overrideHeaders) {\n overriddenHeaders.add(key.trim())\n }\n delete middlewareHeaders['x-middleware-override-headers']\n\n // Delete headers.\n for (const key of Object.keys(req.headers)) {\n if (!overriddenHeaders.has(key)) {\n delete req.headers[key]\n }\n }\n\n // Update or add headers.\n for (const key of overriddenHeaders.keys()) {\n const valueKey = 'x-middleware-request-' + key\n const newValue = middlewareHeaders[valueKey]\n const oldValue = req.headers[key]\n\n if (oldValue !== newValue) {\n req.headers[key] = newValue === null ? undefined : newValue\n }\n delete middlewareHeaders[valueKey]\n }\n }\n\n if (\n !middlewareHeaders['x-middleware-rewrite'] &&\n !middlewareHeaders['x-middleware-next'] &&\n !middlewareHeaders['location']\n ) {\n middlewareHeaders['x-middleware-refresh'] = '1'\n }\n delete middlewareHeaders['x-middleware-next']\n\n for (const [key, value] of Object.entries({\n ...filterReqHeaders(middlewareHeaders, ipcForbiddenHeaders),\n })) {\n if (\n [\n 'content-length',\n 'x-middleware-rewrite',\n 'x-middleware-redirect',\n 'x-middleware-refresh',\n ].includes(key)\n ) {\n continue\n }\n\n // for set-cookie, the header shouldn't be added to the response\n // as it's only needed for the request to the middleware function.\n if (key === 'x-middleware-set-cookie') {\n req.headers[key] = value\n continue\n }\n\n if (value) {\n resHeaders[key] = value\n req.headers[key] = value\n }\n }\n\n if (middlewareHeaders['x-middleware-rewrite']) {\n const value = middlewareHeaders['x-middleware-rewrite'] as string\n const destination = getRelativeURL(value, initUrl)\n resHeaders['x-middleware-rewrite'] = destination\n\n parsedUrl = url.parse(destination, true)\n\n if (parsedUrl.protocol) {\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n }\n }\n\n if (config.i18n) {\n const curLocaleResult = normalizeLocalePath(\n parsedUrl.pathname || '',\n config.i18n.locales\n )\n\n if (curLocaleResult.detectedLocale) {\n addRequestMeta(req, 'locale', curLocaleResult.detectedLocale)\n }\n }\n }\n\n if (middlewareHeaders['location']) {\n const value = middlewareHeaders['location'] as string\n\n // Only process Location header as a redirect if it has a proper redirect status\n // This prevents a Location header with non-redirect status from being treated as a redirect\n const isRedirectStatus = allowedStatusCodes.has(\n middlewareRes.status\n )\n\n if (isRedirectStatus) {\n // Process as redirect: update parsedUrl and convert to relative URL\n const rel = getRelativeURL(value, initUrl)\n resHeaders['location'] = rel\n parsedUrl = url.parse(rel, true)\n\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n statusCode: middlewareRes.status,\n }\n } else {\n // Not a redirect: just pass through the Location header\n resHeaders['location'] = value\n\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n bodyStream,\n statusCode: middlewareRes.status,\n }\n }\n }\n\n if (middlewareHeaders['x-middleware-refresh']) {\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n bodyStream,\n statusCode: middlewareRes.status,\n }\n }\n }\n }\n\n // handle redirect\n if (\n ('statusCode' in route || 'permanent' in route) &&\n route.destination\n ) {\n const { parsedDestination } = prepareDestination({\n appendParamsToQuery: false,\n destination: route.destination,\n params: params,\n query: parsedUrl.query,\n })\n\n const { query } = parsedDestination\n delete (parsedDestination as any).query\n\n parsedDestination.search = stringifyQuery(req as any, query)\n\n parsedDestination.pathname = normalizeRepeatedSlashes(\n parsedDestination.pathname\n )\n\n return {\n finished: true,\n // @ts-expect-error custom ParsedUrl\n parsedUrl: parsedDestination,\n statusCode: getRedirectStatus(route),\n }\n }\n\n // handle headers\n if (route.headers) {\n const hasParams = Object.keys(params).length > 0\n for (const header of route.headers) {\n let { key, value } = header\n if (hasParams) {\n key = compileNonPath(key, params)\n value = compileNonPath(value, params)\n }\n\n if (key.toLowerCase() === 'set-cookie') {\n if (!Array.isArray(resHeaders[key])) {\n const val = resHeaders[key]\n resHeaders[key] = typeof val === 'string' ? [val] : []\n }\n ;(resHeaders[key] as string[]).push(value)\n } else {\n resHeaders[key] = value\n }\n }\n }\n\n // handle rewrite\n if (route.destination) {\n let rewriteParams = params\n\n try {\n // An interception rewrite might reference a dynamic param for a route the user\n // is currently on, which wouldn't be extractable from the matched route params.\n // This attempts to extract the dynamic params from the provided router state.\n if (isInterceptionRouteRewrite(route as Rewrite)) {\n const stateHeader = req.headers[NEXT_ROUTER_STATE_TREE_HEADER]\n\n if (stateHeader) {\n rewriteParams = {\n ...getSelectedParams(\n parseAndValidateFlightRouterState(stateHeader)\n ),\n ...params,\n }\n }\n }\n } catch (err) {\n // this is a no-op -- we couldn't extract dynamic params from the provided router state,\n // so we'll just use the params from the route matcher\n }\n\n const { parsedDestination } = prepareDestination({\n appendParamsToQuery: true,\n destination: route.destination,\n params: rewriteParams,\n query: parsedUrl.query,\n })\n\n if (parsedDestination.protocol) {\n return {\n // @ts-expect-error custom ParsedUrl\n parsedUrl: parsedDestination,\n finished: true,\n }\n }\n\n // Set the rewrite headers only if this is a RSC request.\n if (req.headers[RSC_HEADER] === '1') {\n // We set the rewritten path and query headers on the response now\n // that we know that the it's not an external rewrite.\n if (parsedUrl.pathname !== parsedDestination.pathname) {\n res.setHeader(\n NEXT_REWRITTEN_PATH_HEADER,\n parsedDestination.pathname\n )\n }\n if (parsedUrl.search !== parsedDestination.search) {\n res.setHeader(\n NEXT_REWRITTEN_QUERY_HEADER,\n // remove the leading ? from the search\n parsedDestination.search.slice(1)\n )\n }\n }\n\n if (config.i18n) {\n const curLocaleResult = normalizeLocalePath(\n removePathPrefix(parsedDestination.pathname, config.basePath),\n config.i18n.locales\n )\n\n if (curLocaleResult.detectedLocale) {\n addRequestMeta(req, 'locale', curLocaleResult.detectedLocale)\n }\n }\n didRewrite = true\n parsedUrl.pathname = parsedDestination.pathname\n Object.assign(parsedUrl.query, parsedDestination.query)\n }\n\n // handle check: true\n if (route.check) {\n const output = await checkTrue()\n\n if (output) {\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n matchedOutput: output,\n }\n }\n }\n }\n }\n\n for (const route of routes) {\n const result = await handleRoute(route)\n if (result) {\n return result\n }\n }\n\n return {\n finished,\n parsedUrl,\n resHeaders,\n matchedOutput,\n }\n }\n\n return resolveRoutes\n}\n"],"names":["url","path","setupDebug","getCloneableBody","filterReqHeaders","ipcForbiddenHeaders","stringifyQuery","formatHostname","toNodeOutgoingHttpHeaders","isAbortError","getHostname","getRedirectStatus","allowedStatusCodes","normalizeRepeatedSlashes","getRelativeURL","addPathPrefix","pathHasPrefix","detectDomainLocale","normalizeLocalePath","removePathPrefix","NextDataPathnameNormalizer","BasePathPathnameNormalizer","addRequestMeta","compileNonPath","matchHas","prepareDestination","NEXT_REWRITTEN_PATH_HEADER","NEXT_REWRITTEN_QUERY_HEADER","NEXT_ROUTER_STATE_TREE_HEADER","RSC_HEADER","getSelectedParams","isInterceptionRouteRewrite","parseAndValidateFlightRouterState","debug","getResolveRoutes","fsChecker","config","opts","renderServer","renderServerOpts","ensureMiddleware","routes","match","name","minimalMode","headers","redirects","rewrites","beforeFiles","afterFiles","check","fallback","resolveRoutes","req","res","isUpgradeReq","invokedOutputs","finished","resHeaders","matchedOutput","parsedUrl","parse","didRewrite","urlParts","split","urlNoQuery","statusCode","protocol","socket","encrypted","includes","initUrl","experimental","trustHostHeader","host","port","hostname","query","bodySizeLimit","middlewareClientMaxBodySize","maybeAddTrailingSlash","pathname","trailingSlash","skipMiddlewareUrlNormalize","endsWith","domainLocale","defaultLocale","initialLocaleResult","undefined","i18n","hadTrailingSlash","hadBasePath","basePath","normalizedPath","assetPrefix","locales","domains","detectedLocale","startsWith","checkLocaleApi","checkTrue","has","output","getItem","useFileSystemPublicRoutes","type","dynamicRoutes","getDynamicRoutes","curPathname","substring","length","localeResult","handleLocale","route","page","params","pageOutput","normalizers","data","buildId","handleRoute","internal","isDefaultLocale","missing","hasParams","Object","assign","exportPathMapRoutes","exportPathMapRoute","result","getMiddlewareMatchers","normalized","normalize","updated","curLocaleResult","posix","join","locale","maybeDecodedPathname","decodeURIComponent","serverResult","initialize","Error","middlewareRes","bodyStream","requestHandler","err","response","status","body","ReadableStream","start","controller","enqueue","close","e","closed","middlewareHeaders","overriddenHeaders","Set","overrideHeaders","key","add","trim","keys","valueKey","newValue","oldValue","value","entries","destination","isRedirectStatus","rel","parsedDestination","appendParamsToQuery","search","header","toLowerCase","Array","isArray","val","push","rewriteParams","stateHeader","setHeader","slice"],"mappings":"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","ignoreList":[0]}