@openuiai/next 16.0.7 → 16.0.9
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 +1 -1
- package/dist/build/index.js +3 -3
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack-config.js +2 -2
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-plugin.js +2 -0
- package/dist/esm/build/index.js +3 -3
- 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/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/dev/middleware-webpack.js +10 -3
- package/dist/esm/server/dev/middleware-webpack.js.map +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/shared/lib/errors/canary-only-config-error.js +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/dev/middleware-webpack.js +10 -3
- package/dist/server/dev/middleware-webpack.js.map +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/shared/lib/errors/canary-only-config-error.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 +1 -1
package/dist/bin/next
CHANGED
|
@@ -79,7 +79,7 @@ const program = new NextRootCommand();
|
|
|
79
79
|
program.name('next').description('The Next.js CLI allows you to develop, build, start your application, and more.').configureHelp({
|
|
80
80
|
formatHelp: (cmd, helper)=>(0, _formatclihelpoutput.formatCliHelpOutput)(cmd, helper),
|
|
81
81
|
subcommandTerm: (cmd)=>`${cmd.name()} ${cmd.usage()}`
|
|
82
|
-
}).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"16.0.
|
|
82
|
+
}).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"16.0.8"}`, '-v, --version', 'Outputs the Next.js version.');
|
|
83
83
|
program.command('build').description('Creates an optimized production build of your application. The output displays information about each route.').argument('[directory]', `A directory on which to build the application. ${(0, _picocolors.italic)('If no directory is provided, the current directory will be used.')}`).option('-d, --debug', 'Enables a more verbose build output.').option('--debug-prerender', 'Enables debug mode for prerendering. Not for production use!').option('--no-mangling', 'Disables mangling.').option('--profile', 'Enables production profiling for React.').option('--experimental-app-only', 'Builds only App Router routes.').option('--webpack', 'Builds using webpack.').addOption(new _commander.Option('--experimental-build-mode [mode]', 'Uses an experimental build mode.').choices([
|
|
84
84
|
'compile',
|
|
85
85
|
'generate',
|
package/dist/build/index.js
CHANGED
|
@@ -373,7 +373,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
|
|
|
373
373
|
try {
|
|
374
374
|
const nextBuildSpan = (0, _trace.trace)('next-build', undefined, {
|
|
375
375
|
buildMode: experimentalBuildMode,
|
|
376
|
-
version: "16.0.
|
|
376
|
+
version: "16.0.8"
|
|
377
377
|
});
|
|
378
378
|
_buildcontext.NextBuildContext.nextBuildSpan = nextBuildSpan;
|
|
379
379
|
_buildcontext.NextBuildContext.dir = dir;
|
|
@@ -886,7 +886,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
|
|
|
886
886
|
// Files outside of the distDir can be "type": "module"
|
|
887
887
|
await writeFileUtf8(_path.default.join(distDir, 'package.json'), '{"type": "commonjs"}');
|
|
888
888
|
// These are written to distDir, so they need to come after creating and cleaning distDr.
|
|
889
|
-
await (0, _builddiagnostics.recordFrameworkVersion)("16.0.
|
|
889
|
+
await (0, _builddiagnostics.recordFrameworkVersion)("16.0.8");
|
|
890
890
|
await (0, _builddiagnostics.updateBuildDiagnostics)({
|
|
891
891
|
buildStage: 'start'
|
|
892
892
|
});
|
|
@@ -2535,7 +2535,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
|
|
|
2535
2535
|
configOutDir: _path.default.join(dir, configOutDir),
|
|
2536
2536
|
staticPages,
|
|
2537
2537
|
serverPropsPages,
|
|
2538
|
-
nextVersion: "16.0.
|
|
2538
|
+
nextVersion: "16.0.8",
|
|
2539
2539
|
tracingRoot: outputFileTracingRoot,
|
|
2540
2540
|
hasNodeMiddleware,
|
|
2541
2541
|
hasInstrumentationHook,
|
package/dist/build/swc/index.js
CHANGED
|
@@ -128,7 +128,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
128
128
|
}
|
|
129
129
|
return newObj;
|
|
130
130
|
}
|
|
131
|
-
const nextVersion = "16.0.
|
|
131
|
+
const nextVersion = "16.0.0"; // Use official Next.js version for SWC binaries
|
|
132
132
|
const ArchName = (0, _os.arch)();
|
|
133
133
|
const PlatformName = (0, _os.platform)();
|
|
134
134
|
function infoLog(...args) {
|
|
@@ -1713,7 +1713,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
|
1713
1713
|
isClient && new _copyfileplugin.CopyFilePlugin({
|
|
1714
1714
|
// file path to build output of `@next/polyfill-nomodule`
|
|
1715
1715
|
filePath: require.resolve('./polyfills/polyfill-nomodule'),
|
|
1716
|
-
cacheKey: "16.0.
|
|
1716
|
+
cacheKey: "16.0.8",
|
|
1717
1717
|
name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
|
|
1718
1718
|
minimize: false,
|
|
1719
1719
|
info: {
|
|
@@ -1904,7 +1904,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
|
1904
1904
|
// - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
|
|
1905
1905
|
// - Next.js version
|
|
1906
1906
|
// - next.config.js keys that affect compilation
|
|
1907
|
-
version: `${__dirname}|${"16.0.
|
|
1907
|
+
version: `${__dirname}|${"16.0.8"}|${configVars}`,
|
|
1908
1908
|
cacheDirectory: _path.default.join(distDir, 'cache', 'webpack'),
|
|
1909
1909
|
// For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
|
|
1910
1910
|
// So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
|
|
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "appBootstrap", {
|
|
|
15
15
|
});
|
|
16
16
|
const _assetprefix = require("./asset-prefix");
|
|
17
17
|
const _setattributesfromprops = require("./set-attributes-from-props");
|
|
18
|
-
const version = "16.0.
|
|
18
|
+
const version = "16.0.8";
|
|
19
19
|
window.next = {
|
|
20
20
|
version,
|
|
21
21
|
appDir: true
|
package/dist/client/index.js
CHANGED
|
@@ -60,7 +60,7 @@ const _hooksclientcontextsharedruntime = require("../shared/lib/hooks-client-con
|
|
|
60
60
|
const _onrecoverableerror = require("./react-client-callbacks/on-recoverable-error");
|
|
61
61
|
const _tracer = /*#__PURE__*/ _interop_require_default._(require("./tracing/tracer"));
|
|
62
62
|
const _isnextroutererror = require("./components/is-next-router-error");
|
|
63
|
-
const version = "16.0.
|
|
63
|
+
const version = "16.0.8";
|
|
64
64
|
let router;
|
|
65
65
|
const emitter = (0, _mitt.default)();
|
|
66
66
|
const looseToArray = (input)=>[].slice.call(input);
|
|
@@ -272,6 +272,8 @@ class ReactFlightWebpackPlugin {
|
|
|
272
272
|
chunk = compilation.chunkGraph.getChunkModulesIterable(chunk);
|
|
273
273
|
Array.from(chunk).forEach(function (module) {
|
|
274
274
|
const moduleId = compilation.chunkGraph.getModuleId(module);
|
|
275
|
+
// Bun compatibility: skip if moduleId is undefined
|
|
276
|
+
if (moduleId === undefined || moduleId === null) return;
|
|
275
277
|
recordModule(moduleId, module);
|
|
276
278
|
module.modules &&
|
|
277
279
|
module.modules.forEach((concatenatedMod) => {
|
package/dist/esm/build/index.js
CHANGED
|
@@ -305,7 +305,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
|
305
305
|
try {
|
|
306
306
|
const nextBuildSpan = trace('next-build', undefined, {
|
|
307
307
|
buildMode: experimentalBuildMode,
|
|
308
|
-
version: "16.0.
|
|
308
|
+
version: "16.0.8"
|
|
309
309
|
});
|
|
310
310
|
NextBuildContext.nextBuildSpan = nextBuildSpan;
|
|
311
311
|
NextBuildContext.dir = dir;
|
|
@@ -818,7 +818,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
|
818
818
|
// Files outside of the distDir can be "type": "module"
|
|
819
819
|
await writeFileUtf8(path.join(distDir, 'package.json'), '{"type": "commonjs"}');
|
|
820
820
|
// These are written to distDir, so they need to come after creating and cleaning distDr.
|
|
821
|
-
await recordFrameworkVersion("16.0.
|
|
821
|
+
await recordFrameworkVersion("16.0.8");
|
|
822
822
|
await updateBuildDiagnostics({
|
|
823
823
|
buildStage: 'start'
|
|
824
824
|
});
|
|
@@ -2467,7 +2467,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
|
2467
2467
|
configOutDir: path.join(dir, configOutDir),
|
|
2468
2468
|
staticPages,
|
|
2469
2469
|
serverPropsPages,
|
|
2470
|
-
nextVersion: "16.0.
|
|
2470
|
+
nextVersion: "16.0.8",
|
|
2471
2471
|
tracingRoot: outputFileTracingRoot,
|
|
2472
2472
|
hasNodeMiddleware,
|
|
2473
2473
|
hasInstrumentationHook,
|
|
@@ -8,7 +8,7 @@ import { eventSwcLoadFailure } from '../../telemetry/events/swc-load-failure';
|
|
|
8
8
|
import { patchIncorrectLockfile } from '../../lib/patch-incorrect-lockfile';
|
|
9
9
|
import { downloadNativeNextSwc, downloadWasmSwc } from '../../lib/download-swc';
|
|
10
10
|
import { getDefineEnv } from '../define-env';
|
|
11
|
-
const nextVersion = "16.0.
|
|
11
|
+
const nextVersion = "16.0.0"; // Use official Next.js version for SWC binaries
|
|
12
12
|
const ArchName = arch();
|
|
13
13
|
const PlatformName = platform();
|
|
14
14
|
function infoLog(...args) {
|
|
@@ -1610,7 +1610,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
|
|
|
1610
1610
|
isClient && new CopyFilePlugin({
|
|
1611
1611
|
// file path to build output of `@next/polyfill-nomodule`
|
|
1612
1612
|
filePath: require.resolve('./polyfills/polyfill-nomodule'),
|
|
1613
|
-
cacheKey: "16.0.
|
|
1613
|
+
cacheKey: "16.0.8",
|
|
1614
1614
|
name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
|
|
1615
1615
|
minimize: false,
|
|
1616
1616
|
info: {
|
|
@@ -1801,7 +1801,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
|
|
|
1801
1801
|
// - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
|
|
1802
1802
|
// - Next.js version
|
|
1803
1803
|
// - next.config.js keys that affect compilation
|
|
1804
|
-
version: `${__dirname}|${"16.0.
|
|
1804
|
+
version: `${__dirname}|${"16.0.8"}|${configVars}`,
|
|
1805
1805
|
cacheDirectory: path.join(distDir, 'cache', 'webpack'),
|
|
1806
1806
|
// For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
|
|
1807
1807
|
// 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 = "16.0.
|
|
8
|
+
const version = "16.0.8";
|
|
9
9
|
window.next = {
|
|
10
10
|
version,
|
|
11
11
|
appDir: true
|
package/dist/esm/client/index.js
CHANGED
|
@@ -25,7 +25,7 @@ import { SearchParamsContext, PathParamsContext } from '../shared/lib/hooks-clie
|
|
|
25
25
|
import { onRecoverableError } from './react-client-callbacks/on-recoverable-error';
|
|
26
26
|
import tracer from './tracing/tracer';
|
|
27
27
|
import { isNextRouterError } from './components/is-next-router-error';
|
|
28
|
-
export const version = "16.0.
|
|
28
|
+
export const version = "16.0.8";
|
|
29
29
|
export let router;
|
|
30
30
|
export const emitter = mitt();
|
|
31
31
|
const looseToArray = (input)=>[].slice.call(input);
|
|
@@ -163,7 +163,7 @@ export default class HotReloaderWebpack {
|
|
|
163
163
|
this.previewProps = previewProps;
|
|
164
164
|
this.rewrites = rewrites;
|
|
165
165
|
this.hotReloaderSpan = trace('hot-reloader', undefined, {
|
|
166
|
-
version: "16.0.
|
|
166
|
+
version: "16.0.8"
|
|
167
167
|
});
|
|
168
168
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
169
169
|
// of the current `next dev` invocation.
|
|
@@ -238,11 +238,18 @@ export async function getOriginalStackFrames({ isServer, isEdgeServer, isAppDire
|
|
|
238
238
|
value
|
|
239
239
|
};
|
|
240
240
|
}, (reason)=>{
|
|
241
|
+
let reasonStr;
|
|
242
|
+
try {
|
|
243
|
+
reasonStr = inspect(reason, {
|
|
244
|
+
colors: false
|
|
245
|
+
});
|
|
246
|
+
} catch {
|
|
247
|
+
// Bun compatibility: inspect may throw on certain objects
|
|
248
|
+
reasonStr = String(reason);
|
|
249
|
+
}
|
|
241
250
|
return {
|
|
242
251
|
status: 'rejected',
|
|
243
|
-
reason:
|
|
244
|
-
colors: false
|
|
245
|
-
})
|
|
252
|
+
reason: reasonStr
|
|
246
253
|
};
|
|
247
254
|
})));
|
|
248
255
|
ignoreListAnonymousStackFramesIfSandwiched(frameResponses);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/dev/middleware-webpack.ts"],"sourcesContent":["import { findSourceMap, type SourceMap } from '../../lib/module-loader-adapter'\nimport path from 'path'\nimport { fileURLToPath, pathToFileURL } from 'url'\nimport { SourceMapConsumer } from 'next/dist/compiled/source-map08'\nimport { getSourceMapFromFile } from './get-source-map-from-file'\nimport {\n devirtualizeReactServerURL,\n findApplicableSourceMapPayload,\n sourceMapIgnoreListsEverything,\n type BasicSourceMapPayload,\n type ModernSourceMapPayload,\n} from '../lib/source-maps'\nimport { openFileInEditor } from '../../next-devtools/server/launch-editor'\nimport {\n getOriginalCodeFrame,\n ignoreListAnonymousStackFramesIfSandwiched,\n type StackFrame,\n type IgnorableStackFrame,\n type OriginalStackFrameResponse,\n type OriginalStackFramesRequest,\n type OriginalStackFramesResponse,\n} from '../../next-devtools/server/shared'\nimport { middlewareResponse } from '../../next-devtools/server/middleware-response'\n\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type webpack from 'webpack'\nimport type {\n NullableMappedPosition,\n RawSourceMap,\n} from 'next/dist/compiled/source-map08'\nimport { formatFrameSourceFile } from '../../next-devtools/shared/webpack-module-path'\nimport type { MappedPosition } from 'source-map'\nimport { inspect } from 'util'\n\nfunction shouldIgnoreSource(sourceURL: string): boolean {\n return (\n sourceURL.includes('node_modules') ||\n // Only relevant for when Next.js is symlinked e.g. in the Next.js monorepo\n sourceURL.includes('next/dist') ||\n sourceURL.startsWith('node:')\n )\n}\n\ntype IgnoredSources = Array<{ url: string; ignored: boolean }>\n\ntype SourceAttributes = {\n sourcePosition: NullableMappedPosition\n sourceContent: string | null\n}\n\ntype Source =\n | {\n type: 'file'\n sourceMap: BasicSourceMapPayload\n ignoredSources: IgnoredSources\n moduleURL: string\n }\n | {\n type: 'bundle'\n sourceMap: BasicSourceMapPayload\n ignoredSources: IgnoredSources\n compilation: webpack.Compilation\n moduleId: string\n moduleURL: string\n }\n\nfunction getModuleById(\n id: string | undefined,\n compilation: webpack.Compilation\n) {\n const { chunkGraph, modules } = compilation\n\n return [...modules].find((module) => chunkGraph.getModuleId(module) === id)\n}\n\nfunction findModuleNotFoundFromError(errorMessage: string | undefined) {\n return errorMessage?.match(/'([^']+)' module/)?.[1]\n}\n\nfunction getSourcePath(source: string) {\n if (source.startsWith('file://')) {\n return fileURLToPath(source)\n }\n return source.replace(/^(webpack:\\/\\/\\/|webpack:\\/\\/|webpack:\\/\\/_N_E\\/)/, '')\n}\n\n/**\n * @returns 1-based lines and 0-based columns\n */\nasync function findOriginalSourcePositionAndContent(\n sourceMap: ModernSourceMapPayload,\n position: { line1: number | null; column1: number | null }\n): Promise<SourceAttributes | null> {\n let consumer: SourceMapConsumer\n try {\n consumer = await new SourceMapConsumer(sourceMap)\n } catch (cause) {\n console.error(\n new Error(\n `${sourceMap.file}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n )\n return null\n }\n\n try {\n const sourcePosition = consumer.originalPositionFor({\n line: position.line1 ?? 1,\n // 0-based columns out requires 0-based columns in.\n column: (position.column1 ?? 1) - 1,\n })\n\n if (!sourcePosition.source) {\n return null\n }\n\n const sourceContent: string | null =\n consumer.sourceContentFor(\n sourcePosition.source,\n /* returnNullOnMissing */ true\n ) ?? null\n\n return {\n sourcePosition,\n sourceContent,\n }\n } finally {\n consumer.destroy()\n }\n}\n\nexport function getIgnoredSources(\n sourceMap: RawSourceMap & { ignoreList?: number[] }\n): IgnoredSources {\n const ignoreList = new Set<number>(sourceMap.ignoreList ?? [])\n const moduleFilenames = sourceMap?.sources ?? []\n\n for (let index = 0; index < moduleFilenames.length; index++) {\n // bundlerFilePath case: webpack://./app/page.tsx\n const webpackSourceURL = moduleFilenames[index]\n // Format the path to the normal file path\n const formattedFilePath = formatFrameSourceFile(webpackSourceURL)\n if (shouldIgnoreSource(formattedFilePath)) {\n ignoreList.add(index)\n }\n }\n\n const ignoredSources = sourceMap.sources.map((source, index) => {\n return {\n url: source,\n ignored: ignoreList.has(sourceMap.sources.indexOf(source)),\n content: sourceMap.sourcesContent?.[index] ?? null,\n }\n })\n return ignoredSources\n}\n\nfunction isIgnoredSource(\n source: Source,\n sourcePosition: MappedPosition | NullableMappedPosition\n) {\n if (sourcePosition.source == null) {\n return true\n }\n for (const ignoredSource of source.ignoredSources) {\n if (ignoredSource.ignored && ignoredSource.url === sourcePosition.source) {\n return true\n }\n }\n\n return false\n}\n\nfunction findOriginalSourcePositionAndContentFromCompilation(\n moduleId: string | undefined,\n importedModule: string,\n compilation: webpack.Compilation\n): SourceAttributes | null {\n const module = getModuleById(moduleId, compilation)\n return module?.buildInfo?.importLocByPath?.get(importedModule) ?? null\n}\n\nexport async function createOriginalStackFrame({\n ignoredByDefault,\n source,\n rootDirectory,\n frame,\n errorMessage,\n}: {\n /** setting this to true will not consult ignoreList */\n ignoredByDefault: boolean\n source: Source\n rootDirectory: string\n frame: StackFrame\n errorMessage?: string\n}): Promise<OriginalStackFrameResponse | null> {\n const moduleNotFound = findModuleNotFoundFromError(errorMessage)\n const result = await (() => {\n if (moduleNotFound) {\n if (source.type === 'file') {\n return undefined\n }\n\n return findOriginalSourcePositionAndContentFromCompilation(\n source.moduleId,\n moduleNotFound,\n source.compilation\n )\n }\n return findOriginalSourcePositionAndContent(source.sourceMap, frame)\n })()\n\n if (!result) {\n return null\n }\n const { sourcePosition, sourceContent } = result\n\n if (!sourcePosition.source) {\n return null\n }\n\n const ignored =\n ignoredByDefault ||\n isIgnoredSource(source, sourcePosition) ||\n // If the source file is externals, should be excluded even it's not ignored source.\n // e.g. webpack://next/dist/.. needs to be ignored\n shouldIgnoreSource(source.moduleURL)\n\n const sourcePath = getSourcePath(\n // When sourcePosition.source is the loader path the modulePath is generally better.\n (sourcePosition.source!.includes('|')\n ? source.moduleURL\n : sourcePosition.source) || source.moduleURL\n )\n const filePath = path.resolve(rootDirectory, sourcePath)\n const resolvedFilePath = path.relative(rootDirectory, filePath)\n\n const traced: IgnorableStackFrame = {\n file: resolvedFilePath,\n line1: sourcePosition.line,\n column1: sourcePosition.column === null ? null : sourcePosition.column + 1,\n methodName:\n // We ignore the sourcemapped name since it won't be the correct name.\n // The callsite will point to the column of the variable name instead of the\n // name of the enclosing function.\n // TODO(NDX-531): Spy on prepareStackTrace to get the enclosing line number for method name mapping.\n // default is not a valid identifier in JS so webpack uses a custom variable when it's an unnamed default export\n // Resolve it back to `default` for the method name if the source position didn't have the method.\n frame.methodName\n ?.replace('__WEBPACK_DEFAULT_EXPORT__', 'default')\n ?.replace('__webpack_exports__.', ''),\n arguments: [],\n ignored,\n }\n\n return {\n originalStackFrame: traced,\n originalCodeFrame: getOriginalCodeFrame(traced, sourceContent),\n }\n}\n\nasync function getSourceMapFromCompilation(\n id: string,\n compilation: webpack.Compilation\n): Promise<RawSourceMap | undefined> {\n try {\n const module = getModuleById(id, compilation)\n\n if (!module) {\n return undefined\n }\n\n // @ts-expect-error The types for `CodeGenerationResults.get` require a\n // runtime to be passed as second argument, but apparently it also works\n // without it.\n const codeGenerationResult = compilation.codeGenerationResults.get(module)\n const source = codeGenerationResult?.sources.get('javascript')\n\n return source?.map() ?? undefined\n } catch (err) {\n console.error(`Failed to lookup module by ID (\"${id}\"):`, err)\n return undefined\n }\n}\n\nasync function getSource(\n frame: {\n file: string | null\n line1: number | null\n column1: number | null\n },\n options: {\n getCompilations: () => webpack.Compilation[]\n }\n): Promise<Source | undefined> {\n let sourceURL = frame.file ?? ''\n const { getCompilations } = options\n\n sourceURL = devirtualizeReactServerURL(sourceURL)\n\n let nativeSourceMap: SourceMap | undefined\n try {\n nativeSourceMap = findSourceMap(sourceURL)\n } catch (cause) {\n throw new Error(\n `${sourceURL}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n }\n\n if (nativeSourceMap !== undefined) {\n const sourceMapPayload = nativeSourceMap.payload as ModernSourceMapPayload\n return {\n type: 'file',\n sourceMap: findApplicableSourceMapPayload(\n (frame.line1 ?? 1) - 1,\n (frame.column1 ?? 1) - 1,\n sourceMapPayload\n )!,\n\n ignoredSources: getIgnoredSources(\n // @ts-expect-error -- TODO: Support IndexSourceMap\n sourceMapPayload\n ),\n moduleURL: sourceURL,\n }\n }\n\n if (path.isAbsolute(sourceURL)) {\n sourceURL = pathToFileURL(sourceURL).href\n }\n\n if (sourceURL.startsWith('file:')) {\n const sourceMap = await getSourceMapFromFile(sourceURL)\n return sourceMap\n ? {\n type: 'file',\n sourceMap,\n ignoredSources: getIgnoredSources(sourceMap),\n moduleURL: sourceURL,\n }\n : undefined\n }\n\n // webpack-internal:///./src/hello.tsx => ./src/hello.tsx\n // webpack://_N_E/./src/hello.tsx => ./src/hello.tsx\n const moduleId = sourceURL\n .replace(/^(webpack-internal:\\/\\/\\/|webpack:\\/\\/(_N_E\\/)?)/, '')\n .replace(/\\?\\d+$/, '')\n\n // (rsc)/./src/hello.tsx => ./src/hello.tsx\n const moduleURL = moduleId.replace(/^(\\(.*\\)\\/?)/, '')\n\n for (const compilation of getCompilations()) {\n const sourceMap = await getSourceMapFromCompilation(moduleId, compilation)\n\n if (sourceMap) {\n const ignoredSources = getIgnoredSources(sourceMap)\n return {\n type: 'bundle',\n sourceMap,\n compilation,\n moduleId,\n moduleURL,\n ignoredSources,\n }\n }\n }\n\n return undefined\n}\n\nexport async function getOriginalStackFrames({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frames,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n}: {\n isServer: boolean\n isEdgeServer: boolean\n isAppDirectory: boolean\n frames: readonly StackFrame[]\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n rootDirectory: string\n}): Promise<OriginalStackFramesResponse> {\n const frameResponses = await Promise.all(\n frames.map(\n (frame): Promise<OriginalStackFramesResponse[number]> =>\n getOriginalStackFrame({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frame,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n }).then(\n (value) => {\n return {\n status: 'fulfilled',\n value,\n }\n },\n (reason) => {\n return {\n status: 'rejected',\n reason: inspect(reason, { colors: false }),\n }\n }\n )\n )\n )\n\n ignoreListAnonymousStackFramesIfSandwiched(frameResponses)\n\n return frameResponses\n}\n\nasync function getOriginalStackFrame({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frame,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n}: {\n isServer: boolean\n isEdgeServer: boolean\n isAppDirectory: boolean\n frame: StackFrame\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n rootDirectory: string\n}): Promise<OriginalStackFrameResponse> {\n const filename = frame.file ?? ''\n const source = await getSource(frame, {\n getCompilations: () => {\n const compilations: webpack.Compilation[] = []\n\n // Try Client Compilation first. In `pages` we leverage\n // `isClientError` to check. In `app` it depends on if it's a server\n // / client component and when the code throws. E.g. during HTML\n // rendering it's the server/edge compilation.\n if ((!isEdgeServer && !isServer) || isAppDirectory) {\n const compilation = clientStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n // Try Server Compilation. In `pages` this could be something\n // imported in getServerSideProps/getStaticProps as the code for\n // those is tree-shaken. In `app` this finds server components and\n // code that was imported from a server component. It also covers\n // when client component code throws during HTML rendering.\n if (isServer || isAppDirectory) {\n const compilation = serverStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n // Try Edge Server Compilation. Both cases are the same as Server\n // Compilation, main difference is that it covers `runtime: 'edge'`\n // pages/app routes.\n if (isEdgeServer || isAppDirectory) {\n const compilation = edgeServerStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n return compilations\n },\n })\n\n let defaultNormalizedStackFrameLocation = frame.file\n if (\n defaultNormalizedStackFrameLocation !== null &&\n defaultNormalizedStackFrameLocation.startsWith('file://')\n ) {\n defaultNormalizedStackFrameLocation = path.relative(\n rootDirectory,\n fileURLToPath(defaultNormalizedStackFrameLocation)\n )\n }\n // This stack frame is used for the one that couldn't locate the source or source mapped frame\n const defaultStackFrame: IgnorableStackFrame = {\n file: defaultNormalizedStackFrameLocation,\n line1: frame.line1,\n column1: frame.column1,\n methodName: frame.methodName,\n ignored: shouldIgnoreSource(filename),\n arguments: [],\n }\n if (!source) {\n // return original stack frame with no source map\n return {\n originalStackFrame: defaultStackFrame,\n originalCodeFrame: null,\n }\n }\n defaultStackFrame.ignored ||= sourceMapIgnoreListsEverything(source.sourceMap)\n\n const originalStackFrameResponse = await createOriginalStackFrame({\n ignoredByDefault: defaultStackFrame.ignored,\n frame,\n source,\n rootDirectory,\n })\n\n if (!originalStackFrameResponse) {\n return {\n originalStackFrame: defaultStackFrame,\n originalCodeFrame: null,\n }\n }\n\n return originalStackFrameResponse\n}\n\nexport function getOverlayMiddleware(options: {\n rootDirectory: string\n isSrcDir: boolean\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n}) {\n const { rootDirectory, isSrcDir, clientStats, serverStats, edgeServerStats } =\n options\n\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(`http://n${req.url}`)\n\n if (pathname === '/__nextjs_original-stack-frames') {\n if (req.method !== 'POST') {\n return middlewareResponse.badRequest(res)\n }\n\n const body = await new Promise<string>((resolve, reject) => {\n let data = ''\n req.on('data', (chunk) => {\n data += chunk\n })\n req.on('end', () => resolve(data))\n req.on('error', reject)\n })\n\n try {\n const { frames, isServer, isEdgeServer, isAppDirectory } = JSON.parse(\n body\n ) as OriginalStackFramesRequest\n\n return middlewareResponse.json(\n res,\n await getOriginalStackFrames({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frames,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n })\n )\n } catch (err) {\n return middlewareResponse.badRequest(res)\n }\n } else if (pathname === '/__nextjs_launch-editor') {\n const frame = {\n file: searchParams.get('file') as string,\n methodName: searchParams.get('methodName') as string,\n line1: parseInt(searchParams.get('line1') ?? '1', 10) || 1,\n column1: parseInt(searchParams.get('column1') ?? '1', 10) || 1,\n arguments: searchParams.getAll('arguments').filter(Boolean),\n } satisfies StackFrame\n\n if (!frame.file) return middlewareResponse.badRequest(res)\n\n let openEditorResult\n const isAppRelativePath = searchParams.get('isAppRelativePath') === '1'\n if (isAppRelativePath) {\n const relativeFilePath = searchParams.get('file') || ''\n const appPath = path.join(\n 'app',\n isSrcDir ? 'src' : '',\n relativeFilePath\n )\n openEditorResult = await openFileInEditor(appPath, 1, 1, rootDirectory)\n } else {\n // TODO: How do we differentiate layers and actual file paths with round brackets?\n // frame files may start with their webpack layer, like (middleware)/middleware.js\n const filePath = frame.file.replace(/^\\([^)]+\\)\\//, '')\n openEditorResult = await openFileInEditor(\n filePath,\n frame.line1,\n frame.column1 ?? 1,\n rootDirectory\n )\n }\n if (openEditorResult.error) {\n console.error('Failed to launch editor:', openEditorResult.error)\n return middlewareResponse.internalServerError(\n res,\n openEditorResult.error\n )\n }\n if (!openEditorResult.found) {\n return middlewareResponse.notFound(res)\n }\n return middlewareResponse.noContent(res)\n }\n\n return next()\n }\n}\n\nexport function getSourceMapMiddleware(options: {\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n}) {\n const { clientStats, serverStats, edgeServerStats } = options\n\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(`http://n${req.url}`)\n\n if (pathname !== '/__nextjs_source-map') {\n return next()\n }\n\n const filename = searchParams.get('filename')\n\n if (!filename) {\n return middlewareResponse.badRequest(res)\n }\n\n let source: Source | undefined\n\n try {\n source = await getSource(\n {\n file: filename,\n // Webpack doesn't use Index Source Maps\n line1: null,\n column1: null,\n },\n {\n getCompilations: () => {\n const compilations: webpack.Compilation[] = []\n\n for (const stats of [\n clientStats(),\n serverStats(),\n edgeServerStats(),\n ]) {\n if (stats?.compilation) {\n compilations.push(stats.compilation)\n }\n }\n\n return compilations\n },\n }\n )\n } catch (error) {\n return middlewareResponse.internalServerError(res, error)\n }\n\n if (!source) {\n return middlewareResponse.noContent(res)\n }\n\n return middlewareResponse.json(res, source.sourceMap)\n }\n}\n"],"names":["findSourceMap","path","fileURLToPath","pathToFileURL","SourceMapConsumer","getSourceMapFromFile","devirtualizeReactServerURL","findApplicableSourceMapPayload","sourceMapIgnoreListsEverything","openFileInEditor","getOriginalCodeFrame","ignoreListAnonymousStackFramesIfSandwiched","middlewareResponse","formatFrameSourceFile","inspect","shouldIgnoreSource","sourceURL","includes","startsWith","getModuleById","id","compilation","chunkGraph","modules","find","module","getModuleId","findModuleNotFoundFromError","errorMessage","match","getSourcePath","source","replace","findOriginalSourcePositionAndContent","sourceMap","position","consumer","cause","console","error","Error","file","sourcePosition","originalPositionFor","line","line1","column","column1","sourceContent","sourceContentFor","destroy","getIgnoredSources","ignoreList","Set","moduleFilenames","sources","index","length","webpackSourceURL","formattedFilePath","add","ignoredSources","map","url","ignored","has","indexOf","content","sourcesContent","isIgnoredSource","ignoredSource","findOriginalSourcePositionAndContentFromCompilation","moduleId","importedModule","buildInfo","importLocByPath","get","createOriginalStackFrame","ignoredByDefault","rootDirectory","frame","moduleNotFound","result","type","undefined","moduleURL","sourcePath","filePath","resolve","resolvedFilePath","relative","traced","methodName","arguments","originalStackFrame","originalCodeFrame","getSourceMapFromCompilation","codeGenerationResult","codeGenerationResults","err","getSource","options","getCompilations","nativeSourceMap","sourceMapPayload","payload","isAbsolute","href","getOriginalStackFrames","isServer","isEdgeServer","isAppDirectory","frames","clientStats","serverStats","edgeServerStats","frameResponses","Promise","all","getOriginalStackFrame","then","value","status","reason","colors","filename","compilations","push","defaultNormalizedStackFrameLocation","defaultStackFrame","originalStackFrameResponse","getOverlayMiddleware","isSrcDir","req","res","next","pathname","searchParams","URL","method","badRequest","body","reject","data","on","chunk","JSON","parse","json","parseInt","getAll","filter","Boolean","openEditorResult","isAppRelativePath","relativeFilePath","appPath","join","internalServerError","found","notFound","noContent","getSourceMapMiddleware","stats"],"mappings":"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","ignoreList":[0]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/server/dev/middleware-webpack.ts"],"sourcesContent":["import { findSourceMap, type SourceMap } from '../../lib/module-loader-adapter'\nimport path from 'path'\nimport { fileURLToPath, pathToFileURL } from 'url'\nimport { SourceMapConsumer } from 'next/dist/compiled/source-map08'\nimport { getSourceMapFromFile } from './get-source-map-from-file'\nimport {\n devirtualizeReactServerURL,\n findApplicableSourceMapPayload,\n sourceMapIgnoreListsEverything,\n type BasicSourceMapPayload,\n type ModernSourceMapPayload,\n} from '../lib/source-maps'\nimport { openFileInEditor } from '../../next-devtools/server/launch-editor'\nimport {\n getOriginalCodeFrame,\n ignoreListAnonymousStackFramesIfSandwiched,\n type StackFrame,\n type IgnorableStackFrame,\n type OriginalStackFrameResponse,\n type OriginalStackFramesRequest,\n type OriginalStackFramesResponse,\n} from '../../next-devtools/server/shared'\nimport { middlewareResponse } from '../../next-devtools/server/middleware-response'\n\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type webpack from 'webpack'\nimport type {\n NullableMappedPosition,\n RawSourceMap,\n} from 'next/dist/compiled/source-map08'\nimport { formatFrameSourceFile } from '../../next-devtools/shared/webpack-module-path'\nimport type { MappedPosition } from 'source-map'\nimport { inspect } from 'util'\n\nfunction shouldIgnoreSource(sourceURL: string): boolean {\n return (\n sourceURL.includes('node_modules') ||\n // Only relevant for when Next.js is symlinked e.g. in the Next.js monorepo\n sourceURL.includes('next/dist') ||\n sourceURL.startsWith('node:')\n )\n}\n\ntype IgnoredSources = Array<{ url: string; ignored: boolean }>\n\ntype SourceAttributes = {\n sourcePosition: NullableMappedPosition\n sourceContent: string | null\n}\n\ntype Source =\n | {\n type: 'file'\n sourceMap: BasicSourceMapPayload\n ignoredSources: IgnoredSources\n moduleURL: string\n }\n | {\n type: 'bundle'\n sourceMap: BasicSourceMapPayload\n ignoredSources: IgnoredSources\n compilation: webpack.Compilation\n moduleId: string\n moduleURL: string\n }\n\nfunction getModuleById(\n id: string | undefined,\n compilation: webpack.Compilation\n) {\n const { chunkGraph, modules } = compilation\n\n return [...modules].find((module) => chunkGraph.getModuleId(module) === id)\n}\n\nfunction findModuleNotFoundFromError(errorMessage: string | undefined) {\n return errorMessage?.match(/'([^']+)' module/)?.[1]\n}\n\nfunction getSourcePath(source: string) {\n if (source.startsWith('file://')) {\n return fileURLToPath(source)\n }\n return source.replace(/^(webpack:\\/\\/\\/|webpack:\\/\\/|webpack:\\/\\/_N_E\\/)/, '')\n}\n\n/**\n * @returns 1-based lines and 0-based columns\n */\nasync function findOriginalSourcePositionAndContent(\n sourceMap: ModernSourceMapPayload,\n position: { line1: number | null; column1: number | null }\n): Promise<SourceAttributes | null> {\n let consumer: SourceMapConsumer\n try {\n consumer = await new SourceMapConsumer(sourceMap)\n } catch (cause) {\n console.error(\n new Error(\n `${sourceMap.file}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n )\n return null\n }\n\n try {\n const sourcePosition = consumer.originalPositionFor({\n line: position.line1 ?? 1,\n // 0-based columns out requires 0-based columns in.\n column: (position.column1 ?? 1) - 1,\n })\n\n if (!sourcePosition.source) {\n return null\n }\n\n const sourceContent: string | null =\n consumer.sourceContentFor(\n sourcePosition.source,\n /* returnNullOnMissing */ true\n ) ?? null\n\n return {\n sourcePosition,\n sourceContent,\n }\n } finally {\n consumer.destroy()\n }\n}\n\nexport function getIgnoredSources(\n sourceMap: RawSourceMap & { ignoreList?: number[] }\n): IgnoredSources {\n const ignoreList = new Set<number>(sourceMap.ignoreList ?? [])\n const moduleFilenames = sourceMap?.sources ?? []\n\n for (let index = 0; index < moduleFilenames.length; index++) {\n // bundlerFilePath case: webpack://./app/page.tsx\n const webpackSourceURL = moduleFilenames[index]\n // Format the path to the normal file path\n const formattedFilePath = formatFrameSourceFile(webpackSourceURL)\n if (shouldIgnoreSource(formattedFilePath)) {\n ignoreList.add(index)\n }\n }\n\n const ignoredSources = sourceMap.sources.map((source, index) => {\n return {\n url: source,\n ignored: ignoreList.has(sourceMap.sources.indexOf(source)),\n content: sourceMap.sourcesContent?.[index] ?? null,\n }\n })\n return ignoredSources\n}\n\nfunction isIgnoredSource(\n source: Source,\n sourcePosition: MappedPosition | NullableMappedPosition\n) {\n if (sourcePosition.source == null) {\n return true\n }\n for (const ignoredSource of source.ignoredSources) {\n if (ignoredSource.ignored && ignoredSource.url === sourcePosition.source) {\n return true\n }\n }\n\n return false\n}\n\nfunction findOriginalSourcePositionAndContentFromCompilation(\n moduleId: string | undefined,\n importedModule: string,\n compilation: webpack.Compilation\n): SourceAttributes | null {\n const module = getModuleById(moduleId, compilation)\n return module?.buildInfo?.importLocByPath?.get(importedModule) ?? null\n}\n\nexport async function createOriginalStackFrame({\n ignoredByDefault,\n source,\n rootDirectory,\n frame,\n errorMessage,\n}: {\n /** setting this to true will not consult ignoreList */\n ignoredByDefault: boolean\n source: Source\n rootDirectory: string\n frame: StackFrame\n errorMessage?: string\n}): Promise<OriginalStackFrameResponse | null> {\n const moduleNotFound = findModuleNotFoundFromError(errorMessage)\n const result = await (() => {\n if (moduleNotFound) {\n if (source.type === 'file') {\n return undefined\n }\n\n return findOriginalSourcePositionAndContentFromCompilation(\n source.moduleId,\n moduleNotFound,\n source.compilation\n )\n }\n return findOriginalSourcePositionAndContent(source.sourceMap, frame)\n })()\n\n if (!result) {\n return null\n }\n const { sourcePosition, sourceContent } = result\n\n if (!sourcePosition.source) {\n return null\n }\n\n const ignored =\n ignoredByDefault ||\n isIgnoredSource(source, sourcePosition) ||\n // If the source file is externals, should be excluded even it's not ignored source.\n // e.g. webpack://next/dist/.. needs to be ignored\n shouldIgnoreSource(source.moduleURL)\n\n const sourcePath = getSourcePath(\n // When sourcePosition.source is the loader path the modulePath is generally better.\n (sourcePosition.source!.includes('|')\n ? source.moduleURL\n : sourcePosition.source) || source.moduleURL\n )\n const filePath = path.resolve(rootDirectory, sourcePath)\n const resolvedFilePath = path.relative(rootDirectory, filePath)\n\n const traced: IgnorableStackFrame = {\n file: resolvedFilePath,\n line1: sourcePosition.line,\n column1: sourcePosition.column === null ? null : sourcePosition.column + 1,\n methodName:\n // We ignore the sourcemapped name since it won't be the correct name.\n // The callsite will point to the column of the variable name instead of the\n // name of the enclosing function.\n // TODO(NDX-531): Spy on prepareStackTrace to get the enclosing line number for method name mapping.\n // default is not a valid identifier in JS so webpack uses a custom variable when it's an unnamed default export\n // Resolve it back to `default` for the method name if the source position didn't have the method.\n frame.methodName\n ?.replace('__WEBPACK_DEFAULT_EXPORT__', 'default')\n ?.replace('__webpack_exports__.', ''),\n arguments: [],\n ignored,\n }\n\n return {\n originalStackFrame: traced,\n originalCodeFrame: getOriginalCodeFrame(traced, sourceContent),\n }\n}\n\nasync function getSourceMapFromCompilation(\n id: string,\n compilation: webpack.Compilation\n): Promise<RawSourceMap | undefined> {\n try {\n const module = getModuleById(id, compilation)\n\n if (!module) {\n return undefined\n }\n\n // @ts-expect-error The types for `CodeGenerationResults.get` require a\n // runtime to be passed as second argument, but apparently it also works\n // without it.\n const codeGenerationResult = compilation.codeGenerationResults.get(module)\n const source = codeGenerationResult?.sources.get('javascript')\n\n return source?.map() ?? undefined\n } catch (err) {\n console.error(`Failed to lookup module by ID (\"${id}\"):`, err)\n return undefined\n }\n}\n\nasync function getSource(\n frame: {\n file: string | null\n line1: number | null\n column1: number | null\n },\n options: {\n getCompilations: () => webpack.Compilation[]\n }\n): Promise<Source | undefined> {\n let sourceURL = frame.file ?? ''\n const { getCompilations } = options\n\n sourceURL = devirtualizeReactServerURL(sourceURL)\n\n let nativeSourceMap: SourceMap | undefined\n try {\n nativeSourceMap = findSourceMap(sourceURL)\n } catch (cause) {\n throw new Error(\n `${sourceURL}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n }\n\n if (nativeSourceMap !== undefined) {\n const sourceMapPayload = nativeSourceMap.payload as ModernSourceMapPayload\n return {\n type: 'file',\n sourceMap: findApplicableSourceMapPayload(\n (frame.line1 ?? 1) - 1,\n (frame.column1 ?? 1) - 1,\n sourceMapPayload\n )!,\n\n ignoredSources: getIgnoredSources(\n // @ts-expect-error -- TODO: Support IndexSourceMap\n sourceMapPayload\n ),\n moduleURL: sourceURL,\n }\n }\n\n if (path.isAbsolute(sourceURL)) {\n sourceURL = pathToFileURL(sourceURL).href\n }\n\n if (sourceURL.startsWith('file:')) {\n const sourceMap = await getSourceMapFromFile(sourceURL)\n return sourceMap\n ? {\n type: 'file',\n sourceMap,\n ignoredSources: getIgnoredSources(sourceMap),\n moduleURL: sourceURL,\n }\n : undefined\n }\n\n // webpack-internal:///./src/hello.tsx => ./src/hello.tsx\n // webpack://_N_E/./src/hello.tsx => ./src/hello.tsx\n const moduleId = sourceURL\n .replace(/^(webpack-internal:\\/\\/\\/|webpack:\\/\\/(_N_E\\/)?)/, '')\n .replace(/\\?\\d+$/, '')\n\n // (rsc)/./src/hello.tsx => ./src/hello.tsx\n const moduleURL = moduleId.replace(/^(\\(.*\\)\\/?)/, '')\n\n for (const compilation of getCompilations()) {\n const sourceMap = await getSourceMapFromCompilation(moduleId, compilation)\n\n if (sourceMap) {\n const ignoredSources = getIgnoredSources(sourceMap)\n return {\n type: 'bundle',\n sourceMap,\n compilation,\n moduleId,\n moduleURL,\n ignoredSources,\n }\n }\n }\n\n return undefined\n}\n\nexport async function getOriginalStackFrames({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frames,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n}: {\n isServer: boolean\n isEdgeServer: boolean\n isAppDirectory: boolean\n frames: readonly StackFrame[]\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n rootDirectory: string\n}): Promise<OriginalStackFramesResponse> {\n const frameResponses = await Promise.all(\n frames.map(\n (frame): Promise<OriginalStackFramesResponse[number]> =>\n getOriginalStackFrame({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frame,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n }).then(\n (value) => {\n return {\n status: 'fulfilled',\n value,\n }\n },\n (reason) => {\n let reasonStr: string\n try {\n reasonStr = inspect(reason, { colors: false })\n } catch {\n // Bun compatibility: inspect may throw on certain objects\n reasonStr = String(reason)\n }\n return {\n status: 'rejected',\n reason: reasonStr,\n }\n }\n )\n )\n )\n\n ignoreListAnonymousStackFramesIfSandwiched(frameResponses)\n\n return frameResponses\n}\n\nasync function getOriginalStackFrame({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frame,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n}: {\n isServer: boolean\n isEdgeServer: boolean\n isAppDirectory: boolean\n frame: StackFrame\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n rootDirectory: string\n}): Promise<OriginalStackFrameResponse> {\n const filename = frame.file ?? ''\n const source = await getSource(frame, {\n getCompilations: () => {\n const compilations: webpack.Compilation[] = []\n\n // Try Client Compilation first. In `pages` we leverage\n // `isClientError` to check. In `app` it depends on if it's a server\n // / client component and when the code throws. E.g. during HTML\n // rendering it's the server/edge compilation.\n if ((!isEdgeServer && !isServer) || isAppDirectory) {\n const compilation = clientStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n // Try Server Compilation. In `pages` this could be something\n // imported in getServerSideProps/getStaticProps as the code for\n // those is tree-shaken. In `app` this finds server components and\n // code that was imported from a server component. It also covers\n // when client component code throws during HTML rendering.\n if (isServer || isAppDirectory) {\n const compilation = serverStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n // Try Edge Server Compilation. Both cases are the same as Server\n // Compilation, main difference is that it covers `runtime: 'edge'`\n // pages/app routes.\n if (isEdgeServer || isAppDirectory) {\n const compilation = edgeServerStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n return compilations\n },\n })\n\n let defaultNormalizedStackFrameLocation = frame.file\n if (\n defaultNormalizedStackFrameLocation !== null &&\n defaultNormalizedStackFrameLocation.startsWith('file://')\n ) {\n defaultNormalizedStackFrameLocation = path.relative(\n rootDirectory,\n fileURLToPath(defaultNormalizedStackFrameLocation)\n )\n }\n // This stack frame is used for the one that couldn't locate the source or source mapped frame\n const defaultStackFrame: IgnorableStackFrame = {\n file: defaultNormalizedStackFrameLocation,\n line1: frame.line1,\n column1: frame.column1,\n methodName: frame.methodName,\n ignored: shouldIgnoreSource(filename),\n arguments: [],\n }\n if (!source) {\n // return original stack frame with no source map\n return {\n originalStackFrame: defaultStackFrame,\n originalCodeFrame: null,\n }\n }\n defaultStackFrame.ignored ||= sourceMapIgnoreListsEverything(source.sourceMap)\n\n const originalStackFrameResponse = await createOriginalStackFrame({\n ignoredByDefault: defaultStackFrame.ignored,\n frame,\n source,\n rootDirectory,\n })\n\n if (!originalStackFrameResponse) {\n return {\n originalStackFrame: defaultStackFrame,\n originalCodeFrame: null,\n }\n }\n\n return originalStackFrameResponse\n}\n\nexport function getOverlayMiddleware(options: {\n rootDirectory: string\n isSrcDir: boolean\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n}) {\n const { rootDirectory, isSrcDir, clientStats, serverStats, edgeServerStats } =\n options\n\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(`http://n${req.url}`)\n\n if (pathname === '/__nextjs_original-stack-frames') {\n if (req.method !== 'POST') {\n return middlewareResponse.badRequest(res)\n }\n\n const body = await new Promise<string>((resolve, reject) => {\n let data = ''\n req.on('data', (chunk) => {\n data += chunk\n })\n req.on('end', () => resolve(data))\n req.on('error', reject)\n })\n\n try {\n const { frames, isServer, isEdgeServer, isAppDirectory } = JSON.parse(\n body\n ) as OriginalStackFramesRequest\n\n return middlewareResponse.json(\n res,\n await getOriginalStackFrames({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frames,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n })\n )\n } catch (err) {\n return middlewareResponse.badRequest(res)\n }\n } else if (pathname === '/__nextjs_launch-editor') {\n const frame = {\n file: searchParams.get('file') as string,\n methodName: searchParams.get('methodName') as string,\n line1: parseInt(searchParams.get('line1') ?? '1', 10) || 1,\n column1: parseInt(searchParams.get('column1') ?? '1', 10) || 1,\n arguments: searchParams.getAll('arguments').filter(Boolean),\n } satisfies StackFrame\n\n if (!frame.file) return middlewareResponse.badRequest(res)\n\n let openEditorResult\n const isAppRelativePath = searchParams.get('isAppRelativePath') === '1'\n if (isAppRelativePath) {\n const relativeFilePath = searchParams.get('file') || ''\n const appPath = path.join(\n 'app',\n isSrcDir ? 'src' : '',\n relativeFilePath\n )\n openEditorResult = await openFileInEditor(appPath, 1, 1, rootDirectory)\n } else {\n // TODO: How do we differentiate layers and actual file paths with round brackets?\n // frame files may start with their webpack layer, like (middleware)/middleware.js\n const filePath = frame.file.replace(/^\\([^)]+\\)\\//, '')\n openEditorResult = await openFileInEditor(\n filePath,\n frame.line1,\n frame.column1 ?? 1,\n rootDirectory\n )\n }\n if (openEditorResult.error) {\n console.error('Failed to launch editor:', openEditorResult.error)\n return middlewareResponse.internalServerError(\n res,\n openEditorResult.error\n )\n }\n if (!openEditorResult.found) {\n return middlewareResponse.notFound(res)\n }\n return middlewareResponse.noContent(res)\n }\n\n return next()\n }\n}\n\nexport function getSourceMapMiddleware(options: {\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n}) {\n const { clientStats, serverStats, edgeServerStats } = options\n\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(`http://n${req.url}`)\n\n if (pathname !== '/__nextjs_source-map') {\n return next()\n }\n\n const filename = searchParams.get('filename')\n\n if (!filename) {\n return middlewareResponse.badRequest(res)\n }\n\n let source: Source | undefined\n\n try {\n source = await getSource(\n {\n file: filename,\n // Webpack doesn't use Index Source Maps\n line1: null,\n column1: null,\n },\n {\n getCompilations: () => {\n const compilations: webpack.Compilation[] = []\n\n for (const stats of [\n clientStats(),\n serverStats(),\n edgeServerStats(),\n ]) {\n if (stats?.compilation) {\n compilations.push(stats.compilation)\n }\n }\n\n return compilations\n },\n }\n )\n } catch (error) {\n return middlewareResponse.internalServerError(res, error)\n }\n\n if (!source) {\n return middlewareResponse.noContent(res)\n }\n\n return middlewareResponse.json(res, source.sourceMap)\n }\n}\n"],"names":["findSourceMap","path","fileURLToPath","pathToFileURL","SourceMapConsumer","getSourceMapFromFile","devirtualizeReactServerURL","findApplicableSourceMapPayload","sourceMapIgnoreListsEverything","openFileInEditor","getOriginalCodeFrame","ignoreListAnonymousStackFramesIfSandwiched","middlewareResponse","formatFrameSourceFile","inspect","shouldIgnoreSource","sourceURL","includes","startsWith","getModuleById","id","compilation","chunkGraph","modules","find","module","getModuleId","findModuleNotFoundFromError","errorMessage","match","getSourcePath","source","replace","findOriginalSourcePositionAndContent","sourceMap","position","consumer","cause","console","error","Error","file","sourcePosition","originalPositionFor","line","line1","column","column1","sourceContent","sourceContentFor","destroy","getIgnoredSources","ignoreList","Set","moduleFilenames","sources","index","length","webpackSourceURL","formattedFilePath","add","ignoredSources","map","url","ignored","has","indexOf","content","sourcesContent","isIgnoredSource","ignoredSource","findOriginalSourcePositionAndContentFromCompilation","moduleId","importedModule","buildInfo","importLocByPath","get","createOriginalStackFrame","ignoredByDefault","rootDirectory","frame","moduleNotFound","result","type","undefined","moduleURL","sourcePath","filePath","resolve","resolvedFilePath","relative","traced","methodName","arguments","originalStackFrame","originalCodeFrame","getSourceMapFromCompilation","codeGenerationResult","codeGenerationResults","err","getSource","options","getCompilations","nativeSourceMap","sourceMapPayload","payload","isAbsolute","href","getOriginalStackFrames","isServer","isEdgeServer","isAppDirectory","frames","clientStats","serverStats","edgeServerStats","frameResponses","Promise","all","getOriginalStackFrame","then","value","status","reason","reasonStr","colors","String","filename","compilations","push","defaultNormalizedStackFrameLocation","defaultStackFrame","originalStackFrameResponse","getOverlayMiddleware","isSrcDir","req","res","next","pathname","searchParams","URL","method","badRequest","body","reject","data","on","chunk","JSON","parse","json","parseInt","getAll","filter","Boolean","openEditorResult","isAppRelativePath","relativeFilePath","appPath","join","internalServerError","found","notFound","noContent","getSourceMapMiddleware","stats"],"mappings":"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","ignoreList":[0]}
|
|
@@ -20,7 +20,7 @@ export function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures
|
|
|
20
20
|
if (parts.length > 0) {
|
|
21
21
|
versionSuffix = ` (${parts.join(', ')})`;
|
|
22
22
|
}
|
|
23
|
-
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"16.0.
|
|
23
|
+
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"16.0.8"}`))}${versionSuffix}`);
|
|
24
24
|
if (appUrl) {
|
|
25
25
|
Log.bootstrap(`- Local: ${appUrl}`);
|
|
26
26
|
}
|
|
@@ -110,7 +110,7 @@ export async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup,
|
|
|
110
110
|
export async function startServer(serverOptions) {
|
|
111
111
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
|
112
112
|
let { port } = serverOptions;
|
|
113
|
-
process.title = `next-server (v${"16.0.
|
|
113
|
+
process.title = `next-server (v${"16.0.8"})`;
|
|
114
114
|
let handlersReady = ()=>{};
|
|
115
115
|
let handlersError = ()=>{};
|
|
116
116
|
let handlersPromise = new Promise((resolve, reject)=>{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export function isStableBuild() {
|
|
2
|
-
return !"16.0.
|
|
2
|
+
return !"16.0.8"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
|
|
3
3
|
}
|
|
4
4
|
export class CanaryOnlyConfigError extends Error {
|
|
5
5
|
constructor(arg){
|
|
@@ -231,7 +231,7 @@ class HotReloaderWebpack {
|
|
|
231
231
|
this.previewProps = previewProps;
|
|
232
232
|
this.rewrites = rewrites;
|
|
233
233
|
this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
|
|
234
|
-
version: "16.0.
|
|
234
|
+
version: "16.0.8"
|
|
235
235
|
});
|
|
236
236
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
237
237
|
// of the current `next dev` invocation.
|
|
@@ -277,11 +277,18 @@ async function getOriginalStackFrames({ isServer, isEdgeServer, isAppDirectory,
|
|
|
277
277
|
value
|
|
278
278
|
};
|
|
279
279
|
}, (reason)=>{
|
|
280
|
+
let reasonStr;
|
|
281
|
+
try {
|
|
282
|
+
reasonStr = (0, _util.inspect)(reason, {
|
|
283
|
+
colors: false
|
|
284
|
+
});
|
|
285
|
+
} catch {
|
|
286
|
+
// Bun compatibility: inspect may throw on certain objects
|
|
287
|
+
reasonStr = String(reason);
|
|
288
|
+
}
|
|
280
289
|
return {
|
|
281
290
|
status: 'rejected',
|
|
282
|
-
reason:
|
|
283
|
-
colors: false
|
|
284
|
-
})
|
|
291
|
+
reason: reasonStr
|
|
285
292
|
};
|
|
286
293
|
})));
|
|
287
294
|
(0, _shared.ignoreListAnonymousStackFramesIfSandwiched)(frameResponses);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/server/dev/middleware-webpack.ts"],"sourcesContent":["import { findSourceMap, type SourceMap } from '../../lib/module-loader-adapter'\nimport path from 'path'\nimport { fileURLToPath, pathToFileURL } from 'url'\nimport { SourceMapConsumer } from 'next/dist/compiled/source-map08'\nimport { getSourceMapFromFile } from './get-source-map-from-file'\nimport {\n devirtualizeReactServerURL,\n findApplicableSourceMapPayload,\n sourceMapIgnoreListsEverything,\n type BasicSourceMapPayload,\n type ModernSourceMapPayload,\n} from '../lib/source-maps'\nimport { openFileInEditor } from '../../next-devtools/server/launch-editor'\nimport {\n getOriginalCodeFrame,\n ignoreListAnonymousStackFramesIfSandwiched,\n type StackFrame,\n type IgnorableStackFrame,\n type OriginalStackFrameResponse,\n type OriginalStackFramesRequest,\n type OriginalStackFramesResponse,\n} from '../../next-devtools/server/shared'\nimport { middlewareResponse } from '../../next-devtools/server/middleware-response'\n\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type webpack from 'webpack'\nimport type {\n NullableMappedPosition,\n RawSourceMap,\n} from 'next/dist/compiled/source-map08'\nimport { formatFrameSourceFile } from '../../next-devtools/shared/webpack-module-path'\nimport type { MappedPosition } from 'source-map'\nimport { inspect } from 'util'\n\nfunction shouldIgnoreSource(sourceURL: string): boolean {\n return (\n sourceURL.includes('node_modules') ||\n // Only relevant for when Next.js is symlinked e.g. in the Next.js monorepo\n sourceURL.includes('next/dist') ||\n sourceURL.startsWith('node:')\n )\n}\n\ntype IgnoredSources = Array<{ url: string; ignored: boolean }>\n\ntype SourceAttributes = {\n sourcePosition: NullableMappedPosition\n sourceContent: string | null\n}\n\ntype Source =\n | {\n type: 'file'\n sourceMap: BasicSourceMapPayload\n ignoredSources: IgnoredSources\n moduleURL: string\n }\n | {\n type: 'bundle'\n sourceMap: BasicSourceMapPayload\n ignoredSources: IgnoredSources\n compilation: webpack.Compilation\n moduleId: string\n moduleURL: string\n }\n\nfunction getModuleById(\n id: string | undefined,\n compilation: webpack.Compilation\n) {\n const { chunkGraph, modules } = compilation\n\n return [...modules].find((module) => chunkGraph.getModuleId(module) === id)\n}\n\nfunction findModuleNotFoundFromError(errorMessage: string | undefined) {\n return errorMessage?.match(/'([^']+)' module/)?.[1]\n}\n\nfunction getSourcePath(source: string) {\n if (source.startsWith('file://')) {\n return fileURLToPath(source)\n }\n return source.replace(/^(webpack:\\/\\/\\/|webpack:\\/\\/|webpack:\\/\\/_N_E\\/)/, '')\n}\n\n/**\n * @returns 1-based lines and 0-based columns\n */\nasync function findOriginalSourcePositionAndContent(\n sourceMap: ModernSourceMapPayload,\n position: { line1: number | null; column1: number | null }\n): Promise<SourceAttributes | null> {\n let consumer: SourceMapConsumer\n try {\n consumer = await new SourceMapConsumer(sourceMap)\n } catch (cause) {\n console.error(\n new Error(\n `${sourceMap.file}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n )\n return null\n }\n\n try {\n const sourcePosition = consumer.originalPositionFor({\n line: position.line1 ?? 1,\n // 0-based columns out requires 0-based columns in.\n column: (position.column1 ?? 1) - 1,\n })\n\n if (!sourcePosition.source) {\n return null\n }\n\n const sourceContent: string | null =\n consumer.sourceContentFor(\n sourcePosition.source,\n /* returnNullOnMissing */ true\n ) ?? null\n\n return {\n sourcePosition,\n sourceContent,\n }\n } finally {\n consumer.destroy()\n }\n}\n\nexport function getIgnoredSources(\n sourceMap: RawSourceMap & { ignoreList?: number[] }\n): IgnoredSources {\n const ignoreList = new Set<number>(sourceMap.ignoreList ?? [])\n const moduleFilenames = sourceMap?.sources ?? []\n\n for (let index = 0; index < moduleFilenames.length; index++) {\n // bundlerFilePath case: webpack://./app/page.tsx\n const webpackSourceURL = moduleFilenames[index]\n // Format the path to the normal file path\n const formattedFilePath = formatFrameSourceFile(webpackSourceURL)\n if (shouldIgnoreSource(formattedFilePath)) {\n ignoreList.add(index)\n }\n }\n\n const ignoredSources = sourceMap.sources.map((source, index) => {\n return {\n url: source,\n ignored: ignoreList.has(sourceMap.sources.indexOf(source)),\n content: sourceMap.sourcesContent?.[index] ?? null,\n }\n })\n return ignoredSources\n}\n\nfunction isIgnoredSource(\n source: Source,\n sourcePosition: MappedPosition | NullableMappedPosition\n) {\n if (sourcePosition.source == null) {\n return true\n }\n for (const ignoredSource of source.ignoredSources) {\n if (ignoredSource.ignored && ignoredSource.url === sourcePosition.source) {\n return true\n }\n }\n\n return false\n}\n\nfunction findOriginalSourcePositionAndContentFromCompilation(\n moduleId: string | undefined,\n importedModule: string,\n compilation: webpack.Compilation\n): SourceAttributes | null {\n const module = getModuleById(moduleId, compilation)\n return module?.buildInfo?.importLocByPath?.get(importedModule) ?? null\n}\n\nexport async function createOriginalStackFrame({\n ignoredByDefault,\n source,\n rootDirectory,\n frame,\n errorMessage,\n}: {\n /** setting this to true will not consult ignoreList */\n ignoredByDefault: boolean\n source: Source\n rootDirectory: string\n frame: StackFrame\n errorMessage?: string\n}): Promise<OriginalStackFrameResponse | null> {\n const moduleNotFound = findModuleNotFoundFromError(errorMessage)\n const result = await (() => {\n if (moduleNotFound) {\n if (source.type === 'file') {\n return undefined\n }\n\n return findOriginalSourcePositionAndContentFromCompilation(\n source.moduleId,\n moduleNotFound,\n source.compilation\n )\n }\n return findOriginalSourcePositionAndContent(source.sourceMap, frame)\n })()\n\n if (!result) {\n return null\n }\n const { sourcePosition, sourceContent } = result\n\n if (!sourcePosition.source) {\n return null\n }\n\n const ignored =\n ignoredByDefault ||\n isIgnoredSource(source, sourcePosition) ||\n // If the source file is externals, should be excluded even it's not ignored source.\n // e.g. webpack://next/dist/.. needs to be ignored\n shouldIgnoreSource(source.moduleURL)\n\n const sourcePath = getSourcePath(\n // When sourcePosition.source is the loader path the modulePath is generally better.\n (sourcePosition.source!.includes('|')\n ? source.moduleURL\n : sourcePosition.source) || source.moduleURL\n )\n const filePath = path.resolve(rootDirectory, sourcePath)\n const resolvedFilePath = path.relative(rootDirectory, filePath)\n\n const traced: IgnorableStackFrame = {\n file: resolvedFilePath,\n line1: sourcePosition.line,\n column1: sourcePosition.column === null ? null : sourcePosition.column + 1,\n methodName:\n // We ignore the sourcemapped name since it won't be the correct name.\n // The callsite will point to the column of the variable name instead of the\n // name of the enclosing function.\n // TODO(NDX-531): Spy on prepareStackTrace to get the enclosing line number for method name mapping.\n // default is not a valid identifier in JS so webpack uses a custom variable when it's an unnamed default export\n // Resolve it back to `default` for the method name if the source position didn't have the method.\n frame.methodName\n ?.replace('__WEBPACK_DEFAULT_EXPORT__', 'default')\n ?.replace('__webpack_exports__.', ''),\n arguments: [],\n ignored,\n }\n\n return {\n originalStackFrame: traced,\n originalCodeFrame: getOriginalCodeFrame(traced, sourceContent),\n }\n}\n\nasync function getSourceMapFromCompilation(\n id: string,\n compilation: webpack.Compilation\n): Promise<RawSourceMap | undefined> {\n try {\n const module = getModuleById(id, compilation)\n\n if (!module) {\n return undefined\n }\n\n // @ts-expect-error The types for `CodeGenerationResults.get` require a\n // runtime to be passed as second argument, but apparently it also works\n // without it.\n const codeGenerationResult = compilation.codeGenerationResults.get(module)\n const source = codeGenerationResult?.sources.get('javascript')\n\n return source?.map() ?? undefined\n } catch (err) {\n console.error(`Failed to lookup module by ID (\"${id}\"):`, err)\n return undefined\n }\n}\n\nasync function getSource(\n frame: {\n file: string | null\n line1: number | null\n column1: number | null\n },\n options: {\n getCompilations: () => webpack.Compilation[]\n }\n): Promise<Source | undefined> {\n let sourceURL = frame.file ?? ''\n const { getCompilations } = options\n\n sourceURL = devirtualizeReactServerURL(sourceURL)\n\n let nativeSourceMap: SourceMap | undefined\n try {\n nativeSourceMap = findSourceMap(sourceURL)\n } catch (cause) {\n throw new Error(\n `${sourceURL}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n }\n\n if (nativeSourceMap !== undefined) {\n const sourceMapPayload = nativeSourceMap.payload as ModernSourceMapPayload\n return {\n type: 'file',\n sourceMap: findApplicableSourceMapPayload(\n (frame.line1 ?? 1) - 1,\n (frame.column1 ?? 1) - 1,\n sourceMapPayload\n )!,\n\n ignoredSources: getIgnoredSources(\n // @ts-expect-error -- TODO: Support IndexSourceMap\n sourceMapPayload\n ),\n moduleURL: sourceURL,\n }\n }\n\n if (path.isAbsolute(sourceURL)) {\n sourceURL = pathToFileURL(sourceURL).href\n }\n\n if (sourceURL.startsWith('file:')) {\n const sourceMap = await getSourceMapFromFile(sourceURL)\n return sourceMap\n ? {\n type: 'file',\n sourceMap,\n ignoredSources: getIgnoredSources(sourceMap),\n moduleURL: sourceURL,\n }\n : undefined\n }\n\n // webpack-internal:///./src/hello.tsx => ./src/hello.tsx\n // webpack://_N_E/./src/hello.tsx => ./src/hello.tsx\n const moduleId = sourceURL\n .replace(/^(webpack-internal:\\/\\/\\/|webpack:\\/\\/(_N_E\\/)?)/, '')\n .replace(/\\?\\d+$/, '')\n\n // (rsc)/./src/hello.tsx => ./src/hello.tsx\n const moduleURL = moduleId.replace(/^(\\(.*\\)\\/?)/, '')\n\n for (const compilation of getCompilations()) {\n const sourceMap = await getSourceMapFromCompilation(moduleId, compilation)\n\n if (sourceMap) {\n const ignoredSources = getIgnoredSources(sourceMap)\n return {\n type: 'bundle',\n sourceMap,\n compilation,\n moduleId,\n moduleURL,\n ignoredSources,\n }\n }\n }\n\n return undefined\n}\n\nexport async function getOriginalStackFrames({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frames,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n}: {\n isServer: boolean\n isEdgeServer: boolean\n isAppDirectory: boolean\n frames: readonly StackFrame[]\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n rootDirectory: string\n}): Promise<OriginalStackFramesResponse> {\n const frameResponses = await Promise.all(\n frames.map(\n (frame): Promise<OriginalStackFramesResponse[number]> =>\n getOriginalStackFrame({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frame,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n }).then(\n (value) => {\n return {\n status: 'fulfilled',\n value,\n }\n },\n (reason) => {\n return {\n status: 'rejected',\n reason: inspect(reason, { colors: false }),\n }\n }\n )\n )\n )\n\n ignoreListAnonymousStackFramesIfSandwiched(frameResponses)\n\n return frameResponses\n}\n\nasync function getOriginalStackFrame({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frame,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n}: {\n isServer: boolean\n isEdgeServer: boolean\n isAppDirectory: boolean\n frame: StackFrame\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n rootDirectory: string\n}): Promise<OriginalStackFrameResponse> {\n const filename = frame.file ?? ''\n const source = await getSource(frame, {\n getCompilations: () => {\n const compilations: webpack.Compilation[] = []\n\n // Try Client Compilation first. In `pages` we leverage\n // `isClientError` to check. In `app` it depends on if it's a server\n // / client component and when the code throws. E.g. during HTML\n // rendering it's the server/edge compilation.\n if ((!isEdgeServer && !isServer) || isAppDirectory) {\n const compilation = clientStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n // Try Server Compilation. In `pages` this could be something\n // imported in getServerSideProps/getStaticProps as the code for\n // those is tree-shaken. In `app` this finds server components and\n // code that was imported from a server component. It also covers\n // when client component code throws during HTML rendering.\n if (isServer || isAppDirectory) {\n const compilation = serverStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n // Try Edge Server Compilation. Both cases are the same as Server\n // Compilation, main difference is that it covers `runtime: 'edge'`\n // pages/app routes.\n if (isEdgeServer || isAppDirectory) {\n const compilation = edgeServerStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n return compilations\n },\n })\n\n let defaultNormalizedStackFrameLocation = frame.file\n if (\n defaultNormalizedStackFrameLocation !== null &&\n defaultNormalizedStackFrameLocation.startsWith('file://')\n ) {\n defaultNormalizedStackFrameLocation = path.relative(\n rootDirectory,\n fileURLToPath(defaultNormalizedStackFrameLocation)\n )\n }\n // This stack frame is used for the one that couldn't locate the source or source mapped frame\n const defaultStackFrame: IgnorableStackFrame = {\n file: defaultNormalizedStackFrameLocation,\n line1: frame.line1,\n column1: frame.column1,\n methodName: frame.methodName,\n ignored: shouldIgnoreSource(filename),\n arguments: [],\n }\n if (!source) {\n // return original stack frame with no source map\n return {\n originalStackFrame: defaultStackFrame,\n originalCodeFrame: null,\n }\n }\n defaultStackFrame.ignored ||= sourceMapIgnoreListsEverything(source.sourceMap)\n\n const originalStackFrameResponse = await createOriginalStackFrame({\n ignoredByDefault: defaultStackFrame.ignored,\n frame,\n source,\n rootDirectory,\n })\n\n if (!originalStackFrameResponse) {\n return {\n originalStackFrame: defaultStackFrame,\n originalCodeFrame: null,\n }\n }\n\n return originalStackFrameResponse\n}\n\nexport function getOverlayMiddleware(options: {\n rootDirectory: string\n isSrcDir: boolean\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n}) {\n const { rootDirectory, isSrcDir, clientStats, serverStats, edgeServerStats } =\n options\n\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(`http://n${req.url}`)\n\n if (pathname === '/__nextjs_original-stack-frames') {\n if (req.method !== 'POST') {\n return middlewareResponse.badRequest(res)\n }\n\n const body = await new Promise<string>((resolve, reject) => {\n let data = ''\n req.on('data', (chunk) => {\n data += chunk\n })\n req.on('end', () => resolve(data))\n req.on('error', reject)\n })\n\n try {\n const { frames, isServer, isEdgeServer, isAppDirectory } = JSON.parse(\n body\n ) as OriginalStackFramesRequest\n\n return middlewareResponse.json(\n res,\n await getOriginalStackFrames({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frames,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n })\n )\n } catch (err) {\n return middlewareResponse.badRequest(res)\n }\n } else if (pathname === '/__nextjs_launch-editor') {\n const frame = {\n file: searchParams.get('file') as string,\n methodName: searchParams.get('methodName') as string,\n line1: parseInt(searchParams.get('line1') ?? '1', 10) || 1,\n column1: parseInt(searchParams.get('column1') ?? '1', 10) || 1,\n arguments: searchParams.getAll('arguments').filter(Boolean),\n } satisfies StackFrame\n\n if (!frame.file) return middlewareResponse.badRequest(res)\n\n let openEditorResult\n const isAppRelativePath = searchParams.get('isAppRelativePath') === '1'\n if (isAppRelativePath) {\n const relativeFilePath = searchParams.get('file') || ''\n const appPath = path.join(\n 'app',\n isSrcDir ? 'src' : '',\n relativeFilePath\n )\n openEditorResult = await openFileInEditor(appPath, 1, 1, rootDirectory)\n } else {\n // TODO: How do we differentiate layers and actual file paths with round brackets?\n // frame files may start with their webpack layer, like (middleware)/middleware.js\n const filePath = frame.file.replace(/^\\([^)]+\\)\\//, '')\n openEditorResult = await openFileInEditor(\n filePath,\n frame.line1,\n frame.column1 ?? 1,\n rootDirectory\n )\n }\n if (openEditorResult.error) {\n console.error('Failed to launch editor:', openEditorResult.error)\n return middlewareResponse.internalServerError(\n res,\n openEditorResult.error\n )\n }\n if (!openEditorResult.found) {\n return middlewareResponse.notFound(res)\n }\n return middlewareResponse.noContent(res)\n }\n\n return next()\n }\n}\n\nexport function getSourceMapMiddleware(options: {\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n}) {\n const { clientStats, serverStats, edgeServerStats } = options\n\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(`http://n${req.url}`)\n\n if (pathname !== '/__nextjs_source-map') {\n return next()\n }\n\n const filename = searchParams.get('filename')\n\n if (!filename) {\n return middlewareResponse.badRequest(res)\n }\n\n let source: Source | undefined\n\n try {\n source = await getSource(\n {\n file: filename,\n // Webpack doesn't use Index Source Maps\n line1: null,\n column1: null,\n },\n {\n getCompilations: () => {\n const compilations: webpack.Compilation[] = []\n\n for (const stats of [\n clientStats(),\n serverStats(),\n edgeServerStats(),\n ]) {\n if (stats?.compilation) {\n compilations.push(stats.compilation)\n }\n }\n\n return compilations\n },\n }\n )\n } catch (error) {\n return middlewareResponse.internalServerError(res, error)\n }\n\n if (!source) {\n return middlewareResponse.noContent(res)\n }\n\n return middlewareResponse.json(res, source.sourceMap)\n }\n}\n"],"names":["createOriginalStackFrame","getIgnoredSources","getOriginalStackFrames","getOverlayMiddleware","getSourceMapMiddleware","shouldIgnoreSource","sourceURL","includes","startsWith","getModuleById","id","compilation","chunkGraph","modules","find","module","getModuleId","findModuleNotFoundFromError","errorMessage","match","getSourcePath","source","fileURLToPath","replace","findOriginalSourcePositionAndContent","sourceMap","position","consumer","SourceMapConsumer","cause","console","error","Error","file","sourcePosition","originalPositionFor","line","line1","column","column1","sourceContent","sourceContentFor","destroy","ignoreList","Set","moduleFilenames","sources","index","length","webpackSourceURL","formattedFilePath","formatFrameSourceFile","add","ignoredSources","map","url","ignored","has","indexOf","content","sourcesContent","isIgnoredSource","ignoredSource","findOriginalSourcePositionAndContentFromCompilation","moduleId","importedModule","buildInfo","importLocByPath","get","ignoredByDefault","rootDirectory","frame","moduleNotFound","result","type","undefined","moduleURL","sourcePath","filePath","path","resolve","resolvedFilePath","relative","traced","methodName","arguments","originalStackFrame","originalCodeFrame","getOriginalCodeFrame","getSourceMapFromCompilation","codeGenerationResult","codeGenerationResults","err","getSource","options","getCompilations","devirtualizeReactServerURL","nativeSourceMap","findSourceMap","sourceMapPayload","payload","findApplicableSourceMapPayload","isAbsolute","pathToFileURL","href","getSourceMapFromFile","isServer","isEdgeServer","isAppDirectory","frames","clientStats","serverStats","edgeServerStats","frameResponses","Promise","all","getOriginalStackFrame","then","value","status","reason","inspect","colors","ignoreListAnonymousStackFramesIfSandwiched","filename","compilations","push","defaultNormalizedStackFrameLocation","defaultStackFrame","sourceMapIgnoreListsEverything","originalStackFrameResponse","isSrcDir","req","res","next","pathname","searchParams","URL","method","middlewareResponse","badRequest","body","reject","data","on","chunk","JSON","parse","json","parseInt","getAll","filter","Boolean","openEditorResult","isAppRelativePath","relativeFilePath","appPath","join","openFileInEditor","internalServerError","found","notFound","noContent","stats"],"mappings":"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","ignoreList":[0]}
|
|
1
|
+
{"version":3,"sources":["../../../src/server/dev/middleware-webpack.ts"],"sourcesContent":["import { findSourceMap, type SourceMap } from '../../lib/module-loader-adapter'\nimport path from 'path'\nimport { fileURLToPath, pathToFileURL } from 'url'\nimport { SourceMapConsumer } from 'next/dist/compiled/source-map08'\nimport { getSourceMapFromFile } from './get-source-map-from-file'\nimport {\n devirtualizeReactServerURL,\n findApplicableSourceMapPayload,\n sourceMapIgnoreListsEverything,\n type BasicSourceMapPayload,\n type ModernSourceMapPayload,\n} from '../lib/source-maps'\nimport { openFileInEditor } from '../../next-devtools/server/launch-editor'\nimport {\n getOriginalCodeFrame,\n ignoreListAnonymousStackFramesIfSandwiched,\n type StackFrame,\n type IgnorableStackFrame,\n type OriginalStackFrameResponse,\n type OriginalStackFramesRequest,\n type OriginalStackFramesResponse,\n} from '../../next-devtools/server/shared'\nimport { middlewareResponse } from '../../next-devtools/server/middleware-response'\n\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type webpack from 'webpack'\nimport type {\n NullableMappedPosition,\n RawSourceMap,\n} from 'next/dist/compiled/source-map08'\nimport { formatFrameSourceFile } from '../../next-devtools/shared/webpack-module-path'\nimport type { MappedPosition } from 'source-map'\nimport { inspect } from 'util'\n\nfunction shouldIgnoreSource(sourceURL: string): boolean {\n return (\n sourceURL.includes('node_modules') ||\n // Only relevant for when Next.js is symlinked e.g. in the Next.js monorepo\n sourceURL.includes('next/dist') ||\n sourceURL.startsWith('node:')\n )\n}\n\ntype IgnoredSources = Array<{ url: string; ignored: boolean }>\n\ntype SourceAttributes = {\n sourcePosition: NullableMappedPosition\n sourceContent: string | null\n}\n\ntype Source =\n | {\n type: 'file'\n sourceMap: BasicSourceMapPayload\n ignoredSources: IgnoredSources\n moduleURL: string\n }\n | {\n type: 'bundle'\n sourceMap: BasicSourceMapPayload\n ignoredSources: IgnoredSources\n compilation: webpack.Compilation\n moduleId: string\n moduleURL: string\n }\n\nfunction getModuleById(\n id: string | undefined,\n compilation: webpack.Compilation\n) {\n const { chunkGraph, modules } = compilation\n\n return [...modules].find((module) => chunkGraph.getModuleId(module) === id)\n}\n\nfunction findModuleNotFoundFromError(errorMessage: string | undefined) {\n return errorMessage?.match(/'([^']+)' module/)?.[1]\n}\n\nfunction getSourcePath(source: string) {\n if (source.startsWith('file://')) {\n return fileURLToPath(source)\n }\n return source.replace(/^(webpack:\\/\\/\\/|webpack:\\/\\/|webpack:\\/\\/_N_E\\/)/, '')\n}\n\n/**\n * @returns 1-based lines and 0-based columns\n */\nasync function findOriginalSourcePositionAndContent(\n sourceMap: ModernSourceMapPayload,\n position: { line1: number | null; column1: number | null }\n): Promise<SourceAttributes | null> {\n let consumer: SourceMapConsumer\n try {\n consumer = await new SourceMapConsumer(sourceMap)\n } catch (cause) {\n console.error(\n new Error(\n `${sourceMap.file}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n )\n return null\n }\n\n try {\n const sourcePosition = consumer.originalPositionFor({\n line: position.line1 ?? 1,\n // 0-based columns out requires 0-based columns in.\n column: (position.column1 ?? 1) - 1,\n })\n\n if (!sourcePosition.source) {\n return null\n }\n\n const sourceContent: string | null =\n consumer.sourceContentFor(\n sourcePosition.source,\n /* returnNullOnMissing */ true\n ) ?? null\n\n return {\n sourcePosition,\n sourceContent,\n }\n } finally {\n consumer.destroy()\n }\n}\n\nexport function getIgnoredSources(\n sourceMap: RawSourceMap & { ignoreList?: number[] }\n): IgnoredSources {\n const ignoreList = new Set<number>(sourceMap.ignoreList ?? [])\n const moduleFilenames = sourceMap?.sources ?? []\n\n for (let index = 0; index < moduleFilenames.length; index++) {\n // bundlerFilePath case: webpack://./app/page.tsx\n const webpackSourceURL = moduleFilenames[index]\n // Format the path to the normal file path\n const formattedFilePath = formatFrameSourceFile(webpackSourceURL)\n if (shouldIgnoreSource(formattedFilePath)) {\n ignoreList.add(index)\n }\n }\n\n const ignoredSources = sourceMap.sources.map((source, index) => {\n return {\n url: source,\n ignored: ignoreList.has(sourceMap.sources.indexOf(source)),\n content: sourceMap.sourcesContent?.[index] ?? null,\n }\n })\n return ignoredSources\n}\n\nfunction isIgnoredSource(\n source: Source,\n sourcePosition: MappedPosition | NullableMappedPosition\n) {\n if (sourcePosition.source == null) {\n return true\n }\n for (const ignoredSource of source.ignoredSources) {\n if (ignoredSource.ignored && ignoredSource.url === sourcePosition.source) {\n return true\n }\n }\n\n return false\n}\n\nfunction findOriginalSourcePositionAndContentFromCompilation(\n moduleId: string | undefined,\n importedModule: string,\n compilation: webpack.Compilation\n): SourceAttributes | null {\n const module = getModuleById(moduleId, compilation)\n return module?.buildInfo?.importLocByPath?.get(importedModule) ?? null\n}\n\nexport async function createOriginalStackFrame({\n ignoredByDefault,\n source,\n rootDirectory,\n frame,\n errorMessage,\n}: {\n /** setting this to true will not consult ignoreList */\n ignoredByDefault: boolean\n source: Source\n rootDirectory: string\n frame: StackFrame\n errorMessage?: string\n}): Promise<OriginalStackFrameResponse | null> {\n const moduleNotFound = findModuleNotFoundFromError(errorMessage)\n const result = await (() => {\n if (moduleNotFound) {\n if (source.type === 'file') {\n return undefined\n }\n\n return findOriginalSourcePositionAndContentFromCompilation(\n source.moduleId,\n moduleNotFound,\n source.compilation\n )\n }\n return findOriginalSourcePositionAndContent(source.sourceMap, frame)\n })()\n\n if (!result) {\n return null\n }\n const { sourcePosition, sourceContent } = result\n\n if (!sourcePosition.source) {\n return null\n }\n\n const ignored =\n ignoredByDefault ||\n isIgnoredSource(source, sourcePosition) ||\n // If the source file is externals, should be excluded even it's not ignored source.\n // e.g. webpack://next/dist/.. needs to be ignored\n shouldIgnoreSource(source.moduleURL)\n\n const sourcePath = getSourcePath(\n // When sourcePosition.source is the loader path the modulePath is generally better.\n (sourcePosition.source!.includes('|')\n ? source.moduleURL\n : sourcePosition.source) || source.moduleURL\n )\n const filePath = path.resolve(rootDirectory, sourcePath)\n const resolvedFilePath = path.relative(rootDirectory, filePath)\n\n const traced: IgnorableStackFrame = {\n file: resolvedFilePath,\n line1: sourcePosition.line,\n column1: sourcePosition.column === null ? null : sourcePosition.column + 1,\n methodName:\n // We ignore the sourcemapped name since it won't be the correct name.\n // The callsite will point to the column of the variable name instead of the\n // name of the enclosing function.\n // TODO(NDX-531): Spy on prepareStackTrace to get the enclosing line number for method name mapping.\n // default is not a valid identifier in JS so webpack uses a custom variable when it's an unnamed default export\n // Resolve it back to `default` for the method name if the source position didn't have the method.\n frame.methodName\n ?.replace('__WEBPACK_DEFAULT_EXPORT__', 'default')\n ?.replace('__webpack_exports__.', ''),\n arguments: [],\n ignored,\n }\n\n return {\n originalStackFrame: traced,\n originalCodeFrame: getOriginalCodeFrame(traced, sourceContent),\n }\n}\n\nasync function getSourceMapFromCompilation(\n id: string,\n compilation: webpack.Compilation\n): Promise<RawSourceMap | undefined> {\n try {\n const module = getModuleById(id, compilation)\n\n if (!module) {\n return undefined\n }\n\n // @ts-expect-error The types for `CodeGenerationResults.get` require a\n // runtime to be passed as second argument, but apparently it also works\n // without it.\n const codeGenerationResult = compilation.codeGenerationResults.get(module)\n const source = codeGenerationResult?.sources.get('javascript')\n\n return source?.map() ?? undefined\n } catch (err) {\n console.error(`Failed to lookup module by ID (\"${id}\"):`, err)\n return undefined\n }\n}\n\nasync function getSource(\n frame: {\n file: string | null\n line1: number | null\n column1: number | null\n },\n options: {\n getCompilations: () => webpack.Compilation[]\n }\n): Promise<Source | undefined> {\n let sourceURL = frame.file ?? ''\n const { getCompilations } = options\n\n sourceURL = devirtualizeReactServerURL(sourceURL)\n\n let nativeSourceMap: SourceMap | undefined\n try {\n nativeSourceMap = findSourceMap(sourceURL)\n } catch (cause) {\n throw new Error(\n `${sourceURL}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n }\n\n if (nativeSourceMap !== undefined) {\n const sourceMapPayload = nativeSourceMap.payload as ModernSourceMapPayload\n return {\n type: 'file',\n sourceMap: findApplicableSourceMapPayload(\n (frame.line1 ?? 1) - 1,\n (frame.column1 ?? 1) - 1,\n sourceMapPayload\n )!,\n\n ignoredSources: getIgnoredSources(\n // @ts-expect-error -- TODO: Support IndexSourceMap\n sourceMapPayload\n ),\n moduleURL: sourceURL,\n }\n }\n\n if (path.isAbsolute(sourceURL)) {\n sourceURL = pathToFileURL(sourceURL).href\n }\n\n if (sourceURL.startsWith('file:')) {\n const sourceMap = await getSourceMapFromFile(sourceURL)\n return sourceMap\n ? {\n type: 'file',\n sourceMap,\n ignoredSources: getIgnoredSources(sourceMap),\n moduleURL: sourceURL,\n }\n : undefined\n }\n\n // webpack-internal:///./src/hello.tsx => ./src/hello.tsx\n // webpack://_N_E/./src/hello.tsx => ./src/hello.tsx\n const moduleId = sourceURL\n .replace(/^(webpack-internal:\\/\\/\\/|webpack:\\/\\/(_N_E\\/)?)/, '')\n .replace(/\\?\\d+$/, '')\n\n // (rsc)/./src/hello.tsx => ./src/hello.tsx\n const moduleURL = moduleId.replace(/^(\\(.*\\)\\/?)/, '')\n\n for (const compilation of getCompilations()) {\n const sourceMap = await getSourceMapFromCompilation(moduleId, compilation)\n\n if (sourceMap) {\n const ignoredSources = getIgnoredSources(sourceMap)\n return {\n type: 'bundle',\n sourceMap,\n compilation,\n moduleId,\n moduleURL,\n ignoredSources,\n }\n }\n }\n\n return undefined\n}\n\nexport async function getOriginalStackFrames({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frames,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n}: {\n isServer: boolean\n isEdgeServer: boolean\n isAppDirectory: boolean\n frames: readonly StackFrame[]\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n rootDirectory: string\n}): Promise<OriginalStackFramesResponse> {\n const frameResponses = await Promise.all(\n frames.map(\n (frame): Promise<OriginalStackFramesResponse[number]> =>\n getOriginalStackFrame({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frame,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n }).then(\n (value) => {\n return {\n status: 'fulfilled',\n value,\n }\n },\n (reason) => {\n let reasonStr: string\n try {\n reasonStr = inspect(reason, { colors: false })\n } catch {\n // Bun compatibility: inspect may throw on certain objects\n reasonStr = String(reason)\n }\n return {\n status: 'rejected',\n reason: reasonStr,\n }\n }\n )\n )\n )\n\n ignoreListAnonymousStackFramesIfSandwiched(frameResponses)\n\n return frameResponses\n}\n\nasync function getOriginalStackFrame({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frame,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n}: {\n isServer: boolean\n isEdgeServer: boolean\n isAppDirectory: boolean\n frame: StackFrame\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n rootDirectory: string\n}): Promise<OriginalStackFrameResponse> {\n const filename = frame.file ?? ''\n const source = await getSource(frame, {\n getCompilations: () => {\n const compilations: webpack.Compilation[] = []\n\n // Try Client Compilation first. In `pages` we leverage\n // `isClientError` to check. In `app` it depends on if it's a server\n // / client component and when the code throws. E.g. during HTML\n // rendering it's the server/edge compilation.\n if ((!isEdgeServer && !isServer) || isAppDirectory) {\n const compilation = clientStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n // Try Server Compilation. In `pages` this could be something\n // imported in getServerSideProps/getStaticProps as the code for\n // those is tree-shaken. In `app` this finds server components and\n // code that was imported from a server component. It also covers\n // when client component code throws during HTML rendering.\n if (isServer || isAppDirectory) {\n const compilation = serverStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n // Try Edge Server Compilation. Both cases are the same as Server\n // Compilation, main difference is that it covers `runtime: 'edge'`\n // pages/app routes.\n if (isEdgeServer || isAppDirectory) {\n const compilation = edgeServerStats()?.compilation\n\n if (compilation) {\n compilations.push(compilation)\n }\n }\n\n return compilations\n },\n })\n\n let defaultNormalizedStackFrameLocation = frame.file\n if (\n defaultNormalizedStackFrameLocation !== null &&\n defaultNormalizedStackFrameLocation.startsWith('file://')\n ) {\n defaultNormalizedStackFrameLocation = path.relative(\n rootDirectory,\n fileURLToPath(defaultNormalizedStackFrameLocation)\n )\n }\n // This stack frame is used for the one that couldn't locate the source or source mapped frame\n const defaultStackFrame: IgnorableStackFrame = {\n file: defaultNormalizedStackFrameLocation,\n line1: frame.line1,\n column1: frame.column1,\n methodName: frame.methodName,\n ignored: shouldIgnoreSource(filename),\n arguments: [],\n }\n if (!source) {\n // return original stack frame with no source map\n return {\n originalStackFrame: defaultStackFrame,\n originalCodeFrame: null,\n }\n }\n defaultStackFrame.ignored ||= sourceMapIgnoreListsEverything(source.sourceMap)\n\n const originalStackFrameResponse = await createOriginalStackFrame({\n ignoredByDefault: defaultStackFrame.ignored,\n frame,\n source,\n rootDirectory,\n })\n\n if (!originalStackFrameResponse) {\n return {\n originalStackFrame: defaultStackFrame,\n originalCodeFrame: null,\n }\n }\n\n return originalStackFrameResponse\n}\n\nexport function getOverlayMiddleware(options: {\n rootDirectory: string\n isSrcDir: boolean\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n}) {\n const { rootDirectory, isSrcDir, clientStats, serverStats, edgeServerStats } =\n options\n\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(`http://n${req.url}`)\n\n if (pathname === '/__nextjs_original-stack-frames') {\n if (req.method !== 'POST') {\n return middlewareResponse.badRequest(res)\n }\n\n const body = await new Promise<string>((resolve, reject) => {\n let data = ''\n req.on('data', (chunk) => {\n data += chunk\n })\n req.on('end', () => resolve(data))\n req.on('error', reject)\n })\n\n try {\n const { frames, isServer, isEdgeServer, isAppDirectory } = JSON.parse(\n body\n ) as OriginalStackFramesRequest\n\n return middlewareResponse.json(\n res,\n await getOriginalStackFrames({\n isServer,\n isEdgeServer,\n isAppDirectory,\n frames,\n clientStats,\n serverStats,\n edgeServerStats,\n rootDirectory,\n })\n )\n } catch (err) {\n return middlewareResponse.badRequest(res)\n }\n } else if (pathname === '/__nextjs_launch-editor') {\n const frame = {\n file: searchParams.get('file') as string,\n methodName: searchParams.get('methodName') as string,\n line1: parseInt(searchParams.get('line1') ?? '1', 10) || 1,\n column1: parseInt(searchParams.get('column1') ?? '1', 10) || 1,\n arguments: searchParams.getAll('arguments').filter(Boolean),\n } satisfies StackFrame\n\n if (!frame.file) return middlewareResponse.badRequest(res)\n\n let openEditorResult\n const isAppRelativePath = searchParams.get('isAppRelativePath') === '1'\n if (isAppRelativePath) {\n const relativeFilePath = searchParams.get('file') || ''\n const appPath = path.join(\n 'app',\n isSrcDir ? 'src' : '',\n relativeFilePath\n )\n openEditorResult = await openFileInEditor(appPath, 1, 1, rootDirectory)\n } else {\n // TODO: How do we differentiate layers and actual file paths with round brackets?\n // frame files may start with their webpack layer, like (middleware)/middleware.js\n const filePath = frame.file.replace(/^\\([^)]+\\)\\//, '')\n openEditorResult = await openFileInEditor(\n filePath,\n frame.line1,\n frame.column1 ?? 1,\n rootDirectory\n )\n }\n if (openEditorResult.error) {\n console.error('Failed to launch editor:', openEditorResult.error)\n return middlewareResponse.internalServerError(\n res,\n openEditorResult.error\n )\n }\n if (!openEditorResult.found) {\n return middlewareResponse.notFound(res)\n }\n return middlewareResponse.noContent(res)\n }\n\n return next()\n }\n}\n\nexport function getSourceMapMiddleware(options: {\n clientStats: () => webpack.Stats | null\n serverStats: () => webpack.Stats | null\n edgeServerStats: () => webpack.Stats | null\n}) {\n const { clientStats, serverStats, edgeServerStats } = options\n\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(`http://n${req.url}`)\n\n if (pathname !== '/__nextjs_source-map') {\n return next()\n }\n\n const filename = searchParams.get('filename')\n\n if (!filename) {\n return middlewareResponse.badRequest(res)\n }\n\n let source: Source | undefined\n\n try {\n source = await getSource(\n {\n file: filename,\n // Webpack doesn't use Index Source Maps\n line1: null,\n column1: null,\n },\n {\n getCompilations: () => {\n const compilations: webpack.Compilation[] = []\n\n for (const stats of [\n clientStats(),\n serverStats(),\n edgeServerStats(),\n ]) {\n if (stats?.compilation) {\n compilations.push(stats.compilation)\n }\n }\n\n return compilations\n },\n }\n )\n } catch (error) {\n return middlewareResponse.internalServerError(res, error)\n }\n\n if (!source) {\n return middlewareResponse.noContent(res)\n }\n\n return middlewareResponse.json(res, source.sourceMap)\n }\n}\n"],"names":["createOriginalStackFrame","getIgnoredSources","getOriginalStackFrames","getOverlayMiddleware","getSourceMapMiddleware","shouldIgnoreSource","sourceURL","includes","startsWith","getModuleById","id","compilation","chunkGraph","modules","find","module","getModuleId","findModuleNotFoundFromError","errorMessage","match","getSourcePath","source","fileURLToPath","replace","findOriginalSourcePositionAndContent","sourceMap","position","consumer","SourceMapConsumer","cause","console","error","Error","file","sourcePosition","originalPositionFor","line","line1","column","column1","sourceContent","sourceContentFor","destroy","ignoreList","Set","moduleFilenames","sources","index","length","webpackSourceURL","formattedFilePath","formatFrameSourceFile","add","ignoredSources","map","url","ignored","has","indexOf","content","sourcesContent","isIgnoredSource","ignoredSource","findOriginalSourcePositionAndContentFromCompilation","moduleId","importedModule","buildInfo","importLocByPath","get","ignoredByDefault","rootDirectory","frame","moduleNotFound","result","type","undefined","moduleURL","sourcePath","filePath","path","resolve","resolvedFilePath","relative","traced","methodName","arguments","originalStackFrame","originalCodeFrame","getOriginalCodeFrame","getSourceMapFromCompilation","codeGenerationResult","codeGenerationResults","err","getSource","options","getCompilations","devirtualizeReactServerURL","nativeSourceMap","findSourceMap","sourceMapPayload","payload","findApplicableSourceMapPayload","isAbsolute","pathToFileURL","href","getSourceMapFromFile","isServer","isEdgeServer","isAppDirectory","frames","clientStats","serverStats","edgeServerStats","frameResponses","Promise","all","getOriginalStackFrame","then","value","status","reason","reasonStr","inspect","colors","String","ignoreListAnonymousStackFramesIfSandwiched","filename","compilations","push","defaultNormalizedStackFrameLocation","defaultStackFrame","sourceMapIgnoreListsEverything","originalStackFrameResponse","isSrcDir","req","res","next","pathname","searchParams","URL","method","middlewareResponse","badRequest","body","reject","data","on","chunk","JSON","parse","json","parseInt","getAll","filter","Boolean","openEditorResult","isAppRelativePath","relativeFilePath","appPath","join","openFileInEditor","internalServerError","found","notFound","noContent","stats"],"mappings":"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","ignoreList":[0]}
|
|
@@ -88,7 +88,7 @@ function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures, logBu
|
|
|
88
88
|
if (parts.length > 0) {
|
|
89
89
|
versionSuffix = ` (${parts.join(', ')})`;
|
|
90
90
|
}
|
|
91
|
-
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.0.
|
|
91
|
+
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.0.8"}`))}${versionSuffix}`);
|
|
92
92
|
if (appUrl) {
|
|
93
93
|
_log.bootstrap(`- Local: ${appUrl}`);
|
|
94
94
|
}
|
|
@@ -178,7 +178,7 @@ async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup, server
|
|
|
178
178
|
async function startServer(serverOptions) {
|
|
179
179
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
|
180
180
|
let { port } = serverOptions;
|
|
181
|
-
process.title = `next-server (v${"16.0.
|
|
181
|
+
process.title = `next-server (v${"16.0.8"})`;
|
|
182
182
|
let handlersReady = ()=>{};
|
|
183
183
|
let handlersError = ()=>{};
|
|
184
184
|
let handlersPromise = new Promise((resolve, reject)=>{
|
|
@@ -21,7 +21,7 @@ _export(exports, {
|
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
function isStableBuild() {
|
|
24
|
-
return !"16.0.
|
|
24
|
+
return !"16.0.8"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
|
|
25
25
|
}
|
|
26
26
|
class CanaryOnlyConfigError extends Error {
|
|
27
27
|
constructor(arg){
|
|
@@ -11,11 +11,11 @@ Object.defineProperty(exports, "eventCliSessionStopped", {
|
|
|
11
11
|
const EVENT_VERSION = 'NEXT_CLI_SESSION_STOPPED';
|
|
12
12
|
function eventCliSessionStopped(event) {
|
|
13
13
|
// This should be an invariant, if it fails our build tooling is broken.
|
|
14
|
-
if (typeof "16.0.
|
|
14
|
+
if (typeof "16.0.8" !== 'string') {
|
|
15
15
|
return [];
|
|
16
16
|
}
|
|
17
17
|
const payload = {
|
|
18
|
-
nextVersion: "16.0.
|
|
18
|
+
nextVersion: "16.0.8",
|
|
19
19
|
nodeVersion: process.version,
|
|
20
20
|
cliCommand: event.cliCommand,
|
|
21
21
|
durationMilliseconds: event.durationMilliseconds,
|
|
@@ -12,12 +12,12 @@ const EVENT_VERSION = 'NEXT_CLI_SESSION_STARTED';
|
|
|
12
12
|
function eventCliSession(nextConfig, event) {
|
|
13
13
|
var _nextConfig_experimental_staleTimes, _nextConfig_experimental_staleTimes1, _nextConfig_reactCompiler, _nextConfig_reactCompiler1;
|
|
14
14
|
// This should be an invariant, if it fails our build tooling is broken.
|
|
15
|
-
if (typeof "16.0.
|
|
15
|
+
if (typeof "16.0.8" !== 'string') {
|
|
16
16
|
return [];
|
|
17
17
|
}
|
|
18
18
|
const { images, i18n } = nextConfig || {};
|
|
19
19
|
const payload = {
|
|
20
|
-
nextVersion: "16.0.
|
|
20
|
+
nextVersion: "16.0.8",
|
|
21
21
|
nodeVersion: process.version,
|
|
22
22
|
cliCommand: event.cliCommand,
|
|
23
23
|
isSrcDir: event.isSrcDir,
|