next 15.6.0-canary.37 → 15.6.0-canary.38

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 (53) hide show
  1. package/dist/bin/next +3 -3
  2. package/dist/bin/next.map +1 -1
  3. package/dist/build/index.d.ts +1 -2
  4. package/dist/build/index.js +25 -35
  5. package/dist/build/index.js.map +1 -1
  6. package/dist/build/swc/index.js +1 -1
  7. package/dist/build/webpack-config.js +2 -2
  8. package/dist/cli/next-build.d.ts +0 -1
  9. package/dist/cli/next-build.js +5 -3
  10. package/dist/cli/next-build.js.map +1 -1
  11. package/dist/cli/next-dev.d.ts +0 -1
  12. package/dist/cli/next-dev.js +13 -13
  13. package/dist/cli/next-dev.js.map +1 -1
  14. package/dist/client/app-bootstrap.js +1 -1
  15. package/dist/client/index.js +1 -1
  16. package/dist/compiled/next-server/pages-api.runtime.dev.js +1 -1
  17. package/dist/compiled/next-server/pages-api.runtime.dev.js.map +1 -1
  18. package/dist/compiled/next-server/pages.runtime.dev.js +1 -1
  19. package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
  20. package/dist/esm/build/index.js +25 -35
  21. package/dist/esm/build/index.js.map +1 -1
  22. package/dist/esm/build/swc/index.js +1 -1
  23. package/dist/esm/build/webpack-config.js +2 -2
  24. package/dist/esm/client/app-bootstrap.js +1 -1
  25. package/dist/esm/client/index.js +1 -1
  26. package/dist/esm/lib/turbopack-warning.js +7 -19
  27. package/dist/esm/lib/turbopack-warning.js.map +1 -1
  28. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  29. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  30. package/dist/esm/server/lib/app-info-log.js +1 -1
  31. package/dist/esm/server/lib/start-server.js +1 -1
  32. package/dist/esm/server/next.js +1 -2
  33. package/dist/esm/server/next.js.map +1 -1
  34. package/dist/esm/shared/lib/canary-only.js +1 -1
  35. package/dist/lib/turbopack-warning.d.ts +2 -3
  36. package/dist/lib/turbopack-warning.js +6 -18
  37. package/dist/lib/turbopack-warning.js.map +1 -1
  38. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  39. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  40. package/dist/server/lib/app-info-log.js +1 -1
  41. package/dist/server/lib/start-server.js +1 -1
  42. package/dist/server/next.js +1 -2
  43. package/dist/server/next.js.map +1 -1
  44. package/dist/shared/lib/canary-only.js +1 -1
  45. package/dist/telemetry/anonymous-meta.js +1 -1
  46. package/dist/telemetry/events/session-stopped.js +2 -2
  47. package/dist/telemetry/events/version.js +2 -2
  48. package/package.json +15 -15
  49. package/dist/esm/lib/bundler.js +0 -81
  50. package/dist/esm/lib/bundler.js.map +0 -1
  51. package/dist/lib/bundler.d.ts +0 -25
  52. package/dist/lib/bundler.js +0 -95
  53. package/dist/lib/bundler.js.map +0 -1
@@ -10,7 +10,7 @@ import { downloadNativeNextSwc, downloadWasmSwc } from '../../lib/download-swc';
10
10
  import { isDeepStrictEqual } from 'util';
11
11
  import { getDefineEnv } from '../define-env';
12
12
  import { throwTurbopackInternalError } from '../../shared/lib/turbopack/internal-error';
13
- const nextVersion = "15.6.0-canary.37";
13
+ const nextVersion = "15.6.0-canary.38";
14
14
  const ArchName = arch();
15
15
  const PlatformName = platform();
16
16
  function infoLog(...args) {
@@ -1599,7 +1599,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1599
1599
  isClient && new CopyFilePlugin({
1600
1600
  // file path to build output of `@next/polyfill-nomodule`
1601
1601
  filePath: require.resolve('./polyfills/polyfill-nomodule'),
1602
- cacheKey: "15.6.0-canary.37",
1602
+ cacheKey: "15.6.0-canary.38",
1603
1603
  name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
1604
1604
  minimize: false,
1605
1605
  info: {
@@ -1782,7 +1782,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1782
1782
  // - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
1783
1783
  // - Next.js version
1784
1784
  // - next.config.js keys that affect compilation
1785
- version: `${__dirname}|${"15.6.0-canary.37"}|${configVars}`,
1785
+ version: `${__dirname}|${"15.6.0-canary.38"}|${configVars}`,
1786
1786
  cacheDirectory: path.join(distDir, 'cache', 'webpack'),
1787
1787
  // For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
1788
1788
  // So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
@@ -5,7 +5,7 @@
5
5
  * - next/script with `beforeInteractive` strategy
6
6
  */ import { getAssetPrefix } from './asset-prefix';
7
7
  import { setAttributesFromProps } from './set-attributes-from-props';
8
- const version = "15.6.0-canary.37";
8
+ const version = "15.6.0-canary.38";
9
9
  window.next = {
10
10
  version,
11
11
  appDir: true
@@ -26,7 +26,7 @@ import { SearchParamsContext, PathParamsContext } from '../shared/lib/hooks-clie
26
26
  import { onRecoverableError } from './react-client-callbacks/on-recoverable-error';
27
27
  import tracer from './tracing/tracer';
28
28
  import { isNextRouterError } from './components/is-next-router-error';
29
- export const version = "15.6.0-canary.37";
29
+ export const version = "15.6.0-canary.38";
30
30
  export let router;
31
31
  export const emitter = mitt();
32
32
  const looseToArray = (input)=>[].slice.call(input);
@@ -34,14 +34,14 @@ const unsupportedTurbopackNextConfigOptions = [
34
34
  ];
35
35
  // The following will need to be supported by `next build --turbopack`
36
36
  const unsupportedProductionSpecificTurbopackNextConfigOptions = [];
37
- /** */ export async function validateTurboNextConfig({ dir, isDev }) {
37
+ export async function validateTurboNextConfig({ dir, isDev }) {
38
38
  const { defaultConfig } = require('../server/config-shared');
39
39
  const { cyan, red, underline } = require('../lib/picocolors');
40
40
  const { interopDefault } = require('../lib/interop-default');
41
41
  let unsupportedParts = '';
42
42
  let hasWebpackConfig = false;
43
43
  let hasTurboConfig = false;
44
- const unsupportedConfig = [];
44
+ let unsupportedConfig = [];
45
45
  let rawNextConfig = {};
46
46
  const phase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD;
47
47
  try {
@@ -78,7 +78,7 @@ const unsupportedProductionSpecificTurbopackNextConfigOptions = [];
78
78
  return getDeepValue(obj == null ? void 0 : obj[keys == null ? void 0 : keys[0]], keys.slice(1));
79
79
  };
80
80
  const customKeys = flattenKeys(rawNextConfig);
81
- const unsupportedKeys = isDev ? unsupportedTurbopackNextConfigOptions : [
81
+ let unsupportedKeys = isDev ? unsupportedTurbopackNextConfigOptions : [
82
82
  ...unsupportedTurbopackNextConfigOptions,
83
83
  ...unsupportedProductionSpecificTurbopackNextConfigOptions
84
84
  ];
@@ -89,7 +89,7 @@ const unsupportedProductionSpecificTurbopackNextConfigOptions = [];
89
89
  if (key.startsWith('turbopack') || key.startsWith('experimental.turbo')) {
90
90
  hasTurboConfig = true;
91
91
  }
92
- const isUnsupported = unsupportedKeys.some((unsupportedKey)=>// Either the key matches (or is a more specific subkey) of
92
+ let isUnsupported = unsupportedKeys.some((unsupportedKey)=>// Either the key matches (or is a more specific subkey) of
93
93
  // unsupportedKey, or the key is the path to a specific subkey.
94
94
  // | key | unsupportedKey |
95
95
  // |---------|----------------|
@@ -104,21 +104,9 @@ const unsupportedProductionSpecificTurbopackNextConfigOptions = [];
104
104
  } catch (e) {
105
105
  Log.error('Unexpected error occurred while checking config', e);
106
106
  }
107
- // If the build was defaulted to Turbopack, we want to warn about possibly ignored webpack
108
- // configuration. Otherwise the user explicitly picked turbopack and thus we expect that
109
- // they have configured it correctly.
110
- if (process.env.TURBOPACK === 'auto' && hasWebpackConfig && !hasTurboConfig) {
111
- const configFile = rawNextConfig.configFileName ?? 'your Next config file';
112
- Log.error(`ERROR: This build is using Turbopack, with a \`webpack\` config and no \`turbopack\` config. This may be a mistake.
113
-
114
- As of Next.js 16 turbopack is enabled by default and custom webpack configurations may need to be migrated to Turbopack.
115
-
116
- NOTE: your \`webpack\` config may have been added by a configuration plugin.
117
-
118
- To configure Turbopack, see https://nextjs.org/docs/app/api-reference/next-config-js/turbopack
119
-
120
- TIP: Many applications work fine under Turbopack with no configuration, if that is the case for you, you can silence this error by passing the \`--turbopack\` or \`--webpack\` flag explicitly or simply setting an empty turbopack config in ${configFile} (e.g. \`turbopack: {}\`).`);
121
- process.exit(1);
107
+ if (hasWebpackConfig && !hasTurboConfig) {
108
+ Log.warn(`Webpack is configured while Turbopack is not, which may cause problems.`);
109
+ Log.warn(`See instructions if you need to configure Turbopack:\n https://nextjs.org/docs/app/api-reference/next-config-js/turbopack\n`);
122
110
  }
123
111
  if (unsupportedConfig.length) {
124
112
  unsupportedParts += `\n\n- Unsupported Next.js configuration option(s) (${cyan('next.config.js')})\n Turbopack will ignore the following configuration options:\n${unsupportedConfig.map((name)=>` - ${red(name)}\n`).join('')}`;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/turbopack-warning.ts"],"sourcesContent":["import type { NextConfigComplete } from '../server/config-shared'\nimport loadConfig from '../server/config'\nimport * as Log from '../build/output/log'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n PHASE_PRODUCTION_BUILD,\n} from '../shared/lib/constants'\n\nconst unsupportedTurbopackNextConfigOptions = [\n // Left to be implemented (priority)\n // 'experimental.clientRouterFilter',\n // 'experimental.optimizePackageImports',\n // 'compiler.emotion',\n // 'compiler.reactRemoveProperties',\n // 'compiler.relay',\n // 'compiler.removeConsole',\n // 'compiler.styledComponents',\n 'experimental.fetchCacheKeyPrefix',\n\n // Left to be implemented\n // 'excludeDefaultMomentLocales',\n // 'experimental.optimizeServerReact',\n 'experimental.clientRouterFilterAllowedRate',\n // 'experimental.serverMinification',\n // 'experimental.serverSourceMaps',\n\n 'experimental.allowedRevalidateHeaderKeys',\n 'experimental.extensionAlias',\n 'experimental.fallbackNodePolyfills',\n\n 'experimental.sri.algorithm',\n 'experimental.swcTraceProfiling',\n\n // Left to be implemented (Might not be needed for Turbopack)\n 'experimental.craCompat',\n 'experimental.disablePostcssPresetEnv',\n 'experimental.esmExternals',\n // This is used to force swc-loader to run regardless of finding Babel.\n 'experimental.forceSwcTransforms',\n 'experimental.fullySpecified',\n 'experimental.urlImports',\n 'experimental.slowModuleDetection',\n]\n\n// The following will need to be supported by `next build --turbopack`\nconst unsupportedProductionSpecificTurbopackNextConfigOptions: string[] = []\n\n/** */\nexport async function validateTurboNextConfig({\n dir,\n isDev,\n}: {\n dir: string\n isDev?: boolean\n}) {\n const { defaultConfig } =\n require('../server/config-shared') as typeof import('../server/config-shared')\n const { cyan, red, underline } =\n require('../lib/picocolors') as typeof import('../lib/picocolors')\n const { interopDefault } =\n require('../lib/interop-default') as typeof import('../lib/interop-default')\n\n let unsupportedParts = ''\n\n let hasWebpackConfig = false\n let hasTurboConfig = false\n\n const unsupportedConfig: string[] = []\n let rawNextConfig: NextConfigComplete = {} as NextConfigComplete\n\n const phase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD\n try {\n rawNextConfig = interopDefault(\n await loadConfig(phase, dir, {\n rawConfig: true,\n })\n )\n\n if (typeof rawNextConfig === 'function') {\n rawNextConfig = (rawNextConfig as any)(phase, {\n defaultConfig,\n })\n }\n\n const flattenKeys = (obj: any, prefix: string = ''): string[] => {\n let keys: string[] = []\n\n for (const key in obj) {\n if (typeof obj?.[key] === 'undefined') {\n continue\n }\n\n const pre = prefix.length ? `${prefix}.` : ''\n\n if (\n typeof obj[key] === 'object' &&\n !Array.isArray(obj[key]) &&\n obj[key] !== null\n ) {\n keys = keys.concat(flattenKeys(obj[key], pre + key))\n } else {\n keys.push(pre + key)\n }\n }\n\n return keys\n }\n\n const getDeepValue = (obj: any, keys: string | string[]): any => {\n if (typeof keys === 'string') {\n keys = keys.split('.')\n }\n if (keys.length === 1) {\n return obj?.[keys?.[0]]\n }\n return getDeepValue(obj?.[keys?.[0]], keys.slice(1))\n }\n\n const customKeys = flattenKeys(rawNextConfig)\n\n const unsupportedKeys = isDev\n ? unsupportedTurbopackNextConfigOptions\n : [\n ...unsupportedTurbopackNextConfigOptions,\n ...unsupportedProductionSpecificTurbopackNextConfigOptions,\n ]\n\n for (const key of customKeys) {\n if (key.startsWith('webpack') && rawNextConfig.webpack) {\n hasWebpackConfig = true\n }\n if (key.startsWith('turbopack') || key.startsWith('experimental.turbo')) {\n hasTurboConfig = true\n }\n\n const isUnsupported =\n unsupportedKeys.some(\n (unsupportedKey) =>\n // Either the key matches (or is a more specific subkey) of\n // unsupportedKey, or the key is the path to a specific subkey.\n // | key | unsupportedKey |\n // |---------|----------------|\n // | foo | foo |\n // | foo.bar | foo |\n // | foo | foo.bar |\n key.startsWith(unsupportedKey) ||\n unsupportedKey.startsWith(`${key}.`)\n ) &&\n getDeepValue(rawNextConfig, key) !== getDeepValue(defaultConfig, key)\n\n if (isUnsupported) {\n unsupportedConfig.push(key)\n }\n }\n } catch (e) {\n Log.error('Unexpected error occurred while checking config', e)\n }\n\n // If the build was defaulted to Turbopack, we want to warn about possibly ignored webpack\n // configuration. Otherwise the user explicitly picked turbopack and thus we expect that\n // they have configured it correctly.\n if (process.env.TURBOPACK === 'auto' && hasWebpackConfig && !hasTurboConfig) {\n const configFile = rawNextConfig.configFileName ?? 'your Next config file'\n Log.error(\n `ERROR: This build is using Turbopack, with a \\`webpack\\` config and no \\`turbopack\\` config. This may be a mistake.\n\n As of Next.js 16 turbopack is enabled by default and custom webpack configurations may need to be migrated to Turbopack.\n\n NOTE: your \\`webpack\\` config may have been added by a configuration plugin.\n\n To configure Turbopack, see https://nextjs.org/docs/app/api-reference/next-config-js/turbopack\n\n TIP: Many applications work fine under Turbopack with no configuration, if that is the case for you, you can silence this error by passing the \\`--turbopack\\` or \\`--webpack\\` flag explicitly or simply setting an empty turbopack config in ${configFile} (e.g. \\`turbopack: {}\\`).`\n )\n\n process.exit(1)\n }\n\n if (unsupportedConfig.length) {\n unsupportedParts += `\\n\\n- Unsupported Next.js configuration option(s) (${cyan(\n 'next.config.js'\n )})\\n Turbopack will ignore the following configuration options:\\n${unsupportedConfig\n .map((name) => ` - ${red(name)}\\n`)\n .join('')}`\n }\n\n if (unsupportedParts) {\n Log.error(\n `You are using configuration and/or tools that are not yet\\nsupported by Next.js with Turbopack:\\n${unsupportedParts}\\n`\n )\n\n Log.warn(\n 'Learn more about how to configure Turbopack with Next.js:\\n' +\n underline(\n 'https://nextjs.org/docs/app/api-reference/config/next-config-js/turbopack'\n )\n )\n }\n\n return rawNextConfig\n}\n"],"names":["loadConfig","Log","PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_BUILD","unsupportedTurbopackNextConfigOptions","unsupportedProductionSpecificTurbopackNextConfigOptions","validateTurboNextConfig","dir","isDev","defaultConfig","require","cyan","red","underline","interopDefault","unsupportedParts","hasWebpackConfig","hasTurboConfig","unsupportedConfig","rawNextConfig","phase","rawConfig","flattenKeys","obj","prefix","keys","key","pre","length","Array","isArray","concat","push","getDeepValue","split","slice","customKeys","unsupportedKeys","startsWith","webpack","isUnsupported","some","unsupportedKey","e","error","process","env","TURBOPACK","configFile","configFileName","exit","map","name","join","warn"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../src/lib/turbopack-warning.ts"],"sourcesContent":["import type { NextConfig } from '../server/config-shared'\nimport loadConfig from '../server/config'\nimport * as Log from '../build/output/log'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n PHASE_PRODUCTION_BUILD,\n} from '../shared/lib/constants'\n\nconst unsupportedTurbopackNextConfigOptions = [\n // Left to be implemented (priority)\n // 'experimental.clientRouterFilter',\n // 'experimental.optimizePackageImports',\n // 'compiler.emotion',\n // 'compiler.reactRemoveProperties',\n // 'compiler.relay',\n // 'compiler.removeConsole',\n // 'compiler.styledComponents',\n 'experimental.fetchCacheKeyPrefix',\n\n // Left to be implemented\n // 'excludeDefaultMomentLocales',\n // 'experimental.optimizeServerReact',\n 'experimental.clientRouterFilterAllowedRate',\n // 'experimental.serverMinification',\n // 'experimental.serverSourceMaps',\n\n 'experimental.allowedRevalidateHeaderKeys',\n 'experimental.extensionAlias',\n 'experimental.fallbackNodePolyfills',\n\n 'experimental.sri.algorithm',\n 'experimental.swcTraceProfiling',\n\n // Left to be implemented (Might not be needed for Turbopack)\n 'experimental.craCompat',\n 'experimental.disablePostcssPresetEnv',\n 'experimental.esmExternals',\n // This is used to force swc-loader to run regardless of finding Babel.\n 'experimental.forceSwcTransforms',\n 'experimental.fullySpecified',\n 'experimental.urlImports',\n 'experimental.slowModuleDetection',\n]\n\n// The following will need to be supported by `next build --turbopack`\nconst unsupportedProductionSpecificTurbopackNextConfigOptions: string[] = [\n // TODO: Support disabling sourcemaps, currently they're always enabled.\n // 'productionBrowserSourceMaps',\n]\n\nexport async function validateTurboNextConfig({\n dir,\n isDev,\n}: {\n dir: string\n isDev?: boolean\n}) {\n const { defaultConfig } =\n require('../server/config-shared') as typeof import('../server/config-shared')\n const { cyan, red, underline } =\n require('../lib/picocolors') as typeof import('../lib/picocolors')\n const { interopDefault } =\n require('../lib/interop-default') as typeof import('../lib/interop-default')\n\n let unsupportedParts = ''\n\n let hasWebpackConfig = false\n let hasTurboConfig = false\n\n let unsupportedConfig: string[] = []\n let rawNextConfig: NextConfig = {}\n\n const phase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD\n try {\n rawNextConfig = interopDefault(\n await loadConfig(phase, dir, {\n rawConfig: true,\n })\n ) as NextConfig\n\n if (typeof rawNextConfig === 'function') {\n rawNextConfig = (rawNextConfig as any)(phase, {\n defaultConfig,\n })\n }\n\n const flattenKeys = (obj: any, prefix: string = ''): string[] => {\n let keys: string[] = []\n\n for (const key in obj) {\n if (typeof obj?.[key] === 'undefined') {\n continue\n }\n\n const pre = prefix.length ? `${prefix}.` : ''\n\n if (\n typeof obj[key] === 'object' &&\n !Array.isArray(obj[key]) &&\n obj[key] !== null\n ) {\n keys = keys.concat(flattenKeys(obj[key], pre + key))\n } else {\n keys.push(pre + key)\n }\n }\n\n return keys\n }\n\n const getDeepValue = (obj: any, keys: string | string[]): any => {\n if (typeof keys === 'string') {\n keys = keys.split('.')\n }\n if (keys.length === 1) {\n return obj?.[keys?.[0]]\n }\n return getDeepValue(obj?.[keys?.[0]], keys.slice(1))\n }\n\n const customKeys = flattenKeys(rawNextConfig)\n\n let unsupportedKeys = isDev\n ? unsupportedTurbopackNextConfigOptions\n : [\n ...unsupportedTurbopackNextConfigOptions,\n ...unsupportedProductionSpecificTurbopackNextConfigOptions,\n ]\n\n for (const key of customKeys) {\n if (key.startsWith('webpack') && rawNextConfig.webpack) {\n hasWebpackConfig = true\n }\n if (key.startsWith('turbopack') || key.startsWith('experimental.turbo')) {\n hasTurboConfig = true\n }\n\n let isUnsupported =\n unsupportedKeys.some(\n (unsupportedKey) =>\n // Either the key matches (or is a more specific subkey) of\n // unsupportedKey, or the key is the path to a specific subkey.\n // | key | unsupportedKey |\n // |---------|----------------|\n // | foo | foo |\n // | foo.bar | foo |\n // | foo | foo.bar |\n key.startsWith(unsupportedKey) ||\n unsupportedKey.startsWith(`${key}.`)\n ) &&\n getDeepValue(rawNextConfig, key) !== getDeepValue(defaultConfig, key)\n\n if (isUnsupported) {\n unsupportedConfig.push(key)\n }\n }\n } catch (e) {\n Log.error('Unexpected error occurred while checking config', e)\n }\n\n if (hasWebpackConfig && !hasTurboConfig) {\n Log.warn(\n `Webpack is configured while Turbopack is not, which may cause problems.`\n )\n Log.warn(\n `See instructions if you need to configure Turbopack:\\n https://nextjs.org/docs/app/api-reference/next-config-js/turbopack\\n`\n )\n }\n\n if (unsupportedConfig.length) {\n unsupportedParts += `\\n\\n- Unsupported Next.js configuration option(s) (${cyan(\n 'next.config.js'\n )})\\n Turbopack will ignore the following configuration options:\\n${unsupportedConfig\n .map((name) => ` - ${red(name)}\\n`)\n .join('')}`\n }\n\n if (unsupportedParts) {\n Log.error(\n `You are using configuration and/or tools that are not yet\\nsupported by Next.js with Turbopack:\\n${unsupportedParts}\\n`\n )\n\n Log.warn(\n 'Learn more about how to configure Turbopack with Next.js:\\n' +\n underline(\n 'https://nextjs.org/docs/app/api-reference/config/next-config-js/turbopack'\n )\n )\n }\n\n return rawNextConfig\n}\n"],"names":["loadConfig","Log","PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_BUILD","unsupportedTurbopackNextConfigOptions","unsupportedProductionSpecificTurbopackNextConfigOptions","validateTurboNextConfig","dir","isDev","defaultConfig","require","cyan","red","underline","interopDefault","unsupportedParts","hasWebpackConfig","hasTurboConfig","unsupportedConfig","rawNextConfig","phase","rawConfig","flattenKeys","obj","prefix","keys","key","pre","length","Array","isArray","concat","push","getDeepValue","split","slice","customKeys","unsupportedKeys","startsWith","webpack","isUnsupported","some","unsupportedKey","e","error","warn","map","name","join"],"mappings":"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","ignoreList":[0]}
@@ -95,7 +95,7 @@ export async function createHotReloaderTurbopack(opts, serverFields, distDir, re
95
95
  }
96
96
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
97
97
  const hotReloaderSpan = trace('hot-reloader', undefined, {
98
- version: "15.6.0-canary.37"
98
+ version: "15.6.0-canary.38"
99
99
  });
100
100
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
101
101
  // of the current `next dev` invocation.
@@ -160,7 +160,7 @@ export default class HotReloaderWebpack {
160
160
  this.previewProps = previewProps;
161
161
  this.rewrites = rewrites;
162
162
  this.hotReloaderSpan = trace('hot-reloader', undefined, {
163
- version: "15.6.0-canary.37"
163
+ version: "15.6.0-canary.38"
164
164
  });
165
165
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
166
166
  // of the current `next dev` invocation.
@@ -14,7 +14,7 @@ export function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures
14
14
  bundlerSuffix = ' (webpack)';
15
15
  }
16
16
  }
17
- Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.6.0-canary.37"}`))}${bundlerSuffix}`);
17
+ Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.6.0-canary.38"}`))}${bundlerSuffix}`);
18
18
  if (appUrl) {
19
19
  Log.bootstrap(`- Local: ${appUrl}`);
20
20
  }
@@ -111,7 +111,7 @@ export async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup,
111
111
  export async function startServer(serverOptions) {
112
112
  const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
113
113
  let { port } = serverOptions;
114
- process.title = `next-server (v${"15.6.0-canary.37"})`;
114
+ process.title = `next-server (v${"15.6.0-canary.38"})`;
115
115
  let handlersReady = ()=>{};
116
116
  let handlersError = ()=>{};
117
117
  let handlersPromise = new Promise((resolve, reject)=>{
@@ -320,8 +320,7 @@ const SYMBOL_LOAD_CONFIG = Symbol('next.load_config');
320
320
  // This file is used for when users run `require('next')`
321
321
  function createServer(options) {
322
322
  if (options && (options.turbo || options.turbopack || process.env.IS_TURBOPACK_TEST)) {
323
- // Configure TURBOPACK if it isn't already set
324
- process.env.TURBOPACK ??= '1';
323
+ process.env.TURBOPACK = '1';
325
324
  }
326
325
  // The package is used as a TypeScript plugin.
327
326
  if (options && 'typescript' in options && 'version' in options.typescript) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/server/next.ts"],"sourcesContent":["import type { Options as DevServerOptions } from './dev/next-dev-server'\nimport type {\n NodeRequestHandler,\n Options as ServerOptions,\n} from './next-server'\nimport type { UrlWithParsedQuery } from 'url'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { Duplex } from 'stream'\nimport type { NextUrlWithParsedQuery, RequestMeta } from './request-meta'\n\nimport './require-hook'\nimport './node-polyfill-crypto'\n\nimport type { default as NextNodeServer } from './next-server'\nimport * as log from '../build/output/log'\nimport loadConfig from './config'\nimport path from 'path'\nimport { NON_STANDARD_NODE_ENV } from '../lib/constants'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n SERVER_FILES_MANIFEST,\n} from '../shared/lib/constants'\nimport { PHASE_PRODUCTION_SERVER } from '../shared/lib/constants'\nimport { getTracer } from './lib/trace/tracer'\nimport { NextServerSpan } from './lib/trace/constants'\nimport { formatUrl } from '../shared/lib/router/utils/format-url'\nimport type { ServerFields } from './lib/router-utils/setup-dev-bundler'\nimport type { ServerInitResult } from './lib/render-server'\nimport { AsyncCallbackSet } from './lib/async-callback-set'\nimport {\n RouterServerContextSymbol,\n routerServerGlobal,\n} from './lib/router-utils/router-server-context'\n\nlet ServerImpl: typeof NextNodeServer\n\nconst getServerImpl = async () => {\n if (ServerImpl === undefined) {\n ServerImpl = (\n await Promise.resolve(\n require('./next-server') as typeof import('./next-server')\n )\n ).default\n }\n return ServerImpl\n}\n\nexport type NextServerOptions = Omit<\n ServerOptions | DevServerOptions,\n // This is assigned in this server abstraction.\n 'conf'\n> &\n Partial<Pick<ServerOptions | DevServerOptions, 'conf'>>\n\nexport type RequestHandler = (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: NextUrlWithParsedQuery | undefined\n) => Promise<void>\n\nexport type UpgradeHandler = (\n req: IncomingMessage,\n socket: Duplex,\n head: Buffer\n) => Promise<void>\n\nconst SYMBOL_LOAD_CONFIG = Symbol('next.load_config')\n\ninterface NextWrapperServer {\n // NOTE: the methods/properties here are the public API for custom servers.\n // Consider backwards compatibilty when changing something here!\n\n options: NextServerOptions\n hostname: string | undefined\n port: number | undefined\n\n getRequestHandler(): RequestHandler\n prepare(serverFields?: ServerFields): Promise<void>\n setAssetPrefix(assetPrefix: string): void\n close(): Promise<void>\n\n // used internally\n getUpgradeHandler(): UpgradeHandler\n\n // legacy methods that we left exposed in the past\n\n logError(...args: Parameters<NextNodeServer['logError']>): void\n\n revalidate(\n ...args: Parameters<NextNodeServer['revalidate']>\n ): ReturnType<NextNodeServer['revalidate']>\n\n logErrorWithOriginalStack(err: unknown, type: string): void\n\n render(\n ...args: Parameters<NextNodeServer['render']>\n ): ReturnType<NextNodeServer['render']>\n\n renderToHTML(\n ...args: Parameters<NextNodeServer['renderToHTML']>\n ): ReturnType<NextNodeServer['renderToHTML']>\n\n renderError(\n ...args: Parameters<NextNodeServer['renderError']>\n ): ReturnType<NextNodeServer['renderError']>\n\n renderErrorToHTML(\n ...args: Parameters<NextNodeServer['renderErrorToHTML']>\n ): ReturnType<NextNodeServer['renderErrorToHTML']>\n\n render404(\n ...args: Parameters<NextNodeServer['render404']>\n ): ReturnType<NextNodeServer['render404']>\n}\n\n/** The wrapper server used by `next start` */\nexport class NextServer implements NextWrapperServer {\n private serverPromise?: Promise<NextNodeServer>\n private server?: NextNodeServer\n private reqHandler?: NodeRequestHandler\n private reqHandlerPromise?: Promise<NodeRequestHandler>\n private preparedAssetPrefix?: string\n\n public options: NextServerOptions\n\n constructor(options: NextServerOptions) {\n this.options = options\n }\n\n get hostname() {\n return this.options.hostname\n }\n\n get port() {\n return this.options.port\n }\n\n getRequestHandler(): RequestHandler {\n return async (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: UrlWithParsedQuery\n ) => {\n return getTracer().trace(NextServerSpan.getRequestHandler, async () => {\n const requestHandler = await this.getServerRequestHandler()\n return requestHandler(req, res, parsedUrl)\n })\n }\n }\n\n /**\n * @internal - this method is internal to Next.js and should not be used\n * directly by end-users, only used in testing\n */\n getRequestHandlerWithMetadata(meta: RequestMeta): RequestHandler {\n return async (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: UrlWithParsedQuery\n ) => {\n return getTracer().trace(\n NextServerSpan.getRequestHandlerWithMetadata,\n async () => {\n const server = await this.getServer()\n const handler = server.getRequestHandlerWithMetadata(meta)\n return handler(req, res, parsedUrl)\n }\n )\n }\n }\n\n getUpgradeHandler(): UpgradeHandler {\n return async (req: IncomingMessage, socket: any, head: any) => {\n const server = await this.getServer()\n // @ts-expect-error we mark this as protected so it\n // causes an error here\n return server.handleUpgrade.apply(server, [req, socket, head])\n }\n }\n\n setAssetPrefix(assetPrefix: string) {\n if (this.server) {\n this.server.setAssetPrefix(assetPrefix)\n } else {\n this.preparedAssetPrefix = assetPrefix\n }\n }\n\n logError(...args: Parameters<NextWrapperServer['logError']>) {\n if (this.server) {\n this.server.logError(...args)\n }\n }\n\n async logErrorWithOriginalStack(err: unknown, type: string) {\n const server = await this.getServer()\n // this is only available on dev server\n if ((server as any).logErrorWithOriginalStack) {\n return (server as any).logErrorWithOriginalStack(err, type)\n }\n }\n\n async revalidate(...args: Parameters<NextWrapperServer['revalidate']>) {\n const server = await this.getServer()\n return server.revalidate(...args)\n }\n\n async render(...args: Parameters<NextWrapperServer['render']>) {\n const server = await this.getServer()\n return server.render(...args)\n }\n\n async renderToHTML(...args: Parameters<NextWrapperServer['renderToHTML']>) {\n const server = await this.getServer()\n return server.renderToHTML(...args)\n }\n\n async renderError(...args: Parameters<NextWrapperServer['renderError']>) {\n const server = await this.getServer()\n return server.renderError(...args)\n }\n\n async renderErrorToHTML(\n ...args: Parameters<NextWrapperServer['renderErrorToHTML']>\n ) {\n const server = await this.getServer()\n return server.renderErrorToHTML(...args)\n }\n\n async render404(...args: Parameters<NextWrapperServer['render404']>) {\n const server = await this.getServer()\n return server.render404(...args)\n }\n\n async prepare(serverFields?: ServerFields) {\n const server = await this.getServer()\n\n if (serverFields) {\n Object.assign(server, serverFields)\n }\n // We shouldn't prepare the server in production,\n // because this code won't be executed when deployed\n if (this.options.dev) {\n await server.prepare()\n }\n }\n\n async close() {\n if (this.server) {\n await this.server.close()\n }\n }\n\n private async createServer(\n options: ServerOptions | DevServerOptions\n ): Promise<NextNodeServer> {\n let ServerImplementation: typeof NextNodeServer\n if (options.dev) {\n ServerImplementation = (\n require('./dev/next-dev-server') as typeof import('./dev/next-dev-server')\n ).default as typeof import('./dev/next-dev-server').default\n } else {\n ServerImplementation = await getServerImpl()\n }\n const server = new ServerImplementation(options)\n\n return server\n }\n\n private async [SYMBOL_LOAD_CONFIG]() {\n const dir = path.resolve(\n /* turbopackIgnore: true */ this.options.dir || '.'\n )\n\n const config = await loadConfig(\n this.options.dev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_SERVER,\n dir,\n {\n customConfig: this.options.conf,\n silent: true,\n }\n )\n\n // check serialized build config when available\n if (!this.options.dev) {\n try {\n const serializedConfig = require(\n /* turbopackIgnore: true */\n path.join(\n /* turbopackIgnore: true */ dir,\n config.distDir,\n SERVER_FILES_MANIFEST\n )\n ).config\n\n config.experimental.isExperimentalCompile =\n serializedConfig.experimental.isExperimentalCompile\n } catch (_) {\n // if distDir is customized we don't know until we\n // load the config so fallback to loading the config\n // from next.config.js\n }\n }\n\n return config\n }\n\n private async getServer() {\n if (!this.serverPromise) {\n this.serverPromise = this[SYMBOL_LOAD_CONFIG]().then(async (conf) => {\n if (!this.options.dev) {\n if (conf.output === 'standalone') {\n if (!process.env.__NEXT_PRIVATE_STANDALONE_CONFIG) {\n log.warn(\n `\"next start\" does not work with \"output: standalone\" configuration. Use \"node .next/standalone/server.js\" instead.`\n )\n }\n } else if (conf.output === 'export') {\n throw new Error(\n `\"next start\" does not work with \"output: export\" configuration. Use \"npx serve@latest out\" instead.`\n )\n }\n }\n\n this.server = await this.createServer({\n ...this.options,\n conf,\n })\n if (this.preparedAssetPrefix) {\n this.server.setAssetPrefix(this.preparedAssetPrefix)\n }\n return this.server\n })\n }\n return this.serverPromise\n }\n\n private async getServerRequestHandler() {\n if (this.reqHandler) return this.reqHandler\n\n // Memoize request handler creation\n if (!this.reqHandlerPromise) {\n this.reqHandlerPromise = this.getServer().then((server) => {\n this.reqHandler = getTracer().wrap(\n NextServerSpan.getServerRequestHandler,\n server.getRequestHandler().bind(server)\n )\n delete this.reqHandlerPromise\n return this.reqHandler\n })\n }\n return this.reqHandlerPromise\n }\n}\n\n/** The wrapper server used for `import next from \"next\" (in a custom server)` */\nclass NextCustomServer implements NextWrapperServer {\n private didWebSocketSetup: boolean = false\n protected cleanupListeners?: AsyncCallbackSet\n\n protected init?: ServerInitResult\n\n public options: NextServerOptions\n\n constructor(options: NextServerOptions) {\n this.options = options\n }\n\n protected getInit() {\n if (!this.init) {\n throw new Error(\n 'prepare() must be called before performing this operation'\n )\n }\n return this.init\n }\n\n protected get requestHandler() {\n return this.getInit().requestHandler\n }\n protected get upgradeHandler() {\n return this.getInit().upgradeHandler\n }\n protected get server() {\n return this.getInit().server\n }\n\n get hostname() {\n return this.options.hostname\n }\n\n get port() {\n return this.options.port\n }\n\n async prepare() {\n const { getRequestHandlers } =\n require('./lib/start-server') as typeof import('./lib/start-server')\n\n let onDevServerCleanup: AsyncCallbackSet['add'] | undefined\n if (this.options.dev) {\n this.cleanupListeners = new AsyncCallbackSet()\n onDevServerCleanup = this.cleanupListeners.add.bind(this.cleanupListeners)\n }\n\n const initResult = await getRequestHandlers({\n dir: this.options.dir!,\n port: this.options.port || 3000,\n isDev: !!this.options.dev,\n onDevServerCleanup,\n hostname: this.options.hostname || 'localhost',\n minimalMode: this.options.minimalMode,\n quiet: this.options.quiet,\n })\n this.init = initResult\n }\n\n private setupWebSocketHandler(\n customServer?: import('http').Server,\n _req?: IncomingMessage\n ) {\n if (!this.didWebSocketSetup) {\n this.didWebSocketSetup = true\n customServer = customServer || (_req?.socket as any)?.server\n\n if (customServer) {\n customServer.on('upgrade', async (req, socket, head) => {\n this.upgradeHandler(req, socket, head)\n })\n }\n }\n }\n\n getRequestHandler(): RequestHandler {\n return async (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: UrlWithParsedQuery\n ) => {\n this.setupWebSocketHandler(this.options.httpServer, req)\n\n if (parsedUrl) {\n req.url = formatUrl(parsedUrl)\n }\n\n return this.requestHandler(req, res)\n }\n }\n\n async render(...args: Parameters<NextWrapperServer['render']>) {\n let [req, res, pathname, query, parsedUrl] = args\n this.setupWebSocketHandler(this.options.httpServer, req as IncomingMessage)\n\n if (!pathname.startsWith('/')) {\n console.error(`Cannot render page with path \"${pathname}\"`)\n pathname = `/${pathname}`\n }\n pathname = pathname === '/index' ? '/' : pathname\n\n req.url = formatUrl({\n ...parsedUrl,\n pathname,\n query,\n })\n\n await this.requestHandler(req as IncomingMessage, res as ServerResponse)\n return\n }\n\n setAssetPrefix(assetPrefix: string): void {\n this.server.setAssetPrefix(assetPrefix)\n\n // update the router-server nextConfig instance as\n // this is the source of truth for \"handler\" in serverful\n const relativeProjectDir = path.relative(\n process.cwd(),\n this.options.dir || ''\n )\n\n if (\n routerServerGlobal[RouterServerContextSymbol]?.[relativeProjectDir]\n ?.nextConfig\n ) {\n routerServerGlobal[RouterServerContextSymbol][\n relativeProjectDir\n ].nextConfig.assetPrefix = assetPrefix\n }\n }\n\n getUpgradeHandler(): UpgradeHandler {\n return this.server.getUpgradeHandler()\n }\n\n logError(...args: Parameters<NextWrapperServer['logError']>) {\n this.server.logError(...args)\n }\n\n logErrorWithOriginalStack(err: unknown, type: string) {\n return this.server.logErrorWithOriginalStack(err, type)\n }\n\n async revalidate(...args: Parameters<NextWrapperServer['revalidate']>) {\n return this.server.revalidate(...args)\n }\n\n async renderToHTML(...args: Parameters<NextWrapperServer['renderToHTML']>) {\n return this.server.renderToHTML(...args)\n }\n\n async renderError(...args: Parameters<NextWrapperServer['renderError']>) {\n return this.server.renderError(...args)\n }\n\n async renderErrorToHTML(\n ...args: Parameters<NextWrapperServer['renderErrorToHTML']>\n ) {\n return this.server.renderErrorToHTML(...args)\n }\n\n async render404(...args: Parameters<NextWrapperServer['render404']>) {\n return this.server.render404(...args)\n }\n\n async close() {\n await Promise.allSettled([\n this.init?.server.close(),\n this.cleanupListeners?.runAll(),\n ])\n }\n}\n\n// This file is used for when users run `require('next')`\nfunction createServer(\n options: NextServerOptions & {\n turbo?: boolean\n turbopack?: boolean\n }\n): NextWrapperServer {\n if (\n options &&\n (options.turbo || options.turbopack || process.env.IS_TURBOPACK_TEST)\n ) {\n // Configure TURBOPACK if it isn't already set\n process.env.TURBOPACK ??= '1'\n }\n // The package is used as a TypeScript plugin.\n if (\n options &&\n 'typescript' in options &&\n 'version' in (options as any).typescript\n ) {\n const pluginMod: typeof import('./next-typescript') =\n require('./next-typescript') as typeof import('./next-typescript')\n return pluginMod.createTSPlugin(\n options as any\n ) as unknown as NextWrapperServer\n }\n\n if (options == null) {\n throw new Error(\n 'The server has not been instantiated properly. https://nextjs.org/docs/messages/invalid-server-options'\n )\n }\n\n if (\n !('isNextDevCommand' in options) &&\n process.env.NODE_ENV &&\n !['production', 'development', 'test'].includes(process.env.NODE_ENV)\n ) {\n log.warn(NON_STANDARD_NODE_ENV)\n }\n\n if (options.dev && typeof options.dev !== 'boolean') {\n console.warn(\n \"Warning: 'dev' is not a boolean which could introduce unexpected behavior. https://nextjs.org/docs/messages/invalid-server-options\"\n )\n }\n\n // When the caller is a custom server (using next()).\n if (options.customServer !== false) {\n const dir = path.resolve(/* turbopackIgnore: true */ options.dir || '.')\n\n return new NextCustomServer({\n ...options,\n dir,\n })\n }\n\n // When the caller is Next.js internals (i.e. render worker, start server, etc)\n return new NextServer(options)\n}\n\n// Support commonjs `require('next')`\nmodule.exports = createServer\n// exports = module.exports\n\n// Support `import next from 'next'`\nexport default createServer\n"],"names":["log","loadConfig","path","NON_STANDARD_NODE_ENV","PHASE_DEVELOPMENT_SERVER","SERVER_FILES_MANIFEST","PHASE_PRODUCTION_SERVER","getTracer","NextServerSpan","formatUrl","AsyncCallbackSet","RouterServerContextSymbol","routerServerGlobal","ServerImpl","getServerImpl","undefined","Promise","resolve","require","default","SYMBOL_LOAD_CONFIG","Symbol","NextServer","constructor","options","hostname","port","getRequestHandler","req","res","parsedUrl","trace","requestHandler","getServerRequestHandler","getRequestHandlerWithMetadata","meta","server","getServer","handler","getUpgradeHandler","socket","head","handleUpgrade","apply","setAssetPrefix","assetPrefix","preparedAssetPrefix","logError","args","logErrorWithOriginalStack","err","type","revalidate","render","renderToHTML","renderError","renderErrorToHTML","render404","prepare","serverFields","Object","assign","dev","close","createServer","ServerImplementation","dir","config","customConfig","conf","silent","serializedConfig","join","distDir","experimental","isExperimentalCompile","_","serverPromise","then","output","process","env","__NEXT_PRIVATE_STANDALONE_CONFIG","warn","Error","reqHandler","reqHandlerPromise","wrap","bind","NextCustomServer","didWebSocketSetup","getInit","init","upgradeHandler","getRequestHandlers","onDevServerCleanup","cleanupListeners","add","initResult","isDev","minimalMode","quiet","setupWebSocketHandler","customServer","_req","on","httpServer","url","pathname","query","startsWith","console","error","relativeProjectDir","relative","cwd","nextConfig","allSettled","runAll","turbo","turbopack","IS_TURBOPACK_TEST","TURBOPACK","typescript","pluginMod","createTSPlugin","NODE_ENV","includes","module","exports"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../src/server/next.ts"],"sourcesContent":["import type { Options as DevServerOptions } from './dev/next-dev-server'\nimport type {\n NodeRequestHandler,\n Options as ServerOptions,\n} from './next-server'\nimport type { UrlWithParsedQuery } from 'url'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { Duplex } from 'stream'\nimport type { NextUrlWithParsedQuery, RequestMeta } from './request-meta'\n\nimport './require-hook'\nimport './node-polyfill-crypto'\n\nimport type { default as NextNodeServer } from './next-server'\nimport * as log from '../build/output/log'\nimport loadConfig from './config'\nimport path from 'path'\nimport { NON_STANDARD_NODE_ENV } from '../lib/constants'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n SERVER_FILES_MANIFEST,\n} from '../shared/lib/constants'\nimport { PHASE_PRODUCTION_SERVER } from '../shared/lib/constants'\nimport { getTracer } from './lib/trace/tracer'\nimport { NextServerSpan } from './lib/trace/constants'\nimport { formatUrl } from '../shared/lib/router/utils/format-url'\nimport type { ServerFields } from './lib/router-utils/setup-dev-bundler'\nimport type { ServerInitResult } from './lib/render-server'\nimport { AsyncCallbackSet } from './lib/async-callback-set'\nimport {\n RouterServerContextSymbol,\n routerServerGlobal,\n} from './lib/router-utils/router-server-context'\n\nlet ServerImpl: typeof NextNodeServer\n\nconst getServerImpl = async () => {\n if (ServerImpl === undefined) {\n ServerImpl = (\n await Promise.resolve(\n require('./next-server') as typeof import('./next-server')\n )\n ).default\n }\n return ServerImpl\n}\n\nexport type NextServerOptions = Omit<\n ServerOptions | DevServerOptions,\n // This is assigned in this server abstraction.\n 'conf'\n> &\n Partial<Pick<ServerOptions | DevServerOptions, 'conf'>>\n\nexport type RequestHandler = (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: NextUrlWithParsedQuery | undefined\n) => Promise<void>\n\nexport type UpgradeHandler = (\n req: IncomingMessage,\n socket: Duplex,\n head: Buffer\n) => Promise<void>\n\nconst SYMBOL_LOAD_CONFIG = Symbol('next.load_config')\n\ninterface NextWrapperServer {\n // NOTE: the methods/properties here are the public API for custom servers.\n // Consider backwards compatibilty when changing something here!\n\n options: NextServerOptions\n hostname: string | undefined\n port: number | undefined\n\n getRequestHandler(): RequestHandler\n prepare(serverFields?: ServerFields): Promise<void>\n setAssetPrefix(assetPrefix: string): void\n close(): Promise<void>\n\n // used internally\n getUpgradeHandler(): UpgradeHandler\n\n // legacy methods that we left exposed in the past\n\n logError(...args: Parameters<NextNodeServer['logError']>): void\n\n revalidate(\n ...args: Parameters<NextNodeServer['revalidate']>\n ): ReturnType<NextNodeServer['revalidate']>\n\n logErrorWithOriginalStack(err: unknown, type: string): void\n\n render(\n ...args: Parameters<NextNodeServer['render']>\n ): ReturnType<NextNodeServer['render']>\n\n renderToHTML(\n ...args: Parameters<NextNodeServer['renderToHTML']>\n ): ReturnType<NextNodeServer['renderToHTML']>\n\n renderError(\n ...args: Parameters<NextNodeServer['renderError']>\n ): ReturnType<NextNodeServer['renderError']>\n\n renderErrorToHTML(\n ...args: Parameters<NextNodeServer['renderErrorToHTML']>\n ): ReturnType<NextNodeServer['renderErrorToHTML']>\n\n render404(\n ...args: Parameters<NextNodeServer['render404']>\n ): ReturnType<NextNodeServer['render404']>\n}\n\n/** The wrapper server used by `next start` */\nexport class NextServer implements NextWrapperServer {\n private serverPromise?: Promise<NextNodeServer>\n private server?: NextNodeServer\n private reqHandler?: NodeRequestHandler\n private reqHandlerPromise?: Promise<NodeRequestHandler>\n private preparedAssetPrefix?: string\n\n public options: NextServerOptions\n\n constructor(options: NextServerOptions) {\n this.options = options\n }\n\n get hostname() {\n return this.options.hostname\n }\n\n get port() {\n return this.options.port\n }\n\n getRequestHandler(): RequestHandler {\n return async (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: UrlWithParsedQuery\n ) => {\n return getTracer().trace(NextServerSpan.getRequestHandler, async () => {\n const requestHandler = await this.getServerRequestHandler()\n return requestHandler(req, res, parsedUrl)\n })\n }\n }\n\n /**\n * @internal - this method is internal to Next.js and should not be used\n * directly by end-users, only used in testing\n */\n getRequestHandlerWithMetadata(meta: RequestMeta): RequestHandler {\n return async (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: UrlWithParsedQuery\n ) => {\n return getTracer().trace(\n NextServerSpan.getRequestHandlerWithMetadata,\n async () => {\n const server = await this.getServer()\n const handler = server.getRequestHandlerWithMetadata(meta)\n return handler(req, res, parsedUrl)\n }\n )\n }\n }\n\n getUpgradeHandler(): UpgradeHandler {\n return async (req: IncomingMessage, socket: any, head: any) => {\n const server = await this.getServer()\n // @ts-expect-error we mark this as protected so it\n // causes an error here\n return server.handleUpgrade.apply(server, [req, socket, head])\n }\n }\n\n setAssetPrefix(assetPrefix: string) {\n if (this.server) {\n this.server.setAssetPrefix(assetPrefix)\n } else {\n this.preparedAssetPrefix = assetPrefix\n }\n }\n\n logError(...args: Parameters<NextWrapperServer['logError']>) {\n if (this.server) {\n this.server.logError(...args)\n }\n }\n\n async logErrorWithOriginalStack(err: unknown, type: string) {\n const server = await this.getServer()\n // this is only available on dev server\n if ((server as any).logErrorWithOriginalStack) {\n return (server as any).logErrorWithOriginalStack(err, type)\n }\n }\n\n async revalidate(...args: Parameters<NextWrapperServer['revalidate']>) {\n const server = await this.getServer()\n return server.revalidate(...args)\n }\n\n async render(...args: Parameters<NextWrapperServer['render']>) {\n const server = await this.getServer()\n return server.render(...args)\n }\n\n async renderToHTML(...args: Parameters<NextWrapperServer['renderToHTML']>) {\n const server = await this.getServer()\n return server.renderToHTML(...args)\n }\n\n async renderError(...args: Parameters<NextWrapperServer['renderError']>) {\n const server = await this.getServer()\n return server.renderError(...args)\n }\n\n async renderErrorToHTML(\n ...args: Parameters<NextWrapperServer['renderErrorToHTML']>\n ) {\n const server = await this.getServer()\n return server.renderErrorToHTML(...args)\n }\n\n async render404(...args: Parameters<NextWrapperServer['render404']>) {\n const server = await this.getServer()\n return server.render404(...args)\n }\n\n async prepare(serverFields?: ServerFields) {\n const server = await this.getServer()\n\n if (serverFields) {\n Object.assign(server, serverFields)\n }\n // We shouldn't prepare the server in production,\n // because this code won't be executed when deployed\n if (this.options.dev) {\n await server.prepare()\n }\n }\n\n async close() {\n if (this.server) {\n await this.server.close()\n }\n }\n\n private async createServer(\n options: ServerOptions | DevServerOptions\n ): Promise<NextNodeServer> {\n let ServerImplementation: typeof NextNodeServer\n if (options.dev) {\n ServerImplementation = (\n require('./dev/next-dev-server') as typeof import('./dev/next-dev-server')\n ).default as typeof import('./dev/next-dev-server').default\n } else {\n ServerImplementation = await getServerImpl()\n }\n const server = new ServerImplementation(options)\n\n return server\n }\n\n private async [SYMBOL_LOAD_CONFIG]() {\n const dir = path.resolve(\n /* turbopackIgnore: true */ this.options.dir || '.'\n )\n\n const config = await loadConfig(\n this.options.dev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_SERVER,\n dir,\n {\n customConfig: this.options.conf,\n silent: true,\n }\n )\n\n // check serialized build config when available\n if (!this.options.dev) {\n try {\n const serializedConfig = require(\n /* turbopackIgnore: true */\n path.join(\n /* turbopackIgnore: true */ dir,\n config.distDir,\n SERVER_FILES_MANIFEST\n )\n ).config\n\n config.experimental.isExperimentalCompile =\n serializedConfig.experimental.isExperimentalCompile\n } catch (_) {\n // if distDir is customized we don't know until we\n // load the config so fallback to loading the config\n // from next.config.js\n }\n }\n\n return config\n }\n\n private async getServer() {\n if (!this.serverPromise) {\n this.serverPromise = this[SYMBOL_LOAD_CONFIG]().then(async (conf) => {\n if (!this.options.dev) {\n if (conf.output === 'standalone') {\n if (!process.env.__NEXT_PRIVATE_STANDALONE_CONFIG) {\n log.warn(\n `\"next start\" does not work with \"output: standalone\" configuration. Use \"node .next/standalone/server.js\" instead.`\n )\n }\n } else if (conf.output === 'export') {\n throw new Error(\n `\"next start\" does not work with \"output: export\" configuration. Use \"npx serve@latest out\" instead.`\n )\n }\n }\n\n this.server = await this.createServer({\n ...this.options,\n conf,\n })\n if (this.preparedAssetPrefix) {\n this.server.setAssetPrefix(this.preparedAssetPrefix)\n }\n return this.server\n })\n }\n return this.serverPromise\n }\n\n private async getServerRequestHandler() {\n if (this.reqHandler) return this.reqHandler\n\n // Memoize request handler creation\n if (!this.reqHandlerPromise) {\n this.reqHandlerPromise = this.getServer().then((server) => {\n this.reqHandler = getTracer().wrap(\n NextServerSpan.getServerRequestHandler,\n server.getRequestHandler().bind(server)\n )\n delete this.reqHandlerPromise\n return this.reqHandler\n })\n }\n return this.reqHandlerPromise\n }\n}\n\n/** The wrapper server used for `import next from \"next\" (in a custom server)` */\nclass NextCustomServer implements NextWrapperServer {\n private didWebSocketSetup: boolean = false\n protected cleanupListeners?: AsyncCallbackSet\n\n protected init?: ServerInitResult\n\n public options: NextServerOptions\n\n constructor(options: NextServerOptions) {\n this.options = options\n }\n\n protected getInit() {\n if (!this.init) {\n throw new Error(\n 'prepare() must be called before performing this operation'\n )\n }\n return this.init\n }\n\n protected get requestHandler() {\n return this.getInit().requestHandler\n }\n protected get upgradeHandler() {\n return this.getInit().upgradeHandler\n }\n protected get server() {\n return this.getInit().server\n }\n\n get hostname() {\n return this.options.hostname\n }\n\n get port() {\n return this.options.port\n }\n\n async prepare() {\n const { getRequestHandlers } =\n require('./lib/start-server') as typeof import('./lib/start-server')\n\n let onDevServerCleanup: AsyncCallbackSet['add'] | undefined\n if (this.options.dev) {\n this.cleanupListeners = new AsyncCallbackSet()\n onDevServerCleanup = this.cleanupListeners.add.bind(this.cleanupListeners)\n }\n\n const initResult = await getRequestHandlers({\n dir: this.options.dir!,\n port: this.options.port || 3000,\n isDev: !!this.options.dev,\n onDevServerCleanup,\n hostname: this.options.hostname || 'localhost',\n minimalMode: this.options.minimalMode,\n quiet: this.options.quiet,\n })\n this.init = initResult\n }\n\n private setupWebSocketHandler(\n customServer?: import('http').Server,\n _req?: IncomingMessage\n ) {\n if (!this.didWebSocketSetup) {\n this.didWebSocketSetup = true\n customServer = customServer || (_req?.socket as any)?.server\n\n if (customServer) {\n customServer.on('upgrade', async (req, socket, head) => {\n this.upgradeHandler(req, socket, head)\n })\n }\n }\n }\n\n getRequestHandler(): RequestHandler {\n return async (\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl?: UrlWithParsedQuery\n ) => {\n this.setupWebSocketHandler(this.options.httpServer, req)\n\n if (parsedUrl) {\n req.url = formatUrl(parsedUrl)\n }\n\n return this.requestHandler(req, res)\n }\n }\n\n async render(...args: Parameters<NextWrapperServer['render']>) {\n let [req, res, pathname, query, parsedUrl] = args\n this.setupWebSocketHandler(this.options.httpServer, req as IncomingMessage)\n\n if (!pathname.startsWith('/')) {\n console.error(`Cannot render page with path \"${pathname}\"`)\n pathname = `/${pathname}`\n }\n pathname = pathname === '/index' ? '/' : pathname\n\n req.url = formatUrl({\n ...parsedUrl,\n pathname,\n query,\n })\n\n await this.requestHandler(req as IncomingMessage, res as ServerResponse)\n return\n }\n\n setAssetPrefix(assetPrefix: string): void {\n this.server.setAssetPrefix(assetPrefix)\n\n // update the router-server nextConfig instance as\n // this is the source of truth for \"handler\" in serverful\n const relativeProjectDir = path.relative(\n process.cwd(),\n this.options.dir || ''\n )\n\n if (\n routerServerGlobal[RouterServerContextSymbol]?.[relativeProjectDir]\n ?.nextConfig\n ) {\n routerServerGlobal[RouterServerContextSymbol][\n relativeProjectDir\n ].nextConfig.assetPrefix = assetPrefix\n }\n }\n\n getUpgradeHandler(): UpgradeHandler {\n return this.server.getUpgradeHandler()\n }\n\n logError(...args: Parameters<NextWrapperServer['logError']>) {\n this.server.logError(...args)\n }\n\n logErrorWithOriginalStack(err: unknown, type: string) {\n return this.server.logErrorWithOriginalStack(err, type)\n }\n\n async revalidate(...args: Parameters<NextWrapperServer['revalidate']>) {\n return this.server.revalidate(...args)\n }\n\n async renderToHTML(...args: Parameters<NextWrapperServer['renderToHTML']>) {\n return this.server.renderToHTML(...args)\n }\n\n async renderError(...args: Parameters<NextWrapperServer['renderError']>) {\n return this.server.renderError(...args)\n }\n\n async renderErrorToHTML(\n ...args: Parameters<NextWrapperServer['renderErrorToHTML']>\n ) {\n return this.server.renderErrorToHTML(...args)\n }\n\n async render404(...args: Parameters<NextWrapperServer['render404']>) {\n return this.server.render404(...args)\n }\n\n async close() {\n await Promise.allSettled([\n this.init?.server.close(),\n this.cleanupListeners?.runAll(),\n ])\n }\n}\n\n// This file is used for when users run `require('next')`\nfunction createServer(\n options: NextServerOptions & {\n turbo?: boolean\n turbopack?: boolean\n }\n): NextWrapperServer {\n if (\n options &&\n (options.turbo || options.turbopack || process.env.IS_TURBOPACK_TEST)\n ) {\n process.env.TURBOPACK = '1'\n }\n // The package is used as a TypeScript plugin.\n if (\n options &&\n 'typescript' in options &&\n 'version' in (options as any).typescript\n ) {\n const pluginMod: typeof import('./next-typescript') =\n require('./next-typescript') as typeof import('./next-typescript')\n return pluginMod.createTSPlugin(\n options as any\n ) as unknown as NextWrapperServer\n }\n\n if (options == null) {\n throw new Error(\n 'The server has not been instantiated properly. https://nextjs.org/docs/messages/invalid-server-options'\n )\n }\n\n if (\n !('isNextDevCommand' in options) &&\n process.env.NODE_ENV &&\n !['production', 'development', 'test'].includes(process.env.NODE_ENV)\n ) {\n log.warn(NON_STANDARD_NODE_ENV)\n }\n\n if (options.dev && typeof options.dev !== 'boolean') {\n console.warn(\n \"Warning: 'dev' is not a boolean which could introduce unexpected behavior. https://nextjs.org/docs/messages/invalid-server-options\"\n )\n }\n\n // When the caller is a custom server (using next()).\n if (options.customServer !== false) {\n const dir = path.resolve(/* turbopackIgnore: true */ options.dir || '.')\n\n return new NextCustomServer({\n ...options,\n dir,\n })\n }\n\n // When the caller is Next.js internals (i.e. render worker, start server, etc)\n return new NextServer(options)\n}\n\n// Support commonjs `require('next')`\nmodule.exports = createServer\n// exports = module.exports\n\n// Support `import next from 'next'`\nexport default createServer\n"],"names":["log","loadConfig","path","NON_STANDARD_NODE_ENV","PHASE_DEVELOPMENT_SERVER","SERVER_FILES_MANIFEST","PHASE_PRODUCTION_SERVER","getTracer","NextServerSpan","formatUrl","AsyncCallbackSet","RouterServerContextSymbol","routerServerGlobal","ServerImpl","getServerImpl","undefined","Promise","resolve","require","default","SYMBOL_LOAD_CONFIG","Symbol","NextServer","constructor","options","hostname","port","getRequestHandler","req","res","parsedUrl","trace","requestHandler","getServerRequestHandler","getRequestHandlerWithMetadata","meta","server","getServer","handler","getUpgradeHandler","socket","head","handleUpgrade","apply","setAssetPrefix","assetPrefix","preparedAssetPrefix","logError","args","logErrorWithOriginalStack","err","type","revalidate","render","renderToHTML","renderError","renderErrorToHTML","render404","prepare","serverFields","Object","assign","dev","close","createServer","ServerImplementation","dir","config","customConfig","conf","silent","serializedConfig","join","distDir","experimental","isExperimentalCompile","_","serverPromise","then","output","process","env","__NEXT_PRIVATE_STANDALONE_CONFIG","warn","Error","reqHandler","reqHandlerPromise","wrap","bind","NextCustomServer","didWebSocketSetup","getInit","init","upgradeHandler","getRequestHandlers","onDevServerCleanup","cleanupListeners","add","initResult","isDev","minimalMode","quiet","setupWebSocketHandler","customServer","_req","on","httpServer","url","pathname","query","startsWith","console","error","relativeProjectDir","relative","cwd","nextConfig","allSettled","runAll","turbo","turbopack","IS_TURBOPACK_TEST","TURBOPACK","typescript","pluginMod","createTSPlugin","NODE_ENV","includes","module","exports"],"mappings":"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","ignoreList":[0]}
@@ -1,6 +1,6 @@
1
1
  export function isStableBuild() {
2
2
  var _process_env___NEXT_VERSION;
3
- return !((_process_env___NEXT_VERSION = "15.6.0-canary.37") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
3
+ return !((_process_env___NEXT_VERSION = "15.6.0-canary.38") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
4
4
  }
5
5
  export class CanaryOnlyError extends Error {
6
6
  constructor(arg){
@@ -1,6 +1,5 @@
1
- import type { NextConfigComplete } from '../server/config-shared';
2
- /** */
1
+ import type { NextConfig } from '../server/config-shared';
3
2
  export declare function validateTurboNextConfig({ dir, isDev, }: {
4
3
  dir: string;
5
4
  isDev?: boolean;
6
- }): Promise<NextConfigComplete>;
5
+ }): Promise<NextConfig>;
@@ -97,7 +97,7 @@ async function validateTurboNextConfig({ dir, isDev }) {
97
97
  let unsupportedParts = '';
98
98
  let hasWebpackConfig = false;
99
99
  let hasTurboConfig = false;
100
- const unsupportedConfig = [];
100
+ let unsupportedConfig = [];
101
101
  let rawNextConfig = {};
102
102
  const phase = isDev ? _constants.PHASE_DEVELOPMENT_SERVER : _constants.PHASE_PRODUCTION_BUILD;
103
103
  try {
@@ -134,7 +134,7 @@ async function validateTurboNextConfig({ dir, isDev }) {
134
134
  return getDeepValue(obj == null ? void 0 : obj[keys == null ? void 0 : keys[0]], keys.slice(1));
135
135
  };
136
136
  const customKeys = flattenKeys(rawNextConfig);
137
- const unsupportedKeys = isDev ? unsupportedTurbopackNextConfigOptions : [
137
+ let unsupportedKeys = isDev ? unsupportedTurbopackNextConfigOptions : [
138
138
  ...unsupportedTurbopackNextConfigOptions,
139
139
  ...unsupportedProductionSpecificTurbopackNextConfigOptions
140
140
  ];
@@ -145,7 +145,7 @@ async function validateTurboNextConfig({ dir, isDev }) {
145
145
  if (key.startsWith('turbopack') || key.startsWith('experimental.turbo')) {
146
146
  hasTurboConfig = true;
147
147
  }
148
- const isUnsupported = unsupportedKeys.some((unsupportedKey)=>// Either the key matches (or is a more specific subkey) of
148
+ let isUnsupported = unsupportedKeys.some((unsupportedKey)=>// Either the key matches (or is a more specific subkey) of
149
149
  // unsupportedKey, or the key is the path to a specific subkey.
150
150
  // | key | unsupportedKey |
151
151
  // |---------|----------------|
@@ -160,21 +160,9 @@ async function validateTurboNextConfig({ dir, isDev }) {
160
160
  } catch (e) {
161
161
  _log.error('Unexpected error occurred while checking config', e);
162
162
  }
163
- // If the build was defaulted to Turbopack, we want to warn about possibly ignored webpack
164
- // configuration. Otherwise the user explicitly picked turbopack and thus we expect that
165
- // they have configured it correctly.
166
- if (process.env.TURBOPACK === 'auto' && hasWebpackConfig && !hasTurboConfig) {
167
- const configFile = rawNextConfig.configFileName ?? 'your Next config file';
168
- _log.error(`ERROR: This build is using Turbopack, with a \`webpack\` config and no \`turbopack\` config. This may be a mistake.
169
-
170
- As of Next.js 16 turbopack is enabled by default and custom webpack configurations may need to be migrated to Turbopack.
171
-
172
- NOTE: your \`webpack\` config may have been added by a configuration plugin.
173
-
174
- To configure Turbopack, see https://nextjs.org/docs/app/api-reference/next-config-js/turbopack
175
-
176
- TIP: Many applications work fine under Turbopack with no configuration, if that is the case for you, you can silence this error by passing the \`--turbopack\` or \`--webpack\` flag explicitly or simply setting an empty turbopack config in ${configFile} (e.g. \`turbopack: {}\`).`);
177
- process.exit(1);
163
+ if (hasWebpackConfig && !hasTurboConfig) {
164
+ _log.warn(`Webpack is configured while Turbopack is not, which may cause problems.`);
165
+ _log.warn(`See instructions if you need to configure Turbopack:\n https://nextjs.org/docs/app/api-reference/next-config-js/turbopack\n`);
178
166
  }
179
167
  if (unsupportedConfig.length) {
180
168
  unsupportedParts += `\n\n- Unsupported Next.js configuration option(s) (${cyan('next.config.js')})\n Turbopack will ignore the following configuration options:\n${unsupportedConfig.map((name)=>` - ${red(name)}\n`).join('')}`;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/turbopack-warning.ts"],"sourcesContent":["import type { NextConfigComplete } from '../server/config-shared'\nimport loadConfig from '../server/config'\nimport * as Log from '../build/output/log'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n PHASE_PRODUCTION_BUILD,\n} from '../shared/lib/constants'\n\nconst unsupportedTurbopackNextConfigOptions = [\n // Left to be implemented (priority)\n // 'experimental.clientRouterFilter',\n // 'experimental.optimizePackageImports',\n // 'compiler.emotion',\n // 'compiler.reactRemoveProperties',\n // 'compiler.relay',\n // 'compiler.removeConsole',\n // 'compiler.styledComponents',\n 'experimental.fetchCacheKeyPrefix',\n\n // Left to be implemented\n // 'excludeDefaultMomentLocales',\n // 'experimental.optimizeServerReact',\n 'experimental.clientRouterFilterAllowedRate',\n // 'experimental.serverMinification',\n // 'experimental.serverSourceMaps',\n\n 'experimental.allowedRevalidateHeaderKeys',\n 'experimental.extensionAlias',\n 'experimental.fallbackNodePolyfills',\n\n 'experimental.sri.algorithm',\n 'experimental.swcTraceProfiling',\n\n // Left to be implemented (Might not be needed for Turbopack)\n 'experimental.craCompat',\n 'experimental.disablePostcssPresetEnv',\n 'experimental.esmExternals',\n // This is used to force swc-loader to run regardless of finding Babel.\n 'experimental.forceSwcTransforms',\n 'experimental.fullySpecified',\n 'experimental.urlImports',\n 'experimental.slowModuleDetection',\n]\n\n// The following will need to be supported by `next build --turbopack`\nconst unsupportedProductionSpecificTurbopackNextConfigOptions: string[] = []\n\n/** */\nexport async function validateTurboNextConfig({\n dir,\n isDev,\n}: {\n dir: string\n isDev?: boolean\n}) {\n const { defaultConfig } =\n require('../server/config-shared') as typeof import('../server/config-shared')\n const { cyan, red, underline } =\n require('../lib/picocolors') as typeof import('../lib/picocolors')\n const { interopDefault } =\n require('../lib/interop-default') as typeof import('../lib/interop-default')\n\n let unsupportedParts = ''\n\n let hasWebpackConfig = false\n let hasTurboConfig = false\n\n const unsupportedConfig: string[] = []\n let rawNextConfig: NextConfigComplete = {} as NextConfigComplete\n\n const phase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD\n try {\n rawNextConfig = interopDefault(\n await loadConfig(phase, dir, {\n rawConfig: true,\n })\n )\n\n if (typeof rawNextConfig === 'function') {\n rawNextConfig = (rawNextConfig as any)(phase, {\n defaultConfig,\n })\n }\n\n const flattenKeys = (obj: any, prefix: string = ''): string[] => {\n let keys: string[] = []\n\n for (const key in obj) {\n if (typeof obj?.[key] === 'undefined') {\n continue\n }\n\n const pre = prefix.length ? `${prefix}.` : ''\n\n if (\n typeof obj[key] === 'object' &&\n !Array.isArray(obj[key]) &&\n obj[key] !== null\n ) {\n keys = keys.concat(flattenKeys(obj[key], pre + key))\n } else {\n keys.push(pre + key)\n }\n }\n\n return keys\n }\n\n const getDeepValue = (obj: any, keys: string | string[]): any => {\n if (typeof keys === 'string') {\n keys = keys.split('.')\n }\n if (keys.length === 1) {\n return obj?.[keys?.[0]]\n }\n return getDeepValue(obj?.[keys?.[0]], keys.slice(1))\n }\n\n const customKeys = flattenKeys(rawNextConfig)\n\n const unsupportedKeys = isDev\n ? unsupportedTurbopackNextConfigOptions\n : [\n ...unsupportedTurbopackNextConfigOptions,\n ...unsupportedProductionSpecificTurbopackNextConfigOptions,\n ]\n\n for (const key of customKeys) {\n if (key.startsWith('webpack') && rawNextConfig.webpack) {\n hasWebpackConfig = true\n }\n if (key.startsWith('turbopack') || key.startsWith('experimental.turbo')) {\n hasTurboConfig = true\n }\n\n const isUnsupported =\n unsupportedKeys.some(\n (unsupportedKey) =>\n // Either the key matches (or is a more specific subkey) of\n // unsupportedKey, or the key is the path to a specific subkey.\n // | key | unsupportedKey |\n // |---------|----------------|\n // | foo | foo |\n // | foo.bar | foo |\n // | foo | foo.bar |\n key.startsWith(unsupportedKey) ||\n unsupportedKey.startsWith(`${key}.`)\n ) &&\n getDeepValue(rawNextConfig, key) !== getDeepValue(defaultConfig, key)\n\n if (isUnsupported) {\n unsupportedConfig.push(key)\n }\n }\n } catch (e) {\n Log.error('Unexpected error occurred while checking config', e)\n }\n\n // If the build was defaulted to Turbopack, we want to warn about possibly ignored webpack\n // configuration. Otherwise the user explicitly picked turbopack and thus we expect that\n // they have configured it correctly.\n if (process.env.TURBOPACK === 'auto' && hasWebpackConfig && !hasTurboConfig) {\n const configFile = rawNextConfig.configFileName ?? 'your Next config file'\n Log.error(\n `ERROR: This build is using Turbopack, with a \\`webpack\\` config and no \\`turbopack\\` config. This may be a mistake.\n\n As of Next.js 16 turbopack is enabled by default and custom webpack configurations may need to be migrated to Turbopack.\n\n NOTE: your \\`webpack\\` config may have been added by a configuration plugin.\n\n To configure Turbopack, see https://nextjs.org/docs/app/api-reference/next-config-js/turbopack\n\n TIP: Many applications work fine under Turbopack with no configuration, if that is the case for you, you can silence this error by passing the \\`--turbopack\\` or \\`--webpack\\` flag explicitly or simply setting an empty turbopack config in ${configFile} (e.g. \\`turbopack: {}\\`).`\n )\n\n process.exit(1)\n }\n\n if (unsupportedConfig.length) {\n unsupportedParts += `\\n\\n- Unsupported Next.js configuration option(s) (${cyan(\n 'next.config.js'\n )})\\n Turbopack will ignore the following configuration options:\\n${unsupportedConfig\n .map((name) => ` - ${red(name)}\\n`)\n .join('')}`\n }\n\n if (unsupportedParts) {\n Log.error(\n `You are using configuration and/or tools that are not yet\\nsupported by Next.js with Turbopack:\\n${unsupportedParts}\\n`\n )\n\n Log.warn(\n 'Learn more about how to configure Turbopack with Next.js:\\n' +\n underline(\n 'https://nextjs.org/docs/app/api-reference/config/next-config-js/turbopack'\n )\n )\n }\n\n return rawNextConfig\n}\n"],"names":["validateTurboNextConfig","unsupportedTurbopackNextConfigOptions","unsupportedProductionSpecificTurbopackNextConfigOptions","dir","isDev","defaultConfig","require","cyan","red","underline","interopDefault","unsupportedParts","hasWebpackConfig","hasTurboConfig","unsupportedConfig","rawNextConfig","phase","PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_BUILD","loadConfig","rawConfig","flattenKeys","obj","prefix","keys","key","pre","length","Array","isArray","concat","push","getDeepValue","split","slice","customKeys","unsupportedKeys","startsWith","webpack","isUnsupported","some","unsupportedKey","e","Log","error","process","env","TURBOPACK","configFile","configFileName","exit","map","name","join","warn"],"mappings":";;;;+BAgDsBA;;;eAAAA;;;+DA/CC;6DACF;2BAId;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEP,MAAMC,wCAAwC;IAC5C,oCAAoC;IACpC,qCAAqC;IACrC,yCAAyC;IACzC,sBAAsB;IACtB,oCAAoC;IACpC,oBAAoB;IACpB,4BAA4B;IAC5B,+BAA+B;IAC/B;IAEA,yBAAyB;IACzB,iCAAiC;IACjC,sCAAsC;IACtC;IACA,qCAAqC;IACrC,mCAAmC;IAEnC;IACA;IACA;IAEA;IACA;IAEA,6DAA6D;IAC7D;IACA;IACA;IACA,uEAAuE;IACvE;IACA;IACA;IACA;CACD;AAED,sEAAsE;AACtE,MAAMC,0DAAoE,EAAE;AAGrE,eAAeF,wBAAwB,EAC5CG,GAAG,EACHC,KAAK,EAIN;IACC,MAAM,EAAEC,aAAa,EAAE,GACrBC,QAAQ;IACV,MAAM,EAAEC,IAAI,EAAEC,GAAG,EAAEC,SAAS,EAAE,GAC5BH,QAAQ;IACV,MAAM,EAAEI,cAAc,EAAE,GACtBJ,QAAQ;IAEV,IAAIK,mBAAmB;IAEvB,IAAIC,mBAAmB;IACvB,IAAIC,iBAAiB;IAErB,MAAMC,oBAA8B,EAAE;IACtC,IAAIC,gBAAoC,CAAC;IAEzC,MAAMC,QAAQZ,QAAQa,mCAAwB,GAAGC,iCAAsB;IACvE,IAAI;QACFH,gBAAgBL,eACd,MAAMS,IAAAA,eAAU,EAACH,OAAOb,KAAK;YAC3BiB,WAAW;QACb;QAGF,IAAI,OAAOL,kBAAkB,YAAY;YACvCA,gBAAgB,AAACA,cAAsBC,OAAO;gBAC5CX;YACF;QACF;QAEA,MAAMgB,cAAc,CAACC,KAAUC,SAAiB,EAAE;YAChD,IAAIC,OAAiB,EAAE;YAEvB,IAAK,MAAMC,OAAOH,IAAK;gBACrB,IAAI,QAAOA,uBAAAA,GAAK,CAACG,IAAI,MAAK,aAAa;oBACrC;gBACF;gBAEA,MAAMC,MAAMH,OAAOI,MAAM,GAAG,GAAGJ,OAAO,CAAC,CAAC,GAAG;gBAE3C,IACE,OAAOD,GAAG,CAACG,IAAI,KAAK,YACpB,CAACG,MAAMC,OAAO,CAACP,GAAG,CAACG,IAAI,KACvBH,GAAG,CAACG,IAAI,KAAK,MACb;oBACAD,OAAOA,KAAKM,MAAM,CAACT,YAAYC,GAAG,CAACG,IAAI,EAAEC,MAAMD;gBACjD,OAAO;oBACLD,KAAKO,IAAI,CAACL,MAAMD;gBAClB;YACF;YAEA,OAAOD;QACT;QAEA,MAAMQ,eAAe,CAACV,KAAUE;YAC9B,IAAI,OAAOA,SAAS,UAAU;gBAC5BA,OAAOA,KAAKS,KAAK,CAAC;YACpB;YACA,IAAIT,KAAKG,MAAM,KAAK,GAAG;gBACrB,OAAOL,uBAAAA,GAAK,CAACE,wBAAAA,IAAM,CAAC,EAAE,CAAC;YACzB;YACA,OAAOQ,aAAaV,uBAAAA,GAAK,CAACE,wBAAAA,IAAM,CAAC,EAAE,CAAC,EAAEA,KAAKU,KAAK,CAAC;QACnD;QAEA,MAAMC,aAAad,YAAYN;QAE/B,MAAMqB,kBAAkBhC,QACpBH,wCACA;eACKA;eACAC;SACJ;QAEL,KAAK,MAAMuB,OAAOU,WAAY;YAC5B,IAAIV,IAAIY,UAAU,CAAC,cAActB,cAAcuB,OAAO,EAAE;gBACtD1B,mBAAmB;YACrB;YACA,IAAIa,IAAIY,UAAU,CAAC,gBAAgBZ,IAAIY,UAAU,CAAC,uBAAuB;gBACvExB,iBAAiB;YACnB;YAEA,MAAM0B,gBACJH,gBAAgBI,IAAI,CAClB,CAACC,iBACC,2DAA2D;gBAC3D,+DAA+D;gBAC/D,+BAA+B;gBAC/B,+BAA+B;gBAC/B,+BAA+B;gBAC/B,+BAA+B;gBAC/B,+BAA+B;gBAC/BhB,IAAIY,UAAU,CAACI,mBACfA,eAAeJ,UAAU,CAAC,GAAGZ,IAAI,CAAC,CAAC,MAEvCO,aAAajB,eAAeU,SAASO,aAAa3B,eAAeoB;YAEnE,IAAIc,eAAe;gBACjBzB,kBAAkBiB,IAAI,CAACN;YACzB;QACF;IACF,EAAE,OAAOiB,GAAG;QACVC,KAAIC,KAAK,CAAC,mDAAmDF;IAC/D;IAEA,0FAA0F;IAC1F,wFAAwF;IACxF,qCAAqC;IACrC,IAAIG,QAAQC,GAAG,CAACC,SAAS,KAAK,UAAUnC,oBAAoB,CAACC,gBAAgB;QAC3E,MAAMmC,aAAajC,cAAckC,cAAc,IAAI;QACnDN,KAAIC,KAAK,CACP,CAAC;;;;;;;;iPAQ0O,EAAEI,WAAW,0BAA0B,CAAC;QAGrRH,QAAQK,IAAI,CAAC;IACf;IAEA,IAAIpC,kBAAkBa,MAAM,EAAE;QAC5BhB,oBAAoB,CAAC,mDAAmD,EAAEJ,KACxE,kBACA,iEAAiE,EAAEO,kBAClEqC,GAAG,CAAC,CAACC,OAAS,CAAC,MAAM,EAAE5C,IAAI4C,MAAM,EAAE,CAAC,EACpCC,IAAI,CAAC,KAAK;IACf;IAEA,IAAI1C,kBAAkB;QACpBgC,KAAIC,KAAK,CACP,CAAC,iGAAiG,EAAEjC,iBAAiB,EAAE,CAAC;QAG1HgC,KAAIW,IAAI,CACN,gEACE7C,UACE;IAGR;IAEA,OAAOM;AACT","ignoreList":[0]}
1
+ {"version":3,"sources":["../../src/lib/turbopack-warning.ts"],"sourcesContent":["import type { NextConfig } from '../server/config-shared'\nimport loadConfig from '../server/config'\nimport * as Log from '../build/output/log'\nimport {\n PHASE_DEVELOPMENT_SERVER,\n PHASE_PRODUCTION_BUILD,\n} from '../shared/lib/constants'\n\nconst unsupportedTurbopackNextConfigOptions = [\n // Left to be implemented (priority)\n // 'experimental.clientRouterFilter',\n // 'experimental.optimizePackageImports',\n // 'compiler.emotion',\n // 'compiler.reactRemoveProperties',\n // 'compiler.relay',\n // 'compiler.removeConsole',\n // 'compiler.styledComponents',\n 'experimental.fetchCacheKeyPrefix',\n\n // Left to be implemented\n // 'excludeDefaultMomentLocales',\n // 'experimental.optimizeServerReact',\n 'experimental.clientRouterFilterAllowedRate',\n // 'experimental.serverMinification',\n // 'experimental.serverSourceMaps',\n\n 'experimental.allowedRevalidateHeaderKeys',\n 'experimental.extensionAlias',\n 'experimental.fallbackNodePolyfills',\n\n 'experimental.sri.algorithm',\n 'experimental.swcTraceProfiling',\n\n // Left to be implemented (Might not be needed for Turbopack)\n 'experimental.craCompat',\n 'experimental.disablePostcssPresetEnv',\n 'experimental.esmExternals',\n // This is used to force swc-loader to run regardless of finding Babel.\n 'experimental.forceSwcTransforms',\n 'experimental.fullySpecified',\n 'experimental.urlImports',\n 'experimental.slowModuleDetection',\n]\n\n// The following will need to be supported by `next build --turbopack`\nconst unsupportedProductionSpecificTurbopackNextConfigOptions: string[] = [\n // TODO: Support disabling sourcemaps, currently they're always enabled.\n // 'productionBrowserSourceMaps',\n]\n\nexport async function validateTurboNextConfig({\n dir,\n isDev,\n}: {\n dir: string\n isDev?: boolean\n}) {\n const { defaultConfig } =\n require('../server/config-shared') as typeof import('../server/config-shared')\n const { cyan, red, underline } =\n require('../lib/picocolors') as typeof import('../lib/picocolors')\n const { interopDefault } =\n require('../lib/interop-default') as typeof import('../lib/interop-default')\n\n let unsupportedParts = ''\n\n let hasWebpackConfig = false\n let hasTurboConfig = false\n\n let unsupportedConfig: string[] = []\n let rawNextConfig: NextConfig = {}\n\n const phase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD\n try {\n rawNextConfig = interopDefault(\n await loadConfig(phase, dir, {\n rawConfig: true,\n })\n ) as NextConfig\n\n if (typeof rawNextConfig === 'function') {\n rawNextConfig = (rawNextConfig as any)(phase, {\n defaultConfig,\n })\n }\n\n const flattenKeys = (obj: any, prefix: string = ''): string[] => {\n let keys: string[] = []\n\n for (const key in obj) {\n if (typeof obj?.[key] === 'undefined') {\n continue\n }\n\n const pre = prefix.length ? `${prefix}.` : ''\n\n if (\n typeof obj[key] === 'object' &&\n !Array.isArray(obj[key]) &&\n obj[key] !== null\n ) {\n keys = keys.concat(flattenKeys(obj[key], pre + key))\n } else {\n keys.push(pre + key)\n }\n }\n\n return keys\n }\n\n const getDeepValue = (obj: any, keys: string | string[]): any => {\n if (typeof keys === 'string') {\n keys = keys.split('.')\n }\n if (keys.length === 1) {\n return obj?.[keys?.[0]]\n }\n return getDeepValue(obj?.[keys?.[0]], keys.slice(1))\n }\n\n const customKeys = flattenKeys(rawNextConfig)\n\n let unsupportedKeys = isDev\n ? unsupportedTurbopackNextConfigOptions\n : [\n ...unsupportedTurbopackNextConfigOptions,\n ...unsupportedProductionSpecificTurbopackNextConfigOptions,\n ]\n\n for (const key of customKeys) {\n if (key.startsWith('webpack') && rawNextConfig.webpack) {\n hasWebpackConfig = true\n }\n if (key.startsWith('turbopack') || key.startsWith('experimental.turbo')) {\n hasTurboConfig = true\n }\n\n let isUnsupported =\n unsupportedKeys.some(\n (unsupportedKey) =>\n // Either the key matches (or is a more specific subkey) of\n // unsupportedKey, or the key is the path to a specific subkey.\n // | key | unsupportedKey |\n // |---------|----------------|\n // | foo | foo |\n // | foo.bar | foo |\n // | foo | foo.bar |\n key.startsWith(unsupportedKey) ||\n unsupportedKey.startsWith(`${key}.`)\n ) &&\n getDeepValue(rawNextConfig, key) !== getDeepValue(defaultConfig, key)\n\n if (isUnsupported) {\n unsupportedConfig.push(key)\n }\n }\n } catch (e) {\n Log.error('Unexpected error occurred while checking config', e)\n }\n\n if (hasWebpackConfig && !hasTurboConfig) {\n Log.warn(\n `Webpack is configured while Turbopack is not, which may cause problems.`\n )\n Log.warn(\n `See instructions if you need to configure Turbopack:\\n https://nextjs.org/docs/app/api-reference/next-config-js/turbopack\\n`\n )\n }\n\n if (unsupportedConfig.length) {\n unsupportedParts += `\\n\\n- Unsupported Next.js configuration option(s) (${cyan(\n 'next.config.js'\n )})\\n Turbopack will ignore the following configuration options:\\n${unsupportedConfig\n .map((name) => ` - ${red(name)}\\n`)\n .join('')}`\n }\n\n if (unsupportedParts) {\n Log.error(\n `You are using configuration and/or tools that are not yet\\nsupported by Next.js with Turbopack:\\n${unsupportedParts}\\n`\n )\n\n Log.warn(\n 'Learn more about how to configure Turbopack with Next.js:\\n' +\n underline(\n 'https://nextjs.org/docs/app/api-reference/config/next-config-js/turbopack'\n )\n )\n }\n\n return rawNextConfig\n}\n"],"names":["validateTurboNextConfig","unsupportedTurbopackNextConfigOptions","unsupportedProductionSpecificTurbopackNextConfigOptions","dir","isDev","defaultConfig","require","cyan","red","underline","interopDefault","unsupportedParts","hasWebpackConfig","hasTurboConfig","unsupportedConfig","rawNextConfig","phase","PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_BUILD","loadConfig","rawConfig","flattenKeys","obj","prefix","keys","key","pre","length","Array","isArray","concat","push","getDeepValue","split","slice","customKeys","unsupportedKeys","startsWith","webpack","isUnsupported","some","unsupportedKey","e","Log","error","warn","map","name","join"],"mappings":"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","ignoreList":[0]}
@@ -151,7 +151,7 @@ async function createHotReloaderTurbopack(opts, serverFields, distDir, resetFetc
151
151
  }
152
152
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
153
153
  const hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
154
- version: "15.6.0-canary.37"
154
+ version: "15.6.0-canary.38"
155
155
  });
156
156
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
157
157
  // of the current `next dev` invocation.
@@ -228,7 +228,7 @@ class HotReloaderWebpack {
228
228
  this.previewProps = previewProps;
229
229
  this.rewrites = rewrites;
230
230
  this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
231
- version: "15.6.0-canary.37"
231
+ version: "15.6.0-canary.38"
232
232
  });
233
233
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
234
234
  // of the current `next dev` invocation.
@@ -82,7 +82,7 @@ function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures, logBu
82
82
  bundlerSuffix = ' (webpack)';
83
83
  }
84
84
  }
85
- _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.6.0-canary.37"}`))}${bundlerSuffix}`);
85
+ _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.6.0-canary.38"}`))}${bundlerSuffix}`);
86
86
  if (appUrl) {
87
87
  _log.bootstrap(`- Local: ${appUrl}`);
88
88
  }
@@ -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${"15.6.0-canary.37"})`;
182
+ process.title = `next-server (v${"15.6.0-canary.38"})`;
183
183
  let handlersReady = ()=>{};
184
184
  let handlersError = ()=>{};
185
185
  let handlersPromise = new Promise((resolve, reject)=>{
@@ -389,8 +389,7 @@ class NextServer {
389
389
  // This file is used for when users run `require('next')`
390
390
  function createServer(options) {
391
391
  if (options && (options.turbo || options.turbopack || process.env.IS_TURBOPACK_TEST)) {
392
- // Configure TURBOPACK if it isn't already set
393
- process.env.TURBOPACK ??= '1';
392
+ process.env.TURBOPACK = '1';
394
393
  }
395
394
  // The package is used as a TypeScript plugin.
396
395
  if (options && 'typescript' in options && 'version' in options.typescript) {