next 16.0.2-canary.10 → 16.0.2-canary.12

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 (114) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/babel/loader/get-config.js +5 -0
  3. package/dist/build/babel/loader/get-config.js.map +1 -1
  4. package/dist/build/index.js +7 -4
  5. package/dist/build/index.js.map +1 -1
  6. package/dist/build/jest/jest.js +2 -1
  7. package/dist/build/jest/jest.js.map +1 -1
  8. package/dist/build/load-entrypoint.js +1 -2
  9. package/dist/build/load-entrypoint.js.map +1 -1
  10. package/dist/build/lockfile.d.ts +1 -1
  11. package/dist/build/lockfile.js +5 -9
  12. package/dist/build/lockfile.js.map +1 -1
  13. package/dist/build/next-config-ts/transpile-config.js +13 -3
  14. package/dist/build/next-config-ts/transpile-config.js.map +1 -1
  15. package/dist/build/swc/index.d.ts +4 -2
  16. package/dist/build/swc/index.js +54 -51
  17. package/dist/build/swc/index.js.map +1 -1
  18. package/dist/build/swc/install-bindings.d.ts +15 -0
  19. package/dist/build/swc/install-bindings.js +30 -0
  20. package/dist/build/swc/install-bindings.js.map +1 -0
  21. package/dist/build/templates/app-page.js +7 -1
  22. package/dist/build/templates/app-page.js.map +1 -1
  23. package/dist/build/turbopack-build/impl.js +9 -4
  24. package/dist/build/turbopack-build/impl.js.map +1 -1
  25. package/dist/build/webpack/loaders/lightningcss-loader/src/loader.js +7 -2
  26. package/dist/build/webpack/loaders/lightningcss-loader/src/loader.js.map +1 -1
  27. package/dist/build/webpack/loaders/lightningcss-loader/src/minify.js +2 -2
  28. package/dist/build/webpack/loaders/lightningcss-loader/src/minify.js.map +1 -1
  29. package/dist/build/webpack/loaders/next-app-loader/index.js +6 -0
  30. package/dist/build/webpack/loaders/next-app-loader/index.js.map +1 -1
  31. package/dist/build/webpack/loaders/next-barrel-loader.js +5 -0
  32. package/dist/build/webpack/loaders/next-barrel-loader.js.map +1 -1
  33. package/dist/build/webpack/loaders/next-metadata-image-loader.js +5 -0
  34. package/dist/build/webpack/loaders/next-metadata-image-loader.js.map +1 -1
  35. package/dist/build/webpack/loaders/next-metadata-route-loader.js +5 -0
  36. package/dist/build/webpack/loaders/next-metadata-route-loader.js.map +1 -1
  37. package/dist/build/webpack/loaders/next-swc-loader.js +10 -6
  38. package/dist/build/webpack/loaders/next-swc-loader.js.map +1 -1
  39. package/dist/build/webpack-build/impl.js +4 -1
  40. package/dist/build/webpack-build/impl.js.map +1 -1
  41. package/dist/build/webpack-config.js +2 -7
  42. package/dist/build/webpack-config.js.map +1 -1
  43. package/dist/cli/next-typegen.js +3 -0
  44. package/dist/cli/next-typegen.js.map +1 -1
  45. package/dist/client/app-bootstrap.js +1 -1
  46. package/dist/client/index.js +1 -1
  47. package/dist/compiled/@next/font/dist/google/font-data.json +63 -0
  48. package/dist/compiled/@next/font/dist/google/index.d.ts +40 -0
  49. package/dist/esm/build/babel/loader/get-config.js +5 -0
  50. package/dist/esm/build/babel/loader/get-config.js.map +1 -1
  51. package/dist/esm/build/index.js +7 -4
  52. package/dist/esm/build/index.js.map +1 -1
  53. package/dist/esm/build/load-entrypoint.js +2 -3
  54. package/dist/esm/build/load-entrypoint.js.map +1 -1
  55. package/dist/esm/build/lockfile.js +5 -9
  56. package/dist/esm/build/lockfile.js.map +1 -1
  57. package/dist/esm/build/next-config-ts/transpile-config.js +13 -3
  58. package/dist/esm/build/next-config-ts/transpile-config.js.map +1 -1
  59. package/dist/esm/build/swc/index.js +52 -49
  60. package/dist/esm/build/swc/index.js.map +1 -1
  61. package/dist/esm/build/swc/install-bindings.js +20 -0
  62. package/dist/esm/build/swc/install-bindings.js.map +1 -0
  63. package/dist/esm/build/templates/app-page.js +7 -1
  64. package/dist/esm/build/templates/app-page.js.map +1 -1
  65. package/dist/esm/build/turbopack-build/impl.js +10 -5
  66. package/dist/esm/build/turbopack-build/impl.js.map +1 -1
  67. package/dist/esm/build/webpack/loaders/lightningcss-loader/src/loader.js +7 -2
  68. package/dist/esm/build/webpack/loaders/lightningcss-loader/src/loader.js.map +1 -1
  69. package/dist/esm/build/webpack/loaders/lightningcss-loader/src/minify.js +2 -2
  70. package/dist/esm/build/webpack/loaders/lightningcss-loader/src/minify.js.map +1 -1
  71. package/dist/esm/build/webpack/loaders/next-app-loader/index.js +6 -0
  72. package/dist/esm/build/webpack/loaders/next-app-loader/index.js.map +1 -1
  73. package/dist/esm/build/webpack/loaders/next-barrel-loader.js +5 -0
  74. package/dist/esm/build/webpack/loaders/next-barrel-loader.js.map +1 -1
  75. package/dist/esm/build/webpack/loaders/next-metadata-image-loader.js +5 -0
  76. package/dist/esm/build/webpack/loaders/next-metadata-image-loader.js.map +1 -1
  77. package/dist/esm/build/webpack/loaders/next-metadata-route-loader.js +5 -0
  78. package/dist/esm/build/webpack/loaders/next-metadata-route-loader.js.map +1 -1
  79. package/dist/esm/build/webpack/loaders/next-swc-loader.js +11 -7
  80. package/dist/esm/build/webpack/loaders/next-swc-loader.js.map +1 -1
  81. package/dist/esm/build/webpack-build/impl.js +4 -1
  82. package/dist/esm/build/webpack-build/impl.js.map +1 -1
  83. package/dist/esm/build/webpack-config.js +2 -7
  84. package/dist/esm/build/webpack-config.js.map +1 -1
  85. package/dist/esm/client/app-bootstrap.js +1 -1
  86. package/dist/esm/client/index.js +1 -1
  87. package/dist/esm/server/config.js +2 -2
  88. package/dist/esm/server/config.js.map +1 -1
  89. package/dist/esm/server/dev/hot-reloader-turbopack.js +3 -4
  90. package/dist/esm/server/dev/hot-reloader-turbopack.js.map +1 -1
  91. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  92. package/dist/esm/server/lib/app-info-log.js +1 -1
  93. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js +3 -0
  94. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  95. package/dist/esm/server/lib/start-server.js +1 -1
  96. package/dist/esm/server/lib/trace/tracer.js +6 -5
  97. package/dist/esm/server/lib/trace/tracer.js.map +1 -1
  98. package/dist/esm/shared/lib/errors/canary-only-config-error.js +1 -1
  99. package/dist/server/config.js +2 -2
  100. package/dist/server/config.js.map +1 -1
  101. package/dist/server/dev/hot-reloader-turbopack.js +2 -3
  102. package/dist/server/dev/hot-reloader-turbopack.js.map +1 -1
  103. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  104. package/dist/server/lib/app-info-log.js +1 -1
  105. package/dist/server/lib/router-utils/setup-dev-bundler.js +3 -0
  106. package/dist/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  107. package/dist/server/lib/start-server.js +1 -1
  108. package/dist/server/lib/trace/tracer.js +6 -5
  109. package/dist/server/lib/trace/tracer.js.map +1 -1
  110. package/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  111. package/dist/telemetry/anonymous-meta.js +1 -1
  112. package/dist/telemetry/events/session-stopped.js +2 -2
  113. package/dist/telemetry/events/version.js +2 -2
  114. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/server/lib/router-utils/setup-dev-bundler.ts"],"sourcesContent":["import type { NextConfigComplete } from '../../config-shared'\nimport type { FilesystemDynamicRoute } from './filesystem'\nimport type { UnwrapPromise } from '../../../lib/coalesced-function'\nimport type { ProxyMatcher } from '../../../build/analysis/get-page-static-info'\nimport type { RoutesManifest } from '../../../build'\nimport type { MiddlewareRouteMatch } from '../../../shared/lib/router/utils/middleware-route-matcher'\nimport type { PropagateToWorkersField } from './types'\nimport type { NextJsHotReloaderInterface } from '../../dev/hot-reloader-types'\n\nimport { createDefineEnv } from '../../../build/swc'\nimport fs from 'fs'\nimport url from 'url'\nimport path from 'path'\nimport qs from 'querystring'\nimport Watchpack from 'next/dist/compiled/watchpack'\nimport findUp from 'next/dist/compiled/find-up'\nimport { buildCustomRoute } from './filesystem'\nimport * as Log from '../../../build/output/log'\nimport { setGlobal } from '../../../trace/shared'\nimport type { Telemetry } from '../../../telemetry/storage'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport { createValidFileMatcher } from '../find-page-file'\nimport {\n EVENT_BUILD_FEATURE_USAGE,\n eventCliSession,\n} from '../../../telemetry/events'\nimport { getSortedRoutes } from '../../../shared/lib/router/utils'\nimport { sortByPageExts } from '../../../build/sort-by-page-exts'\nimport { verifyTypeScriptSetup } from '../../../lib/verify-typescript-setup'\nimport { verifyPartytownSetup } from '../../../lib/verify-partytown-setup'\nimport { getNamedRouteRegex } from '../../../shared/lib/router/utils/route-regex'\nimport { normalizeAppPath } from '../../../shared/lib/router/utils/app-paths'\nimport { buildDataRoute } from './build-data-route'\nimport { getRouteMatcher } from '../../../shared/lib/router/utils/route-matcher'\nimport { normalizePathSep } from '../../../shared/lib/page-path/normalize-path-sep'\nimport { createClientRouterFilter } from '../../../lib/create-client-router-filter'\nimport { absolutePathToPage } from '../../../shared/lib/page-path/absolute-path-to-page'\nimport { generateInterceptionRoutesRewrites } from '../../../lib/generate-interception-routes-rewrites'\n\nimport {\n CLIENT_STATIC_FILES_PATH,\n DEV_CLIENT_PAGES_MANIFEST,\n DEV_CLIENT_MIDDLEWARE_MANIFEST,\n PHASE_DEVELOPMENT_SERVER,\n TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST,\n ROUTES_MANIFEST,\n PRERENDER_MANIFEST,\n} from '../../../shared/lib/constants'\n\nimport { getMiddlewareRouteMatcher } from '../../../shared/lib/router/utils/middleware-route-matcher'\n\nimport {\n isMiddlewareFile,\n NestedMiddlewareError,\n isInstrumentationHookFile,\n getPossibleMiddlewareFilenames,\n getPossibleInstrumentationHookFilenames,\n} from '../../../build/utils'\nimport { devPageFiles } from '../../../build/webpack/plugins/next-types-plugin/shared'\nimport type { LazyRenderServerInstance } from '../router-server'\nimport { HMR_MESSAGE_SENT_TO_BROWSER } from '../../dev/hot-reloader-types'\nimport { PAGE_TYPES } from '../../../lib/page-types'\nimport { generateEncryptionKeyBase64 } from '../../app-render/encryption-utils-server'\nimport {\n isMetadataRouteFile,\n isStaticMetadataFile,\n} from '../../../lib/metadata/is-metadata-route'\nimport { normalizeMetadataPageToRoute } from '../../../lib/metadata/get-metadata-route'\nimport { JsConfigPathsPlugin } from '../../../build/webpack/plugins/jsconfig-paths-plugin'\nimport { store as consoleStore } from '../../../build/output/store'\nimport {\n isFileSystemCacheEnabledForDev,\n ModuleBuildError,\n} from '../../../shared/lib/turbopack/utils'\nimport { getDefineEnv } from '../../../build/define-env'\nimport { TurbopackInternalError } from '../../../shared/lib/turbopack/internal-error'\nimport { normalizePath } from '../../../lib/normalize-path'\nimport {\n JSON_CONTENT_TYPE_HEADER,\n MIDDLEWARE_FILENAME,\n PROXY_FILENAME,\n} from '../../../lib/constants'\nimport {\n createRouteTypesManifest,\n writeRouteTypesManifest,\n writeValidatorFile,\n} from './route-types-utils'\nimport { writeCacheLifeTypes } from './cache-life-type-utils'\nimport { isParallelRouteSegment } from '../../../shared/lib/segment'\nimport { ensureLeadingSlash } from '../../../shared/lib/page-path/ensure-leading-slash'\nimport { Lockfile } from '../../../build/lockfile'\nimport { deobfuscateText } from '../../../shared/lib/magic-identifier'\n\nexport type SetupOpts = {\n renderServer: LazyRenderServerInstance\n dir: string\n turbo?: boolean\n appDir?: string\n pagesDir?: string\n telemetry: Telemetry\n isCustomServer?: boolean\n fsChecker: UnwrapPromise<\n ReturnType<typeof import('./filesystem').setupFsCheck>\n >\n nextConfig: NextConfigComplete\n port: number\n onDevServerCleanup: ((listener: () => Promise<void>) => void) | undefined\n resetFetch: () => void\n}\n\nexport interface DevRoutesManifest {\n version: number\n caseSensitive: RoutesManifest['caseSensitive']\n basePath: RoutesManifest['basePath']\n rewrites: RoutesManifest['rewrites']\n redirects: RoutesManifest['redirects']\n headers: RoutesManifest['headers']\n i18n: RoutesManifest['i18n']\n skipProxyUrlNormalize: RoutesManifest['skipProxyUrlNormalize']\n}\n\nexport type ServerFields = {\n actualMiddlewareFile?: string | undefined\n actualInstrumentationHookFile?: string | undefined\n appPathRoutes?: Record<string, string | string[]>\n middleware?:\n | {\n page: string\n match: MiddlewareRouteMatch\n matchers?: ProxyMatcher[]\n }\n | undefined\n hasAppNotFound?: boolean\n interceptionRoutes?: ReturnType<\n typeof import('./filesystem').buildCustomRoute\n >[]\n setIsrStatus?: (key: string, value: boolean | undefined) => void\n resetFetch?: () => void\n}\n\nasync function verifyTypeScript(opts: SetupOpts) {\n const verifyResult = await verifyTypeScriptSetup({\n dir: opts.dir,\n distDir: opts.nextConfig.distDir,\n intentDirs: [opts.pagesDir, opts.appDir].filter(Boolean) as string[],\n typeCheckPreflight: false,\n tsconfigPath: opts.nextConfig.typescript.tsconfigPath,\n disableStaticImages: opts.nextConfig.images.disableStaticImages,\n hasAppDir: !!opts.appDir,\n hasPagesDir: !!opts.pagesDir,\n isolatedDevBuild: opts.nextConfig.experimental.isolatedDevBuild,\n })\n\n if (verifyResult.version) {\n return true\n }\n return false\n}\n\nexport async function propagateServerField(\n opts: SetupOpts,\n field: PropagateToWorkersField,\n args: any\n) {\n await opts.renderServer?.instance?.propagateServerField(opts.dir, field, args)\n}\n\nasync function startWatcher(\n opts: SetupOpts & {\n isSrcDir: boolean\n }\n) {\n const { nextConfig, appDir, pagesDir, dir, resetFetch } = opts\n const { useFileSystemPublicRoutes } = nextConfig\n\n const distDir = path.join(opts.dir, opts.nextConfig.distDir)\n\n setGlobal('distDir', distDir)\n setGlobal('phase', PHASE_DEVELOPMENT_SERVER)\n\n let lockfile\n if (opts.nextConfig.experimental.lockDistDir) {\n fs.mkdirSync(distDir, { recursive: true })\n lockfile = await Lockfile.acquireWithRetriesOrExit(\n path.join(distDir, 'lock'),\n 'next dev'\n )\n }\n\n const validFileMatcher = createValidFileMatcher(\n nextConfig.pageExtensions,\n appDir\n )\n\n const serverFields: ServerFields = {}\n\n // Update logging state once based on next.config.js when initializing\n consoleStore.setState({\n logging: nextConfig.logging !== false,\n })\n\n const hotReloader: NextJsHotReloaderInterface = opts.turbo\n ? await (async () => {\n const createHotReloaderTurbopack = (\n require('../../dev/hot-reloader-turbopack') as typeof import('../../dev/hot-reloader-turbopack')\n ).createHotReloaderTurbopack\n return await createHotReloaderTurbopack(\n opts,\n serverFields,\n distDir,\n resetFetch,\n lockfile\n )\n })()\n : await (async () => {\n const HotReloaderWebpack = (\n require('../../dev/hot-reloader-webpack') as typeof import('../../dev/hot-reloader-webpack')\n ).default\n return new HotReloaderWebpack(opts.dir, {\n isSrcDir: opts.isSrcDir,\n appDir,\n pagesDir,\n distDir,\n config: opts.nextConfig,\n buildId: 'development',\n encryptionKey: await generateEncryptionKeyBase64({\n isBuild: false,\n distDir,\n }),\n telemetry: opts.telemetry,\n rewrites: opts.fsChecker.rewrites,\n previewProps: opts.fsChecker.prerenderManifest.preview,\n resetFetch,\n lockfile,\n onDevServerCleanup: opts.onDevServerCleanup,\n })\n })()\n\n await hotReloader.start()\n\n // have to write this after starting hot-reloader since that\n // cleans the dist dir\n const distTypesDir = path.join(distDir, 'types')\n await writeRouteTypesManifest(\n {\n appRoutes: {},\n pageRoutes: {},\n layoutRoutes: {},\n appRouteHandlerRoutes: {},\n redirectRoutes: {},\n rewriteRoutes: {},\n appPagePaths: new Set(),\n pagesRouterPagePaths: new Set(),\n layoutPaths: new Set(),\n appRouteHandlers: new Set(),\n pageApiRoutes: new Set(),\n filePathToRoute: new Map(),\n },\n path.join(distTypesDir, 'routes.d.ts'),\n opts.nextConfig\n )\n\n const routesManifestPath = path.join(distDir, ROUTES_MANIFEST)\n const routesManifest: DevRoutesManifest = {\n version: 3,\n caseSensitive: !!nextConfig.experimental.caseSensitiveRoutes,\n basePath: nextConfig.basePath,\n rewrites: opts.fsChecker.rewrites,\n redirects: opts.fsChecker.redirects,\n headers: opts.fsChecker.headers,\n i18n: nextConfig.i18n || undefined,\n skipProxyUrlNormalize: nextConfig.skipProxyUrlNormalize,\n }\n await fs.promises.writeFile(\n routesManifestPath,\n JSON.stringify(routesManifest)\n )\n\n const prerenderManifestPath = path.join(distDir, PRERENDER_MANIFEST)\n await fs.promises.writeFile(\n prerenderManifestPath,\n JSON.stringify(opts.fsChecker.prerenderManifest, null, 2)\n )\n\n if (opts.nextConfig.experimental.nextScriptWorkers) {\n await verifyPartytownSetup(\n opts.dir,\n path.join(distDir, CLIENT_STATIC_FILES_PATH)\n )\n }\n\n opts.fsChecker.ensureCallback(async function ensure(item) {\n if (item.type === 'appFile' || item.type === 'pageFile') {\n await hotReloader.ensurePage({\n clientOnly: false,\n page: item.itemPath,\n isApp: item.type === 'appFile',\n definition: undefined,\n })\n }\n })\n\n let resolved = false\n let prevSortedRoutes: string[] = []\n\n await new Promise<void>(async (resolve, reject) => {\n if (pagesDir) {\n // Watchpack doesn't emit an event for an empty directory\n fs.readdir(pagesDir, (_, files) => {\n if (files?.length) {\n return\n }\n\n if (!resolved) {\n resolve()\n resolved = true\n }\n })\n }\n\n const pages = pagesDir ? [pagesDir] : []\n const app = appDir ? [appDir] : []\n const directories = [...pages, ...app]\n\n const rootDir = pagesDir || appDir\n const files = [\n ...getPossibleMiddlewareFilenames(\n path.join(rootDir!, '..'),\n nextConfig.pageExtensions\n ),\n ...getPossibleInstrumentationHookFilenames(\n path.join(rootDir!, '..'),\n nextConfig.pageExtensions\n ),\n ]\n let nestedMiddleware: string[] = []\n\n const envFiles = [\n '.env.development.local',\n '.env.local',\n '.env.development',\n '.env',\n ].map((file) => path.join(dir, file))\n\n files.push(...envFiles)\n\n // tsconfig/jsconfig paths hot-reloading\n const tsconfigPaths = [\n path.join(dir, 'tsconfig.json'),\n path.join(dir, 'jsconfig.json'),\n ] as const\n files.push(...tsconfigPaths)\n\n const wp = new Watchpack({\n // Watchpack default is 200ms which adds 200ms of dead time on bootup.\n aggregateTimeout: 5, // Matches webpack-config.ts.\n ignored: (pathname: string) => {\n return (\n !files.some((file) => file.startsWith(pathname)) &&\n !directories.some(\n (d) => pathname.startsWith(d) || d.startsWith(pathname)\n )\n )\n },\n })\n const fileWatchTimes = new Map()\n let enabledTypeScript = await verifyTypeScript(opts)\n let previousClientRouterFilters: any\n let previousConflictingPagePaths: Set<string> = new Set()\n\n const routeTypesFilePath = path.join(distDir, 'types', 'routes.d.ts')\n const validatorFilePath = path.join(distDir, 'types', 'validator.ts')\n\n let initialWatchTime = performance.now() + performance.timeOrigin\n wp.on('aggregated', async () => {\n let writeEnvDefinitions = false\n let typescriptStatusFromLastAggregation = enabledTypeScript\n let middlewareMatchers: ProxyMatcher[] | undefined\n const routedPages: string[] = []\n const knownFiles = wp.getTimeInfoEntries()\n const appPaths: Record<string, string[]> = {}\n const pageNameSet = new Set<string>()\n const conflictingAppPagePaths = new Set<string>()\n const appPageFilePaths = new Map<string, string>()\n const pagesPageFilePaths = new Map<string, string>()\n const appRouteHandlers: Array<{ route: string; filePath: string }> = []\n const pageApiRoutes: Array<{ route: string; filePath: string }> = []\n\n const pageRoutes: Array<{ route: string; filePath: string }> = []\n const appRoutes: Array<{ route: string; filePath: string }> = []\n const layoutRoutes: Array<{ route: string; filePath: string }> = []\n const slots: Array<{ name: string; parent: string }> = []\n\n let envChange = false\n let tsconfigChange = false\n let conflictingPageChange = 0\n let hasRootAppNotFound = false\n\n const { appFiles, pageFiles, staticMetadataFiles } = opts.fsChecker\n\n appFiles.clear()\n pageFiles.clear()\n staticMetadataFiles.clear()\n devPageFiles.clear()\n\n const sortedKnownFiles: string[] = [...knownFiles.keys()].sort(\n sortByPageExts(nextConfig.pageExtensions)\n )\n\n let proxyFilePath: string | undefined\n let middlewareFilePath: string | undefined\n\n for (const fileName of sortedKnownFiles) {\n if (\n !files.includes(fileName) &&\n !directories.some((d) => fileName.startsWith(d))\n ) {\n continue\n }\n\n const { name: fileBaseName, dir: fileDir } = path.parse(fileName)\n\n const isAtConventionLevel =\n fileDir === dir || fileDir === path.join(dir, 'src')\n\n if (isAtConventionLevel && fileBaseName === MIDDLEWARE_FILENAME) {\n middlewareFilePath = fileName\n }\n if (isAtConventionLevel && fileBaseName === PROXY_FILENAME) {\n proxyFilePath = fileName\n }\n\n if (middlewareFilePath) {\n if (proxyFilePath) {\n const cwd = process.cwd()\n\n throw new Error(\n `Both ${MIDDLEWARE_FILENAME} file \"./${path.relative(cwd, middlewareFilePath)}\" and ${PROXY_FILENAME} file \"./${path.relative(cwd, proxyFilePath)}\" are detected. Please use \"./${path.relative(cwd, proxyFilePath)}\" only. Learn more: https://nextjs.org/docs/messages/middleware-to-proxy`\n )\n }\n Log.warnOnce(\n `The \"${MIDDLEWARE_FILENAME}\" file convention is deprecated. Please use \"${PROXY_FILENAME}\" instead. Learn more: https://nextjs.org/docs/messages/middleware-to-proxy`\n )\n }\n\n const meta = knownFiles.get(fileName)\n\n const watchTime = fileWatchTimes.get(fileName)\n const nextWatchTime = meta?.timestamp\n // If the file is showing up for the first time or the meta.timestamp is changed since last time\n // Files that were created before we started watching are not considered changed.\n // If any file was created by Next.js while booting, we assume those changes\n // are handled in the bootstrap phase.\n // Files that existed before we booted should be handled during bootstrapping.\n const fileChanged =\n (watchTime === undefined &&\n (nextWatchTime === undefined ||\n nextWatchTime >= initialWatchTime)) ||\n (watchTime && watchTime !== nextWatchTime)\n fileWatchTimes.set(fileName, nextWatchTime)\n\n if (envFiles.includes(fileName)) {\n if (fileChanged) {\n envChange = true\n }\n continue\n }\n\n if (tsconfigPaths.includes(fileName)) {\n if (fileName.endsWith('tsconfig.json')) {\n enabledTypeScript = true\n }\n if (fileChanged) {\n tsconfigChange = true\n }\n continue\n }\n\n if (\n meta?.accuracy === undefined ||\n !validFileMatcher.isPageFile(fileName)\n ) {\n continue\n }\n\n const isAppPath = Boolean(\n appDir &&\n normalizePathSep(fileName).startsWith(\n normalizePathSep(appDir) + '/'\n )\n )\n const isPagePath = Boolean(\n pagesDir &&\n normalizePathSep(fileName).startsWith(\n normalizePathSep(pagesDir) + '/'\n )\n )\n\n const rootFile = absolutePathToPage(fileName, {\n dir: dir,\n extensions: nextConfig.pageExtensions,\n keepIndex: false,\n pagesType: PAGE_TYPES.ROOT,\n })\n\n if (isMiddlewareFile(rootFile)) {\n const getStaticInfoIncludingLayouts = (\n require('../../../build/get-static-info-including-layouts') as typeof import('../../../build/get-static-info-including-layouts')\n ).getStaticInfoIncludingLayouts\n const staticInfo = await getStaticInfoIncludingLayouts({\n pageFilePath: fileName,\n config: nextConfig,\n appDir: appDir,\n page: rootFile,\n isDev: true,\n isInsideAppDir: isAppPath,\n pageExtensions: nextConfig.pageExtensions,\n })\n if (nextConfig.output === 'export') {\n Log.error(\n 'Middleware cannot be used with \"output: export\". See more info here: https://nextjs.org/docs/advanced-features/static-html-export'\n )\n continue\n }\n serverFields.actualMiddlewareFile = rootFile\n\n await propagateServerField(\n opts,\n 'actualMiddlewareFile',\n serverFields.actualMiddlewareFile\n )\n middlewareMatchers = staticInfo.middleware?.matchers || [\n { regexp: '^/.*$', originalSource: '/:path*' },\n ]\n continue\n }\n if (isInstrumentationHookFile(rootFile)) {\n serverFields.actualInstrumentationHookFile = rootFile\n await propagateServerField(\n opts,\n 'actualInstrumentationHookFile',\n serverFields.actualInstrumentationHookFile\n )\n continue\n }\n\n if (fileName.endsWith('.ts') || fileName.endsWith('.tsx')) {\n enabledTypeScript = true\n }\n\n if (!(isAppPath || isPagePath)) {\n continue\n }\n\n // Collect all current filenames for the TS plugin to use\n devPageFiles.add(fileName)\n\n let pageName = absolutePathToPage(fileName, {\n dir: isAppPath ? appDir! : pagesDir!,\n extensions: nextConfig.pageExtensions,\n keepIndex: isAppPath,\n pagesType: isAppPath ? PAGE_TYPES.APP : PAGE_TYPES.PAGES,\n })\n\n if (\n isAppPath &&\n appDir &&\n isMetadataRouteFile(\n fileName.replace(appDir, ''),\n nextConfig.pageExtensions,\n true\n )\n ) {\n const getPageStaticInfo = (\n require('../../../build/analysis/get-page-static-info') as typeof import('../../../build/analysis/get-page-static-info')\n ).getPageStaticInfo\n const staticInfo = await getPageStaticInfo({\n pageFilePath: fileName,\n nextConfig: {},\n page: pageName,\n isDev: true,\n pageType: PAGE_TYPES.APP,\n })\n\n pageName = normalizeMetadataPageToRoute(\n pageName,\n !!(staticInfo.generateSitemaps || staticInfo.generateImageMetadata)\n )\n }\n\n if (\n !isAppPath &&\n pageName.startsWith('/api/') &&\n nextConfig.output === 'export'\n ) {\n Log.error(\n 'API Routes cannot be used with \"output: export\". See more info here: https://nextjs.org/docs/advanced-features/static-html-export'\n )\n continue\n }\n\n if (isAppPath) {\n const isRootNotFound = validFileMatcher.isRootNotFound(fileName)\n hasRootAppNotFound = true\n\n if (isRootNotFound) {\n continue\n }\n\n // Ignore files/directories starting with `_` in the app directory\n if (normalizePathSep(pageName).includes('/_')) {\n continue\n }\n\n // Record parallel route slots for layout typing\n // May run multiple times (e.g. if a parallel route\n // has both a layout and a page, and children) but that's fine\n const segments = normalizePathSep(pageName).split('/')\n for (let i = segments.length - 1; i >= 0; i--) {\n const segment = segments[i]\n if (isParallelRouteSegment(segment)) {\n const parentPath = normalizeAppPath(\n segments.slice(0, i).join('/')\n )\n\n const slotName = segment.slice(1)\n // check if the slot already exists\n if (\n slots.some(\n (s) => s.name === slotName && s.parent === parentPath\n )\n )\n continue\n\n slots.push({\n name: slotName,\n parent: parentPath,\n })\n break\n }\n }\n\n // Record layouts\n if (validFileMatcher.isAppLayoutPage(fileName)) {\n layoutRoutes.push({\n route: ensureLeadingSlash(\n normalizeAppPath(normalizePathSep(pageName)).replace(\n /\\/layout$/,\n ''\n )\n ),\n filePath: fileName,\n })\n }\n\n if (!validFileMatcher.isAppRouterPage(fileName)) {\n continue\n }\n\n const originalPageName = pageName\n pageName = normalizeAppPath(pageName).replace(/%5F/g, '_')\n if (!appPaths[pageName]) {\n appPaths[pageName] = []\n }\n appPaths[pageName].push(\n opts.turbo\n ? // Turbopack outputs the correct path which is normalized with the `_`.\n originalPageName.replace(/%5F/g, '_')\n : originalPageName\n )\n\n if (useFileSystemPublicRoutes) {\n // Static metadata files will be served from filesystem.\n if (appDir && isStaticMetadataFile(fileName.replace(appDir, ''))) {\n staticMetadataFiles.set(pageName, fileName)\n } else {\n appFiles.add(pageName)\n }\n }\n\n if (validFileMatcher.isAppRouterRoute(fileName)) {\n appRouteHandlers.push({\n route: normalizePathSep(pageName),\n filePath: fileName,\n })\n } else {\n appRoutes.push({\n route: normalizePathSep(pageName),\n filePath: fileName,\n })\n }\n\n if (routedPages.includes(pageName)) {\n continue\n }\n } else {\n if (useFileSystemPublicRoutes) {\n pageFiles.add(pageName)\n // always add to nextDataRoutes for now but in future only add\n // entries that actually use getStaticProps/getServerSideProps\n opts.fsChecker.nextDataRoutes.add(pageName)\n }\n\n if (pageName.startsWith('/api/')) {\n pageApiRoutes.push({\n route: normalizePathSep(pageName),\n filePath: fileName,\n })\n } else {\n pageRoutes.push({\n route: normalizePathSep(pageName),\n filePath: fileName,\n })\n }\n }\n\n // Record pages\n if (isAppPath) {\n appPageFilePaths.set(pageName, fileName)\n } else {\n pagesPageFilePaths.set(pageName, fileName)\n }\n\n if (appDir && pageNameSet.has(pageName)) {\n conflictingAppPagePaths.add(pageName)\n } else {\n pageNameSet.add(pageName)\n }\n\n /**\n * If there is a middleware that is not declared in the root we will\n * warn without adding it so it doesn't make its way into the system.\n */\n if (/[\\\\\\\\/]_middleware$/.test(pageName)) {\n nestedMiddleware.push(pageName)\n continue\n }\n\n routedPages.push(pageName)\n }\n\n const numConflicting = conflictingAppPagePaths.size\n conflictingPageChange = numConflicting - previousConflictingPagePaths.size\n\n if (conflictingPageChange !== 0) {\n if (numConflicting > 0) {\n let errorMessage = `Conflicting app and page file${\n numConflicting === 1 ? ' was' : 's were'\n } found, please remove the conflicting files to continue:\\n`\n\n for (const p of conflictingAppPagePaths) {\n const appPath = path.relative(dir, appPageFilePaths.get(p)!)\n const pagesPath = path.relative(dir, pagesPageFilePaths.get(p)!)\n errorMessage += ` \"${pagesPath}\" - \"${appPath}\"\\n`\n }\n hotReloader.setHmrServerError(new Error(errorMessage))\n } else if (numConflicting === 0) {\n hotReloader.clearHmrServerError()\n await propagateServerField(opts, 'reloadMatchers', undefined)\n }\n }\n\n previousConflictingPagePaths = conflictingAppPagePaths\n\n let clientRouterFilters: any\n if (nextConfig.experimental.clientRouterFilter) {\n clientRouterFilters = createClientRouterFilter(\n Object.keys(appPaths),\n nextConfig.experimental.clientRouterFilterRedirects\n ? ((nextConfig as any)._originalRedirects || []).filter(\n (r: any) => !r.internal\n )\n : [],\n nextConfig.experimental.clientRouterFilterAllowedRate\n )\n\n if (\n !previousClientRouterFilters ||\n JSON.stringify(previousClientRouterFilters) !==\n JSON.stringify(clientRouterFilters)\n ) {\n envChange = true\n previousClientRouterFilters = clientRouterFilters\n }\n }\n\n if (envChange || tsconfigChange) {\n if (envChange) {\n writeEnvDefinitions = true\n\n await propagateServerField(opts, 'loadEnvConfig', [\n { dev: true, forceReload: true },\n ])\n }\n\n if (hotReloader.turbopackProject) {\n const hasRewrites =\n opts.fsChecker.rewrites.afterFiles.length > 0 ||\n opts.fsChecker.rewrites.beforeFiles.length > 0 ||\n opts.fsChecker.rewrites.fallback.length > 0\n\n const rootPath =\n opts.nextConfig.turbopack?.root ||\n opts.nextConfig.outputFileTracingRoot ||\n opts.dir\n await hotReloader.turbopackProject.update({\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters,\n config: nextConfig,\n dev: true,\n distDir,\n fetchCacheKeyPrefix:\n opts.nextConfig.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // TODO: Implement\n middlewareMatchers: undefined,\n projectPath: opts.dir,\n rewrites: opts.fsChecker.rewrites,\n }),\n rootPath,\n projectPath: normalizePath(path.relative(rootPath, dir)),\n })\n } else {\n let tsconfigResult:\n | UnwrapPromise<\n ReturnType<\n typeof import('../../../build/load-jsconfig').default\n >\n >\n | undefined\n // This is not relevant for Turbopack because tsconfig/jsconfig is handled internally.\n if (tsconfigChange) {\n try {\n const loadJsConfig = (\n require('../../../build/load-jsconfig') as typeof import('../../../build/load-jsconfig')\n ).default\n tsconfigResult = await loadJsConfig(dir, nextConfig)\n } catch (_) {\n /* do we want to log if there are syntax errors in tsconfig while editing? */\n }\n }\n\n hotReloader.activeWebpackConfigs?.forEach((config, idx) => {\n const isClient = idx === 0\n const isNodeServer = idx === 1\n const isEdgeServer = idx === 2\n const hasRewrites =\n opts.fsChecker.rewrites.afterFiles.length > 0 ||\n opts.fsChecker.rewrites.beforeFiles.length > 0 ||\n opts.fsChecker.rewrites.fallback.length > 0\n\n if (tsconfigChange) {\n config.resolve?.plugins?.forEach((plugin: any) => {\n // look for the JsConfigPathsPlugin and update with\n // the latest paths/baseUrl config\n if (plugin instanceof JsConfigPathsPlugin && tsconfigResult) {\n const { resolvedBaseUrl, jsConfig } = tsconfigResult\n const currentResolvedBaseUrl = plugin.resolvedBaseUrl\n const resolvedUrlIndex = config.resolve?.modules?.findIndex(\n (item) => item === currentResolvedBaseUrl?.baseUrl\n )\n\n if (resolvedBaseUrl) {\n if (\n resolvedBaseUrl.baseUrl !==\n currentResolvedBaseUrl?.baseUrl\n ) {\n // remove old baseUrl and add new one\n if (resolvedUrlIndex && resolvedUrlIndex > -1) {\n config.resolve?.modules?.splice(resolvedUrlIndex, 1)\n }\n\n // If the resolvedBaseUrl is implicit we only remove the previous value.\n // Only add the baseUrl if it's explicitly set in tsconfig/jsconfig\n if (!resolvedBaseUrl.isImplicit) {\n config.resolve?.modules?.push(resolvedBaseUrl.baseUrl)\n }\n }\n }\n\n if (jsConfig?.compilerOptions?.paths && resolvedBaseUrl) {\n Object.keys(plugin.paths).forEach((key) => {\n delete plugin.paths[key]\n })\n Object.assign(plugin.paths, jsConfig.compilerOptions.paths)\n plugin.resolvedBaseUrl = resolvedBaseUrl\n }\n }\n })\n }\n\n if (envChange) {\n config.plugins?.forEach((plugin: any) => {\n // we look for the DefinePlugin definitions so we can\n // update them on the active compilers\n if (\n plugin &&\n typeof plugin.definitions === 'object' &&\n plugin.definitions.__NEXT_DEFINE_ENV\n ) {\n const newDefine = getDefineEnv({\n isTurbopack: false,\n clientRouterFilters,\n config: nextConfig,\n dev: true,\n distDir,\n fetchCacheKeyPrefix:\n opts.nextConfig.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n isClient,\n isEdgeServer,\n isNodeServer,\n middlewareMatchers: undefined,\n projectPath: opts.dir,\n rewrites: opts.fsChecker.rewrites,\n })\n\n Object.keys(plugin.definitions).forEach((key) => {\n if (!(key in newDefine)) {\n delete plugin.definitions[key]\n }\n })\n Object.assign(plugin.definitions, newDefine)\n }\n })\n }\n })\n }\n await hotReloader.invalidate({\n reloadAfterInvalidation: envChange,\n })\n }\n\n if (nestedMiddleware.length > 0) {\n Log.error(\n new NestedMiddlewareError(\n nestedMiddleware,\n dir,\n (pagesDir || appDir)!\n ).message\n )\n nestedMiddleware = []\n }\n\n // Make sure to sort parallel routes to make the result deterministic.\n serverFields.appPathRoutes = Object.fromEntries(\n Object.entries(appPaths).map(([k, v]) => [k, v.sort()])\n )\n await propagateServerField(\n opts,\n 'appPathRoutes',\n serverFields.appPathRoutes\n )\n\n // TODO: pass this to fsChecker/next-dev-server?\n serverFields.middleware = middlewareMatchers\n ? {\n match: null as any,\n page: '/',\n matchers: middlewareMatchers,\n }\n : undefined\n\n await propagateServerField(opts, 'middleware', serverFields.middleware)\n serverFields.hasAppNotFound = hasRootAppNotFound\n\n opts.fsChecker.middlewareMatcher = serverFields.middleware?.matchers\n ? getMiddlewareRouteMatcher(serverFields.middleware?.matchers)\n : undefined\n\n const interceptionRoutes = generateInterceptionRoutesRewrites(\n Object.keys(appPaths),\n opts.nextConfig.basePath\n ).map((item) =>\n buildCustomRoute(\n 'before_files_rewrite',\n item,\n opts.nextConfig.basePath,\n opts.nextConfig.experimental.caseSensitiveRoutes\n )\n )\n\n opts.fsChecker.rewrites.beforeFiles.push(...interceptionRoutes)\n\n const exportPathMap =\n (typeof nextConfig.exportPathMap === 'function' &&\n (await nextConfig.exportPathMap?.(\n {},\n {\n dev: true,\n dir: opts.dir,\n outDir: null,\n distDir: distDir,\n buildId: 'development',\n }\n ))) ||\n {}\n\n const exportPathMapEntries = Object.entries(exportPathMap || {})\n\n if (exportPathMapEntries.length > 0) {\n opts.fsChecker.exportPathMapRoutes = exportPathMapEntries.map(\n ([key, value]) =>\n buildCustomRoute(\n 'before_files_rewrite',\n {\n source: key,\n destination: `${value.page}${\n value.query ? '?' : ''\n }${qs.stringify(value.query)}`,\n },\n opts.nextConfig.basePath,\n opts.nextConfig.experimental.caseSensitiveRoutes\n )\n )\n }\n\n try {\n // we serve a separate manifest with all pages for the client in\n // dev mode so that we can match a page after a rewrite on the client\n // before it has been built and is populated in the _buildManifest\n const sortedRoutes = getSortedRoutes(routedPages)\n\n opts.fsChecker.dynamicRoutes = sortedRoutes.map(\n (page): FilesystemDynamicRoute => {\n const regex = getNamedRouteRegex(page, {\n prefixRouteKeys: true,\n })\n return {\n regex: regex.re.toString(),\n namedRegex: regex.namedRegex,\n routeKeys: regex.routeKeys,\n match: getRouteMatcher(regex),\n page,\n }\n }\n )\n\n const dataRoutes: typeof opts.fsChecker.dynamicRoutes = []\n\n for (const page of sortedRoutes) {\n const route = buildDataRoute(page, 'development')\n const routeRegex = getNamedRouteRegex(route.page, {\n prefixRouteKeys: true,\n })\n dataRoutes.push({\n ...route,\n regex: routeRegex.re.toString(),\n namedRegex: routeRegex.namedRegex,\n routeKeys: routeRegex.routeKeys,\n match: getRouteMatcher({\n // TODO: fix this in the manifest itself, must also be fixed in\n // upstream builder that relies on this\n re: opts.nextConfig.i18n\n ? new RegExp(\n route.dataRouteRegex.replace(\n `/development/`,\n `/development/(?<nextLocale>[^/]+?)/`\n )\n )\n : new RegExp(route.dataRouteRegex),\n groups: routeRegex.groups,\n }),\n })\n }\n opts.fsChecker.dynamicRoutes.unshift(...dataRoutes)\n\n // For Turbopack ADDED_PAGE and REMOVED_PAGE are implemented in hot-reloader-turbopack.ts\n // in order to avoid a race condition where ADDED_PAGE and REMOVED_PAGE are sent before Turbopack picked up the file change.\n if (!opts.turbo) {\n // Reload the matchers. The filesystem would have been written to,\n // and the matchers need to re-scan it to update the router.\n // Reloading the matchers should happen before `ADDED_PAGE` or `REMOVED_PAGE` is sent over the websocket\n // otherwise it sends the event too early.\n await propagateServerField(opts, 'reloadMatchers', undefined)\n\n if (\n !prevSortedRoutes?.every((val, idx) => val === sortedRoutes[idx])\n ) {\n const addedRoutes = sortedRoutes.filter(\n (route) => !prevSortedRoutes.includes(route)\n )\n const removedRoutes = prevSortedRoutes.filter(\n (route) => !sortedRoutes.includes(route)\n )\n\n // emit the change so clients fetch the update\n hotReloader.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.DEV_PAGES_MANIFEST_UPDATE,\n data: [\n {\n devPagesManifest: true,\n },\n ],\n })\n\n addedRoutes.forEach((route) => {\n hotReloader.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.ADDED_PAGE,\n data: [route],\n })\n })\n\n removedRoutes.forEach((route) => {\n hotReloader.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.REMOVED_PAGE,\n data: [route],\n })\n })\n }\n }\n prevSortedRoutes = sortedRoutes\n\n if (enabledTypeScript) {\n // Using === false to make the check clearer.\n if (typescriptStatusFromLastAggregation === false) {\n // we tolerate the error here as this is best effort\n // and the manual install command will be shown\n await verifyTypeScript(opts)\n .then(() => {\n tsconfigChange = true\n })\n .catch(() => {})\n }\n\n if (writeEnvDefinitions && nextConfig.experimental?.typedEnv) {\n // TODO: The call to propagateServerField 'loadEnvConfig' causes the env to be loaded twice on env file changes.\n const loadEnvConfig = (\n require('@next/env') as typeof import('@next/env')\n ).loadEnvConfig\n const { loadedEnvFiles } = loadEnvConfig(\n dir,\n process.env.NODE_ENV === 'development',\n // Silent as it's the second time `loadEnvConfig` is called in this pass.\n undefined,\n true\n )\n\n const createEnvDefinitions = (\n require('../experimental/create-env-definitions') as typeof import('../experimental/create-env-definitions')\n ).createEnvDefinitions\n await createEnvDefinitions({\n distDir,\n loadedEnvFiles: [\n ...loadedEnvFiles,\n {\n path: nextConfig.configFileName,\n env: nextConfig.env,\n contents: '',\n },\n ],\n })\n }\n\n const routeTypesManifest = await createRouteTypesManifest({\n dir,\n pageRoutes,\n appRoutes,\n layoutRoutes,\n slots,\n redirects: opts.nextConfig.redirects,\n rewrites: opts.nextConfig.rewrites,\n // Ensure relative paths in validator.ts are computed from validatorFilePath,\n // matching behavior of build and CLI typegen.\n validatorFilePath,\n appRouteHandlers,\n pageApiRoutes,\n })\n\n await writeRouteTypesManifest(\n routeTypesManifest,\n routeTypesFilePath,\n opts.nextConfig\n )\n await writeValidatorFile(routeTypesManifest, validatorFilePath)\n\n // Generate cache-life types if cacheLife config exists\n const cacheLifeFilePath = path.join(distTypesDir, 'cache-life.d.ts')\n writeCacheLifeTypes(opts.nextConfig.cacheLife, cacheLifeFilePath)\n }\n\n if (!resolved) {\n resolve()\n resolved = true\n }\n } catch (e) {\n if (!resolved) {\n reject(e)\n resolved = true\n } else {\n Log.warn('Failed to reload dynamic routes:', e)\n }\n }\n })\n\n wp.watch({ directories: [dir], startTime: 0 })\n })\n\n const clientPagesManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${DEV_CLIENT_PAGES_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(clientPagesManifestPath)\n\n const devMiddlewareManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${DEV_CLIENT_MIDDLEWARE_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(devMiddlewareManifestPath)\n\n const devTurbopackMiddlewareManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(devTurbopackMiddlewareManifestPath)\n\n async function requestHandler(req: IncomingMessage, res: ServerResponse) {\n const parsedUrl = url.parse(req.url || '/')\n\n if (parsedUrl.pathname?.includes(clientPagesManifestPath)) {\n res.statusCode = 200\n res.setHeader('Content-Type', JSON_CONTENT_TYPE_HEADER)\n res.end(\n JSON.stringify({\n pages: prevSortedRoutes.filter(\n (route) => !opts.fsChecker.appFiles.has(route)\n ),\n })\n )\n return { finished: true }\n }\n\n if (\n parsedUrl.pathname?.includes(devMiddlewareManifestPath) ||\n parsedUrl.pathname?.includes(devTurbopackMiddlewareManifestPath)\n ) {\n res.statusCode = 200\n res.setHeader('Content-Type', JSON_CONTENT_TYPE_HEADER)\n res.end(JSON.stringify(serverFields.middleware?.matchers || []))\n return { finished: true }\n }\n return { finished: false }\n }\n\n function logErrorWithOriginalStack(\n err: unknown,\n type?: 'unhandledRejection' | 'uncaughtException' | 'warning' | 'app-dir'\n ) {\n if (err instanceof Error) {\n err.message = deobfuscateText(err.message)\n }\n if (err instanceof ModuleBuildError) {\n // Errors that may come from issues from the user's code\n Log.error(err.message)\n } else if (err instanceof TurbopackInternalError) {\n // An internal Turbopack error that has been handled by next-swc, written\n // to disk and a simplified message shown to user on the Rust side.\n } else if (type === 'warning') {\n Log.warn(err)\n } else if (type === 'app-dir') {\n Log.error(err)\n } else if (type) {\n Log.error(`${type}:`, err)\n } else {\n Log.error(err)\n }\n }\n\n return {\n serverFields,\n hotReloader,\n requestHandler,\n logErrorWithOriginalStack,\n\n async ensureMiddleware(requestUrl?: string) {\n if (!serverFields.actualMiddlewareFile) return\n return hotReloader.ensurePage({\n page: serverFields.actualMiddlewareFile,\n clientOnly: false,\n definition: undefined,\n url: requestUrl,\n })\n },\n }\n}\n\nexport async function setupDevBundler(opts: SetupOpts) {\n const isSrcDir = path\n .relative(opts.dir, opts.pagesDir || opts.appDir || '')\n .startsWith('src')\n\n const result = await startWatcher({\n ...opts,\n isSrcDir,\n })\n\n opts.telemetry.record(\n eventCliSession(opts.nextConfig, {\n webpackVersion: 5,\n isSrcDir,\n turboFlag: !!opts.turbo,\n cliCommand: 'dev',\n appDir: !!opts.appDir,\n pagesDir: !!opts.pagesDir,\n isCustomServer: !!opts.isCustomServer,\n hasNowJson: !!(await findUp('now.json', { cwd: opts.dir })),\n })\n )\n\n // Track build features for dev server here:\n opts.telemetry.record({\n eventName: EVENT_BUILD_FEATURE_USAGE,\n payload: {\n featureName: 'turbopackFileSystemCache',\n invocationCount: isFileSystemCacheEnabledForDev(opts.nextConfig) ? 1 : 0,\n },\n })\n\n return result\n}\n\nexport type DevBundler = Awaited<ReturnType<typeof setupDevBundler>>\n\n// Returns a trace rewritten through Turbopack's sourcemaps\n"],"names":["propagateServerField","setupDevBundler","verifyTypeScript","opts","verifyResult","verifyTypeScriptSetup","dir","distDir","nextConfig","intentDirs","pagesDir","appDir","filter","Boolean","typeCheckPreflight","tsconfigPath","typescript","disableStaticImages","images","hasAppDir","hasPagesDir","isolatedDevBuild","experimental","version","field","args","renderServer","instance","startWatcher","resetFetch","useFileSystemPublicRoutes","path","join","setGlobal","PHASE_DEVELOPMENT_SERVER","lockfile","lockDistDir","fs","mkdirSync","recursive","Lockfile","acquireWithRetriesOrExit","validFileMatcher","createValidFileMatcher","pageExtensions","serverFields","consoleStore","setState","logging","hotReloader","turbo","createHotReloaderTurbopack","require","HotReloaderWebpack","default","isSrcDir","config","buildId","encryptionKey","generateEncryptionKeyBase64","isBuild","telemetry","rewrites","fsChecker","previewProps","prerenderManifest","preview","onDevServerCleanup","start","distTypesDir","writeRouteTypesManifest","appRoutes","pageRoutes","layoutRoutes","appRouteHandlerRoutes","redirectRoutes","rewriteRoutes","appPagePaths","Set","pagesRouterPagePaths","layoutPaths","appRouteHandlers","pageApiRoutes","filePathToRoute","Map","routesManifestPath","ROUTES_MANIFEST","routesManifest","caseSensitive","caseSensitiveRoutes","basePath","redirects","headers","i18n","undefined","skipProxyUrlNormalize","promises","writeFile","JSON","stringify","prerenderManifestPath","PRERENDER_MANIFEST","nextScriptWorkers","verifyPartytownSetup","CLIENT_STATIC_FILES_PATH","ensureCallback","ensure","item","type","ensurePage","clientOnly","page","itemPath","isApp","definition","resolved","prevSortedRoutes","Promise","resolve","reject","readdir","_","files","length","pages","app","directories","rootDir","getPossibleMiddlewareFilenames","getPossibleInstrumentationHookFilenames","nestedMiddleware","envFiles","map","file","push","tsconfigPaths","wp","Watchpack","aggregateTimeout","ignored","pathname","some","startsWith","d","fileWatchTimes","enabledTypeScript","previousClientRouterFilters","previousConflictingPagePaths","routeTypesFilePath","validatorFilePath","initialWatchTime","performance","now","timeOrigin","on","writeEnvDefinitions","typescriptStatusFromLastAggregation","middlewareMatchers","routedPages","knownFiles","getTimeInfoEntries","appPaths","pageNameSet","conflictingAppPagePaths","appPageFilePaths","pagesPageFilePaths","slots","envChange","tsconfigChange","conflictingPageChange","hasRootAppNotFound","appFiles","pageFiles","staticMetadataFiles","clear","devPageFiles","sortedKnownFiles","keys","sort","sortByPageExts","proxyFilePath","middlewareFilePath","fileName","includes","name","fileBaseName","fileDir","parse","isAtConventionLevel","MIDDLEWARE_FILENAME","PROXY_FILENAME","cwd","process","Error","relative","Log","warnOnce","meta","get","watchTime","nextWatchTime","timestamp","fileChanged","set","endsWith","accuracy","isPageFile","isAppPath","normalizePathSep","isPagePath","rootFile","absolutePathToPage","extensions","keepIndex","pagesType","PAGE_TYPES","ROOT","isMiddlewareFile","staticInfo","getStaticInfoIncludingLayouts","pageFilePath","isDev","isInsideAppDir","output","error","actualMiddlewareFile","middleware","matchers","regexp","originalSource","isInstrumentationHookFile","actualInstrumentationHookFile","add","pageName","APP","PAGES","isMetadataRouteFile","replace","getPageStaticInfo","pageType","normalizeMetadataPageToRoute","generateSitemaps","generateImageMetadata","isRootNotFound","segments","split","i","segment","isParallelRouteSegment","parentPath","normalizeAppPath","slice","slotName","s","parent","isAppLayoutPage","route","ensureLeadingSlash","filePath","isAppRouterPage","originalPageName","isStaticMetadataFile","isAppRouterRoute","nextDataRoutes","has","test","numConflicting","size","errorMessage","p","appPath","pagesPath","setHmrServerError","clearHmrServerError","clientRouterFilters","clientRouterFilter","createClientRouterFilter","Object","clientRouterFilterRedirects","_originalRedirects","r","internal","clientRouterFilterAllowedRate","dev","forceReload","turbopackProject","hasRewrites","afterFiles","beforeFiles","fallback","rootPath","turbopack","root","outputFileTracingRoot","update","defineEnv","createDefineEnv","isTurbopack","fetchCacheKeyPrefix","projectPath","normalizePath","tsconfigResult","loadJsConfig","activeWebpackConfigs","forEach","idx","isClient","isNodeServer","isEdgeServer","plugins","plugin","JsConfigPathsPlugin","jsConfig","resolvedBaseUrl","currentResolvedBaseUrl","resolvedUrlIndex","modules","findIndex","baseUrl","splice","isImplicit","compilerOptions","paths","key","assign","definitions","__NEXT_DEFINE_ENV","newDefine","getDefineEnv","invalidate","reloadAfterInvalidation","NestedMiddlewareError","message","appPathRoutes","fromEntries","entries","k","v","match","hasAppNotFound","middlewareMatcher","getMiddlewareRouteMatcher","interceptionRoutes","generateInterceptionRoutesRewrites","buildCustomRoute","exportPathMap","outDir","exportPathMapEntries","exportPathMapRoutes","value","source","destination","query","qs","sortedRoutes","getSortedRoutes","dynamicRoutes","regex","getNamedRouteRegex","prefixRouteKeys","re","toString","namedRegex","routeKeys","getRouteMatcher","dataRoutes","buildDataRoute","routeRegex","RegExp","dataRouteRegex","groups","unshift","every","val","addedRoutes","removedRoutes","send","HMR_MESSAGE_SENT_TO_BROWSER","DEV_PAGES_MANIFEST_UPDATE","data","devPagesManifest","ADDED_PAGE","REMOVED_PAGE","then","catch","typedEnv","loadEnvConfig","loadedEnvFiles","env","NODE_ENV","createEnvDefinitions","configFileName","contents","routeTypesManifest","createRouteTypesManifest","writeValidatorFile","cacheLifeFilePath","writeCacheLifeTypes","cacheLife","e","warn","watch","startTime","clientPagesManifestPath","DEV_CLIENT_PAGES_MANIFEST","devVirtualFsItems","devMiddlewareManifestPath","DEV_CLIENT_MIDDLEWARE_MANIFEST","devTurbopackMiddlewareManifestPath","TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST","requestHandler","req","res","parsedUrl","url","statusCode","setHeader","JSON_CONTENT_TYPE_HEADER","end","finished","logErrorWithOriginalStack","err","deobfuscateText","ModuleBuildError","TurbopackInternalError","ensureMiddleware","requestUrl","result","record","eventCliSession","webpackVersion","turboFlag","cliCommand","isCustomServer","hasNowJson","findUp","eventName","EVENT_BUILD_FEATURE_USAGE","payload","featureName","invocationCount","isFileSystemCacheEnabledForDev"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/server/lib/router-utils/setup-dev-bundler.ts"],"sourcesContent":["import type { NextConfigComplete } from '../../config-shared'\nimport type { FilesystemDynamicRoute } from './filesystem'\nimport type { UnwrapPromise } from '../../../lib/coalesced-function'\nimport type { ProxyMatcher } from '../../../build/analysis/get-page-static-info'\nimport type { RoutesManifest } from '../../../build'\nimport type { MiddlewareRouteMatch } from '../../../shared/lib/router/utils/middleware-route-matcher'\nimport type { PropagateToWorkersField } from './types'\nimport type { NextJsHotReloaderInterface } from '../../dev/hot-reloader-types'\n\nimport { createDefineEnv } from '../../../build/swc'\nimport { installBindings } from '../../../build/swc/install-bindings'\nimport fs from 'fs'\nimport url from 'url'\nimport path from 'path'\nimport qs from 'querystring'\nimport Watchpack from 'next/dist/compiled/watchpack'\nimport findUp from 'next/dist/compiled/find-up'\nimport { buildCustomRoute } from './filesystem'\nimport * as Log from '../../../build/output/log'\nimport { setGlobal } from '../../../trace/shared'\nimport type { Telemetry } from '../../../telemetry/storage'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport { createValidFileMatcher } from '../find-page-file'\nimport {\n EVENT_BUILD_FEATURE_USAGE,\n eventCliSession,\n} from '../../../telemetry/events'\nimport { getSortedRoutes } from '../../../shared/lib/router/utils'\nimport { sortByPageExts } from '../../../build/sort-by-page-exts'\nimport { verifyTypeScriptSetup } from '../../../lib/verify-typescript-setup'\nimport { verifyPartytownSetup } from '../../../lib/verify-partytown-setup'\nimport { getNamedRouteRegex } from '../../../shared/lib/router/utils/route-regex'\nimport { normalizeAppPath } from '../../../shared/lib/router/utils/app-paths'\nimport { buildDataRoute } from './build-data-route'\nimport { getRouteMatcher } from '../../../shared/lib/router/utils/route-matcher'\nimport { normalizePathSep } from '../../../shared/lib/page-path/normalize-path-sep'\nimport { createClientRouterFilter } from '../../../lib/create-client-router-filter'\nimport { absolutePathToPage } from '../../../shared/lib/page-path/absolute-path-to-page'\nimport { generateInterceptionRoutesRewrites } from '../../../lib/generate-interception-routes-rewrites'\n\nimport {\n CLIENT_STATIC_FILES_PATH,\n DEV_CLIENT_PAGES_MANIFEST,\n DEV_CLIENT_MIDDLEWARE_MANIFEST,\n PHASE_DEVELOPMENT_SERVER,\n TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST,\n ROUTES_MANIFEST,\n PRERENDER_MANIFEST,\n} from '../../../shared/lib/constants'\n\nimport { getMiddlewareRouteMatcher } from '../../../shared/lib/router/utils/middleware-route-matcher'\n\nimport {\n isMiddlewareFile,\n NestedMiddlewareError,\n isInstrumentationHookFile,\n getPossibleMiddlewareFilenames,\n getPossibleInstrumentationHookFilenames,\n} from '../../../build/utils'\nimport { devPageFiles } from '../../../build/webpack/plugins/next-types-plugin/shared'\nimport type { LazyRenderServerInstance } from '../router-server'\nimport { HMR_MESSAGE_SENT_TO_BROWSER } from '../../dev/hot-reloader-types'\nimport { PAGE_TYPES } from '../../../lib/page-types'\nimport { generateEncryptionKeyBase64 } from '../../app-render/encryption-utils-server'\nimport {\n isMetadataRouteFile,\n isStaticMetadataFile,\n} from '../../../lib/metadata/is-metadata-route'\nimport { normalizeMetadataPageToRoute } from '../../../lib/metadata/get-metadata-route'\nimport { JsConfigPathsPlugin } from '../../../build/webpack/plugins/jsconfig-paths-plugin'\nimport { store as consoleStore } from '../../../build/output/store'\nimport {\n isFileSystemCacheEnabledForDev,\n ModuleBuildError,\n} from '../../../shared/lib/turbopack/utils'\nimport { getDefineEnv } from '../../../build/define-env'\nimport { TurbopackInternalError } from '../../../shared/lib/turbopack/internal-error'\nimport { normalizePath } from '../../../lib/normalize-path'\nimport {\n JSON_CONTENT_TYPE_HEADER,\n MIDDLEWARE_FILENAME,\n PROXY_FILENAME,\n} from '../../../lib/constants'\nimport {\n createRouteTypesManifest,\n writeRouteTypesManifest,\n writeValidatorFile,\n} from './route-types-utils'\nimport { writeCacheLifeTypes } from './cache-life-type-utils'\nimport { isParallelRouteSegment } from '../../../shared/lib/segment'\nimport { ensureLeadingSlash } from '../../../shared/lib/page-path/ensure-leading-slash'\nimport { Lockfile } from '../../../build/lockfile'\nimport { deobfuscateText } from '../../../shared/lib/magic-identifier'\n\nexport type SetupOpts = {\n renderServer: LazyRenderServerInstance\n dir: string\n turbo?: boolean\n appDir?: string\n pagesDir?: string\n telemetry: Telemetry\n isCustomServer?: boolean\n fsChecker: UnwrapPromise<\n ReturnType<typeof import('./filesystem').setupFsCheck>\n >\n nextConfig: NextConfigComplete\n port: number\n onDevServerCleanup: ((listener: () => Promise<void>) => void) | undefined\n resetFetch: () => void\n}\n\nexport interface DevRoutesManifest {\n version: number\n caseSensitive: RoutesManifest['caseSensitive']\n basePath: RoutesManifest['basePath']\n rewrites: RoutesManifest['rewrites']\n redirects: RoutesManifest['redirects']\n headers: RoutesManifest['headers']\n i18n: RoutesManifest['i18n']\n skipProxyUrlNormalize: RoutesManifest['skipProxyUrlNormalize']\n}\n\nexport type ServerFields = {\n actualMiddlewareFile?: string | undefined\n actualInstrumentationHookFile?: string | undefined\n appPathRoutes?: Record<string, string | string[]>\n middleware?:\n | {\n page: string\n match: MiddlewareRouteMatch\n matchers?: ProxyMatcher[]\n }\n | undefined\n hasAppNotFound?: boolean\n interceptionRoutes?: ReturnType<\n typeof import('./filesystem').buildCustomRoute\n >[]\n setIsrStatus?: (key: string, value: boolean | undefined) => void\n resetFetch?: () => void\n}\n\nasync function verifyTypeScript(opts: SetupOpts) {\n const verifyResult = await verifyTypeScriptSetup({\n dir: opts.dir,\n distDir: opts.nextConfig.distDir,\n intentDirs: [opts.pagesDir, opts.appDir].filter(Boolean) as string[],\n typeCheckPreflight: false,\n tsconfigPath: opts.nextConfig.typescript.tsconfigPath,\n disableStaticImages: opts.nextConfig.images.disableStaticImages,\n hasAppDir: !!opts.appDir,\n hasPagesDir: !!opts.pagesDir,\n isolatedDevBuild: opts.nextConfig.experimental.isolatedDevBuild,\n })\n\n if (verifyResult.version) {\n return true\n }\n return false\n}\n\nexport async function propagateServerField(\n opts: SetupOpts,\n field: PropagateToWorkersField,\n args: any\n) {\n await opts.renderServer?.instance?.propagateServerField(opts.dir, field, args)\n}\n\nasync function startWatcher(\n opts: SetupOpts & {\n isSrcDir: boolean\n }\n) {\n const { nextConfig, appDir, pagesDir, dir, resetFetch } = opts\n const { useFileSystemPublicRoutes } = nextConfig\n\n const distDir = path.join(opts.dir, opts.nextConfig.distDir)\n\n setGlobal('distDir', distDir)\n setGlobal('phase', PHASE_DEVELOPMENT_SERVER)\n\n let lockfile\n if (opts.nextConfig.experimental.lockDistDir) {\n fs.mkdirSync(distDir, { recursive: true })\n lockfile = await Lockfile.acquireWithRetriesOrExit(\n path.join(distDir, 'lock'),\n 'next dev'\n )\n }\n\n const validFileMatcher = createValidFileMatcher(\n nextConfig.pageExtensions,\n appDir\n )\n\n const serverFields: ServerFields = {}\n\n // Update logging state once based on next.config.js when initializing\n consoleStore.setState({\n logging: nextConfig.logging !== false,\n })\n\n const hotReloader: NextJsHotReloaderInterface = opts.turbo\n ? await (async () => {\n const createHotReloaderTurbopack = (\n require('../../dev/hot-reloader-turbopack') as typeof import('../../dev/hot-reloader-turbopack')\n ).createHotReloaderTurbopack\n return await createHotReloaderTurbopack(\n opts,\n serverFields,\n distDir,\n resetFetch,\n lockfile\n )\n })()\n : await (async () => {\n const HotReloaderWebpack = (\n require('../../dev/hot-reloader-webpack') as typeof import('../../dev/hot-reloader-webpack')\n ).default\n return new HotReloaderWebpack(opts.dir, {\n isSrcDir: opts.isSrcDir,\n appDir,\n pagesDir,\n distDir,\n config: opts.nextConfig,\n buildId: 'development',\n encryptionKey: await generateEncryptionKeyBase64({\n isBuild: false,\n distDir,\n }),\n telemetry: opts.telemetry,\n rewrites: opts.fsChecker.rewrites,\n previewProps: opts.fsChecker.prerenderManifest.preview,\n resetFetch,\n lockfile,\n onDevServerCleanup: opts.onDevServerCleanup,\n })\n })()\n\n await hotReloader.start()\n\n // have to write this after starting hot-reloader since that\n // cleans the dist dir\n const distTypesDir = path.join(distDir, 'types')\n await writeRouteTypesManifest(\n {\n appRoutes: {},\n pageRoutes: {},\n layoutRoutes: {},\n appRouteHandlerRoutes: {},\n redirectRoutes: {},\n rewriteRoutes: {},\n appPagePaths: new Set(),\n pagesRouterPagePaths: new Set(),\n layoutPaths: new Set(),\n appRouteHandlers: new Set(),\n pageApiRoutes: new Set(),\n filePathToRoute: new Map(),\n },\n path.join(distTypesDir, 'routes.d.ts'),\n opts.nextConfig\n )\n\n const routesManifestPath = path.join(distDir, ROUTES_MANIFEST)\n const routesManifest: DevRoutesManifest = {\n version: 3,\n caseSensitive: !!nextConfig.experimental.caseSensitiveRoutes,\n basePath: nextConfig.basePath,\n rewrites: opts.fsChecker.rewrites,\n redirects: opts.fsChecker.redirects,\n headers: opts.fsChecker.headers,\n i18n: nextConfig.i18n || undefined,\n skipProxyUrlNormalize: nextConfig.skipProxyUrlNormalize,\n }\n await fs.promises.writeFile(\n routesManifestPath,\n JSON.stringify(routesManifest)\n )\n\n const prerenderManifestPath = path.join(distDir, PRERENDER_MANIFEST)\n await fs.promises.writeFile(\n prerenderManifestPath,\n JSON.stringify(opts.fsChecker.prerenderManifest, null, 2)\n )\n\n if (opts.nextConfig.experimental.nextScriptWorkers) {\n await verifyPartytownSetup(\n opts.dir,\n path.join(distDir, CLIENT_STATIC_FILES_PATH)\n )\n }\n\n opts.fsChecker.ensureCallback(async function ensure(item) {\n if (item.type === 'appFile' || item.type === 'pageFile') {\n await hotReloader.ensurePage({\n clientOnly: false,\n page: item.itemPath,\n isApp: item.type === 'appFile',\n definition: undefined,\n })\n }\n })\n\n let resolved = false\n let prevSortedRoutes: string[] = []\n\n await new Promise<void>(async (resolve, reject) => {\n if (pagesDir) {\n // Watchpack doesn't emit an event for an empty directory\n fs.readdir(pagesDir, (_, files) => {\n if (files?.length) {\n return\n }\n\n if (!resolved) {\n resolve()\n resolved = true\n }\n })\n }\n\n const pages = pagesDir ? [pagesDir] : []\n const app = appDir ? [appDir] : []\n const directories = [...pages, ...app]\n\n const rootDir = pagesDir || appDir\n const files = [\n ...getPossibleMiddlewareFilenames(\n path.join(rootDir!, '..'),\n nextConfig.pageExtensions\n ),\n ...getPossibleInstrumentationHookFilenames(\n path.join(rootDir!, '..'),\n nextConfig.pageExtensions\n ),\n ]\n let nestedMiddleware: string[] = []\n\n const envFiles = [\n '.env.development.local',\n '.env.local',\n '.env.development',\n '.env',\n ].map((file) => path.join(dir, file))\n\n files.push(...envFiles)\n\n // tsconfig/jsconfig paths hot-reloading\n const tsconfigPaths = [\n path.join(dir, 'tsconfig.json'),\n path.join(dir, 'jsconfig.json'),\n ] as const\n files.push(...tsconfigPaths)\n\n const wp = new Watchpack({\n // Watchpack default is 200ms which adds 200ms of dead time on bootup.\n aggregateTimeout: 5, // Matches webpack-config.ts.\n ignored: (pathname: string) => {\n return (\n !files.some((file) => file.startsWith(pathname)) &&\n !directories.some(\n (d) => pathname.startsWith(d) || d.startsWith(pathname)\n )\n )\n },\n })\n const fileWatchTimes = new Map()\n let enabledTypeScript = await verifyTypeScript(opts)\n let previousClientRouterFilters: any\n let previousConflictingPagePaths: Set<string> = new Set()\n\n const routeTypesFilePath = path.join(distDir, 'types', 'routes.d.ts')\n const validatorFilePath = path.join(distDir, 'types', 'validator.ts')\n\n let initialWatchTime = performance.now() + performance.timeOrigin\n wp.on('aggregated', async () => {\n let writeEnvDefinitions = false\n let typescriptStatusFromLastAggregation = enabledTypeScript\n let middlewareMatchers: ProxyMatcher[] | undefined\n const routedPages: string[] = []\n const knownFiles = wp.getTimeInfoEntries()\n const appPaths: Record<string, string[]> = {}\n const pageNameSet = new Set<string>()\n const conflictingAppPagePaths = new Set<string>()\n const appPageFilePaths = new Map<string, string>()\n const pagesPageFilePaths = new Map<string, string>()\n const appRouteHandlers: Array<{ route: string; filePath: string }> = []\n const pageApiRoutes: Array<{ route: string; filePath: string }> = []\n\n const pageRoutes: Array<{ route: string; filePath: string }> = []\n const appRoutes: Array<{ route: string; filePath: string }> = []\n const layoutRoutes: Array<{ route: string; filePath: string }> = []\n const slots: Array<{ name: string; parent: string }> = []\n\n let envChange = false\n let tsconfigChange = false\n let conflictingPageChange = 0\n let hasRootAppNotFound = false\n\n const { appFiles, pageFiles, staticMetadataFiles } = opts.fsChecker\n\n appFiles.clear()\n pageFiles.clear()\n staticMetadataFiles.clear()\n devPageFiles.clear()\n\n const sortedKnownFiles: string[] = [...knownFiles.keys()].sort(\n sortByPageExts(nextConfig.pageExtensions)\n )\n\n let proxyFilePath: string | undefined\n let middlewareFilePath: string | undefined\n\n for (const fileName of sortedKnownFiles) {\n if (\n !files.includes(fileName) &&\n !directories.some((d) => fileName.startsWith(d))\n ) {\n continue\n }\n\n const { name: fileBaseName, dir: fileDir } = path.parse(fileName)\n\n const isAtConventionLevel =\n fileDir === dir || fileDir === path.join(dir, 'src')\n\n if (isAtConventionLevel && fileBaseName === MIDDLEWARE_FILENAME) {\n middlewareFilePath = fileName\n }\n if (isAtConventionLevel && fileBaseName === PROXY_FILENAME) {\n proxyFilePath = fileName\n }\n\n if (middlewareFilePath) {\n if (proxyFilePath) {\n const cwd = process.cwd()\n\n throw new Error(\n `Both ${MIDDLEWARE_FILENAME} file \"./${path.relative(cwd, middlewareFilePath)}\" and ${PROXY_FILENAME} file \"./${path.relative(cwd, proxyFilePath)}\" are detected. Please use \"./${path.relative(cwd, proxyFilePath)}\" only. Learn more: https://nextjs.org/docs/messages/middleware-to-proxy`\n )\n }\n Log.warnOnce(\n `The \"${MIDDLEWARE_FILENAME}\" file convention is deprecated. Please use \"${PROXY_FILENAME}\" instead. Learn more: https://nextjs.org/docs/messages/middleware-to-proxy`\n )\n }\n\n const meta = knownFiles.get(fileName)\n\n const watchTime = fileWatchTimes.get(fileName)\n const nextWatchTime = meta?.timestamp\n // If the file is showing up for the first time or the meta.timestamp is changed since last time\n // Files that were created before we started watching are not considered changed.\n // If any file was created by Next.js while booting, we assume those changes\n // are handled in the bootstrap phase.\n // Files that existed before we booted should be handled during bootstrapping.\n const fileChanged =\n (watchTime === undefined &&\n (nextWatchTime === undefined ||\n nextWatchTime >= initialWatchTime)) ||\n (watchTime && watchTime !== nextWatchTime)\n fileWatchTimes.set(fileName, nextWatchTime)\n\n if (envFiles.includes(fileName)) {\n if (fileChanged) {\n envChange = true\n }\n continue\n }\n\n if (tsconfigPaths.includes(fileName)) {\n if (fileName.endsWith('tsconfig.json')) {\n enabledTypeScript = true\n }\n if (fileChanged) {\n tsconfigChange = true\n }\n continue\n }\n\n if (\n meta?.accuracy === undefined ||\n !validFileMatcher.isPageFile(fileName)\n ) {\n continue\n }\n\n const isAppPath = Boolean(\n appDir &&\n normalizePathSep(fileName).startsWith(\n normalizePathSep(appDir) + '/'\n )\n )\n const isPagePath = Boolean(\n pagesDir &&\n normalizePathSep(fileName).startsWith(\n normalizePathSep(pagesDir) + '/'\n )\n )\n\n const rootFile = absolutePathToPage(fileName, {\n dir: dir,\n extensions: nextConfig.pageExtensions,\n keepIndex: false,\n pagesType: PAGE_TYPES.ROOT,\n })\n\n if (isMiddlewareFile(rootFile)) {\n const getStaticInfoIncludingLayouts = (\n require('../../../build/get-static-info-including-layouts') as typeof import('../../../build/get-static-info-including-layouts')\n ).getStaticInfoIncludingLayouts\n const staticInfo = await getStaticInfoIncludingLayouts({\n pageFilePath: fileName,\n config: nextConfig,\n appDir: appDir,\n page: rootFile,\n isDev: true,\n isInsideAppDir: isAppPath,\n pageExtensions: nextConfig.pageExtensions,\n })\n if (nextConfig.output === 'export') {\n Log.error(\n 'Middleware cannot be used with \"output: export\". See more info here: https://nextjs.org/docs/advanced-features/static-html-export'\n )\n continue\n }\n serverFields.actualMiddlewareFile = rootFile\n\n await propagateServerField(\n opts,\n 'actualMiddlewareFile',\n serverFields.actualMiddlewareFile\n )\n middlewareMatchers = staticInfo.middleware?.matchers || [\n { regexp: '^/.*$', originalSource: '/:path*' },\n ]\n continue\n }\n if (isInstrumentationHookFile(rootFile)) {\n serverFields.actualInstrumentationHookFile = rootFile\n await propagateServerField(\n opts,\n 'actualInstrumentationHookFile',\n serverFields.actualInstrumentationHookFile\n )\n continue\n }\n\n if (fileName.endsWith('.ts') || fileName.endsWith('.tsx')) {\n enabledTypeScript = true\n }\n\n if (!(isAppPath || isPagePath)) {\n continue\n }\n\n // Collect all current filenames for the TS plugin to use\n devPageFiles.add(fileName)\n\n let pageName = absolutePathToPage(fileName, {\n dir: isAppPath ? appDir! : pagesDir!,\n extensions: nextConfig.pageExtensions,\n keepIndex: isAppPath,\n pagesType: isAppPath ? PAGE_TYPES.APP : PAGE_TYPES.PAGES,\n })\n\n if (\n isAppPath &&\n appDir &&\n isMetadataRouteFile(\n fileName.replace(appDir, ''),\n nextConfig.pageExtensions,\n true\n )\n ) {\n const getPageStaticInfo = (\n require('../../../build/analysis/get-page-static-info') as typeof import('../../../build/analysis/get-page-static-info')\n ).getPageStaticInfo\n const staticInfo = await getPageStaticInfo({\n pageFilePath: fileName,\n nextConfig: {},\n page: pageName,\n isDev: true,\n pageType: PAGE_TYPES.APP,\n })\n\n pageName = normalizeMetadataPageToRoute(\n pageName,\n !!(staticInfo.generateSitemaps || staticInfo.generateImageMetadata)\n )\n }\n\n if (\n !isAppPath &&\n pageName.startsWith('/api/') &&\n nextConfig.output === 'export'\n ) {\n Log.error(\n 'API Routes cannot be used with \"output: export\". See more info here: https://nextjs.org/docs/advanced-features/static-html-export'\n )\n continue\n }\n\n if (isAppPath) {\n const isRootNotFound = validFileMatcher.isRootNotFound(fileName)\n hasRootAppNotFound = true\n\n if (isRootNotFound) {\n continue\n }\n\n // Ignore files/directories starting with `_` in the app directory\n if (normalizePathSep(pageName).includes('/_')) {\n continue\n }\n\n // Record parallel route slots for layout typing\n // May run multiple times (e.g. if a parallel route\n // has both a layout and a page, and children) but that's fine\n const segments = normalizePathSep(pageName).split('/')\n for (let i = segments.length - 1; i >= 0; i--) {\n const segment = segments[i]\n if (isParallelRouteSegment(segment)) {\n const parentPath = normalizeAppPath(\n segments.slice(0, i).join('/')\n )\n\n const slotName = segment.slice(1)\n // check if the slot already exists\n if (\n slots.some(\n (s) => s.name === slotName && s.parent === parentPath\n )\n )\n continue\n\n slots.push({\n name: slotName,\n parent: parentPath,\n })\n break\n }\n }\n\n // Record layouts\n if (validFileMatcher.isAppLayoutPage(fileName)) {\n layoutRoutes.push({\n route: ensureLeadingSlash(\n normalizeAppPath(normalizePathSep(pageName)).replace(\n /\\/layout$/,\n ''\n )\n ),\n filePath: fileName,\n })\n }\n\n if (!validFileMatcher.isAppRouterPage(fileName)) {\n continue\n }\n\n const originalPageName = pageName\n pageName = normalizeAppPath(pageName).replace(/%5F/g, '_')\n if (!appPaths[pageName]) {\n appPaths[pageName] = []\n }\n appPaths[pageName].push(\n opts.turbo\n ? // Turbopack outputs the correct path which is normalized with the `_`.\n originalPageName.replace(/%5F/g, '_')\n : originalPageName\n )\n\n if (useFileSystemPublicRoutes) {\n // Static metadata files will be served from filesystem.\n if (appDir && isStaticMetadataFile(fileName.replace(appDir, ''))) {\n staticMetadataFiles.set(pageName, fileName)\n } else {\n appFiles.add(pageName)\n }\n }\n\n if (validFileMatcher.isAppRouterRoute(fileName)) {\n appRouteHandlers.push({\n route: normalizePathSep(pageName),\n filePath: fileName,\n })\n } else {\n appRoutes.push({\n route: normalizePathSep(pageName),\n filePath: fileName,\n })\n }\n\n if (routedPages.includes(pageName)) {\n continue\n }\n } else {\n if (useFileSystemPublicRoutes) {\n pageFiles.add(pageName)\n // always add to nextDataRoutes for now but in future only add\n // entries that actually use getStaticProps/getServerSideProps\n opts.fsChecker.nextDataRoutes.add(pageName)\n }\n\n if (pageName.startsWith('/api/')) {\n pageApiRoutes.push({\n route: normalizePathSep(pageName),\n filePath: fileName,\n })\n } else {\n pageRoutes.push({\n route: normalizePathSep(pageName),\n filePath: fileName,\n })\n }\n }\n\n // Record pages\n if (isAppPath) {\n appPageFilePaths.set(pageName, fileName)\n } else {\n pagesPageFilePaths.set(pageName, fileName)\n }\n\n if (appDir && pageNameSet.has(pageName)) {\n conflictingAppPagePaths.add(pageName)\n } else {\n pageNameSet.add(pageName)\n }\n\n /**\n * If there is a middleware that is not declared in the root we will\n * warn without adding it so it doesn't make its way into the system.\n */\n if (/[\\\\\\\\/]_middleware$/.test(pageName)) {\n nestedMiddleware.push(pageName)\n continue\n }\n\n routedPages.push(pageName)\n }\n\n const numConflicting = conflictingAppPagePaths.size\n conflictingPageChange = numConflicting - previousConflictingPagePaths.size\n\n if (conflictingPageChange !== 0) {\n if (numConflicting > 0) {\n let errorMessage = `Conflicting app and page file${\n numConflicting === 1 ? ' was' : 's were'\n } found, please remove the conflicting files to continue:\\n`\n\n for (const p of conflictingAppPagePaths) {\n const appPath = path.relative(dir, appPageFilePaths.get(p)!)\n const pagesPath = path.relative(dir, pagesPageFilePaths.get(p)!)\n errorMessage += ` \"${pagesPath}\" - \"${appPath}\"\\n`\n }\n hotReloader.setHmrServerError(new Error(errorMessage))\n } else if (numConflicting === 0) {\n hotReloader.clearHmrServerError()\n await propagateServerField(opts, 'reloadMatchers', undefined)\n }\n }\n\n previousConflictingPagePaths = conflictingAppPagePaths\n\n let clientRouterFilters: any\n if (nextConfig.experimental.clientRouterFilter) {\n clientRouterFilters = createClientRouterFilter(\n Object.keys(appPaths),\n nextConfig.experimental.clientRouterFilterRedirects\n ? ((nextConfig as any)._originalRedirects || []).filter(\n (r: any) => !r.internal\n )\n : [],\n nextConfig.experimental.clientRouterFilterAllowedRate\n )\n\n if (\n !previousClientRouterFilters ||\n JSON.stringify(previousClientRouterFilters) !==\n JSON.stringify(clientRouterFilters)\n ) {\n envChange = true\n previousClientRouterFilters = clientRouterFilters\n }\n }\n\n if (envChange || tsconfigChange) {\n if (envChange) {\n writeEnvDefinitions = true\n\n await propagateServerField(opts, 'loadEnvConfig', [\n { dev: true, forceReload: true },\n ])\n }\n\n if (hotReloader.turbopackProject) {\n const hasRewrites =\n opts.fsChecker.rewrites.afterFiles.length > 0 ||\n opts.fsChecker.rewrites.beforeFiles.length > 0 ||\n opts.fsChecker.rewrites.fallback.length > 0\n\n const rootPath =\n opts.nextConfig.turbopack?.root ||\n opts.nextConfig.outputFileTracingRoot ||\n opts.dir\n await hotReloader.turbopackProject.update({\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters,\n config: nextConfig,\n dev: true,\n distDir,\n fetchCacheKeyPrefix:\n opts.nextConfig.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // TODO: Implement\n middlewareMatchers: undefined,\n projectPath: opts.dir,\n rewrites: opts.fsChecker.rewrites,\n }),\n rootPath,\n projectPath: normalizePath(path.relative(rootPath, dir)),\n })\n } else {\n let tsconfigResult:\n | UnwrapPromise<\n ReturnType<\n typeof import('../../../build/load-jsconfig').default\n >\n >\n | undefined\n // This is not relevant for Turbopack because tsconfig/jsconfig is handled internally.\n if (tsconfigChange) {\n try {\n const loadJsConfig = (\n require('../../../build/load-jsconfig') as typeof import('../../../build/load-jsconfig')\n ).default\n tsconfigResult = await loadJsConfig(dir, nextConfig)\n } catch (_) {\n /* do we want to log if there are syntax errors in tsconfig while editing? */\n }\n }\n\n hotReloader.activeWebpackConfigs?.forEach((config, idx) => {\n const isClient = idx === 0\n const isNodeServer = idx === 1\n const isEdgeServer = idx === 2\n const hasRewrites =\n opts.fsChecker.rewrites.afterFiles.length > 0 ||\n opts.fsChecker.rewrites.beforeFiles.length > 0 ||\n opts.fsChecker.rewrites.fallback.length > 0\n\n if (tsconfigChange) {\n config.resolve?.plugins?.forEach((plugin: any) => {\n // look for the JsConfigPathsPlugin and update with\n // the latest paths/baseUrl config\n if (plugin instanceof JsConfigPathsPlugin && tsconfigResult) {\n const { resolvedBaseUrl, jsConfig } = tsconfigResult\n const currentResolvedBaseUrl = plugin.resolvedBaseUrl\n const resolvedUrlIndex = config.resolve?.modules?.findIndex(\n (item) => item === currentResolvedBaseUrl?.baseUrl\n )\n\n if (resolvedBaseUrl) {\n if (\n resolvedBaseUrl.baseUrl !==\n currentResolvedBaseUrl?.baseUrl\n ) {\n // remove old baseUrl and add new one\n if (resolvedUrlIndex && resolvedUrlIndex > -1) {\n config.resolve?.modules?.splice(resolvedUrlIndex, 1)\n }\n\n // If the resolvedBaseUrl is implicit we only remove the previous value.\n // Only add the baseUrl if it's explicitly set in tsconfig/jsconfig\n if (!resolvedBaseUrl.isImplicit) {\n config.resolve?.modules?.push(resolvedBaseUrl.baseUrl)\n }\n }\n }\n\n if (jsConfig?.compilerOptions?.paths && resolvedBaseUrl) {\n Object.keys(plugin.paths).forEach((key) => {\n delete plugin.paths[key]\n })\n Object.assign(plugin.paths, jsConfig.compilerOptions.paths)\n plugin.resolvedBaseUrl = resolvedBaseUrl\n }\n }\n })\n }\n\n if (envChange) {\n config.plugins?.forEach((plugin: any) => {\n // we look for the DefinePlugin definitions so we can\n // update them on the active compilers\n if (\n plugin &&\n typeof plugin.definitions === 'object' &&\n plugin.definitions.__NEXT_DEFINE_ENV\n ) {\n const newDefine = getDefineEnv({\n isTurbopack: false,\n clientRouterFilters,\n config: nextConfig,\n dev: true,\n distDir,\n fetchCacheKeyPrefix:\n opts.nextConfig.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n isClient,\n isEdgeServer,\n isNodeServer,\n middlewareMatchers: undefined,\n projectPath: opts.dir,\n rewrites: opts.fsChecker.rewrites,\n })\n\n Object.keys(plugin.definitions).forEach((key) => {\n if (!(key in newDefine)) {\n delete plugin.definitions[key]\n }\n })\n Object.assign(plugin.definitions, newDefine)\n }\n })\n }\n })\n }\n await hotReloader.invalidate({\n reloadAfterInvalidation: envChange,\n })\n }\n\n if (nestedMiddleware.length > 0) {\n Log.error(\n new NestedMiddlewareError(\n nestedMiddleware,\n dir,\n (pagesDir || appDir)!\n ).message\n )\n nestedMiddleware = []\n }\n\n // Make sure to sort parallel routes to make the result deterministic.\n serverFields.appPathRoutes = Object.fromEntries(\n Object.entries(appPaths).map(([k, v]) => [k, v.sort()])\n )\n await propagateServerField(\n opts,\n 'appPathRoutes',\n serverFields.appPathRoutes\n )\n\n // TODO: pass this to fsChecker/next-dev-server?\n serverFields.middleware = middlewareMatchers\n ? {\n match: null as any,\n page: '/',\n matchers: middlewareMatchers,\n }\n : undefined\n\n await propagateServerField(opts, 'middleware', serverFields.middleware)\n serverFields.hasAppNotFound = hasRootAppNotFound\n\n opts.fsChecker.middlewareMatcher = serverFields.middleware?.matchers\n ? getMiddlewareRouteMatcher(serverFields.middleware?.matchers)\n : undefined\n\n const interceptionRoutes = generateInterceptionRoutesRewrites(\n Object.keys(appPaths),\n opts.nextConfig.basePath\n ).map((item) =>\n buildCustomRoute(\n 'before_files_rewrite',\n item,\n opts.nextConfig.basePath,\n opts.nextConfig.experimental.caseSensitiveRoutes\n )\n )\n\n opts.fsChecker.rewrites.beforeFiles.push(...interceptionRoutes)\n\n const exportPathMap =\n (typeof nextConfig.exportPathMap === 'function' &&\n (await nextConfig.exportPathMap?.(\n {},\n {\n dev: true,\n dir: opts.dir,\n outDir: null,\n distDir: distDir,\n buildId: 'development',\n }\n ))) ||\n {}\n\n const exportPathMapEntries = Object.entries(exportPathMap || {})\n\n if (exportPathMapEntries.length > 0) {\n opts.fsChecker.exportPathMapRoutes = exportPathMapEntries.map(\n ([key, value]) =>\n buildCustomRoute(\n 'before_files_rewrite',\n {\n source: key,\n destination: `${value.page}${\n value.query ? '?' : ''\n }${qs.stringify(value.query)}`,\n },\n opts.nextConfig.basePath,\n opts.nextConfig.experimental.caseSensitiveRoutes\n )\n )\n }\n\n try {\n // we serve a separate manifest with all pages for the client in\n // dev mode so that we can match a page after a rewrite on the client\n // before it has been built and is populated in the _buildManifest\n const sortedRoutes = getSortedRoutes(routedPages)\n\n opts.fsChecker.dynamicRoutes = sortedRoutes.map(\n (page): FilesystemDynamicRoute => {\n const regex = getNamedRouteRegex(page, {\n prefixRouteKeys: true,\n })\n return {\n regex: regex.re.toString(),\n namedRegex: regex.namedRegex,\n routeKeys: regex.routeKeys,\n match: getRouteMatcher(regex),\n page,\n }\n }\n )\n\n const dataRoutes: typeof opts.fsChecker.dynamicRoutes = []\n\n for (const page of sortedRoutes) {\n const route = buildDataRoute(page, 'development')\n const routeRegex = getNamedRouteRegex(route.page, {\n prefixRouteKeys: true,\n })\n dataRoutes.push({\n ...route,\n regex: routeRegex.re.toString(),\n namedRegex: routeRegex.namedRegex,\n routeKeys: routeRegex.routeKeys,\n match: getRouteMatcher({\n // TODO: fix this in the manifest itself, must also be fixed in\n // upstream builder that relies on this\n re: opts.nextConfig.i18n\n ? new RegExp(\n route.dataRouteRegex.replace(\n `/development/`,\n `/development/(?<nextLocale>[^/]+?)/`\n )\n )\n : new RegExp(route.dataRouteRegex),\n groups: routeRegex.groups,\n }),\n })\n }\n opts.fsChecker.dynamicRoutes.unshift(...dataRoutes)\n\n // For Turbopack ADDED_PAGE and REMOVED_PAGE are implemented in hot-reloader-turbopack.ts\n // in order to avoid a race condition where ADDED_PAGE and REMOVED_PAGE are sent before Turbopack picked up the file change.\n if (!opts.turbo) {\n // Reload the matchers. The filesystem would have been written to,\n // and the matchers need to re-scan it to update the router.\n // Reloading the matchers should happen before `ADDED_PAGE` or `REMOVED_PAGE` is sent over the websocket\n // otherwise it sends the event too early.\n await propagateServerField(opts, 'reloadMatchers', undefined)\n\n if (\n !prevSortedRoutes?.every((val, idx) => val === sortedRoutes[idx])\n ) {\n const addedRoutes = sortedRoutes.filter(\n (route) => !prevSortedRoutes.includes(route)\n )\n const removedRoutes = prevSortedRoutes.filter(\n (route) => !sortedRoutes.includes(route)\n )\n\n // emit the change so clients fetch the update\n hotReloader.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.DEV_PAGES_MANIFEST_UPDATE,\n data: [\n {\n devPagesManifest: true,\n },\n ],\n })\n\n addedRoutes.forEach((route) => {\n hotReloader.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.ADDED_PAGE,\n data: [route],\n })\n })\n\n removedRoutes.forEach((route) => {\n hotReloader.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.REMOVED_PAGE,\n data: [route],\n })\n })\n }\n }\n prevSortedRoutes = sortedRoutes\n\n if (enabledTypeScript) {\n // Using === false to make the check clearer.\n if (typescriptStatusFromLastAggregation === false) {\n // we tolerate the error here as this is best effort\n // and the manual install command will be shown\n await verifyTypeScript(opts)\n .then(() => {\n tsconfigChange = true\n })\n .catch(() => {})\n }\n\n if (writeEnvDefinitions && nextConfig.experimental?.typedEnv) {\n // TODO: The call to propagateServerField 'loadEnvConfig' causes the env to be loaded twice on env file changes.\n const loadEnvConfig = (\n require('@next/env') as typeof import('@next/env')\n ).loadEnvConfig\n const { loadedEnvFiles } = loadEnvConfig(\n dir,\n process.env.NODE_ENV === 'development',\n // Silent as it's the second time `loadEnvConfig` is called in this pass.\n undefined,\n true\n )\n\n const createEnvDefinitions = (\n require('../experimental/create-env-definitions') as typeof import('../experimental/create-env-definitions')\n ).createEnvDefinitions\n await createEnvDefinitions({\n distDir,\n loadedEnvFiles: [\n ...loadedEnvFiles,\n {\n path: nextConfig.configFileName,\n env: nextConfig.env,\n contents: '',\n },\n ],\n })\n }\n\n const routeTypesManifest = await createRouteTypesManifest({\n dir,\n pageRoutes,\n appRoutes,\n layoutRoutes,\n slots,\n redirects: opts.nextConfig.redirects,\n rewrites: opts.nextConfig.rewrites,\n // Ensure relative paths in validator.ts are computed from validatorFilePath,\n // matching behavior of build and CLI typegen.\n validatorFilePath,\n appRouteHandlers,\n pageApiRoutes,\n })\n\n await writeRouteTypesManifest(\n routeTypesManifest,\n routeTypesFilePath,\n opts.nextConfig\n )\n await writeValidatorFile(routeTypesManifest, validatorFilePath)\n\n // Generate cache-life types if cacheLife config exists\n const cacheLifeFilePath = path.join(distTypesDir, 'cache-life.d.ts')\n writeCacheLifeTypes(opts.nextConfig.cacheLife, cacheLifeFilePath)\n }\n\n if (!resolved) {\n resolve()\n resolved = true\n }\n } catch (e) {\n if (!resolved) {\n reject(e)\n resolved = true\n } else {\n Log.warn('Failed to reload dynamic routes:', e)\n }\n }\n })\n\n wp.watch({ directories: [dir], startTime: 0 })\n })\n\n const clientPagesManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${DEV_CLIENT_PAGES_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(clientPagesManifestPath)\n\n const devMiddlewareManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${DEV_CLIENT_MIDDLEWARE_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(devMiddlewareManifestPath)\n\n const devTurbopackMiddlewareManifestPath = `/_next/${CLIENT_STATIC_FILES_PATH}/development/${TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST}`\n opts.fsChecker.devVirtualFsItems.add(devTurbopackMiddlewareManifestPath)\n\n async function requestHandler(req: IncomingMessage, res: ServerResponse) {\n const parsedUrl = url.parse(req.url || '/')\n\n if (parsedUrl.pathname?.includes(clientPagesManifestPath)) {\n res.statusCode = 200\n res.setHeader('Content-Type', JSON_CONTENT_TYPE_HEADER)\n res.end(\n JSON.stringify({\n pages: prevSortedRoutes.filter(\n (route) => !opts.fsChecker.appFiles.has(route)\n ),\n })\n )\n return { finished: true }\n }\n\n if (\n parsedUrl.pathname?.includes(devMiddlewareManifestPath) ||\n parsedUrl.pathname?.includes(devTurbopackMiddlewareManifestPath)\n ) {\n res.statusCode = 200\n res.setHeader('Content-Type', JSON_CONTENT_TYPE_HEADER)\n res.end(JSON.stringify(serverFields.middleware?.matchers || []))\n return { finished: true }\n }\n return { finished: false }\n }\n\n function logErrorWithOriginalStack(\n err: unknown,\n type?: 'unhandledRejection' | 'uncaughtException' | 'warning' | 'app-dir'\n ) {\n if (err instanceof Error) {\n err.message = deobfuscateText(err.message)\n }\n if (err instanceof ModuleBuildError) {\n // Errors that may come from issues from the user's code\n Log.error(err.message)\n } else if (err instanceof TurbopackInternalError) {\n // An internal Turbopack error that has been handled by next-swc, written\n // to disk and a simplified message shown to user on the Rust side.\n } else if (type === 'warning') {\n Log.warn(err)\n } else if (type === 'app-dir') {\n Log.error(err)\n } else if (type) {\n Log.error(`${type}:`, err)\n } else {\n Log.error(err)\n }\n }\n\n return {\n serverFields,\n hotReloader,\n requestHandler,\n logErrorWithOriginalStack,\n\n async ensureMiddleware(requestUrl?: string) {\n if (!serverFields.actualMiddlewareFile) return\n return hotReloader.ensurePage({\n page: serverFields.actualMiddlewareFile,\n clientOnly: false,\n definition: undefined,\n url: requestUrl,\n })\n },\n }\n}\n\nexport async function setupDevBundler(opts: SetupOpts) {\n const isSrcDir = path\n .relative(opts.dir, opts.pagesDir || opts.appDir || '')\n .startsWith('src')\n await installBindings(opts.nextConfig.experimental?.useWasmBinary)\n const result = await startWatcher({\n ...opts,\n isSrcDir,\n })\n\n opts.telemetry.record(\n eventCliSession(opts.nextConfig, {\n webpackVersion: 5,\n isSrcDir,\n turboFlag: !!opts.turbo,\n cliCommand: 'dev',\n appDir: !!opts.appDir,\n pagesDir: !!opts.pagesDir,\n isCustomServer: !!opts.isCustomServer,\n hasNowJson: !!(await findUp('now.json', { cwd: opts.dir })),\n })\n )\n\n // Track build features for dev server here:\n opts.telemetry.record({\n eventName: EVENT_BUILD_FEATURE_USAGE,\n payload: {\n featureName: 'turbopackFileSystemCache',\n invocationCount: isFileSystemCacheEnabledForDev(opts.nextConfig) ? 1 : 0,\n },\n })\n\n return result\n}\n\nexport type DevBundler = Awaited<ReturnType<typeof setupDevBundler>>\n\n// Returns a trace rewritten through Turbopack's sourcemaps\n"],"names":["propagateServerField","setupDevBundler","verifyTypeScript","opts","verifyResult","verifyTypeScriptSetup","dir","distDir","nextConfig","intentDirs","pagesDir","appDir","filter","Boolean","typeCheckPreflight","tsconfigPath","typescript","disableStaticImages","images","hasAppDir","hasPagesDir","isolatedDevBuild","experimental","version","field","args","renderServer","instance","startWatcher","resetFetch","useFileSystemPublicRoutes","path","join","setGlobal","PHASE_DEVELOPMENT_SERVER","lockfile","lockDistDir","fs","mkdirSync","recursive","Lockfile","acquireWithRetriesOrExit","validFileMatcher","createValidFileMatcher","pageExtensions","serverFields","consoleStore","setState","logging","hotReloader","turbo","createHotReloaderTurbopack","require","HotReloaderWebpack","default","isSrcDir","config","buildId","encryptionKey","generateEncryptionKeyBase64","isBuild","telemetry","rewrites","fsChecker","previewProps","prerenderManifest","preview","onDevServerCleanup","start","distTypesDir","writeRouteTypesManifest","appRoutes","pageRoutes","layoutRoutes","appRouteHandlerRoutes","redirectRoutes","rewriteRoutes","appPagePaths","Set","pagesRouterPagePaths","layoutPaths","appRouteHandlers","pageApiRoutes","filePathToRoute","Map","routesManifestPath","ROUTES_MANIFEST","routesManifest","caseSensitive","caseSensitiveRoutes","basePath","redirects","headers","i18n","undefined","skipProxyUrlNormalize","promises","writeFile","JSON","stringify","prerenderManifestPath","PRERENDER_MANIFEST","nextScriptWorkers","verifyPartytownSetup","CLIENT_STATIC_FILES_PATH","ensureCallback","ensure","item","type","ensurePage","clientOnly","page","itemPath","isApp","definition","resolved","prevSortedRoutes","Promise","resolve","reject","readdir","_","files","length","pages","app","directories","rootDir","getPossibleMiddlewareFilenames","getPossibleInstrumentationHookFilenames","nestedMiddleware","envFiles","map","file","push","tsconfigPaths","wp","Watchpack","aggregateTimeout","ignored","pathname","some","startsWith","d","fileWatchTimes","enabledTypeScript","previousClientRouterFilters","previousConflictingPagePaths","routeTypesFilePath","validatorFilePath","initialWatchTime","performance","now","timeOrigin","on","writeEnvDefinitions","typescriptStatusFromLastAggregation","middlewareMatchers","routedPages","knownFiles","getTimeInfoEntries","appPaths","pageNameSet","conflictingAppPagePaths","appPageFilePaths","pagesPageFilePaths","slots","envChange","tsconfigChange","conflictingPageChange","hasRootAppNotFound","appFiles","pageFiles","staticMetadataFiles","clear","devPageFiles","sortedKnownFiles","keys","sort","sortByPageExts","proxyFilePath","middlewareFilePath","fileName","includes","name","fileBaseName","fileDir","parse","isAtConventionLevel","MIDDLEWARE_FILENAME","PROXY_FILENAME","cwd","process","Error","relative","Log","warnOnce","meta","get","watchTime","nextWatchTime","timestamp","fileChanged","set","endsWith","accuracy","isPageFile","isAppPath","normalizePathSep","isPagePath","rootFile","absolutePathToPage","extensions","keepIndex","pagesType","PAGE_TYPES","ROOT","isMiddlewareFile","staticInfo","getStaticInfoIncludingLayouts","pageFilePath","isDev","isInsideAppDir","output","error","actualMiddlewareFile","middleware","matchers","regexp","originalSource","isInstrumentationHookFile","actualInstrumentationHookFile","add","pageName","APP","PAGES","isMetadataRouteFile","replace","getPageStaticInfo","pageType","normalizeMetadataPageToRoute","generateSitemaps","generateImageMetadata","isRootNotFound","segments","split","i","segment","isParallelRouteSegment","parentPath","normalizeAppPath","slice","slotName","s","parent","isAppLayoutPage","route","ensureLeadingSlash","filePath","isAppRouterPage","originalPageName","isStaticMetadataFile","isAppRouterRoute","nextDataRoutes","has","test","numConflicting","size","errorMessage","p","appPath","pagesPath","setHmrServerError","clearHmrServerError","clientRouterFilters","clientRouterFilter","createClientRouterFilter","Object","clientRouterFilterRedirects","_originalRedirects","r","internal","clientRouterFilterAllowedRate","dev","forceReload","turbopackProject","hasRewrites","afterFiles","beforeFiles","fallback","rootPath","turbopack","root","outputFileTracingRoot","update","defineEnv","createDefineEnv","isTurbopack","fetchCacheKeyPrefix","projectPath","normalizePath","tsconfigResult","loadJsConfig","activeWebpackConfigs","forEach","idx","isClient","isNodeServer","isEdgeServer","plugins","plugin","JsConfigPathsPlugin","jsConfig","resolvedBaseUrl","currentResolvedBaseUrl","resolvedUrlIndex","modules","findIndex","baseUrl","splice","isImplicit","compilerOptions","paths","key","assign","definitions","__NEXT_DEFINE_ENV","newDefine","getDefineEnv","invalidate","reloadAfterInvalidation","NestedMiddlewareError","message","appPathRoutes","fromEntries","entries","k","v","match","hasAppNotFound","middlewareMatcher","getMiddlewareRouteMatcher","interceptionRoutes","generateInterceptionRoutesRewrites","buildCustomRoute","exportPathMap","outDir","exportPathMapEntries","exportPathMapRoutes","value","source","destination","query","qs","sortedRoutes","getSortedRoutes","dynamicRoutes","regex","getNamedRouteRegex","prefixRouteKeys","re","toString","namedRegex","routeKeys","getRouteMatcher","dataRoutes","buildDataRoute","routeRegex","RegExp","dataRouteRegex","groups","unshift","every","val","addedRoutes","removedRoutes","send","HMR_MESSAGE_SENT_TO_BROWSER","DEV_PAGES_MANIFEST_UPDATE","data","devPagesManifest","ADDED_PAGE","REMOVED_PAGE","then","catch","typedEnv","loadEnvConfig","loadedEnvFiles","env","NODE_ENV","createEnvDefinitions","configFileName","contents","routeTypesManifest","createRouteTypesManifest","writeValidatorFile","cacheLifeFilePath","writeCacheLifeTypes","cacheLife","e","warn","watch","startTime","clientPagesManifestPath","DEV_CLIENT_PAGES_MANIFEST","devVirtualFsItems","devMiddlewareManifestPath","DEV_CLIENT_MIDDLEWARE_MANIFEST","devTurbopackMiddlewareManifestPath","TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST","requestHandler","req","res","parsedUrl","url","statusCode","setHeader","JSON_CONTENT_TYPE_HEADER","end","finished","logErrorWithOriginalStack","err","deobfuscateText","ModuleBuildError","TurbopackInternalError","ensureMiddleware","requestUrl","installBindings","useWasmBinary","result","record","eventCliSession","webpackVersion","turboFlag","cliCommand","isCustomServer","hasNowJson","findUp","eventName","EVENT_BUILD_FEATURE_USAGE","payload","featureName","invocationCount","isFileSystemCacheEnabledForDev"],"mappings":"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","ignoreList":[0]}
@@ -179,7 +179,7 @@ async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup, server
179
179
  async function startServer(serverOptions) {
180
180
  const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
181
181
  let { port } = serverOptions;
182
- process.title = `next-server (v${"16.0.2-canary.10"})`;
182
+ process.title = `next-server (v${"16.0.2-canary.12"})`;
183
183
  let handlersReady = ()=>{};
184
184
  let handlersError = ()=>{};
185
185
  let handlersPromise = new Promise((resolve, reject)=>{
@@ -119,7 +119,6 @@ class NextTracerImpl {
119
119
  return context.with(remoteContext, fn);
120
120
  }
121
121
  trace(...args) {
122
- var _trace_getSpanContext;
123
122
  const [type, fnOrOptions, fnOrEmpty] = args;
124
123
  // coerce options form overload
125
124
  const { fn, options } = typeof fnOrOptions === 'function' ? {
@@ -137,13 +136,15 @@ class NextTracerImpl {
137
136
  }
138
137
  // Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it.
139
138
  let spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan());
140
- let isRootSpan = false;
141
139
  if (!spanContext) {
142
140
  spanContext = (context == null ? void 0 : context.active()) ?? ROOT_CONTEXT;
143
- isRootSpan = true;
144
- } else if ((_trace_getSpanContext = trace.getSpanContext(spanContext)) == null ? void 0 : _trace_getSpanContext.isRemote) {
145
- isRootSpan = true;
146
141
  }
142
+ // Check if there's already a root span in the store for this trace
143
+ // We are intentionally not checking whether there is an active context
144
+ // from outside of nextjs to ensure that we can provide the same level
145
+ // of telemetry when using a custom server
146
+ const existingRootSpanId = spanContext.getValue(rootSpanIdKey);
147
+ const isRootSpan = typeof existingRootSpanId !== 'number' || !rootSpanAttributesStore.has(existingRootSpanId);
147
148
  const spanId = getSpanId();
148
149
  options.attributes = {
149
150
  'next.span_name': spanName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/server/lib/trace/tracer.ts"],"sourcesContent":["import type { FetchEventResult } from '../../web/types'\nimport type { TextMapSetter } from '@opentelemetry/api'\nimport type { SpanTypes } from './constants'\nimport { LogSpanAllowList, NextVanillaSpanAllowlist } from './constants'\n\nimport type {\n ContextAPI,\n Span,\n SpanOptions,\n Tracer,\n AttributeValue,\n TextMapGetter,\n} from 'next/dist/compiled/@opentelemetry/api'\nimport { isThenable } from '../../../shared/lib/is-thenable'\n\nconst NEXT_OTEL_PERFORMANCE_PREFIX = process.env.NEXT_OTEL_PERFORMANCE_PREFIX\n\nlet api: typeof import('next/dist/compiled/@opentelemetry/api')\n\n// we want to allow users to use their own version of @opentelemetry/api if they\n// want to, so we try to require it first, and if it fails we fall back to the\n// version that is bundled with Next.js\n// this is because @opentelemetry/api has to be synced with the version of\n// @opentelemetry/tracing that is used, and we don't want to force users to use\n// the version that is bundled with Next.js.\n// the API is ~stable, so this should be fine\nif (process.env.NEXT_RUNTIME === 'edge') {\n api = require('@opentelemetry/api') as typeof import('@opentelemetry/api')\n} else {\n try {\n api = require('@opentelemetry/api') as typeof import('@opentelemetry/api')\n } catch (err) {\n api =\n require('next/dist/compiled/@opentelemetry/api') as typeof import('next/dist/compiled/@opentelemetry/api')\n }\n}\n\nconst { context, propagation, trace, SpanStatusCode, SpanKind, ROOT_CONTEXT } =\n api\n\nexport class BubbledError extends Error {\n constructor(\n public readonly bubble?: boolean,\n public readonly result?: FetchEventResult\n ) {\n super()\n }\n}\n\nexport function isBubbledError(error: unknown): error is BubbledError {\n if (typeof error !== 'object' || error === null) return false\n return error instanceof BubbledError\n}\n\nconst closeSpanWithError = (span: Span, error?: Error) => {\n if (isBubbledError(error) && error.bubble) {\n span.setAttribute('next.bubble', true)\n } else {\n if (error) {\n span.recordException(error)\n span.setAttribute('error.type', error.name)\n }\n span.setStatus({ code: SpanStatusCode.ERROR, message: error?.message })\n }\n span.end()\n}\n\ntype TracerSpanOptions = Omit<SpanOptions, 'attributes'> & {\n parentSpan?: Span\n spanName?: string\n attributes?: Partial<Record<AttributeNames, AttributeValue | undefined>>\n hideSpan?: boolean\n}\n\ninterface NextTracer {\n getContext(): ContextAPI\n\n /**\n * Instruments a function by automatically creating a span activated on its\n * scope.\n *\n * The span will automatically be finished when one of these conditions is\n * met:\n *\n * * The function returns a promise, in which case the span will finish when\n * the promise is resolved or rejected.\n * * The function takes a callback as its second parameter, in which case the\n * span will finish when that callback is called.\n * * The function doesn't accept a callback and doesn't return a promise, in\n * which case the span will finish at the end of the function execution.\n *\n */\n trace<T>(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise<T>\n ): Promise<T>\n trace<T>(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n trace<T>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise<T>\n ): Promise<T>\n trace<T>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n\n /**\n * Wrap a function to automatically create a span activated on its\n * scope when it's called.\n *\n * The span will automatically be finished when one of these conditions is\n * met:\n *\n * * The function returns a promise, in which case the span will finish when\n * the promise is resolved or rejected.\n * * The function takes a callback as its last parameter, in which case the\n * span will finish when that callback is called.\n * * The function doesn't accept a callback and doesn't return a promise, in\n * which case the span will finish at the end of the function execution.\n */\n wrap<T = (...args: Array<any>) => any>(type: SpanTypes, fn: T): T\n wrap<T = (...args: Array<any>) => any>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: T\n ): T\n wrap<T = (...args: Array<any>) => any>(\n type: SpanTypes,\n options: (...args: any[]) => TracerSpanOptions,\n fn: T\n ): T\n\n /**\n * Starts and returns a new Span representing a logical unit of work.\n *\n * This method do NOT modify the current Context by default. In result, any inner span will not\n * automatically set its parent context to the span created by this method unless manually activate\n * context via `tracer.getContext().with`. `trace`, or `wrap` is generally recommended as it gracefully\n * handles context activation. (ref: https://github.com/open-telemetry/opentelemetry-js/issues/1923)\n */\n startSpan(type: SpanTypes): Span\n startSpan(type: SpanTypes, options: TracerSpanOptions): Span\n\n /**\n * Returns currently activated span if current context is in the scope of the span.\n * Returns undefined otherwise.\n */\n getActiveScopeSpan(): Span | undefined\n\n /**\n * Returns trace propagation data for the currently active context. The format is equal to data provided\n * through the OpenTelemetry propagator API.\n */\n getTracePropagationData(): ClientTraceDataEntry[]\n}\n\ntype NextAttributeNames =\n | 'next.route'\n | 'next.page'\n | 'next.rsc'\n | 'next.segment'\n | 'next.span_name'\n | 'next.span_type'\n | 'next.clientComponentLoadCount'\ntype OTELAttributeNames = `http.${string}` | `net.${string}`\ntype AttributeNames = NextAttributeNames | OTELAttributeNames\n\n/** we use this map to propagate attributes from nested spans to the top span */\nconst rootSpanAttributesStore = new Map<\n number,\n Map<AttributeNames, AttributeValue | undefined>\n>()\nconst rootSpanIdKey = api.createContextKey('next.rootSpanId')\nlet lastSpanId = 0\nconst getSpanId = () => lastSpanId++\n\nexport interface ClientTraceDataEntry {\n key: string\n value: string\n}\n\nconst clientTraceDataSetter: TextMapSetter<ClientTraceDataEntry[]> = {\n set(carrier, key, value) {\n carrier.push({\n key,\n value,\n })\n },\n}\n\nclass NextTracerImpl implements NextTracer {\n /**\n * Returns an instance to the trace with configured name.\n * Since wrap / trace can be defined in any place prior to actual trace subscriber initialization,\n * This should be lazily evaluated.\n */\n private getTracerInstance(): Tracer {\n return trace.getTracer('next.js', '0.0.1')\n }\n\n public getContext(): ContextAPI {\n return context\n }\n\n public getTracePropagationData(): ClientTraceDataEntry[] {\n const activeContext = context.active()\n const entries: ClientTraceDataEntry[] = []\n propagation.inject(activeContext, entries, clientTraceDataSetter)\n return entries\n }\n\n public getActiveScopeSpan(): Span | undefined {\n return trace.getSpan(context?.active())\n }\n\n public withPropagatedContext<T, C>(\n carrier: C,\n fn: () => T,\n getter?: TextMapGetter<C>\n ): T {\n const activeContext = context.active()\n if (trace.getSpanContext(activeContext)) {\n // Active span is already set, too late to propagate.\n return fn()\n }\n const remoteContext = propagation.extract(activeContext, carrier, getter)\n return context.with(remoteContext, fn)\n }\n\n // Trace, wrap implementation is inspired by datadog trace implementation\n // (https://datadoghq.dev/dd-trace-js/interfaces/tracer.html#trace).\n public trace<T>(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise<T>\n ): Promise<T>\n public trace<T>(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n public trace<T>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise<T>\n ): Promise<T>\n public trace<T>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n public trace<T>(...args: Array<any>) {\n const [type, fnOrOptions, fnOrEmpty] = args\n\n // coerce options form overload\n const {\n fn,\n options,\n }: {\n fn: (span?: Span, done?: (error?: Error) => any) => T | Promise<T>\n options: TracerSpanOptions\n } =\n typeof fnOrOptions === 'function'\n ? {\n fn: fnOrOptions,\n options: {},\n }\n : {\n fn: fnOrEmpty,\n options: { ...fnOrOptions },\n }\n\n const spanName = options.spanName ?? type\n\n if (\n (!NextVanillaSpanAllowlist.has(type) &&\n process.env.NEXT_OTEL_VERBOSE !== '1') ||\n options.hideSpan\n ) {\n return fn()\n }\n\n // Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it.\n let spanContext = this.getSpanContext(\n options?.parentSpan ?? this.getActiveScopeSpan()\n )\n let isRootSpan = false\n\n if (!spanContext) {\n spanContext = context?.active() ?? ROOT_CONTEXT\n isRootSpan = true\n } else if (trace.getSpanContext(spanContext)?.isRemote) {\n isRootSpan = true\n }\n\n const spanId = getSpanId()\n\n options.attributes = {\n 'next.span_name': spanName,\n 'next.span_type': type,\n ...options.attributes,\n }\n\n return context.with(spanContext.setValue(rootSpanIdKey, spanId), () =>\n this.getTracerInstance().startActiveSpan(\n spanName,\n options,\n (span: Span) => {\n let startTime: number | undefined\n if (\n NEXT_OTEL_PERFORMANCE_PREFIX &&\n type &&\n LogSpanAllowList.has(type)\n ) {\n startTime =\n 'performance' in globalThis && 'measure' in performance\n ? globalThis.performance.now()\n : undefined\n }\n\n let cleanedUp = false\n const onCleanup = () => {\n if (cleanedUp) return\n cleanedUp = true\n rootSpanAttributesStore.delete(spanId)\n if (startTime) {\n performance.measure(\n `${NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(\n type.split('.').pop() || ''\n ).replace(\n /[A-Z]/g,\n (match: string) => '-' + match.toLowerCase()\n )}`,\n {\n start: startTime,\n end: performance.now(),\n }\n )\n }\n }\n\n if (isRootSpan) {\n rootSpanAttributesStore.set(\n spanId,\n new Map(\n Object.entries(options.attributes ?? {}) as [\n AttributeNames,\n AttributeValue | undefined,\n ][]\n )\n )\n }\n if (fn.length > 1) {\n try {\n return fn(span, (err) => closeSpanWithError(span, err))\n } catch (err: any) {\n closeSpanWithError(span, err)\n throw err\n } finally {\n onCleanup()\n }\n }\n\n try {\n const result = fn(span)\n if (isThenable(result)) {\n // If there's error make sure it throws\n return result\n .then((res) => {\n span.end()\n // Need to pass down the promise result,\n // it could be react stream response with error { error, stream }\n return res\n })\n .catch((err) => {\n closeSpanWithError(span, err)\n throw err\n })\n .finally(onCleanup)\n } else {\n span.end()\n onCleanup()\n }\n\n return result\n } catch (err: any) {\n closeSpanWithError(span, err)\n onCleanup()\n throw err\n }\n }\n )\n )\n }\n\n public wrap<T = (...args: Array<any>) => any>(type: SpanTypes, fn: T): T\n public wrap<T = (...args: Array<any>) => any>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: T\n ): T\n public wrap<T = (...args: Array<any>) => any>(\n type: SpanTypes,\n options: (...args: any[]) => TracerSpanOptions,\n fn: T\n ): T\n public wrap(...args: Array<any>) {\n const tracer = this\n const [name, options, fn] =\n args.length === 3 ? args : [args[0], {}, args[1]]\n\n if (\n !NextVanillaSpanAllowlist.has(name) &&\n process.env.NEXT_OTEL_VERBOSE !== '1'\n ) {\n return fn\n }\n\n return function (this: any) {\n let optionsObj = options\n if (typeof optionsObj === 'function' && typeof fn === 'function') {\n optionsObj = optionsObj.apply(this, arguments)\n }\n\n const lastArgId = arguments.length - 1\n const cb = arguments[lastArgId]\n\n if (typeof cb === 'function') {\n const scopeBoundCb = tracer.getContext().bind(context.active(), cb)\n return tracer.trace(name, optionsObj, (_span, done) => {\n arguments[lastArgId] = function (err: any) {\n done?.(err)\n return scopeBoundCb.apply(this, arguments)\n }\n\n return fn.apply(this, arguments)\n })\n } else {\n return tracer.trace(name, optionsObj, () => fn.apply(this, arguments))\n }\n }\n }\n\n public startSpan(type: SpanTypes): Span\n public startSpan(type: SpanTypes, options: TracerSpanOptions): Span\n public startSpan(...args: Array<any>): Span {\n const [type, options]: [string, TracerSpanOptions | undefined] = args as any\n\n const spanContext = this.getSpanContext(\n options?.parentSpan ?? this.getActiveScopeSpan()\n )\n return this.getTracerInstance().startSpan(type, options, spanContext)\n }\n\n private getSpanContext(parentSpan?: Span) {\n const spanContext = parentSpan\n ? trace.setSpan(context.active(), parentSpan)\n : undefined\n\n return spanContext\n }\n\n public getRootSpanAttributes() {\n const spanId = context.active().getValue(rootSpanIdKey) as number\n return rootSpanAttributesStore.get(spanId)\n }\n\n public setRootSpanAttribute(key: AttributeNames, value: AttributeValue) {\n const spanId = context.active().getValue(rootSpanIdKey) as number\n const attributes = rootSpanAttributesStore.get(spanId)\n if (attributes && !attributes.has(key)) {\n attributes.set(key, value)\n }\n }\n}\n\nconst getTracer = (() => {\n const tracer = new NextTracerImpl()\n\n return () => tracer\n})()\n\nexport { getTracer, SpanStatusCode, SpanKind }\nexport type { NextTracer, Span, SpanOptions, ContextAPI, TracerSpanOptions }\n"],"names":["BubbledError","SpanKind","SpanStatusCode","getTracer","isBubbledError","NEXT_OTEL_PERFORMANCE_PREFIX","process","env","api","NEXT_RUNTIME","require","err","context","propagation","trace","ROOT_CONTEXT","Error","constructor","bubble","result","error","closeSpanWithError","span","setAttribute","recordException","name","setStatus","code","ERROR","message","end","rootSpanAttributesStore","Map","rootSpanIdKey","createContextKey","lastSpanId","getSpanId","clientTraceDataSetter","set","carrier","key","value","push","NextTracerImpl","getTracerInstance","getContext","getTracePropagationData","activeContext","active","entries","inject","getActiveScopeSpan","getSpan","withPropagatedContext","fn","getter","getSpanContext","remoteContext","extract","with","args","type","fnOrOptions","fnOrEmpty","options","spanName","NextVanillaSpanAllowlist","has","NEXT_OTEL_VERBOSE","hideSpan","spanContext","parentSpan","isRootSpan","isRemote","spanId","attributes","setValue","startActiveSpan","startTime","LogSpanAllowList","globalThis","performance","now","undefined","cleanedUp","onCleanup","delete","measure","split","pop","replace","match","toLowerCase","start","Object","length","isThenable","then","res","catch","finally","wrap","tracer","optionsObj","apply","arguments","lastArgId","cb","scopeBoundCb","bind","_span","done","startSpan","setSpan","getRootSpanAttributes","getValue","get","setRootSpanAttribute"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/server/lib/trace/tracer.ts"],"sourcesContent":["import type { FetchEventResult } from '../../web/types'\nimport type { TextMapSetter } from '@opentelemetry/api'\nimport type { SpanTypes } from './constants'\nimport { LogSpanAllowList, NextVanillaSpanAllowlist } from './constants'\n\nimport type {\n ContextAPI,\n Span,\n SpanOptions,\n Tracer,\n AttributeValue,\n TextMapGetter,\n} from 'next/dist/compiled/@opentelemetry/api'\nimport { isThenable } from '../../../shared/lib/is-thenable'\n\nconst NEXT_OTEL_PERFORMANCE_PREFIX = process.env.NEXT_OTEL_PERFORMANCE_PREFIX\n\nlet api: typeof import('next/dist/compiled/@opentelemetry/api')\n\n// we want to allow users to use their own version of @opentelemetry/api if they\n// want to, so we try to require it first, and if it fails we fall back to the\n// version that is bundled with Next.js\n// this is because @opentelemetry/api has to be synced with the version of\n// @opentelemetry/tracing that is used, and we don't want to force users to use\n// the version that is bundled with Next.js.\n// the API is ~stable, so this should be fine\nif (process.env.NEXT_RUNTIME === 'edge') {\n api = require('@opentelemetry/api') as typeof import('@opentelemetry/api')\n} else {\n try {\n api = require('@opentelemetry/api') as typeof import('@opentelemetry/api')\n } catch (err) {\n api =\n require('next/dist/compiled/@opentelemetry/api') as typeof import('next/dist/compiled/@opentelemetry/api')\n }\n}\n\nconst { context, propagation, trace, SpanStatusCode, SpanKind, ROOT_CONTEXT } =\n api\n\nexport class BubbledError extends Error {\n constructor(\n public readonly bubble?: boolean,\n public readonly result?: FetchEventResult\n ) {\n super()\n }\n}\n\nexport function isBubbledError(error: unknown): error is BubbledError {\n if (typeof error !== 'object' || error === null) return false\n return error instanceof BubbledError\n}\n\nconst closeSpanWithError = (span: Span, error?: Error) => {\n if (isBubbledError(error) && error.bubble) {\n span.setAttribute('next.bubble', true)\n } else {\n if (error) {\n span.recordException(error)\n span.setAttribute('error.type', error.name)\n }\n span.setStatus({ code: SpanStatusCode.ERROR, message: error?.message })\n }\n span.end()\n}\n\ntype TracerSpanOptions = Omit<SpanOptions, 'attributes'> & {\n parentSpan?: Span\n spanName?: string\n attributes?: Partial<Record<AttributeNames, AttributeValue | undefined>>\n hideSpan?: boolean\n}\n\ninterface NextTracer {\n getContext(): ContextAPI\n\n /**\n * Instruments a function by automatically creating a span activated on its\n * scope.\n *\n * The span will automatically be finished when one of these conditions is\n * met:\n *\n * * The function returns a promise, in which case the span will finish when\n * the promise is resolved or rejected.\n * * The function takes a callback as its second parameter, in which case the\n * span will finish when that callback is called.\n * * The function doesn't accept a callback and doesn't return a promise, in\n * which case the span will finish at the end of the function execution.\n *\n */\n trace<T>(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise<T>\n ): Promise<T>\n trace<T>(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n trace<T>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise<T>\n ): Promise<T>\n trace<T>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n\n /**\n * Wrap a function to automatically create a span activated on its\n * scope when it's called.\n *\n * The span will automatically be finished when one of these conditions is\n * met:\n *\n * * The function returns a promise, in which case the span will finish when\n * the promise is resolved or rejected.\n * * The function takes a callback as its last parameter, in which case the\n * span will finish when that callback is called.\n * * The function doesn't accept a callback and doesn't return a promise, in\n * which case the span will finish at the end of the function execution.\n */\n wrap<T = (...args: Array<any>) => any>(type: SpanTypes, fn: T): T\n wrap<T = (...args: Array<any>) => any>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: T\n ): T\n wrap<T = (...args: Array<any>) => any>(\n type: SpanTypes,\n options: (...args: any[]) => TracerSpanOptions,\n fn: T\n ): T\n\n /**\n * Starts and returns a new Span representing a logical unit of work.\n *\n * This method do NOT modify the current Context by default. In result, any inner span will not\n * automatically set its parent context to the span created by this method unless manually activate\n * context via `tracer.getContext().with`. `trace`, or `wrap` is generally recommended as it gracefully\n * handles context activation. (ref: https://github.com/open-telemetry/opentelemetry-js/issues/1923)\n */\n startSpan(type: SpanTypes): Span\n startSpan(type: SpanTypes, options: TracerSpanOptions): Span\n\n /**\n * Returns currently activated span if current context is in the scope of the span.\n * Returns undefined otherwise.\n */\n getActiveScopeSpan(): Span | undefined\n\n /**\n * Returns trace propagation data for the currently active context. The format is equal to data provided\n * through the OpenTelemetry propagator API.\n */\n getTracePropagationData(): ClientTraceDataEntry[]\n}\n\ntype NextAttributeNames =\n | 'next.route'\n | 'next.page'\n | 'next.rsc'\n | 'next.segment'\n | 'next.span_name'\n | 'next.span_type'\n | 'next.clientComponentLoadCount'\ntype OTELAttributeNames = `http.${string}` | `net.${string}`\ntype AttributeNames = NextAttributeNames | OTELAttributeNames\n\n/** we use this map to propagate attributes from nested spans to the top span */\nconst rootSpanAttributesStore = new Map<\n number,\n Map<AttributeNames, AttributeValue | undefined>\n>()\nconst rootSpanIdKey = api.createContextKey('next.rootSpanId')\nlet lastSpanId = 0\nconst getSpanId = () => lastSpanId++\n\nexport interface ClientTraceDataEntry {\n key: string\n value: string\n}\n\nconst clientTraceDataSetter: TextMapSetter<ClientTraceDataEntry[]> = {\n set(carrier, key, value) {\n carrier.push({\n key,\n value,\n })\n },\n}\n\nclass NextTracerImpl implements NextTracer {\n /**\n * Returns an instance to the trace with configured name.\n * Since wrap / trace can be defined in any place prior to actual trace subscriber initialization,\n * This should be lazily evaluated.\n */\n private getTracerInstance(): Tracer {\n return trace.getTracer('next.js', '0.0.1')\n }\n\n public getContext(): ContextAPI {\n return context\n }\n\n public getTracePropagationData(): ClientTraceDataEntry[] {\n const activeContext = context.active()\n const entries: ClientTraceDataEntry[] = []\n propagation.inject(activeContext, entries, clientTraceDataSetter)\n return entries\n }\n\n public getActiveScopeSpan(): Span | undefined {\n return trace.getSpan(context?.active())\n }\n\n public withPropagatedContext<T, C>(\n carrier: C,\n fn: () => T,\n getter?: TextMapGetter<C>\n ): T {\n const activeContext = context.active()\n if (trace.getSpanContext(activeContext)) {\n // Active span is already set, too late to propagate.\n return fn()\n }\n const remoteContext = propagation.extract(activeContext, carrier, getter)\n return context.with(remoteContext, fn)\n }\n\n // Trace, wrap implementation is inspired by datadog trace implementation\n // (https://datadoghq.dev/dd-trace-js/interfaces/tracer.html#trace).\n public trace<T>(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise<T>\n ): Promise<T>\n public trace<T>(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n public trace<T>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise<T>\n ): Promise<T>\n public trace<T>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n public trace<T>(...args: Array<any>) {\n const [type, fnOrOptions, fnOrEmpty] = args\n\n // coerce options form overload\n const {\n fn,\n options,\n }: {\n fn: (span?: Span, done?: (error?: Error) => any) => T | Promise<T>\n options: TracerSpanOptions\n } =\n typeof fnOrOptions === 'function'\n ? {\n fn: fnOrOptions,\n options: {},\n }\n : {\n fn: fnOrEmpty,\n options: { ...fnOrOptions },\n }\n\n const spanName = options.spanName ?? type\n\n if (\n (!NextVanillaSpanAllowlist.has(type) &&\n process.env.NEXT_OTEL_VERBOSE !== '1') ||\n options.hideSpan\n ) {\n return fn()\n }\n\n // Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it.\n let spanContext = this.getSpanContext(\n options?.parentSpan ?? this.getActiveScopeSpan()\n )\n\n if (!spanContext) {\n spanContext = context?.active() ?? ROOT_CONTEXT\n }\n // Check if there's already a root span in the store for this trace\n // We are intentionally not checking whether there is an active context\n // from outside of nextjs to ensure that we can provide the same level\n // of telemetry when using a custom server\n const existingRootSpanId = spanContext.getValue(rootSpanIdKey)\n const isRootSpan =\n typeof existingRootSpanId !== 'number' ||\n !rootSpanAttributesStore.has(existingRootSpanId)\n\n const spanId = getSpanId()\n\n options.attributes = {\n 'next.span_name': spanName,\n 'next.span_type': type,\n ...options.attributes,\n }\n\n return context.with(spanContext.setValue(rootSpanIdKey, spanId), () =>\n this.getTracerInstance().startActiveSpan(\n spanName,\n options,\n (span: Span) => {\n let startTime: number | undefined\n if (\n NEXT_OTEL_PERFORMANCE_PREFIX &&\n type &&\n LogSpanAllowList.has(type)\n ) {\n startTime =\n 'performance' in globalThis && 'measure' in performance\n ? globalThis.performance.now()\n : undefined\n }\n\n let cleanedUp = false\n const onCleanup = () => {\n if (cleanedUp) return\n cleanedUp = true\n rootSpanAttributesStore.delete(spanId)\n if (startTime) {\n performance.measure(\n `${NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(\n type.split('.').pop() || ''\n ).replace(\n /[A-Z]/g,\n (match: string) => '-' + match.toLowerCase()\n )}`,\n {\n start: startTime,\n end: performance.now(),\n }\n )\n }\n }\n\n if (isRootSpan) {\n rootSpanAttributesStore.set(\n spanId,\n new Map(\n Object.entries(options.attributes ?? {}) as [\n AttributeNames,\n AttributeValue | undefined,\n ][]\n )\n )\n }\n if (fn.length > 1) {\n try {\n return fn(span, (err) => closeSpanWithError(span, err))\n } catch (err: any) {\n closeSpanWithError(span, err)\n throw err\n } finally {\n onCleanup()\n }\n }\n\n try {\n const result = fn(span)\n if (isThenable(result)) {\n // If there's error make sure it throws\n return result\n .then((res) => {\n span.end()\n // Need to pass down the promise result,\n // it could be react stream response with error { error, stream }\n return res\n })\n .catch((err) => {\n closeSpanWithError(span, err)\n throw err\n })\n .finally(onCleanup)\n } else {\n span.end()\n onCleanup()\n }\n\n return result\n } catch (err: any) {\n closeSpanWithError(span, err)\n onCleanup()\n throw err\n }\n }\n )\n )\n }\n\n public wrap<T = (...args: Array<any>) => any>(type: SpanTypes, fn: T): T\n public wrap<T = (...args: Array<any>) => any>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: T\n ): T\n public wrap<T = (...args: Array<any>) => any>(\n type: SpanTypes,\n options: (...args: any[]) => TracerSpanOptions,\n fn: T\n ): T\n public wrap(...args: Array<any>) {\n const tracer = this\n const [name, options, fn] =\n args.length === 3 ? args : [args[0], {}, args[1]]\n\n if (\n !NextVanillaSpanAllowlist.has(name) &&\n process.env.NEXT_OTEL_VERBOSE !== '1'\n ) {\n return fn\n }\n\n return function (this: any) {\n let optionsObj = options\n if (typeof optionsObj === 'function' && typeof fn === 'function') {\n optionsObj = optionsObj.apply(this, arguments)\n }\n\n const lastArgId = arguments.length - 1\n const cb = arguments[lastArgId]\n\n if (typeof cb === 'function') {\n const scopeBoundCb = tracer.getContext().bind(context.active(), cb)\n return tracer.trace(name, optionsObj, (_span, done) => {\n arguments[lastArgId] = function (err: any) {\n done?.(err)\n return scopeBoundCb.apply(this, arguments)\n }\n\n return fn.apply(this, arguments)\n })\n } else {\n return tracer.trace(name, optionsObj, () => fn.apply(this, arguments))\n }\n }\n }\n\n public startSpan(type: SpanTypes): Span\n public startSpan(type: SpanTypes, options: TracerSpanOptions): Span\n public startSpan(...args: Array<any>): Span {\n const [type, options]: [string, TracerSpanOptions | undefined] = args as any\n\n const spanContext = this.getSpanContext(\n options?.parentSpan ?? this.getActiveScopeSpan()\n )\n return this.getTracerInstance().startSpan(type, options, spanContext)\n }\n\n private getSpanContext(parentSpan?: Span) {\n const spanContext = parentSpan\n ? trace.setSpan(context.active(), parentSpan)\n : undefined\n\n return spanContext\n }\n\n public getRootSpanAttributes() {\n const spanId = context.active().getValue(rootSpanIdKey) as number\n return rootSpanAttributesStore.get(spanId)\n }\n\n public setRootSpanAttribute(key: AttributeNames, value: AttributeValue) {\n const spanId = context.active().getValue(rootSpanIdKey) as number\n const attributes = rootSpanAttributesStore.get(spanId)\n if (attributes && !attributes.has(key)) {\n attributes.set(key, value)\n }\n }\n}\n\nconst getTracer = (() => {\n const tracer = new NextTracerImpl()\n\n return () => tracer\n})()\n\nexport { getTracer, SpanStatusCode, SpanKind }\nexport type { NextTracer, Span, SpanOptions, ContextAPI, TracerSpanOptions }\n"],"names":["BubbledError","SpanKind","SpanStatusCode","getTracer","isBubbledError","NEXT_OTEL_PERFORMANCE_PREFIX","process","env","api","NEXT_RUNTIME","require","err","context","propagation","trace","ROOT_CONTEXT","Error","constructor","bubble","result","error","closeSpanWithError","span","setAttribute","recordException","name","setStatus","code","ERROR","message","end","rootSpanAttributesStore","Map","rootSpanIdKey","createContextKey","lastSpanId","getSpanId","clientTraceDataSetter","set","carrier","key","value","push","NextTracerImpl","getTracerInstance","getContext","getTracePropagationData","activeContext","active","entries","inject","getActiveScopeSpan","getSpan","withPropagatedContext","fn","getter","getSpanContext","remoteContext","extract","with","args","type","fnOrOptions","fnOrEmpty","options","spanName","NextVanillaSpanAllowlist","has","NEXT_OTEL_VERBOSE","hideSpan","spanContext","parentSpan","existingRootSpanId","getValue","isRootSpan","spanId","attributes","setValue","startActiveSpan","startTime","LogSpanAllowList","globalThis","performance","now","undefined","cleanedUp","onCleanup","delete","measure","split","pop","replace","match","toLowerCase","start","Object","length","isThenable","then","res","catch","finally","wrap","tracer","optionsObj","apply","arguments","lastArgId","cb","scopeBoundCb","bind","_span","done","startSpan","setSpan","getRootSpanAttributes","get","setRootSpanAttribute"],"mappings":"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","ignoreList":[0]}
@@ -21,7 +21,7 @@ _export(exports, {
21
21
  }
22
22
  });
23
23
  function isStableBuild() {
24
- return !"16.0.2-canary.10"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
24
+ return !"16.0.2-canary.12"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
25
25
  }
26
26
  class CanaryOnlyConfigError extends Error {
27
27
  constructor(arg){
@@ -81,7 +81,7 @@ function getAnonymousMeta() {
81
81
  isWsl: _iswsl.default,
82
82
  isCI: _ciinfo.isCI,
83
83
  ciName: _ciinfo.isCI && _ciinfo.name || null,
84
- nextVersion: "16.0.2-canary.10"
84
+ nextVersion: "16.0.2-canary.12"
85
85
  };
86
86
  return traits;
87
87
  }
@@ -11,11 +11,11 @@ Object.defineProperty(exports, "eventCliSessionStopped", {
11
11
  const EVENT_VERSION = 'NEXT_CLI_SESSION_STOPPED';
12
12
  function eventCliSessionStopped(event) {
13
13
  // This should be an invariant, if it fails our build tooling is broken.
14
- if (typeof "16.0.2-canary.10" !== 'string') {
14
+ if (typeof "16.0.2-canary.12" !== 'string') {
15
15
  return [];
16
16
  }
17
17
  const payload = {
18
- nextVersion: "16.0.2-canary.10",
18
+ nextVersion: "16.0.2-canary.12",
19
19
  nodeVersion: process.version,
20
20
  cliCommand: event.cliCommand,
21
21
  durationMilliseconds: event.durationMilliseconds,