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.
- package/dist/bin/next +3 -3
- package/dist/bin/next.map +1 -1
- package/dist/build/index.d.ts +1 -2
- package/dist/build/index.js +25 -35
- package/dist/build/index.js.map +1 -1
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack-config.js +2 -2
- package/dist/cli/next-build.d.ts +0 -1
- package/dist/cli/next-build.js +5 -3
- package/dist/cli/next-build.js.map +1 -1
- package/dist/cli/next-dev.d.ts +0 -1
- package/dist/cli/next-dev.js +13 -13
- package/dist/cli/next-dev.js.map +1 -1
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/compiled/next-server/pages-api.runtime.dev.js +1 -1
- package/dist/compiled/next-server/pages-api.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/pages.runtime.dev.js +1 -1
- package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
- package/dist/esm/build/index.js +25 -35
- package/dist/esm/build/index.js.map +1 -1
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/webpack-config.js +2 -2
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/lib/turbopack-warning.js +7 -19
- package/dist/esm/lib/turbopack-warning.js.map +1 -1
- package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/lib/app-info-log.js +1 -1
- package/dist/esm/server/lib/start-server.js +1 -1
- package/dist/esm/server/next.js +1 -2
- package/dist/esm/server/next.js.map +1 -1
- package/dist/esm/shared/lib/canary-only.js +1 -1
- package/dist/lib/turbopack-warning.d.ts +2 -3
- package/dist/lib/turbopack-warning.js +6 -18
- package/dist/lib/turbopack-warning.js.map +1 -1
- package/dist/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/server/next.js +1 -2
- package/dist/server/next.js.map +1 -1
- package/dist/shared/lib/canary-only.js +1 -1
- package/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/telemetry/events/session-stopped.js +2 -2
- package/dist/telemetry/events/version.js +2 -2
- package/package.json +15 -15
- package/dist/esm/lib/bundler.js +0 -81
- package/dist/esm/lib/bundler.js.map +0 -1
- package/dist/lib/bundler.d.ts +0 -25
- package/dist/lib/bundler.js +0 -95
- 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.
|
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.
|
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.
|
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.
|
8
|
+
const version = "15.6.0-canary.38";
|
9
9
|
window.next = {
|
10
10
|
version,
|
11
11
|
appDir: true
|
package/dist/esm/client/index.js
CHANGED
@@ -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.
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
108
|
-
|
109
|
-
|
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":"AACA,OAAOA,gBAAgB,mBAAkB;AACzC,YAAYC,SAAS,sBAAqB;AAC1C,SACEC,wBAAwB,EACxBC,sBAAsB,QACjB,0BAAyB;AAEhC,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;AAE5E,KAAK,GACL,OAAO,eAAeC,wBAAwB,EAC5CC,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,QAAQN,2BAA2BC;IACjD,IAAI;QACFgB,gBAAgBL,eACd,MAAMd,WAAWoB,OAAOb,KAAK;YAC3Bc,WAAW;QACb;QAGF,IAAI,OAAOF,kBAAkB,YAAY;YACvCA,gBAAgB,AAACA,cAAsBC,OAAO;gBAC5CX;YACF;QACF;QAEA,MAAMa,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,YAAYH;QAE/B,MAAMkB,kBAAkB7B,QACpBJ,wCACA;eACKA;eACAC;SACJ;QAEL,KAAK,MAAMqB,OAAOU,WAAY;YAC5B,IAAIV,IAAIY,UAAU,CAAC,cAAcnB,cAAcoB,OAAO,EAAE;gBACtDvB,mBAAmB;YACrB;YACA,IAAIU,IAAIY,UAAU,CAAC,gBAAgBZ,IAAIY,UAAU,CAAC,uBAAuB;gBACvErB,iBAAiB;YACnB;YAEA,MAAMuB,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,aAAad,eAAeO,SAASO,aAAaxB,eAAeiB;YAEnE,IAAIc,eAAe;gBACjBtB,kBAAkBc,IAAI,CAACN;YACzB;QACF;IACF,EAAE,OAAOiB,GAAG;QACV1C,IAAI2C,KAAK,CAAC,mDAAmDD;IAC/D;IAEA,0FAA0F;IAC1F,wFAAwF;IACxF,qCAAqC;IACrC,IAAIE,QAAQC,GAAG,CAACC,SAAS,KAAK,UAAU/B,oBAAoB,CAACC,gBAAgB;QAC3E,MAAM+B,aAAa7B,cAAc8B,cAAc,IAAI;QACnDhD,IAAI2C,KAAK,CACP,CAAC;;;;;;;;iPAQ0O,EAAEI,WAAW,0BAA0B,CAAC;QAGrRH,QAAQK,IAAI,CAAC;IACf;IAEA,IAAIhC,kBAAkBU,MAAM,EAAE;QAC5Bb,oBAAoB,CAAC,mDAAmD,EAAEJ,KACxE,kBACA,iEAAiE,EAAEO,kBAClEiC,GAAG,CAAC,CAACC,OAAS,CAAC,MAAM,EAAExC,IAAIwC,MAAM,EAAE,CAAC,EACpCC,IAAI,CAAC,KAAK;IACf;IAEA,IAAItC,kBAAkB;QACpBd,IAAI2C,KAAK,CACP,CAAC,iGAAiG,EAAE7B,iBAAiB,EAAE,CAAC;QAG1Hd,IAAIqD,IAAI,CACN,gEACEzC,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":["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.
|
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.
|
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.
|
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.
|
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)=>{
|
package/dist/esm/server/next.js
CHANGED
@@ -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
|
-
|
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.
|
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 {
|
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<
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
164
|
-
|
165
|
-
|
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":"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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":["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.
|
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.
|
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.
|
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.
|
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)=>{
|
package/dist/server/next.js
CHANGED
@@ -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
|
-
|
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) {
|