next 15.4.0-canary.7 → 15.4.0-canary.8

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 (35) 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/server.runtime.prod.js +2 -2
  8. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  9. package/dist/esm/build/index.js +2 -2
  10. package/dist/esm/build/swc/index.js +1 -1
  11. package/dist/esm/build/webpack-config.js +2 -2
  12. package/dist/esm/client/app-bootstrap.js +1 -1
  13. package/dist/esm/client/index.js +1 -1
  14. package/dist/esm/server/base-server.js +4 -2
  15. package/dist/esm/server/base-server.js.map +1 -1
  16. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  17. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  18. package/dist/esm/server/lib/app-info-log.js +1 -1
  19. package/dist/esm/server/lib/start-server.js +1 -1
  20. package/dist/esm/server/next-server.js +2 -0
  21. package/dist/esm/server/next-server.js.map +1 -1
  22. package/dist/esm/shared/lib/canary-only.js +1 -1
  23. package/dist/server/base-server.js +4 -2
  24. package/dist/server/base-server.js.map +1 -1
  25. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  26. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  27. package/dist/server/lib/app-info-log.js +1 -1
  28. package/dist/server/lib/start-server.js +1 -1
  29. package/dist/server/next-server.js +2 -0
  30. package/dist/server/next-server.js.map +1 -1
  31. package/dist/shared/lib/canary-only.js +1 -1
  32. package/dist/telemetry/anonymous-meta.js +1 -1
  33. package/dist/telemetry/events/session-stopped.js +2 -2
  34. package/dist/telemetry/events/version.js +2 -2
  35. 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 } 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, resolve } 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, { NoFallbackError } 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 { INSTRUMENTATION_HOOK_FILENAME } from '../lib/constants'\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'\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'\n\nexport * from './base-server'\n\ndeclare const __non_webpack_require__: NodeRequire\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\n// For module that will be compiled to CJS, e.g. instrument\nconst dynamicRequire = process.env.NEXT_MINIMAL\n ? __non_webpack_require__\n : require\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 dynamicIO 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 private registeredInstrumentation: boolean = false\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.deploymentId || ''\n\n if (!this.minimalMode) {\n this.imageResponseCache = new ResponseCache(this.minimalMode)\n }\n\n const { appDocumentPreloading } = this.nextConfig.experimental\n const isDefaultEnabled = typeof appDocumentPreloading === 'undefined'\n\n if (\n !options.dev &&\n (appDocumentPreloading === true ||\n !(this.minimalMode && isDefaultEnabled))\n ) {\n // pre-warm _document and _app as these will be\n // needed for most requests\n loadComponents({\n distDir: this.distDir,\n page: '/_document',\n isAppPath: false,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n }).catch(() => {})\n loadComponents({\n distDir: this.distDir,\n page: '/_app',\n isAppPath: false,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n }).catch(() => {})\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 {\n interceptTestApis,\n } = require('next/dist/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 const appPathsManifest = this.getAppPathsManifest()\n const pagesManifest = this.getPagesManifest()\n\n await this.loadCustomCacheHandlers()\n\n for (const page of Object.keys(pagesManifest || {})) {\n await loadComponents({\n distDir: this.distDir,\n page,\n isAppPath: false,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n }).catch(() => {})\n }\n\n for (const page of Object.keys(appPathsManifest || {})) {\n await loadComponents({\n distDir: this.distDir,\n page,\n isAppPath: true,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n })\n .then(async ({ ComponentMod }) => {\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 })\n .catch(() => {})\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 dynamicRequire(\n resolve(\n this.serverOptions.dir || '.',\n this.serverOptions.conf.distDir!,\n 'server',\n INSTRUMENTATION_HOOK_FILENAME\n )\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 if (this.registeredInstrumentation) return\n this.registeredInstrumentation = true\n await this.instrumentation?.register?.()\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 requestProtocol,\n }: {\n requestHeaders: IncrementalCache['requestHeaders']\n requestProtocol: 'http' | 'https'\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 requestProtocol,\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 type: 'html' | 'json' | 'rsc'\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 type: options.type,\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 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 isFallback: false,\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 // This is a catch-all route, there should be no fallbacks so mark it as\n // such.\n addRequestMeta(req, 'bubbleNoFallback', true)\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 {\n wrapRequestHandlerNode,\n } = require('next/dist/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 (!this.nextConfig.experimental.nodeMiddleware) {\n return\n }\n\n try {\n const functionsConfig = this.renderOpts.dev\n ? {}\n : require(join(this.distDir, 'server', FUNCTIONS_CONFIG_MANIFEST))\n\n if (this.renderOpts.dev || functionsConfig?.functions?.['/_middleware']) {\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 * 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 result = await adapterFn({\n handler: middlewareModule.middleware || middlewareModule,\n request: requestData,\n page: 'middleware',\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(NextNodeServerSpan.getRoutesManifest, () => {\n const manifest = loadManifest(join(this.distDir, ROUTES_MANIFEST)) as any\n\n let rewrites = manifest.rewrites ?? {\n beforeFiles: [],\n afterFiles: [],\n fallback: [],\n }\n\n if (Array.isArray(rewrites)) {\n rewrites = {\n beforeFiles: [],\n afterFiles: rewrites,\n fallback: [],\n }\n }\n\n return { ...manifest, rewrites }\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":["DecodeError","PageNotFoundError","MiddlewareNotFoundError","fs","join","resolve","getRouteMatcher","addRequestMeta","getRequestMeta","PAGES_MANIFEST","BUILD_ID_FILE","MIDDLEWARE_MANIFEST","PRERENDER_MANIFEST","ROUTES_MANIFEST","CLIENT_PUBLIC_FILES_PATH","APP_PATHS_MANIFEST","SERVER_DIRECTORY","NEXT_FONT_MANIFEST","UNDERSCORE_NOT_FOUND_ROUTE_ENTRY","FUNCTIONS_CONFIG_MANIFEST","findDir","NodeNextRequest","NodeNextResponse","sendRenderResult","parseUrl","Log","BaseServer","NoFallbackError","getMaybePagePath","getPagePath","denormalizePagePath","normalizePagePath","loadComponents","isError","getProperError","splitCookiesString","toNodeOutgoingHttpHeaders","getMiddlewareRouteMatcher","loadEnvConfig","urlQueryToSearchParams","removeTrailingSlash","getNextPathnameInfo","getCloneableBody","checkIsOnDemandRevalidate","ResponseCache","CachedRouteKind","IncrementalCache","normalizeAppPath","setHttpClientAndAgentOptions","isPagesAPIRouteMatch","INSTRUMENTATION_HOOK_FILENAME","BubbledError","getTracer","NextNodeServerSpan","nodeFs","getRouteRegex","pipeToNodeResponse","createRequestResponseMocks","NEXT_RSC_UNION_QUERY","signalFromNodeResponse","loadManifest","lazyRenderAppPage","lazyRenderPagesPage","interopDefault","formatDynamicImportPath","isInterceptionRouteRewrite","RouteKind","InvariantError","AwaiterOnce","AsyncCallbackSet","initializeCacheHandlers","setCacheHandler","populateStaticEnv","isPostpone","NodeModuleLoader","dynamicImportEsmDefault","process","env","NEXT_MINIMAL","id","then","mod","default","dynamicRequire","__non_webpack_require__","require","MiddlewareMatcherCache","WeakMap","getMiddlewareMatcher","info","stored","get","Array","isArray","matchers","Error","JSON","stringify","matcher","set","installProcessErrorHandlers","shouldRemoveUncaughtErrorAndRejectionListeners","removeAllListeners","on","reason","console","error","NextNodeServer","constructor","options","registeredInstrumentation","cleanupListeners","handleNextImageRequest","req","res","parsedUrl","pathname","startsWith","minimalMode","nextConfig","output","statusCode","body","send","ImageOptimizerCache","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","IMAGE","extension","isFallback","cacheControl","revalidate","expire","undefined","routeKind","incrementalCache","originalResponse","href","isStatic","isMiss","isStale","Boolean","err","message","handleCatchallRenderRequest","i18n","i18nProvider","fromRequest","match","render","edgeFunctionsPages","getEdgeFunctionsPages","edgeFunctionsPage","definition","page","handled","runEdgeFunction","params","appPaths","apiError","instrumentationOnRequestError","routePath","routerKind","routeType","revalidateReason","handleApiRequest","formatServerError","logErrorWithOriginalStack","logError","renderError","handleCatchallMiddlewareRequest","parsed","isMiddlewareInvoke","handleFinished","middleware","getMiddleware","initUrl","pathnameInfo","normalizedPathname","maybeDecodedPathname","decodeURIComponent","result","bubblingResult","ensureMiddleware","url","runMiddleware","request","response","key","Object","entries","headers","setHeader","status","end","code","finished","isDev","sriEnabled","conf","experimental","sri","algorithm","optimizeCss","__NEXT_OPTIMIZE_CSS","nextScriptWorkers","__NEXT_SCRIPT_WORKERS","NEXT_DEPLOYMENT_ID","deploymentId","appDocumentPreloading","isDefaultEnabled","isAppPath","catch","preloadEntriesOnStart","unstable_preloadEntries","dynamicRoutes","getRoutesManifest","map","r","regex","re","serverOptions","experimentalTestProxy","NEXT_PRIVATE_TEST_PROXY","interceptTestApis","middlewareManifestPath","serverDistDir","prepare","isExperimentalCompile","removeUncaughtErrorAndRejectionListeners","appPathsManifest","getAppPathsManifest","pagesManifest","getPagesManifest","loadCustomCacheHandlers","keys","ComponentMod","patchFetch","webpackRequire","__next_app__","m","handleUpgrade","loadInstrumentationModule","instrumentation","dir","cause","prepareImpl","runInstrumentationHookIfAvailable","register","forceReload","silent","cacheHandlers","handler","getIncrementalCache","requestHeaders","requestProtocol","CacheHandler","cacheHandler","getCacheFilesystem","allowedRevalidateHeaderKeys","fetchCacheKeyPrefix","maxMemoryCacheSize","cacheMaxMemorySize","flushToDisk","isrFlushToDisk","getPrerenderManifest","CurCacheHandler","getResponseCache","getPublicDir","getHasStaticDir","existsSync","enabledDirectories","app","getinterceptionRoutePatterns","routesManifest","rewrites","beforeFiles","filter","rewrite","RegExp","hasPage","locales","getBuildId","buildIdFile","readFileSync","trim","getEnabledDirectories","pages","type","generateEtags","poweredByHeader","runApi","handledAsEdgeFunction","parsedInitUrl","search","module","load","filename","waitUntil","getWaitUntil","renderHTML","trace","renderHTMLImpl","nextFontManifest","getServerComponentsHmrCache","buildId","customServer","isDraftMode","developmentNotFoundSourcePage","fetchExternalImage","fetchInternalImage","handleInternalReq","newReq","newRes","routerServerHandler","isAbsolute","imageUpstream","renderPageComponent","ctx","bubbleNoFallback","length","getOriginalAppPaths","findPageComponents","locale","spanName","attributes","findPageComponentsImpl","_url","pagePaths","amp","unshift","path","pagePath","components","Component","getStaticProps","getNextFontManifest","_err","_type","ensurePage","_opts","normalizeReq","normalizeRes","getRequestHandler","makeRequestHandler","wrapRequestHandlerNode","urlPath","revalidateHeaders","opts","mocked","hasStreamed","getHeader","unstable_onlyGenerated","internal","renderToHTML","renderErrorToResponseImpl","is404","clientOnly","includes","setHeaders","renderErrorToHTML","getMiddlewareManifest","manifest","middlewareModule","loadNodeMiddleware","config","regexp","originalSource","functions","getEdgeFunctionInfo","foundPage","pageInfo","name","paths","files","file","wasm","binding","filePath","assets","nodeMiddleware","functionsConfig","hasMiddleware","ensureEdgeFunction","_params","previewProps","isOnDemandRevalidate","Response","skipMiddlewareUrlNormalize","toString","fetchHostname","port","middlewareInfo","method","toUpperCase","requestData","basePath","trailingSlash","signal","adapterFn","run","edgeFunctionEntry","useCache","onWarning","has","cookies","getSetCookie","flatMap","maybeCompoundCookie","delete","cookie","append","_cachedPreviewManifest","afterFiles","fallback","attachRequestMeta","isUpgradeReq","protocol","trustHostHeader","host","edgeInfo","isNextDataRequest","initialUrl","URL","queryString","fromEntries","searchParams","onError","globalThis","__incrementalCache","serverComponentsHmrCache","fetchMetrics","statusMessage","statusText","forEach","toLowerCase","appendHeader","_serverDistDir","getFallbackErrorComponents","args","onServerClose","listener","add","close","runAll","getInternalWaitUntil","internalWaitUntil","createInternalWaitUntil","awaiter","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 } 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, resolve } 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, { NoFallbackError } 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 { INSTRUMENTATION_HOOK_FILENAME } from '../lib/constants'\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'\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'\n\nexport * from './base-server'\n\ndeclare const __non_webpack_require__: NodeRequire\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\n// For module that will be compiled to CJS, e.g. instrument\nconst dynamicRequire = process.env.NEXT_MINIMAL\n ? __non_webpack_require__\n : require\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 dynamicIO 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 private registeredInstrumentation: boolean = false\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.deploymentId || ''\n\n if (!this.minimalMode) {\n this.imageResponseCache = new ResponseCache(this.minimalMode)\n }\n\n const { appDocumentPreloading } = this.nextConfig.experimental\n const isDefaultEnabled = typeof appDocumentPreloading === 'undefined'\n\n if (\n !options.dev &&\n (appDocumentPreloading === true ||\n !(this.minimalMode && isDefaultEnabled))\n ) {\n // pre-warm _document and _app as these will be\n // needed for most requests\n loadComponents({\n distDir: this.distDir,\n page: '/_document',\n isAppPath: false,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n }).catch(() => {})\n loadComponents({\n distDir: this.distDir,\n page: '/_app',\n isAppPath: false,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n }).catch(() => {})\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 {\n interceptTestApis,\n } = require('next/dist/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 await loadComponents({\n distDir: this.distDir,\n page,\n isAppPath: false,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n }).catch(() => {})\n }\n\n for (const page of Object.keys(appPathsManifest || {})) {\n await loadComponents({\n distDir: this.distDir,\n page,\n isAppPath: true,\n isDev: this.isDev,\n sriEnabled: this.sriEnabled,\n })\n .then(async ({ ComponentMod }) => {\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 })\n .catch(() => {})\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 dynamicRequire(\n resolve(\n this.serverOptions.dir || '.',\n this.serverOptions.conf.distDir!,\n 'server',\n INSTRUMENTATION_HOOK_FILENAME\n )\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 if (this.registeredInstrumentation) return\n this.registeredInstrumentation = true\n await this.instrumentation?.register?.()\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 requestProtocol,\n }: {\n requestHeaders: IncrementalCache['requestHeaders']\n requestProtocol: 'http' | 'https'\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 requestProtocol,\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 type: 'html' | 'json' | 'rsc'\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 type: options.type,\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 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 isFallback: false,\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 // This is a catch-all route, there should be no fallbacks so mark it as\n // such.\n addRequestMeta(req, 'bubbleNoFallback', true)\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 {\n wrapRequestHandlerNode,\n } = require('next/dist/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 (!this.nextConfig.experimental.nodeMiddleware) {\n return\n }\n\n try {\n const functionsConfig = this.renderOpts.dev\n ? {}\n : require(join(this.distDir, 'server', FUNCTIONS_CONFIG_MANIFEST))\n\n if (this.renderOpts.dev || functionsConfig?.functions?.['/_middleware']) {\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 * 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 result = await adapterFn({\n handler: middlewareModule.middleware || middlewareModule,\n request: requestData,\n page: 'middleware',\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(NextNodeServerSpan.getRoutesManifest, () => {\n const manifest = loadManifest(join(this.distDir, ROUTES_MANIFEST)) as any\n\n let rewrites = manifest.rewrites ?? {\n beforeFiles: [],\n afterFiles: [],\n fallback: [],\n }\n\n if (Array.isArray(rewrites)) {\n rewrites = {\n beforeFiles: [],\n afterFiles: rewrites,\n fallback: [],\n }\n }\n\n return { ...manifest, rewrites }\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":["DecodeError","PageNotFoundError","MiddlewareNotFoundError","fs","join","resolve","getRouteMatcher","addRequestMeta","getRequestMeta","PAGES_MANIFEST","BUILD_ID_FILE","MIDDLEWARE_MANIFEST","PRERENDER_MANIFEST","ROUTES_MANIFEST","CLIENT_PUBLIC_FILES_PATH","APP_PATHS_MANIFEST","SERVER_DIRECTORY","NEXT_FONT_MANIFEST","UNDERSCORE_NOT_FOUND_ROUTE_ENTRY","FUNCTIONS_CONFIG_MANIFEST","findDir","NodeNextRequest","NodeNextResponse","sendRenderResult","parseUrl","Log","BaseServer","NoFallbackError","getMaybePagePath","getPagePath","denormalizePagePath","normalizePagePath","loadComponents","isError","getProperError","splitCookiesString","toNodeOutgoingHttpHeaders","getMiddlewareRouteMatcher","loadEnvConfig","urlQueryToSearchParams","removeTrailingSlash","getNextPathnameInfo","getCloneableBody","checkIsOnDemandRevalidate","ResponseCache","CachedRouteKind","IncrementalCache","normalizeAppPath","setHttpClientAndAgentOptions","isPagesAPIRouteMatch","INSTRUMENTATION_HOOK_FILENAME","BubbledError","getTracer","NextNodeServerSpan","nodeFs","getRouteRegex","pipeToNodeResponse","createRequestResponseMocks","NEXT_RSC_UNION_QUERY","signalFromNodeResponse","loadManifest","lazyRenderAppPage","lazyRenderPagesPage","interopDefault","formatDynamicImportPath","isInterceptionRouteRewrite","RouteKind","InvariantError","AwaiterOnce","AsyncCallbackSet","initializeCacheHandlers","setCacheHandler","populateStaticEnv","isPostpone","NodeModuleLoader","dynamicImportEsmDefault","process","env","NEXT_MINIMAL","id","then","mod","default","dynamicRequire","__non_webpack_require__","require","MiddlewareMatcherCache","WeakMap","getMiddlewareMatcher","info","stored","get","Array","isArray","matchers","Error","JSON","stringify","matcher","set","installProcessErrorHandlers","shouldRemoveUncaughtErrorAndRejectionListeners","removeAllListeners","on","reason","console","error","NextNodeServer","constructor","options","registeredInstrumentation","cleanupListeners","handleNextImageRequest","req","res","parsedUrl","pathname","startsWith","minimalMode","nextConfig","output","statusCode","body","send","ImageOptimizerCache","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","IMAGE","extension","isFallback","cacheControl","revalidate","expire","undefined","routeKind","incrementalCache","originalResponse","href","isStatic","isMiss","isStale","Boolean","err","message","handleCatchallRenderRequest","i18n","i18nProvider","fromRequest","match","render","edgeFunctionsPages","getEdgeFunctionsPages","edgeFunctionsPage","definition","page","handled","runEdgeFunction","params","appPaths","apiError","instrumentationOnRequestError","routePath","routerKind","routeType","revalidateReason","handleApiRequest","formatServerError","logErrorWithOriginalStack","logError","renderError","handleCatchallMiddlewareRequest","parsed","isMiddlewareInvoke","handleFinished","middleware","getMiddleware","initUrl","pathnameInfo","normalizedPathname","maybeDecodedPathname","decodeURIComponent","result","bubblingResult","ensureMiddleware","url","runMiddleware","request","response","key","Object","entries","headers","setHeader","status","end","code","finished","isDev","sriEnabled","conf","experimental","sri","algorithm","optimizeCss","__NEXT_OPTIMIZE_CSS","nextScriptWorkers","__NEXT_SCRIPT_WORKERS","NEXT_DEPLOYMENT_ID","deploymentId","appDocumentPreloading","isDefaultEnabled","isAppPath","catch","preloadEntriesOnStart","unstable_preloadEntries","dynamicRoutes","getRoutesManifest","map","r","regex","re","serverOptions","experimentalTestProxy","NEXT_PRIVATE_TEST_PROXY","interceptTestApis","middlewareManifestPath","serverDistDir","prepare","isExperimentalCompile","removeUncaughtErrorAndRejectionListeners","appPathsManifest","getAppPathsManifest","pagesManifest","getPagesManifest","loadCustomCacheHandlers","keys","ComponentMod","patchFetch","webpackRequire","__next_app__","m","handleUpgrade","loadInstrumentationModule","instrumentation","dir","cause","prepareImpl","runInstrumentationHookIfAvailable","register","forceReload","silent","cacheHandlers","handler","getIncrementalCache","requestHeaders","requestProtocol","CacheHandler","cacheHandler","getCacheFilesystem","allowedRevalidateHeaderKeys","fetchCacheKeyPrefix","maxMemoryCacheSize","cacheMaxMemorySize","flushToDisk","isrFlushToDisk","getPrerenderManifest","CurCacheHandler","getResponseCache","getPublicDir","getHasStaticDir","existsSync","enabledDirectories","app","getinterceptionRoutePatterns","routesManifest","rewrites","beforeFiles","filter","rewrite","RegExp","hasPage","locales","getBuildId","buildIdFile","readFileSync","trim","getEnabledDirectories","pages","type","generateEtags","poweredByHeader","runApi","handledAsEdgeFunction","parsedInitUrl","search","module","load","filename","waitUntil","getWaitUntil","renderHTML","trace","renderHTMLImpl","nextFontManifest","getServerComponentsHmrCache","buildId","customServer","isDraftMode","developmentNotFoundSourcePage","fetchExternalImage","fetchInternalImage","handleInternalReq","newReq","newRes","routerServerHandler","isAbsolute","imageUpstream","renderPageComponent","ctx","bubbleNoFallback","length","getOriginalAppPaths","findPageComponents","locale","spanName","attributes","findPageComponentsImpl","_url","pagePaths","amp","unshift","path","pagePath","components","Component","getStaticProps","getNextFontManifest","_err","_type","ensurePage","_opts","normalizeReq","normalizeRes","getRequestHandler","makeRequestHandler","wrapRequestHandlerNode","urlPath","revalidateHeaders","opts","mocked","hasStreamed","getHeader","unstable_onlyGenerated","internal","renderToHTML","renderErrorToResponseImpl","is404","clientOnly","includes","setHeaders","renderErrorToHTML","getMiddlewareManifest","manifest","middlewareModule","loadNodeMiddleware","config","regexp","originalSource","functions","getEdgeFunctionInfo","foundPage","pageInfo","name","paths","files","file","wasm","binding","filePath","assets","nodeMiddleware","functionsConfig","hasMiddleware","ensureEdgeFunction","_params","previewProps","isOnDemandRevalidate","Response","skipMiddlewareUrlNormalize","toString","fetchHostname","port","middlewareInfo","method","toUpperCase","requestData","basePath","trailingSlash","signal","adapterFn","run","edgeFunctionEntry","useCache","onWarning","has","cookies","getSetCookie","flatMap","maybeCompoundCookie","delete","cookie","append","_cachedPreviewManifest","afterFiles","fallback","attachRequestMeta","isUpgradeReq","protocol","trustHostHeader","host","edgeInfo","isNextDataRequest","initialUrl","URL","queryString","fromEntries","searchParams","onError","globalThis","__incrementalCache","serverComponentsHmrCache","fetchMetrics","statusMessage","statusText","forEach","toLowerCase","appendHeader","_serverDistDir","getFallbackErrorComponents","args","onServerClose","listener","add","close","runAll","getInternalWaitUntil","internalWaitUntil","createInternalWaitUntil","awaiter","awaiting"],"mappings":"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","ignoreList":[0]}
@@ -1,6 +1,6 @@
1
1
  export function isStableBuild() {
2
2
  var _process_env___NEXT_VERSION;
3
- return !((_process_env___NEXT_VERSION = "15.4.0-canary.7") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
3
+ return !((_process_env___NEXT_VERSION = "15.4.0-canary.8") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
4
4
  }
5
5
  export class CanaryOnlyError extends Error {
6
6
  constructor(arg){
@@ -985,9 +985,11 @@ class Server {
985
985
  * It is idempotent, won't fire underlying initialization more than once.
986
986
  */ async prepare() {
987
987
  if (this.prepared) return;
988
- if (this.preparedPromise === null) {
989
- // Get instrumentation module
988
+ // Get instrumentation module
989
+ if (!this.instrumentation) {
990
990
  this.instrumentation = await this.loadInstrumentationModule();
991
+ }
992
+ if (this.preparedPromise === null) {
991
993
  this.preparedPromise = this.prepareImpl().then(()=>{
992
994
  this.prepared = true;
993
995
  this.preparedPromise = null;