{"version":3,"sources":["../../../src/server/route-modules/route-module.ts"],"sourcesContent":["import '../../build/adapter/setup-node-env.external'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\nimport type {\n  InstrumentationOnRequestError,\n  RequestErrorContext,\n} from '../instrumentation/types'\nimport type { ParsedUrlQuery } from 'node:querystring'\nimport type { UrlWithParsedQuery } from 'node:url'\nimport type {\n  PrerenderManifest,\n  RequiredServerFilesManifest,\n} from '../../build'\nimport type { DevRoutesManifest } from '../lib/router-utils/setup-dev-bundler'\nimport type { RouteDefinition } from '../route-definitions/route-definition'\nimport type { DeepReadonly } from '../../shared/lib/deep-readonly'\nimport {\n  BUILD_ID_FILE,\n  BUILD_MANIFEST,\n  CLIENT_REFERENCE_MANIFEST,\n  DYNAMIC_CSS_MANIFEST,\n  NEXT_FONT_MANIFEST,\n  PREFETCH_HINTS,\n  PRERENDER_MANIFEST,\n  REACT_LOADABLE_MANIFEST,\n  ROUTES_MANIFEST,\n  SERVER_FILES_MANIFEST,\n  SERVER_REFERENCE_MANIFEST,\n  SUBRESOURCE_INTEGRITY_MANIFEST,\n} from '../../shared/lib/constants'\nimport { parseReqUrl } from '../../lib/url'\nimport {\n  normalizeLocalePath,\n  type PathLocale,\n} from '../../shared/lib/i18n/normalize-locale-path'\nimport { isDynamicRoute } from '../../shared/lib/router/utils'\nimport { removePathPrefix } from '../../shared/lib/router/utils/remove-path-prefix'\nimport { getServerUtils } from '../server-utils'\nimport { detectDomainLocale } from '../../shared/lib/i18n/detect-domain-locale'\nimport { getHostname } from '../../shared/lib/get-hostname'\nimport { checkIsOnDemandRevalidate } from '../api-utils'\nimport type { PreviewData } from '../../types'\nimport type { BuildManifest } from '../get-page-files'\nimport type { ReactLoadableManifest } from '../load-components'\nimport type { NextFontManifest } from '../../build/webpack/plugins/next-font-manifest-plugin'\nimport { normalizeDataPath } from '../../shared/lib/page-path/normalize-data-path'\nimport { pathHasPrefix } from '../../shared/lib/router/utils/path-has-prefix'\nimport {\n  addRequestMeta,\n  getRequestMeta,\n  type NextIncomingMessage,\n} from '../request-meta'\nimport { patchSetHeaderWithCookieSupport } from '../lib/patch-set-header'\nimport { normalizePagePath } from '../../shared/lib/page-path/normalize-page-path'\nimport { isStaticMetadataRoute } from '../../lib/metadata/is-metadata-route'\nimport { IncrementalCache } from '../lib/incremental-cache'\nimport { initializeCacheHandlers, setCacheHandler } from '../use-cache/handlers'\nimport { interopDefault } from '../app-render/interop-default'\nimport { RouteKind } from '../route-kind'\nimport type { BaseNextRequest } from '../base-http'\nimport type { I18NConfig, NextConfigRuntime } from '../config-shared'\nimport ResponseCache, { type ResponseGenerator } from '../response-cache'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport {\n  RouterServerContextSymbol,\n  routerServerGlobal,\n  type RouterServerContext,\n} from '../lib/router-utils/router-server-context'\nimport { decodePathParams } from '../lib/router-utils/decode-path-params'\nimport { removeTrailingSlash } from '../../shared/lib/router/utils/remove-trailing-slash'\nimport { isInterceptionRouteRewrite } from '../../lib/is-interception-route-rewrite'\n\n/**\n * RouteModuleOptions is the options that are passed to the route module, other\n * route modules should extend this class to add specific options for their\n * route.\n */\nexport interface RouteModuleOptions<\n  D extends RouteDefinition = RouteDefinition,\n  U = unknown,\n> {\n  readonly definition: Readonly<D>\n  readonly userland: Readonly<U>\n  readonly distDir: string\n  readonly relativeProjectDir: string\n}\n\n/**\n * RouteHandlerContext is the base context for a route handler.\n */\nexport interface RouteModuleHandleContext {\n  /**\n   * Any matched parameters for the request. This is only defined for dynamic\n   * routes.\n   */\n  params: Record<string, string | string[] | undefined> | undefined\n}\n\nconst dynamicImportEsmDefault = (id: string) =>\n  import(/* webpackIgnore: true */ /* turbopackIgnore: true */ id).then(\n    (mod) => mod.default || mod\n  )\n\n/**\n * RouteModule is the base class for all route modules. This class should be\n * extended by all route modules.\n */\nexport abstract class RouteModule<\n  D extends RouteDefinition = RouteDefinition,\n  U = unknown,\n> {\n  /**\n   * The userland module. This is the module that is exported from the user's\n   * code. Exposed as a getter so subclasses can override with lazy loading.\n   */\n  protected _userland: Readonly<U>\n\n  get userland(): Readonly<U> {\n    return this._userland\n  }\n\n  /**\n   * The definition of the route.\n   */\n  public readonly definition: Readonly<D>\n\n  /**\n   * The shared modules that are exposed and required for the route module.\n   */\n  public static readonly sharedModules: any\n\n  public isDev: boolean\n  public distDir: string\n  public relativeProjectDir: string\n  public incrementCache?: IncrementalCache\n  public responseCache?: ResponseCache\n\n  constructor({\n    userland,\n    definition,\n    distDir,\n    relativeProjectDir,\n  }: RouteModuleOptions<D, U>) {\n    this._userland = userland\n    this.definition = definition\n    this.isDev = !!process.env.__NEXT_DEV_SERVER\n    this.distDir = distDir\n    this.relativeProjectDir = relativeProjectDir\n  }\n\n  private getRouterServerContext(\n    req: NextIncomingMessage\n  ): RouterServerContext[string] | undefined {\n    const hostname = getRequestMeta(req, 'hostname')\n    const revalidate = getRequestMeta(req, 'revalidate')\n    const render404 = getRequestMeta(req, 'render404')\n    const relativeProjectDir =\n      getRequestMeta(req, 'relativeProjectDir') || this.relativeProjectDir\n    const routerServerContext =\n      routerServerGlobal[RouterServerContextSymbol]?.[relativeProjectDir]\n\n    return {\n      ...routerServerContext,\n      ...(hostname !== undefined ? { hostname } : {}),\n      ...(revalidate !== undefined ? { revalidate } : {}),\n      ...(render404 !== undefined ? { render404 } : {}),\n    }\n  }\n\n  public normalizeUrl(\n    _req: IncomingMessage | BaseNextRequest,\n    _parsedUrl: UrlWithParsedQuery\n  ) {}\n\n  public async instrumentationOnRequestError(\n    req: IncomingMessage | BaseNextRequest,\n    ...args: Parameters<InstrumentationOnRequestError>\n  ) {\n    if (process.env.NEXT_RUNTIME === 'edge') {\n      const { getEdgeInstrumentationModule } = await import('../web/globals')\n      const instrumentation = await getEdgeInstrumentationModule()\n\n      if (instrumentation) {\n        await instrumentation.onRequestError?.(...args)\n      }\n    } else {\n      const { join } = require('node:path') as typeof import('node:path')\n      const absoluteProjectDir = join(\n        /* turbopackIgnore: true */\n        process.cwd(),\n        getRequestMeta(req, 'relativeProjectDir') || this.relativeProjectDir\n      )\n\n      const { instrumentationOnRequestError } = await import(\n        '../lib/router-utils/instrumentation-globals.external.js'\n      )\n\n      return instrumentationOnRequestError(\n        absoluteProjectDir,\n        this.distDir,\n        ...args\n      )\n    }\n  }\n\n  private loadManifests(\n    srcPage: string,\n    projectDir?: string\n  ): {\n    buildId: string\n    buildManifest: BuildManifest\n    fallbackBuildManifest: BuildManifest\n    routesManifest: DeepReadonly<DevRoutesManifest>\n    nextFontManifest: DeepReadonly<NextFontManifest>\n    prerenderManifest: DeepReadonly<PrerenderManifest>\n    serverFilesManifest: DeepReadonly<RequiredServerFilesManifest> | undefined\n    reactLoadableManifest: DeepReadonly<ReactLoadableManifest>\n    subresourceIntegrityManifest: any\n    clientReferenceManifest: any\n    serverActionsManifest: any\n    dynamicCssManifest: any\n    prefetchHintsManifest: Record<string, any> | undefined\n    interceptionRoutePatterns: RegExp[]\n  } {\n    let result\n    if (process.env.NEXT_RUNTIME === 'edge') {\n      const { getEdgePreviewProps } =\n        require('../web/get-edge-preview-props') as typeof import('../web/get-edge-preview-props')\n\n      const maybeJSONParse = (str?: string) =>\n        str ? JSON.parse(str) : undefined\n\n      result = {\n        buildId: process.env.__NEXT_BUILD_ID || '',\n        buildManifest: self.__BUILD_MANIFEST as any,\n        fallbackBuildManifest: {} as any,\n        reactLoadableManifest: maybeJSONParse(self.__REACT_LOADABLE_MANIFEST),\n        nextFontManifest: maybeJSONParse(self.__NEXT_FONT_MANIFEST),\n        prerenderManifest: {\n          routes: {},\n          dynamicRoutes: {},\n          notFoundRoutes: [],\n          version: 4,\n          preview: getEdgePreviewProps(),\n        } as const,\n        routesManifest: {\n          version: 4,\n          caseSensitive: Boolean(process.env.__NEXT_CASE_SENSITIVE_ROUTES),\n          basePath: process.env.__NEXT_BASE_PATH || '',\n          rewrites: (process.env.__NEXT_REWRITES as any) || {\n            beforeFiles: [],\n            afterFiles: [],\n            fallback: [],\n          },\n          redirects: [],\n          headers: [],\n          onMatchHeaders: [],\n          i18n:\n            (process.env.__NEXT_I18N_CONFIG as any as I18NConfig) || undefined,\n          skipProxyUrlNormalize: Boolean(\n            process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE\n          ),\n        },\n        serverFilesManifest: self.__SERVER_FILES_MANIFEST,\n        clientReferenceManifest: self.__RSC_MANIFEST?.[srcPage],\n        serverActionsManifest: maybeJSONParse(self.__RSC_SERVER_MANIFEST),\n        subresourceIntegrityManifest: maybeJSONParse(\n          self.__SUBRESOURCE_INTEGRITY_MANIFEST\n        ),\n        dynamicCssManifest: maybeJSONParse(self.__DYNAMIC_CSS_MANIFEST),\n        // Edge pages are always dynamic so prefetch inlining hints\n        // don't apply. The runtime handles missing hints gracefully.\n        prefetchHintsManifest: undefined,\n        interceptionRoutePatterns: (\n          maybeJSONParse(self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST) ?? []\n        ).map((rewrite: any) => new RegExp(rewrite.regex)),\n      }\n    } else {\n      if (!projectDir) {\n        throw new Error('Invariant: projectDir is required for node runtime')\n      }\n      const { loadManifestFromRelativePath } =\n        require('../load-manifest.external') as typeof import('../load-manifest.external')\n      const normalizedPagePath = normalizePagePath(srcPage)\n\n      const router =\n        this.definition.kind === RouteKind.PAGES ||\n        this.definition.kind === RouteKind.PAGES_API\n          ? 'pages'\n          : 'app'\n\n      const [\n        routesManifest,\n        prerenderManifest,\n        buildManifest,\n        fallbackBuildManifest,\n        reactLoadableManifest,\n        nextFontManifest,\n        clientReferenceManifest,\n        serverActionsManifest,\n        subresourceIntegrityManifest,\n        serverFilesManifest,\n        buildId,\n        dynamicCssManifest,\n        prefetchHintsManifest,\n      ] = [\n        loadManifestFromRelativePath<DevRoutesManifest>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: ROUTES_MANIFEST,\n          shouldCache: !this.isDev,\n        }),\n        loadManifestFromRelativePath<PrerenderManifest>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: PRERENDER_MANIFEST,\n          shouldCache: !this.isDev,\n        }),\n        loadManifestFromRelativePath<BuildManifest>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: BUILD_MANIFEST,\n          shouldCache: !this.isDev,\n        }),\n        srcPage === '/_error'\n          ? loadManifestFromRelativePath<BuildManifest>({\n              projectDir,\n              distDir: this.distDir,\n              manifest: `fallback-${BUILD_MANIFEST}`,\n              shouldCache: !this.isDev,\n              handleMissing: true,\n            })\n          : ({} as BuildManifest),\n        loadManifestFromRelativePath<ReactLoadableManifest>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: process.env.TURBOPACK\n            ? `server/${router === 'app' ? 'app' : 'pages'}${normalizedPagePath}/${REACT_LOADABLE_MANIFEST}`\n            : REACT_LOADABLE_MANIFEST,\n          handleMissing: true,\n          shouldCache: !this.isDev,\n        }),\n        loadManifestFromRelativePath<NextFontManifest>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: `server/${NEXT_FONT_MANIFEST}.json`,\n          shouldCache: !this.isDev,\n        }),\n        router === 'app' && !isStaticMetadataRoute(srcPage)\n          ? loadManifestFromRelativePath({\n              distDir: this.distDir,\n              projectDir,\n              useEval: true,\n              handleMissing: true,\n              manifest: `server/app${srcPage.replace(/%5F/g, '_') + '_' + CLIENT_REFERENCE_MANIFEST}.js`,\n              shouldCache: !this.isDev,\n            })\n          : undefined,\n        router === 'app'\n          ? loadManifestFromRelativePath<any>({\n              distDir: this.distDir,\n              projectDir,\n              manifest: `server/${SERVER_REFERENCE_MANIFEST}.json`,\n              handleMissing: true,\n              shouldCache: !this.isDev,\n            })\n          : {},\n        loadManifestFromRelativePath<Record<string, string>>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: `server/${SUBRESOURCE_INTEGRITY_MANIFEST}.json`,\n          handleMissing: true,\n          shouldCache: !this.isDev,\n        }),\n        this.isDev\n          ? undefined\n          : loadManifestFromRelativePath<RequiredServerFilesManifest>({\n              projectDir,\n              distDir: this.distDir,\n              shouldCache: true,\n              manifest: `${SERVER_FILES_MANIFEST}.json`,\n            }),\n        this.isDev\n          ? 'development'\n          : loadManifestFromRelativePath<any>({\n              projectDir,\n              distDir: this.distDir,\n              manifest: BUILD_ID_FILE,\n              skipParse: true,\n              shouldCache: true,\n            }),\n        loadManifestFromRelativePath<any>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: DYNAMIC_CSS_MANIFEST,\n          shouldCache: !this.isDev,\n          handleMissing: true,\n        }),\n        router === 'app'\n          ? loadManifestFromRelativePath<Record<string, any>>({\n              projectDir,\n              distDir: this.distDir,\n              manifest: `server/${PREFETCH_HINTS}`,\n              shouldCache: !this.isDev,\n              handleMissing: true,\n            })\n          : undefined,\n      ]\n\n      result = {\n        buildId,\n        buildManifest,\n        fallbackBuildManifest,\n        routesManifest,\n        nextFontManifest,\n        prerenderManifest,\n        serverFilesManifest,\n        reactLoadableManifest,\n        clientReferenceManifest: (clientReferenceManifest as any)\n          ?.__RSC_MANIFEST?.[srcPage.replace(/%5F/g, '_')],\n        serverActionsManifest,\n        subresourceIntegrityManifest,\n        dynamicCssManifest,\n        prefetchHintsManifest,\n        interceptionRoutePatterns: routesManifest.rewrites.beforeFiles\n          .filter(isInterceptionRouteRewrite)\n          .map((rewrite) => new RegExp(rewrite.regex)),\n      }\n    }\n\n    return result\n  }\n\n  public async loadCustomCacheHandlers(\n    req: IncomingMessage | BaseNextRequest,\n    nextConfig: NextConfigRuntime\n  ) {\n    if (process.env.NEXT_RUNTIME !== 'edge') {\n      const { cacheMaxMemorySize, cacheHandlers } = nextConfig\n      if (!cacheHandlers) return\n\n      // If we've already initialized the cache handlers interface, don't do it\n      // again.\n      if (!initializeCacheHandlers(cacheMaxMemorySize)) return\n\n      for (const [kind, handler] of Object.entries(cacheHandlers)) {\n        if (!handler) continue\n\n        const { formatDynamicImportPath } =\n          require('../../lib/format-dynamic-import-path') as typeof import('../../lib/format-dynamic-import-path')\n\n        const { join } = require('node:path') as typeof import('node:path')\n        const absoluteProjectDir = join(\n          /* turbopackIgnore: true */\n          process.cwd(),\n          getRequestMeta(req, 'relativeProjectDir') || this.relativeProjectDir\n        )\n\n        setCacheHandler(\n          kind,\n          interopDefault(\n            await dynamicImportEsmDefault(\n              formatDynamicImportPath(\n                `${absoluteProjectDir}/${this.distDir}`,\n                handler\n              )\n            )\n          )\n        )\n      }\n    }\n  }\n\n  public async getIncrementalCache(\n    req: IncomingMessage | BaseNextRequest,\n    nextConfig: NextConfigRuntime,\n    prerenderManifest: DeepReadonly<PrerenderManifest>,\n    isMinimalMode: boolean\n  ): Promise<IncrementalCache> {\n    if (process.env.NEXT_RUNTIME === 'edge') {\n      return (globalThis as any).__incrementalCache\n    } else {\n      let CacheHandler: any\n      const { cacheHandler } = nextConfig\n\n      if (cacheHandler) {\n        const { formatDynamicImportPath } =\n          require('../../lib/format-dynamic-import-path') as typeof import('../../lib/format-dynamic-import-path')\n\n        CacheHandler = interopDefault(\n          await dynamicImportEsmDefault(\n            formatDynamicImportPath(this.distDir, cacheHandler)\n          )\n        )\n      }\n      const { join } = require('node:path') as typeof import('node:path')\n      const projectDir = join(\n        /* turbopackIgnore: true */\n        process.cwd(),\n        getRequestMeta(req, 'relativeProjectDir') || this.relativeProjectDir\n      )\n\n      await this.loadCustomCacheHandlers(req, nextConfig)\n\n      // incremental-cache is request specific\n      // although can have shared caches in module scope\n      // per-cache handler\n      const incrementalCache = new IncrementalCache({\n        fs: (\n          require('../lib/node-fs-methods') as typeof import('../lib/node-fs-methods')\n        ).nodeFs,\n        dev: this.isDev,\n        requestHeaders: req.headers,\n        allowedRevalidateHeaderKeys:\n          nextConfig.experimental.allowedRevalidateHeaderKeys,\n        minimalMode: isMinimalMode,\n        serverDistDir: `${projectDir}/${this.distDir}/server`,\n        fetchCacheKeyPrefix: nextConfig.experimental.fetchCacheKeyPrefix,\n        maxMemoryCacheSize: nextConfig.cacheMaxMemorySize,\n        flushToDisk: !isMinimalMode && nextConfig.experimental.isrFlushToDisk,\n        getPrerenderManifest: () => prerenderManifest,\n        CurCacheHandler: CacheHandler,\n      })\n\n      // we need to expose this on globalThis as the app-render\n      // workStore grabs the incrementalCache from there\n      ;(globalThis as any).__incrementalCache = incrementalCache\n      return incrementalCache\n    }\n  }\n\n  public async onRequestError(\n    req: IncomingMessage | BaseNextRequest,\n    err: unknown,\n    errorContext: RequestErrorContext,\n    silenceLog: boolean,\n    routerServerContext?: RouterServerContext[string]\n  ) {\n    if (!silenceLog) {\n      if (routerServerContext?.logErrorWithOriginalStack) {\n        routerServerContext.logErrorWithOriginalStack(err, 'app-dir')\n      } else {\n        console.error(err)\n      }\n    }\n    await this.instrumentationOnRequestError(\n      req,\n      err,\n      {\n        path: req.url || '/',\n        headers: req.headers,\n        method: req.method || 'GET',\n      },\n      errorContext\n    )\n  }\n\n  /** A more lightweight version of `prepare()` for only retrieving the config on edge */\n  public getNextConfigEdge(req: NextIncomingMessage): {\n    nextConfig: NextConfigRuntime\n    deploymentId: string\n  } {\n    if (process.env.NEXT_RUNTIME !== 'edge') {\n      throw new Error(\n        'Invariant: getNextConfigEdge must only be called in edge runtime'\n      )\n    }\n\n    let serverFilesManifest = self.__SERVER_FILES_MANIFEST as any as\n      | RequiredServerFilesManifest\n      | undefined\n    const routerServerContext = this.getRouterServerContext(req)\n    const nextConfig =\n      routerServerContext?.nextConfig || serverFilesManifest?.config\n\n    if (!nextConfig) {\n      throw new Error(\"Invariant: nextConfig couldn't be loaded\")\n    }\n\n    let deploymentId\n    if (nextConfig.experimental?.runtimeServerDeploymentId) {\n      if (!process.env.NEXT_DEPLOYMENT_ID) {\n        throw new Error(\n          'process.env.NEXT_DEPLOYMENT_ID is missing but runtimeServerDeploymentId is enabled'\n        )\n      }\n      deploymentId = process.env.NEXT_DEPLOYMENT_ID\n    } else {\n      deploymentId = nextConfig.deploymentId || ''\n    }\n\n    return { nextConfig, deploymentId }\n  }\n\n  public async prepare(\n    req: IncomingMessage | BaseNextRequest,\n    res: ServerResponse | null,\n    {\n      srcPage,\n      multiZoneDraftMode,\n    }: {\n      srcPage: string\n      multiZoneDraftMode?: boolean\n    }\n  ): Promise<\n    | {\n        buildId: string\n        deploymentId: string\n        clientAssetToken: string\n        locale?: string\n        locales?: readonly string[]\n        defaultLocale?: string\n        query: ParsedUrlQuery\n        originalQuery: ParsedUrlQuery\n        originalPathname: string\n        params?: ParsedUrlQuery\n        parsedUrl: UrlWithParsedQuery\n        previewData: PreviewData\n        pageIsDynamic: boolean\n        isDraftMode: boolean\n        resolvedPathname: string\n        encodedResolvedPathname: string\n        isNextDataRequest: boolean\n        buildManifest: DeepReadonly<BuildManifest>\n        fallbackBuildManifest: DeepReadonly<BuildManifest>\n        nextFontManifest: DeepReadonly<NextFontManifest>\n        serverFilesManifest:\n          | DeepReadonly<RequiredServerFilesManifest>\n          | undefined\n        reactLoadableManifest: DeepReadonly<ReactLoadableManifest>\n        routesManifest: DeepReadonly<DevRoutesManifest>\n        prerenderManifest: DeepReadonly<PrerenderManifest>\n        // we can't pull in the client reference type or it causes issues with\n        // our pre-compiled types\n        clientReferenceManifest?: any\n        serverActionsManifest?: any\n        dynamicCssManifest?: any\n        prefetchHintsManifest?: Record<string, any>\n        subresourceIntegrityManifest?: DeepReadonly<Record<string, string>>\n        isOnDemandRevalidate: boolean\n        revalidateOnlyGenerated: boolean\n        nextConfig: NextConfigRuntime\n        routerServerContext?: RouterServerContext[string]\n        interceptionRoutePatterns?: any\n      }\n    | undefined\n  > {\n    let absoluteProjectDir: string | undefined\n\n    // edge runtime handles loading instrumentation at the edge adapter level\n    if (process.env.NEXT_RUNTIME !== 'edge') {\n      if (res) {\n        patchSetHeaderWithCookieSupport(req, res)\n      }\n\n      const { join, relative } =\n        require('node:path') as typeof import('node:path')\n\n      absoluteProjectDir = join(\n        /* turbopackIgnore: true */\n        process.cwd(),\n        getRequestMeta(req, 'relativeProjectDir') || this.relativeProjectDir\n      )\n\n      const absoluteDistDir = getRequestMeta(req, 'distDir')\n\n      if (absoluteDistDir) {\n        this.distDir = relative(absoluteProjectDir, absoluteDistDir)\n      }\n      const { ensureInstrumentationRegistered } = await import(\n        '../lib/router-utils/instrumentation-globals.external.js'\n      )\n      // ensure instrumentation is registered and pass\n      // onRequestError below. Awaited so any caller of `RouteModule.prepare`\n      // that bypasses `BaseServer.handleRequest` (where this is also awaited\n      // via `prepareImpl`) still observes the instrumentation hook completing\n      // before the userland route handler runs.\n      await ensureInstrumentationRegistered(absoluteProjectDir, this.distDir)\n    }\n    const manifests = this.loadManifests(srcPage, absoluteProjectDir)\n    const { routesManifest, prerenderManifest, serverFilesManifest } = manifests\n\n    const { basePath, i18n, rewrites } = routesManifest\n\n    const routerServerContext = this.getRouterServerContext(req)\n    const nextConfig =\n      routerServerContext?.nextConfig || serverFilesManifest?.config\n\n    // Injected in base-server.ts\n    const protocol = 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    if (!getRequestMeta(req, 'initURL')) {\n      const initUrl = serverFilesManifest?.config.experimental.trustHostHeader\n        ? `${protocol}://${req.headers.host || 'localhost'}${req.url}`\n        : `${protocol}://${routerServerContext?.hostname || 'localhost'}${req.url}`\n\n      addRequestMeta(req, 'initURL', initUrl)\n      addRequestMeta(req, 'initProtocol', protocol)\n    }\n\n    if (basePath) {\n      req.url = removePathPrefix(req.url || '/', basePath)\n    }\n\n    const parsedUrl = parseReqUrl(req.url || '/')\n    addRequestMeta(req, 'initQuery', { ...parsedUrl?.query })\n    // if we couldn't parse the URL we can't continue\n    if (!parsedUrl) {\n      return\n    }\n    let isNextDataRequest = false\n\n    if (pathHasPrefix(parsedUrl.pathname || '/', '/_next/data')) {\n      isNextDataRequest = true\n      parsedUrl.pathname = normalizeDataPath(parsedUrl.pathname || '/')\n    }\n    this.normalizeUrl(req, parsedUrl)\n    let originalPathname = parsedUrl.pathname || '/'\n    const originalQuery = { ...parsedUrl.query }\n    const pageIsDynamic = isDynamicRoute(srcPage)\n\n    let localeResult: PathLocale | undefined\n    let detectedLocale: string | undefined\n\n    if (i18n) {\n      localeResult = normalizeLocalePath(\n        parsedUrl.pathname || '/',\n        i18n.locales\n      )\n\n      if (localeResult.detectedLocale) {\n        req.url = `${localeResult.pathname}${parsedUrl.search}`\n        originalPathname = localeResult.pathname\n\n        if (!detectedLocale) {\n          detectedLocale = localeResult.detectedLocale\n        }\n      }\n    }\n\n    // Normalize the page path for route matching. The srcPage contains the\n    // internal page path (e.g., /app/[slug]/page), but route matchers expect\n    // the pathname format (e.g., /app/[slug]).\n    const normalizedSrcPage = normalizeAppPath(srcPage)\n\n    const serverUtils = getServerUtils({\n      page: normalizedSrcPage,\n      i18n,\n      basePath,\n      rewrites,\n      pageIsDynamic,\n      trailingSlash: process.env.__NEXT_TRAILING_SLASH as any as boolean,\n      caseSensitive: Boolean(routesManifest.caseSensitive),\n    })\n\n    const domainLocale = detectDomainLocale(\n      i18n?.domains,\n      getHostname(parsedUrl, req.headers),\n      detectedLocale\n    )\n\n    if (Boolean(domainLocale)) {\n      addRequestMeta(req, 'isLocaleDomain', Boolean(domainLocale))\n    }\n\n    const defaultLocale =\n      getRequestMeta(req, 'defaultLocale') ||\n      domainLocale?.defaultLocale ||\n      i18n?.defaultLocale\n\n    // Ensure parsedUrl.pathname includes locale before processing\n    // rewrites or they won't match correctly.\n    if (defaultLocale && !detectedLocale) {\n      parsedUrl.pathname = `/${defaultLocale}${parsedUrl.pathname === '/' ? '' : parsedUrl.pathname}`\n    }\n    const locale =\n      getRequestMeta(req, 'locale') || detectedLocale || defaultLocale\n\n    // we apply rewrites against cloned URL so that we don't\n    // modify the original with the rewrite destination\n    const { rewriteParams, rewrittenParsedUrl } = serverUtils.handleRewrites(\n      req,\n      parsedUrl\n    )\n    const rewriteParamKeys = Object.keys(rewriteParams)\n    Object.assign(parsedUrl.query, rewrittenParsedUrl.query)\n\n    // after processing rewrites we want to remove locale\n    // from parsedUrl pathname\n    if (i18n) {\n      parsedUrl.pathname = normalizeLocalePath(\n        parsedUrl.pathname || '/',\n        i18n.locales\n      ).pathname\n\n      rewrittenParsedUrl.pathname = normalizeLocalePath(\n        rewrittenParsedUrl.pathname || '/',\n        i18n.locales\n      ).pathname\n    }\n\n    let params: Record<string, undefined | string | string[]> | undefined =\n      getRequestMeta(req, 'params')\n\n    // attempt parsing from pathname\n    if (!params && serverUtils.dynamicRouteMatcher) {\n      const paramsMatch = serverUtils.dynamicRouteMatcher(\n        normalizeDataPath(\n          rewrittenParsedUrl?.pathname || parsedUrl.pathname || '/'\n        )\n      )\n      const paramsResult = serverUtils.normalizeDynamicRouteParams(\n        paramsMatch || {},\n        true\n      )\n\n      if (paramsResult.hasValidParams) {\n        params = paramsResult.params\n      }\n    }\n\n    // Local \"next start\" expects the routing parsed query values\n    // to not be present in the URL although when deployed proxies\n    // will add query values from resolving the routes to pass to function.\n\n    // TODO: do we want to change expectations for \"next start\"\n    // to include these query values in the URL which affects asPath\n    // but would match deployed behavior, e.g. a rewrite from middleware\n    // that adds a query param would be in asPath as query but locally\n    // it won't be in the asPath but still available in the query object\n    const query = getRequestMeta(req, 'query') || {\n      ...parsedUrl.query,\n    }\n\n    const routeParamKeys = new Set<string>()\n    const combinedParamKeys = []\n\n    // We don't include rewriteParamKeys in the combinedParamKeys\n    // for app router since the searchParams is populated from the\n    // URL so we don't want to strip the rewrite params from the URL\n    // so that searchParams can include them.\n    if (\n      this.definition.kind === RouteKind.PAGES ||\n      this.definition.kind === RouteKind.PAGES_API\n    ) {\n      for (const key of [\n        ...rewriteParamKeys,\n        ...Object.keys(serverUtils.defaultRouteMatches || {}),\n      ]) {\n        // We only want to filter rewrite param keys from the URL\n        // if they are matches from the URL e.g. the key/value matches\n        // before and after applying the rewrites /:path for /hello and\n        // { path: 'hello' } but not for { path: 'another' } and /hello\n        // TODO: we should prefix rewrite param keys the same as we do\n        // for dynamic routes so we can identify them properly\n        const originalValue = Array.isArray(originalQuery[key])\n          ? originalQuery[key].join('')\n          : originalQuery[key]\n\n        const queryValue = Array.isArray(query[key])\n          ? query[key].join('')\n          : query[key]\n\n        if (!(key in originalQuery) || originalValue === queryValue) {\n          combinedParamKeys.push(key)\n        }\n      }\n    }\n\n    serverUtils.normalizeCdnUrl(req, combinedParamKeys)\n    // When Next is not hosted in a single process, upstream proxies will add query values for route params that were used to match the route.\n    // Outside of that environment, there is no reason to do any normalization to honor those query values.\n    if (!routerServerContext?.isWrappedByNextServer) {\n      serverUtils.normalizeQueryParams(query, routeParamKeys)\n    } else {\n      serverUtils.filterInternalQuery(query, [])\n    }\n    serverUtils.filterInternalQuery(originalQuery, combinedParamKeys)\n\n    if (pageIsDynamic) {\n      const queryResult = serverUtils.normalizeDynamicRouteParams(query, true)\n\n      const paramsResult = serverUtils.normalizeDynamicRouteParams(\n        params || {},\n        true\n      )\n\n      let paramsToInterpolate: ParsedUrlQuery\n\n      if (\n        // if both query and params are valid but one\n        // provided more information and the query params\n        // were nxtP prefixed rely on that one\n        query &&\n        params &&\n        paramsResult.hasValidParams &&\n        queryResult.hasValidParams &&\n        routeParamKeys.size > 0 &&\n        Object.keys(paramsResult.params).length <=\n          Object.keys(queryResult.params).length\n      ) {\n        paramsToInterpolate = queryResult.params\n        params = Object.assign(queryResult.params)\n      } else {\n        paramsToInterpolate =\n          paramsResult.hasValidParams && params\n            ? params\n            : queryResult.hasValidParams\n              ? query\n              : {}\n      }\n\n      req.url = serverUtils.interpolateDynamicPath(\n        req.url || '/',\n        paramsToInterpolate\n      )\n      parsedUrl.pathname = serverUtils.interpolateDynamicPath(\n        parsedUrl.pathname || '/',\n        paramsToInterpolate\n      )\n      originalPathname = serverUtils.interpolateDynamicPath(\n        originalPathname,\n        paramsToInterpolate\n      )\n\n      // try pulling from query if valid\n      if (!params) {\n        if (queryResult.hasValidParams) {\n          params = Object.assign({}, queryResult.params)\n\n          // If we pulled from query remove it so it's\n          // only in params\n          for (const key in serverUtils.defaultRouteMatches) {\n            delete query[key]\n          }\n        } else {\n          // use final params from URL matching\n          const paramsMatch = serverUtils.dynamicRouteMatcher?.(\n            normalizeDataPath(\n              localeResult?.pathname || parsedUrl.pathname || '/'\n            )\n          )\n          // we don't normalize these as they are allowed to be\n          // the literal slug matches here e.g. /blog/[slug]\n          // actually being requested\n          if (paramsMatch) {\n            params = Object.assign({}, paramsMatch)\n          }\n        }\n      }\n\n      // When partial nxtP* params are provided (e.g. background\n      // revalidation for intermediate PPR shells), both\n      // normalizeDynamicRouteParams calls above fail because not all\n      // route params are present. Merge the normalized query params\n      // (from nxtP*) into the current params to override placeholders\n      // with concrete values.\n      if (\n        params &&\n        routeParamKeys.size > 0 &&\n        !paramsResult.hasValidParams &&\n        !queryResult.hasValidParams\n      ) {\n        for (const key of routeParamKeys) {\n          if (query[key] !== undefined) {\n            params[key] = query[key]\n          }\n        }\n        addRequestMeta(req, 'resolvedRouteParamKeys', routeParamKeys)\n      }\n    }\n\n    // Remove any normalized params from the query if they\n    // weren't present as non-prefixed query key e.g.\n    // ?search=1&nxtPsearch=hello we don't delete search\n    for (const key of routeParamKeys) {\n      if (!(key in originalQuery)) {\n        delete query[key]\n        // handle the case where there's collision and we\n        // normalized nxtPid=123 -> id=123 but user also\n        // sends id=456 as separate key\n      } else if (\n        originalQuery[key] &&\n        query[key] &&\n        originalQuery[key] !== query[key]\n      ) {\n        query[key] = originalQuery[key]\n      }\n    }\n\n    const { isOnDemandRevalidate, revalidateOnlyGenerated } =\n      checkIsOnDemandRevalidate(req.headers, prerenderManifest.preview)\n\n    let isDraftMode = false\n    let previewData: PreviewData\n\n    // preview data relies on non-edge utils\n    if (process.env.NEXT_RUNTIME !== 'edge' && res) {\n      const { tryGetPreviewData } =\n        require('../api-utils/node/try-get-preview-data') as typeof import('../api-utils/node/try-get-preview-data')\n\n      previewData = tryGetPreviewData(\n        req,\n        res,\n        prerenderManifest.preview,\n        Boolean(multiZoneDraftMode)\n      )\n      isDraftMode = previewData !== false\n    }\n\n    if (!nextConfig) {\n      throw new Error(\"Invariant: nextConfig couldn't be loaded\")\n    }\n\n    if (process.env.NEXT_RUNTIME !== 'edge') {\n      const { installProcessErrorHandlers } =\n        require('../node-environment-extensions/process-error-handlers') as typeof import('../node-environment-extensions/process-error-handlers')\n\n      installProcessErrorHandlers(\n        Boolean(\n          nextConfig.experimental.removeUncaughtErrorAndRejectionListeners\n        )\n      )\n    }\n\n    let resolvedPathname = normalizedSrcPage\n    if (isDynamicRoute(resolvedPathname) && params) {\n      resolvedPathname = serverUtils.interpolateDynamicPath(\n        resolvedPathname,\n        params\n      )\n    }\n\n    if (resolvedPathname === '/index') {\n      resolvedPathname = '/'\n    }\n\n    if (\n      res &&\n      Boolean(req.headers['x-nextjs-data']) &&\n      (!res.statusCode || res.statusCode === 200)\n    ) {\n      res.setHeader(\n        'x-nextjs-matched-path',\n        removeTrailingSlash(`${locale ? `/${locale}` : ''}${normalizedSrcPage}`)\n      )\n    }\n    const encodedResolvedPathname = resolvedPathname\n\n    // we decode for cache key/manifest usage encoded is\n    // for URL building\n    try {\n      resolvedPathname = decodePathParams(resolvedPathname)\n    } catch (_) {}\n\n    resolvedPathname = removeTrailingSlash(resolvedPathname)\n    addRequestMeta(req, 'resolvedPathname', resolvedPathname)\n\n    let deploymentId\n    if (nextConfig.experimental?.runtimeServerDeploymentId) {\n      if (!process.env.NEXT_DEPLOYMENT_ID) {\n        throw new Error(\n          'process.env.NEXT_DEPLOYMENT_ID is missing but runtimeServerDeploymentId is enabled'\n        )\n      }\n      deploymentId = process.env.NEXT_DEPLOYMENT_ID\n    } else {\n      deploymentId = nextConfig.deploymentId || ''\n    }\n\n    return {\n      query,\n      originalQuery,\n      originalPathname,\n      params,\n      parsedUrl,\n      locale,\n      isNextDataRequest,\n      locales: i18n?.locales,\n      defaultLocale,\n      isDraftMode,\n      previewData,\n      pageIsDynamic,\n      resolvedPathname,\n      encodedResolvedPathname,\n      isOnDemandRevalidate,\n      revalidateOnlyGenerated,\n      ...manifests,\n      // loadManifest returns a readonly object, but we don't want to propagate that throughout the\n      // whole codebase (for now)\n      nextConfig:\n        nextConfig satisfies DeepReadonly<NextConfigRuntime> as NextConfigRuntime,\n      routerServerContext,\n      deploymentId,\n      clientAssetToken: nextConfig.supportsImmutableAssets ? '' : deploymentId,\n    }\n  }\n\n  public getResponseCache(req: IncomingMessage | BaseNextRequest) {\n    if (!this.responseCache) {\n      const minimalMode = getRequestMeta(req, 'minimalMode') ?? false\n      this.responseCache = new ResponseCache(minimalMode)\n    }\n    return this.responseCache\n  }\n\n  public async handleResponse({\n    req,\n    nextConfig,\n    cacheKey,\n    routeKind,\n    isFallback,\n    prerenderManifest,\n    isRoutePPREnabled,\n    isOnDemandRevalidate,\n    revalidateOnlyGenerated,\n    responseGenerator,\n    waitUntil,\n    isMinimalMode,\n  }: {\n    req: IncomingMessage | BaseNextRequest\n    nextConfig: NextConfigRuntime\n    cacheKey: string | null\n    routeKind: RouteKind\n    isFallback?: boolean\n    prerenderManifest: DeepReadonly<PrerenderManifest>\n    isRoutePPREnabled?: boolean\n    isOnDemandRevalidate?: boolean\n    revalidateOnlyGenerated?: boolean\n    responseGenerator: ResponseGenerator\n    waitUntil?: (prom: Promise<any>) => void\n    isMinimalMode: boolean\n  }) {\n    const responseCache = this.getResponseCache(req)\n    const cacheEntry = await responseCache.get(cacheKey, responseGenerator, {\n      routeKind,\n      isFallback,\n      isRoutePPREnabled,\n      isOnDemandRevalidate,\n      // A Next.js Segment Cache prefetch uses the `Next-Router-Prefetch`\n      // header (surfaced as the `isPrefetchRSCRequest` request meta), not the\n      // standard browser `purpose: prefetch` header. Recognize both so the\n      // response cache treats segment prefetches as prefetches — most\n      // importantly, so a prefetch that misses serves a fallback shell rather\n      // than joining an in-flight background (concrete) revalidation.\n      isPrefetch:\n        req.headers.purpose === 'prefetch' ||\n        getRequestMeta(req, 'isPrefetchRSCRequest') === true,\n      // Use x-invocation-id header to scope the in-memory cache to a single\n      // revalidation request in minimal mode.\n      invocationID: req.headers['x-invocation-id'] as string | undefined,\n      incrementalCache: await this.getIncrementalCache(\n        req,\n        nextConfig,\n        prerenderManifest,\n        isMinimalMode\n      ),\n      waitUntil,\n    })\n\n    if (!cacheEntry) {\n      if (\n        cacheKey &&\n        // revalidate only generated can bail even if cacheKey is provided\n        !(isOnDemandRevalidate && revalidateOnlyGenerated)\n      ) {\n        // A cache entry might not be generated if a response is written\n        // in `getInitialProps` or `getServerSideProps`, but those shouldn't\n        // have a cache key. If we do have a cache key but we don't end up\n        // with a cache entry, then either Next.js or the application has a\n        // bug that needs fixing.\n        throw new Error('invariant: cache entry required but not generated')\n      }\n    }\n    return cacheEntry\n  }\n}\n"],"names":["RouteModule","dynamicImportEsmDefault","id","then","mod","default","userland","_userland","constructor","definition","distDir","relativeProjectDir","isDev","process","env","__NEXT_DEV_SERVER","getRouterServerContext","req","routerServerGlobal","hostname","getRequestMeta","revalidate","render404","routerServerContext","RouterServerContextSymbol","undefined","normalizeUrl","_req","_parsedUrl","instrumentationOnRequestError","args","NEXT_RUNTIME","getEdgeInstrumentationModule","instrumentation","onRequestError","join","require","absoluteProjectDir","cwd","loadManifests","srcPage","projectDir","result","self","getEdgePreviewProps","maybeJSONParse","str","JSON","parse","buildId","__NEXT_BUILD_ID","buildManifest","__BUILD_MANIFEST","fallbackBuildManifest","reactLoadableManifest","__REACT_LOADABLE_MANIFEST","nextFontManifest","__NEXT_FONT_MANIFEST","prerenderManifest","routes","dynamicRoutes","notFoundRoutes","version","preview","routesManifest","caseSensitive","Boolean","__NEXT_CASE_SENSITIVE_ROUTES","basePath","__NEXT_BASE_PATH","rewrites","__NEXT_REWRITES","beforeFiles","afterFiles","fallback","redirects","headers","onMatchHeaders","i18n","__NEXT_I18N_CONFIG","skipProxyUrlNormalize","__NEXT_NO_MIDDLEWARE_URL_NORMALIZE","serverFilesManifest","__SERVER_FILES_MANIFEST","clientReferenceManifest","__RSC_MANIFEST","serverActionsManifest","__RSC_SERVER_MANIFEST","subresourceIntegrityManifest","__SUBRESOURCE_INTEGRITY_MANIFEST","dynamicCssManifest","__DYNAMIC_CSS_MANIFEST","prefetchHintsManifest","interceptionRoutePatterns","__INTERCEPTION_ROUTE_REWRITE_MANIFEST","map","rewrite","RegExp","regex","Error","loadManifestFromRelativePath","normalizedPagePath","normalizePagePath","router","kind","RouteKind","PAGES","PAGES_API","manifest","ROUTES_MANIFEST","shouldCache","PRERENDER_MANIFEST","BUILD_MANIFEST","handleMissing","TURBOPACK","REACT_LOADABLE_MANIFEST","NEXT_FONT_MANIFEST","isStaticMetadataRoute","useEval","replace","CLIENT_REFERENCE_MANIFEST","SERVER_REFERENCE_MANIFEST","SUBRESOURCE_INTEGRITY_MANIFEST","SERVER_FILES_MANIFEST","BUILD_ID_FILE","skipParse","DYNAMIC_CSS_MANIFEST","PREFETCH_HINTS","filter","isInterceptionRouteRewrite","loadCustomCacheHandlers","nextConfig","cacheMaxMemorySize","cacheHandlers","initializeCacheHandlers","handler","Object","entries","formatDynamicImportPath","setCacheHandler","interopDefault","getIncrementalCache","isMinimalMode","globalThis","__incrementalCache","CacheHandler","cacheHandler","incrementalCache","IncrementalCache","fs","nodeFs","dev","requestHeaders","allowedRevalidateHeaderKeys","experimental","minimalMode","serverDistDir","fetchCacheKeyPrefix","maxMemoryCacheSize","flushToDisk","isrFlushToDisk","getPrerenderManifest","CurCacheHandler","err","errorContext","silenceLog","logErrorWithOriginalStack","console","error","path","url","method","getNextConfigEdge","config","deploymentId","runtimeServerDeploymentId","NEXT_DEPLOYMENT_ID","prepare","res","multiZoneDraftMode","patchSetHeaderWithCookieSupport","relative","absoluteDistDir","ensureInstrumentationRegistered","manifests","protocol","includes","initUrl","trustHostHeader","host","addRequestMeta","removePathPrefix","parsedUrl","parseReqUrl","query","isNextDataRequest","pathHasPrefix","pathname","normalizeDataPath","originalPathname","originalQuery","pageIsDynamic","isDynamicRoute","localeResult","detectedLocale","normalizeLocalePath","locales","search","normalizedSrcPage","normalizeAppPath","serverUtils","getServerUtils","page","trailingSlash","__NEXT_TRAILING_SLASH","domainLocale","detectDomainLocale","domains","getHostname","defaultLocale","locale","rewriteParams","rewrittenParsedUrl","handleRewrites","rewriteParamKeys","keys","assign","params","dynamicRouteMatcher","paramsMatch","paramsResult","normalizeDynamicRouteParams","hasValidParams","routeParamKeys","Set","combinedParamKeys","key","defaultRouteMatches","originalValue","Array","isArray","queryValue","push","normalizeCdnUrl","isWrappedByNextServer","normalizeQueryParams","filterInternalQuery","queryResult","paramsToInterpolate","size","length","interpolateDynamicPath","isOnDemandRevalidate","revalidateOnlyGenerated","checkIsOnDemandRevalidate","isDraftMode","previewData","tryGetPreviewData","installProcessErrorHandlers","removeUncaughtErrorAndRejectionListeners","resolvedPathname","statusCode","setHeader","removeTrailingSlash","encodedResolvedPathname","decodePathParams","_","clientAssetToken","supportsImmutableAssets","getResponseCache","responseCache","ResponseCache","handleResponse","cacheKey","routeKind","isFallback","isRoutePPREnabled","responseGenerator","waitUntil","cacheEntry","get","isPrefetch","purpose","invocationID"],"mappings":"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","ignoreList":[0]}