@openuiai/next 15.6.0-bun.26 → 15.6.0-bun.27
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/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/lib/typescript/writeConfigurationDefaults.js +5 -0
- package/dist/esm/lib/typescript/writeConfigurationDefaults.js.map +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/lib/app-info-log.js +1 -1
- package/dist/esm/server/lib/start-server.js +1 -1
- package/dist/esm/shared/lib/canary-only.js +1 -1
- package/dist/lib/typescript/writeConfigurationDefaults.js +5 -0
- package/dist/lib/typescript/writeConfigurationDefaults.js.map +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/shared/lib/canary-only.js +1 -1
- package/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/telemetry/events/session-stopped.js +2 -2
- package/dist/telemetry/events/version.js +2 -2
- package/package.json +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${"15.6.0-bun.
|
|
82
|
+
}).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"15.6.0-bun.26"}`, '-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-lint', 'Disables linting.').option('--no-mangling', 'Disables mangling.').option('--profile', 'Enables production profiling for React.').option('--experimental-app-only', 'Builds only App Router routes.').option('--turbo', 'Starts development mode using Turbopack.').option('--turbopack', 'Starts development mode using Turbopack.').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
|
@@ -369,7 +369,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
|
|
|
369
369
|
const nextBuildSpan = (0, _trace.trace)('next-build', undefined, {
|
|
370
370
|
buildMode: experimentalBuildMode,
|
|
371
371
|
isTurboBuild: String(isTurbopack),
|
|
372
|
-
version: "15.6.0-bun.
|
|
372
|
+
version: "15.6.0-bun.26"
|
|
373
373
|
});
|
|
374
374
|
_buildcontext.NextBuildContext.nextBuildSpan = nextBuildSpan;
|
|
375
375
|
_buildcontext.NextBuildContext.dir = dir;
|
|
@@ -848,7 +848,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
|
|
|
848
848
|
// Files outside of the distDir can be "type": "module"
|
|
849
849
|
await writeFileUtf8(_path.default.join(distDir, 'package.json'), '{"type": "commonjs"}');
|
|
850
850
|
// These are written to distDir, so they need to come after creating and cleaning distDr.
|
|
851
|
-
await (0, _builddiagnostics.recordFrameworkVersion)("15.6.0-bun.
|
|
851
|
+
await (0, _builddiagnostics.recordFrameworkVersion)("15.6.0-bun.26");
|
|
852
852
|
await (0, _builddiagnostics.updateBuildDiagnostics)({
|
|
853
853
|
buildStage: 'start'
|
|
854
854
|
});
|
|
@@ -2493,7 +2493,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
|
|
|
2493
2493
|
distDir,
|
|
2494
2494
|
config,
|
|
2495
2495
|
staticPages,
|
|
2496
|
-
nextVersion: "15.6.0-bun.
|
|
2496
|
+
nextVersion: "15.6.0-bun.26",
|
|
2497
2497
|
tracingRoot: outputFileTracingRoot,
|
|
2498
2498
|
hasNodeMiddleware,
|
|
2499
2499
|
hasInstrumentationHook,
|
package/dist/build/swc/index.js
CHANGED
|
@@ -131,7 +131,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
131
131
|
}
|
|
132
132
|
return newObj;
|
|
133
133
|
}
|
|
134
|
-
const nextVersion = "15.6.0-bun.
|
|
134
|
+
const nextVersion = "15.6.0-bun.26";
|
|
135
135
|
const ArchName = (0, _os.arch)();
|
|
136
136
|
const PlatformName = (0, _os.platform)();
|
|
137
137
|
function infoLog(...args) {
|
|
@@ -1678,7 +1678,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
|
1678
1678
|
isClient && new _copyfileplugin.CopyFilePlugin({
|
|
1679
1679
|
// file path to build output of `@next/polyfill-nomodule`
|
|
1680
1680
|
filePath: require.resolve('./polyfills/polyfill-nomodule'),
|
|
1681
|
-
cacheKey: "15.6.0-bun.
|
|
1681
|
+
cacheKey: "15.6.0-bun.26",
|
|
1682
1682
|
name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
|
|
1683
1683
|
minimize: false,
|
|
1684
1684
|
info: {
|
|
@@ -1859,7 +1859,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
|
1859
1859
|
// - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
|
|
1860
1860
|
// - Next.js version
|
|
1861
1861
|
// - next.config.js keys that affect compilation
|
|
1862
|
-
version: `${__dirname}|${"15.6.0-bun.
|
|
1862
|
+
version: `${__dirname}|${"15.6.0-bun.26"}|${configVars}`,
|
|
1863
1863
|
cacheDirectory: _path.default.join(distDir, 'cache', 'webpack'),
|
|
1864
1864
|
// For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
|
|
1865
1865
|
// 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 = "15.6.0-bun.
|
|
18
|
+
const version = "15.6.0-bun.26";
|
|
19
19
|
window.next = {
|
|
20
20
|
version,
|
|
21
21
|
appDir: true
|
package/dist/client/index.js
CHANGED
|
@@ -61,7 +61,7 @@ const _hooksclientcontextsharedruntime = require("../shared/lib/hooks-client-con
|
|
|
61
61
|
const _onrecoverableerror = require("./react-client-callbacks/on-recoverable-error");
|
|
62
62
|
const _tracer = /*#__PURE__*/ _interop_require_default._(require("./tracing/tracer"));
|
|
63
63
|
const _isnextroutererror = require("./components/is-next-router-error");
|
|
64
|
-
const version = "15.6.0-bun.
|
|
64
|
+
const version = "15.6.0-bun.26";
|
|
65
65
|
let router;
|
|
66
66
|
const emitter = (0, _mitt.default)();
|
|
67
67
|
const looseToArray = (input)=>[].slice.call(input);
|
package/dist/esm/build/index.js
CHANGED
|
@@ -301,7 +301,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
|
301
301
|
const nextBuildSpan = trace('next-build', undefined, {
|
|
302
302
|
buildMode: experimentalBuildMode,
|
|
303
303
|
isTurboBuild: String(isTurbopack),
|
|
304
|
-
version: "15.6.0-bun.
|
|
304
|
+
version: "15.6.0-bun.26"
|
|
305
305
|
});
|
|
306
306
|
NextBuildContext.nextBuildSpan = nextBuildSpan;
|
|
307
307
|
NextBuildContext.dir = dir;
|
|
@@ -780,7 +780,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
|
780
780
|
// Files outside of the distDir can be "type": "module"
|
|
781
781
|
await writeFileUtf8(path.join(distDir, 'package.json'), '{"type": "commonjs"}');
|
|
782
782
|
// These are written to distDir, so they need to come after creating and cleaning distDr.
|
|
783
|
-
await recordFrameworkVersion("15.6.0-bun.
|
|
783
|
+
await recordFrameworkVersion("15.6.0-bun.26");
|
|
784
784
|
await updateBuildDiagnostics({
|
|
785
785
|
buildStage: 'start'
|
|
786
786
|
});
|
|
@@ -2425,7 +2425,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
|
2425
2425
|
distDir,
|
|
2426
2426
|
config,
|
|
2427
2427
|
staticPages,
|
|
2428
|
-
nextVersion: "15.6.0-bun.
|
|
2428
|
+
nextVersion: "15.6.0-bun.26",
|
|
2429
2429
|
tracingRoot: outputFileTracingRoot,
|
|
2430
2430
|
hasNodeMiddleware,
|
|
2431
2431
|
hasInstrumentationHook,
|
|
@@ -11,7 +11,7 @@ import { isDeepStrictEqual } from 'util';
|
|
|
11
11
|
import { getDefineEnv } from '../define-env';
|
|
12
12
|
import { getReactCompilerLoader } from '../get-babel-loader-config';
|
|
13
13
|
import { throwTurbopackInternalError } from '../../shared/lib/turbopack/internal-error';
|
|
14
|
-
const nextVersion = "15.6.0-bun.
|
|
14
|
+
const nextVersion = "15.6.0-bun.26";
|
|
15
15
|
const ArchName = arch();
|
|
16
16
|
const PlatformName = platform();
|
|
17
17
|
function infoLog(...args) {
|
|
@@ -1575,7 +1575,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
|
|
|
1575
1575
|
isClient && new CopyFilePlugin({
|
|
1576
1576
|
// file path to build output of `@next/polyfill-nomodule`
|
|
1577
1577
|
filePath: require.resolve('./polyfills/polyfill-nomodule'),
|
|
1578
|
-
cacheKey: "15.6.0-bun.
|
|
1578
|
+
cacheKey: "15.6.0-bun.26",
|
|
1579
1579
|
name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
|
|
1580
1580
|
minimize: false,
|
|
1581
1581
|
info: {
|
|
@@ -1756,7 +1756,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
|
|
|
1756
1756
|
// - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
|
|
1757
1757
|
// - Next.js version
|
|
1758
1758
|
// - next.config.js keys that affect compilation
|
|
1759
|
-
version: `${__dirname}|${"15.6.0-bun.
|
|
1759
|
+
version: `${__dirname}|${"15.6.0-bun.26"}|${configVars}`,
|
|
1760
1760
|
cacheDirectory: path.join(distDir, 'cache', 'webpack'),
|
|
1761
1761
|
// For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
|
|
1762
1762
|
// So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* - next/script with `beforeInteractive` strategy
|
|
6
6
|
*/ import { getAssetPrefix } from './asset-prefix';
|
|
7
7
|
import { setAttributesFromProps } from './set-attributes-from-props';
|
|
8
|
-
const version = "15.6.0-bun.
|
|
8
|
+
const version = "15.6.0-bun.26";
|
|
9
9
|
window.next = {
|
|
10
10
|
version,
|
|
11
11
|
appDir: true
|
package/dist/esm/client/index.js
CHANGED
|
@@ -26,7 +26,7 @@ import { SearchParamsContext, PathParamsContext } from '../shared/lib/hooks-clie
|
|
|
26
26
|
import { onRecoverableError } from './react-client-callbacks/on-recoverable-error';
|
|
27
27
|
import tracer from './tracing/tracer';
|
|
28
28
|
import { isNextRouterError } from './components/is-next-router-error';
|
|
29
|
-
export const version = "15.6.0-bun.
|
|
29
|
+
export const version = "15.6.0-bun.26";
|
|
30
30
|
export let router;
|
|
31
31
|
export const emitter = mitt();
|
|
32
32
|
const looseToArray = (input)=>[].slice.call(input);
|
|
@@ -227,6 +227,11 @@ export async function writeConfigurationDefaults(ts, tsConfigPath, isFirstTimeSe
|
|
|
227
227
|
if (!userTsConfig.compilerOptions) {
|
|
228
228
|
userTsConfig.compilerOptions = {};
|
|
229
229
|
}
|
|
230
|
+
// baseUrl is required for path mappings to work correctly
|
|
231
|
+
if (!userTsConfig.compilerOptions.baseUrl) {
|
|
232
|
+
userTsConfig.compilerOptions.baseUrl = '.';
|
|
233
|
+
suggestedActions.push(cyan('baseUrl') + ' was set to ' + bold(`"."`) + ' (required for path mappings)');
|
|
234
|
+
}
|
|
230
235
|
if (!userTsConfig.compilerOptions.paths) {
|
|
231
236
|
userTsConfig.compilerOptions.paths = {};
|
|
232
237
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/typescript/writeConfigurationDefaults.ts"],"sourcesContent":["import { promises as fs } from 'fs'\nimport { bold, cyan, white } from '../picocolors'\nimport * as CommentJson from 'next/dist/compiled/comment-json'\nimport semver from 'next/dist/compiled/semver'\nimport os from 'os'\nimport path from 'path'\nimport type { CompilerOptions } from 'typescript'\nimport { getTypeScriptConfiguration } from './getTypeScriptConfiguration'\nimport * as Log from '../../build/output/log'\n\n// Read package name dynamically to support forked packages\n// From dist/lib/typescript, go up 3 levels to reach package root\nconst PKG_NAME = require(path.join(__dirname, '../../../package.json')).name\n\ntype DesiredCompilerOptionsShape = {\n [K in keyof CompilerOptions]:\n | { suggested: any; reason?: string }\n | {\n parsedValue?: any\n parsedValues?: Array<any>\n value: any\n reason: string\n }\n}\n\nfunction getDesiredCompilerOptions(\n ts: typeof import('typescript'),\n tsOptions?: CompilerOptions\n): DesiredCompilerOptionsShape {\n const o: DesiredCompilerOptionsShape = {\n target: {\n suggested: 'ES2017',\n reason:\n 'For top-level `await`. Note: Next.js only polyfills for the esmodules target.',\n },\n // These are suggested values and will be set when not present in the\n // tsconfig.json\n lib: { suggested: ['dom', 'dom.iterable', 'esnext'] },\n allowJs: { suggested: true },\n skipLibCheck: { suggested: true },\n strict: { suggested: false },\n ...(semver.lt(ts.version, '5.0.0')\n ? { forceConsistentCasingInFileNames: { suggested: true } }\n : undefined),\n noEmit: { suggested: true },\n ...(semver.gte(ts.version, '4.4.2')\n ? { incremental: { suggested: true } }\n : undefined),\n\n // These values are required and cannot be changed by the user\n // Keep this in sync with the webpack config\n // 'parsedValue' matches the output value from ts.parseJsonConfigFileContent()\n module: {\n parsedValue: ts.ModuleKind.ESNext,\n // All of these values work:\n parsedValues: [\n semver.gte(ts.version, '5.4.0') && (ts.ModuleKind as any).Preserve,\n ts.ModuleKind.ES2020,\n ts.ModuleKind.ESNext,\n ts.ModuleKind.CommonJS,\n ts.ModuleKind.AMD,\n ts.ModuleKind.NodeNext,\n ts.ModuleKind.Node16,\n ],\n value: 'esnext',\n reason: 'for dynamic import() support',\n },\n // TODO: Semver check not needed once Next.js repo uses 5.4.\n ...(semver.gte(ts.version, '5.4.0') &&\n tsOptions?.module === (ts.ModuleKind as any).Preserve\n ? {\n // TypeScript 5.4 introduced `Preserve`. Using `Preserve` implies\n // - `moduleResolution` is `Bundler`\n // - `esModuleInterop` is `true`\n // - `resolveJsonModule` is `true`\n // This means that if the user is using Preserve, they don't need these options\n }\n : {\n esModuleInterop: {\n value: true,\n reason: 'requirement for SWC / babel',\n },\n moduleResolution: {\n // In TypeScript 5.0, `NodeJs` has renamed to `Node10`\n parsedValue:\n ts.ModuleResolutionKind.Bundler ??\n ts.ModuleResolutionKind.NodeNext ??\n (ts.ModuleResolutionKind as any).Node10 ??\n ts.ModuleResolutionKind.NodeJs,\n // All of these values work:\n parsedValues: [\n (ts.ModuleResolutionKind as any).Node10 ??\n ts.ModuleResolutionKind.NodeJs,\n // only newer TypeScript versions have this field, it\n // will be filtered for new versions of TypeScript\n (ts.ModuleResolutionKind as any).Node12,\n ts.ModuleResolutionKind.Node16,\n ts.ModuleResolutionKind.NodeNext,\n ts.ModuleResolutionKind.Bundler,\n ].filter((val) => typeof val !== 'undefined'),\n value: 'node',\n reason: 'to match webpack resolution',\n },\n resolveJsonModule: {\n value: true,\n reason: 'to match webpack resolution',\n },\n }),\n ...(tsOptions?.verbatimModuleSyntax === true\n ? undefined\n : {\n isolatedModules: {\n value: true,\n reason: 'requirement for SWC / Babel',\n },\n }),\n jsx: {\n parsedValue: ts.JsxEmit.ReactJSX,\n value: 'react-jsx',\n reason: 'next.js uses the React automatic runtime',\n },\n }\n\n return o\n}\n\nexport function getRequiredConfiguration(\n ts: typeof import('typescript')\n): Partial<import('typescript').CompilerOptions> {\n const res: Partial<import('typescript').CompilerOptions> = {}\n\n const desiredCompilerOptions = getDesiredCompilerOptions(ts)\n for (const optionKey of Object.keys(desiredCompilerOptions)) {\n const ev = desiredCompilerOptions[optionKey]\n if (!('value' in ev)) {\n continue\n }\n res[optionKey] = ev.parsedValue ?? ev.value\n }\n\n return res\n}\n\nconst localDevTestFilesExcludeAction =\n 'NEXT_PRIVATE_LOCAL_DEV_TEST_FILES_EXCLUDE'\n\nexport async function writeConfigurationDefaults(\n ts: typeof import('typescript'),\n tsConfigPath: string,\n isFirstTimeSetup: boolean,\n hasAppDir: boolean,\n distDir: string,\n hasPagesDir: boolean\n): Promise<void> {\n if (isFirstTimeSetup) {\n await fs.writeFile(tsConfigPath, '{}' + os.EOL)\n }\n\n const { options: tsOptions, raw: rawConfig } =\n await getTypeScriptConfiguration(ts, tsConfigPath, true)\n\n const userTsConfigContent = await fs.readFile(tsConfigPath, {\n encoding: 'utf8',\n })\n const userTsConfig = CommentJson.parse(userTsConfigContent)\n if (userTsConfig.compilerOptions == null && !('extends' in rawConfig)) {\n userTsConfig.compilerOptions = {}\n isFirstTimeSetup = true\n }\n\n const desiredCompilerOptions = getDesiredCompilerOptions(ts, tsOptions)\n\n const suggestedActions: string[] = []\n const requiredActions: string[] = []\n for (const optionKey of Object.keys(desiredCompilerOptions)) {\n const check = desiredCompilerOptions[optionKey]\n if ('suggested' in check) {\n if (!(optionKey in tsOptions)) {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n userTsConfig.compilerOptions[optionKey] = check.suggested\n suggestedActions.push(\n cyan(optionKey) +\n ' was set to ' +\n bold(check.suggested) +\n (check.reason ? ` (${check.reason})` : '')\n )\n }\n } else if ('value' in check) {\n const ev = tsOptions[optionKey]\n if (\n !('parsedValues' in check\n ? check.parsedValues?.includes(ev)\n : 'parsedValue' in check\n ? check.parsedValue === ev\n : check.value === ev)\n ) {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n userTsConfig.compilerOptions[optionKey] = check.value\n requiredActions.push(\n cyan(optionKey) +\n ' was set to ' +\n bold(check.value) +\n ` (${check.reason})`\n )\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _: never = check\n }\n }\n\n const nextAppTypes = `${distDir}/types/**/*.ts`\n\n if (!('include' in rawConfig)) {\n userTsConfig.include = hasAppDir\n ? ['next-env.d.ts', nextAppTypes, '**/*.ts', '**/*.tsx']\n : ['next-env.d.ts', '**/*.ts', '**/*.tsx']\n suggestedActions.push(\n cyan('include') +\n ' was set to ' +\n bold(\n hasAppDir\n ? `['next-env.d.ts', '${nextAppTypes}', '**/*.ts', '**/*.tsx']`\n : `['next-env.d.ts', '**/*.ts', '**/*.tsx']`\n )\n )\n } else if (hasAppDir && !rawConfig.include.includes(nextAppTypes)) {\n if (!Array.isArray(userTsConfig.include)) {\n userTsConfig.include = []\n }\n // rawConfig will resolve all extends and include paths (ex: tsconfig.json, tsconfig.base.json, etc.)\n // if it doesn't match userTsConfig then update the userTsConfig to add the\n // rawConfig's includes in addition to nextAppTypes\n if (\n rawConfig.include.length !== userTsConfig.include.length ||\n JSON.stringify(rawConfig.include.sort()) !==\n JSON.stringify(userTsConfig.include.sort())\n ) {\n userTsConfig.include.push(...rawConfig.include, nextAppTypes)\n suggestedActions.push(\n cyan('include') +\n ' was set to ' +\n bold(\n `[${[...rawConfig.include, nextAppTypes]\n .map((i) => `'${i}'`)\n .join(', ')}]`\n )\n )\n } else {\n userTsConfig.include.push(nextAppTypes)\n suggestedActions.push(\n cyan('include') + ' was updated to add ' + bold(`'${nextAppTypes}'`)\n )\n }\n }\n\n // Enable the Next.js typescript plugin.\n if (hasAppDir) {\n // Check if the config or the resolved config has the plugin already.\n const plugins = [\n ...(Array.isArray(tsOptions.plugins) ? tsOptions.plugins : []),\n ...(userTsConfig.compilerOptions &&\n Array.isArray(userTsConfig.compilerOptions.plugins)\n ? userTsConfig.compilerOptions.plugins\n : []),\n ]\n const hasNextPlugin = plugins.some(\n ({ name }: { name: string }) => name === 'next'\n )\n\n // If the TS config extends on another config, we can't add the `plugin` field\n // because that will override the parent config's plugins.\n // Instead we have to show a message to the user to add the plugin manually.\n if (\n !userTsConfig.compilerOptions ||\n (plugins.length &&\n !hasNextPlugin &&\n 'extends' in rawConfig &&\n (!rawConfig.compilerOptions || !rawConfig.compilerOptions.plugins))\n ) {\n Log.info(\n `\\nYour ${bold(\n 'tsconfig.json'\n )} extends another configuration, which means we cannot add the Next.js TypeScript plugin automatically. To improve your development experience, we recommend adding the Next.js plugin (\\`${cyan(\n '\"plugins\": [{ \"name\": \"next\" }]'\n )}\\`) manually to your TypeScript configuration. Learn more: https://nextjs.org/docs/app/api-reference/config/typescript#the-typescript-plugin\\n`\n )\n } else if (!hasNextPlugin) {\n if (!('plugins' in userTsConfig.compilerOptions)) {\n userTsConfig.compilerOptions.plugins = []\n }\n userTsConfig.compilerOptions.plugins.push({ name: 'next' })\n suggestedActions.push(\n cyan('plugins') + ' was updated to add ' + bold(`{ name: 'next' }`)\n )\n }\n\n // If `strict` is set to `false` and `strictNullChecks` is set to `false`,\n // then set `strictNullChecks` to `true`.\n if (\n hasPagesDir &&\n hasAppDir &&\n !tsOptions.strict &&\n !('strictNullChecks' in tsOptions)\n ) {\n userTsConfig.compilerOptions.strictNullChecks = true\n suggestedActions.push(\n cyan('strictNullChecks') + ' was set to ' + bold(`true`)\n )\n }\n }\n\n // If the package name is not 'next', add a path mapping to redirect 'next' imports\n // to the actual package name. This is necessary for forked packages.\n if (PKG_NAME !== 'next') {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n if (!userTsConfig.compilerOptions.paths) {\n userTsConfig.compilerOptions.paths = {}\n }\n\n // Add path mapping for 'next' and 'next/*' to redirect to the actual package\n const nextMapping = `${PKG_NAME}`\n const nextWildcardMapping = `${PKG_NAME}/*`\n\n if (!userTsConfig.compilerOptions.paths['next']) {\n userTsConfig.compilerOptions.paths['next'] = [nextMapping]\n suggestedActions.push(\n cyan('paths[\"next\"]') + ' was set to ' + bold(`[\"${nextMapping}\"]`) +\n ' (for forked package support)'\n )\n }\n\n if (!userTsConfig.compilerOptions.paths['next/*']) {\n userTsConfig.compilerOptions.paths['next/*'] = [nextWildcardMapping]\n suggestedActions.push(\n cyan('paths[\"next/*\"]') + ' was set to ' + bold(`[\"${nextWildcardMapping}\"]`) +\n ' (for forked package support)'\n )\n }\n }\n\n if (!('exclude' in rawConfig)) {\n userTsConfig.exclude = ['node_modules']\n suggestedActions.push(\n cyan('exclude') + ' was set to ' + bold(`['node_modules']`)\n )\n }\n\n // During local development inside Next.js repo, exclude the test files coverage by the local tsconfig\n if (process.env.NEXT_PRIVATE_LOCAL_DEV && userTsConfig.exclude) {\n const tsGlob = '**/*.test.ts'\n const tsxGlob = '**/*.test.tsx'\n let hasUpdates = false\n if (!userTsConfig.exclude.includes(tsGlob)) {\n userTsConfig.exclude.push(tsGlob)\n hasUpdates = true\n }\n if (!userTsConfig.exclude.includes(tsxGlob)) {\n userTsConfig.exclude.push(tsxGlob)\n hasUpdates = true\n }\n\n if (hasUpdates) {\n requiredActions.push(localDevTestFilesExcludeAction)\n }\n }\n\n if (suggestedActions.length < 1 && requiredActions.length < 1) {\n return\n }\n\n await fs.writeFile(\n tsConfigPath,\n CommentJson.stringify(userTsConfig, null, 2) + os.EOL\n )\n\n Log.info('')\n if (isFirstTimeSetup) {\n Log.info(\n `We detected TypeScript in your project and created a ${cyan(\n 'tsconfig.json'\n )} file for you.`\n )\n return\n }\n\n Log.info(\n `We detected TypeScript in your project and reconfigured your ${cyan(\n 'tsconfig.json'\n )} file for you.${\n userTsConfig.compilerOptions?.strict\n ? ''\n : ` Strict-mode is set to ${cyan('false')} by default.`\n }`\n )\n\n if (suggestedActions.length) {\n Log.info(\n `The following suggested values were added to your ${cyan(\n 'tsconfig.json'\n )}. These values ${cyan('can be changed')} to fit your project's needs:\\n`\n )\n\n suggestedActions.forEach((action) => Log.info(`\\t- ${action}`))\n\n Log.info('')\n }\n\n const requiredActionsToBeLogged = process.env.NEXT_PRIVATE_LOCAL_DEV\n ? requiredActions.filter(\n (action) => action !== localDevTestFilesExcludeAction\n )\n : requiredActions\n\n if (requiredActionsToBeLogged.length) {\n Log.info(\n `The following ${white('mandatory changes')} were made to your ${cyan(\n 'tsconfig.json'\n )}:\\n`\n )\n\n requiredActionsToBeLogged.forEach((action) => Log.info(`\\t- ${action}`))\n\n Log.info('')\n }\n}\n"],"names":["promises","fs","bold","cyan","white","CommentJson","semver","os","path","getTypeScriptConfiguration","Log","PKG_NAME","require","join","__dirname","name","getDesiredCompilerOptions","ts","tsOptions","o","target","suggested","reason","lib","allowJs","skipLibCheck","strict","lt","version","forceConsistentCasingInFileNames","undefined","noEmit","gte","incremental","module","parsedValue","ModuleKind","ESNext","parsedValues","Preserve","ES2020","CommonJS","AMD","NodeNext","Node16","value","esModuleInterop","moduleResolution","ModuleResolutionKind","Bundler","Node10","NodeJs","Node12","filter","val","resolveJsonModule","verbatimModuleSyntax","isolatedModules","jsx","JsxEmit","ReactJSX","getRequiredConfiguration","res","desiredCompilerOptions","optionKey","Object","keys","ev","localDevTestFilesExcludeAction","writeConfigurationDefaults","tsConfigPath","isFirstTimeSetup","hasAppDir","distDir","hasPagesDir","userTsConfig","writeFile","EOL","options","raw","rawConfig","userTsConfigContent","readFile","encoding","parse","compilerOptions","suggestedActions","requiredActions","check","push","includes","_","nextAppTypes","include","Array","isArray","length","JSON","stringify","sort","map","i","plugins","hasNextPlugin","some","info","strictNullChecks","paths","nextMapping","nextWildcardMapping","exclude","process","env","NEXT_PRIVATE_LOCAL_DEV","tsGlob","tsxGlob","hasUpdates","forEach","action","requiredActionsToBeLogged"],"mappings":"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","ignoreList":[0]}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/typescript/writeConfigurationDefaults.ts"],"sourcesContent":["import { promises as fs } from 'fs'\nimport { bold, cyan, white } from '../picocolors'\nimport * as CommentJson from 'next/dist/compiled/comment-json'\nimport semver from 'next/dist/compiled/semver'\nimport os from 'os'\nimport path from 'path'\nimport type { CompilerOptions } from 'typescript'\nimport { getTypeScriptConfiguration } from './getTypeScriptConfiguration'\nimport * as Log from '../../build/output/log'\n\n// Read package name dynamically to support forked packages\n// From dist/lib/typescript, go up 3 levels to reach package root\nconst PKG_NAME = require(path.join(__dirname, '../../../package.json')).name\n\ntype DesiredCompilerOptionsShape = {\n [K in keyof CompilerOptions]:\n | { suggested: any; reason?: string }\n | {\n parsedValue?: any\n parsedValues?: Array<any>\n value: any\n reason: string\n }\n}\n\nfunction getDesiredCompilerOptions(\n ts: typeof import('typescript'),\n tsOptions?: CompilerOptions\n): DesiredCompilerOptionsShape {\n const o: DesiredCompilerOptionsShape = {\n target: {\n suggested: 'ES2017',\n reason:\n 'For top-level `await`. Note: Next.js only polyfills for the esmodules target.',\n },\n // These are suggested values and will be set when not present in the\n // tsconfig.json\n lib: { suggested: ['dom', 'dom.iterable', 'esnext'] },\n allowJs: { suggested: true },\n skipLibCheck: { suggested: true },\n strict: { suggested: false },\n ...(semver.lt(ts.version, '5.0.0')\n ? { forceConsistentCasingInFileNames: { suggested: true } }\n : undefined),\n noEmit: { suggested: true },\n ...(semver.gte(ts.version, '4.4.2')\n ? { incremental: { suggested: true } }\n : undefined),\n\n // These values are required and cannot be changed by the user\n // Keep this in sync with the webpack config\n // 'parsedValue' matches the output value from ts.parseJsonConfigFileContent()\n module: {\n parsedValue: ts.ModuleKind.ESNext,\n // All of these values work:\n parsedValues: [\n semver.gte(ts.version, '5.4.0') && (ts.ModuleKind as any).Preserve,\n ts.ModuleKind.ES2020,\n ts.ModuleKind.ESNext,\n ts.ModuleKind.CommonJS,\n ts.ModuleKind.AMD,\n ts.ModuleKind.NodeNext,\n ts.ModuleKind.Node16,\n ],\n value: 'esnext',\n reason: 'for dynamic import() support',\n },\n // TODO: Semver check not needed once Next.js repo uses 5.4.\n ...(semver.gte(ts.version, '5.4.0') &&\n tsOptions?.module === (ts.ModuleKind as any).Preserve\n ? {\n // TypeScript 5.4 introduced `Preserve`. Using `Preserve` implies\n // - `moduleResolution` is `Bundler`\n // - `esModuleInterop` is `true`\n // - `resolveJsonModule` is `true`\n // This means that if the user is using Preserve, they don't need these options\n }\n : {\n esModuleInterop: {\n value: true,\n reason: 'requirement for SWC / babel',\n },\n moduleResolution: {\n // In TypeScript 5.0, `NodeJs` has renamed to `Node10`\n parsedValue:\n ts.ModuleResolutionKind.Bundler ??\n ts.ModuleResolutionKind.NodeNext ??\n (ts.ModuleResolutionKind as any).Node10 ??\n ts.ModuleResolutionKind.NodeJs,\n // All of these values work:\n parsedValues: [\n (ts.ModuleResolutionKind as any).Node10 ??\n ts.ModuleResolutionKind.NodeJs,\n // only newer TypeScript versions have this field, it\n // will be filtered for new versions of TypeScript\n (ts.ModuleResolutionKind as any).Node12,\n ts.ModuleResolutionKind.Node16,\n ts.ModuleResolutionKind.NodeNext,\n ts.ModuleResolutionKind.Bundler,\n ].filter((val) => typeof val !== 'undefined'),\n value: 'node',\n reason: 'to match webpack resolution',\n },\n resolveJsonModule: {\n value: true,\n reason: 'to match webpack resolution',\n },\n }),\n ...(tsOptions?.verbatimModuleSyntax === true\n ? undefined\n : {\n isolatedModules: {\n value: true,\n reason: 'requirement for SWC / Babel',\n },\n }),\n jsx: {\n parsedValue: ts.JsxEmit.ReactJSX,\n value: 'react-jsx',\n reason: 'next.js uses the React automatic runtime',\n },\n }\n\n return o\n}\n\nexport function getRequiredConfiguration(\n ts: typeof import('typescript')\n): Partial<import('typescript').CompilerOptions> {\n const res: Partial<import('typescript').CompilerOptions> = {}\n\n const desiredCompilerOptions = getDesiredCompilerOptions(ts)\n for (const optionKey of Object.keys(desiredCompilerOptions)) {\n const ev = desiredCompilerOptions[optionKey]\n if (!('value' in ev)) {\n continue\n }\n res[optionKey] = ev.parsedValue ?? ev.value\n }\n\n return res\n}\n\nconst localDevTestFilesExcludeAction =\n 'NEXT_PRIVATE_LOCAL_DEV_TEST_FILES_EXCLUDE'\n\nexport async function writeConfigurationDefaults(\n ts: typeof import('typescript'),\n tsConfigPath: string,\n isFirstTimeSetup: boolean,\n hasAppDir: boolean,\n distDir: string,\n hasPagesDir: boolean\n): Promise<void> {\n if (isFirstTimeSetup) {\n await fs.writeFile(tsConfigPath, '{}' + os.EOL)\n }\n\n const { options: tsOptions, raw: rawConfig } =\n await getTypeScriptConfiguration(ts, tsConfigPath, true)\n\n const userTsConfigContent = await fs.readFile(tsConfigPath, {\n encoding: 'utf8',\n })\n const userTsConfig = CommentJson.parse(userTsConfigContent)\n if (userTsConfig.compilerOptions == null && !('extends' in rawConfig)) {\n userTsConfig.compilerOptions = {}\n isFirstTimeSetup = true\n }\n\n const desiredCompilerOptions = getDesiredCompilerOptions(ts, tsOptions)\n\n const suggestedActions: string[] = []\n const requiredActions: string[] = []\n for (const optionKey of Object.keys(desiredCompilerOptions)) {\n const check = desiredCompilerOptions[optionKey]\n if ('suggested' in check) {\n if (!(optionKey in tsOptions)) {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n userTsConfig.compilerOptions[optionKey] = check.suggested\n suggestedActions.push(\n cyan(optionKey) +\n ' was set to ' +\n bold(check.suggested) +\n (check.reason ? ` (${check.reason})` : '')\n )\n }\n } else if ('value' in check) {\n const ev = tsOptions[optionKey]\n if (\n !('parsedValues' in check\n ? check.parsedValues?.includes(ev)\n : 'parsedValue' in check\n ? check.parsedValue === ev\n : check.value === ev)\n ) {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n userTsConfig.compilerOptions[optionKey] = check.value\n requiredActions.push(\n cyan(optionKey) +\n ' was set to ' +\n bold(check.value) +\n ` (${check.reason})`\n )\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _: never = check\n }\n }\n\n const nextAppTypes = `${distDir}/types/**/*.ts`\n\n if (!('include' in rawConfig)) {\n userTsConfig.include = hasAppDir\n ? ['next-env.d.ts', nextAppTypes, '**/*.ts', '**/*.tsx']\n : ['next-env.d.ts', '**/*.ts', '**/*.tsx']\n suggestedActions.push(\n cyan('include') +\n ' was set to ' +\n bold(\n hasAppDir\n ? `['next-env.d.ts', '${nextAppTypes}', '**/*.ts', '**/*.tsx']`\n : `['next-env.d.ts', '**/*.ts', '**/*.tsx']`\n )\n )\n } else if (hasAppDir && !rawConfig.include.includes(nextAppTypes)) {\n if (!Array.isArray(userTsConfig.include)) {\n userTsConfig.include = []\n }\n // rawConfig will resolve all extends and include paths (ex: tsconfig.json, tsconfig.base.json, etc.)\n // if it doesn't match userTsConfig then update the userTsConfig to add the\n // rawConfig's includes in addition to nextAppTypes\n if (\n rawConfig.include.length !== userTsConfig.include.length ||\n JSON.stringify(rawConfig.include.sort()) !==\n JSON.stringify(userTsConfig.include.sort())\n ) {\n userTsConfig.include.push(...rawConfig.include, nextAppTypes)\n suggestedActions.push(\n cyan('include') +\n ' was set to ' +\n bold(\n `[${[...rawConfig.include, nextAppTypes]\n .map((i) => `'${i}'`)\n .join(', ')}]`\n )\n )\n } else {\n userTsConfig.include.push(nextAppTypes)\n suggestedActions.push(\n cyan('include') + ' was updated to add ' + bold(`'${nextAppTypes}'`)\n )\n }\n }\n\n // Enable the Next.js typescript plugin.\n if (hasAppDir) {\n // Check if the config or the resolved config has the plugin already.\n const plugins = [\n ...(Array.isArray(tsOptions.plugins) ? tsOptions.plugins : []),\n ...(userTsConfig.compilerOptions &&\n Array.isArray(userTsConfig.compilerOptions.plugins)\n ? userTsConfig.compilerOptions.plugins\n : []),\n ]\n const hasNextPlugin = plugins.some(\n ({ name }: { name: string }) => name === 'next'\n )\n\n // If the TS config extends on another config, we can't add the `plugin` field\n // because that will override the parent config's plugins.\n // Instead we have to show a message to the user to add the plugin manually.\n if (\n !userTsConfig.compilerOptions ||\n (plugins.length &&\n !hasNextPlugin &&\n 'extends' in rawConfig &&\n (!rawConfig.compilerOptions || !rawConfig.compilerOptions.plugins))\n ) {\n Log.info(\n `\\nYour ${bold(\n 'tsconfig.json'\n )} extends another configuration, which means we cannot add the Next.js TypeScript plugin automatically. To improve your development experience, we recommend adding the Next.js plugin (\\`${cyan(\n '\"plugins\": [{ \"name\": \"next\" }]'\n )}\\`) manually to your TypeScript configuration. Learn more: https://nextjs.org/docs/app/api-reference/config/typescript#the-typescript-plugin\\n`\n )\n } else if (!hasNextPlugin) {\n if (!('plugins' in userTsConfig.compilerOptions)) {\n userTsConfig.compilerOptions.plugins = []\n }\n userTsConfig.compilerOptions.plugins.push({ name: 'next' })\n suggestedActions.push(\n cyan('plugins') + ' was updated to add ' + bold(`{ name: 'next' }`)\n )\n }\n\n // If `strict` is set to `false` and `strictNullChecks` is set to `false`,\n // then set `strictNullChecks` to `true`.\n if (\n hasPagesDir &&\n hasAppDir &&\n !tsOptions.strict &&\n !('strictNullChecks' in tsOptions)\n ) {\n userTsConfig.compilerOptions.strictNullChecks = true\n suggestedActions.push(\n cyan('strictNullChecks') + ' was set to ' + bold(`true`)\n )\n }\n }\n\n // If the package name is not 'next', add a path mapping to redirect 'next' imports\n // to the actual package name. This is necessary for forked packages.\n if (PKG_NAME !== 'next') {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n\n // baseUrl is required for path mappings to work correctly\n if (!userTsConfig.compilerOptions.baseUrl) {\n userTsConfig.compilerOptions.baseUrl = '.'\n suggestedActions.push(\n cyan('baseUrl') + ' was set to ' + bold(`\".\"`) +\n ' (required for path mappings)'\n )\n }\n\n if (!userTsConfig.compilerOptions.paths) {\n userTsConfig.compilerOptions.paths = {}\n }\n\n // Add path mapping for 'next' and 'next/*' to redirect to the actual package\n const nextMapping = `${PKG_NAME}`\n const nextWildcardMapping = `${PKG_NAME}/*`\n\n if (!userTsConfig.compilerOptions.paths['next']) {\n userTsConfig.compilerOptions.paths['next'] = [nextMapping]\n suggestedActions.push(\n cyan('paths[\"next\"]') + ' was set to ' + bold(`[\"${nextMapping}\"]`) +\n ' (for forked package support)'\n )\n }\n\n if (!userTsConfig.compilerOptions.paths['next/*']) {\n userTsConfig.compilerOptions.paths['next/*'] = [nextWildcardMapping]\n suggestedActions.push(\n cyan('paths[\"next/*\"]') + ' was set to ' + bold(`[\"${nextWildcardMapping}\"]`) +\n ' (for forked package support)'\n )\n }\n }\n\n if (!('exclude' in rawConfig)) {\n userTsConfig.exclude = ['node_modules']\n suggestedActions.push(\n cyan('exclude') + ' was set to ' + bold(`['node_modules']`)\n )\n }\n\n // During local development inside Next.js repo, exclude the test files coverage by the local tsconfig\n if (process.env.NEXT_PRIVATE_LOCAL_DEV && userTsConfig.exclude) {\n const tsGlob = '**/*.test.ts'\n const tsxGlob = '**/*.test.tsx'\n let hasUpdates = false\n if (!userTsConfig.exclude.includes(tsGlob)) {\n userTsConfig.exclude.push(tsGlob)\n hasUpdates = true\n }\n if (!userTsConfig.exclude.includes(tsxGlob)) {\n userTsConfig.exclude.push(tsxGlob)\n hasUpdates = true\n }\n\n if (hasUpdates) {\n requiredActions.push(localDevTestFilesExcludeAction)\n }\n }\n\n if (suggestedActions.length < 1 && requiredActions.length < 1) {\n return\n }\n\n await fs.writeFile(\n tsConfigPath,\n CommentJson.stringify(userTsConfig, null, 2) + os.EOL\n )\n\n Log.info('')\n if (isFirstTimeSetup) {\n Log.info(\n `We detected TypeScript in your project and created a ${cyan(\n 'tsconfig.json'\n )} file for you.`\n )\n return\n }\n\n Log.info(\n `We detected TypeScript in your project and reconfigured your ${cyan(\n 'tsconfig.json'\n )} file for you.${\n userTsConfig.compilerOptions?.strict\n ? ''\n : ` Strict-mode is set to ${cyan('false')} by default.`\n }`\n )\n\n if (suggestedActions.length) {\n Log.info(\n `The following suggested values were added to your ${cyan(\n 'tsconfig.json'\n )}. These values ${cyan('can be changed')} to fit your project's needs:\\n`\n )\n\n suggestedActions.forEach((action) => Log.info(`\\t- ${action}`))\n\n Log.info('')\n }\n\n const requiredActionsToBeLogged = process.env.NEXT_PRIVATE_LOCAL_DEV\n ? requiredActions.filter(\n (action) => action !== localDevTestFilesExcludeAction\n )\n : requiredActions\n\n if (requiredActionsToBeLogged.length) {\n Log.info(\n `The following ${white('mandatory changes')} were made to your ${cyan(\n 'tsconfig.json'\n )}:\\n`\n )\n\n requiredActionsToBeLogged.forEach((action) => Log.info(`\\t- ${action}`))\n\n Log.info('')\n }\n}\n"],"names":["promises","fs","bold","cyan","white","CommentJson","semver","os","path","getTypeScriptConfiguration","Log","PKG_NAME","require","join","__dirname","name","getDesiredCompilerOptions","ts","tsOptions","o","target","suggested","reason","lib","allowJs","skipLibCheck","strict","lt","version","forceConsistentCasingInFileNames","undefined","noEmit","gte","incremental","module","parsedValue","ModuleKind","ESNext","parsedValues","Preserve","ES2020","CommonJS","AMD","NodeNext","Node16","value","esModuleInterop","moduleResolution","ModuleResolutionKind","Bundler","Node10","NodeJs","Node12","filter","val","resolveJsonModule","verbatimModuleSyntax","isolatedModules","jsx","JsxEmit","ReactJSX","getRequiredConfiguration","res","desiredCompilerOptions","optionKey","Object","keys","ev","localDevTestFilesExcludeAction","writeConfigurationDefaults","tsConfigPath","isFirstTimeSetup","hasAppDir","distDir","hasPagesDir","userTsConfig","writeFile","EOL","options","raw","rawConfig","userTsConfigContent","readFile","encoding","parse","compilerOptions","suggestedActions","requiredActions","check","push","includes","_","nextAppTypes","include","Array","isArray","length","JSON","stringify","sort","map","i","plugins","hasNextPlugin","some","info","strictNullChecks","baseUrl","paths","nextMapping","nextWildcardMapping","exclude","process","env","NEXT_PRIVATE_LOCAL_DEV","tsGlob","tsxGlob","hasUpdates","forEach","action","requiredActionsToBeLogged"],"mappings":"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","ignoreList":[0]}
|
|
@@ -158,7 +158,7 @@ export default class HotReloaderWebpack {
|
|
|
158
158
|
this.previewProps = previewProps;
|
|
159
159
|
this.rewrites = rewrites;
|
|
160
160
|
this.hotReloaderSpan = trace('hot-reloader', undefined, {
|
|
161
|
-
version: "15.6.0-bun.
|
|
161
|
+
version: "15.6.0-bun.26"
|
|
162
162
|
});
|
|
163
163
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
164
164
|
// of the current `next dev` invocation.
|
|
@@ -14,7 +14,7 @@ export function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures
|
|
|
14
14
|
bundlerSuffix = ' (webpack)';
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.6.0-bun.
|
|
17
|
+
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.6.0-bun.26"}`))}${bundlerSuffix}`);
|
|
18
18
|
if (appUrl) {
|
|
19
19
|
Log.bootstrap(`- Local: ${appUrl}`);
|
|
20
20
|
}
|
|
@@ -87,7 +87,7 @@ export async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup,
|
|
|
87
87
|
export async function startServer(serverOptions) {
|
|
88
88
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
|
89
89
|
let { port } = serverOptions;
|
|
90
|
-
process.title = `next-server (v${"15.6.0-bun.
|
|
90
|
+
process.title = `next-server (v${"15.6.0-bun.26"})`;
|
|
91
91
|
let handlersReady = ()=>{};
|
|
92
92
|
let handlersError = ()=>{};
|
|
93
93
|
let handlersPromise = new Promise((resolve, reject)=>{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export function isStableBuild() {
|
|
2
2
|
var _process_env___NEXT_VERSION;
|
|
3
|
-
return !((_process_env___NEXT_VERSION = "15.6.0-bun.
|
|
3
|
+
return !((_process_env___NEXT_VERSION = "15.6.0-bun.26") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
|
|
4
4
|
}
|
|
5
5
|
export class CanaryOnlyError extends Error {
|
|
6
6
|
constructor(arg){
|
|
@@ -295,6 +295,11 @@ async function writeConfigurationDefaults(ts, tsConfigPath, isFirstTimeSetup, ha
|
|
|
295
295
|
if (!userTsConfig.compilerOptions) {
|
|
296
296
|
userTsConfig.compilerOptions = {};
|
|
297
297
|
}
|
|
298
|
+
// baseUrl is required for path mappings to work correctly
|
|
299
|
+
if (!userTsConfig.compilerOptions.baseUrl) {
|
|
300
|
+
userTsConfig.compilerOptions.baseUrl = '.';
|
|
301
|
+
suggestedActions.push((0, _picocolors.cyan)('baseUrl') + ' was set to ' + (0, _picocolors.bold)(`"."`) + ' (required for path mappings)');
|
|
302
|
+
}
|
|
298
303
|
if (!userTsConfig.compilerOptions.paths) {
|
|
299
304
|
userTsConfig.compilerOptions.paths = {};
|
|
300
305
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/typescript/writeConfigurationDefaults.ts"],"sourcesContent":["import { promises as fs } from 'fs'\nimport { bold, cyan, white } from '../picocolors'\nimport * as CommentJson from 'next/dist/compiled/comment-json'\nimport semver from 'next/dist/compiled/semver'\nimport os from 'os'\nimport path from 'path'\nimport type { CompilerOptions } from 'typescript'\nimport { getTypeScriptConfiguration } from './getTypeScriptConfiguration'\nimport * as Log from '../../build/output/log'\n\n// Read package name dynamically to support forked packages\n// From dist/lib/typescript, go up 3 levels to reach package root\nconst PKG_NAME = require(path.join(__dirname, '../../../package.json')).name\n\ntype DesiredCompilerOptionsShape = {\n [K in keyof CompilerOptions]:\n | { suggested: any; reason?: string }\n | {\n parsedValue?: any\n parsedValues?: Array<any>\n value: any\n reason: string\n }\n}\n\nfunction getDesiredCompilerOptions(\n ts: typeof import('typescript'),\n tsOptions?: CompilerOptions\n): DesiredCompilerOptionsShape {\n const o: DesiredCompilerOptionsShape = {\n target: {\n suggested: 'ES2017',\n reason:\n 'For top-level `await`. Note: Next.js only polyfills for the esmodules target.',\n },\n // These are suggested values and will be set when not present in the\n // tsconfig.json\n lib: { suggested: ['dom', 'dom.iterable', 'esnext'] },\n allowJs: { suggested: true },\n skipLibCheck: { suggested: true },\n strict: { suggested: false },\n ...(semver.lt(ts.version, '5.0.0')\n ? { forceConsistentCasingInFileNames: { suggested: true } }\n : undefined),\n noEmit: { suggested: true },\n ...(semver.gte(ts.version, '4.4.2')\n ? { incremental: { suggested: true } }\n : undefined),\n\n // These values are required and cannot be changed by the user\n // Keep this in sync with the webpack config\n // 'parsedValue' matches the output value from ts.parseJsonConfigFileContent()\n module: {\n parsedValue: ts.ModuleKind.ESNext,\n // All of these values work:\n parsedValues: [\n semver.gte(ts.version, '5.4.0') && (ts.ModuleKind as any).Preserve,\n ts.ModuleKind.ES2020,\n ts.ModuleKind.ESNext,\n ts.ModuleKind.CommonJS,\n ts.ModuleKind.AMD,\n ts.ModuleKind.NodeNext,\n ts.ModuleKind.Node16,\n ],\n value: 'esnext',\n reason: 'for dynamic import() support',\n },\n // TODO: Semver check not needed once Next.js repo uses 5.4.\n ...(semver.gte(ts.version, '5.4.0') &&\n tsOptions?.module === (ts.ModuleKind as any).Preserve\n ? {\n // TypeScript 5.4 introduced `Preserve`. Using `Preserve` implies\n // - `moduleResolution` is `Bundler`\n // - `esModuleInterop` is `true`\n // - `resolveJsonModule` is `true`\n // This means that if the user is using Preserve, they don't need these options\n }\n : {\n esModuleInterop: {\n value: true,\n reason: 'requirement for SWC / babel',\n },\n moduleResolution: {\n // In TypeScript 5.0, `NodeJs` has renamed to `Node10`\n parsedValue:\n ts.ModuleResolutionKind.Bundler ??\n ts.ModuleResolutionKind.NodeNext ??\n (ts.ModuleResolutionKind as any).Node10 ??\n ts.ModuleResolutionKind.NodeJs,\n // All of these values work:\n parsedValues: [\n (ts.ModuleResolutionKind as any).Node10 ??\n ts.ModuleResolutionKind.NodeJs,\n // only newer TypeScript versions have this field, it\n // will be filtered for new versions of TypeScript\n (ts.ModuleResolutionKind as any).Node12,\n ts.ModuleResolutionKind.Node16,\n ts.ModuleResolutionKind.NodeNext,\n ts.ModuleResolutionKind.Bundler,\n ].filter((val) => typeof val !== 'undefined'),\n value: 'node',\n reason: 'to match webpack resolution',\n },\n resolveJsonModule: {\n value: true,\n reason: 'to match webpack resolution',\n },\n }),\n ...(tsOptions?.verbatimModuleSyntax === true\n ? undefined\n : {\n isolatedModules: {\n value: true,\n reason: 'requirement for SWC / Babel',\n },\n }),\n jsx: {\n parsedValue: ts.JsxEmit.ReactJSX,\n value: 'react-jsx',\n reason: 'next.js uses the React automatic runtime',\n },\n }\n\n return o\n}\n\nexport function getRequiredConfiguration(\n ts: typeof import('typescript')\n): Partial<import('typescript').CompilerOptions> {\n const res: Partial<import('typescript').CompilerOptions> = {}\n\n const desiredCompilerOptions = getDesiredCompilerOptions(ts)\n for (const optionKey of Object.keys(desiredCompilerOptions)) {\n const ev = desiredCompilerOptions[optionKey]\n if (!('value' in ev)) {\n continue\n }\n res[optionKey] = ev.parsedValue ?? ev.value\n }\n\n return res\n}\n\nconst localDevTestFilesExcludeAction =\n 'NEXT_PRIVATE_LOCAL_DEV_TEST_FILES_EXCLUDE'\n\nexport async function writeConfigurationDefaults(\n ts: typeof import('typescript'),\n tsConfigPath: string,\n isFirstTimeSetup: boolean,\n hasAppDir: boolean,\n distDir: string,\n hasPagesDir: boolean\n): Promise<void> {\n if (isFirstTimeSetup) {\n await fs.writeFile(tsConfigPath, '{}' + os.EOL)\n }\n\n const { options: tsOptions, raw: rawConfig } =\n await getTypeScriptConfiguration(ts, tsConfigPath, true)\n\n const userTsConfigContent = await fs.readFile(tsConfigPath, {\n encoding: 'utf8',\n })\n const userTsConfig = CommentJson.parse(userTsConfigContent)\n if (userTsConfig.compilerOptions == null && !('extends' in rawConfig)) {\n userTsConfig.compilerOptions = {}\n isFirstTimeSetup = true\n }\n\n const desiredCompilerOptions = getDesiredCompilerOptions(ts, tsOptions)\n\n const suggestedActions: string[] = []\n const requiredActions: string[] = []\n for (const optionKey of Object.keys(desiredCompilerOptions)) {\n const check = desiredCompilerOptions[optionKey]\n if ('suggested' in check) {\n if (!(optionKey in tsOptions)) {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n userTsConfig.compilerOptions[optionKey] = check.suggested\n suggestedActions.push(\n cyan(optionKey) +\n ' was set to ' +\n bold(check.suggested) +\n (check.reason ? ` (${check.reason})` : '')\n )\n }\n } else if ('value' in check) {\n const ev = tsOptions[optionKey]\n if (\n !('parsedValues' in check\n ? check.parsedValues?.includes(ev)\n : 'parsedValue' in check\n ? check.parsedValue === ev\n : check.value === ev)\n ) {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n userTsConfig.compilerOptions[optionKey] = check.value\n requiredActions.push(\n cyan(optionKey) +\n ' was set to ' +\n bold(check.value) +\n ` (${check.reason})`\n )\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _: never = check\n }\n }\n\n const nextAppTypes = `${distDir}/types/**/*.ts`\n\n if (!('include' in rawConfig)) {\n userTsConfig.include = hasAppDir\n ? ['next-env.d.ts', nextAppTypes, '**/*.ts', '**/*.tsx']\n : ['next-env.d.ts', '**/*.ts', '**/*.tsx']\n suggestedActions.push(\n cyan('include') +\n ' was set to ' +\n bold(\n hasAppDir\n ? `['next-env.d.ts', '${nextAppTypes}', '**/*.ts', '**/*.tsx']`\n : `['next-env.d.ts', '**/*.ts', '**/*.tsx']`\n )\n )\n } else if (hasAppDir && !rawConfig.include.includes(nextAppTypes)) {\n if (!Array.isArray(userTsConfig.include)) {\n userTsConfig.include = []\n }\n // rawConfig will resolve all extends and include paths (ex: tsconfig.json, tsconfig.base.json, etc.)\n // if it doesn't match userTsConfig then update the userTsConfig to add the\n // rawConfig's includes in addition to nextAppTypes\n if (\n rawConfig.include.length !== userTsConfig.include.length ||\n JSON.stringify(rawConfig.include.sort()) !==\n JSON.stringify(userTsConfig.include.sort())\n ) {\n userTsConfig.include.push(...rawConfig.include, nextAppTypes)\n suggestedActions.push(\n cyan('include') +\n ' was set to ' +\n bold(\n `[${[...rawConfig.include, nextAppTypes]\n .map((i) => `'${i}'`)\n .join(', ')}]`\n )\n )\n } else {\n userTsConfig.include.push(nextAppTypes)\n suggestedActions.push(\n cyan('include') + ' was updated to add ' + bold(`'${nextAppTypes}'`)\n )\n }\n }\n\n // Enable the Next.js typescript plugin.\n if (hasAppDir) {\n // Check if the config or the resolved config has the plugin already.\n const plugins = [\n ...(Array.isArray(tsOptions.plugins) ? tsOptions.plugins : []),\n ...(userTsConfig.compilerOptions &&\n Array.isArray(userTsConfig.compilerOptions.plugins)\n ? userTsConfig.compilerOptions.plugins\n : []),\n ]\n const hasNextPlugin = plugins.some(\n ({ name }: { name: string }) => name === 'next'\n )\n\n // If the TS config extends on another config, we can't add the `plugin` field\n // because that will override the parent config's plugins.\n // Instead we have to show a message to the user to add the plugin manually.\n if (\n !userTsConfig.compilerOptions ||\n (plugins.length &&\n !hasNextPlugin &&\n 'extends' in rawConfig &&\n (!rawConfig.compilerOptions || !rawConfig.compilerOptions.plugins))\n ) {\n Log.info(\n `\\nYour ${bold(\n 'tsconfig.json'\n )} extends another configuration, which means we cannot add the Next.js TypeScript plugin automatically. To improve your development experience, we recommend adding the Next.js plugin (\\`${cyan(\n '\"plugins\": [{ \"name\": \"next\" }]'\n )}\\`) manually to your TypeScript configuration. Learn more: https://nextjs.org/docs/app/api-reference/config/typescript#the-typescript-plugin\\n`\n )\n } else if (!hasNextPlugin) {\n if (!('plugins' in userTsConfig.compilerOptions)) {\n userTsConfig.compilerOptions.plugins = []\n }\n userTsConfig.compilerOptions.plugins.push({ name: 'next' })\n suggestedActions.push(\n cyan('plugins') + ' was updated to add ' + bold(`{ name: 'next' }`)\n )\n }\n\n // If `strict` is set to `false` and `strictNullChecks` is set to `false`,\n // then set `strictNullChecks` to `true`.\n if (\n hasPagesDir &&\n hasAppDir &&\n !tsOptions.strict &&\n !('strictNullChecks' in tsOptions)\n ) {\n userTsConfig.compilerOptions.strictNullChecks = true\n suggestedActions.push(\n cyan('strictNullChecks') + ' was set to ' + bold(`true`)\n )\n }\n }\n\n // If the package name is not 'next', add a path mapping to redirect 'next' imports\n // to the actual package name. This is necessary for forked packages.\n if (PKG_NAME !== 'next') {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n if (!userTsConfig.compilerOptions.paths) {\n userTsConfig.compilerOptions.paths = {}\n }\n\n // Add path mapping for 'next' and 'next/*' to redirect to the actual package\n const nextMapping = `${PKG_NAME}`\n const nextWildcardMapping = `${PKG_NAME}/*`\n\n if (!userTsConfig.compilerOptions.paths['next']) {\n userTsConfig.compilerOptions.paths['next'] = [nextMapping]\n suggestedActions.push(\n cyan('paths[\"next\"]') + ' was set to ' + bold(`[\"${nextMapping}\"]`) +\n ' (for forked package support)'\n )\n }\n\n if (!userTsConfig.compilerOptions.paths['next/*']) {\n userTsConfig.compilerOptions.paths['next/*'] = [nextWildcardMapping]\n suggestedActions.push(\n cyan('paths[\"next/*\"]') + ' was set to ' + bold(`[\"${nextWildcardMapping}\"]`) +\n ' (for forked package support)'\n )\n }\n }\n\n if (!('exclude' in rawConfig)) {\n userTsConfig.exclude = ['node_modules']\n suggestedActions.push(\n cyan('exclude') + ' was set to ' + bold(`['node_modules']`)\n )\n }\n\n // During local development inside Next.js repo, exclude the test files coverage by the local tsconfig\n if (process.env.NEXT_PRIVATE_LOCAL_DEV && userTsConfig.exclude) {\n const tsGlob = '**/*.test.ts'\n const tsxGlob = '**/*.test.tsx'\n let hasUpdates = false\n if (!userTsConfig.exclude.includes(tsGlob)) {\n userTsConfig.exclude.push(tsGlob)\n hasUpdates = true\n }\n if (!userTsConfig.exclude.includes(tsxGlob)) {\n userTsConfig.exclude.push(tsxGlob)\n hasUpdates = true\n }\n\n if (hasUpdates) {\n requiredActions.push(localDevTestFilesExcludeAction)\n }\n }\n\n if (suggestedActions.length < 1 && requiredActions.length < 1) {\n return\n }\n\n await fs.writeFile(\n tsConfigPath,\n CommentJson.stringify(userTsConfig, null, 2) + os.EOL\n )\n\n Log.info('')\n if (isFirstTimeSetup) {\n Log.info(\n `We detected TypeScript in your project and created a ${cyan(\n 'tsconfig.json'\n )} file for you.`\n )\n return\n }\n\n Log.info(\n `We detected TypeScript in your project and reconfigured your ${cyan(\n 'tsconfig.json'\n )} file for you.${\n userTsConfig.compilerOptions?.strict\n ? ''\n : ` Strict-mode is set to ${cyan('false')} by default.`\n }`\n )\n\n if (suggestedActions.length) {\n Log.info(\n `The following suggested values were added to your ${cyan(\n 'tsconfig.json'\n )}. These values ${cyan('can be changed')} to fit your project's needs:\\n`\n )\n\n suggestedActions.forEach((action) => Log.info(`\\t- ${action}`))\n\n Log.info('')\n }\n\n const requiredActionsToBeLogged = process.env.NEXT_PRIVATE_LOCAL_DEV\n ? requiredActions.filter(\n (action) => action !== localDevTestFilesExcludeAction\n )\n : requiredActions\n\n if (requiredActionsToBeLogged.length) {\n Log.info(\n `The following ${white('mandatory changes')} were made to your ${cyan(\n 'tsconfig.json'\n )}:\\n`\n )\n\n requiredActionsToBeLogged.forEach((action) => Log.info(`\\t- ${action}`))\n\n Log.info('')\n }\n}\n"],"names":["getRequiredConfiguration","writeConfigurationDefaults","PKG_NAME","require","path","join","__dirname","name","getDesiredCompilerOptions","ts","tsOptions","o","target","suggested","reason","lib","allowJs","skipLibCheck","strict","semver","lt","version","forceConsistentCasingInFileNames","undefined","noEmit","gte","incremental","module","parsedValue","ModuleKind","ESNext","parsedValues","Preserve","ES2020","CommonJS","AMD","NodeNext","Node16","value","esModuleInterop","moduleResolution","ModuleResolutionKind","Bundler","Node10","NodeJs","Node12","filter","val","resolveJsonModule","verbatimModuleSyntax","isolatedModules","jsx","JsxEmit","ReactJSX","res","desiredCompilerOptions","optionKey","Object","keys","ev","localDevTestFilesExcludeAction","tsConfigPath","isFirstTimeSetup","hasAppDir","distDir","hasPagesDir","userTsConfig","fs","writeFile","os","EOL","options","raw","rawConfig","getTypeScriptConfiguration","userTsConfigContent","readFile","encoding","CommentJson","parse","compilerOptions","suggestedActions","requiredActions","check","push","cyan","bold","includes","_","nextAppTypes","include","Array","isArray","length","JSON","stringify","sort","map","i","plugins","hasNextPlugin","some","Log","info","strictNullChecks","paths","nextMapping","nextWildcardMapping","exclude","process","env","NEXT_PRIVATE_LOCAL_DEV","tsGlob","tsxGlob","hasUpdates","forEach","action","requiredActionsToBeLogged","white"],"mappings":"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","ignoreList":[0]}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/typescript/writeConfigurationDefaults.ts"],"sourcesContent":["import { promises as fs } from 'fs'\nimport { bold, cyan, white } from '../picocolors'\nimport * as CommentJson from 'next/dist/compiled/comment-json'\nimport semver from 'next/dist/compiled/semver'\nimport os from 'os'\nimport path from 'path'\nimport type { CompilerOptions } from 'typescript'\nimport { getTypeScriptConfiguration } from './getTypeScriptConfiguration'\nimport * as Log from '../../build/output/log'\n\n// Read package name dynamically to support forked packages\n// From dist/lib/typescript, go up 3 levels to reach package root\nconst PKG_NAME = require(path.join(__dirname, '../../../package.json')).name\n\ntype DesiredCompilerOptionsShape = {\n [K in keyof CompilerOptions]:\n | { suggested: any; reason?: string }\n | {\n parsedValue?: any\n parsedValues?: Array<any>\n value: any\n reason: string\n }\n}\n\nfunction getDesiredCompilerOptions(\n ts: typeof import('typescript'),\n tsOptions?: CompilerOptions\n): DesiredCompilerOptionsShape {\n const o: DesiredCompilerOptionsShape = {\n target: {\n suggested: 'ES2017',\n reason:\n 'For top-level `await`. Note: Next.js only polyfills for the esmodules target.',\n },\n // These are suggested values and will be set when not present in the\n // tsconfig.json\n lib: { suggested: ['dom', 'dom.iterable', 'esnext'] },\n allowJs: { suggested: true },\n skipLibCheck: { suggested: true },\n strict: { suggested: false },\n ...(semver.lt(ts.version, '5.0.0')\n ? { forceConsistentCasingInFileNames: { suggested: true } }\n : undefined),\n noEmit: { suggested: true },\n ...(semver.gte(ts.version, '4.4.2')\n ? { incremental: { suggested: true } }\n : undefined),\n\n // These values are required and cannot be changed by the user\n // Keep this in sync with the webpack config\n // 'parsedValue' matches the output value from ts.parseJsonConfigFileContent()\n module: {\n parsedValue: ts.ModuleKind.ESNext,\n // All of these values work:\n parsedValues: [\n semver.gte(ts.version, '5.4.0') && (ts.ModuleKind as any).Preserve,\n ts.ModuleKind.ES2020,\n ts.ModuleKind.ESNext,\n ts.ModuleKind.CommonJS,\n ts.ModuleKind.AMD,\n ts.ModuleKind.NodeNext,\n ts.ModuleKind.Node16,\n ],\n value: 'esnext',\n reason: 'for dynamic import() support',\n },\n // TODO: Semver check not needed once Next.js repo uses 5.4.\n ...(semver.gte(ts.version, '5.4.0') &&\n tsOptions?.module === (ts.ModuleKind as any).Preserve\n ? {\n // TypeScript 5.4 introduced `Preserve`. Using `Preserve` implies\n // - `moduleResolution` is `Bundler`\n // - `esModuleInterop` is `true`\n // - `resolveJsonModule` is `true`\n // This means that if the user is using Preserve, they don't need these options\n }\n : {\n esModuleInterop: {\n value: true,\n reason: 'requirement for SWC / babel',\n },\n moduleResolution: {\n // In TypeScript 5.0, `NodeJs` has renamed to `Node10`\n parsedValue:\n ts.ModuleResolutionKind.Bundler ??\n ts.ModuleResolutionKind.NodeNext ??\n (ts.ModuleResolutionKind as any).Node10 ??\n ts.ModuleResolutionKind.NodeJs,\n // All of these values work:\n parsedValues: [\n (ts.ModuleResolutionKind as any).Node10 ??\n ts.ModuleResolutionKind.NodeJs,\n // only newer TypeScript versions have this field, it\n // will be filtered for new versions of TypeScript\n (ts.ModuleResolutionKind as any).Node12,\n ts.ModuleResolutionKind.Node16,\n ts.ModuleResolutionKind.NodeNext,\n ts.ModuleResolutionKind.Bundler,\n ].filter((val) => typeof val !== 'undefined'),\n value: 'node',\n reason: 'to match webpack resolution',\n },\n resolveJsonModule: {\n value: true,\n reason: 'to match webpack resolution',\n },\n }),\n ...(tsOptions?.verbatimModuleSyntax === true\n ? undefined\n : {\n isolatedModules: {\n value: true,\n reason: 'requirement for SWC / Babel',\n },\n }),\n jsx: {\n parsedValue: ts.JsxEmit.ReactJSX,\n value: 'react-jsx',\n reason: 'next.js uses the React automatic runtime',\n },\n }\n\n return o\n}\n\nexport function getRequiredConfiguration(\n ts: typeof import('typescript')\n): Partial<import('typescript').CompilerOptions> {\n const res: Partial<import('typescript').CompilerOptions> = {}\n\n const desiredCompilerOptions = getDesiredCompilerOptions(ts)\n for (const optionKey of Object.keys(desiredCompilerOptions)) {\n const ev = desiredCompilerOptions[optionKey]\n if (!('value' in ev)) {\n continue\n }\n res[optionKey] = ev.parsedValue ?? ev.value\n }\n\n return res\n}\n\nconst localDevTestFilesExcludeAction =\n 'NEXT_PRIVATE_LOCAL_DEV_TEST_FILES_EXCLUDE'\n\nexport async function writeConfigurationDefaults(\n ts: typeof import('typescript'),\n tsConfigPath: string,\n isFirstTimeSetup: boolean,\n hasAppDir: boolean,\n distDir: string,\n hasPagesDir: boolean\n): Promise<void> {\n if (isFirstTimeSetup) {\n await fs.writeFile(tsConfigPath, '{}' + os.EOL)\n }\n\n const { options: tsOptions, raw: rawConfig } =\n await getTypeScriptConfiguration(ts, tsConfigPath, true)\n\n const userTsConfigContent = await fs.readFile(tsConfigPath, {\n encoding: 'utf8',\n })\n const userTsConfig = CommentJson.parse(userTsConfigContent)\n if (userTsConfig.compilerOptions == null && !('extends' in rawConfig)) {\n userTsConfig.compilerOptions = {}\n isFirstTimeSetup = true\n }\n\n const desiredCompilerOptions = getDesiredCompilerOptions(ts, tsOptions)\n\n const suggestedActions: string[] = []\n const requiredActions: string[] = []\n for (const optionKey of Object.keys(desiredCompilerOptions)) {\n const check = desiredCompilerOptions[optionKey]\n if ('suggested' in check) {\n if (!(optionKey in tsOptions)) {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n userTsConfig.compilerOptions[optionKey] = check.suggested\n suggestedActions.push(\n cyan(optionKey) +\n ' was set to ' +\n bold(check.suggested) +\n (check.reason ? ` (${check.reason})` : '')\n )\n }\n } else if ('value' in check) {\n const ev = tsOptions[optionKey]\n if (\n !('parsedValues' in check\n ? check.parsedValues?.includes(ev)\n : 'parsedValue' in check\n ? check.parsedValue === ev\n : check.value === ev)\n ) {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n userTsConfig.compilerOptions[optionKey] = check.value\n requiredActions.push(\n cyan(optionKey) +\n ' was set to ' +\n bold(check.value) +\n ` (${check.reason})`\n )\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _: never = check\n }\n }\n\n const nextAppTypes = `${distDir}/types/**/*.ts`\n\n if (!('include' in rawConfig)) {\n userTsConfig.include = hasAppDir\n ? ['next-env.d.ts', nextAppTypes, '**/*.ts', '**/*.tsx']\n : ['next-env.d.ts', '**/*.ts', '**/*.tsx']\n suggestedActions.push(\n cyan('include') +\n ' was set to ' +\n bold(\n hasAppDir\n ? `['next-env.d.ts', '${nextAppTypes}', '**/*.ts', '**/*.tsx']`\n : `['next-env.d.ts', '**/*.ts', '**/*.tsx']`\n )\n )\n } else if (hasAppDir && !rawConfig.include.includes(nextAppTypes)) {\n if (!Array.isArray(userTsConfig.include)) {\n userTsConfig.include = []\n }\n // rawConfig will resolve all extends and include paths (ex: tsconfig.json, tsconfig.base.json, etc.)\n // if it doesn't match userTsConfig then update the userTsConfig to add the\n // rawConfig's includes in addition to nextAppTypes\n if (\n rawConfig.include.length !== userTsConfig.include.length ||\n JSON.stringify(rawConfig.include.sort()) !==\n JSON.stringify(userTsConfig.include.sort())\n ) {\n userTsConfig.include.push(...rawConfig.include, nextAppTypes)\n suggestedActions.push(\n cyan('include') +\n ' was set to ' +\n bold(\n `[${[...rawConfig.include, nextAppTypes]\n .map((i) => `'${i}'`)\n .join(', ')}]`\n )\n )\n } else {\n userTsConfig.include.push(nextAppTypes)\n suggestedActions.push(\n cyan('include') + ' was updated to add ' + bold(`'${nextAppTypes}'`)\n )\n }\n }\n\n // Enable the Next.js typescript plugin.\n if (hasAppDir) {\n // Check if the config or the resolved config has the plugin already.\n const plugins = [\n ...(Array.isArray(tsOptions.plugins) ? tsOptions.plugins : []),\n ...(userTsConfig.compilerOptions &&\n Array.isArray(userTsConfig.compilerOptions.plugins)\n ? userTsConfig.compilerOptions.plugins\n : []),\n ]\n const hasNextPlugin = plugins.some(\n ({ name }: { name: string }) => name === 'next'\n )\n\n // If the TS config extends on another config, we can't add the `plugin` field\n // because that will override the parent config's plugins.\n // Instead we have to show a message to the user to add the plugin manually.\n if (\n !userTsConfig.compilerOptions ||\n (plugins.length &&\n !hasNextPlugin &&\n 'extends' in rawConfig &&\n (!rawConfig.compilerOptions || !rawConfig.compilerOptions.plugins))\n ) {\n Log.info(\n `\\nYour ${bold(\n 'tsconfig.json'\n )} extends another configuration, which means we cannot add the Next.js TypeScript plugin automatically. To improve your development experience, we recommend adding the Next.js plugin (\\`${cyan(\n '\"plugins\": [{ \"name\": \"next\" }]'\n )}\\`) manually to your TypeScript configuration. Learn more: https://nextjs.org/docs/app/api-reference/config/typescript#the-typescript-plugin\\n`\n )\n } else if (!hasNextPlugin) {\n if (!('plugins' in userTsConfig.compilerOptions)) {\n userTsConfig.compilerOptions.plugins = []\n }\n userTsConfig.compilerOptions.plugins.push({ name: 'next' })\n suggestedActions.push(\n cyan('plugins') + ' was updated to add ' + bold(`{ name: 'next' }`)\n )\n }\n\n // If `strict` is set to `false` and `strictNullChecks` is set to `false`,\n // then set `strictNullChecks` to `true`.\n if (\n hasPagesDir &&\n hasAppDir &&\n !tsOptions.strict &&\n !('strictNullChecks' in tsOptions)\n ) {\n userTsConfig.compilerOptions.strictNullChecks = true\n suggestedActions.push(\n cyan('strictNullChecks') + ' was set to ' + bold(`true`)\n )\n }\n }\n\n // If the package name is not 'next', add a path mapping to redirect 'next' imports\n // to the actual package name. This is necessary for forked packages.\n if (PKG_NAME !== 'next') {\n if (!userTsConfig.compilerOptions) {\n userTsConfig.compilerOptions = {}\n }\n\n // baseUrl is required for path mappings to work correctly\n if (!userTsConfig.compilerOptions.baseUrl) {\n userTsConfig.compilerOptions.baseUrl = '.'\n suggestedActions.push(\n cyan('baseUrl') + ' was set to ' + bold(`\".\"`) +\n ' (required for path mappings)'\n )\n }\n\n if (!userTsConfig.compilerOptions.paths) {\n userTsConfig.compilerOptions.paths = {}\n }\n\n // Add path mapping for 'next' and 'next/*' to redirect to the actual package\n const nextMapping = `${PKG_NAME}`\n const nextWildcardMapping = `${PKG_NAME}/*`\n\n if (!userTsConfig.compilerOptions.paths['next']) {\n userTsConfig.compilerOptions.paths['next'] = [nextMapping]\n suggestedActions.push(\n cyan('paths[\"next\"]') + ' was set to ' + bold(`[\"${nextMapping}\"]`) +\n ' (for forked package support)'\n )\n }\n\n if (!userTsConfig.compilerOptions.paths['next/*']) {\n userTsConfig.compilerOptions.paths['next/*'] = [nextWildcardMapping]\n suggestedActions.push(\n cyan('paths[\"next/*\"]') + ' was set to ' + bold(`[\"${nextWildcardMapping}\"]`) +\n ' (for forked package support)'\n )\n }\n }\n\n if (!('exclude' in rawConfig)) {\n userTsConfig.exclude = ['node_modules']\n suggestedActions.push(\n cyan('exclude') + ' was set to ' + bold(`['node_modules']`)\n )\n }\n\n // During local development inside Next.js repo, exclude the test files coverage by the local tsconfig\n if (process.env.NEXT_PRIVATE_LOCAL_DEV && userTsConfig.exclude) {\n const tsGlob = '**/*.test.ts'\n const tsxGlob = '**/*.test.tsx'\n let hasUpdates = false\n if (!userTsConfig.exclude.includes(tsGlob)) {\n userTsConfig.exclude.push(tsGlob)\n hasUpdates = true\n }\n if (!userTsConfig.exclude.includes(tsxGlob)) {\n userTsConfig.exclude.push(tsxGlob)\n hasUpdates = true\n }\n\n if (hasUpdates) {\n requiredActions.push(localDevTestFilesExcludeAction)\n }\n }\n\n if (suggestedActions.length < 1 && requiredActions.length < 1) {\n return\n }\n\n await fs.writeFile(\n tsConfigPath,\n CommentJson.stringify(userTsConfig, null, 2) + os.EOL\n )\n\n Log.info('')\n if (isFirstTimeSetup) {\n Log.info(\n `We detected TypeScript in your project and created a ${cyan(\n 'tsconfig.json'\n )} file for you.`\n )\n return\n }\n\n Log.info(\n `We detected TypeScript in your project and reconfigured your ${cyan(\n 'tsconfig.json'\n )} file for you.${\n userTsConfig.compilerOptions?.strict\n ? ''\n : ` Strict-mode is set to ${cyan('false')} by default.`\n }`\n )\n\n if (suggestedActions.length) {\n Log.info(\n `The following suggested values were added to your ${cyan(\n 'tsconfig.json'\n )}. These values ${cyan('can be changed')} to fit your project's needs:\\n`\n )\n\n suggestedActions.forEach((action) => Log.info(`\\t- ${action}`))\n\n Log.info('')\n }\n\n const requiredActionsToBeLogged = process.env.NEXT_PRIVATE_LOCAL_DEV\n ? requiredActions.filter(\n (action) => action !== localDevTestFilesExcludeAction\n )\n : requiredActions\n\n if (requiredActionsToBeLogged.length) {\n Log.info(\n `The following ${white('mandatory changes')} were made to your ${cyan(\n 'tsconfig.json'\n )}:\\n`\n )\n\n requiredActionsToBeLogged.forEach((action) => Log.info(`\\t- ${action}`))\n\n Log.info('')\n }\n}\n"],"names":["getRequiredConfiguration","writeConfigurationDefaults","PKG_NAME","require","path","join","__dirname","name","getDesiredCompilerOptions","ts","tsOptions","o","target","suggested","reason","lib","allowJs","skipLibCheck","strict","semver","lt","version","forceConsistentCasingInFileNames","undefined","noEmit","gte","incremental","module","parsedValue","ModuleKind","ESNext","parsedValues","Preserve","ES2020","CommonJS","AMD","NodeNext","Node16","value","esModuleInterop","moduleResolution","ModuleResolutionKind","Bundler","Node10","NodeJs","Node12","filter","val","resolveJsonModule","verbatimModuleSyntax","isolatedModules","jsx","JsxEmit","ReactJSX","res","desiredCompilerOptions","optionKey","Object","keys","ev","localDevTestFilesExcludeAction","tsConfigPath","isFirstTimeSetup","hasAppDir","distDir","hasPagesDir","userTsConfig","fs","writeFile","os","EOL","options","raw","rawConfig","getTypeScriptConfiguration","userTsConfigContent","readFile","encoding","CommentJson","parse","compilerOptions","suggestedActions","requiredActions","check","push","cyan","bold","includes","_","nextAppTypes","include","Array","isArray","length","JSON","stringify","sort","map","i","plugins","hasNextPlugin","some","Log","info","strictNullChecks","baseUrl","paths","nextMapping","nextWildcardMapping","exclude","process","env","NEXT_PRIVATE_LOCAL_DEV","tsGlob","tsxGlob","hasUpdates","forEach","action","requiredActionsToBeLogged","white"],"mappings":"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","ignoreList":[0]}
|
|
@@ -226,7 +226,7 @@ class HotReloaderWebpack {
|
|
|
226
226
|
this.previewProps = previewProps;
|
|
227
227
|
this.rewrites = rewrites;
|
|
228
228
|
this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
|
|
229
|
-
version: "15.6.0-bun.
|
|
229
|
+
version: "15.6.0-bun.26"
|
|
230
230
|
});
|
|
231
231
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
232
232
|
// of the current `next dev` invocation.
|
|
@@ -82,7 +82,7 @@ function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures, logBu
|
|
|
82
82
|
bundlerSuffix = ' (webpack)';
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.6.0-bun.
|
|
85
|
+
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.6.0-bun.26"}`))}${bundlerSuffix}`);
|
|
86
86
|
if (appUrl) {
|
|
87
87
|
_log.bootstrap(`- Local: ${appUrl}`);
|
|
88
88
|
}
|
|
@@ -155,7 +155,7 @@ async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup, server
|
|
|
155
155
|
async function startServer(serverOptions) {
|
|
156
156
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
|
157
157
|
let { port } = serverOptions;
|
|
158
|
-
process.title = `next-server (v${"15.6.0-bun.
|
|
158
|
+
process.title = `next-server (v${"15.6.0-bun.26"})`;
|
|
159
159
|
let handlersReady = ()=>{};
|
|
160
160
|
let handlersError = ()=>{};
|
|
161
161
|
let handlersPromise = new Promise((resolve, reject)=>{
|
|
@@ -22,7 +22,7 @@ _export(exports, {
|
|
|
22
22
|
});
|
|
23
23
|
function isStableBuild() {
|
|
24
24
|
var _process_env___NEXT_VERSION;
|
|
25
|
-
return !((_process_env___NEXT_VERSION = "15.6.0-bun.
|
|
25
|
+
return !((_process_env___NEXT_VERSION = "15.6.0-bun.26") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
|
|
26
26
|
}
|
|
27
27
|
class CanaryOnlyError extends Error {
|
|
28
28
|
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 "15.6.0-bun.
|
|
14
|
+
if (typeof "15.6.0-bun.26" !== 'string') {
|
|
15
15
|
return [];
|
|
16
16
|
}
|
|
17
17
|
const payload = {
|
|
18
|
-
nextVersion: "15.6.0-bun.
|
|
18
|
+
nextVersion: "15.6.0-bun.26",
|
|
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_experimental_reactCompiler, _nextConfig_experimental_reactCompiler1;
|
|
14
14
|
// This should be an invariant, if it fails our build tooling is broken.
|
|
15
|
-
if (typeof "15.6.0-bun.
|
|
15
|
+
if (typeof "15.6.0-bun.26" !== 'string') {
|
|
16
16
|
return [];
|
|
17
17
|
}
|
|
18
18
|
const { images, i18n } = nextConfig || {};
|
|
19
19
|
const payload = {
|
|
20
|
-
nextVersion: "15.6.0-bun.
|
|
20
|
+
nextVersion: "15.6.0-bun.26",
|
|
21
21
|
nodeVersion: process.version,
|
|
22
22
|
cliCommand: event.cliCommand,
|
|
23
23
|
isSrcDir: event.isSrcDir,
|