next 15.5.1-canary.16 → 15.5.1-canary.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/index.js +2 -2
  3. package/dist/build/swc/index.js +1 -1
  4. package/dist/build/webpack-config.js +2 -2
  5. package/dist/client/app-bootstrap.js +1 -1
  6. package/dist/client/index.js +1 -1
  7. package/dist/compiled/next-server/pages-api.runtime.dev.js +1 -1
  8. package/dist/compiled/next-server/pages-api.runtime.dev.js.map +1 -1
  9. package/dist/compiled/next-server/pages-api.runtime.prod.js +1 -1
  10. package/dist/compiled/next-server/pages-api.runtime.prod.js.map +1 -1
  11. package/dist/compiled/next-server/pages.runtime.dev.js +1 -1
  12. package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
  13. package/dist/compiled/next-server/pages.runtime.prod.js +1 -1
  14. package/dist/compiled/next-server/pages.runtime.prod.js.map +1 -1
  15. package/dist/compiled/next-server/server.runtime.prod.js +1 -1
  16. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  17. package/dist/esm/build/index.js +2 -2
  18. package/dist/esm/build/swc/index.js +1 -1
  19. package/dist/esm/build/webpack-config.js +2 -2
  20. package/dist/esm/client/app-bootstrap.js +1 -1
  21. package/dist/esm/client/index.js +1 -1
  22. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  23. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  24. package/dist/esm/server/lib/app-info-log.js +1 -1
  25. package/dist/esm/server/lib/start-server.js +1 -1
  26. package/dist/esm/server/next-server.js +0 -6
  27. package/dist/esm/server/next-server.js.map +1 -1
  28. package/dist/esm/server/typescript/rules/config.js +8 -0
  29. package/dist/esm/server/typescript/rules/config.js.map +1 -1
  30. package/dist/esm/shared/lib/canary-only.js +1 -1
  31. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  32. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  33. package/dist/server/lib/app-info-log.js +1 -1
  34. package/dist/server/lib/start-server.js +1 -1
  35. package/dist/server/next-server.js +0 -6
  36. package/dist/server/next-server.js.map +1 -1
  37. package/dist/server/typescript/rules/config.js +8 -0
  38. package/dist/server/typescript/rules/config.js.map +1 -1
  39. package/dist/shared/lib/canary-only.js +1 -1
  40. package/dist/telemetry/anonymous-meta.js +1 -1
  41. package/dist/telemetry/events/session-stopped.js +2 -2
  42. package/dist/telemetry/events/version.js +2 -2
  43. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/server/next-server.ts"],"sourcesContent":["import './node-environment'\nimport './require-hook'\nimport './node-polyfill-crypto'\n\nimport type { CacheFs } from '../shared/lib/utils'\nimport {\n DecodeError,\n PageNotFoundError,\n MiddlewareNotFoundError,\n} from '../shared/lib/utils'\nimport type { MiddlewareManifest } from '../build/webpack/plugins/middleware-plugin'\nimport type RenderResult from './render-result'\nimport type { FetchEventResult } from './web/types'\nimport type { PrerenderManifest, RoutesManifest } from '../build'\nimport type { PagesManifest } from '../build/webpack/plugins/pages-manifest-plugin'\nimport type { NextParsedUrlQuery, NextUrlWithParsedQuery } from './request-meta'\nimport type { Params } from './request/params'\nimport type { MiddlewareRouteMatch } from '../shared/lib/router/utils/middleware-route-matcher'\nimport type { RouteMatch } from './route-matches/route-match'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { UrlWithParsedQuery } from 'url'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { ParsedUrl } from '../shared/lib/router/utils/parse-url'\nimport type { CacheControl } from './lib/cache-control'\nimport type { WaitUntil } from './after/builtin-request-context'\n\nimport fs from 'fs'\nimport { join, relative } from 'path'\nimport { getRouteMatcher } from '../shared/lib/router/utils/route-matcher'\nimport { addRequestMeta, getRequestMeta } from './request-meta'\nimport {\n PAGES_MANIFEST,\n BUILD_ID_FILE,\n MIDDLEWARE_MANIFEST,\n PRERENDER_MANIFEST,\n ROUTES_MANIFEST,\n CLIENT_PUBLIC_FILES_PATH,\n APP_PATHS_MANIFEST,\n SERVER_DIRECTORY,\n NEXT_FONT_MANIFEST,\n UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n FUNCTIONS_CONFIG_MANIFEST,\n} from '../shared/lib/constants'\nimport { findDir } from '../lib/find-pages-dir'\nimport { NodeNextRequest, NodeNextResponse } from './base-http/node'\nimport { sendRenderResult } from './send-payload'\nimport { parseUrl } from '../shared/lib/router/utils/parse-url'\nimport * as Log from '../build/output/log'\n\nimport type {\n Options,\n FindComponentsResult,\n MiddlewareRoutingItem,\n RequestContext,\n NormalizedRouteManifest,\n LoadedRenderOpts,\n RouteHandler,\n NextEnabledDirectories,\n BaseRequestHandler,\n} from './base-server'\nimport BaseServer from './base-server'\nimport { getMaybePagePath, getPagePath } from './require'\nimport { denormalizePagePath } from '../shared/lib/page-path/denormalize-page-path'\nimport { normalizePagePath } from '../shared/lib/page-path/normalize-page-path'\nimport { loadComponents } from './load-components'\nimport type { LoadComponentsReturnType } from './load-components'\nimport isError, { getProperError } from '../lib/is-error'\nimport { splitCookiesString, toNodeOutgoingHttpHeaders } from './web/utils'\nimport { getMiddlewareRouteMatcher } from '../shared/lib/router/utils/middleware-route-matcher'\nimport { loadEnvConfig } from '@next/env'\nimport { urlQueryToSearchParams } from '../shared/lib/router/utils/querystring'\nimport { removeTrailingSlash } from '../shared/lib/router/utils/remove-trailing-slash'\nimport { getNextPathnameInfo } from '../shared/lib/router/utils/get-next-pathname-info'\nimport { getCloneableBody } from './body-streams'\nimport { checkIsOnDemandRevalidate } from './api-utils'\nimport ResponseCache, {\n CachedRouteKind,\n type IncrementalResponseCacheEntry,\n} from './response-cache'\nimport { IncrementalCache } from './lib/incremental-cache'\nimport { normalizeAppPath } from '../shared/lib/router/utils/app-paths'\n\nimport { setHttpClientAndAgentOptions } from './setup-http-agent-env'\n\nimport { isPagesAPIRouteMatch } from './route-matches/pages-api-route-match'\nimport type { PagesAPIRouteMatch } from './route-matches/pages-api-route-match'\nimport type { MatchOptions } from './route-matcher-managers/route-matcher-manager'\nimport { BubbledError, getTracer } from './lib/trace/tracer'\nimport { NextNodeServerSpan } from './lib/trace/constants'\nimport { nodeFs } from './lib/node-fs-methods'\nimport { getRouteRegex } from '../shared/lib/router/utils/route-regex'\nimport { pipeToNodeResponse } from './pipe-readable'\nimport { createRequestResponseMocks } from './lib/mock-request'\nimport { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers'\nimport { signalFromNodeResponse } from './web/spec-extension/adapters/next-request'\nimport { loadManifest } from './load-manifest.external'\nimport { lazyRenderAppPage } from './route-modules/app-page/module.render'\nimport { lazyRenderPagesPage } from './route-modules/pages/module.render'\nimport { interopDefault } from '../lib/interop-default'\nimport { formatDynamicImportPath } from '../lib/format-dynamic-import-path'\nimport type { NextFontManifest } from '../build/webpack/plugins/next-font-manifest-plugin'\nimport { isInterceptionRouteRewrite } from '../lib/generate-interception-routes-rewrites'\nimport type { ServerOnInstrumentationRequestError } from './app-render/types'\nimport { RouteKind } from './route-kind'\nimport { InvariantError } from '../shared/lib/invariant-error'\nimport { AwaiterOnce } from './after/awaiter'\nimport { AsyncCallbackSet } from './lib/async-callback-set'\nimport { initializeCacheHandlers, setCacheHandler } from './use-cache/handlers'\nimport type { UnwrapPromise } from '../lib/coalesced-function'\nimport { populateStaticEnv } from '../lib/static-env'\nimport { isPostpone } from './lib/router-utils/is-postpone'\nimport { NodeModuleLoader } from './lib/module-loader/node-module-loader'\nimport { NoFallbackError } from '../shared/lib/no-fallback-error.external'\nimport {\n ensureInstrumentationRegistered,\n getInstrumentationModule,\n} from './lib/router-utils/instrumentation-globals.external'\nimport {\n RouterServerContextSymbol,\n routerServerGlobal,\n} from './lib/router-utils/router-server-context'\n\nexport * from './base-server'\n\n// For module that can be both CJS or ESM\nconst dynamicImportEsmDefault = process.env.NEXT_MINIMAL\n ? (id: string) =>\n import(/* webpackIgnore: true */ id).then((mod) => mod.default || mod)\n : (id: string) => import(id).then((mod) => mod.default || mod)\n\nexport type NodeRequestHandler = BaseRequestHandler<\n IncomingMessage | NodeNextRequest,\n ServerResponse | NodeNextResponse\n>\n\ntype NodeRouteHandler = RouteHandler<NodeNextRequest, NodeNextResponse>\n\nconst MiddlewareMatcherCache = new WeakMap<\n MiddlewareManifest['middleware'][string],\n MiddlewareRouteMatch\n>()\n\nfunction getMiddlewareMatcher(\n info: MiddlewareManifest['middleware'][string]\n): MiddlewareRouteMatch {\n const stored = MiddlewareMatcherCache.get(info)\n if (stored) {\n return stored\n }\n\n if (!Array.isArray(info.matchers)) {\n throw new Error(\n `Invariant: invalid matchers for middleware ${JSON.stringify(info)}`\n )\n }\n\n const matcher = getMiddlewareRouteMatcher(info.matchers)\n MiddlewareMatcherCache.set(info, matcher)\n return matcher\n}\n\nfunction installProcessErrorHandlers(\n shouldRemoveUncaughtErrorAndRejectionListeners: boolean\n) {\n // The conventional wisdom of Node.js and other runtimes is to treat\n // unhandled errors as fatal and exit the process.\n //\n // But Next.js is not a generic JS runtime — it's a specialized runtime for\n // React Server Components.\n //\n // Many unhandled rejections are due to the late-awaiting pattern for\n // prefetching data. In Next.js it's OK to call an async function without\n // immediately awaiting it, to start the request as soon as possible\n // without blocking unncessarily on the result. These can end up\n // triggering an \"unhandledRejection\" if it later turns out that the\n // data is not needed to render the page. Example:\n //\n // const promise = fetchData()\n // const shouldShow = await checkCondition()\n // if (shouldShow) {\n // return <Component promise={promise} />\n // }\n //\n // In this example, `fetchData` is called immediately to start the request\n // as soon as possible, but if `shouldShow` is false, then it will be\n // discarded without unwrapping its result. If it errors, it will trigger\n // an \"unhandledRejection\" event.\n //\n // Ideally, we would suppress these rejections completely without warning,\n // because we don't consider them real errors. (TODO: Currently we do warn.)\n //\n // But regardless of whether we do or don't warn, we definitely shouldn't\n // crash the entire process.\n //\n // Even a \"legit\" unhandled error unrelated to prefetching shouldn't\n // prevent the rest of the page from rendering.\n //\n // So, we're going to intentionally override the default error handling\n // behavior of the outer JS runtime to be more forgiving\n\n // Remove any existing \"unhandledRejection\" and \"uncaughtException\" handlers.\n // This is gated behind an experimental flag until we've considered the impact\n // in various deployment environments. It's possible this may always need to\n // be configurable.\n if (shouldRemoveUncaughtErrorAndRejectionListeners) {\n process.removeAllListeners('uncaughtException')\n process.removeAllListeners('unhandledRejection')\n }\n\n // Install a new handler to prevent the process from crashing.\n process.on('unhandledRejection', (reason: unknown) => {\n if (isPostpone(reason)) {\n // React postpones that are unhandled might end up logged here but they're\n // not really errors. They're just part of rendering.\n return\n }\n // Immediately log the error.\n // TODO: Ideally, if we knew that this error was triggered by application\n // code, we would suppress it entirely without logging. We can't reliably\n // detect all of these, but when cacheComponents is enabled, we could suppress\n // at least some of them by waiting to log the error until after all in-\n // progress renders have completed. Then, only log errors for which there\n // was not a corresponding \"rejectionHandled\" event.\n console.error(reason)\n })\n\n process.on('rejectionHandled', () => {\n // TODO: See note in the unhandledRejection handler above. In the future,\n // we may use the \"rejectionHandled\" event to de-queue an error from\n // being logged.\n })\n\n // Unhandled exceptions are errors triggered by non-async functions, so this\n // is unrelated to the late-awaiting pattern. However, for similar reasons,\n // we still shouldn't crash the process. Just log it.\n process.on('uncaughtException', (reason: unknown) => {\n if (isPostpone(reason)) {\n return\n }\n console.error(reason)\n })\n}\n\nexport default class NextNodeServer extends BaseServer<\n Options,\n NodeNextRequest,\n NodeNextResponse\n> {\n protected middlewareManifestPath: string\n private _serverDistDir: string | undefined\n private imageResponseCache?: ResponseCache\n protected renderWorkersPromises?: Promise<void>\n protected dynamicRoutes?: {\n match: import('../shared/lib/router/utils/route-matcher').RouteMatchFn\n page: string\n re: RegExp\n }[]\n private routerServerHandler?: (\n req: IncomingMessage,\n res: ServerResponse\n ) => void\n\n protected cleanupListeners = new AsyncCallbackSet()\n protected internalWaitUntil: WaitUntil | undefined\n private isDev: boolean\n private sriEnabled: boolean\n\n constructor(options: Options) {\n // Initialize super class\n super(options)\n\n const isDev = options.dev ?? false\n this.isDev = isDev\n this.sriEnabled = Boolean(options.conf.experimental?.sri?.algorithm)\n\n /**\n * This sets environment variable to be used at the time of SSR by head.tsx.\n * Using this from process.env allows targeting SSR by calling\n * `process.env.__NEXT_OPTIMIZE_CSS`.\n */\n if (this.renderOpts.optimizeCss) {\n process.env.__NEXT_OPTIMIZE_CSS = JSON.stringify(true)\n }\n if (this.renderOpts.nextScriptWorkers) {\n process.env.__NEXT_SCRIPT_WORKERS = JSON.stringify(true)\n }\n process.env.NEXT_DEPLOYMENT_ID = this.nextConfig.experimental.useSkewCookie\n ? ''\n : this.nextConfig.deploymentId || ''\n\n if (!this.minimalMode) {\n this.imageResponseCache = new ResponseCache(this.minimalMode)\n }\n\n if (\n !options.dev &&\n !this.minimalMode &&\n this.nextConfig.experimental.preloadEntriesOnStart\n ) {\n this.unstable_preloadEntries()\n }\n\n if (!options.dev) {\n const { dynamicRoutes = [] } = this.getRoutesManifest() ?? {}\n this.dynamicRoutes = dynamicRoutes.map((r) => {\n // TODO: can we just re-use the regex from the manifest?\n const regex = getRouteRegex(r.page)\n const match = getRouteMatcher(regex)\n\n return {\n match,\n page: r.page,\n re: regex.re,\n }\n })\n }\n\n // ensure options are set when loadConfig isn't called\n setHttpClientAndAgentOptions(this.nextConfig)\n\n // Intercept fetch and other testmode apis.\n if (this.serverOptions.experimentalTestProxy) {\n process.env.NEXT_PRIVATE_TEST_PROXY = 'true'\n const { interceptTestApis } =\n // eslint-disable-next-line @next/internal/typechecked-require -- experimental/testmode is not built ins next/dist/esm\n require('next/dist/experimental/testmode/server') as typeof import('../experimental/testmode/server')\n interceptTestApis()\n }\n\n this.middlewareManifestPath = join(this.serverDistDir, MIDDLEWARE_MANIFEST)\n\n // This is just optimization to fire prepare as soon as possible. It will be\n // properly awaited later. We add the catch here to ensure that it does not\n // cause a unhandled promise rejection. The promise rejection will be\n // handled later on via the `await` when the request handler is called.\n if (!options.dev) {\n this.prepare().catch((err) => {\n console.error('Failed to prepare server', err)\n })\n }\n\n // when using compile mode static env isn't inlined so we\n // need to populate in normal runtime env\n if (this.renderOpts.isExperimentalCompile) {\n populateStaticEnv(this.nextConfig)\n }\n\n const shouldRemoveUncaughtErrorAndRejectionListeners = Boolean(\n options.conf.experimental?.removeUncaughtErrorAndRejectionListeners\n )\n installProcessErrorHandlers(shouldRemoveUncaughtErrorAndRejectionListeners)\n }\n\n public async unstable_preloadEntries(): Promise<void> {\n // Ensure prepare process will be finished before preloading entries.\n await this.prepare()\n\n const appPathsManifest = this.getAppPathsManifest()\n const pagesManifest = this.getPagesManifest()\n\n await this.loadCustomCacheHandlers()\n\n for (const page of Object.keys(pagesManifest || {})) {\n try {\n await loadComponents({\n distDir: this.distDir,\n page,\n isAppPath: false,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n })\n } catch (_err) {\n // Intentionally ignored because this is a preload step.\n }\n }\n\n for (const page of Object.keys(appPathsManifest || {})) {\n try {\n const { ComponentMod } = await loadComponents({\n distDir: this.distDir,\n page,\n isAppPath: true,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n })\n // we need to ensure fetch is patched before we require the page,\n // otherwise if the fetch is patched by user code, we will be patching it\n // too late and there won't be any caching behaviors\n ComponentMod.patchFetch()\n\n const webpackRequire = ComponentMod.__next_app__.require\n if (webpackRequire?.m) {\n for (const id of Object.keys(webpackRequire.m)) {\n await webpackRequire(id)\n }\n }\n } catch (_err) {\n // Intentionally ignored because this is a preload step.\n }\n }\n }\n\n protected async handleUpgrade(): Promise<void> {\n // The web server does not support web sockets, it's only used for HMR in\n // development.\n }\n\n protected async loadInstrumentationModule() {\n if (!this.serverOptions.dev) {\n try {\n this.instrumentation = await getInstrumentationModule(\n this.dir,\n this.nextConfig.distDir\n )\n } catch (err: any) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw new Error(\n 'An error occurred while loading the instrumentation hook',\n { cause: err }\n )\n }\n }\n }\n return this.instrumentation\n }\n\n protected async prepareImpl() {\n await super.prepareImpl()\n await this.runInstrumentationHookIfAvailable()\n }\n\n protected async runInstrumentationHookIfAvailable() {\n await ensureInstrumentationRegistered(this.dir, this.nextConfig.distDir)\n }\n\n protected loadEnvConfig({\n dev,\n forceReload,\n silent,\n }: {\n dev: boolean\n forceReload?: boolean\n silent?: boolean\n }) {\n loadEnvConfig(\n this.dir,\n dev,\n silent ? { info: () => {}, error: () => {} } : Log,\n forceReload\n )\n }\n\n private async loadCustomCacheHandlers() {\n const { cacheHandlers } = this.nextConfig.experimental\n if (!cacheHandlers) return\n\n // If we've already initialized the cache handlers interface, don't do it\n // again.\n if (!initializeCacheHandlers()) return\n\n for (const [kind, handler] of Object.entries(cacheHandlers)) {\n if (!handler) continue\n\n setCacheHandler(\n kind,\n interopDefault(\n await dynamicImportEsmDefault(\n formatDynamicImportPath(this.distDir, handler)\n )\n )\n )\n }\n }\n\n protected async getIncrementalCache({\n requestHeaders,\n }: {\n requestHeaders: IncrementalCache['requestHeaders']\n }) {\n const dev = !!this.renderOpts.dev\n let CacheHandler: any\n const { cacheHandler } = this.nextConfig\n\n if (cacheHandler) {\n CacheHandler = interopDefault(\n await dynamicImportEsmDefault(\n formatDynamicImportPath(this.distDir, cacheHandler)\n )\n )\n }\n\n await this.loadCustomCacheHandlers()\n\n // incremental-cache is request specific\n // although can have shared caches in module scope\n // per-cache handler\n return new IncrementalCache({\n fs: this.getCacheFilesystem(),\n dev,\n requestHeaders,\n allowedRevalidateHeaderKeys:\n this.nextConfig.experimental.allowedRevalidateHeaderKeys,\n minimalMode: this.minimalMode,\n serverDistDir: this.serverDistDir,\n fetchCacheKeyPrefix: this.nextConfig.experimental.fetchCacheKeyPrefix,\n maxMemoryCacheSize: this.nextConfig.cacheMaxMemorySize,\n flushToDisk:\n !this.minimalMode && this.nextConfig.experimental.isrFlushToDisk,\n getPrerenderManifest: () => this.getPrerenderManifest(),\n CurCacheHandler: CacheHandler,\n })\n }\n\n protected getResponseCache() {\n return new ResponseCache(this.minimalMode)\n }\n\n protected getPublicDir(): string {\n return join(this.dir, CLIENT_PUBLIC_FILES_PATH)\n }\n\n protected getHasStaticDir(): boolean {\n return fs.existsSync(join(this.dir, 'static'))\n }\n\n protected getPagesManifest(): PagesManifest | undefined {\n return loadManifest(\n join(this.serverDistDir, PAGES_MANIFEST)\n ) as PagesManifest\n }\n\n protected getAppPathsManifest(): PagesManifest | undefined {\n if (!this.enabledDirectories.app) return undefined\n\n return loadManifest(\n join(this.serverDistDir, APP_PATHS_MANIFEST)\n ) as PagesManifest\n }\n\n protected getinterceptionRoutePatterns(): RegExp[] {\n if (!this.enabledDirectories.app) return []\n\n const routesManifest = this.getRoutesManifest()\n return (\n routesManifest?.rewrites.beforeFiles\n .filter(isInterceptionRouteRewrite)\n .map((rewrite) => new RegExp(rewrite.regex)) ?? []\n )\n }\n\n protected async hasPage(pathname: string): Promise<boolean> {\n return !!getMaybePagePath(\n pathname,\n this.distDir,\n this.nextConfig.i18n?.locales,\n this.enabledDirectories.app\n )\n }\n\n protected getBuildId(): string {\n const buildIdFile = join(this.distDir, BUILD_ID_FILE)\n try {\n return fs.readFileSync(buildIdFile, 'utf8').trim()\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(\n `Could not find a production build in the '${this.distDir}' directory. Try building your app with 'next build' before starting the production server. https://nextjs.org/docs/messages/production-start-no-build-id`\n )\n }\n\n throw err\n }\n }\n\n protected getEnabledDirectories(dev: boolean): NextEnabledDirectories {\n const dir = dev ? this.dir : this.serverDistDir\n\n return {\n app: findDir(dir, 'app') ? true : false,\n pages: findDir(dir, 'pages') ? true : false,\n }\n }\n\n protected sendRenderResult(\n req: NodeNextRequest,\n res: NodeNextResponse,\n options: {\n result: RenderResult\n generateEtags: boolean\n poweredByHeader: boolean\n cacheControl: CacheControl | undefined\n }\n ): Promise<void> {\n return sendRenderResult({\n req: req.originalRequest,\n res: res.originalResponse,\n result: options.result,\n generateEtags: options.generateEtags,\n poweredByHeader: options.poweredByHeader,\n cacheControl: options.cacheControl,\n })\n }\n\n protected async runApi(\n req: NodeNextRequest,\n res: NodeNextResponse,\n query: ParsedUrlQuery,\n match: PagesAPIRouteMatch\n ): Promise<boolean> {\n const edgeFunctionsPages = this.getEdgeFunctionsPages()\n\n for (const edgeFunctionsPage of edgeFunctionsPages) {\n if (edgeFunctionsPage === match.definition.pathname) {\n const handledAsEdgeFunction = await this.runEdgeFunction({\n req,\n res,\n query,\n params: match.params,\n page: match.definition.pathname,\n appPaths: null,\n })\n\n if (handledAsEdgeFunction) {\n return true\n }\n }\n }\n // The module supports minimal mode, load the minimal module.\n // Restore original URL as the handler handles it's own parsing\n const parsedInitUrl = parseUrl(getRequestMeta(req, 'initURL') || req.url)\n req.url = `${parsedInitUrl.pathname}${parsedInitUrl.search || ''}`\n\n const loader = new NodeModuleLoader()\n const module = (await loader.load(match.definition.filename)) as {\n handler: (\n req: IncomingMessage,\n res: ServerResponse,\n ctx: {\n waitUntil: ReturnType<BaseServer['getWaitUntil']>\n }\n ) => Promise<void>\n }\n addRequestMeta(\n req.originalRequest,\n 'relativeProjectDir',\n relative(process.cwd(), this.dir)\n )\n addRequestMeta(req.originalRequest, 'distDir', this.distDir)\n await module.handler(req.originalRequest, res.originalResponse, {\n waitUntil: this.getWaitUntil(),\n })\n return true\n }\n\n protected async renderHTML(\n req: NodeNextRequest,\n res: NodeNextResponse,\n pathname: string,\n query: NextParsedUrlQuery,\n renderOpts: LoadedRenderOpts\n ): Promise<RenderResult> {\n return getTracer().trace(NextNodeServerSpan.renderHTML, async () =>\n this.renderHTMLImpl(req, res, pathname, query, renderOpts)\n )\n }\n\n private async renderHTMLImpl(\n req: NodeNextRequest,\n res: NodeNextResponse,\n pathname: string,\n query: NextParsedUrlQuery,\n renderOpts: LoadedRenderOpts\n ): Promise<RenderResult> {\n if (process.env.NEXT_MINIMAL) {\n throw new Error(\n 'Invariant: renderHTML should not be called in minimal mode'\n )\n // the `else` branch is needed for tree-shaking\n } else {\n // Due to the way we pass data by mutating `renderOpts`, we can't extend the\n // object here but only updating its `nextFontManifest` field.\n // https://github.com/vercel/next.js/blob/df7cbd904c3bd85f399d1ce90680c0ecf92d2752/packages/next/server/render.tsx#L947-L952\n renderOpts.nextFontManifest = this.nextFontManifest\n\n if (this.enabledDirectories.app && renderOpts.isAppPath) {\n return lazyRenderAppPage(\n req,\n res,\n pathname,\n query,\n // This code path does not service revalidations for unknown param\n // shells. As a result, we don't need to pass in the unknown params.\n null,\n renderOpts,\n this.getServerComponentsHmrCache(),\n false,\n {\n buildId: this.buildId,\n }\n )\n }\n\n // TODO: re-enable this once we've refactored to use implicit matches\n // throw new Error('Invariant: render should have used routeModule')\n\n return lazyRenderPagesPage(\n req.originalRequest,\n res.originalResponse,\n pathname,\n query,\n renderOpts,\n {\n buildId: this.buildId,\n deploymentId: this.nextConfig.deploymentId,\n customServer: this.serverOptions.customServer || undefined,\n },\n {\n isFallback: false,\n isDraftMode: renderOpts.isDraftMode,\n developmentNotFoundSourcePage: getRequestMeta(\n req,\n 'developmentNotFoundSourcePage'\n ),\n }\n )\n }\n }\n\n protected async imageOptimizer(\n req: NodeNextRequest,\n res: NodeNextResponse,\n paramsResult: import('./image-optimizer').ImageParamsResult,\n previousCacheEntry?: IncrementalResponseCacheEntry | null\n ): Promise<{\n buffer: Buffer\n contentType: string\n maxAge: number\n upstreamEtag: string\n etag: string\n }> {\n if (process.env.NEXT_MINIMAL) {\n throw new Error(\n 'invariant: imageOptimizer should not be called in minimal mode'\n )\n } else {\n const { imageOptimizer, fetchExternalImage, fetchInternalImage } =\n require('./image-optimizer') as typeof import('./image-optimizer')\n\n const handleInternalReq = async (\n newReq: IncomingMessage,\n newRes: ServerResponse\n ) => {\n if (newReq.url === req.url) {\n throw new Error(`Invariant attempted to optimize _next/image itself`)\n }\n\n if (!this.routerServerHandler) {\n throw new Error(`Invariant missing routerServerHandler`)\n }\n\n await this.routerServerHandler(newReq, newRes)\n return\n }\n\n const { isAbsolute, href } = paramsResult\n\n const imageUpstream = isAbsolute\n ? await fetchExternalImage(href)\n : await fetchInternalImage(\n href,\n req.originalRequest,\n res.originalResponse,\n handleInternalReq\n )\n\n return imageOptimizer(imageUpstream, paramsResult, this.nextConfig, {\n isDev: this.renderOpts.dev,\n previousCacheEntry,\n })\n }\n }\n\n protected getPagePath(pathname: string, locales?: string[]): string {\n return getPagePath(\n pathname,\n this.distDir,\n locales,\n this.enabledDirectories.app\n )\n }\n\n protected async renderPageComponent(\n ctx: RequestContext<NodeNextRequest, NodeNextResponse>,\n bubbleNoFallback: boolean\n ) {\n const edgeFunctionsPages = this.getEdgeFunctionsPages() || []\n if (edgeFunctionsPages.length) {\n const appPaths = this.getOriginalAppPaths(ctx.pathname)\n const isAppPath = Array.isArray(appPaths)\n\n let page = ctx.pathname\n if (isAppPath) {\n // When it's an array, we need to pass all parallel routes to the loader.\n page = appPaths[0]\n }\n\n for (const edgeFunctionsPage of edgeFunctionsPages) {\n if (edgeFunctionsPage === page) {\n await this.runEdgeFunction({\n req: ctx.req,\n res: ctx.res,\n query: ctx.query,\n params: ctx.renderOpts.params,\n page,\n appPaths,\n })\n return null\n }\n }\n }\n\n return super.renderPageComponent(ctx, bubbleNoFallback)\n }\n\n protected async findPageComponents({\n locale,\n page,\n query,\n params,\n isAppPath,\n url,\n }: {\n locale: string | undefined\n page: string\n query: NextParsedUrlQuery\n params: Params\n isAppPath: boolean\n // The following parameters are used in the development server's\n // implementation.\n sriEnabled?: boolean\n appPaths?: ReadonlyArray<string> | null\n shouldEnsure: boolean\n url?: string\n }): Promise<FindComponentsResult | null> {\n return getTracer().trace(\n NextNodeServerSpan.findPageComponents,\n {\n spanName: 'resolve page components',\n attributes: {\n 'next.route': isAppPath ? normalizeAppPath(page) : page,\n },\n },\n () =>\n this.findPageComponentsImpl({\n locale,\n page,\n query,\n params,\n isAppPath,\n url,\n })\n )\n }\n\n private async findPageComponentsImpl({\n locale,\n page,\n query,\n params,\n isAppPath,\n url: _url,\n }: {\n locale: string | undefined\n page: string\n query: NextParsedUrlQuery\n params: Params\n isAppPath: boolean\n url?: string\n }): Promise<FindComponentsResult | null> {\n const pagePaths: string[] = [page]\n if (query.amp) {\n // try serving a static AMP version first\n pagePaths.unshift(\n (isAppPath ? normalizeAppPath(page) : normalizePagePath(page)) + '.amp'\n )\n }\n\n if (locale) {\n pagePaths.unshift(\n ...pagePaths.map((path) => `/${locale}${path === '/' ? '' : path}`)\n )\n }\n\n for (const pagePath of pagePaths) {\n try {\n const components = await loadComponents({\n distDir: this.distDir,\n page: pagePath,\n isAppPath,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n })\n\n if (\n locale &&\n typeof components.Component === 'string' &&\n !pagePath.startsWith(`/${locale}/`) &&\n pagePath !== `/${locale}`\n ) {\n // if loading an static HTML file the locale is required\n // to be present since all HTML files are output under their locale\n continue\n }\n\n return {\n components,\n query: {\n ...(!this.renderOpts.isExperimentalCompile &&\n components.getStaticProps\n ? ({\n amp: query.amp,\n } as NextParsedUrlQuery)\n : query),\n // For appDir params is excluded.\n ...((isAppPath ? {} : params) || {}),\n },\n }\n } catch (err) {\n // we should only not throw if we failed to find the page\n // in the pages-manifest\n if (!(err instanceof PageNotFoundError)) {\n throw err\n }\n }\n }\n return null\n }\n\n protected getNextFontManifest(): NextFontManifest | undefined {\n return loadManifest(\n join(this.distDir, 'server', NEXT_FONT_MANIFEST + '.json')\n ) as NextFontManifest\n }\n\n protected handleNextImageRequest: NodeRouteHandler = async (\n req,\n res,\n parsedUrl\n ) => {\n if (!parsedUrl.pathname || !parsedUrl.pathname.startsWith('/_next/image')) {\n return false\n }\n // Ignore if its a middleware request\n if (getRequestMeta(req, 'middlewareInvoke')) {\n return false\n }\n\n if (\n this.minimalMode ||\n this.nextConfig.output === 'export' ||\n process.env.NEXT_MINIMAL\n ) {\n res.statusCode = 400\n res.body('Bad Request').send()\n return true\n // the `else` branch is needed for tree-shaking\n } else {\n const { ImageOptimizerCache } =\n require('./image-optimizer') as typeof import('./image-optimizer')\n\n const imageOptimizerCache = new ImageOptimizerCache({\n distDir: this.distDir,\n nextConfig: this.nextConfig,\n })\n\n const { sendResponse, ImageError } =\n require('./image-optimizer') as typeof import('./image-optimizer')\n\n if (!this.imageResponseCache) {\n throw new Error('invariant image optimizer cache was not initialized')\n }\n const imagesConfig = this.nextConfig.images\n\n if (imagesConfig.loader !== 'default' || imagesConfig.unoptimized) {\n await this.render404(req, res)\n return true\n }\n\n const paramsResult = ImageOptimizerCache.validateParams(\n req.originalRequest,\n parsedUrl.query,\n this.nextConfig,\n !!this.renderOpts.dev\n )\n\n if ('errorMessage' in paramsResult) {\n res.statusCode = 400\n res.body(paramsResult.errorMessage).send()\n return true\n }\n\n const cacheKey = ImageOptimizerCache.getCacheKey(paramsResult)\n\n try {\n const { getExtension } =\n require('./serve-static') as typeof import('./serve-static')\n const cacheEntry = await this.imageResponseCache.get(\n cacheKey,\n async ({ previousCacheEntry }) => {\n const { buffer, contentType, maxAge, upstreamEtag, etag } =\n await this.imageOptimizer(\n req,\n res,\n paramsResult,\n previousCacheEntry\n )\n\n return {\n value: {\n kind: CachedRouteKind.IMAGE,\n buffer,\n etag,\n extension: getExtension(contentType) as string,\n upstreamEtag,\n },\n cacheControl: { revalidate: maxAge, expire: undefined },\n }\n },\n {\n routeKind: RouteKind.IMAGE,\n incrementalCache: imageOptimizerCache,\n isFallback: false,\n }\n )\n\n if (cacheEntry?.value?.kind !== CachedRouteKind.IMAGE) {\n throw new Error(\n 'invariant did not get entry from image response cache'\n )\n }\n\n sendResponse(\n req.originalRequest,\n res.originalResponse,\n paramsResult.href,\n cacheEntry.value.extension,\n cacheEntry.value.buffer,\n cacheEntry.value.etag,\n paramsResult.isStatic,\n cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT',\n imagesConfig,\n cacheEntry.cacheControl?.revalidate || 0,\n Boolean(this.renderOpts.dev)\n )\n return true\n } catch (err) {\n if (err instanceof ImageError) {\n res.statusCode = err.statusCode\n res.body(err.message).send()\n return true\n }\n throw err\n }\n }\n }\n\n protected handleCatchallRenderRequest: NodeRouteHandler = async (\n req,\n res,\n parsedUrl\n ) => {\n let { pathname, query } = parsedUrl\n if (!pathname) {\n throw new Error('Invariant: pathname is undefined')\n }\n\n // When in minimal mode we do not bubble the fallback as the\n // router-server is not present to handle the error\n addRequestMeta(req, 'bubbleNoFallback', this.minimalMode ? undefined : true)\n\n // This is needed to expose render404 and nextConfig\n // for environments without router-server\n if (!routerServerGlobal[RouterServerContextSymbol]) {\n routerServerGlobal[RouterServerContextSymbol] = {}\n }\n const relativeProjectDir = relative(process.cwd(), this.dir)\n const existingServerContext =\n routerServerGlobal[RouterServerContextSymbol][relativeProjectDir]\n\n if (!existingServerContext) {\n routerServerGlobal[RouterServerContextSymbol][relativeProjectDir] = {\n render404: this.render404.bind(this),\n }\n }\n routerServerGlobal[RouterServerContextSymbol][\n relativeProjectDir\n ].nextConfig = this.nextConfig\n\n try {\n // next.js core assumes page path without trailing slash\n pathname = removeTrailingSlash(pathname)\n\n const options: MatchOptions = {\n i18n: this.i18nProvider?.fromRequest(req, pathname),\n }\n const match = await this.matchers.match(pathname, options)\n\n // If we don't have a match, try to render it anyways.\n if (!match) {\n await this.render(req, res, pathname, query, parsedUrl, true)\n\n return true\n }\n\n // Add the match to the request so we don't have to re-run the matcher\n // for the same request.\n addRequestMeta(req, 'match', match)\n\n // TODO-APP: move this to a route handler\n const edgeFunctionsPages = this.getEdgeFunctionsPages()\n for (const edgeFunctionsPage of edgeFunctionsPages) {\n // If the page doesn't match the edge function page, skip it.\n if (edgeFunctionsPage !== match.definition.page) continue\n\n if (this.nextConfig.output === 'export') {\n await this.render404(req, res, parsedUrl)\n return true\n }\n delete query[NEXT_RSC_UNION_QUERY]\n\n // If we handled the request, we can return early.\n // For api routes edge runtime\n try {\n const handled = await this.runEdgeFunction({\n req,\n res,\n query,\n params: match.params,\n page: match.definition.page,\n match,\n appPaths: null,\n })\n if (handled) return true\n } catch (apiError) {\n await this.instrumentationOnRequestError(apiError, req, {\n routePath: match.definition.page,\n routerKind: 'Pages Router',\n routeType: 'route',\n // Edge runtime does not support ISR\n revalidateReason: undefined,\n })\n throw apiError\n }\n }\n\n // If the route was detected as being a Pages API route, then handle\n // it.\n // TODO: move this behavior into a route handler.\n if (isPagesAPIRouteMatch(match)) {\n if (this.nextConfig.output === 'export') {\n await this.render404(req, res, parsedUrl)\n return true\n }\n\n const handled = await this.handleApiRequest(req, res, query, match)\n if (handled) return true\n }\n\n await this.render(req, res, pathname, query, parsedUrl, true)\n\n return true\n } catch (err: any) {\n if (err instanceof NoFallbackError) {\n throw err\n }\n\n try {\n if (this.renderOpts.dev) {\n const { formatServerError } =\n require('../lib/format-server-error') as typeof import('../lib/format-server-error')\n formatServerError(err)\n this.logErrorWithOriginalStack(err)\n } else {\n this.logError(err)\n }\n res.statusCode = 500\n await this.renderError(err, req, res, pathname, query)\n return true\n } catch {}\n\n throw err\n }\n }\n\n // Used in development only, overloaded in next-dev-server\n protected logErrorWithOriginalStack(\n _err?: unknown,\n _type?: 'unhandledRejection' | 'uncaughtException' | 'warning' | 'app-dir'\n ): void {\n throw new Error(\n 'Invariant: logErrorWithOriginalStack can only be called on the development server'\n )\n }\n\n // Used in development only, overloaded in next-dev-server\n protected async ensurePage(_opts: {\n page: string\n clientOnly: boolean\n appPaths?: ReadonlyArray<string> | null\n match?: RouteMatch\n url?: string\n }): Promise<void> {\n throw new Error(\n 'Invariant: ensurePage can only be called on the development server'\n )\n }\n\n /**\n * Resolves `API` request, in development builds on demand\n * @param req http request\n * @param res http response\n * @param pathname path of request\n */\n protected async handleApiRequest(\n req: NodeNextRequest,\n res: NodeNextResponse,\n query: ParsedUrlQuery,\n match: PagesAPIRouteMatch\n ): Promise<boolean> {\n return this.runApi(req, res, query, match)\n }\n\n protected getCacheFilesystem(): CacheFs {\n return nodeFs\n }\n\n protected normalizeReq(\n req: NodeNextRequest | IncomingMessage\n ): NodeNextRequest {\n return !(req instanceof NodeNextRequest) ? new NodeNextRequest(req) : req\n }\n\n protected normalizeRes(\n res: NodeNextResponse | ServerResponse\n ): NodeNextResponse {\n return !(res instanceof NodeNextResponse) ? new NodeNextResponse(res) : res\n }\n\n public getRequestHandler(): NodeRequestHandler {\n const handler = this.makeRequestHandler()\n if (this.serverOptions.experimentalTestProxy) {\n const { wrapRequestHandlerNode } =\n // eslint-disable-next-line @next/internal/typechecked-require -- experimental/testmode is not built ins next/dist/esm\n require('next/dist/experimental/testmode/server') as typeof import('../experimental/testmode/server')\n return wrapRequestHandlerNode(handler)\n }\n return handler\n }\n\n private makeRequestHandler(): NodeRequestHandler {\n // This is just optimization to fire prepare as soon as possible. It will be\n // properly awaited later. We add the catch here to ensure that it does not\n // cause an unhandled promise rejection. The promise rejection will be\n // handled later on via the `await` when the request handler is called.\n this.prepare().catch((err) => {\n console.error('Failed to prepare server', err)\n })\n\n const handler = super.getRequestHandler()\n\n return (req, res, parsedUrl) =>\n handler(this.normalizeReq(req), this.normalizeRes(res), parsedUrl)\n }\n\n public async revalidate({\n urlPath,\n revalidateHeaders,\n opts,\n }: {\n urlPath: string\n revalidateHeaders: { [key: string]: string | string[] }\n opts: { unstable_onlyGenerated?: boolean }\n }) {\n const mocked = createRequestResponseMocks({\n url: urlPath,\n headers: revalidateHeaders,\n })\n\n const handler = this.getRequestHandler()\n await handler(\n new NodeNextRequest(mocked.req),\n new NodeNextResponse(mocked.res)\n )\n await mocked.res.hasStreamed\n\n if (\n mocked.res.getHeader('x-nextjs-cache') !== 'REVALIDATED' &&\n mocked.res.statusCode !== 200 &&\n !(mocked.res.statusCode === 404 && opts.unstable_onlyGenerated)\n ) {\n throw new Error(`Invalid response ${mocked.res.statusCode}`)\n }\n }\n\n public async render(\n req: NodeNextRequest | IncomingMessage,\n res: NodeNextResponse | ServerResponse,\n pathname: string,\n query?: NextParsedUrlQuery,\n parsedUrl?: NextUrlWithParsedQuery,\n internal = false\n ): Promise<void> {\n return super.render(\n this.normalizeReq(req),\n this.normalizeRes(res),\n pathname,\n query,\n parsedUrl,\n internal\n )\n }\n\n public async renderToHTML(\n req: NodeNextRequest | IncomingMessage,\n res: NodeNextResponse | ServerResponse,\n pathname: string,\n query?: ParsedUrlQuery\n ): Promise<string | null> {\n return super.renderToHTML(\n this.normalizeReq(req),\n this.normalizeRes(res),\n pathname,\n query\n )\n }\n\n protected async renderErrorToResponseImpl(\n ctx: RequestContext<NodeNextRequest, NodeNextResponse>,\n err: Error | null\n ) {\n const { req, res, query } = ctx\n const is404 = res.statusCode === 404\n\n if (is404 && this.enabledDirectories.app) {\n if (this.renderOpts.dev) {\n await this.ensurePage({\n page: UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n clientOnly: false,\n url: req.url,\n }).catch(() => {})\n }\n\n if (\n this.getEdgeFunctionsPages().includes(UNDERSCORE_NOT_FOUND_ROUTE_ENTRY)\n ) {\n await this.runEdgeFunction({\n req,\n res,\n query: query || {},\n params: {},\n page: UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n appPaths: null,\n })\n return null\n }\n }\n return super.renderErrorToResponseImpl(ctx, err)\n }\n\n public async renderError(\n err: Error | null,\n req: NodeNextRequest | IncomingMessage,\n res: NodeNextResponse | ServerResponse,\n pathname: string,\n query?: NextParsedUrlQuery,\n setHeaders?: boolean\n ): Promise<void> {\n return super.renderError(\n err,\n this.normalizeReq(req),\n this.normalizeRes(res),\n pathname,\n query,\n setHeaders\n )\n }\n\n public async renderErrorToHTML(\n err: Error | null,\n req: NodeNextRequest | IncomingMessage,\n res: NodeNextResponse | ServerResponse,\n pathname: string,\n query?: ParsedUrlQuery\n ): Promise<string | null> {\n return super.renderErrorToHTML(\n err,\n this.normalizeReq(req),\n this.normalizeRes(res),\n pathname,\n query\n )\n }\n\n public async render404(\n req: NodeNextRequest | IncomingMessage,\n res: NodeNextResponse | ServerResponse,\n parsedUrl?: NextUrlWithParsedQuery,\n setHeaders?: boolean\n ): Promise<void> {\n return super.render404(\n this.normalizeReq(req),\n this.normalizeRes(res),\n parsedUrl,\n setHeaders\n )\n }\n\n protected getMiddlewareManifest(): MiddlewareManifest | null {\n if (this.minimalMode) {\n return null\n } else {\n const manifest: MiddlewareManifest = require(this.middlewareManifestPath)\n return manifest\n }\n }\n\n /** Returns the middleware routing item if there is one. */\n protected async getMiddleware(): Promise<MiddlewareRoutingItem | undefined> {\n const manifest = this.getMiddlewareManifest()\n const middleware = manifest?.middleware?.['/']\n if (!middleware) {\n const middlewareModule = await this.loadNodeMiddleware()\n\n if (middlewareModule) {\n return {\n match: getMiddlewareRouteMatcher(\n middlewareModule.config?.matchers || [\n { regexp: '.*', originalSource: '/:path*' },\n ]\n ),\n page: '/',\n }\n }\n\n return\n }\n\n return {\n match: getMiddlewareMatcher(middleware),\n page: '/',\n }\n }\n\n protected getEdgeFunctionsPages(): string[] {\n const manifest = this.getMiddlewareManifest()\n if (!manifest) {\n return []\n }\n\n return Object.keys(manifest.functions)\n }\n\n /**\n * Get information for the edge function located in the provided page\n * folder. If the edge function info can't be found it will throw\n * an error.\n */\n protected getEdgeFunctionInfo(params: {\n page: string\n /** Whether we should look for a middleware or not */\n middleware: boolean\n }): {\n name: string\n paths: string[]\n wasm: { filePath: string; name: string }[]\n env: { [key: string]: string }\n assets?: { filePath: string; name: string }[]\n } | null {\n const manifest = this.getMiddlewareManifest()\n if (!manifest) {\n return null\n }\n\n let foundPage: string\n\n try {\n foundPage = denormalizePagePath(normalizePagePath(params.page))\n } catch (err) {\n return null\n }\n\n let pageInfo = params.middleware\n ? manifest.middleware[foundPage]\n : manifest.functions[foundPage]\n\n if (!pageInfo) {\n if (!params.middleware) {\n throw new PageNotFoundError(foundPage)\n }\n return null\n }\n\n return {\n name: pageInfo.name,\n paths: pageInfo.files.map((file) => join(this.distDir, file)),\n wasm: (pageInfo.wasm ?? []).map((binding) => ({\n ...binding,\n filePath: join(this.distDir, binding.filePath),\n })),\n assets:\n pageInfo.assets &&\n pageInfo.assets.map((binding) => {\n return {\n ...binding,\n filePath: join(this.distDir, binding.filePath),\n }\n }),\n env: pageInfo.env,\n }\n }\n\n private async loadNodeMiddleware() {\n if (!process.env.NEXT_MINIMAL) {\n try {\n const functionsConfig = this.renderOpts.dev\n ? {}\n : require(join(this.distDir, 'server', FUNCTIONS_CONFIG_MANIFEST))\n\n if (\n this.renderOpts.dev ||\n functionsConfig?.functions?.['/_middleware']\n ) {\n // if used with top level await, this will be a promise\n return require(join(this.distDir, 'server', 'middleware.js'))\n }\n } catch (err) {\n if (\n isError(err) &&\n err.code !== 'ENOENT' &&\n err.code !== 'MODULE_NOT_FOUND'\n ) {\n throw err\n }\n }\n }\n }\n\n /**\n * Checks if a middleware exists. This method is useful for the development\n * server where we need to check the filesystem. Here we just check the\n * middleware manifest.\n */\n protected async hasMiddleware(pathname: string): Promise<boolean> {\n const info = this.getEdgeFunctionInfo({ page: pathname, middleware: true })\n const nodeMiddleware = await this.loadNodeMiddleware()\n\n if (!info && nodeMiddleware) {\n return true\n }\n return Boolean(info && info.paths.length > 0)\n }\n\n /**\n * A placeholder for a function to be defined in the development server.\n * It will make sure that the root middleware or an edge function has been compiled\n * so that we can run it.\n */\n protected async ensureMiddleware(_url?: string) {}\n protected async ensureEdgeFunction(_params: {\n page: string\n appPaths: string[] | null\n url?: string\n }) {}\n\n /**\n * This method gets all middleware matchers and execute them when the request\n * matches. It will make sure that each middleware exists and is compiled and\n * ready to be invoked. The development server will decorate it to add warns\n * and errors with rich traces.\n */\n protected async runMiddleware(params: {\n request: NodeNextRequest\n response: NodeNextResponse\n parsedUrl: ParsedUrl\n parsed: UrlWithParsedQuery\n onWarning?: (warning: Error) => void\n }) {\n if (process.env.NEXT_MINIMAL) {\n throw new Error(\n 'invariant: runMiddleware should not be called in minimal mode'\n )\n }\n\n // Middleware is skipped for on-demand revalidate requests\n if (\n checkIsOnDemandRevalidate(params.request, this.renderOpts.previewProps)\n .isOnDemandRevalidate\n ) {\n return {\n response: new Response(null, { headers: { 'x-middleware-next': '1' } }),\n } as FetchEventResult\n }\n\n let url: string\n\n if (this.nextConfig.skipMiddlewareUrlNormalize) {\n url = getRequestMeta(params.request, 'initURL')!\n } else {\n // For middleware to \"fetch\" we must always provide an absolute URL\n const query = urlQueryToSearchParams(params.parsed.query).toString()\n const locale = getRequestMeta(params.request, 'locale')\n\n url = `${getRequestMeta(params.request, 'initProtocol')}://${\n this.fetchHostname || 'localhost'\n }:${this.port}${locale ? `/${locale}` : ''}${params.parsed.pathname}${\n query ? `?${query}` : ''\n }`\n }\n\n if (!url.startsWith('http')) {\n throw new Error(\n 'To use middleware you must provide a `hostname` and `port` to the Next.js Server'\n )\n }\n\n const page: {\n name?: string\n params?: { [key: string]: string | string[] }\n } = {}\n\n const middleware = await this.getMiddleware()\n if (!middleware) {\n return { finished: false }\n }\n if (!(await this.hasMiddleware(middleware.page))) {\n return { finished: false }\n }\n\n await this.ensureMiddleware(params.request.url)\n const middlewareInfo = this.getEdgeFunctionInfo({\n page: middleware.page,\n middleware: true,\n })\n\n const method = (params.request.method || 'GET').toUpperCase()\n const requestData = {\n headers: params.request.headers,\n method,\n nextConfig: {\n basePath: this.nextConfig.basePath,\n i18n: this.nextConfig.i18n,\n trailingSlash: this.nextConfig.trailingSlash,\n experimental: this.nextConfig.experimental,\n },\n url: url,\n page,\n body:\n method !== 'GET' && method !== 'HEAD'\n ? (getRequestMeta(params.request, 'clonableBody') as any)\n : undefined,\n\n signal: signalFromNodeResponse(params.response.originalResponse),\n waitUntil: this.getWaitUntil(),\n }\n let result:\n | UnwrapPromise<ReturnType<typeof import('./web/sandbox').run>>\n | undefined\n\n // if no middleware info check for Node.js middleware\n // this is not in the middleware-manifest as that historically\n // has only included edge-functions, we need to do a breaking\n // version bump for that manifest to write this info there if\n // we decide we want to\n if (!middlewareInfo) {\n let middlewareModule\n middlewareModule = await this.loadNodeMiddleware()\n\n if (!middlewareModule) {\n throw new MiddlewareNotFoundError()\n }\n const adapterFn: typeof import('./web/adapter').adapter =\n middlewareModule.default || middlewareModule\n\n const hasRequestBody =\n !['HEAD', 'GET'].includes(params.request.method) &&\n Boolean(requestData.body)\n\n try {\n result = await adapterFn({\n handler: middlewareModule.middleware || middlewareModule,\n request: {\n ...requestData,\n body: hasRequestBody\n ? requestData.body.cloneBodyStream()\n : undefined,\n },\n page: 'middleware',\n })\n } finally {\n if (hasRequestBody) {\n requestData.body.finalize()\n }\n }\n } else {\n const { run } = require('./web/sandbox') as typeof import('./web/sandbox')\n\n result = await run({\n distDir: this.distDir,\n name: middlewareInfo.name,\n paths: middlewareInfo.paths,\n edgeFunctionEntry: middlewareInfo,\n request: requestData,\n useCache: true,\n onWarning: params.onWarning,\n })\n }\n\n if (!this.renderOpts.dev) {\n result.waitUntil.catch((error) => {\n console.error(`Uncaught: middleware waitUntil errored`, error)\n })\n }\n\n if (!result) {\n this.render404(params.request, params.response, params.parsed)\n return { finished: true }\n }\n\n // Split compound (comma-separated) set-cookie headers\n if (result.response.headers.has('set-cookie')) {\n const cookies = result.response.headers\n .getSetCookie()\n .flatMap((maybeCompoundCookie) =>\n splitCookiesString(maybeCompoundCookie)\n )\n\n // Clear existing header(s)\n result.response.headers.delete('set-cookie')\n\n // Append each cookie individually.\n for (const cookie of cookies) {\n result.response.headers.append('set-cookie', cookie)\n }\n\n // Add cookies to request meta.\n addRequestMeta(params.request, 'middlewareCookie', cookies)\n }\n\n return result\n }\n\n protected handleCatchallMiddlewareRequest: NodeRouteHandler = async (\n req,\n res,\n parsed\n ) => {\n const isMiddlewareInvoke = getRequestMeta(req, 'middlewareInvoke')\n\n if (!isMiddlewareInvoke) {\n return false\n }\n\n const handleFinished = () => {\n addRequestMeta(req, 'middlewareInvoke', true)\n res.body('').send()\n return true\n }\n\n const middleware = await this.getMiddleware()\n if (!middleware) {\n return handleFinished()\n }\n\n const initUrl = getRequestMeta(req, 'initURL')!\n const parsedUrl = parseUrl(initUrl)\n const pathnameInfo = getNextPathnameInfo(parsedUrl.pathname, {\n nextConfig: this.nextConfig,\n i18nProvider: this.i18nProvider,\n })\n\n parsedUrl.pathname = pathnameInfo.pathname\n const normalizedPathname = removeTrailingSlash(parsed.pathname || '')\n let maybeDecodedPathname = normalizedPathname\n\n try {\n maybeDecodedPathname = decodeURIComponent(normalizedPathname)\n } catch {\n /* non-fatal we can't decode so can't match it */\n }\n\n if (\n !(\n middleware.match(normalizedPathname, req, parsedUrl.query) ||\n middleware.match(maybeDecodedPathname, req, parsedUrl.query)\n )\n ) {\n return handleFinished()\n }\n\n let result: Awaited<\n ReturnType<typeof NextNodeServer.prototype.runMiddleware>\n >\n let bubblingResult = false\n\n try {\n await this.ensureMiddleware(req.url)\n\n result = await this.runMiddleware({\n request: req,\n response: res,\n parsedUrl: parsedUrl,\n parsed: parsed,\n })\n\n if ('response' in result) {\n if (isMiddlewareInvoke) {\n bubblingResult = true\n throw new BubbledError(true, result)\n }\n\n for (const [key, value] of Object.entries(\n toNodeOutgoingHttpHeaders(result.response.headers)\n )) {\n if (key !== 'content-encoding' && value !== undefined) {\n res.setHeader(key, value as string | string[])\n }\n }\n res.statusCode = result.response.status\n\n const { originalResponse } = res\n if (result.response.body) {\n await pipeToNodeResponse(result.response.body, originalResponse)\n } else {\n originalResponse.end()\n }\n return true\n }\n } catch (err: unknown) {\n if (bubblingResult) {\n throw err\n }\n\n if (isError(err) && err.code === 'ENOENT') {\n await this.render404(req, res, parsed)\n return true\n }\n\n if (err instanceof DecodeError) {\n res.statusCode = 400\n await this.renderError(err, req, res, parsed.pathname || '')\n return true\n }\n\n const error = getProperError(err)\n console.error(error)\n res.statusCode = 500\n await this.renderError(error, req, res, parsed.pathname || '')\n return true\n }\n\n return result.finished\n }\n\n private _cachedPreviewManifest: PrerenderManifest | undefined\n protected getPrerenderManifest(): PrerenderManifest {\n if (this._cachedPreviewManifest) {\n return this._cachedPreviewManifest\n }\n\n this._cachedPreviewManifest = loadManifest(\n join(this.distDir, PRERENDER_MANIFEST)\n ) as PrerenderManifest\n\n return this._cachedPreviewManifest\n }\n\n protected getRoutesManifest(): NormalizedRouteManifest | undefined {\n return getTracer().trace(\n NextNodeServerSpan.getRoutesManifest,\n () => loadManifest(join(this.distDir, ROUTES_MANIFEST)) as RoutesManifest\n )\n }\n\n protected attachRequestMeta(\n req: NodeNextRequest,\n parsedUrl: NextUrlWithParsedQuery,\n isUpgradeReq?: boolean\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 const initUrl =\n this.fetchHostname && this.port\n ? `${protocol}://${this.fetchHostname}:${this.port}${req.url}`\n : this.nextConfig.experimental.trustHostHeader\n ? `https://${req.headers.host || 'localhost'}${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 addRequestMeta(req, 'clonableBody', getCloneableBody(req.originalRequest))\n }\n }\n\n protected async runEdgeFunction(params: {\n req: NodeNextRequest\n res: NodeNextResponse\n query: ParsedUrlQuery\n params: Params | undefined\n page: string\n appPaths: string[] | null\n match?: RouteMatch\n onError?: (err: unknown) => void\n onWarning?: (warning: Error) => void\n }): Promise<FetchEventResult | null> {\n if (process.env.NEXT_MINIMAL) {\n throw new Error(\n 'Middleware is not supported in minimal mode. Please remove the `NEXT_MINIMAL` environment variable.'\n )\n }\n let edgeInfo: ReturnType<typeof this.getEdgeFunctionInfo> | undefined\n\n const { query, page, match } = params\n\n if (!match)\n await this.ensureEdgeFunction({\n page,\n appPaths: params.appPaths,\n url: params.req.url,\n })\n edgeInfo = this.getEdgeFunctionInfo({\n page,\n middleware: false,\n })\n\n if (!edgeInfo) {\n return null\n }\n\n // For edge to \"fetch\" we must always provide an absolute URL\n const isNextDataRequest = getRequestMeta(params.req, 'isNextDataReq')\n const initialUrl = new URL(\n getRequestMeta(params.req, 'initURL') || '/',\n 'http://n'\n )\n const queryString = urlQueryToSearchParams({\n ...Object.fromEntries(initialUrl.searchParams),\n ...query,\n ...params.params,\n }).toString()\n\n if (isNextDataRequest) {\n params.req.headers['x-nextjs-data'] = '1'\n }\n initialUrl.search = queryString\n const url = initialUrl.toString()\n\n if (!url.startsWith('http')) {\n throw new Error(\n 'To use middleware you must provide a `hostname` and `port` to the Next.js Server'\n )\n }\n\n const { run } = require('./web/sandbox') as typeof import('./web/sandbox')\n const result = await run({\n distDir: this.distDir,\n name: edgeInfo.name,\n paths: edgeInfo.paths,\n edgeFunctionEntry: edgeInfo,\n request: {\n headers: params.req.headers,\n method: params.req.method,\n nextConfig: {\n basePath: this.nextConfig.basePath,\n i18n: this.nextConfig.i18n,\n trailingSlash: this.nextConfig.trailingSlash,\n },\n url,\n page: {\n name: params.page,\n ...(params.params && { params: params.params }),\n },\n body: getRequestMeta(params.req, 'clonableBody'),\n signal: signalFromNodeResponse(params.res.originalResponse),\n waitUntil: this.getWaitUntil(),\n },\n useCache: true,\n onError: params.onError,\n onWarning: params.onWarning,\n incrementalCache:\n (globalThis as any).__incrementalCache ||\n getRequestMeta(params.req, 'incrementalCache'),\n serverComponentsHmrCache: getRequestMeta(\n params.req,\n 'serverComponentsHmrCache'\n ),\n })\n\n if (result.fetchMetrics) {\n params.req.fetchMetrics = result.fetchMetrics\n }\n\n if (!params.res.statusCode || params.res.statusCode < 400) {\n params.res.statusCode = result.response.status\n params.res.statusMessage = result.response.statusText\n }\n\n // TODO: (wyattjoh) investigate improving this\n\n result.response.headers.forEach((value, key) => {\n // The append handling is special cased for `set-cookie`.\n if (key.toLowerCase() === 'set-cookie') {\n // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici\n for (const cookie of splitCookiesString(value)) {\n params.res.appendHeader(key, cookie)\n }\n } else {\n params.res.appendHeader(key, value)\n }\n })\n\n const { originalResponse } = params.res\n if (result.response.body) {\n await pipeToNodeResponse(result.response.body, originalResponse)\n } else {\n originalResponse.end()\n }\n\n return result\n }\n\n protected get serverDistDir(): string {\n if (this._serverDistDir) {\n return this._serverDistDir\n }\n const serverDistDir = join(this.distDir, SERVER_DIRECTORY)\n this._serverDistDir = serverDistDir\n return serverDistDir\n }\n\n protected async getFallbackErrorComponents(\n _url?: string\n ): Promise<LoadComponentsReturnType | null> {\n // Not implemented for production use cases, this is implemented on the\n // development server.\n return null\n }\n\n protected async instrumentationOnRequestError(\n ...args: Parameters<ServerOnInstrumentationRequestError>\n ) {\n await super.instrumentationOnRequestError(...args)\n\n // For Node.js runtime production logs, in dev it will be overridden by next-dev-server\n if (!this.renderOpts.dev) {\n this.logError(args[0] as Error)\n }\n }\n\n protected onServerClose(listener: () => Promise<void>) {\n this.cleanupListeners.add(listener)\n }\n\n async close(): Promise<void> {\n await this.cleanupListeners.runAll()\n }\n\n protected getInternalWaitUntil(): WaitUntil {\n this.internalWaitUntil ??= this.createInternalWaitUntil()\n return this.internalWaitUntil\n }\n\n private createInternalWaitUntil() {\n if (this.minimalMode) {\n throw new InvariantError(\n 'createInternalWaitUntil should never be called in minimal mode'\n )\n }\n\n const awaiter = new AwaiterOnce({ onError: console.error })\n\n // TODO(after): warn if the process exits before these are awaited\n this.onServerClose(() => awaiter.awaiting())\n\n return awaiter.waitUntil\n }\n}\n"],"names":["NextNodeServer","dynamicImportEsmDefault","process","env","NEXT_MINIMAL","id","then","mod","default","MiddlewareMatcherCache","WeakMap","getMiddlewareMatcher","info","stored","get","Array","isArray","matchers","Error","JSON","stringify","matcher","getMiddlewareRouteMatcher","set","installProcessErrorHandlers","shouldRemoveUncaughtErrorAndRejectionListeners","removeAllListeners","on","reason","isPostpone","console","error","BaseServer","constructor","options","cleanupListeners","AsyncCallbackSet","handleNextImageRequest","req","res","parsedUrl","pathname","startsWith","getRequestMeta","minimalMode","nextConfig","output","statusCode","body","send","ImageOptimizerCache","require","imageOptimizerCache","distDir","sendResponse","ImageError","imageResponseCache","imagesConfig","images","loader","unoptimized","render404","paramsResult","validateParams","originalRequest","query","renderOpts","dev","errorMessage","cacheKey","getCacheKey","cacheEntry","getExtension","previousCacheEntry","buffer","contentType","maxAge","upstreamEtag","etag","imageOptimizer","value","kind","CachedRouteKind","IMAGE","extension","cacheControl","revalidate","expire","undefined","routeKind","RouteKind","incrementalCache","isFallback","originalResponse","href","isStatic","isMiss","isStale","Boolean","err","message","handleCatchallRenderRequest","addRequestMeta","routerServerGlobal","RouterServerContextSymbol","relativeProjectDir","relative","cwd","dir","existingServerContext","bind","removeTrailingSlash","i18n","i18nProvider","fromRequest","match","render","edgeFunctionsPages","getEdgeFunctionsPages","edgeFunctionsPage","definition","page","NEXT_RSC_UNION_QUERY","handled","runEdgeFunction","params","appPaths","apiError","instrumentationOnRequestError","routePath","routerKind","routeType","revalidateReason","isPagesAPIRouteMatch","handleApiRequest","NoFallbackError","formatServerError","logErrorWithOriginalStack","logError","renderError","handleCatchallMiddlewareRequest","parsed","isMiddlewareInvoke","handleFinished","middleware","getMiddleware","initUrl","parseUrl","pathnameInfo","getNextPathnameInfo","normalizedPathname","maybeDecodedPathname","decodeURIComponent","result","bubblingResult","ensureMiddleware","url","runMiddleware","request","response","BubbledError","key","Object","entries","toNodeOutgoingHttpHeaders","headers","setHeader","status","pipeToNodeResponse","end","isError","code","DecodeError","getProperError","finished","isDev","sriEnabled","conf","experimental","sri","algorithm","optimizeCss","__NEXT_OPTIMIZE_CSS","nextScriptWorkers","__NEXT_SCRIPT_WORKERS","NEXT_DEPLOYMENT_ID","useSkewCookie","deploymentId","ResponseCache","preloadEntriesOnStart","unstable_preloadEntries","dynamicRoutes","getRoutesManifest","map","r","regex","getRouteRegex","getRouteMatcher","re","setHttpClientAndAgentOptions","serverOptions","experimentalTestProxy","NEXT_PRIVATE_TEST_PROXY","interceptTestApis","middlewareManifestPath","join","serverDistDir","MIDDLEWARE_MANIFEST","prepare","catch","isExperimentalCompile","populateStaticEnv","removeUncaughtErrorAndRejectionListeners","appPathsManifest","getAppPathsManifest","pagesManifest","getPagesManifest","loadCustomCacheHandlers","keys","loadComponents","isAppPath","_err","ComponentMod","patchFetch","webpackRequire","__next_app__","m","handleUpgrade","loadInstrumentationModule","instrumentation","getInstrumentationModule","cause","prepareImpl","runInstrumentationHookIfAvailable","ensureInstrumentationRegistered","loadEnvConfig","forceReload","silent","Log","cacheHandlers","initializeCacheHandlers","handler","setCacheHandler","interopDefault","formatDynamicImportPath","getIncrementalCache","requestHeaders","CacheHandler","cacheHandler","IncrementalCache","fs","getCacheFilesystem","allowedRevalidateHeaderKeys","fetchCacheKeyPrefix","maxMemoryCacheSize","cacheMaxMemorySize","flushToDisk","isrFlushToDisk","getPrerenderManifest","CurCacheHandler","getResponseCache","getPublicDir","CLIENT_PUBLIC_FILES_PATH","getHasStaticDir","existsSync","loadManifest","PAGES_MANIFEST","enabledDirectories","app","APP_PATHS_MANIFEST","getinterceptionRoutePatterns","routesManifest","rewrites","beforeFiles","filter","isInterceptionRouteRewrite","rewrite","RegExp","hasPage","getMaybePagePath","locales","getBuildId","buildIdFile","BUILD_ID_FILE","readFileSync","trim","getEnabledDirectories","findDir","pages","sendRenderResult","generateEtags","poweredByHeader","runApi","handledAsEdgeFunction","parsedInitUrl","search","NodeModuleLoader","module","load","filename","waitUntil","getWaitUntil","renderHTML","getTracer","trace","NextNodeServerSpan","renderHTMLImpl","nextFontManifest","lazyRenderAppPage","getServerComponentsHmrCache","buildId","lazyRenderPagesPage","customServer","isDraftMode","developmentNotFoundSourcePage","fetchExternalImage","fetchInternalImage","handleInternalReq","newReq","newRes","routerServerHandler","isAbsolute","imageUpstream","getPagePath","renderPageComponent","ctx","bubbleNoFallback","length","getOriginalAppPaths","findPageComponents","locale","spanName","attributes","normalizeAppPath","findPageComponentsImpl","_url","pagePaths","amp","unshift","normalizePagePath","path","pagePath","components","Component","getStaticProps","PageNotFoundError","getNextFontManifest","NEXT_FONT_MANIFEST","_type","ensurePage","_opts","nodeFs","normalizeReq","NodeNextRequest","normalizeRes","NodeNextResponse","getRequestHandler","makeRequestHandler","wrapRequestHandlerNode","urlPath","revalidateHeaders","opts","mocked","createRequestResponseMocks","hasStreamed","getHeader","unstable_onlyGenerated","internal","renderToHTML","renderErrorToResponseImpl","is404","UNDERSCORE_NOT_FOUND_ROUTE_ENTRY","clientOnly","includes","setHeaders","renderErrorToHTML","getMiddlewareManifest","manifest","middlewareModule","loadNodeMiddleware","config","regexp","originalSource","functions","getEdgeFunctionInfo","foundPage","denormalizePagePath","pageInfo","name","paths","files","file","wasm","binding","filePath","assets","functionsConfig","FUNCTIONS_CONFIG_MANIFEST","hasMiddleware","nodeMiddleware","ensureEdgeFunction","_params","checkIsOnDemandRevalidate","previewProps","isOnDemandRevalidate","Response","skipMiddlewareUrlNormalize","urlQueryToSearchParams","toString","fetchHostname","port","middlewareInfo","method","toUpperCase","requestData","basePath","trailingSlash","signal","signalFromNodeResponse","MiddlewareNotFoundError","adapterFn","hasRequestBody","cloneBodyStream","finalize","run","edgeFunctionEntry","useCache","onWarning","has","cookies","getSetCookie","flatMap","maybeCompoundCookie","splitCookiesString","delete","cookie","append","_cachedPreviewManifest","PRERENDER_MANIFEST","ROUTES_MANIFEST","attachRequestMeta","isUpgradeReq","protocol","trustHostHeader","host","getCloneableBody","edgeInfo","isNextDataRequest","initialUrl","URL","queryString","fromEntries","searchParams","onError","globalThis","__incrementalCache","serverComponentsHmrCache","fetchMetrics","statusMessage","statusText","forEach","toLowerCase","appendHeader","_serverDistDir","SERVER_DIRECTORY","getFallbackErrorComponents","args","onServerClose","listener","add","close","runAll","getInternalWaitUntil","internalWaitUntil","createInternalWaitUntil","InvariantError","awaiter","AwaiterOnce","awaiting"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../src/server/next-server.ts"],"sourcesContent":["import './node-environment'\nimport './require-hook'\nimport './node-polyfill-crypto'\n\nimport type { CacheFs } from '../shared/lib/utils'\nimport {\n DecodeError,\n PageNotFoundError,\n MiddlewareNotFoundError,\n} from '../shared/lib/utils'\nimport type { MiddlewareManifest } from '../build/webpack/plugins/middleware-plugin'\nimport type RenderResult from './render-result'\nimport type { FetchEventResult } from './web/types'\nimport type { PrerenderManifest, RoutesManifest } from '../build'\nimport type { PagesManifest } from '../build/webpack/plugins/pages-manifest-plugin'\nimport type { NextParsedUrlQuery, NextUrlWithParsedQuery } from './request-meta'\nimport type { Params } from './request/params'\nimport type { MiddlewareRouteMatch } from '../shared/lib/router/utils/middleware-route-matcher'\nimport type { RouteMatch } from './route-matches/route-match'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { UrlWithParsedQuery } from 'url'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { ParsedUrl } from '../shared/lib/router/utils/parse-url'\nimport type { CacheControl } from './lib/cache-control'\nimport type { WaitUntil } from './after/builtin-request-context'\n\nimport fs from 'fs'\nimport { join, relative } from 'path'\nimport { getRouteMatcher } from '../shared/lib/router/utils/route-matcher'\nimport { addRequestMeta, getRequestMeta } from './request-meta'\nimport {\n PAGES_MANIFEST,\n BUILD_ID_FILE,\n MIDDLEWARE_MANIFEST,\n PRERENDER_MANIFEST,\n ROUTES_MANIFEST,\n CLIENT_PUBLIC_FILES_PATH,\n APP_PATHS_MANIFEST,\n SERVER_DIRECTORY,\n NEXT_FONT_MANIFEST,\n UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n FUNCTIONS_CONFIG_MANIFEST,\n} from '../shared/lib/constants'\nimport { findDir } from '../lib/find-pages-dir'\nimport { NodeNextRequest, NodeNextResponse } from './base-http/node'\nimport { sendRenderResult } from './send-payload'\nimport { parseUrl } from '../shared/lib/router/utils/parse-url'\nimport * as Log from '../build/output/log'\n\nimport type {\n Options,\n FindComponentsResult,\n MiddlewareRoutingItem,\n RequestContext,\n NormalizedRouteManifest,\n LoadedRenderOpts,\n RouteHandler,\n NextEnabledDirectories,\n BaseRequestHandler,\n} from './base-server'\nimport BaseServer from './base-server'\nimport { getMaybePagePath, getPagePath } from './require'\nimport { denormalizePagePath } from '../shared/lib/page-path/denormalize-page-path'\nimport { normalizePagePath } from '../shared/lib/page-path/normalize-page-path'\nimport { loadComponents } from './load-components'\nimport type { LoadComponentsReturnType } from './load-components'\nimport isError, { getProperError } from '../lib/is-error'\nimport { splitCookiesString, toNodeOutgoingHttpHeaders } from './web/utils'\nimport { getMiddlewareRouteMatcher } from '../shared/lib/router/utils/middleware-route-matcher'\nimport { loadEnvConfig } from '@next/env'\nimport { urlQueryToSearchParams } from '../shared/lib/router/utils/querystring'\nimport { removeTrailingSlash } from '../shared/lib/router/utils/remove-trailing-slash'\nimport { getNextPathnameInfo } from '../shared/lib/router/utils/get-next-pathname-info'\nimport { getCloneableBody } from './body-streams'\nimport { checkIsOnDemandRevalidate } from './api-utils'\nimport ResponseCache, {\n CachedRouteKind,\n type IncrementalResponseCacheEntry,\n} from './response-cache'\nimport { IncrementalCache } from './lib/incremental-cache'\nimport { normalizeAppPath } from '../shared/lib/router/utils/app-paths'\n\nimport { setHttpClientAndAgentOptions } from './setup-http-agent-env'\n\nimport { isPagesAPIRouteMatch } from './route-matches/pages-api-route-match'\nimport type { PagesAPIRouteMatch } from './route-matches/pages-api-route-match'\nimport type { MatchOptions } from './route-matcher-managers/route-matcher-manager'\nimport { BubbledError, getTracer } from './lib/trace/tracer'\nimport { NextNodeServerSpan } from './lib/trace/constants'\nimport { nodeFs } from './lib/node-fs-methods'\nimport { getRouteRegex } from '../shared/lib/router/utils/route-regex'\nimport { pipeToNodeResponse } from './pipe-readable'\nimport { createRequestResponseMocks } from './lib/mock-request'\nimport { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers'\nimport { signalFromNodeResponse } from './web/spec-extension/adapters/next-request'\nimport { loadManifest } from './load-manifest.external'\nimport { lazyRenderAppPage } from './route-modules/app-page/module.render'\nimport { lazyRenderPagesPage } from './route-modules/pages/module.render'\nimport { interopDefault } from '../lib/interop-default'\nimport { formatDynamicImportPath } from '../lib/format-dynamic-import-path'\nimport type { NextFontManifest } from '../build/webpack/plugins/next-font-manifest-plugin'\nimport { isInterceptionRouteRewrite } from '../lib/generate-interception-routes-rewrites'\nimport type { ServerOnInstrumentationRequestError } from './app-render/types'\nimport { RouteKind } from './route-kind'\nimport { InvariantError } from '../shared/lib/invariant-error'\nimport { AwaiterOnce } from './after/awaiter'\nimport { AsyncCallbackSet } from './lib/async-callback-set'\nimport { initializeCacheHandlers, setCacheHandler } from './use-cache/handlers'\nimport type { UnwrapPromise } from '../lib/coalesced-function'\nimport { populateStaticEnv } from '../lib/static-env'\nimport { isPostpone } from './lib/router-utils/is-postpone'\nimport { NodeModuleLoader } from './lib/module-loader/node-module-loader'\nimport { NoFallbackError } from '../shared/lib/no-fallback-error.external'\nimport {\n ensureInstrumentationRegistered,\n getInstrumentationModule,\n} from './lib/router-utils/instrumentation-globals.external'\nimport {\n RouterServerContextSymbol,\n routerServerGlobal,\n} from './lib/router-utils/router-server-context'\n\nexport * from './base-server'\n\n// For module that can be both CJS or ESM\nconst dynamicImportEsmDefault = process.env.NEXT_MINIMAL\n ? (id: string) =>\n import(/* webpackIgnore: true */ id).then((mod) => mod.default || mod)\n : (id: string) => import(id).then((mod) => mod.default || mod)\n\nexport type NodeRequestHandler = BaseRequestHandler<\n IncomingMessage | NodeNextRequest,\n ServerResponse | NodeNextResponse\n>\n\ntype NodeRouteHandler = RouteHandler<NodeNextRequest, NodeNextResponse>\n\nconst MiddlewareMatcherCache = new WeakMap<\n MiddlewareManifest['middleware'][string],\n MiddlewareRouteMatch\n>()\n\nfunction getMiddlewareMatcher(\n info: MiddlewareManifest['middleware'][string]\n): MiddlewareRouteMatch {\n const stored = MiddlewareMatcherCache.get(info)\n if (stored) {\n return stored\n }\n\n if (!Array.isArray(info.matchers)) {\n throw new Error(\n `Invariant: invalid matchers for middleware ${JSON.stringify(info)}`\n )\n }\n\n const matcher = getMiddlewareRouteMatcher(info.matchers)\n MiddlewareMatcherCache.set(info, matcher)\n return matcher\n}\n\nfunction installProcessErrorHandlers(\n shouldRemoveUncaughtErrorAndRejectionListeners: boolean\n) {\n // The conventional wisdom of Node.js and other runtimes is to treat\n // unhandled errors as fatal and exit the process.\n //\n // But Next.js is not a generic JS runtime — it's a specialized runtime for\n // React Server Components.\n //\n // Many unhandled rejections are due to the late-awaiting pattern for\n // prefetching data. In Next.js it's OK to call an async function without\n // immediately awaiting it, to start the request as soon as possible\n // without blocking unncessarily on the result. These can end up\n // triggering an \"unhandledRejection\" if it later turns out that the\n // data is not needed to render the page. Example:\n //\n // const promise = fetchData()\n // const shouldShow = await checkCondition()\n // if (shouldShow) {\n // return <Component promise={promise} />\n // }\n //\n // In this example, `fetchData` is called immediately to start the request\n // as soon as possible, but if `shouldShow` is false, then it will be\n // discarded without unwrapping its result. If it errors, it will trigger\n // an \"unhandledRejection\" event.\n //\n // Ideally, we would suppress these rejections completely without warning,\n // because we don't consider them real errors. (TODO: Currently we do warn.)\n //\n // But regardless of whether we do or don't warn, we definitely shouldn't\n // crash the entire process.\n //\n // Even a \"legit\" unhandled error unrelated to prefetching shouldn't\n // prevent the rest of the page from rendering.\n //\n // So, we're going to intentionally override the default error handling\n // behavior of the outer JS runtime to be more forgiving\n\n // Remove any existing \"unhandledRejection\" and \"uncaughtException\" handlers.\n // This is gated behind an experimental flag until we've considered the impact\n // in various deployment environments. It's possible this may always need to\n // be configurable.\n if (shouldRemoveUncaughtErrorAndRejectionListeners) {\n process.removeAllListeners('uncaughtException')\n process.removeAllListeners('unhandledRejection')\n }\n\n // Install a new handler to prevent the process from crashing.\n process.on('unhandledRejection', (reason: unknown) => {\n if (isPostpone(reason)) {\n // React postpones that are unhandled might end up logged here but they're\n // not really errors. They're just part of rendering.\n return\n }\n // Immediately log the error.\n // TODO: Ideally, if we knew that this error was triggered by application\n // code, we would suppress it entirely without logging. We can't reliably\n // detect all of these, but when cacheComponents is enabled, we could suppress\n // at least some of them by waiting to log the error until after all in-\n // progress renders have completed. Then, only log errors for which there\n // was not a corresponding \"rejectionHandled\" event.\n console.error(reason)\n })\n\n process.on('rejectionHandled', () => {\n // TODO: See note in the unhandledRejection handler above. In the future,\n // we may use the \"rejectionHandled\" event to de-queue an error from\n // being logged.\n })\n\n // Unhandled exceptions are errors triggered by non-async functions, so this\n // is unrelated to the late-awaiting pattern. However, for similar reasons,\n // we still shouldn't crash the process. Just log it.\n process.on('uncaughtException', (reason: unknown) => {\n if (isPostpone(reason)) {\n return\n }\n console.error(reason)\n })\n}\n\nexport default class NextNodeServer extends BaseServer<\n Options,\n NodeNextRequest,\n NodeNextResponse\n> {\n protected middlewareManifestPath: string\n private _serverDistDir: string | undefined\n private imageResponseCache?: ResponseCache\n protected renderWorkersPromises?: Promise<void>\n protected dynamicRoutes?: {\n match: import('../shared/lib/router/utils/route-matcher').RouteMatchFn\n page: string\n re: RegExp\n }[]\n private routerServerHandler?: (\n req: IncomingMessage,\n res: ServerResponse\n ) => void\n\n protected cleanupListeners = new AsyncCallbackSet()\n protected internalWaitUntil: WaitUntil | undefined\n private isDev: boolean\n private sriEnabled: boolean\n\n constructor(options: Options) {\n // Initialize super class\n super(options)\n\n const isDev = options.dev ?? false\n this.isDev = isDev\n this.sriEnabled = Boolean(options.conf.experimental?.sri?.algorithm)\n\n /**\n * This sets environment variable to be used at the time of SSR by head.tsx.\n * Using this from process.env allows targeting SSR by calling\n * `process.env.__NEXT_OPTIMIZE_CSS`.\n */\n if (this.renderOpts.optimizeCss) {\n process.env.__NEXT_OPTIMIZE_CSS = JSON.stringify(true)\n }\n if (this.renderOpts.nextScriptWorkers) {\n process.env.__NEXT_SCRIPT_WORKERS = JSON.stringify(true)\n }\n process.env.NEXT_DEPLOYMENT_ID = this.nextConfig.experimental.useSkewCookie\n ? ''\n : this.nextConfig.deploymentId || ''\n\n if (!this.minimalMode) {\n this.imageResponseCache = new ResponseCache(this.minimalMode)\n }\n\n if (\n !options.dev &&\n !this.minimalMode &&\n this.nextConfig.experimental.preloadEntriesOnStart\n ) {\n this.unstable_preloadEntries()\n }\n\n if (!options.dev) {\n const { dynamicRoutes = [] } = this.getRoutesManifest() ?? {}\n this.dynamicRoutes = dynamicRoutes.map((r) => {\n // TODO: can we just re-use the regex from the manifest?\n const regex = getRouteRegex(r.page)\n const match = getRouteMatcher(regex)\n\n return {\n match,\n page: r.page,\n re: regex.re,\n }\n })\n }\n\n // ensure options are set when loadConfig isn't called\n setHttpClientAndAgentOptions(this.nextConfig)\n\n // Intercept fetch and other testmode apis.\n if (this.serverOptions.experimentalTestProxy) {\n process.env.NEXT_PRIVATE_TEST_PROXY = 'true'\n const { interceptTestApis } =\n // eslint-disable-next-line @next/internal/typechecked-require -- experimental/testmode is not built ins next/dist/esm\n require('next/dist/experimental/testmode/server') as typeof import('../experimental/testmode/server')\n interceptTestApis()\n }\n\n this.middlewareManifestPath = join(this.serverDistDir, MIDDLEWARE_MANIFEST)\n\n // This is just optimization to fire prepare as soon as possible. It will be\n // properly awaited later. We add the catch here to ensure that it does not\n // cause a unhandled promise rejection. The promise rejection will be\n // handled later on via the `await` when the request handler is called.\n if (!options.dev) {\n this.prepare().catch((err) => {\n console.error('Failed to prepare server', err)\n })\n }\n\n // when using compile mode static env isn't inlined so we\n // need to populate in normal runtime env\n if (this.renderOpts.isExperimentalCompile) {\n populateStaticEnv(this.nextConfig)\n }\n\n const shouldRemoveUncaughtErrorAndRejectionListeners = Boolean(\n options.conf.experimental?.removeUncaughtErrorAndRejectionListeners\n )\n installProcessErrorHandlers(shouldRemoveUncaughtErrorAndRejectionListeners)\n }\n\n public async unstable_preloadEntries(): Promise<void> {\n // Ensure prepare process will be finished before preloading entries.\n await this.prepare()\n\n const appPathsManifest = this.getAppPathsManifest()\n const pagesManifest = this.getPagesManifest()\n\n await this.loadCustomCacheHandlers()\n\n for (const page of Object.keys(pagesManifest || {})) {\n try {\n await loadComponents({\n distDir: this.distDir,\n page,\n isAppPath: false,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n })\n } catch (_err) {\n // Intentionally ignored because this is a preload step.\n }\n }\n\n for (const page of Object.keys(appPathsManifest || {})) {\n try {\n const { ComponentMod } = await loadComponents({\n distDir: this.distDir,\n page,\n isAppPath: true,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n })\n // we need to ensure fetch is patched before we require the page,\n // otherwise if the fetch is patched by user code, we will be patching it\n // too late and there won't be any caching behaviors\n ComponentMod.patchFetch()\n } catch (_err) {\n // Intentionally ignored because this is a preload step.\n }\n }\n }\n\n protected async handleUpgrade(): Promise<void> {\n // The web server does not support web sockets, it's only used for HMR in\n // development.\n }\n\n protected async loadInstrumentationModule() {\n if (!this.serverOptions.dev) {\n try {\n this.instrumentation = await getInstrumentationModule(\n this.dir,\n this.nextConfig.distDir\n )\n } catch (err: any) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw new Error(\n 'An error occurred while loading the instrumentation hook',\n { cause: err }\n )\n }\n }\n }\n return this.instrumentation\n }\n\n protected async prepareImpl() {\n await super.prepareImpl()\n await this.runInstrumentationHookIfAvailable()\n }\n\n protected async runInstrumentationHookIfAvailable() {\n await ensureInstrumentationRegistered(this.dir, this.nextConfig.distDir)\n }\n\n protected loadEnvConfig({\n dev,\n forceReload,\n silent,\n }: {\n dev: boolean\n forceReload?: boolean\n silent?: boolean\n }) {\n loadEnvConfig(\n this.dir,\n dev,\n silent ? { info: () => {}, error: () => {} } : Log,\n forceReload\n )\n }\n\n private async loadCustomCacheHandlers() {\n const { cacheHandlers } = this.nextConfig.experimental\n if (!cacheHandlers) return\n\n // If we've already initialized the cache handlers interface, don't do it\n // again.\n if (!initializeCacheHandlers()) return\n\n for (const [kind, handler] of Object.entries(cacheHandlers)) {\n if (!handler) continue\n\n setCacheHandler(\n kind,\n interopDefault(\n await dynamicImportEsmDefault(\n formatDynamicImportPath(this.distDir, handler)\n )\n )\n )\n }\n }\n\n protected async getIncrementalCache({\n requestHeaders,\n }: {\n requestHeaders: IncrementalCache['requestHeaders']\n }) {\n const dev = !!this.renderOpts.dev\n let CacheHandler: any\n const { cacheHandler } = this.nextConfig\n\n if (cacheHandler) {\n CacheHandler = interopDefault(\n await dynamicImportEsmDefault(\n formatDynamicImportPath(this.distDir, cacheHandler)\n )\n )\n }\n\n await this.loadCustomCacheHandlers()\n\n // incremental-cache is request specific\n // although can have shared caches in module scope\n // per-cache handler\n return new IncrementalCache({\n fs: this.getCacheFilesystem(),\n dev,\n requestHeaders,\n allowedRevalidateHeaderKeys:\n this.nextConfig.experimental.allowedRevalidateHeaderKeys,\n minimalMode: this.minimalMode,\n serverDistDir: this.serverDistDir,\n fetchCacheKeyPrefix: this.nextConfig.experimental.fetchCacheKeyPrefix,\n maxMemoryCacheSize: this.nextConfig.cacheMaxMemorySize,\n flushToDisk:\n !this.minimalMode && this.nextConfig.experimental.isrFlushToDisk,\n getPrerenderManifest: () => this.getPrerenderManifest(),\n CurCacheHandler: CacheHandler,\n })\n }\n\n protected getResponseCache() {\n return new ResponseCache(this.minimalMode)\n }\n\n protected getPublicDir(): string {\n return join(this.dir, CLIENT_PUBLIC_FILES_PATH)\n }\n\n protected getHasStaticDir(): boolean {\n return fs.existsSync(join(this.dir, 'static'))\n }\n\n protected getPagesManifest(): PagesManifest | undefined {\n return loadManifest(\n join(this.serverDistDir, PAGES_MANIFEST)\n ) as PagesManifest\n }\n\n protected getAppPathsManifest(): PagesManifest | undefined {\n if (!this.enabledDirectories.app) return undefined\n\n return loadManifest(\n join(this.serverDistDir, APP_PATHS_MANIFEST)\n ) as PagesManifest\n }\n\n protected getinterceptionRoutePatterns(): RegExp[] {\n if (!this.enabledDirectories.app) return []\n\n const routesManifest = this.getRoutesManifest()\n return (\n routesManifest?.rewrites.beforeFiles\n .filter(isInterceptionRouteRewrite)\n .map((rewrite) => new RegExp(rewrite.regex)) ?? []\n )\n }\n\n protected async hasPage(pathname: string): Promise<boolean> {\n return !!getMaybePagePath(\n pathname,\n this.distDir,\n this.nextConfig.i18n?.locales,\n this.enabledDirectories.app\n )\n }\n\n protected getBuildId(): string {\n const buildIdFile = join(this.distDir, BUILD_ID_FILE)\n try {\n return fs.readFileSync(buildIdFile, 'utf8').trim()\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(\n `Could not find a production build in the '${this.distDir}' directory. Try building your app with 'next build' before starting the production server. https://nextjs.org/docs/messages/production-start-no-build-id`\n )\n }\n\n throw err\n }\n }\n\n protected getEnabledDirectories(dev: boolean): NextEnabledDirectories {\n const dir = dev ? this.dir : this.serverDistDir\n\n return {\n app: findDir(dir, 'app') ? true : false,\n pages: findDir(dir, 'pages') ? true : false,\n }\n }\n\n protected sendRenderResult(\n req: NodeNextRequest,\n res: NodeNextResponse,\n options: {\n result: RenderResult\n generateEtags: boolean\n poweredByHeader: boolean\n cacheControl: CacheControl | undefined\n }\n ): Promise<void> {\n return sendRenderResult({\n req: req.originalRequest,\n res: res.originalResponse,\n result: options.result,\n generateEtags: options.generateEtags,\n poweredByHeader: options.poweredByHeader,\n cacheControl: options.cacheControl,\n })\n }\n\n protected async runApi(\n req: NodeNextRequest,\n res: NodeNextResponse,\n query: ParsedUrlQuery,\n match: PagesAPIRouteMatch\n ): Promise<boolean> {\n const edgeFunctionsPages = this.getEdgeFunctionsPages()\n\n for (const edgeFunctionsPage of edgeFunctionsPages) {\n if (edgeFunctionsPage === match.definition.pathname) {\n const handledAsEdgeFunction = await this.runEdgeFunction({\n req,\n res,\n query,\n params: match.params,\n page: match.definition.pathname,\n appPaths: null,\n })\n\n if (handledAsEdgeFunction) {\n return true\n }\n }\n }\n // The module supports minimal mode, load the minimal module.\n // Restore original URL as the handler handles it's own parsing\n const parsedInitUrl = parseUrl(getRequestMeta(req, 'initURL') || req.url)\n req.url = `${parsedInitUrl.pathname}${parsedInitUrl.search || ''}`\n\n const loader = new NodeModuleLoader()\n const module = (await loader.load(match.definition.filename)) as {\n handler: (\n req: IncomingMessage,\n res: ServerResponse,\n ctx: {\n waitUntil: ReturnType<BaseServer['getWaitUntil']>\n }\n ) => Promise<void>\n }\n addRequestMeta(\n req.originalRequest,\n 'relativeProjectDir',\n relative(process.cwd(), this.dir)\n )\n addRequestMeta(req.originalRequest, 'distDir', this.distDir)\n await module.handler(req.originalRequest, res.originalResponse, {\n waitUntil: this.getWaitUntil(),\n })\n return true\n }\n\n protected async renderHTML(\n req: NodeNextRequest,\n res: NodeNextResponse,\n pathname: string,\n query: NextParsedUrlQuery,\n renderOpts: LoadedRenderOpts\n ): Promise<RenderResult> {\n return getTracer().trace(NextNodeServerSpan.renderHTML, async () =>\n this.renderHTMLImpl(req, res, pathname, query, renderOpts)\n )\n }\n\n private async renderHTMLImpl(\n req: NodeNextRequest,\n res: NodeNextResponse,\n pathname: string,\n query: NextParsedUrlQuery,\n renderOpts: LoadedRenderOpts\n ): Promise<RenderResult> {\n if (process.env.NEXT_MINIMAL) {\n throw new Error(\n 'Invariant: renderHTML should not be called in minimal mode'\n )\n // the `else` branch is needed for tree-shaking\n } else {\n // Due to the way we pass data by mutating `renderOpts`, we can't extend the\n // object here but only updating its `nextFontManifest` field.\n // https://github.com/vercel/next.js/blob/df7cbd904c3bd85f399d1ce90680c0ecf92d2752/packages/next/server/render.tsx#L947-L952\n renderOpts.nextFontManifest = this.nextFontManifest\n\n if (this.enabledDirectories.app && renderOpts.isAppPath) {\n return lazyRenderAppPage(\n req,\n res,\n pathname,\n query,\n // This code path does not service revalidations for unknown param\n // shells. As a result, we don't need to pass in the unknown params.\n null,\n renderOpts,\n this.getServerComponentsHmrCache(),\n false,\n {\n buildId: this.buildId,\n }\n )\n }\n\n // TODO: re-enable this once we've refactored to use implicit matches\n // throw new Error('Invariant: render should have used routeModule')\n\n return lazyRenderPagesPage(\n req.originalRequest,\n res.originalResponse,\n pathname,\n query,\n renderOpts,\n {\n buildId: this.buildId,\n deploymentId: this.nextConfig.deploymentId,\n customServer: this.serverOptions.customServer || undefined,\n },\n {\n isFallback: false,\n isDraftMode: renderOpts.isDraftMode,\n developmentNotFoundSourcePage: getRequestMeta(\n req,\n 'developmentNotFoundSourcePage'\n ),\n }\n )\n }\n }\n\n protected async imageOptimizer(\n req: NodeNextRequest,\n res: NodeNextResponse,\n paramsResult: import('./image-optimizer').ImageParamsResult,\n previousCacheEntry?: IncrementalResponseCacheEntry | null\n ): Promise<{\n buffer: Buffer\n contentType: string\n maxAge: number\n upstreamEtag: string\n etag: string\n }> {\n if (process.env.NEXT_MINIMAL) {\n throw new Error(\n 'invariant: imageOptimizer should not be called in minimal mode'\n )\n } else {\n const { imageOptimizer, fetchExternalImage, fetchInternalImage } =\n require('./image-optimizer') as typeof import('./image-optimizer')\n\n const handleInternalReq = async (\n newReq: IncomingMessage,\n newRes: ServerResponse\n ) => {\n if (newReq.url === req.url) {\n throw new Error(`Invariant attempted to optimize _next/image itself`)\n }\n\n if (!this.routerServerHandler) {\n throw new Error(`Invariant missing routerServerHandler`)\n }\n\n await this.routerServerHandler(newReq, newRes)\n return\n }\n\n const { isAbsolute, href } = paramsResult\n\n const imageUpstream = isAbsolute\n ? await fetchExternalImage(href)\n : await fetchInternalImage(\n href,\n req.originalRequest,\n res.originalResponse,\n handleInternalReq\n )\n\n return imageOptimizer(imageUpstream, paramsResult, this.nextConfig, {\n isDev: this.renderOpts.dev,\n previousCacheEntry,\n })\n }\n }\n\n protected getPagePath(pathname: string, locales?: string[]): string {\n return getPagePath(\n pathname,\n this.distDir,\n locales,\n this.enabledDirectories.app\n )\n }\n\n protected async renderPageComponent(\n ctx: RequestContext<NodeNextRequest, NodeNextResponse>,\n bubbleNoFallback: boolean\n ) {\n const edgeFunctionsPages = this.getEdgeFunctionsPages() || []\n if (edgeFunctionsPages.length) {\n const appPaths = this.getOriginalAppPaths(ctx.pathname)\n const isAppPath = Array.isArray(appPaths)\n\n let page = ctx.pathname\n if (isAppPath) {\n // When it's an array, we need to pass all parallel routes to the loader.\n page = appPaths[0]\n }\n\n for (const edgeFunctionsPage of edgeFunctionsPages) {\n if (edgeFunctionsPage === page) {\n await this.runEdgeFunction({\n req: ctx.req,\n res: ctx.res,\n query: ctx.query,\n params: ctx.renderOpts.params,\n page,\n appPaths,\n })\n return null\n }\n }\n }\n\n return super.renderPageComponent(ctx, bubbleNoFallback)\n }\n\n protected async findPageComponents({\n locale,\n page,\n query,\n params,\n isAppPath,\n url,\n }: {\n locale: string | undefined\n page: string\n query: NextParsedUrlQuery\n params: Params\n isAppPath: boolean\n // The following parameters are used in the development server's\n // implementation.\n sriEnabled?: boolean\n appPaths?: ReadonlyArray<string> | null\n shouldEnsure: boolean\n url?: string\n }): Promise<FindComponentsResult | null> {\n return getTracer().trace(\n NextNodeServerSpan.findPageComponents,\n {\n spanName: 'resolve page components',\n attributes: {\n 'next.route': isAppPath ? normalizeAppPath(page) : page,\n },\n },\n () =>\n this.findPageComponentsImpl({\n locale,\n page,\n query,\n params,\n isAppPath,\n url,\n })\n )\n }\n\n private async findPageComponentsImpl({\n locale,\n page,\n query,\n params,\n isAppPath,\n url: _url,\n }: {\n locale: string | undefined\n page: string\n query: NextParsedUrlQuery\n params: Params\n isAppPath: boolean\n url?: string\n }): Promise<FindComponentsResult | null> {\n const pagePaths: string[] = [page]\n if (query.amp) {\n // try serving a static AMP version first\n pagePaths.unshift(\n (isAppPath ? normalizeAppPath(page) : normalizePagePath(page)) + '.amp'\n )\n }\n\n if (locale) {\n pagePaths.unshift(\n ...pagePaths.map((path) => `/${locale}${path === '/' ? '' : path}`)\n )\n }\n\n for (const pagePath of pagePaths) {\n try {\n const components = await loadComponents({\n distDir: this.distDir,\n page: pagePath,\n isAppPath,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n })\n\n if (\n locale &&\n typeof components.Component === 'string' &&\n !pagePath.startsWith(`/${locale}/`) &&\n pagePath !== `/${locale}`\n ) {\n // if loading an static HTML file the locale is required\n // to be present since all HTML files are output under their locale\n continue\n }\n\n return {\n components,\n query: {\n ...(!this.renderOpts.isExperimentalCompile &&\n components.getStaticProps\n ? ({\n amp: query.amp,\n } as NextParsedUrlQuery)\n : query),\n // For appDir params is excluded.\n ...((isAppPath ? {} : params) || {}),\n },\n }\n } catch (err) {\n // we should only not throw if we failed to find the page\n // in the pages-manifest\n if (!(err instanceof PageNotFoundError)) {\n throw err\n }\n }\n }\n return null\n }\n\n protected getNextFontManifest(): NextFontManifest | undefined {\n return loadManifest(\n join(this.distDir, 'server', NEXT_FONT_MANIFEST + '.json')\n ) as NextFontManifest\n }\n\n protected handleNextImageRequest: NodeRouteHandler = async (\n req,\n res,\n parsedUrl\n ) => {\n if (!parsedUrl.pathname || !parsedUrl.pathname.startsWith('/_next/image')) {\n return false\n }\n // Ignore if its a middleware request\n if (getRequestMeta(req, 'middlewareInvoke')) {\n return false\n }\n\n if (\n this.minimalMode ||\n this.nextConfig.output === 'export' ||\n process.env.NEXT_MINIMAL\n ) {\n res.statusCode = 400\n res.body('Bad Request').send()\n return true\n // the `else` branch is needed for tree-shaking\n } else {\n const { ImageOptimizerCache } =\n require('./image-optimizer') as typeof import('./image-optimizer')\n\n const imageOptimizerCache = new ImageOptimizerCache({\n distDir: this.distDir,\n nextConfig: this.nextConfig,\n })\n\n const { sendResponse, ImageError } =\n require('./image-optimizer') as typeof import('./image-optimizer')\n\n if (!this.imageResponseCache) {\n throw new Error('invariant image optimizer cache was not initialized')\n }\n const imagesConfig = this.nextConfig.images\n\n if (imagesConfig.loader !== 'default' || imagesConfig.unoptimized) {\n await this.render404(req, res)\n return true\n }\n\n const paramsResult = ImageOptimizerCache.validateParams(\n req.originalRequest,\n parsedUrl.query,\n this.nextConfig,\n !!this.renderOpts.dev\n )\n\n if ('errorMessage' in paramsResult) {\n res.statusCode = 400\n res.body(paramsResult.errorMessage).send()\n return true\n }\n\n const cacheKey = ImageOptimizerCache.getCacheKey(paramsResult)\n\n try {\n const { getExtension } =\n require('./serve-static') as typeof import('./serve-static')\n const cacheEntry = await this.imageResponseCache.get(\n cacheKey,\n async ({ previousCacheEntry }) => {\n const { buffer, contentType, maxAge, upstreamEtag, etag } =\n await this.imageOptimizer(\n req,\n res,\n paramsResult,\n previousCacheEntry\n )\n\n return {\n value: {\n kind: CachedRouteKind.IMAGE,\n buffer,\n etag,\n extension: getExtension(contentType) as string,\n upstreamEtag,\n },\n cacheControl: { revalidate: maxAge, expire: undefined },\n }\n },\n {\n routeKind: RouteKind.IMAGE,\n incrementalCache: imageOptimizerCache,\n isFallback: false,\n }\n )\n\n if (cacheEntry?.value?.kind !== CachedRouteKind.IMAGE) {\n throw new Error(\n 'invariant did not get entry from image response cache'\n )\n }\n\n sendResponse(\n req.originalRequest,\n res.originalResponse,\n paramsResult.href,\n cacheEntry.value.extension,\n cacheEntry.value.buffer,\n cacheEntry.value.etag,\n paramsResult.isStatic,\n cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT',\n imagesConfig,\n cacheEntry.cacheControl?.revalidate || 0,\n Boolean(this.renderOpts.dev)\n )\n return true\n } catch (err) {\n if (err instanceof ImageError) {\n res.statusCode = err.statusCode\n res.body(err.message).send()\n return true\n }\n throw err\n }\n }\n }\n\n protected handleCatchallRenderRequest: NodeRouteHandler = async (\n req,\n res,\n parsedUrl\n ) => {\n let { pathname, query } = parsedUrl\n if (!pathname) {\n throw new Error('Invariant: pathname is undefined')\n }\n\n // When in minimal mode we do not bubble the fallback as the\n // router-server is not present to handle the error\n addRequestMeta(req, 'bubbleNoFallback', this.minimalMode ? undefined : true)\n\n // This is needed to expose render404 and nextConfig\n // for environments without router-server\n if (!routerServerGlobal[RouterServerContextSymbol]) {\n routerServerGlobal[RouterServerContextSymbol] = {}\n }\n const relativeProjectDir = relative(process.cwd(), this.dir)\n const existingServerContext =\n routerServerGlobal[RouterServerContextSymbol][relativeProjectDir]\n\n if (!existingServerContext) {\n routerServerGlobal[RouterServerContextSymbol][relativeProjectDir] = {\n render404: this.render404.bind(this),\n }\n }\n routerServerGlobal[RouterServerContextSymbol][\n relativeProjectDir\n ].nextConfig = this.nextConfig\n\n try {\n // next.js core assumes page path without trailing slash\n pathname = removeTrailingSlash(pathname)\n\n const options: MatchOptions = {\n i18n: this.i18nProvider?.fromRequest(req, pathname),\n }\n const match = await this.matchers.match(pathname, options)\n\n // If we don't have a match, try to render it anyways.\n if (!match) {\n await this.render(req, res, pathname, query, parsedUrl, true)\n\n return true\n }\n\n // Add the match to the request so we don't have to re-run the matcher\n // for the same request.\n addRequestMeta(req, 'match', match)\n\n // TODO-APP: move this to a route handler\n const edgeFunctionsPages = this.getEdgeFunctionsPages()\n for (const edgeFunctionsPage of edgeFunctionsPages) {\n // If the page doesn't match the edge function page, skip it.\n if (edgeFunctionsPage !== match.definition.page) continue\n\n if (this.nextConfig.output === 'export') {\n await this.render404(req, res, parsedUrl)\n return true\n }\n delete query[NEXT_RSC_UNION_QUERY]\n\n // If we handled the request, we can return early.\n // For api routes edge runtime\n try {\n const handled = await this.runEdgeFunction({\n req,\n res,\n query,\n params: match.params,\n page: match.definition.page,\n match,\n appPaths: null,\n })\n if (handled) return true\n } catch (apiError) {\n await this.instrumentationOnRequestError(apiError, req, {\n routePath: match.definition.page,\n routerKind: 'Pages Router',\n routeType: 'route',\n // Edge runtime does not support ISR\n revalidateReason: undefined,\n })\n throw apiError\n }\n }\n\n // If the route was detected as being a Pages API route, then handle\n // it.\n // TODO: move this behavior into a route handler.\n if (isPagesAPIRouteMatch(match)) {\n if (this.nextConfig.output === 'export') {\n await this.render404(req, res, parsedUrl)\n return true\n }\n\n const handled = await this.handleApiRequest(req, res, query, match)\n if (handled) return true\n }\n\n await this.render(req, res, pathname, query, parsedUrl, true)\n\n return true\n } catch (err: any) {\n if (err instanceof NoFallbackError) {\n throw err\n }\n\n try {\n if (this.renderOpts.dev) {\n const { formatServerError } =\n require('../lib/format-server-error') as typeof import('../lib/format-server-error')\n formatServerError(err)\n this.logErrorWithOriginalStack(err)\n } else {\n this.logError(err)\n }\n res.statusCode = 500\n await this.renderError(err, req, res, pathname, query)\n return true\n } catch {}\n\n throw err\n }\n }\n\n // Used in development only, overloaded in next-dev-server\n protected logErrorWithOriginalStack(\n _err?: unknown,\n _type?: 'unhandledRejection' | 'uncaughtException' | 'warning' | 'app-dir'\n ): void {\n throw new Error(\n 'Invariant: logErrorWithOriginalStack can only be called on the development server'\n )\n }\n\n // Used in development only, overloaded in next-dev-server\n protected async ensurePage(_opts: {\n page: string\n clientOnly: boolean\n appPaths?: ReadonlyArray<string> | null\n match?: RouteMatch\n url?: string\n }): Promise<void> {\n throw new Error(\n 'Invariant: ensurePage can only be called on the development server'\n )\n }\n\n /**\n * Resolves `API` request, in development builds on demand\n * @param req http request\n * @param res http response\n * @param pathname path of request\n */\n protected async handleApiRequest(\n req: NodeNextRequest,\n res: NodeNextResponse,\n query: ParsedUrlQuery,\n match: PagesAPIRouteMatch\n ): Promise<boolean> {\n return this.runApi(req, res, query, match)\n }\n\n protected getCacheFilesystem(): CacheFs {\n return nodeFs\n }\n\n protected normalizeReq(\n req: NodeNextRequest | IncomingMessage\n ): NodeNextRequest {\n return !(req instanceof NodeNextRequest) ? new NodeNextRequest(req) : req\n }\n\n protected normalizeRes(\n res: NodeNextResponse | ServerResponse\n ): NodeNextResponse {\n return !(res instanceof NodeNextResponse) ? new NodeNextResponse(res) : res\n }\n\n public getRequestHandler(): NodeRequestHandler {\n const handler = this.makeRequestHandler()\n if (this.serverOptions.experimentalTestProxy) {\n const { wrapRequestHandlerNode } =\n // eslint-disable-next-line @next/internal/typechecked-require -- experimental/testmode is not built ins next/dist/esm\n require('next/dist/experimental/testmode/server') as typeof import('../experimental/testmode/server')\n return wrapRequestHandlerNode(handler)\n }\n return handler\n }\n\n private makeRequestHandler(): NodeRequestHandler {\n // This is just optimization to fire prepare as soon as possible. It will be\n // properly awaited later. We add the catch here to ensure that it does not\n // cause an unhandled promise rejection. The promise rejection will be\n // handled later on via the `await` when the request handler is called.\n this.prepare().catch((err) => {\n console.error('Failed to prepare server', err)\n })\n\n const handler = super.getRequestHandler()\n\n return (req, res, parsedUrl) =>\n handler(this.normalizeReq(req), this.normalizeRes(res), parsedUrl)\n }\n\n public async revalidate({\n urlPath,\n revalidateHeaders,\n opts,\n }: {\n urlPath: string\n revalidateHeaders: { [key: string]: string | string[] }\n opts: { unstable_onlyGenerated?: boolean }\n }) {\n const mocked = createRequestResponseMocks({\n url: urlPath,\n headers: revalidateHeaders,\n })\n\n const handler = this.getRequestHandler()\n await handler(\n new NodeNextRequest(mocked.req),\n new NodeNextResponse(mocked.res)\n )\n await mocked.res.hasStreamed\n\n if (\n mocked.res.getHeader('x-nextjs-cache') !== 'REVALIDATED' &&\n mocked.res.statusCode !== 200 &&\n !(mocked.res.statusCode === 404 && opts.unstable_onlyGenerated)\n ) {\n throw new Error(`Invalid response ${mocked.res.statusCode}`)\n }\n }\n\n public async render(\n req: NodeNextRequest | IncomingMessage,\n res: NodeNextResponse | ServerResponse,\n pathname: string,\n query?: NextParsedUrlQuery,\n parsedUrl?: NextUrlWithParsedQuery,\n internal = false\n ): Promise<void> {\n return super.render(\n this.normalizeReq(req),\n this.normalizeRes(res),\n pathname,\n query,\n parsedUrl,\n internal\n )\n }\n\n public async renderToHTML(\n req: NodeNextRequest | IncomingMessage,\n res: NodeNextResponse | ServerResponse,\n pathname: string,\n query?: ParsedUrlQuery\n ): Promise<string | null> {\n return super.renderToHTML(\n this.normalizeReq(req),\n this.normalizeRes(res),\n pathname,\n query\n )\n }\n\n protected async renderErrorToResponseImpl(\n ctx: RequestContext<NodeNextRequest, NodeNextResponse>,\n err: Error | null\n ) {\n const { req, res, query } = ctx\n const is404 = res.statusCode === 404\n\n if (is404 && this.enabledDirectories.app) {\n if (this.renderOpts.dev) {\n await this.ensurePage({\n page: UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n clientOnly: false,\n url: req.url,\n }).catch(() => {})\n }\n\n if (\n this.getEdgeFunctionsPages().includes(UNDERSCORE_NOT_FOUND_ROUTE_ENTRY)\n ) {\n await this.runEdgeFunction({\n req,\n res,\n query: query || {},\n params: {},\n page: UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n appPaths: null,\n })\n return null\n }\n }\n return super.renderErrorToResponseImpl(ctx, err)\n }\n\n public async renderError(\n err: Error | null,\n req: NodeNextRequest | IncomingMessage,\n res: NodeNextResponse | ServerResponse,\n pathname: string,\n query?: NextParsedUrlQuery,\n setHeaders?: boolean\n ): Promise<void> {\n return super.renderError(\n err,\n this.normalizeReq(req),\n this.normalizeRes(res),\n pathname,\n query,\n setHeaders\n )\n }\n\n public async renderErrorToHTML(\n err: Error | null,\n req: NodeNextRequest | IncomingMessage,\n res: NodeNextResponse | ServerResponse,\n pathname: string,\n query?: ParsedUrlQuery\n ): Promise<string | null> {\n return super.renderErrorToHTML(\n err,\n this.normalizeReq(req),\n this.normalizeRes(res),\n pathname,\n query\n )\n }\n\n public async render404(\n req: NodeNextRequest | IncomingMessage,\n res: NodeNextResponse | ServerResponse,\n parsedUrl?: NextUrlWithParsedQuery,\n setHeaders?: boolean\n ): Promise<void> {\n return super.render404(\n this.normalizeReq(req),\n this.normalizeRes(res),\n parsedUrl,\n setHeaders\n )\n }\n\n protected getMiddlewareManifest(): MiddlewareManifest | null {\n if (this.minimalMode) {\n return null\n } else {\n const manifest: MiddlewareManifest = require(this.middlewareManifestPath)\n return manifest\n }\n }\n\n /** Returns the middleware routing item if there is one. */\n protected async getMiddleware(): Promise<MiddlewareRoutingItem | undefined> {\n const manifest = this.getMiddlewareManifest()\n const middleware = manifest?.middleware?.['/']\n if (!middleware) {\n const middlewareModule = await this.loadNodeMiddleware()\n\n if (middlewareModule) {\n return {\n match: getMiddlewareRouteMatcher(\n middlewareModule.config?.matchers || [\n { regexp: '.*', originalSource: '/:path*' },\n ]\n ),\n page: '/',\n }\n }\n\n return\n }\n\n return {\n match: getMiddlewareMatcher(middleware),\n page: '/',\n }\n }\n\n protected getEdgeFunctionsPages(): string[] {\n const manifest = this.getMiddlewareManifest()\n if (!manifest) {\n return []\n }\n\n return Object.keys(manifest.functions)\n }\n\n /**\n * Get information for the edge function located in the provided page\n * folder. If the edge function info can't be found it will throw\n * an error.\n */\n protected getEdgeFunctionInfo(params: {\n page: string\n /** Whether we should look for a middleware or not */\n middleware: boolean\n }): {\n name: string\n paths: string[]\n wasm: { filePath: string; name: string }[]\n env: { [key: string]: string }\n assets?: { filePath: string; name: string }[]\n } | null {\n const manifest = this.getMiddlewareManifest()\n if (!manifest) {\n return null\n }\n\n let foundPage: string\n\n try {\n foundPage = denormalizePagePath(normalizePagePath(params.page))\n } catch (err) {\n return null\n }\n\n let pageInfo = params.middleware\n ? manifest.middleware[foundPage]\n : manifest.functions[foundPage]\n\n if (!pageInfo) {\n if (!params.middleware) {\n throw new PageNotFoundError(foundPage)\n }\n return null\n }\n\n return {\n name: pageInfo.name,\n paths: pageInfo.files.map((file) => join(this.distDir, file)),\n wasm: (pageInfo.wasm ?? []).map((binding) => ({\n ...binding,\n filePath: join(this.distDir, binding.filePath),\n })),\n assets:\n pageInfo.assets &&\n pageInfo.assets.map((binding) => {\n return {\n ...binding,\n filePath: join(this.distDir, binding.filePath),\n }\n }),\n env: pageInfo.env,\n }\n }\n\n private async loadNodeMiddleware() {\n if (!process.env.NEXT_MINIMAL) {\n try {\n const functionsConfig = this.renderOpts.dev\n ? {}\n : require(join(this.distDir, 'server', FUNCTIONS_CONFIG_MANIFEST))\n\n if (\n this.renderOpts.dev ||\n functionsConfig?.functions?.['/_middleware']\n ) {\n // if used with top level await, this will be a promise\n return require(join(this.distDir, 'server', 'middleware.js'))\n }\n } catch (err) {\n if (\n isError(err) &&\n err.code !== 'ENOENT' &&\n err.code !== 'MODULE_NOT_FOUND'\n ) {\n throw err\n }\n }\n }\n }\n\n /**\n * Checks if a middleware exists. This method is useful for the development\n * server where we need to check the filesystem. Here we just check the\n * middleware manifest.\n */\n protected async hasMiddleware(pathname: string): Promise<boolean> {\n const info = this.getEdgeFunctionInfo({ page: pathname, middleware: true })\n const nodeMiddleware = await this.loadNodeMiddleware()\n\n if (!info && nodeMiddleware) {\n return true\n }\n return Boolean(info && info.paths.length > 0)\n }\n\n /**\n * A placeholder for a function to be defined in the development server.\n * It will make sure that the root middleware or an edge function has been compiled\n * so that we can run it.\n */\n protected async ensureMiddleware(_url?: string) {}\n protected async ensureEdgeFunction(_params: {\n page: string\n appPaths: string[] | null\n url?: string\n }) {}\n\n /**\n * This method gets all middleware matchers and execute them when the request\n * matches. It will make sure that each middleware exists and is compiled and\n * ready to be invoked. The development server will decorate it to add warns\n * and errors with rich traces.\n */\n protected async runMiddleware(params: {\n request: NodeNextRequest\n response: NodeNextResponse\n parsedUrl: ParsedUrl\n parsed: UrlWithParsedQuery\n onWarning?: (warning: Error) => void\n }) {\n if (process.env.NEXT_MINIMAL) {\n throw new Error(\n 'invariant: runMiddleware should not be called in minimal mode'\n )\n }\n\n // Middleware is skipped for on-demand revalidate requests\n if (\n checkIsOnDemandRevalidate(params.request, this.renderOpts.previewProps)\n .isOnDemandRevalidate\n ) {\n return {\n response: new Response(null, { headers: { 'x-middleware-next': '1' } }),\n } as FetchEventResult\n }\n\n let url: string\n\n if (this.nextConfig.skipMiddlewareUrlNormalize) {\n url = getRequestMeta(params.request, 'initURL')!\n } else {\n // For middleware to \"fetch\" we must always provide an absolute URL\n const query = urlQueryToSearchParams(params.parsed.query).toString()\n const locale = getRequestMeta(params.request, 'locale')\n\n url = `${getRequestMeta(params.request, 'initProtocol')}://${\n this.fetchHostname || 'localhost'\n }:${this.port}${locale ? `/${locale}` : ''}${params.parsed.pathname}${\n query ? `?${query}` : ''\n }`\n }\n\n if (!url.startsWith('http')) {\n throw new Error(\n 'To use middleware you must provide a `hostname` and `port` to the Next.js Server'\n )\n }\n\n const page: {\n name?: string\n params?: { [key: string]: string | string[] }\n } = {}\n\n const middleware = await this.getMiddleware()\n if (!middleware) {\n return { finished: false }\n }\n if (!(await this.hasMiddleware(middleware.page))) {\n return { finished: false }\n }\n\n await this.ensureMiddleware(params.request.url)\n const middlewareInfo = this.getEdgeFunctionInfo({\n page: middleware.page,\n middleware: true,\n })\n\n const method = (params.request.method || 'GET').toUpperCase()\n const requestData = {\n headers: params.request.headers,\n method,\n nextConfig: {\n basePath: this.nextConfig.basePath,\n i18n: this.nextConfig.i18n,\n trailingSlash: this.nextConfig.trailingSlash,\n experimental: this.nextConfig.experimental,\n },\n url: url,\n page,\n body:\n method !== 'GET' && method !== 'HEAD'\n ? (getRequestMeta(params.request, 'clonableBody') as any)\n : undefined,\n\n signal: signalFromNodeResponse(params.response.originalResponse),\n waitUntil: this.getWaitUntil(),\n }\n let result:\n | UnwrapPromise<ReturnType<typeof import('./web/sandbox').run>>\n | undefined\n\n // if no middleware info check for Node.js middleware\n // this is not in the middleware-manifest as that historically\n // has only included edge-functions, we need to do a breaking\n // version bump for that manifest to write this info there if\n // we decide we want to\n if (!middlewareInfo) {\n let middlewareModule\n middlewareModule = await this.loadNodeMiddleware()\n\n if (!middlewareModule) {\n throw new MiddlewareNotFoundError()\n }\n const adapterFn: typeof import('./web/adapter').adapter =\n middlewareModule.default || middlewareModule\n\n const hasRequestBody =\n !['HEAD', 'GET'].includes(params.request.method) &&\n Boolean(requestData.body)\n\n try {\n result = await adapterFn({\n handler: middlewareModule.middleware || middlewareModule,\n request: {\n ...requestData,\n body: hasRequestBody\n ? requestData.body.cloneBodyStream()\n : undefined,\n },\n page: 'middleware',\n })\n } finally {\n if (hasRequestBody) {\n requestData.body.finalize()\n }\n }\n } else {\n const { run } = require('./web/sandbox') as typeof import('./web/sandbox')\n\n result = await run({\n distDir: this.distDir,\n name: middlewareInfo.name,\n paths: middlewareInfo.paths,\n edgeFunctionEntry: middlewareInfo,\n request: requestData,\n useCache: true,\n onWarning: params.onWarning,\n })\n }\n\n if (!this.renderOpts.dev) {\n result.waitUntil.catch((error) => {\n console.error(`Uncaught: middleware waitUntil errored`, error)\n })\n }\n\n if (!result) {\n this.render404(params.request, params.response, params.parsed)\n return { finished: true }\n }\n\n // Split compound (comma-separated) set-cookie headers\n if (result.response.headers.has('set-cookie')) {\n const cookies = result.response.headers\n .getSetCookie()\n .flatMap((maybeCompoundCookie) =>\n splitCookiesString(maybeCompoundCookie)\n )\n\n // Clear existing header(s)\n result.response.headers.delete('set-cookie')\n\n // Append each cookie individually.\n for (const cookie of cookies) {\n result.response.headers.append('set-cookie', cookie)\n }\n\n // Add cookies to request meta.\n addRequestMeta(params.request, 'middlewareCookie', cookies)\n }\n\n return result\n }\n\n protected handleCatchallMiddlewareRequest: NodeRouteHandler = async (\n req,\n res,\n parsed\n ) => {\n const isMiddlewareInvoke = getRequestMeta(req, 'middlewareInvoke')\n\n if (!isMiddlewareInvoke) {\n return false\n }\n\n const handleFinished = () => {\n addRequestMeta(req, 'middlewareInvoke', true)\n res.body('').send()\n return true\n }\n\n const middleware = await this.getMiddleware()\n if (!middleware) {\n return handleFinished()\n }\n\n const initUrl = getRequestMeta(req, 'initURL')!\n const parsedUrl = parseUrl(initUrl)\n const pathnameInfo = getNextPathnameInfo(parsedUrl.pathname, {\n nextConfig: this.nextConfig,\n i18nProvider: this.i18nProvider,\n })\n\n parsedUrl.pathname = pathnameInfo.pathname\n const normalizedPathname = removeTrailingSlash(parsed.pathname || '')\n let maybeDecodedPathname = normalizedPathname\n\n try {\n maybeDecodedPathname = decodeURIComponent(normalizedPathname)\n } catch {\n /* non-fatal we can't decode so can't match it */\n }\n\n if (\n !(\n middleware.match(normalizedPathname, req, parsedUrl.query) ||\n middleware.match(maybeDecodedPathname, req, parsedUrl.query)\n )\n ) {\n return handleFinished()\n }\n\n let result: Awaited<\n ReturnType<typeof NextNodeServer.prototype.runMiddleware>\n >\n let bubblingResult = false\n\n try {\n await this.ensureMiddleware(req.url)\n\n result = await this.runMiddleware({\n request: req,\n response: res,\n parsedUrl: parsedUrl,\n parsed: parsed,\n })\n\n if ('response' in result) {\n if (isMiddlewareInvoke) {\n bubblingResult = true\n throw new BubbledError(true, result)\n }\n\n for (const [key, value] of Object.entries(\n toNodeOutgoingHttpHeaders(result.response.headers)\n )) {\n if (key !== 'content-encoding' && value !== undefined) {\n res.setHeader(key, value as string | string[])\n }\n }\n res.statusCode = result.response.status\n\n const { originalResponse } = res\n if (result.response.body) {\n await pipeToNodeResponse(result.response.body, originalResponse)\n } else {\n originalResponse.end()\n }\n return true\n }\n } catch (err: unknown) {\n if (bubblingResult) {\n throw err\n }\n\n if (isError(err) && err.code === 'ENOENT') {\n await this.render404(req, res, parsed)\n return true\n }\n\n if (err instanceof DecodeError) {\n res.statusCode = 400\n await this.renderError(err, req, res, parsed.pathname || '')\n return true\n }\n\n const error = getProperError(err)\n console.error(error)\n res.statusCode = 500\n await this.renderError(error, req, res, parsed.pathname || '')\n return true\n }\n\n return result.finished\n }\n\n private _cachedPreviewManifest: PrerenderManifest | undefined\n protected getPrerenderManifest(): PrerenderManifest {\n if (this._cachedPreviewManifest) {\n return this._cachedPreviewManifest\n }\n\n this._cachedPreviewManifest = loadManifest(\n join(this.distDir, PRERENDER_MANIFEST)\n ) as PrerenderManifest\n\n return this._cachedPreviewManifest\n }\n\n protected getRoutesManifest(): NormalizedRouteManifest | undefined {\n return getTracer().trace(\n NextNodeServerSpan.getRoutesManifest,\n () => loadManifest(join(this.distDir, ROUTES_MANIFEST)) as RoutesManifest\n )\n }\n\n protected attachRequestMeta(\n req: NodeNextRequest,\n parsedUrl: NextUrlWithParsedQuery,\n isUpgradeReq?: boolean\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 const initUrl =\n this.fetchHostname && this.port\n ? `${protocol}://${this.fetchHostname}:${this.port}${req.url}`\n : this.nextConfig.experimental.trustHostHeader\n ? `https://${req.headers.host || 'localhost'}${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 addRequestMeta(req, 'clonableBody', getCloneableBody(req.originalRequest))\n }\n }\n\n protected async runEdgeFunction(params: {\n req: NodeNextRequest\n res: NodeNextResponse\n query: ParsedUrlQuery\n params: Params | undefined\n page: string\n appPaths: string[] | null\n match?: RouteMatch\n onError?: (err: unknown) => void\n onWarning?: (warning: Error) => void\n }): Promise<FetchEventResult | null> {\n if (process.env.NEXT_MINIMAL) {\n throw new Error(\n 'Middleware is not supported in minimal mode. Please remove the `NEXT_MINIMAL` environment variable.'\n )\n }\n let edgeInfo: ReturnType<typeof this.getEdgeFunctionInfo> | undefined\n\n const { query, page, match } = params\n\n if (!match)\n await this.ensureEdgeFunction({\n page,\n appPaths: params.appPaths,\n url: params.req.url,\n })\n edgeInfo = this.getEdgeFunctionInfo({\n page,\n middleware: false,\n })\n\n if (!edgeInfo) {\n return null\n }\n\n // For edge to \"fetch\" we must always provide an absolute URL\n const isNextDataRequest = getRequestMeta(params.req, 'isNextDataReq')\n const initialUrl = new URL(\n getRequestMeta(params.req, 'initURL') || '/',\n 'http://n'\n )\n const queryString = urlQueryToSearchParams({\n ...Object.fromEntries(initialUrl.searchParams),\n ...query,\n ...params.params,\n }).toString()\n\n if (isNextDataRequest) {\n params.req.headers['x-nextjs-data'] = '1'\n }\n initialUrl.search = queryString\n const url = initialUrl.toString()\n\n if (!url.startsWith('http')) {\n throw new Error(\n 'To use middleware you must provide a `hostname` and `port` to the Next.js Server'\n )\n }\n\n const { run } = require('./web/sandbox') as typeof import('./web/sandbox')\n const result = await run({\n distDir: this.distDir,\n name: edgeInfo.name,\n paths: edgeInfo.paths,\n edgeFunctionEntry: edgeInfo,\n request: {\n headers: params.req.headers,\n method: params.req.method,\n nextConfig: {\n basePath: this.nextConfig.basePath,\n i18n: this.nextConfig.i18n,\n trailingSlash: this.nextConfig.trailingSlash,\n },\n url,\n page: {\n name: params.page,\n ...(params.params && { params: params.params }),\n },\n body: getRequestMeta(params.req, 'clonableBody'),\n signal: signalFromNodeResponse(params.res.originalResponse),\n waitUntil: this.getWaitUntil(),\n },\n useCache: true,\n onError: params.onError,\n onWarning: params.onWarning,\n incrementalCache:\n (globalThis as any).__incrementalCache ||\n getRequestMeta(params.req, 'incrementalCache'),\n serverComponentsHmrCache: getRequestMeta(\n params.req,\n 'serverComponentsHmrCache'\n ),\n })\n\n if (result.fetchMetrics) {\n params.req.fetchMetrics = result.fetchMetrics\n }\n\n if (!params.res.statusCode || params.res.statusCode < 400) {\n params.res.statusCode = result.response.status\n params.res.statusMessage = result.response.statusText\n }\n\n // TODO: (wyattjoh) investigate improving this\n\n result.response.headers.forEach((value, key) => {\n // The append handling is special cased for `set-cookie`.\n if (key.toLowerCase() === 'set-cookie') {\n // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici\n for (const cookie of splitCookiesString(value)) {\n params.res.appendHeader(key, cookie)\n }\n } else {\n params.res.appendHeader(key, value)\n }\n })\n\n const { originalResponse } = params.res\n if (result.response.body) {\n await pipeToNodeResponse(result.response.body, originalResponse)\n } else {\n originalResponse.end()\n }\n\n return result\n }\n\n protected get serverDistDir(): string {\n if (this._serverDistDir) {\n return this._serverDistDir\n }\n const serverDistDir = join(this.distDir, SERVER_DIRECTORY)\n this._serverDistDir = serverDistDir\n return serverDistDir\n }\n\n protected async getFallbackErrorComponents(\n _url?: string\n ): Promise<LoadComponentsReturnType | null> {\n // Not implemented for production use cases, this is implemented on the\n // development server.\n return null\n }\n\n protected async instrumentationOnRequestError(\n ...args: Parameters<ServerOnInstrumentationRequestError>\n ) {\n await super.instrumentationOnRequestError(...args)\n\n // For Node.js runtime production logs, in dev it will be overridden by next-dev-server\n if (!this.renderOpts.dev) {\n this.logError(args[0] as Error)\n }\n }\n\n protected onServerClose(listener: () => Promise<void>) {\n this.cleanupListeners.add(listener)\n }\n\n async close(): Promise<void> {\n await this.cleanupListeners.runAll()\n }\n\n protected getInternalWaitUntil(): WaitUntil {\n this.internalWaitUntil ??= this.createInternalWaitUntil()\n return this.internalWaitUntil\n }\n\n private createInternalWaitUntil() {\n if (this.minimalMode) {\n throw new InvariantError(\n 'createInternalWaitUntil should never be called in minimal mode'\n )\n }\n\n const awaiter = new AwaiterOnce({ onError: console.error })\n\n // TODO(after): warn if the process exits before these are awaited\n this.onServerClose(() => awaiter.awaiting())\n\n return awaiter.waitUntil\n }\n}\n"],"names":["NextNodeServer","dynamicImportEsmDefault","process","env","NEXT_MINIMAL","id","then","mod","default","MiddlewareMatcherCache","WeakMap","getMiddlewareMatcher","info","stored","get","Array","isArray","matchers","Error","JSON","stringify","matcher","getMiddlewareRouteMatcher","set","installProcessErrorHandlers","shouldRemoveUncaughtErrorAndRejectionListeners","removeAllListeners","on","reason","isPostpone","console","error","BaseServer","constructor","options","cleanupListeners","AsyncCallbackSet","handleNextImageRequest","req","res","parsedUrl","pathname","startsWith","getRequestMeta","minimalMode","nextConfig","output","statusCode","body","send","ImageOptimizerCache","require","imageOptimizerCache","distDir","sendResponse","ImageError","imageResponseCache","imagesConfig","images","loader","unoptimized","render404","paramsResult","validateParams","originalRequest","query","renderOpts","dev","errorMessage","cacheKey","getCacheKey","cacheEntry","getExtension","previousCacheEntry","buffer","contentType","maxAge","upstreamEtag","etag","imageOptimizer","value","kind","CachedRouteKind","IMAGE","extension","cacheControl","revalidate","expire","undefined","routeKind","RouteKind","incrementalCache","isFallback","originalResponse","href","isStatic","isMiss","isStale","Boolean","err","message","handleCatchallRenderRequest","addRequestMeta","routerServerGlobal","RouterServerContextSymbol","relativeProjectDir","relative","cwd","dir","existingServerContext","bind","removeTrailingSlash","i18n","i18nProvider","fromRequest","match","render","edgeFunctionsPages","getEdgeFunctionsPages","edgeFunctionsPage","definition","page","NEXT_RSC_UNION_QUERY","handled","runEdgeFunction","params","appPaths","apiError","instrumentationOnRequestError","routePath","routerKind","routeType","revalidateReason","isPagesAPIRouteMatch","handleApiRequest","NoFallbackError","formatServerError","logErrorWithOriginalStack","logError","renderError","handleCatchallMiddlewareRequest","parsed","isMiddlewareInvoke","handleFinished","middleware","getMiddleware","initUrl","parseUrl","pathnameInfo","getNextPathnameInfo","normalizedPathname","maybeDecodedPathname","decodeURIComponent","result","bubblingResult","ensureMiddleware","url","runMiddleware","request","response","BubbledError","key","Object","entries","toNodeOutgoingHttpHeaders","headers","setHeader","status","pipeToNodeResponse","end","isError","code","DecodeError","getProperError","finished","isDev","sriEnabled","conf","experimental","sri","algorithm","optimizeCss","__NEXT_OPTIMIZE_CSS","nextScriptWorkers","__NEXT_SCRIPT_WORKERS","NEXT_DEPLOYMENT_ID","useSkewCookie","deploymentId","ResponseCache","preloadEntriesOnStart","unstable_preloadEntries","dynamicRoutes","getRoutesManifest","map","r","regex","getRouteRegex","getRouteMatcher","re","setHttpClientAndAgentOptions","serverOptions","experimentalTestProxy","NEXT_PRIVATE_TEST_PROXY","interceptTestApis","middlewareManifestPath","join","serverDistDir","MIDDLEWARE_MANIFEST","prepare","catch","isExperimentalCompile","populateStaticEnv","removeUncaughtErrorAndRejectionListeners","appPathsManifest","getAppPathsManifest","pagesManifest","getPagesManifest","loadCustomCacheHandlers","keys","loadComponents","isAppPath","_err","ComponentMod","patchFetch","handleUpgrade","loadInstrumentationModule","instrumentation","getInstrumentationModule","cause","prepareImpl","runInstrumentationHookIfAvailable","ensureInstrumentationRegistered","loadEnvConfig","forceReload","silent","Log","cacheHandlers","initializeCacheHandlers","handler","setCacheHandler","interopDefault","formatDynamicImportPath","getIncrementalCache","requestHeaders","CacheHandler","cacheHandler","IncrementalCache","fs","getCacheFilesystem","allowedRevalidateHeaderKeys","fetchCacheKeyPrefix","maxMemoryCacheSize","cacheMaxMemorySize","flushToDisk","isrFlushToDisk","getPrerenderManifest","CurCacheHandler","getResponseCache","getPublicDir","CLIENT_PUBLIC_FILES_PATH","getHasStaticDir","existsSync","loadManifest","PAGES_MANIFEST","enabledDirectories","app","APP_PATHS_MANIFEST","getinterceptionRoutePatterns","routesManifest","rewrites","beforeFiles","filter","isInterceptionRouteRewrite","rewrite","RegExp","hasPage","getMaybePagePath","locales","getBuildId","buildIdFile","BUILD_ID_FILE","readFileSync","trim","getEnabledDirectories","findDir","pages","sendRenderResult","generateEtags","poweredByHeader","runApi","handledAsEdgeFunction","parsedInitUrl","search","NodeModuleLoader","module","load","filename","waitUntil","getWaitUntil","renderHTML","getTracer","trace","NextNodeServerSpan","renderHTMLImpl","nextFontManifest","lazyRenderAppPage","getServerComponentsHmrCache","buildId","lazyRenderPagesPage","customServer","isDraftMode","developmentNotFoundSourcePage","fetchExternalImage","fetchInternalImage","handleInternalReq","newReq","newRes","routerServerHandler","isAbsolute","imageUpstream","getPagePath","renderPageComponent","ctx","bubbleNoFallback","length","getOriginalAppPaths","findPageComponents","locale","spanName","attributes","normalizeAppPath","findPageComponentsImpl","_url","pagePaths","amp","unshift","normalizePagePath","path","pagePath","components","Component","getStaticProps","PageNotFoundError","getNextFontManifest","NEXT_FONT_MANIFEST","_type","ensurePage","_opts","nodeFs","normalizeReq","NodeNextRequest","normalizeRes","NodeNextResponse","getRequestHandler","makeRequestHandler","wrapRequestHandlerNode","urlPath","revalidateHeaders","opts","mocked","createRequestResponseMocks","hasStreamed","getHeader","unstable_onlyGenerated","internal","renderToHTML","renderErrorToResponseImpl","is404","UNDERSCORE_NOT_FOUND_ROUTE_ENTRY","clientOnly","includes","setHeaders","renderErrorToHTML","getMiddlewareManifest","manifest","middlewareModule","loadNodeMiddleware","config","regexp","originalSource","functions","getEdgeFunctionInfo","foundPage","denormalizePagePath","pageInfo","name","paths","files","file","wasm","binding","filePath","assets","functionsConfig","FUNCTIONS_CONFIG_MANIFEST","hasMiddleware","nodeMiddleware","ensureEdgeFunction","_params","checkIsOnDemandRevalidate","previewProps","isOnDemandRevalidate","Response","skipMiddlewareUrlNormalize","urlQueryToSearchParams","toString","fetchHostname","port","middlewareInfo","method","toUpperCase","requestData","basePath","trailingSlash","signal","signalFromNodeResponse","MiddlewareNotFoundError","adapterFn","hasRequestBody","cloneBodyStream","finalize","run","edgeFunctionEntry","useCache","onWarning","has","cookies","getSetCookie","flatMap","maybeCompoundCookie","splitCookiesString","delete","cookie","append","_cachedPreviewManifest","PRERENDER_MANIFEST","ROUTES_MANIFEST","attachRequestMeta","isUpgradeReq","protocol","trustHostHeader","host","getCloneableBody","edgeInfo","isNextDataRequest","initialUrl","URL","queryString","fromEntries","searchParams","onError","globalThis","__incrementalCache","serverComponentsHmrCache","fetchMetrics","statusMessage","statusText","forEach","toLowerCase","appendHeader","_serverDistDir","SERVER_DIRECTORY","getFallbackErrorComponents","args","onServerClose","listener","add","close","runAll","getInternalWaitUntil","internalWaitUntil","createInternalWaitUntil","InvariantError","awaiter","AwaiterOnce","awaiting"],"mappings":"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","ignoreList":[0]}
@@ -119,6 +119,14 @@ const API_DOCS = {
119
119
  isValid: (value)=>{
120
120
  return value === 'true' || value === 'false';
121
121
  }
122
+ },
123
+ unstable_prefetch: {
124
+ description: `Specifies the default prefetching behavior for this segment. This configuration is currently under development and will change.`,
125
+ link: '(docs coming soon)',
126
+ options: {
127
+ '"unstable_static"': 'Only static and cached parts of the page will be prefetched. (default)',
128
+ '"unstable_runtime"': 'Parts of the page that use route params, search params, or cookies will also be prefetched.'
129
+ }
122
130
  }
123
131
  };
124
132
  function visitEntryConfig(fileName, position, callback) {