next 15.4.0-canary.98 → 15.4.0-canary.99

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 (58) 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-devtools/index.js +1 -1
  8. package/dist/compiled/next-devtools/index.js.map +1 -1
  9. package/dist/compiled/next-server/app-page-experimental.runtime.dev.js +2 -2
  10. package/dist/compiled/next-server/app-page-experimental.runtime.dev.js.map +1 -1
  11. package/dist/compiled/next-server/app-page-turbo.runtime.dev.js +2 -2
  12. package/dist/compiled/next-server/app-page-turbo.runtime.dev.js.map +1 -1
  13. package/dist/compiled/next-server/app-page.runtime.dev.js +2 -2
  14. package/dist/compiled/next-server/app-page.runtime.dev.js.map +1 -1
  15. package/dist/esm/build/index.js +2 -2
  16. package/dist/esm/build/swc/index.js +1 -1
  17. package/dist/esm/build/webpack-config.js +2 -2
  18. package/dist/esm/client/app-bootstrap.js +1 -1
  19. package/dist/esm/client/index.js +1 -1
  20. package/dist/esm/next-devtools/server/launch-editor.js +18 -0
  21. package/dist/esm/next-devtools/server/launch-editor.js.map +1 -1
  22. package/dist/esm/server/dev/hot-reloader-turbopack.js +6 -2
  23. package/dist/esm/server/dev/hot-reloader-turbopack.js.map +1 -1
  24. package/dist/esm/server/dev/hot-reloader-webpack.js +4 -2
  25. package/dist/esm/server/dev/hot-reloader-webpack.js.map +1 -1
  26. package/dist/esm/server/dev/middleware-turbopack.js +17 -11
  27. package/dist/esm/server/dev/middleware-turbopack.js.map +1 -1
  28. package/dist/esm/server/dev/middleware-webpack.js +19 -12
  29. package/dist/esm/server/dev/middleware-webpack.js.map +1 -1
  30. package/dist/esm/server/lib/app-info-log.js +1 -1
  31. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js +5 -1
  32. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  33. package/dist/esm/server/lib/start-server.js +1 -1
  34. package/dist/esm/shared/lib/canary-only.js +1 -1
  35. package/dist/next-devtools/server/launch-editor.d.ts +4 -0
  36. package/dist/next-devtools/server/launch-editor.js +22 -1
  37. package/dist/next-devtools/server/launch-editor.js.map +1 -1
  38. package/dist/server/dev/hot-reloader-turbopack.d.ts +3 -1
  39. package/dist/server/dev/hot-reloader-turbopack.js +6 -2
  40. package/dist/server/dev/hot-reloader-turbopack.js.map +1 -1
  41. package/dist/server/dev/hot-reloader-webpack.d.ts +3 -1
  42. package/dist/server/dev/hot-reloader-webpack.js +4 -2
  43. package/dist/server/dev/hot-reloader-webpack.js.map +1 -1
  44. package/dist/server/dev/middleware-turbopack.d.ts +5 -1
  45. package/dist/server/dev/middleware-turbopack.js +16 -51
  46. package/dist/server/dev/middleware-turbopack.js.map +1 -1
  47. package/dist/server/dev/middleware-webpack.d.ts +1 -0
  48. package/dist/server/dev/middleware-webpack.js +18 -11
  49. package/dist/server/dev/middleware-webpack.js.map +1 -1
  50. package/dist/server/lib/app-info-log.js +1 -1
  51. package/dist/server/lib/router-utils/setup-dev-bundler.js +5 -1
  52. package/dist/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  53. package/dist/server/lib/start-server.js +1 -1
  54. package/dist/shared/lib/canary-only.js +1 -1
  55. package/dist/telemetry/anonymous-meta.js +1 -1
  56. package/dist/telemetry/events/session-stopped.js +2 -2
  57. package/dist/telemetry/events/version.js +2 -2
  58. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/dev/hot-reloader-webpack.ts"],"sourcesContent":["import type { NextConfigComplete } from '../config-shared'\nimport type { CustomRoutes } from '../../lib/load-custom-routes'\nimport type { Duplex } from 'stream'\nimport type { Telemetry } from '../../telemetry/storage'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { UrlObject } from 'url'\nimport type { RouteDefinition } from '../route-definitions/route-definition'\n\nimport { type webpack, StringXor } from 'next/dist/compiled/webpack/webpack'\nimport {\n getOverlayMiddleware,\n getSourceMapMiddleware,\n} from './middleware-webpack'\nimport { WebpackHotMiddleware } from './hot-middleware'\nimport { join, relative, isAbsolute, posix, dirname } from 'path'\nimport {\n createEntrypoints,\n createPagesMapping,\n finalizeEntrypoint,\n getClientEntry,\n getEdgeServerEntry,\n getAppEntry,\n runDependingOnPageType,\n getStaticInfoIncludingLayouts,\n getInstrumentationEntry,\n} from '../../build/entries'\nimport { watchCompilers } from '../../build/output'\nimport * as Log from '../../build/output/log'\nimport getBaseWebpackConfig, {\n getCacheDirectories,\n loadProjectInfo,\n} from '../../build/webpack-config'\nimport { APP_DIR_ALIAS, WEBPACK_LAYERS } from '../../lib/constants'\nimport { recursiveDelete } from '../../lib/recursive-delete'\nimport {\n BLOCKED_PAGES,\n CLIENT_STATIC_FILES_RUNTIME_AMP,\n CLIENT_STATIC_FILES_RUNTIME_MAIN,\n CLIENT_STATIC_FILES_RUNTIME_MAIN_APP,\n CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH,\n COMPILER_NAMES,\n RSC_MODULE_TYPES,\n} from '../../shared/lib/constants'\nimport type { __ApiPreviewProps } from '../api-utils'\nimport { getPathMatch } from '../../shared/lib/router/utils/path-match'\nimport { findPageFile } from '../lib/find-page-file'\nimport {\n BUILDING,\n getEntries,\n EntryTypes,\n getInvalidator,\n onDemandEntryHandler,\n} from './on-demand-entry-handler'\nimport { denormalizePagePath } from '../../shared/lib/page-path/denormalize-page-path'\nimport { normalizePathSep } from '../../shared/lib/page-path/normalize-path-sep'\nimport getRouteFromEntrypoint from '../get-route-from-entrypoint'\nimport {\n difference,\n isInstrumentationHookFile,\n isMiddlewareFile,\n isMiddlewareFilename,\n} from '../../build/utils'\nimport { DecodeError } from '../../shared/lib/utils'\nimport { type Span, trace } from '../../trace'\nimport { getProperError } from '../../lib/is-error'\nimport ws from 'next/dist/compiled/ws'\nimport { existsSync, promises as fs } from 'fs'\nimport type { UnwrapPromise } from '../../lib/coalesced-function'\nimport { parseVersionInfo } from './parse-version-info'\nimport type { VersionInfo } from './parse-version-info'\nimport { isAPIRoute } from '../../lib/is-api-route'\nimport { getRouteLoaderEntry } from '../../build/webpack/loaders/next-route-loader'\nimport {\n isInternalComponent,\n isNonRoutePagesPage,\n} from '../../lib/is-internal-component'\nimport { RouteKind } from '../route-kind'\nimport {\n HMR_ACTIONS_SENT_TO_BROWSER,\n type NextJsHotReloaderInterface,\n} from './hot-reloader-types'\nimport type { HMR_ACTION_TYPES } from './hot-reloader-types'\nimport type { WebpackError } from 'webpack'\nimport { PAGE_TYPES } from '../../lib/page-types'\nimport { FAST_REFRESH_RUNTIME_RELOAD } from './messages'\nimport { getNodeDebugType } from '../lib/utils'\nimport { getNextErrorFeedbackMiddleware } from '../../next-devtools/server/get-next-error-feedback-middleware'\nimport { getDevOverlayFontMiddleware } from '../../next-devtools/server/font/get-dev-overlay-font-middleware'\nimport { getDisableDevIndicatorMiddleware } from '../../next-devtools/server/dev-indicator-middleware'\nimport getWebpackBundler from '../../shared/lib/get-webpack-bundler'\nimport { getRestartDevServerMiddleware } from '../../next-devtools/server/restart-dev-server-middleware'\nimport { checkPersistentCacheInvalidationAndCleanup } from '../../build/webpack/cache-invalidation'\n\nconst MILLISECONDS_IN_NANOSECOND = BigInt(1_000_000)\n\nfunction diff(a: Set<any>, b: Set<any>) {\n return new Set([...a].filter((v) => !b.has(v)))\n}\n\nconst wsServer = new ws.Server({ noServer: true })\n\nexport async function renderScriptError(\n res: ServerResponse,\n error: Error,\n { verbose = true } = {}\n): Promise<{ finished: true | undefined }> {\n // Asks CDNs and others to not to cache the errored page\n res.setHeader(\n 'Cache-Control',\n 'no-cache, no-store, max-age=0, must-revalidate'\n )\n\n if ((error as any).code === 'ENOENT') {\n return { finished: undefined }\n }\n\n if (verbose) {\n console.error(error.stack)\n }\n res.statusCode = 500\n res.end('500 - Internal Error')\n return { finished: true }\n}\n\nfunction addCorsSupport(req: IncomingMessage, res: ServerResponse) {\n // Only rewrite CORS handling when URL matches a hot-reloader middleware\n if (!req.url!.startsWith('/__next')) {\n return { preflight: false }\n }\n\n if (!req.headers.origin) {\n return { preflight: false }\n }\n\n res.setHeader('Access-Control-Allow-Origin', req.headers.origin)\n res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET')\n // Based on https://github.com/primus/access-control/blob/4cf1bc0e54b086c91e6aa44fb14966fa5ef7549c/index.js#L158\n if (req.headers['access-control-request-headers']) {\n res.setHeader(\n 'Access-Control-Allow-Headers',\n req.headers['access-control-request-headers'] as string\n )\n }\n\n if (req.method === 'OPTIONS') {\n res.writeHead(200)\n res.end()\n return { preflight: true }\n }\n\n return { preflight: false }\n}\n\nexport const matchNextPageBundleRequest = getPathMatch(\n '/_next/static/chunks/pages/:path*.js(\\\\.map|)'\n)\n\n// Iteratively look up the issuer till it ends up at the root\nfunction findEntryModule(\n module: webpack.Module,\n compilation: webpack.Compilation\n): any {\n for (;;) {\n const issuer = compilation.moduleGraph.getIssuer(module)\n if (!issuer) return module\n module = issuer\n }\n}\n\nfunction erroredPages(compilation: webpack.Compilation) {\n const failedPages: { [page: string]: WebpackError[] } = {}\n for (const error of compilation.errors) {\n if (!error.module) {\n continue\n }\n\n const entryModule = findEntryModule(error.module, compilation)\n const { name } = entryModule\n if (!name) {\n continue\n }\n\n // Only pages have to be reloaded\n const enhancedName = getRouteFromEntrypoint(name)\n\n if (!enhancedName) {\n continue\n }\n\n if (!failedPages[enhancedName]) {\n failedPages[enhancedName] = []\n }\n\n failedPages[enhancedName].push(error)\n }\n\n return failedPages\n}\n\nexport async function getVersionInfo(): Promise<VersionInfo> {\n let installed = '0.0.0'\n\n try {\n installed = require('next/package.json').version\n\n let res\n\n try {\n // use NPM registry regardless user using Yarn\n res = await fetch('https://registry.npmjs.org/-/package/next/dist-tags')\n } catch {\n // ignore fetch errors\n }\n\n if (!res || !res.ok) return { installed, staleness: 'unknown' }\n\n const { latest, canary } = await res.json()\n\n return parseVersionInfo({ installed, latest, canary })\n } catch (e: any) {\n console.error(e)\n return { installed, staleness: 'unknown' }\n }\n}\n\nexport default class HotReloaderWebpack implements NextJsHotReloaderInterface {\n private hasAmpEntrypoints: boolean\n private hasAppRouterEntrypoints: boolean\n private hasPagesRouterEntrypoints: boolean\n private dir: string\n private buildId: string\n private encryptionKey: string\n private middlewares: ((\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ) => Promise<void>)[]\n private pagesDir?: string\n private distDir: string\n private webpackHotMiddleware?: WebpackHotMiddleware\n private config: NextConfigComplete\n private clientStats: webpack.Stats | null\n private clientError: Error | null = null\n private serverError: Error | null = null\n private hmrServerError: Error | null = null\n private serverPrevDocumentHash: string | null\n private serverChunkNames?: Set<string>\n private prevChunkNames?: Set<any>\n private onDemandEntries?: ReturnType<typeof onDemandEntryHandler>\n private previewProps: __ApiPreviewProps\n private watcher: any\n private rewrites: CustomRoutes['rewrites']\n private fallbackWatcher: any\n private hotReloaderSpan: Span\n private pagesMapping: { [key: string]: string } = {}\n private appDir?: string\n private telemetry: Telemetry\n private resetFetch: () => void\n private versionInfo: VersionInfo = {\n staleness: 'unknown',\n installed: '0.0.0',\n }\n private devtoolsFrontendUrl: string | undefined\n private reloadAfterInvalidation: boolean = false\n\n public serverStats: webpack.Stats | null\n public edgeServerStats: webpack.Stats | null\n public multiCompiler?: webpack.MultiCompiler\n public activeWebpackConfigs?: Array<\n UnwrapPromise<ReturnType<typeof getBaseWebpackConfig>>\n >\n\n constructor(\n dir: string,\n {\n config,\n pagesDir,\n distDir,\n buildId,\n encryptionKey,\n previewProps,\n rewrites,\n appDir,\n telemetry,\n resetFetch,\n }: {\n config: NextConfigComplete\n pagesDir?: string\n distDir: string\n buildId: string\n encryptionKey: string\n previewProps: __ApiPreviewProps\n rewrites: CustomRoutes['rewrites']\n appDir?: string\n telemetry: Telemetry\n resetFetch: () => void\n }\n ) {\n this.hasAmpEntrypoints = false\n this.hasAppRouterEntrypoints = false\n this.hasPagesRouterEntrypoints = false\n this.buildId = buildId\n this.encryptionKey = encryptionKey\n this.dir = dir\n this.middlewares = []\n this.pagesDir = pagesDir\n this.appDir = appDir\n this.distDir = distDir\n this.clientStats = null\n this.serverStats = null\n this.edgeServerStats = null\n this.serverPrevDocumentHash = null\n this.telemetry = telemetry\n this.resetFetch = resetFetch\n\n this.config = config\n this.previewProps = previewProps\n this.rewrites = rewrites\n this.hotReloaderSpan = trace('hot-reloader', undefined, {\n version: process.env.__NEXT_VERSION as string,\n })\n // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing\n // of the current `next dev` invocation.\n this.hotReloaderSpan.stop()\n }\n\n public async run(\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl: UrlObject\n ): Promise<{ finished?: true }> {\n // Usually CORS support is not needed for the hot-reloader (this is dev only feature)\n // With when the app runs for multi-zones support behind a proxy,\n // the current page is trying to access this URL via assetPrefix.\n // That's when the CORS support is needed.\n const { preflight } = addCorsSupport(req, res)\n if (preflight) {\n return {}\n }\n\n // When a request comes in that is a page bundle, e.g. /_next/static/<buildid>/pages/index.js\n // we have to compile the page using on-demand-entries, this middleware will handle doing that\n // by adding the page to on-demand-entries, waiting till it's done\n // and then the bundle will be served like usual by the actual route in server/index.js\n const handlePageBundleRequest = async (\n pageBundleRes: ServerResponse,\n parsedPageBundleUrl: UrlObject\n ): Promise<{ finished?: true }> => {\n const { pathname } = parsedPageBundleUrl\n if (!pathname) return {}\n\n const params = matchNextPageBundleRequest(pathname)\n if (!params) return {}\n\n let decodedPagePath: string\n\n try {\n decodedPagePath = `/${params.path\n .map((param: string) => decodeURIComponent(param))\n .join('/')}`\n } catch (_) {\n throw new DecodeError('failed to decode param')\n }\n\n const page = denormalizePagePath(decodedPagePath)\n\n if (page === '/_error' || BLOCKED_PAGES.indexOf(page) === -1) {\n try {\n await this.ensurePage({ page, clientOnly: true, url: req.url })\n } catch (error) {\n return await renderScriptError(pageBundleRes, getProperError(error))\n }\n\n const errors = await this.getCompilationErrors(page)\n if (errors.length > 0) {\n return await renderScriptError(pageBundleRes, errors[0], {\n verbose: false,\n })\n }\n }\n\n return {}\n }\n\n const { finished } = await handlePageBundleRequest(res, parsedUrl)\n\n for (const middleware of this.middlewares) {\n let calledNext = false\n\n await middleware(req, res, () => {\n calledNext = true\n })\n\n if (!calledNext) {\n return { finished: true }\n }\n }\n\n return { finished }\n }\n\n public setHmrServerError(error: Error | null): void {\n this.hmrServerError = error\n }\n\n public clearHmrServerError(): void {\n if (this.hmrServerError) {\n this.setHmrServerError(null)\n this.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE,\n data: 'clear hmr server error',\n })\n }\n }\n\n protected async refreshServerComponents(hash: string): Promise<void> {\n this.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES,\n hash,\n // TODO: granular reloading of changes\n // entrypoints: serverComponentChanges,\n })\n }\n\n public onHMR(\n req: IncomingMessage,\n _socket: Duplex,\n head: Buffer,\n callback: (client: ws.WebSocket) => void\n ) {\n wsServer.handleUpgrade(req, req.socket, head, (client) => {\n this.webpackHotMiddleware?.onHMR(client)\n this.onDemandEntries?.onHMR(client, () => this.hmrServerError)\n callback(client)\n\n client.addEventListener('message', ({ data }) => {\n data = typeof data !== 'string' ? data.toString() : data\n\n try {\n const payload = JSON.parse(data)\n\n let traceChild:\n | {\n name: string\n startTime?: bigint\n endTime?: bigint\n attrs?: Record<string, number | string | undefined | string[]>\n }\n | undefined\n\n switch (payload.event) {\n case 'span-end': {\n traceChild = {\n name: payload.spanName,\n startTime:\n BigInt(Math.floor(payload.startTime)) *\n MILLISECONDS_IN_NANOSECOND,\n attrs: payload.attributes,\n endTime:\n BigInt(Math.floor(payload.endTime)) *\n MILLISECONDS_IN_NANOSECOND,\n }\n break\n }\n case 'client-hmr-latency': {\n traceChild = {\n name: payload.event,\n startTime:\n BigInt(payload.startTime) * MILLISECONDS_IN_NANOSECOND,\n endTime: BigInt(payload.endTime) * MILLISECONDS_IN_NANOSECOND,\n attrs: {\n updatedModules: payload.updatedModules.map((m: string) =>\n m\n .replace(`(${WEBPACK_LAYERS.appPagesBrowser})/`, '')\n .replace(/^\\.\\//, '[project]/')\n ),\n page: payload.page,\n isPageHidden: payload.isPageHidden,\n },\n }\n break\n }\n case 'client-reload-page':\n case 'client-success': {\n traceChild = {\n name: payload.event,\n }\n break\n }\n case 'client-error': {\n traceChild = {\n name: payload.event,\n attrs: { errorCount: payload.errorCount },\n }\n break\n }\n case 'client-warning': {\n traceChild = {\n name: payload.event,\n attrs: { warningCount: payload.warningCount },\n }\n break\n }\n case 'client-removed-page':\n case 'client-added-page': {\n traceChild = {\n name: payload.event,\n attrs: { page: payload.page || '' },\n }\n break\n }\n case 'client-full-reload': {\n const { event, stackTrace, hadRuntimeError } = payload\n\n traceChild = {\n name: event,\n attrs: { stackTrace: stackTrace ?? '' },\n }\n\n if (hadRuntimeError) {\n Log.warn(FAST_REFRESH_RUNTIME_RELOAD)\n break\n }\n\n let fileMessage = ''\n if (stackTrace) {\n const file = /Aborted because (.+) is not accepted/.exec(\n stackTrace\n )?.[1]\n if (file) {\n // `file` is filepath in `pages/` but it can be a webpack url.\n // If it's a webpack loader URL, it will include the app-pages layer\n if (file.startsWith(`(${WEBPACK_LAYERS.appPagesBrowser})/`)) {\n const fileUrl = new URL(file, 'file://')\n const cwd = process.cwd()\n const modules = fileUrl.searchParams\n .getAll('modules')\n .map((filepath) => filepath.slice(cwd.length + 1))\n .filter(\n (filepath) => !filepath.startsWith('node_modules')\n )\n\n if (modules.length > 0) {\n fileMessage = ` when ${modules.join(', ')} changed`\n }\n } else if (\n // Handle known webpack layers\n file.startsWith(`(${WEBPACK_LAYERS.pagesDirBrowser})/`)\n ) {\n const cleanedFilePath = file.slice(\n `(${WEBPACK_LAYERS.pagesDirBrowser})/`.length\n )\n\n fileMessage = ` when ${cleanedFilePath} changed`\n } else {\n fileMessage = ` when ${file} changed`\n }\n }\n }\n\n Log.warn(\n `Fast Refresh had to perform a full reload${fileMessage}. Read more: https://nextjs.org/docs/messages/fast-refresh-reload`\n )\n break\n }\n default: {\n break\n }\n }\n\n if (traceChild) {\n this.hotReloaderSpan.manualTraceChild(\n traceChild.name,\n traceChild.startTime,\n traceChild.endTime,\n { ...traceChild.attrs, clientId: payload.id }\n )\n }\n } catch (_) {\n // invalid WebSocket message\n }\n })\n })\n }\n\n private async clean(span: Span): Promise<void> {\n return span\n .traceChild('clean')\n .traceAsyncFn(() =>\n recursiveDelete(join(this.dir, this.config.distDir), /^cache/)\n )\n }\n\n private async getWebpackConfig(span: Span) {\n const webpackConfigSpan = span.traceChild('get-webpack-config')\n\n const pageExtensions = this.config.pageExtensions\n\n return webpackConfigSpan.traceAsyncFn(async () => {\n const pagePaths = !this.pagesDir\n ? ([] as (string | null)[])\n : await webpackConfigSpan\n .traceChild('get-page-paths')\n .traceAsyncFn(() =>\n Promise.all([\n findPageFile(this.pagesDir!, '/_app', pageExtensions, false),\n findPageFile(\n this.pagesDir!,\n '/_document',\n pageExtensions,\n false\n ),\n ])\n )\n\n this.pagesMapping = await webpackConfigSpan\n .traceChild('create-pages-mapping')\n .traceAsyncFn(() =>\n createPagesMapping({\n isDev: true,\n pageExtensions: this.config.pageExtensions,\n pagesType: PAGE_TYPES.PAGES,\n pagePaths: pagePaths.filter(\n (i: string | null): i is string => typeof i === 'string'\n ),\n pagesDir: this.pagesDir,\n appDir: this.appDir,\n })\n )\n\n const entrypoints = await webpackConfigSpan\n .traceChild('create-entrypoints')\n .traceAsyncFn(() =>\n createEntrypoints({\n appDir: this.appDir,\n buildId: this.buildId,\n config: this.config,\n envFiles: [],\n isDev: true,\n pages: this.pagesMapping,\n pagesDir: this.pagesDir,\n previewMode: this.previewProps,\n rootDir: this.dir,\n pageExtensions: this.config.pageExtensions,\n })\n )\n\n const commonWebpackOptions = {\n dev: true,\n buildId: this.buildId,\n encryptionKey: this.encryptionKey,\n config: this.config,\n pagesDir: this.pagesDir,\n rewrites: this.rewrites,\n originalRewrites: this.config._originalRewrites,\n originalRedirects: this.config._originalRedirects,\n runWebpackSpan: this.hotReloaderSpan,\n appDir: this.appDir,\n previewProps: this.previewProps,\n }\n\n return webpackConfigSpan\n .traceChild('generate-webpack-config')\n .traceAsyncFn(async () => {\n const info = await loadProjectInfo({\n dir: this.dir,\n config: commonWebpackOptions.config,\n dev: true,\n })\n return Promise.all([\n // order is important here\n getBaseWebpackConfig(this.dir, {\n ...commonWebpackOptions,\n compilerType: COMPILER_NAMES.client,\n entrypoints: entrypoints.client,\n ...info,\n }),\n getBaseWebpackConfig(this.dir, {\n ...commonWebpackOptions,\n compilerType: COMPILER_NAMES.server,\n entrypoints: entrypoints.server,\n ...info,\n }),\n getBaseWebpackConfig(this.dir, {\n ...commonWebpackOptions,\n compilerType: COMPILER_NAMES.edgeServer,\n entrypoints: entrypoints.edgeServer,\n ...info,\n }),\n ])\n })\n })\n }\n\n public async buildFallbackError(): Promise<void> {\n if (this.fallbackWatcher) return\n\n const info = await loadProjectInfo({\n dir: this.dir,\n config: this.config,\n dev: true,\n })\n const fallbackConfig = await getBaseWebpackConfig(this.dir, {\n previewProps: this.previewProps,\n runWebpackSpan: this.hotReloaderSpan,\n dev: true,\n compilerType: COMPILER_NAMES.client,\n config: this.config,\n buildId: this.buildId,\n encryptionKey: this.encryptionKey,\n appDir: this.appDir,\n pagesDir: this.pagesDir,\n rewrites: {\n beforeFiles: [],\n afterFiles: [],\n fallback: [],\n },\n originalRewrites: {\n beforeFiles: [],\n afterFiles: [],\n fallback: [],\n },\n originalRedirects: [],\n isDevFallback: true,\n entrypoints: (\n await createEntrypoints({\n appDir: this.appDir,\n buildId: this.buildId,\n config: this.config,\n envFiles: [],\n isDev: true,\n pages: {\n '/_app': 'next/dist/pages/_app',\n '/_error': 'next/dist/pages/_error',\n },\n pagesDir: this.pagesDir,\n previewMode: this.previewProps,\n rootDir: this.dir,\n pageExtensions: this.config.pageExtensions,\n })\n ).client,\n ...info,\n })\n\n const fallbackCompiler = getWebpackBundler()(fallbackConfig)\n\n this.fallbackWatcher = await new Promise((resolve) => {\n let bootedFallbackCompiler = false\n fallbackCompiler.watch(\n // @ts-ignore webpack supports an array of watchOptions when using a multiCompiler\n fallbackConfig.watchOptions,\n // Errors are handled separately\n (_err: any) => {\n if (!bootedFallbackCompiler) {\n bootedFallbackCompiler = true\n resolve(true)\n }\n }\n )\n })\n }\n\n private async tracedGetVersionInfo(span: Span) {\n const versionInfoSpan = span.traceChild('get-version-info')\n return versionInfoSpan.traceAsyncFn<VersionInfo>(async () =>\n getVersionInfo()\n )\n }\n\n public async start(): Promise<void> {\n const startSpan = this.hotReloaderSpan.traceChild('start')\n startSpan.stop() // Stop immediately to create an artificial parent span\n\n this.versionInfo = await this.tracedGetVersionInfo(startSpan)\n\n const nodeDebugType = getNodeDebugType()\n if (nodeDebugType && !this.devtoolsFrontendUrl) {\n const debugPort = process.debugPort\n let debugInfo\n try {\n // It requires to use 127.0.0.1 instead of localhost for server-side fetching.\n const debugInfoList = await fetch(\n `http://127.0.0.1:${debugPort}/json/list`\n ).then((res) => res.json())\n // There will be only one item for current process, so always get the first item.\n debugInfo = debugInfoList[0]\n } catch {}\n if (debugInfo) {\n this.devtoolsFrontendUrl = debugInfo.devtoolsFrontendUrl\n }\n }\n\n await this.clean(startSpan)\n // Ensure distDir exists before writing package.json\n await fs.mkdir(this.distDir, { recursive: true })\n\n const distPackageJsonPath = join(this.distDir, 'package.json')\n // Ensure commonjs handling is used for files in the distDir (generally .next)\n // Files outside of the distDir can be \"type\": \"module\"\n await fs.writeFile(distPackageJsonPath, '{\"type\": \"commonjs\"}')\n\n this.activeWebpackConfigs = await this.getWebpackConfig(startSpan)\n\n for (const config of this.activeWebpackConfigs) {\n const defaultEntry = config.entry\n config.entry = async (...args) => {\n const outputPath = this.multiCompiler?.outputPath || ''\n const entries = getEntries(outputPath)\n // @ts-ignore entry is always a function\n const entrypoints = await defaultEntry(...args)\n const isClientCompilation = config.name === COMPILER_NAMES.client\n const isNodeServerCompilation = config.name === COMPILER_NAMES.server\n const isEdgeServerCompilation =\n config.name === COMPILER_NAMES.edgeServer\n\n await Promise.all(\n Object.keys(entries).map(async (entryKey) => {\n const entryData = entries[entryKey]\n const { bundlePath, dispose } = entryData\n\n const result =\n /^(client|server|edge-server)@(app|pages|root)@(.*)/g.exec(\n entryKey\n )\n const [, key /* pageType */, , page] = result! // this match should always happen\n\n if (key === COMPILER_NAMES.client && !isClientCompilation) return\n if (key === COMPILER_NAMES.server && !isNodeServerCompilation)\n return\n if (key === COMPILER_NAMES.edgeServer && !isEdgeServerCompilation)\n return\n\n const isEntry = entryData.type === EntryTypes.ENTRY\n const isChildEntry = entryData.type === EntryTypes.CHILD_ENTRY\n\n // Check if the page was removed or disposed and remove it\n if (isEntry) {\n const pageExists =\n !dispose && existsSync(entryData.absolutePagePath)\n if (!pageExists) {\n delete entries[entryKey]\n return\n }\n }\n\n // For child entries, if it has an entry file and it's gone, remove it\n if (isChildEntry) {\n if (entryData.absoluteEntryFilePath) {\n const pageExists =\n !dispose && existsSync(entryData.absoluteEntryFilePath)\n if (!pageExists) {\n delete entries[entryKey]\n return\n }\n }\n }\n\n // Ensure _error is considered a `pages` page.\n if (page === '/_error') {\n this.hasPagesRouterEntrypoints = true\n }\n\n const hasAppDir = !!this.appDir\n const isAppPath = hasAppDir && bundlePath.startsWith('app/')\n const staticInfo = isEntry\n ? await getStaticInfoIncludingLayouts({\n isInsideAppDir: isAppPath,\n pageExtensions: this.config.pageExtensions,\n pageFilePath: entryData.absolutePagePath,\n appDir: this.appDir,\n config: this.config,\n isDev: true,\n page,\n })\n : undefined\n\n if (staticInfo?.type === PAGE_TYPES.PAGES) {\n if (\n staticInfo.config?.config?.amp === true ||\n staticInfo.config?.config?.amp === 'hybrid'\n ) {\n this.hasAmpEntrypoints = true\n }\n }\n\n const isServerComponent =\n isAppPath && staticInfo?.rsc !== RSC_MODULE_TYPES.client\n\n const pageType: PAGE_TYPES = entryData.bundlePath.startsWith(\n 'pages/'\n )\n ? PAGE_TYPES.PAGES\n : entryData.bundlePath.startsWith('app/')\n ? PAGE_TYPES.APP\n : PAGE_TYPES.ROOT\n\n if (pageType === 'pages') {\n this.hasPagesRouterEntrypoints = true\n }\n if (pageType === 'app') {\n this.hasAppRouterEntrypoints = true\n }\n\n const isInstrumentation =\n isInstrumentationHookFile(page) && pageType === PAGE_TYPES.ROOT\n\n let pageRuntime = staticInfo?.runtime\n\n if (\n isMiddlewareFile(page) &&\n !this.config.experimental.nodeMiddleware &&\n pageRuntime === 'nodejs'\n ) {\n Log.warn(\n 'nodejs runtime support for middleware requires experimental.nodeMiddleware be enabled in your next.config'\n )\n pageRuntime = 'edge'\n }\n\n runDependingOnPageType({\n page,\n pageRuntime,\n pageType,\n onEdgeServer: () => {\n // TODO-APP: verify if child entry should support.\n if (!isEdgeServerCompilation || !isEntry) return\n entries[entryKey].status = BUILDING\n\n if (isInstrumentation) {\n const normalizedBundlePath = bundlePath.replace('src/', '')\n entrypoints[normalizedBundlePath] = finalizeEntrypoint({\n compilerType: COMPILER_NAMES.edgeServer,\n name: normalizedBundlePath,\n value: getInstrumentationEntry({\n absolutePagePath: entryData.absolutePagePath,\n isEdgeServer: true,\n isDev: true,\n }),\n isServerComponent: true,\n hasAppDir,\n })\n return\n }\n const appDirLoader = isAppPath\n ? getAppEntry({\n name: bundlePath,\n page,\n appPaths: entryData.appPaths,\n pagePath: posix.join(\n APP_DIR_ALIAS,\n relative(\n this.appDir!,\n entryData.absolutePagePath\n ).replace(/\\\\/g, '/')\n ),\n appDir: this.appDir!,\n pageExtensions: this.config.pageExtensions,\n rootDir: this.dir,\n isDev: true,\n tsconfigPath: this.config.typescript.tsconfigPath,\n basePath: this.config.basePath,\n assetPrefix: this.config.assetPrefix,\n nextConfigOutput: this.config.output,\n preferredRegion: staticInfo?.preferredRegion,\n middlewareConfig: Buffer.from(\n JSON.stringify(staticInfo?.middleware || {})\n ).toString('base64'),\n isGlobalNotFoundEnabled: this.config.experimental\n .globalNotFound\n ? true\n : undefined,\n }).import\n : undefined\n\n entrypoints[bundlePath] = finalizeEntrypoint({\n compilerType: COMPILER_NAMES.edgeServer,\n name: bundlePath,\n value: getEdgeServerEntry({\n absolutePagePath: entryData.absolutePagePath,\n rootDir: this.dir,\n buildId: this.buildId,\n bundlePath,\n config: this.config,\n isDev: true,\n page,\n pages: this.pagesMapping,\n isServerComponent,\n appDirLoader,\n pagesType: isAppPath ? PAGE_TYPES.APP : PAGE_TYPES.PAGES,\n preferredRegion: staticInfo?.preferredRegion,\n }),\n hasAppDir,\n })\n },\n onClient: () => {\n if (!isClientCompilation) return\n if (isChildEntry) {\n entries[entryKey].status = BUILDING\n entrypoints[bundlePath] = finalizeEntrypoint({\n name: bundlePath,\n compilerType: COMPILER_NAMES.client,\n value: entryData.request,\n hasAppDir,\n })\n } else {\n entries[entryKey].status = BUILDING\n entrypoints[bundlePath] = finalizeEntrypoint({\n name: bundlePath,\n compilerType: COMPILER_NAMES.client,\n value: getClientEntry({\n absolutePagePath: entryData.absolutePagePath,\n page,\n }),\n hasAppDir,\n })\n }\n },\n onServer: () => {\n // TODO-APP: verify if child entry should support.\n if (!isNodeServerCompilation || !isEntry) return\n entries[entryKey].status = BUILDING\n let relativeRequest = relative(\n config.context!,\n entryData.absolutePagePath\n )\n if (\n !isAbsolute(relativeRequest) &&\n !relativeRequest.startsWith('../')\n ) {\n relativeRequest = `./${relativeRequest}`\n }\n\n let value: { import: string; layer?: string } | string\n if (isInstrumentation) {\n value = getInstrumentationEntry({\n absolutePagePath: entryData.absolutePagePath,\n isEdgeServer: false,\n isDev: true,\n })\n entrypoints[bundlePath] = finalizeEntrypoint({\n compilerType: COMPILER_NAMES.server,\n name: bundlePath,\n isServerComponent: true,\n value,\n hasAppDir,\n })\n } else if (isMiddlewareFile(page)) {\n value = getEdgeServerEntry({\n absolutePagePath: entryData.absolutePagePath,\n rootDir: this.dir,\n buildId: this.buildId,\n bundlePath,\n config: this.config,\n isDev: true,\n page,\n pages: this.pagesMapping,\n isServerComponent,\n pagesType: PAGE_TYPES.PAGES,\n preferredRegion: staticInfo?.preferredRegion,\n })\n } else if (isAppPath) {\n // This path normalization is critical for webpack to resolve the next internals as entry.\n const pagePath = entryData.absolutePagePath.startsWith(\n dirname(require.resolve('next/package.json'))\n )\n ? entryData.absolutePagePath\n : posix.join(\n APP_DIR_ALIAS,\n relative(\n this.appDir!,\n entryData.absolutePagePath\n ).replace(/\\\\/g, '/')\n )\n value = getAppEntry({\n name: bundlePath,\n page,\n appPaths: entryData.appPaths,\n pagePath,\n appDir: this.appDir!,\n pageExtensions: this.config.pageExtensions,\n rootDir: this.dir,\n isDev: true,\n tsconfigPath: this.config.typescript.tsconfigPath,\n basePath: this.config.basePath,\n assetPrefix: this.config.assetPrefix,\n nextConfigOutput: this.config.output,\n preferredRegion: staticInfo?.preferredRegion,\n middlewareConfig: Buffer.from(\n JSON.stringify(staticInfo?.middleware || {})\n ).toString('base64'),\n isGlobalNotFoundEnabled: this.config.experimental\n .globalNotFound\n ? true\n : undefined,\n })\n } else if (isAPIRoute(page)) {\n value = getRouteLoaderEntry({\n kind: RouteKind.PAGES_API,\n page,\n absolutePagePath: relativeRequest,\n preferredRegion: staticInfo?.preferredRegion,\n middlewareConfig: staticInfo?.middleware || {},\n })\n } else if (\n !isMiddlewareFile(page) &&\n !isInternalComponent(relativeRequest) &&\n !isNonRoutePagesPage(page) &&\n !isInstrumentation\n ) {\n value = getRouteLoaderEntry({\n kind: RouteKind.PAGES,\n page,\n pages: this.pagesMapping,\n absolutePagePath: relativeRequest,\n preferredRegion: staticInfo?.preferredRegion,\n middlewareConfig: staticInfo?.middleware ?? {},\n })\n } else {\n value = relativeRequest\n }\n\n entrypoints[bundlePath] = finalizeEntrypoint({\n compilerType: COMPILER_NAMES.server,\n name: bundlePath,\n isServerComponent,\n value,\n hasAppDir,\n })\n },\n })\n })\n )\n\n if (!this.hasAmpEntrypoints) {\n delete entrypoints[CLIENT_STATIC_FILES_RUNTIME_AMP]\n }\n if (!this.hasPagesRouterEntrypoints) {\n delete entrypoints[CLIENT_STATIC_FILES_RUNTIME_MAIN]\n delete entrypoints['pages/_app']\n delete entrypoints['pages/_error']\n delete entrypoints['/_error']\n delete entrypoints['pages/_document']\n }\n // Remove React Refresh entrypoint chunk as `app` doesn't require it.\n if (!this.hasAmpEntrypoints && !this.hasPagesRouterEntrypoints) {\n delete entrypoints[CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH]\n }\n if (!this.hasAppRouterEntrypoints) {\n delete entrypoints[CLIENT_STATIC_FILES_RUNTIME_MAIN_APP]\n }\n\n return entrypoints\n }\n }\n\n // Enable building of client compilation before server compilation in development\n // @ts-ignore webpack 5\n this.activeWebpackConfigs.parallelism = 1\n\n await Promise.all(\n Array.from(getCacheDirectories(this.activeWebpackConfigs)).map(\n checkPersistentCacheInvalidationAndCleanup\n )\n )\n this.multiCompiler = getWebpackBundler()(\n this.activeWebpackConfigs\n ) as unknown as webpack.MultiCompiler\n\n // Copy over the filesystem so that it is shared between all compilers.\n const inputFileSystem = this.multiCompiler.compilers[0].inputFileSystem\n for (const compiler of this.multiCompiler.compilers) {\n compiler.inputFileSystem = inputFileSystem\n // This is set for the initial compile. After that Watching class in webpack adds it.\n compiler.fsStartTime = Date.now()\n // Ensure NodeEnvironmentPlugin doesn't purge the inputFileSystem. Purging is handled in `done` below.\n compiler.hooks.beforeRun.intercept({\n register(tapInfo: any) {\n if (tapInfo.name === 'NodeEnvironmentPlugin') {\n return null\n }\n return tapInfo\n },\n })\n }\n\n this.multiCompiler.hooks.done.tap('NextjsHotReloader', () => {\n inputFileSystem?.purge?.()\n })\n watchCompilers(\n this.multiCompiler.compilers[0],\n this.multiCompiler.compilers[1],\n this.multiCompiler.compilers[2]\n )\n\n // Watch for changes to client/server page files so we can tell when just\n // the server file changes and trigger a reload for GS(S)P pages\n const changedClientPages = new Set<string>()\n const changedServerPages = new Set<string>()\n const changedEdgeServerPages = new Set<string>()\n\n const changedServerComponentPages = new Set<string>()\n const changedCSSImportPages = new Set<string>()\n\n const prevClientPageHashes = new Map<string, string>()\n const prevServerPageHashes = new Map<string, string>()\n const prevEdgeServerPageHashes = new Map<string, string>()\n const prevCSSImportModuleHashes = new Map<string, string>()\n\n const pageExtensionRegex = new RegExp(\n `\\\\.(?:${this.config.pageExtensions.join('|')})$`\n )\n\n const trackPageChanges =\n (\n pageHashMap: Map<string, string>,\n changedItems: Set<string>,\n serverComponentChangedItems?: Set<string>\n ) =>\n (stats: webpack.Compilation) => {\n try {\n stats.entrypoints.forEach((entry, key) => {\n if (\n key.startsWith('pages/') ||\n key.startsWith('app/') ||\n isMiddlewareFilename(key)\n ) {\n // TODO this doesn't handle on demand loaded chunks\n entry.chunks.forEach((chunk) => {\n if (chunk.id === key) {\n const modsIterable: any =\n stats.chunkGraph.getChunkModulesIterable(chunk)\n\n let hasCSSModuleChanges = false\n let chunksHash = new StringXor()\n let chunksHashServerLayer = new StringXor()\n\n modsIterable.forEach((mod: any) => {\n if (\n mod.resource &&\n mod.resource.replace(/\\\\/g, '/').includes(key) &&\n // Shouldn't match CSS modules, etc.\n pageExtensionRegex.test(mod.resource)\n ) {\n // use original source to calculate hash since mod.hash\n // includes the source map in development which changes\n // every time for both server and client so we calculate\n // the hash without the source map for the page module\n const hash = (\n require('crypto') as typeof import('crypto')\n )\n .createHash('sha1')\n .update(mod.originalSource().buffer())\n .digest()\n .toString('hex')\n\n if (\n mod.layer === WEBPACK_LAYERS.reactServerComponents &&\n mod?.buildInfo?.rsc?.type !== 'client'\n ) {\n chunksHashServerLayer.add(hash)\n }\n\n chunksHash.add(hash)\n } else {\n // for non-pages we can use the module hash directly\n const hash = stats.chunkGraph.getModuleHash(\n mod,\n chunk.runtime\n )\n\n if (\n mod.layer === WEBPACK_LAYERS.reactServerComponents &&\n mod?.buildInfo?.rsc?.type !== 'client'\n ) {\n chunksHashServerLayer.add(hash)\n }\n\n chunksHash.add(hash)\n\n // Both CSS import changes from server and client\n // components are tracked.\n if (\n key.startsWith('app/') &&\n /\\.(css|scss|sass)$/.test(mod.resource || '')\n ) {\n const resourceKey = mod.layer + ':' + mod.resource\n const prevHash =\n prevCSSImportModuleHashes.get(resourceKey)\n if (prevHash && prevHash !== hash) {\n hasCSSModuleChanges = true\n }\n prevCSSImportModuleHashes.set(resourceKey, hash)\n }\n }\n })\n\n const prevHash = pageHashMap.get(key)\n const curHash = chunksHash.toString()\n if (prevHash && prevHash !== curHash) {\n changedItems.add(key)\n }\n pageHashMap.set(key, curHash)\n\n if (serverComponentChangedItems) {\n const serverKey =\n WEBPACK_LAYERS.reactServerComponents + ':' + key\n const prevServerHash = pageHashMap.get(serverKey)\n const curServerHash = chunksHashServerLayer.toString()\n if (prevServerHash && prevServerHash !== curServerHash) {\n serverComponentChangedItems.add(key)\n }\n pageHashMap.set(serverKey, curServerHash)\n }\n\n if (hasCSSModuleChanges) {\n changedCSSImportPages.add(key)\n }\n }\n })\n }\n })\n } catch (err) {\n console.error(err)\n }\n }\n\n this.multiCompiler.compilers[0].hooks.emit.tap(\n 'NextjsHotReloaderForClient',\n trackPageChanges(prevClientPageHashes, changedClientPages)\n )\n this.multiCompiler.compilers[1].hooks.emit.tap(\n 'NextjsHotReloaderForServer',\n trackPageChanges(\n prevServerPageHashes,\n changedServerPages,\n changedServerComponentPages\n )\n )\n this.multiCompiler.compilers[2].hooks.emit.tap(\n 'NextjsHotReloaderForServer',\n trackPageChanges(\n prevEdgeServerPageHashes,\n changedEdgeServerPages,\n changedServerComponentPages\n )\n )\n\n // This plugin watches for changes to _document.js and notifies the client side that it should reload the page\n this.multiCompiler.compilers[1].hooks.failed.tap(\n 'NextjsHotReloaderForServer',\n (err: Error) => {\n this.serverError = err\n this.serverStats = null\n this.serverChunkNames = undefined\n }\n )\n\n this.multiCompiler.compilers[2].hooks.done.tap(\n 'NextjsHotReloaderForServer',\n (stats) => {\n this.serverError = null\n this.edgeServerStats = stats\n }\n )\n\n this.multiCompiler.compilers[1].hooks.done.tap(\n 'NextjsHotReloaderForServer',\n (stats) => {\n this.serverError = null\n this.serverStats = stats\n\n if (!this.pagesDir) {\n return\n }\n\n const { compilation } = stats\n\n // We only watch `_document` for changes on the server compilation\n // the rest of the files will be triggered by the client compilation\n const documentChunk = compilation.namedChunks.get('pages/_document')\n // If the document chunk can't be found we do nothing\n if (!documentChunk) {\n return\n }\n\n // Initial value\n if (this.serverPrevDocumentHash === null) {\n this.serverPrevDocumentHash = documentChunk.hash || null\n return\n }\n\n // If _document.js didn't change we don't trigger a reload.\n if (documentChunk.hash === this.serverPrevDocumentHash) {\n return\n }\n\n // As document chunk will change if new app pages are joined,\n // since react bundle is different it will effect the chunk hash.\n // So we diff the chunk changes, if there's only new app page chunk joins,\n // then we don't trigger a reload by checking pages/_document chunk change.\n if (this.appDir) {\n const chunkNames = new Set(compilation.namedChunks.keys())\n const diffChunkNames = difference<string>(\n this.serverChunkNames || new Set(),\n chunkNames\n )\n\n if (\n diffChunkNames.length === 0 ||\n diffChunkNames.every((chunkName) => chunkName.startsWith('app/'))\n ) {\n return\n }\n this.serverChunkNames = chunkNames\n }\n\n this.serverPrevDocumentHash = documentChunk.hash || null\n\n // Notify reload to reload the page, as _document.js was changed (different hash)\n this.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE,\n data: '_document has changed',\n })\n }\n )\n\n this.multiCompiler.hooks.done.tap('NextjsHotReloaderForServer', (stats) => {\n const reloadAfterInvalidation = this.reloadAfterInvalidation\n this.reloadAfterInvalidation = false\n\n const serverOnlyChanges = difference<string>(\n changedServerPages,\n changedClientPages\n )\n\n const edgeServerOnlyChanges = difference<string>(\n changedEdgeServerPages,\n changedClientPages\n )\n\n const pageChanges = serverOnlyChanges\n .concat(edgeServerOnlyChanges)\n .filter((key) => key.startsWith('pages/'))\n\n const middlewareChanges = [\n ...Array.from(changedEdgeServerPages),\n ...Array.from(changedServerPages),\n ].filter((name) => isMiddlewareFilename(name))\n\n if (middlewareChanges.length > 0) {\n this.send({\n event: HMR_ACTIONS_SENT_TO_BROWSER.MIDDLEWARE_CHANGES,\n })\n }\n\n if (pageChanges.length > 0) {\n this.send({\n event: HMR_ACTIONS_SENT_TO_BROWSER.SERVER_ONLY_CHANGES,\n pages: serverOnlyChanges.map((pg) =>\n denormalizePagePath(pg.slice('pages'.length))\n ),\n })\n }\n\n if (\n changedServerComponentPages.size ||\n changedCSSImportPages.size ||\n reloadAfterInvalidation\n ) {\n this.resetFetch()\n this.refreshServerComponents(stats.hash)\n }\n\n changedClientPages.clear()\n changedServerPages.clear()\n changedEdgeServerPages.clear()\n changedServerComponentPages.clear()\n changedCSSImportPages.clear()\n })\n\n this.multiCompiler.compilers[0].hooks.failed.tap(\n 'NextjsHotReloaderForClient',\n (err: Error) => {\n this.clientError = err\n this.clientStats = null\n }\n )\n this.multiCompiler.compilers[0].hooks.done.tap(\n 'NextjsHotReloaderForClient',\n (stats) => {\n this.clientError = null\n this.clientStats = stats\n\n const { compilation } = stats\n const chunkNames = new Set(\n [...compilation.namedChunks.keys()].filter(\n (name) => !!getRouteFromEntrypoint(name)\n )\n )\n\n if (this.prevChunkNames) {\n // detect chunks which have to be replaced with a new template\n // e.g, pages/index.js <-> pages/_error.js\n const addedPages = diff(chunkNames, this.prevChunkNames!)\n const removedPages = diff(this.prevChunkNames!, chunkNames)\n\n if (addedPages.size > 0) {\n for (const addedPage of addedPages) {\n const page = getRouteFromEntrypoint(addedPage)\n this.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.ADDED_PAGE,\n data: [page],\n })\n }\n }\n\n if (removedPages.size > 0) {\n for (const removedPage of removedPages) {\n const page = getRouteFromEntrypoint(removedPage)\n this.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.REMOVED_PAGE,\n data: [page],\n })\n }\n }\n }\n\n this.prevChunkNames = chunkNames\n }\n )\n\n this.webpackHotMiddleware = new WebpackHotMiddleware(\n this.multiCompiler.compilers,\n this.versionInfo,\n this.devtoolsFrontendUrl\n )\n\n let booted = false\n\n this.watcher = await new Promise((resolve) => {\n const watcher = this.multiCompiler?.watch(\n // @ts-ignore webpack supports an array of watchOptions when using a multiCompiler\n this.activeWebpackConfigs.map((config) => config.watchOptions!),\n // Errors are handled separately\n (_err: any) => {\n if (!booted) {\n booted = true\n resolve(watcher)\n }\n }\n )\n })\n\n this.onDemandEntries = onDemandEntryHandler({\n hotReloader: this,\n multiCompiler: this.multiCompiler,\n pagesDir: this.pagesDir,\n appDir: this.appDir,\n rootDir: this.dir,\n nextConfig: this.config,\n ...(this.config.onDemandEntries as {\n maxInactiveAge: number\n pagesBufferLength: number\n }),\n })\n\n this.middlewares = [\n getOverlayMiddleware({\n rootDirectory: this.dir,\n clientStats: () => this.clientStats,\n serverStats: () => this.serverStats,\n edgeServerStats: () => this.edgeServerStats,\n }),\n getSourceMapMiddleware({\n clientStats: () => this.clientStats,\n serverStats: () => this.serverStats,\n edgeServerStats: () => this.edgeServerStats,\n }),\n getNextErrorFeedbackMiddleware(this.telemetry),\n getDevOverlayFontMiddleware(),\n getDisableDevIndicatorMiddleware(),\n getRestartDevServerMiddleware({\n telemetry: this.telemetry,\n webpackCacheDirectories:\n this.activeWebpackConfigs != null\n ? getCacheDirectories(this.activeWebpackConfigs)\n : undefined,\n }),\n ]\n }\n\n public invalidate(\n { reloadAfterInvalidation }: { reloadAfterInvalidation: boolean } = {\n reloadAfterInvalidation: false,\n }\n ) {\n // Cache the `reloadAfterInvalidation` flag, and use it to reload the page when compilation is done\n this.reloadAfterInvalidation = reloadAfterInvalidation\n const outputPath = this.multiCompiler?.outputPath\n if (outputPath) {\n getInvalidator(outputPath)?.invalidate()\n }\n }\n\n public async getCompilationErrors(page: string) {\n const getErrors = ({ compilation }: webpack.Stats) => {\n const failedPages = erroredPages(compilation)\n const normalizedPage = normalizePathSep(page)\n // If there is an error related to the requesting page we display it instead of the first error\n return failedPages[normalizedPage]?.length > 0\n ? failedPages[normalizedPage]\n : compilation.errors\n }\n\n if (this.clientError) {\n return [this.clientError]\n } else if (this.serverError) {\n return [this.serverError]\n } else if (this.clientStats?.hasErrors()) {\n return getErrors(this.clientStats)\n } else if (this.serverStats?.hasErrors()) {\n return getErrors(this.serverStats)\n } else if (this.edgeServerStats?.hasErrors()) {\n return getErrors(this.edgeServerStats)\n } else {\n return []\n }\n }\n\n public send(action: HMR_ACTION_TYPES): void {\n this.webpackHotMiddleware!.publish(action)\n }\n\n public async ensurePage({\n page,\n clientOnly,\n appPaths,\n definition,\n isApp,\n url,\n }: {\n page: string\n clientOnly: boolean\n appPaths?: ReadonlyArray<string> | null\n isApp?: boolean\n definition?: RouteDefinition\n url?: string\n }): Promise<void> {\n return this.hotReloaderSpan\n .traceChild('ensure-page', {\n inputPage: page,\n })\n .traceAsyncFn(async () => {\n // Make sure we don't re-build or dispose prebuilt pages\n if (page !== '/_error' && BLOCKED_PAGES.indexOf(page) !== -1) {\n return\n }\n const error = clientOnly\n ? this.clientError\n : this.serverError || this.clientError\n if (error) {\n throw error\n }\n\n return this.onDemandEntries?.ensurePage({\n page,\n appPaths,\n definition,\n isApp,\n url,\n })\n })\n }\n\n public close() {\n this.webpackHotMiddleware?.close()\n }\n}\n"],"names":["StringXor","getOverlayMiddleware","getSourceMapMiddleware","WebpackHotMiddleware","join","relative","isAbsolute","posix","dirname","createEntrypoints","createPagesMapping","finalizeEntrypoint","getClientEntry","getEdgeServerEntry","getAppEntry","runDependingOnPageType","getStaticInfoIncludingLayouts","getInstrumentationEntry","watchCompilers","Log","getBaseWebpackConfig","getCacheDirectories","loadProjectInfo","APP_DIR_ALIAS","WEBPACK_LAYERS","recursiveDelete","BLOCKED_PAGES","CLIENT_STATIC_FILES_RUNTIME_AMP","CLIENT_STATIC_FILES_RUNTIME_MAIN","CLIENT_STATIC_FILES_RUNTIME_MAIN_APP","CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH","COMPILER_NAMES","RSC_MODULE_TYPES","getPathMatch","findPageFile","BUILDING","getEntries","EntryTypes","getInvalidator","onDemandEntryHandler","denormalizePagePath","normalizePathSep","getRouteFromEntrypoint","difference","isInstrumentationHookFile","isMiddlewareFile","isMiddlewareFilename","DecodeError","trace","getProperError","ws","existsSync","promises","fs","parseVersionInfo","isAPIRoute","getRouteLoaderEntry","isInternalComponent","isNonRoutePagesPage","RouteKind","HMR_ACTIONS_SENT_TO_BROWSER","PAGE_TYPES","FAST_REFRESH_RUNTIME_RELOAD","getNodeDebugType","getNextErrorFeedbackMiddleware","getDevOverlayFontMiddleware","getDisableDevIndicatorMiddleware","getWebpackBundler","getRestartDevServerMiddleware","checkPersistentCacheInvalidationAndCleanup","MILLISECONDS_IN_NANOSECOND","BigInt","diff","a","b","Set","filter","v","has","wsServer","Server","noServer","renderScriptError","res","error","verbose","setHeader","code","finished","undefined","console","stack","statusCode","end","addCorsSupport","req","url","startsWith","preflight","headers","origin","method","writeHead","matchNextPageBundleRequest","findEntryModule","module","compilation","issuer","moduleGraph","getIssuer","erroredPages","failedPages","errors","entryModule","name","enhancedName","push","getVersionInfo","installed","require","version","fetch","ok","staleness","latest","canary","json","e","HotReloaderWebpack","constructor","dir","config","pagesDir","distDir","buildId","encryptionKey","previewProps","rewrites","appDir","telemetry","resetFetch","clientError","serverError","hmrServerError","pagesMapping","versionInfo","reloadAfterInvalidation","hasAmpEntrypoints","hasAppRouterEntrypoints","hasPagesRouterEntrypoints","middlewares","clientStats","serverStats","edgeServerStats","serverPrevDocumentHash","hotReloaderSpan","process","env","__NEXT_VERSION","stop","run","parsedUrl","handlePageBundleRequest","pageBundleRes","parsedPageBundleUrl","pathname","params","decodedPagePath","path","map","param","decodeURIComponent","_","page","indexOf","ensurePage","clientOnly","getCompilationErrors","length","middleware","calledNext","setHmrServerError","clearHmrServerError","send","action","RELOAD_PAGE","data","refreshServerComponents","hash","SERVER_COMPONENT_CHANGES","onHMR","_socket","head","callback","handleUpgrade","socket","client","webpackHotMiddleware","onDemandEntries","addEventListener","toString","payload","JSON","parse","traceChild","event","spanName","startTime","Math","floor","attrs","attributes","endTime","updatedModules","m","replace","appPagesBrowser","isPageHidden","errorCount","warningCount","stackTrace","hadRuntimeError","warn","fileMessage","file","exec","fileUrl","URL","cwd","modules","searchParams","getAll","filepath","slice","pagesDirBrowser","cleanedFilePath","manualTraceChild","clientId","id","clean","span","traceAsyncFn","getWebpackConfig","webpackConfigSpan","pageExtensions","pagePaths","Promise","all","isDev","pagesType","PAGES","i","entrypoints","envFiles","pages","previewMode","rootDir","commonWebpackOptions","dev","originalRewrites","_originalRewrites","originalRedirects","_originalRedirects","runWebpackSpan","info","compilerType","server","edgeServer","buildFallbackError","fallbackWatcher","fallbackConfig","beforeFiles","afterFiles","fallback","isDevFallback","fallbackCompiler","resolve","bootedFallbackCompiler","watch","watchOptions","_err","tracedGetVersionInfo","versionInfoSpan","start","startSpan","nodeDebugType","devtoolsFrontendUrl","debugPort","debugInfo","debugInfoList","then","mkdir","recursive","distPackageJsonPath","writeFile","activeWebpackConfigs","defaultEntry","entry","args","outputPath","multiCompiler","entries","isClientCompilation","isNodeServerCompilation","isEdgeServerCompilation","Object","keys","entryKey","entryData","bundlePath","dispose","result","key","isEntry","type","ENTRY","isChildEntry","CHILD_ENTRY","pageExists","absolutePagePath","absoluteEntryFilePath","hasAppDir","isAppPath","staticInfo","isInsideAppDir","pageFilePath","amp","isServerComponent","rsc","pageType","APP","ROOT","isInstrumentation","pageRuntime","runtime","experimental","nodeMiddleware","onEdgeServer","status","normalizedBundlePath","value","isEdgeServer","appDirLoader","appPaths","pagePath","tsconfigPath","typescript","basePath","assetPrefix","nextConfigOutput","output","preferredRegion","middlewareConfig","Buffer","from","stringify","isGlobalNotFoundEnabled","globalNotFound","import","onClient","request","onServer","relativeRequest","context","kind","PAGES_API","parallelism","Array","inputFileSystem","compilers","compiler","fsStartTime","Date","now","hooks","beforeRun","intercept","register","tapInfo","done","tap","purge","changedClientPages","changedServerPages","changedEdgeServerPages","changedServerComponentPages","changedCSSImportPages","prevClientPageHashes","Map","prevServerPageHashes","prevEdgeServerPageHashes","prevCSSImportModuleHashes","pageExtensionRegex","RegExp","trackPageChanges","pageHashMap","changedItems","serverComponentChangedItems","stats","forEach","chunks","chunk","modsIterable","chunkGraph","getChunkModulesIterable","hasCSSModuleChanges","chunksHash","chunksHashServerLayer","mod","resource","includes","test","createHash","update","originalSource","buffer","digest","layer","reactServerComponents","buildInfo","add","getModuleHash","resourceKey","prevHash","get","set","curHash","serverKey","prevServerHash","curServerHash","err","emit","failed","serverChunkNames","documentChunk","namedChunks","chunkNames","diffChunkNames","every","chunkName","serverOnlyChanges","edgeServerOnlyChanges","pageChanges","concat","middlewareChanges","MIDDLEWARE_CHANGES","SERVER_ONLY_CHANGES","pg","size","clear","prevChunkNames","addedPages","removedPages","addedPage","ADDED_PAGE","removedPage","REMOVED_PAGE","booted","watcher","hotReloader","nextConfig","rootDirectory","webpackCacheDirectories","invalidate","getErrors","normalizedPage","hasErrors","publish","definition","isApp","inputPage","close"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../src/server/dev/hot-reloader-webpack.ts"],"sourcesContent":["import type { NextConfigComplete } from '../config-shared'\nimport type { CustomRoutes } from '../../lib/load-custom-routes'\nimport type { Duplex } from 'stream'\nimport type { Telemetry } from '../../telemetry/storage'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { UrlObject } from 'url'\nimport type { RouteDefinition } from '../route-definitions/route-definition'\n\nimport { type webpack, StringXor } from 'next/dist/compiled/webpack/webpack'\nimport {\n getOverlayMiddleware,\n getSourceMapMiddleware,\n} from './middleware-webpack'\nimport { WebpackHotMiddleware } from './hot-middleware'\nimport { join, relative, isAbsolute, posix, dirname } from 'path'\nimport {\n createEntrypoints,\n createPagesMapping,\n finalizeEntrypoint,\n getClientEntry,\n getEdgeServerEntry,\n getAppEntry,\n runDependingOnPageType,\n getStaticInfoIncludingLayouts,\n getInstrumentationEntry,\n} from '../../build/entries'\nimport { watchCompilers } from '../../build/output'\nimport * as Log from '../../build/output/log'\nimport getBaseWebpackConfig, {\n getCacheDirectories,\n loadProjectInfo,\n} from '../../build/webpack-config'\nimport { APP_DIR_ALIAS, WEBPACK_LAYERS } from '../../lib/constants'\nimport { recursiveDelete } from '../../lib/recursive-delete'\nimport {\n BLOCKED_PAGES,\n CLIENT_STATIC_FILES_RUNTIME_AMP,\n CLIENT_STATIC_FILES_RUNTIME_MAIN,\n CLIENT_STATIC_FILES_RUNTIME_MAIN_APP,\n CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH,\n COMPILER_NAMES,\n RSC_MODULE_TYPES,\n} from '../../shared/lib/constants'\nimport type { __ApiPreviewProps } from '../api-utils'\nimport { getPathMatch } from '../../shared/lib/router/utils/path-match'\nimport { findPageFile } from '../lib/find-page-file'\nimport {\n BUILDING,\n getEntries,\n EntryTypes,\n getInvalidator,\n onDemandEntryHandler,\n} from './on-demand-entry-handler'\nimport { denormalizePagePath } from '../../shared/lib/page-path/denormalize-page-path'\nimport { normalizePathSep } from '../../shared/lib/page-path/normalize-path-sep'\nimport getRouteFromEntrypoint from '../get-route-from-entrypoint'\nimport {\n difference,\n isInstrumentationHookFile,\n isMiddlewareFile,\n isMiddlewareFilename,\n} from '../../build/utils'\nimport { DecodeError } from '../../shared/lib/utils'\nimport { type Span, trace } from '../../trace'\nimport { getProperError } from '../../lib/is-error'\nimport ws from 'next/dist/compiled/ws'\nimport { existsSync, promises as fs } from 'fs'\nimport type { UnwrapPromise } from '../../lib/coalesced-function'\nimport { parseVersionInfo } from './parse-version-info'\nimport type { VersionInfo } from './parse-version-info'\nimport { isAPIRoute } from '../../lib/is-api-route'\nimport { getRouteLoaderEntry } from '../../build/webpack/loaders/next-route-loader'\nimport {\n isInternalComponent,\n isNonRoutePagesPage,\n} from '../../lib/is-internal-component'\nimport { RouteKind } from '../route-kind'\nimport {\n HMR_ACTIONS_SENT_TO_BROWSER,\n type NextJsHotReloaderInterface,\n} from './hot-reloader-types'\nimport type { HMR_ACTION_TYPES } from './hot-reloader-types'\nimport type { WebpackError } from 'webpack'\nimport { PAGE_TYPES } from '../../lib/page-types'\nimport { FAST_REFRESH_RUNTIME_RELOAD } from './messages'\nimport { getNodeDebugType } from '../lib/utils'\nimport { getNextErrorFeedbackMiddleware } from '../../next-devtools/server/get-next-error-feedback-middleware'\nimport { getDevOverlayFontMiddleware } from '../../next-devtools/server/font/get-dev-overlay-font-middleware'\nimport { getDisableDevIndicatorMiddleware } from '../../next-devtools/server/dev-indicator-middleware'\nimport getWebpackBundler from '../../shared/lib/get-webpack-bundler'\nimport { getRestartDevServerMiddleware } from '../../next-devtools/server/restart-dev-server-middleware'\nimport { checkPersistentCacheInvalidationAndCleanup } from '../../build/webpack/cache-invalidation'\n\nconst MILLISECONDS_IN_NANOSECOND = BigInt(1_000_000)\n\nfunction diff(a: Set<any>, b: Set<any>) {\n return new Set([...a].filter((v) => !b.has(v)))\n}\n\nconst wsServer = new ws.Server({ noServer: true })\n\nexport async function renderScriptError(\n res: ServerResponse,\n error: Error,\n { verbose = true } = {}\n): Promise<{ finished: true | undefined }> {\n // Asks CDNs and others to not to cache the errored page\n res.setHeader(\n 'Cache-Control',\n 'no-cache, no-store, max-age=0, must-revalidate'\n )\n\n if ((error as any).code === 'ENOENT') {\n return { finished: undefined }\n }\n\n if (verbose) {\n console.error(error.stack)\n }\n res.statusCode = 500\n res.end('500 - Internal Error')\n return { finished: true }\n}\n\nfunction addCorsSupport(req: IncomingMessage, res: ServerResponse) {\n // Only rewrite CORS handling when URL matches a hot-reloader middleware\n if (!req.url!.startsWith('/__next')) {\n return { preflight: false }\n }\n\n if (!req.headers.origin) {\n return { preflight: false }\n }\n\n res.setHeader('Access-Control-Allow-Origin', req.headers.origin)\n res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET')\n // Based on https://github.com/primus/access-control/blob/4cf1bc0e54b086c91e6aa44fb14966fa5ef7549c/index.js#L158\n if (req.headers['access-control-request-headers']) {\n res.setHeader(\n 'Access-Control-Allow-Headers',\n req.headers['access-control-request-headers'] as string\n )\n }\n\n if (req.method === 'OPTIONS') {\n res.writeHead(200)\n res.end()\n return { preflight: true }\n }\n\n return { preflight: false }\n}\n\nexport const matchNextPageBundleRequest = getPathMatch(\n '/_next/static/chunks/pages/:path*.js(\\\\.map|)'\n)\n\n// Iteratively look up the issuer till it ends up at the root\nfunction findEntryModule(\n module: webpack.Module,\n compilation: webpack.Compilation\n): any {\n for (;;) {\n const issuer = compilation.moduleGraph.getIssuer(module)\n if (!issuer) return module\n module = issuer\n }\n}\n\nfunction erroredPages(compilation: webpack.Compilation) {\n const failedPages: { [page: string]: WebpackError[] } = {}\n for (const error of compilation.errors) {\n if (!error.module) {\n continue\n }\n\n const entryModule = findEntryModule(error.module, compilation)\n const { name } = entryModule\n if (!name) {\n continue\n }\n\n // Only pages have to be reloaded\n const enhancedName = getRouteFromEntrypoint(name)\n\n if (!enhancedName) {\n continue\n }\n\n if (!failedPages[enhancedName]) {\n failedPages[enhancedName] = []\n }\n\n failedPages[enhancedName].push(error)\n }\n\n return failedPages\n}\n\nexport async function getVersionInfo(): Promise<VersionInfo> {\n let installed = '0.0.0'\n\n try {\n installed = require('next/package.json').version\n\n let res\n\n try {\n // use NPM registry regardless user using Yarn\n res = await fetch('https://registry.npmjs.org/-/package/next/dist-tags')\n } catch {\n // ignore fetch errors\n }\n\n if (!res || !res.ok) return { installed, staleness: 'unknown' }\n\n const { latest, canary } = await res.json()\n\n return parseVersionInfo({ installed, latest, canary })\n } catch (e: any) {\n console.error(e)\n return { installed, staleness: 'unknown' }\n }\n}\n\nexport default class HotReloaderWebpack implements NextJsHotReloaderInterface {\n private hasAmpEntrypoints: boolean\n private hasAppRouterEntrypoints: boolean\n private hasPagesRouterEntrypoints: boolean\n private dir: string\n private buildId: string\n private encryptionKey: string\n private middlewares: ((\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ) => Promise<void>)[]\n private pagesDir?: string\n private distDir: string\n private webpackHotMiddleware?: WebpackHotMiddleware\n private config: NextConfigComplete\n private clientStats: webpack.Stats | null\n private clientError: Error | null = null\n private serverError: Error | null = null\n private hmrServerError: Error | null = null\n private serverPrevDocumentHash: string | null\n private serverChunkNames?: Set<string>\n private prevChunkNames?: Set<any>\n private onDemandEntries?: ReturnType<typeof onDemandEntryHandler>\n private previewProps: __ApiPreviewProps\n private watcher: any\n private rewrites: CustomRoutes['rewrites']\n private fallbackWatcher: any\n private hotReloaderSpan: Span\n private pagesMapping: { [key: string]: string } = {}\n private appDir?: string\n private telemetry: Telemetry\n private resetFetch: () => void\n private versionInfo: VersionInfo = {\n staleness: 'unknown',\n installed: '0.0.0',\n }\n private devtoolsFrontendUrl: string | undefined\n private reloadAfterInvalidation: boolean = false\n private isSrcDir: boolean\n\n public serverStats: webpack.Stats | null\n public edgeServerStats: webpack.Stats | null\n public multiCompiler?: webpack.MultiCompiler\n public activeWebpackConfigs?: Array<\n UnwrapPromise<ReturnType<typeof getBaseWebpackConfig>>\n >\n\n constructor(\n dir: string,\n {\n config,\n isSrcDir,\n pagesDir,\n distDir,\n buildId,\n encryptionKey,\n previewProps,\n rewrites,\n appDir,\n telemetry,\n resetFetch,\n }: {\n config: NextConfigComplete\n isSrcDir: boolean\n pagesDir?: string\n distDir: string\n buildId: string\n encryptionKey: string\n previewProps: __ApiPreviewProps\n rewrites: CustomRoutes['rewrites']\n appDir?: string\n telemetry: Telemetry\n resetFetch: () => void\n }\n ) {\n this.hasAmpEntrypoints = false\n this.hasAppRouterEntrypoints = false\n this.hasPagesRouterEntrypoints = false\n this.buildId = buildId\n this.encryptionKey = encryptionKey\n this.dir = dir\n this.isSrcDir = isSrcDir\n this.middlewares = []\n this.pagesDir = pagesDir\n this.appDir = appDir\n this.distDir = distDir\n this.clientStats = null\n this.serverStats = null\n this.edgeServerStats = null\n this.serverPrevDocumentHash = null\n this.telemetry = telemetry\n this.resetFetch = resetFetch\n\n this.config = config\n this.previewProps = previewProps\n this.rewrites = rewrites\n this.hotReloaderSpan = trace('hot-reloader', undefined, {\n version: process.env.__NEXT_VERSION as string,\n })\n // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing\n // of the current `next dev` invocation.\n this.hotReloaderSpan.stop()\n }\n\n public async run(\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl: UrlObject\n ): Promise<{ finished?: true }> {\n // Usually CORS support is not needed for the hot-reloader (this is dev only feature)\n // With when the app runs for multi-zones support behind a proxy,\n // the current page is trying to access this URL via assetPrefix.\n // That's when the CORS support is needed.\n const { preflight } = addCorsSupport(req, res)\n if (preflight) {\n return {}\n }\n\n // When a request comes in that is a page bundle, e.g. /_next/static/<buildid>/pages/index.js\n // we have to compile the page using on-demand-entries, this middleware will handle doing that\n // by adding the page to on-demand-entries, waiting till it's done\n // and then the bundle will be served like usual by the actual route in server/index.js\n const handlePageBundleRequest = async (\n pageBundleRes: ServerResponse,\n parsedPageBundleUrl: UrlObject\n ): Promise<{ finished?: true }> => {\n const { pathname } = parsedPageBundleUrl\n if (!pathname) return {}\n\n const params = matchNextPageBundleRequest(pathname)\n if (!params) return {}\n\n let decodedPagePath: string\n\n try {\n decodedPagePath = `/${params.path\n .map((param: string) => decodeURIComponent(param))\n .join('/')}`\n } catch (_) {\n throw new DecodeError('failed to decode param')\n }\n\n const page = denormalizePagePath(decodedPagePath)\n\n if (page === '/_error' || BLOCKED_PAGES.indexOf(page) === -1) {\n try {\n await this.ensurePage({ page, clientOnly: true, url: req.url })\n } catch (error) {\n return await renderScriptError(pageBundleRes, getProperError(error))\n }\n\n const errors = await this.getCompilationErrors(page)\n if (errors.length > 0) {\n return await renderScriptError(pageBundleRes, errors[0], {\n verbose: false,\n })\n }\n }\n\n return {}\n }\n\n const { finished } = await handlePageBundleRequest(res, parsedUrl)\n\n for (const middleware of this.middlewares) {\n let calledNext = false\n\n await middleware(req, res, () => {\n calledNext = true\n })\n\n if (!calledNext) {\n return { finished: true }\n }\n }\n\n return { finished }\n }\n\n public setHmrServerError(error: Error | null): void {\n this.hmrServerError = error\n }\n\n public clearHmrServerError(): void {\n if (this.hmrServerError) {\n this.setHmrServerError(null)\n this.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE,\n data: 'clear hmr server error',\n })\n }\n }\n\n protected async refreshServerComponents(hash: string): Promise<void> {\n this.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES,\n hash,\n // TODO: granular reloading of changes\n // entrypoints: serverComponentChanges,\n })\n }\n\n public onHMR(\n req: IncomingMessage,\n _socket: Duplex,\n head: Buffer,\n callback: (client: ws.WebSocket) => void\n ) {\n wsServer.handleUpgrade(req, req.socket, head, (client) => {\n this.webpackHotMiddleware?.onHMR(client)\n this.onDemandEntries?.onHMR(client, () => this.hmrServerError)\n callback(client)\n\n client.addEventListener('message', ({ data }) => {\n data = typeof data !== 'string' ? data.toString() : data\n\n try {\n const payload = JSON.parse(data)\n\n let traceChild:\n | {\n name: string\n startTime?: bigint\n endTime?: bigint\n attrs?: Record<string, number | string | undefined | string[]>\n }\n | undefined\n\n switch (payload.event) {\n case 'span-end': {\n traceChild = {\n name: payload.spanName,\n startTime:\n BigInt(Math.floor(payload.startTime)) *\n MILLISECONDS_IN_NANOSECOND,\n attrs: payload.attributes,\n endTime:\n BigInt(Math.floor(payload.endTime)) *\n MILLISECONDS_IN_NANOSECOND,\n }\n break\n }\n case 'client-hmr-latency': {\n traceChild = {\n name: payload.event,\n startTime:\n BigInt(payload.startTime) * MILLISECONDS_IN_NANOSECOND,\n endTime: BigInt(payload.endTime) * MILLISECONDS_IN_NANOSECOND,\n attrs: {\n updatedModules: payload.updatedModules.map((m: string) =>\n m\n .replace(`(${WEBPACK_LAYERS.appPagesBrowser})/`, '')\n .replace(/^\\.\\//, '[project]/')\n ),\n page: payload.page,\n isPageHidden: payload.isPageHidden,\n },\n }\n break\n }\n case 'client-reload-page':\n case 'client-success': {\n traceChild = {\n name: payload.event,\n }\n break\n }\n case 'client-error': {\n traceChild = {\n name: payload.event,\n attrs: { errorCount: payload.errorCount },\n }\n break\n }\n case 'client-warning': {\n traceChild = {\n name: payload.event,\n attrs: { warningCount: payload.warningCount },\n }\n break\n }\n case 'client-removed-page':\n case 'client-added-page': {\n traceChild = {\n name: payload.event,\n attrs: { page: payload.page || '' },\n }\n break\n }\n case 'client-full-reload': {\n const { event, stackTrace, hadRuntimeError } = payload\n\n traceChild = {\n name: event,\n attrs: { stackTrace: stackTrace ?? '' },\n }\n\n if (hadRuntimeError) {\n Log.warn(FAST_REFRESH_RUNTIME_RELOAD)\n break\n }\n\n let fileMessage = ''\n if (stackTrace) {\n const file = /Aborted because (.+) is not accepted/.exec(\n stackTrace\n )?.[1]\n if (file) {\n // `file` is filepath in `pages/` but it can be a webpack url.\n // If it's a webpack loader URL, it will include the app-pages layer\n if (file.startsWith(`(${WEBPACK_LAYERS.appPagesBrowser})/`)) {\n const fileUrl = new URL(file, 'file://')\n const cwd = process.cwd()\n const modules = fileUrl.searchParams\n .getAll('modules')\n .map((filepath) => filepath.slice(cwd.length + 1))\n .filter(\n (filepath) => !filepath.startsWith('node_modules')\n )\n\n if (modules.length > 0) {\n fileMessage = ` when ${modules.join(', ')} changed`\n }\n } else if (\n // Handle known webpack layers\n file.startsWith(`(${WEBPACK_LAYERS.pagesDirBrowser})/`)\n ) {\n const cleanedFilePath = file.slice(\n `(${WEBPACK_LAYERS.pagesDirBrowser})/`.length\n )\n\n fileMessage = ` when ${cleanedFilePath} changed`\n } else {\n fileMessage = ` when ${file} changed`\n }\n }\n }\n\n Log.warn(\n `Fast Refresh had to perform a full reload${fileMessage}. Read more: https://nextjs.org/docs/messages/fast-refresh-reload`\n )\n break\n }\n default: {\n break\n }\n }\n\n if (traceChild) {\n this.hotReloaderSpan.manualTraceChild(\n traceChild.name,\n traceChild.startTime,\n traceChild.endTime,\n { ...traceChild.attrs, clientId: payload.id }\n )\n }\n } catch (_) {\n // invalid WebSocket message\n }\n })\n })\n }\n\n private async clean(span: Span): Promise<void> {\n return span\n .traceChild('clean')\n .traceAsyncFn(() =>\n recursiveDelete(join(this.dir, this.config.distDir), /^cache/)\n )\n }\n\n private async getWebpackConfig(span: Span) {\n const webpackConfigSpan = span.traceChild('get-webpack-config')\n\n const pageExtensions = this.config.pageExtensions\n\n return webpackConfigSpan.traceAsyncFn(async () => {\n const pagePaths = !this.pagesDir\n ? ([] as (string | null)[])\n : await webpackConfigSpan\n .traceChild('get-page-paths')\n .traceAsyncFn(() =>\n Promise.all([\n findPageFile(this.pagesDir!, '/_app', pageExtensions, false),\n findPageFile(\n this.pagesDir!,\n '/_document',\n pageExtensions,\n false\n ),\n ])\n )\n\n this.pagesMapping = await webpackConfigSpan\n .traceChild('create-pages-mapping')\n .traceAsyncFn(() =>\n createPagesMapping({\n isDev: true,\n pageExtensions: this.config.pageExtensions,\n pagesType: PAGE_TYPES.PAGES,\n pagePaths: pagePaths.filter(\n (i: string | null): i is string => typeof i === 'string'\n ),\n pagesDir: this.pagesDir,\n appDir: this.appDir,\n })\n )\n\n const entrypoints = await webpackConfigSpan\n .traceChild('create-entrypoints')\n .traceAsyncFn(() =>\n createEntrypoints({\n appDir: this.appDir,\n buildId: this.buildId,\n config: this.config,\n envFiles: [],\n isDev: true,\n pages: this.pagesMapping,\n pagesDir: this.pagesDir,\n previewMode: this.previewProps,\n rootDir: this.dir,\n pageExtensions: this.config.pageExtensions,\n })\n )\n\n const commonWebpackOptions = {\n dev: true,\n buildId: this.buildId,\n encryptionKey: this.encryptionKey,\n config: this.config,\n pagesDir: this.pagesDir,\n rewrites: this.rewrites,\n originalRewrites: this.config._originalRewrites,\n originalRedirects: this.config._originalRedirects,\n runWebpackSpan: this.hotReloaderSpan,\n appDir: this.appDir,\n previewProps: this.previewProps,\n }\n\n return webpackConfigSpan\n .traceChild('generate-webpack-config')\n .traceAsyncFn(async () => {\n const info = await loadProjectInfo({\n dir: this.dir,\n config: commonWebpackOptions.config,\n dev: true,\n })\n return Promise.all([\n // order is important here\n getBaseWebpackConfig(this.dir, {\n ...commonWebpackOptions,\n compilerType: COMPILER_NAMES.client,\n entrypoints: entrypoints.client,\n ...info,\n }),\n getBaseWebpackConfig(this.dir, {\n ...commonWebpackOptions,\n compilerType: COMPILER_NAMES.server,\n entrypoints: entrypoints.server,\n ...info,\n }),\n getBaseWebpackConfig(this.dir, {\n ...commonWebpackOptions,\n compilerType: COMPILER_NAMES.edgeServer,\n entrypoints: entrypoints.edgeServer,\n ...info,\n }),\n ])\n })\n })\n }\n\n public async buildFallbackError(): Promise<void> {\n if (this.fallbackWatcher) return\n\n const info = await loadProjectInfo({\n dir: this.dir,\n config: this.config,\n dev: true,\n })\n const fallbackConfig = await getBaseWebpackConfig(this.dir, {\n previewProps: this.previewProps,\n runWebpackSpan: this.hotReloaderSpan,\n dev: true,\n compilerType: COMPILER_NAMES.client,\n config: this.config,\n buildId: this.buildId,\n encryptionKey: this.encryptionKey,\n appDir: this.appDir,\n pagesDir: this.pagesDir,\n rewrites: {\n beforeFiles: [],\n afterFiles: [],\n fallback: [],\n },\n originalRewrites: {\n beforeFiles: [],\n afterFiles: [],\n fallback: [],\n },\n originalRedirects: [],\n isDevFallback: true,\n entrypoints: (\n await createEntrypoints({\n appDir: this.appDir,\n buildId: this.buildId,\n config: this.config,\n envFiles: [],\n isDev: true,\n pages: {\n '/_app': 'next/dist/pages/_app',\n '/_error': 'next/dist/pages/_error',\n },\n pagesDir: this.pagesDir,\n previewMode: this.previewProps,\n rootDir: this.dir,\n pageExtensions: this.config.pageExtensions,\n })\n ).client,\n ...info,\n })\n\n const fallbackCompiler = getWebpackBundler()(fallbackConfig)\n\n this.fallbackWatcher = await new Promise((resolve) => {\n let bootedFallbackCompiler = false\n fallbackCompiler.watch(\n // @ts-ignore webpack supports an array of watchOptions when using a multiCompiler\n fallbackConfig.watchOptions,\n // Errors are handled separately\n (_err: any) => {\n if (!bootedFallbackCompiler) {\n bootedFallbackCompiler = true\n resolve(true)\n }\n }\n )\n })\n }\n\n private async tracedGetVersionInfo(span: Span) {\n const versionInfoSpan = span.traceChild('get-version-info')\n return versionInfoSpan.traceAsyncFn<VersionInfo>(async () =>\n getVersionInfo()\n )\n }\n\n public async start(): Promise<void> {\n const startSpan = this.hotReloaderSpan.traceChild('start')\n startSpan.stop() // Stop immediately to create an artificial parent span\n\n this.versionInfo = await this.tracedGetVersionInfo(startSpan)\n\n const nodeDebugType = getNodeDebugType()\n if (nodeDebugType && !this.devtoolsFrontendUrl) {\n const debugPort = process.debugPort\n let debugInfo\n try {\n // It requires to use 127.0.0.1 instead of localhost for server-side fetching.\n const debugInfoList = await fetch(\n `http://127.0.0.1:${debugPort}/json/list`\n ).then((res) => res.json())\n // There will be only one item for current process, so always get the first item.\n debugInfo = debugInfoList[0]\n } catch {}\n if (debugInfo) {\n this.devtoolsFrontendUrl = debugInfo.devtoolsFrontendUrl\n }\n }\n\n await this.clean(startSpan)\n // Ensure distDir exists before writing package.json\n await fs.mkdir(this.distDir, { recursive: true })\n\n const distPackageJsonPath = join(this.distDir, 'package.json')\n // Ensure commonjs handling is used for files in the distDir (generally .next)\n // Files outside of the distDir can be \"type\": \"module\"\n await fs.writeFile(distPackageJsonPath, '{\"type\": \"commonjs\"}')\n\n this.activeWebpackConfigs = await this.getWebpackConfig(startSpan)\n\n for (const config of this.activeWebpackConfigs) {\n const defaultEntry = config.entry\n config.entry = async (...args) => {\n const outputPath = this.multiCompiler?.outputPath || ''\n const entries = getEntries(outputPath)\n // @ts-ignore entry is always a function\n const entrypoints = await defaultEntry(...args)\n const isClientCompilation = config.name === COMPILER_NAMES.client\n const isNodeServerCompilation = config.name === COMPILER_NAMES.server\n const isEdgeServerCompilation =\n config.name === COMPILER_NAMES.edgeServer\n\n await Promise.all(\n Object.keys(entries).map(async (entryKey) => {\n const entryData = entries[entryKey]\n const { bundlePath, dispose } = entryData\n\n const result =\n /^(client|server|edge-server)@(app|pages|root)@(.*)/g.exec(\n entryKey\n )\n const [, key /* pageType */, , page] = result! // this match should always happen\n\n if (key === COMPILER_NAMES.client && !isClientCompilation) return\n if (key === COMPILER_NAMES.server && !isNodeServerCompilation)\n return\n if (key === COMPILER_NAMES.edgeServer && !isEdgeServerCompilation)\n return\n\n const isEntry = entryData.type === EntryTypes.ENTRY\n const isChildEntry = entryData.type === EntryTypes.CHILD_ENTRY\n\n // Check if the page was removed or disposed and remove it\n if (isEntry) {\n const pageExists =\n !dispose && existsSync(entryData.absolutePagePath)\n if (!pageExists) {\n delete entries[entryKey]\n return\n }\n }\n\n // For child entries, if it has an entry file and it's gone, remove it\n if (isChildEntry) {\n if (entryData.absoluteEntryFilePath) {\n const pageExists =\n !dispose && existsSync(entryData.absoluteEntryFilePath)\n if (!pageExists) {\n delete entries[entryKey]\n return\n }\n }\n }\n\n // Ensure _error is considered a `pages` page.\n if (page === '/_error') {\n this.hasPagesRouterEntrypoints = true\n }\n\n const hasAppDir = !!this.appDir\n const isAppPath = hasAppDir && bundlePath.startsWith('app/')\n const staticInfo = isEntry\n ? await getStaticInfoIncludingLayouts({\n isInsideAppDir: isAppPath,\n pageExtensions: this.config.pageExtensions,\n pageFilePath: entryData.absolutePagePath,\n appDir: this.appDir,\n config: this.config,\n isDev: true,\n page,\n })\n : undefined\n\n if (staticInfo?.type === PAGE_TYPES.PAGES) {\n if (\n staticInfo.config?.config?.amp === true ||\n staticInfo.config?.config?.amp === 'hybrid'\n ) {\n this.hasAmpEntrypoints = true\n }\n }\n\n const isServerComponent =\n isAppPath && staticInfo?.rsc !== RSC_MODULE_TYPES.client\n\n const pageType: PAGE_TYPES = entryData.bundlePath.startsWith(\n 'pages/'\n )\n ? PAGE_TYPES.PAGES\n : entryData.bundlePath.startsWith('app/')\n ? PAGE_TYPES.APP\n : PAGE_TYPES.ROOT\n\n if (pageType === 'pages') {\n this.hasPagesRouterEntrypoints = true\n }\n if (pageType === 'app') {\n this.hasAppRouterEntrypoints = true\n }\n\n const isInstrumentation =\n isInstrumentationHookFile(page) && pageType === PAGE_TYPES.ROOT\n\n let pageRuntime = staticInfo?.runtime\n\n if (\n isMiddlewareFile(page) &&\n !this.config.experimental.nodeMiddleware &&\n pageRuntime === 'nodejs'\n ) {\n Log.warn(\n 'nodejs runtime support for middleware requires experimental.nodeMiddleware be enabled in your next.config'\n )\n pageRuntime = 'edge'\n }\n\n runDependingOnPageType({\n page,\n pageRuntime,\n pageType,\n onEdgeServer: () => {\n // TODO-APP: verify if child entry should support.\n if (!isEdgeServerCompilation || !isEntry) return\n entries[entryKey].status = BUILDING\n\n if (isInstrumentation) {\n const normalizedBundlePath = bundlePath.replace('src/', '')\n entrypoints[normalizedBundlePath] = finalizeEntrypoint({\n compilerType: COMPILER_NAMES.edgeServer,\n name: normalizedBundlePath,\n value: getInstrumentationEntry({\n absolutePagePath: entryData.absolutePagePath,\n isEdgeServer: true,\n isDev: true,\n }),\n isServerComponent: true,\n hasAppDir,\n })\n return\n }\n const appDirLoader = isAppPath\n ? getAppEntry({\n name: bundlePath,\n page,\n appPaths: entryData.appPaths,\n pagePath: posix.join(\n APP_DIR_ALIAS,\n relative(\n this.appDir!,\n entryData.absolutePagePath\n ).replace(/\\\\/g, '/')\n ),\n appDir: this.appDir!,\n pageExtensions: this.config.pageExtensions,\n rootDir: this.dir,\n isDev: true,\n tsconfigPath: this.config.typescript.tsconfigPath,\n basePath: this.config.basePath,\n assetPrefix: this.config.assetPrefix,\n nextConfigOutput: this.config.output,\n preferredRegion: staticInfo?.preferredRegion,\n middlewareConfig: Buffer.from(\n JSON.stringify(staticInfo?.middleware || {})\n ).toString('base64'),\n isGlobalNotFoundEnabled: this.config.experimental\n .globalNotFound\n ? true\n : undefined,\n }).import\n : undefined\n\n entrypoints[bundlePath] = finalizeEntrypoint({\n compilerType: COMPILER_NAMES.edgeServer,\n name: bundlePath,\n value: getEdgeServerEntry({\n absolutePagePath: entryData.absolutePagePath,\n rootDir: this.dir,\n buildId: this.buildId,\n bundlePath,\n config: this.config,\n isDev: true,\n page,\n pages: this.pagesMapping,\n isServerComponent,\n appDirLoader,\n pagesType: isAppPath ? PAGE_TYPES.APP : PAGE_TYPES.PAGES,\n preferredRegion: staticInfo?.preferredRegion,\n }),\n hasAppDir,\n })\n },\n onClient: () => {\n if (!isClientCompilation) return\n if (isChildEntry) {\n entries[entryKey].status = BUILDING\n entrypoints[bundlePath] = finalizeEntrypoint({\n name: bundlePath,\n compilerType: COMPILER_NAMES.client,\n value: entryData.request,\n hasAppDir,\n })\n } else {\n entries[entryKey].status = BUILDING\n entrypoints[bundlePath] = finalizeEntrypoint({\n name: bundlePath,\n compilerType: COMPILER_NAMES.client,\n value: getClientEntry({\n absolutePagePath: entryData.absolutePagePath,\n page,\n }),\n hasAppDir,\n })\n }\n },\n onServer: () => {\n // TODO-APP: verify if child entry should support.\n if (!isNodeServerCompilation || !isEntry) return\n entries[entryKey].status = BUILDING\n let relativeRequest = relative(\n config.context!,\n entryData.absolutePagePath\n )\n if (\n !isAbsolute(relativeRequest) &&\n !relativeRequest.startsWith('../')\n ) {\n relativeRequest = `./${relativeRequest}`\n }\n\n let value: { import: string; layer?: string } | string\n if (isInstrumentation) {\n value = getInstrumentationEntry({\n absolutePagePath: entryData.absolutePagePath,\n isEdgeServer: false,\n isDev: true,\n })\n entrypoints[bundlePath] = finalizeEntrypoint({\n compilerType: COMPILER_NAMES.server,\n name: bundlePath,\n isServerComponent: true,\n value,\n hasAppDir,\n })\n } else if (isMiddlewareFile(page)) {\n value = getEdgeServerEntry({\n absolutePagePath: entryData.absolutePagePath,\n rootDir: this.dir,\n buildId: this.buildId,\n bundlePath,\n config: this.config,\n isDev: true,\n page,\n pages: this.pagesMapping,\n isServerComponent,\n pagesType: PAGE_TYPES.PAGES,\n preferredRegion: staticInfo?.preferredRegion,\n })\n } else if (isAppPath) {\n // This path normalization is critical for webpack to resolve the next internals as entry.\n const pagePath = entryData.absolutePagePath.startsWith(\n dirname(require.resolve('next/package.json'))\n )\n ? entryData.absolutePagePath\n : posix.join(\n APP_DIR_ALIAS,\n relative(\n this.appDir!,\n entryData.absolutePagePath\n ).replace(/\\\\/g, '/')\n )\n value = getAppEntry({\n name: bundlePath,\n page,\n appPaths: entryData.appPaths,\n pagePath,\n appDir: this.appDir!,\n pageExtensions: this.config.pageExtensions,\n rootDir: this.dir,\n isDev: true,\n tsconfigPath: this.config.typescript.tsconfigPath,\n basePath: this.config.basePath,\n assetPrefix: this.config.assetPrefix,\n nextConfigOutput: this.config.output,\n preferredRegion: staticInfo?.preferredRegion,\n middlewareConfig: Buffer.from(\n JSON.stringify(staticInfo?.middleware || {})\n ).toString('base64'),\n isGlobalNotFoundEnabled: this.config.experimental\n .globalNotFound\n ? true\n : undefined,\n })\n } else if (isAPIRoute(page)) {\n value = getRouteLoaderEntry({\n kind: RouteKind.PAGES_API,\n page,\n absolutePagePath: relativeRequest,\n preferredRegion: staticInfo?.preferredRegion,\n middlewareConfig: staticInfo?.middleware || {},\n })\n } else if (\n !isMiddlewareFile(page) &&\n !isInternalComponent(relativeRequest) &&\n !isNonRoutePagesPage(page) &&\n !isInstrumentation\n ) {\n value = getRouteLoaderEntry({\n kind: RouteKind.PAGES,\n page,\n pages: this.pagesMapping,\n absolutePagePath: relativeRequest,\n preferredRegion: staticInfo?.preferredRegion,\n middlewareConfig: staticInfo?.middleware ?? {},\n })\n } else {\n value = relativeRequest\n }\n\n entrypoints[bundlePath] = finalizeEntrypoint({\n compilerType: COMPILER_NAMES.server,\n name: bundlePath,\n isServerComponent,\n value,\n hasAppDir,\n })\n },\n })\n })\n )\n\n if (!this.hasAmpEntrypoints) {\n delete entrypoints[CLIENT_STATIC_FILES_RUNTIME_AMP]\n }\n if (!this.hasPagesRouterEntrypoints) {\n delete entrypoints[CLIENT_STATIC_FILES_RUNTIME_MAIN]\n delete entrypoints['pages/_app']\n delete entrypoints['pages/_error']\n delete entrypoints['/_error']\n delete entrypoints['pages/_document']\n }\n // Remove React Refresh entrypoint chunk as `app` doesn't require it.\n if (!this.hasAmpEntrypoints && !this.hasPagesRouterEntrypoints) {\n delete entrypoints[CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH]\n }\n if (!this.hasAppRouterEntrypoints) {\n delete entrypoints[CLIENT_STATIC_FILES_RUNTIME_MAIN_APP]\n }\n\n return entrypoints\n }\n }\n\n // Enable building of client compilation before server compilation in development\n // @ts-ignore webpack 5\n this.activeWebpackConfigs.parallelism = 1\n\n await Promise.all(\n Array.from(getCacheDirectories(this.activeWebpackConfigs)).map(\n checkPersistentCacheInvalidationAndCleanup\n )\n )\n this.multiCompiler = getWebpackBundler()(\n this.activeWebpackConfigs\n ) as unknown as webpack.MultiCompiler\n\n // Copy over the filesystem so that it is shared between all compilers.\n const inputFileSystem = this.multiCompiler.compilers[0].inputFileSystem\n for (const compiler of this.multiCompiler.compilers) {\n compiler.inputFileSystem = inputFileSystem\n // This is set for the initial compile. After that Watching class in webpack adds it.\n compiler.fsStartTime = Date.now()\n // Ensure NodeEnvironmentPlugin doesn't purge the inputFileSystem. Purging is handled in `done` below.\n compiler.hooks.beforeRun.intercept({\n register(tapInfo: any) {\n if (tapInfo.name === 'NodeEnvironmentPlugin') {\n return null\n }\n return tapInfo\n },\n })\n }\n\n this.multiCompiler.hooks.done.tap('NextjsHotReloader', () => {\n inputFileSystem?.purge?.()\n })\n watchCompilers(\n this.multiCompiler.compilers[0],\n this.multiCompiler.compilers[1],\n this.multiCompiler.compilers[2]\n )\n\n // Watch for changes to client/server page files so we can tell when just\n // the server file changes and trigger a reload for GS(S)P pages\n const changedClientPages = new Set<string>()\n const changedServerPages = new Set<string>()\n const changedEdgeServerPages = new Set<string>()\n\n const changedServerComponentPages = new Set<string>()\n const changedCSSImportPages = new Set<string>()\n\n const prevClientPageHashes = new Map<string, string>()\n const prevServerPageHashes = new Map<string, string>()\n const prevEdgeServerPageHashes = new Map<string, string>()\n const prevCSSImportModuleHashes = new Map<string, string>()\n\n const pageExtensionRegex = new RegExp(\n `\\\\.(?:${this.config.pageExtensions.join('|')})$`\n )\n\n const trackPageChanges =\n (\n pageHashMap: Map<string, string>,\n changedItems: Set<string>,\n serverComponentChangedItems?: Set<string>\n ) =>\n (stats: webpack.Compilation) => {\n try {\n stats.entrypoints.forEach((entry, key) => {\n if (\n key.startsWith('pages/') ||\n key.startsWith('app/') ||\n isMiddlewareFilename(key)\n ) {\n // TODO this doesn't handle on demand loaded chunks\n entry.chunks.forEach((chunk) => {\n if (chunk.id === key) {\n const modsIterable: any =\n stats.chunkGraph.getChunkModulesIterable(chunk)\n\n let hasCSSModuleChanges = false\n let chunksHash = new StringXor()\n let chunksHashServerLayer = new StringXor()\n\n modsIterable.forEach((mod: any) => {\n if (\n mod.resource &&\n mod.resource.replace(/\\\\/g, '/').includes(key) &&\n // Shouldn't match CSS modules, etc.\n pageExtensionRegex.test(mod.resource)\n ) {\n // use original source to calculate hash since mod.hash\n // includes the source map in development which changes\n // every time for both server and client so we calculate\n // the hash without the source map for the page module\n const hash = (\n require('crypto') as typeof import('crypto')\n )\n .createHash('sha1')\n .update(mod.originalSource().buffer())\n .digest()\n .toString('hex')\n\n if (\n mod.layer === WEBPACK_LAYERS.reactServerComponents &&\n mod?.buildInfo?.rsc?.type !== 'client'\n ) {\n chunksHashServerLayer.add(hash)\n }\n\n chunksHash.add(hash)\n } else {\n // for non-pages we can use the module hash directly\n const hash = stats.chunkGraph.getModuleHash(\n mod,\n chunk.runtime\n )\n\n if (\n mod.layer === WEBPACK_LAYERS.reactServerComponents &&\n mod?.buildInfo?.rsc?.type !== 'client'\n ) {\n chunksHashServerLayer.add(hash)\n }\n\n chunksHash.add(hash)\n\n // Both CSS import changes from server and client\n // components are tracked.\n if (\n key.startsWith('app/') &&\n /\\.(css|scss|sass)$/.test(mod.resource || '')\n ) {\n const resourceKey = mod.layer + ':' + mod.resource\n const prevHash =\n prevCSSImportModuleHashes.get(resourceKey)\n if (prevHash && prevHash !== hash) {\n hasCSSModuleChanges = true\n }\n prevCSSImportModuleHashes.set(resourceKey, hash)\n }\n }\n })\n\n const prevHash = pageHashMap.get(key)\n const curHash = chunksHash.toString()\n if (prevHash && prevHash !== curHash) {\n changedItems.add(key)\n }\n pageHashMap.set(key, curHash)\n\n if (serverComponentChangedItems) {\n const serverKey =\n WEBPACK_LAYERS.reactServerComponents + ':' + key\n const prevServerHash = pageHashMap.get(serverKey)\n const curServerHash = chunksHashServerLayer.toString()\n if (prevServerHash && prevServerHash !== curServerHash) {\n serverComponentChangedItems.add(key)\n }\n pageHashMap.set(serverKey, curServerHash)\n }\n\n if (hasCSSModuleChanges) {\n changedCSSImportPages.add(key)\n }\n }\n })\n }\n })\n } catch (err) {\n console.error(err)\n }\n }\n\n this.multiCompiler.compilers[0].hooks.emit.tap(\n 'NextjsHotReloaderForClient',\n trackPageChanges(prevClientPageHashes, changedClientPages)\n )\n this.multiCompiler.compilers[1].hooks.emit.tap(\n 'NextjsHotReloaderForServer',\n trackPageChanges(\n prevServerPageHashes,\n changedServerPages,\n changedServerComponentPages\n )\n )\n this.multiCompiler.compilers[2].hooks.emit.tap(\n 'NextjsHotReloaderForServer',\n trackPageChanges(\n prevEdgeServerPageHashes,\n changedEdgeServerPages,\n changedServerComponentPages\n )\n )\n\n // This plugin watches for changes to _document.js and notifies the client side that it should reload the page\n this.multiCompiler.compilers[1].hooks.failed.tap(\n 'NextjsHotReloaderForServer',\n (err: Error) => {\n this.serverError = err\n this.serverStats = null\n this.serverChunkNames = undefined\n }\n )\n\n this.multiCompiler.compilers[2].hooks.done.tap(\n 'NextjsHotReloaderForServer',\n (stats) => {\n this.serverError = null\n this.edgeServerStats = stats\n }\n )\n\n this.multiCompiler.compilers[1].hooks.done.tap(\n 'NextjsHotReloaderForServer',\n (stats) => {\n this.serverError = null\n this.serverStats = stats\n\n if (!this.pagesDir) {\n return\n }\n\n const { compilation } = stats\n\n // We only watch `_document` for changes on the server compilation\n // the rest of the files will be triggered by the client compilation\n const documentChunk = compilation.namedChunks.get('pages/_document')\n // If the document chunk can't be found we do nothing\n if (!documentChunk) {\n return\n }\n\n // Initial value\n if (this.serverPrevDocumentHash === null) {\n this.serverPrevDocumentHash = documentChunk.hash || null\n return\n }\n\n // If _document.js didn't change we don't trigger a reload.\n if (documentChunk.hash === this.serverPrevDocumentHash) {\n return\n }\n\n // As document chunk will change if new app pages are joined,\n // since react bundle is different it will effect the chunk hash.\n // So we diff the chunk changes, if there's only new app page chunk joins,\n // then we don't trigger a reload by checking pages/_document chunk change.\n if (this.appDir) {\n const chunkNames = new Set(compilation.namedChunks.keys())\n const diffChunkNames = difference<string>(\n this.serverChunkNames || new Set(),\n chunkNames\n )\n\n if (\n diffChunkNames.length === 0 ||\n diffChunkNames.every((chunkName) => chunkName.startsWith('app/'))\n ) {\n return\n }\n this.serverChunkNames = chunkNames\n }\n\n this.serverPrevDocumentHash = documentChunk.hash || null\n\n // Notify reload to reload the page, as _document.js was changed (different hash)\n this.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE,\n data: '_document has changed',\n })\n }\n )\n\n this.multiCompiler.hooks.done.tap('NextjsHotReloaderForServer', (stats) => {\n const reloadAfterInvalidation = this.reloadAfterInvalidation\n this.reloadAfterInvalidation = false\n\n const serverOnlyChanges = difference<string>(\n changedServerPages,\n changedClientPages\n )\n\n const edgeServerOnlyChanges = difference<string>(\n changedEdgeServerPages,\n changedClientPages\n )\n\n const pageChanges = serverOnlyChanges\n .concat(edgeServerOnlyChanges)\n .filter((key) => key.startsWith('pages/'))\n\n const middlewareChanges = [\n ...Array.from(changedEdgeServerPages),\n ...Array.from(changedServerPages),\n ].filter((name) => isMiddlewareFilename(name))\n\n if (middlewareChanges.length > 0) {\n this.send({\n event: HMR_ACTIONS_SENT_TO_BROWSER.MIDDLEWARE_CHANGES,\n })\n }\n\n if (pageChanges.length > 0) {\n this.send({\n event: HMR_ACTIONS_SENT_TO_BROWSER.SERVER_ONLY_CHANGES,\n pages: serverOnlyChanges.map((pg) =>\n denormalizePagePath(pg.slice('pages'.length))\n ),\n })\n }\n\n if (\n changedServerComponentPages.size ||\n changedCSSImportPages.size ||\n reloadAfterInvalidation\n ) {\n this.resetFetch()\n this.refreshServerComponents(stats.hash)\n }\n\n changedClientPages.clear()\n changedServerPages.clear()\n changedEdgeServerPages.clear()\n changedServerComponentPages.clear()\n changedCSSImportPages.clear()\n })\n\n this.multiCompiler.compilers[0].hooks.failed.tap(\n 'NextjsHotReloaderForClient',\n (err: Error) => {\n this.clientError = err\n this.clientStats = null\n }\n )\n this.multiCompiler.compilers[0].hooks.done.tap(\n 'NextjsHotReloaderForClient',\n (stats) => {\n this.clientError = null\n this.clientStats = stats\n\n const { compilation } = stats\n const chunkNames = new Set(\n [...compilation.namedChunks.keys()].filter(\n (name) => !!getRouteFromEntrypoint(name)\n )\n )\n\n if (this.prevChunkNames) {\n // detect chunks which have to be replaced with a new template\n // e.g, pages/index.js <-> pages/_error.js\n const addedPages = diff(chunkNames, this.prevChunkNames!)\n const removedPages = diff(this.prevChunkNames!, chunkNames)\n\n if (addedPages.size > 0) {\n for (const addedPage of addedPages) {\n const page = getRouteFromEntrypoint(addedPage)\n this.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.ADDED_PAGE,\n data: [page],\n })\n }\n }\n\n if (removedPages.size > 0) {\n for (const removedPage of removedPages) {\n const page = getRouteFromEntrypoint(removedPage)\n this.send({\n action: HMR_ACTIONS_SENT_TO_BROWSER.REMOVED_PAGE,\n data: [page],\n })\n }\n }\n }\n\n this.prevChunkNames = chunkNames\n }\n )\n\n this.webpackHotMiddleware = new WebpackHotMiddleware(\n this.multiCompiler.compilers,\n this.versionInfo,\n this.devtoolsFrontendUrl\n )\n\n let booted = false\n\n this.watcher = await new Promise((resolve) => {\n const watcher = this.multiCompiler?.watch(\n // @ts-ignore webpack supports an array of watchOptions when using a multiCompiler\n this.activeWebpackConfigs.map((config) => config.watchOptions!),\n // Errors are handled separately\n (_err: any) => {\n if (!booted) {\n booted = true\n resolve(watcher)\n }\n }\n )\n })\n\n this.onDemandEntries = onDemandEntryHandler({\n hotReloader: this,\n multiCompiler: this.multiCompiler,\n pagesDir: this.pagesDir,\n appDir: this.appDir,\n rootDir: this.dir,\n nextConfig: this.config,\n ...(this.config.onDemandEntries as {\n maxInactiveAge: number\n pagesBufferLength: number\n }),\n })\n\n this.middlewares = [\n getOverlayMiddleware({\n rootDirectory: this.dir,\n isSrcDir: this.isSrcDir,\n clientStats: () => this.clientStats,\n serverStats: () => this.serverStats,\n edgeServerStats: () => this.edgeServerStats,\n }),\n getSourceMapMiddleware({\n clientStats: () => this.clientStats,\n serverStats: () => this.serverStats,\n edgeServerStats: () => this.edgeServerStats,\n }),\n getNextErrorFeedbackMiddleware(this.telemetry),\n getDevOverlayFontMiddleware(),\n getDisableDevIndicatorMiddleware(),\n getRestartDevServerMiddleware({\n telemetry: this.telemetry,\n webpackCacheDirectories:\n this.activeWebpackConfigs != null\n ? getCacheDirectories(this.activeWebpackConfigs)\n : undefined,\n }),\n ]\n }\n\n public invalidate(\n { reloadAfterInvalidation }: { reloadAfterInvalidation: boolean } = {\n reloadAfterInvalidation: false,\n }\n ) {\n // Cache the `reloadAfterInvalidation` flag, and use it to reload the page when compilation is done\n this.reloadAfterInvalidation = reloadAfterInvalidation\n const outputPath = this.multiCompiler?.outputPath\n if (outputPath) {\n getInvalidator(outputPath)?.invalidate()\n }\n }\n\n public async getCompilationErrors(page: string) {\n const getErrors = ({ compilation }: webpack.Stats) => {\n const failedPages = erroredPages(compilation)\n const normalizedPage = normalizePathSep(page)\n // If there is an error related to the requesting page we display it instead of the first error\n return failedPages[normalizedPage]?.length > 0\n ? failedPages[normalizedPage]\n : compilation.errors\n }\n\n if (this.clientError) {\n return [this.clientError]\n } else if (this.serverError) {\n return [this.serverError]\n } else if (this.clientStats?.hasErrors()) {\n return getErrors(this.clientStats)\n } else if (this.serverStats?.hasErrors()) {\n return getErrors(this.serverStats)\n } else if (this.edgeServerStats?.hasErrors()) {\n return getErrors(this.edgeServerStats)\n } else {\n return []\n }\n }\n\n public send(action: HMR_ACTION_TYPES): void {\n this.webpackHotMiddleware!.publish(action)\n }\n\n public async ensurePage({\n page,\n clientOnly,\n appPaths,\n definition,\n isApp,\n url,\n }: {\n page: string\n clientOnly: boolean\n appPaths?: ReadonlyArray<string> | null\n isApp?: boolean\n definition?: RouteDefinition\n url?: string\n }): Promise<void> {\n return this.hotReloaderSpan\n .traceChild('ensure-page', {\n inputPage: page,\n })\n .traceAsyncFn(async () => {\n // Make sure we don't re-build or dispose prebuilt pages\n if (page !== '/_error' && BLOCKED_PAGES.indexOf(page) !== -1) {\n return\n }\n const error = clientOnly\n ? this.clientError\n : this.serverError || this.clientError\n if (error) {\n throw error\n }\n\n return this.onDemandEntries?.ensurePage({\n page,\n appPaths,\n definition,\n isApp,\n url,\n })\n })\n }\n\n public close() {\n this.webpackHotMiddleware?.close()\n }\n}\n"],"names":["StringXor","getOverlayMiddleware","getSourceMapMiddleware","WebpackHotMiddleware","join","relative","isAbsolute","posix","dirname","createEntrypoints","createPagesMapping","finalizeEntrypoint","getClientEntry","getEdgeServerEntry","getAppEntry","runDependingOnPageType","getStaticInfoIncludingLayouts","getInstrumentationEntry","watchCompilers","Log","getBaseWebpackConfig","getCacheDirectories","loadProjectInfo","APP_DIR_ALIAS","WEBPACK_LAYERS","recursiveDelete","BLOCKED_PAGES","CLIENT_STATIC_FILES_RUNTIME_AMP","CLIENT_STATIC_FILES_RUNTIME_MAIN","CLIENT_STATIC_FILES_RUNTIME_MAIN_APP","CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH","COMPILER_NAMES","RSC_MODULE_TYPES","getPathMatch","findPageFile","BUILDING","getEntries","EntryTypes","getInvalidator","onDemandEntryHandler","denormalizePagePath","normalizePathSep","getRouteFromEntrypoint","difference","isInstrumentationHookFile","isMiddlewareFile","isMiddlewareFilename","DecodeError","trace","getProperError","ws","existsSync","promises","fs","parseVersionInfo","isAPIRoute","getRouteLoaderEntry","isInternalComponent","isNonRoutePagesPage","RouteKind","HMR_ACTIONS_SENT_TO_BROWSER","PAGE_TYPES","FAST_REFRESH_RUNTIME_RELOAD","getNodeDebugType","getNextErrorFeedbackMiddleware","getDevOverlayFontMiddleware","getDisableDevIndicatorMiddleware","getWebpackBundler","getRestartDevServerMiddleware","checkPersistentCacheInvalidationAndCleanup","MILLISECONDS_IN_NANOSECOND","BigInt","diff","a","b","Set","filter","v","has","wsServer","Server","noServer","renderScriptError","res","error","verbose","setHeader","code","finished","undefined","console","stack","statusCode","end","addCorsSupport","req","url","startsWith","preflight","headers","origin","method","writeHead","matchNextPageBundleRequest","findEntryModule","module","compilation","issuer","moduleGraph","getIssuer","erroredPages","failedPages","errors","entryModule","name","enhancedName","push","getVersionInfo","installed","require","version","fetch","ok","staleness","latest","canary","json","e","HotReloaderWebpack","constructor","dir","config","isSrcDir","pagesDir","distDir","buildId","encryptionKey","previewProps","rewrites","appDir","telemetry","resetFetch","clientError","serverError","hmrServerError","pagesMapping","versionInfo","reloadAfterInvalidation","hasAmpEntrypoints","hasAppRouterEntrypoints","hasPagesRouterEntrypoints","middlewares","clientStats","serverStats","edgeServerStats","serverPrevDocumentHash","hotReloaderSpan","process","env","__NEXT_VERSION","stop","run","parsedUrl","handlePageBundleRequest","pageBundleRes","parsedPageBundleUrl","pathname","params","decodedPagePath","path","map","param","decodeURIComponent","_","page","indexOf","ensurePage","clientOnly","getCompilationErrors","length","middleware","calledNext","setHmrServerError","clearHmrServerError","send","action","RELOAD_PAGE","data","refreshServerComponents","hash","SERVER_COMPONENT_CHANGES","onHMR","_socket","head","callback","handleUpgrade","socket","client","webpackHotMiddleware","onDemandEntries","addEventListener","toString","payload","JSON","parse","traceChild","event","spanName","startTime","Math","floor","attrs","attributes","endTime","updatedModules","m","replace","appPagesBrowser","isPageHidden","errorCount","warningCount","stackTrace","hadRuntimeError","warn","fileMessage","file","exec","fileUrl","URL","cwd","modules","searchParams","getAll","filepath","slice","pagesDirBrowser","cleanedFilePath","manualTraceChild","clientId","id","clean","span","traceAsyncFn","getWebpackConfig","webpackConfigSpan","pageExtensions","pagePaths","Promise","all","isDev","pagesType","PAGES","i","entrypoints","envFiles","pages","previewMode","rootDir","commonWebpackOptions","dev","originalRewrites","_originalRewrites","originalRedirects","_originalRedirects","runWebpackSpan","info","compilerType","server","edgeServer","buildFallbackError","fallbackWatcher","fallbackConfig","beforeFiles","afterFiles","fallback","isDevFallback","fallbackCompiler","resolve","bootedFallbackCompiler","watch","watchOptions","_err","tracedGetVersionInfo","versionInfoSpan","start","startSpan","nodeDebugType","devtoolsFrontendUrl","debugPort","debugInfo","debugInfoList","then","mkdir","recursive","distPackageJsonPath","writeFile","activeWebpackConfigs","defaultEntry","entry","args","outputPath","multiCompiler","entries","isClientCompilation","isNodeServerCompilation","isEdgeServerCompilation","Object","keys","entryKey","entryData","bundlePath","dispose","result","key","isEntry","type","ENTRY","isChildEntry","CHILD_ENTRY","pageExists","absolutePagePath","absoluteEntryFilePath","hasAppDir","isAppPath","staticInfo","isInsideAppDir","pageFilePath","amp","isServerComponent","rsc","pageType","APP","ROOT","isInstrumentation","pageRuntime","runtime","experimental","nodeMiddleware","onEdgeServer","status","normalizedBundlePath","value","isEdgeServer","appDirLoader","appPaths","pagePath","tsconfigPath","typescript","basePath","assetPrefix","nextConfigOutput","output","preferredRegion","middlewareConfig","Buffer","from","stringify","isGlobalNotFoundEnabled","globalNotFound","import","onClient","request","onServer","relativeRequest","context","kind","PAGES_API","parallelism","Array","inputFileSystem","compilers","compiler","fsStartTime","Date","now","hooks","beforeRun","intercept","register","tapInfo","done","tap","purge","changedClientPages","changedServerPages","changedEdgeServerPages","changedServerComponentPages","changedCSSImportPages","prevClientPageHashes","Map","prevServerPageHashes","prevEdgeServerPageHashes","prevCSSImportModuleHashes","pageExtensionRegex","RegExp","trackPageChanges","pageHashMap","changedItems","serverComponentChangedItems","stats","forEach","chunks","chunk","modsIterable","chunkGraph","getChunkModulesIterable","hasCSSModuleChanges","chunksHash","chunksHashServerLayer","mod","resource","includes","test","createHash","update","originalSource","buffer","digest","layer","reactServerComponents","buildInfo","add","getModuleHash","resourceKey","prevHash","get","set","curHash","serverKey","prevServerHash","curServerHash","err","emit","failed","serverChunkNames","documentChunk","namedChunks","chunkNames","diffChunkNames","every","chunkName","serverOnlyChanges","edgeServerOnlyChanges","pageChanges","concat","middlewareChanges","MIDDLEWARE_CHANGES","SERVER_ONLY_CHANGES","pg","size","clear","prevChunkNames","addedPages","removedPages","addedPage","ADDED_PAGE","removedPage","REMOVED_PAGE","booted","watcher","hotReloader","nextConfig","rootDirectory","webpackCacheDirectories","invalidate","getErrors","normalizedPage","hasErrors","publish","definition","isApp","inputPage","close"],"mappings":"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","ignoreList":[0]}
@@ -1,9 +1,8 @@
1
1
  import { getOriginalCodeFrame } from '../../next-devtools/server/shared';
2
2
  import { middlewareResponse } from '../../next-devtools/server/middleware-response';
3
- import fs, { constants as FS } from 'fs/promises';
4
3
  import path from 'path';
5
4
  import url from 'url';
6
- import { launchEditor } from '../../next-devtools/server/launch-editor';
5
+ import { openFileInEditor } from '../../next-devtools/server/launch-editor';
7
6
  import { SourceMapConsumer } from 'next/dist/compiled/source-map08';
8
7
  import { getSourceMapFromFile } from './get-source-map-from-file';
9
8
  import { findSourceMap } from 'node:module';
@@ -247,7 +246,7 @@ async function createOriginalStackFrame(project, projectPath, frame) {
247
246
  originalCodeFrame: getOriginalCodeFrame(traced.frame, traced.source)
248
247
  };
249
248
  }
250
- export function getOverlayMiddleware(project, projectPath) {
249
+ export function getOverlayMiddleware({ project, projectPath, isSrcDir }) {
251
250
  return async function(req, res, next) {
252
251
  const { pathname, searchParams } = new URL(req.url, 'http://n');
253
252
  if (pathname === '/__nextjs_original-stack-frames') {
@@ -288,16 +287,23 @@ export function getOverlayMiddleware(project, projectPath) {
288
287
  }));
289
288
  return middlewareResponse.json(res, result);
290
289
  } else if (pathname === '/__nextjs_launch-editor') {
291
- const frame = createStackFrame(searchParams);
292
- if (!frame) return middlewareResponse.badRequest(res);
293
- const fileExists = await fs.access(frame.file, FS.F_OK).then(()=>true, ()=>false);
294
- if (!fileExists) return middlewareResponse.notFound(res);
295
- try {
296
- launchEditor(frame.file, frame.line ?? 1, frame.column ?? 1);
297
- } catch (err) {
298
- console.log('Failed to launch editor:', err);
290
+ const isAppRelativePath = searchParams.get('isAppRelativePath') === '1';
291
+ let openEditorResult;
292
+ if (isAppRelativePath) {
293
+ const relativeFilePath = searchParams.get('file') || '';
294
+ const absoluteFilePath = path.join(projectPath, 'app', isSrcDir ? 'src' : '', relativeFilePath);
295
+ openEditorResult = await openFileInEditor(absoluteFilePath, 1, 1);
296
+ } else {
297
+ const frame = createStackFrame(searchParams);
298
+ if (!frame) return middlewareResponse.badRequest(res);
299
+ openEditorResult = await openFileInEditor(frame.file, frame.line ?? 1, frame.column ?? 1);
300
+ }
301
+ if (openEditorResult.error) {
299
302
  return middlewareResponse.internalServerError(res);
300
303
  }
304
+ if (!openEditorResult.found) {
305
+ return middlewareResponse.notFound(res);
306
+ }
301
307
  return middlewareResponse.noContent(res);
302
308
  }
303
309
  return next();