next 15.6.0-canary.11 → 15.6.0-canary.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/index.js +3 -3
  3. package/dist/build/swc/index.js +1 -1
  4. package/dist/build/templates/app-page.js +2 -2
  5. package/dist/build/templates/app-page.js.map +1 -1
  6. package/dist/build/templates/app-route.js +2 -2
  7. package/dist/build/templates/app-route.js.map +1 -1
  8. package/dist/build/templates/edge-ssr-app.js +2 -2
  9. package/dist/build/templates/edge-ssr-app.js.map +1 -1
  10. package/dist/build/templates/edge-ssr.js +2 -2
  11. package/dist/build/templates/edge-ssr.js.map +1 -1
  12. package/dist/build/templates/pages-api.js +2 -2
  13. package/dist/build/templates/pages-api.js.map +1 -1
  14. package/dist/build/webpack-config.js +2 -2
  15. package/dist/client/app-bootstrap.js +1 -1
  16. package/dist/client/index.js +1 -1
  17. package/dist/compiled/next-devtools/index.js +15 -15
  18. package/dist/compiled/next-devtools/index.js.map +1 -1
  19. package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js +1 -1
  20. package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js.map +1 -1
  21. package/dist/compiled/next-server/pages-turbo.runtime.prod.js +1 -1
  22. package/dist/compiled/next-server/pages-turbo.runtime.prod.js.map +1 -1
  23. package/dist/compiled/next-server/server.runtime.prod.js +1 -1
  24. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  25. package/dist/esm/build/index.js +3 -3
  26. package/dist/esm/build/swc/index.js +1 -1
  27. package/dist/esm/build/templates/app-page.js +2 -2
  28. package/dist/esm/build/templates/app-page.js.map +1 -1
  29. package/dist/esm/build/templates/app-route.js +2 -2
  30. package/dist/esm/build/templates/app-route.js.map +1 -1
  31. package/dist/esm/build/templates/edge-ssr-app.js +2 -2
  32. package/dist/esm/build/templates/edge-ssr-app.js.map +1 -1
  33. package/dist/esm/build/templates/edge-ssr.js +2 -2
  34. package/dist/esm/build/templates/edge-ssr.js.map +1 -1
  35. package/dist/esm/build/templates/pages-api.js +2 -2
  36. package/dist/esm/build/templates/pages-api.js.map +1 -1
  37. package/dist/esm/build/webpack-config.js +2 -2
  38. package/dist/esm/client/app-bootstrap.js +1 -1
  39. package/dist/esm/client/index.js +1 -1
  40. package/dist/esm/server/base-server.js +2 -1
  41. package/dist/esm/server/base-server.js.map +1 -1
  42. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  43. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  44. package/dist/esm/server/lib/app-info-log.js +1 -1
  45. package/dist/esm/server/lib/experimental/create-env-definitions.js +1 -2
  46. package/dist/esm/server/lib/experimental/create-env-definitions.js.map +1 -1
  47. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js +106 -107
  48. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  49. package/dist/esm/server/lib/start-server.js +1 -1
  50. package/dist/esm/server/next-server.js +4 -5
  51. package/dist/esm/server/next-server.js.map +1 -1
  52. package/dist/esm/shared/lib/canary-only.js +1 -1
  53. package/dist/server/base-server.d.ts +1 -1
  54. package/dist/server/base-server.js +2 -1
  55. package/dist/server/base-server.js.map +1 -1
  56. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  57. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  58. package/dist/server/lib/app-info-log.js +1 -1
  59. package/dist/server/lib/experimental/create-env-definitions.js +1 -2
  60. package/dist/server/lib/experimental/create-env-definitions.js.map +1 -1
  61. package/dist/server/lib/router-utils/setup-dev-bundler.js +106 -107
  62. package/dist/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  63. package/dist/server/lib/start-server.js +1 -1
  64. package/dist/server/next-server.d.ts +2 -3
  65. package/dist/server/next-server.js +4 -5
  66. package/dist/server/next-server.js.map +1 -1
  67. package/dist/shared/lib/canary-only.js +1 -1
  68. package/dist/telemetry/anonymous-meta.js +1 -1
  69. package/dist/telemetry/events/session-stopped.js +2 -2
  70. package/dist/telemetry/events/version.js +2 -2
  71. package/package.json +15 -15
@@ -90,7 +90,7 @@ export async function createHotReloaderTurbopack(opts, serverFields, distDir, re
90
90
  }
91
91
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
92
92
  const hotReloaderSpan = trace('hot-reloader', undefined, {
93
- version: "15.6.0-canary.11"
93
+ version: "15.6.0-canary.13"
94
94
  });
95
95
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
96
96
  // of the current `next dev` invocation.
@@ -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-canary.11"
161
+ version: "15.6.0-canary.13"
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-canary.11"}`))}${bundlerSuffix}`);
17
+ Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.6.0-canary.13"}`))}${bundlerSuffix}`);
18
18
  if (appUrl) {
19
19
  Log.bootstrap(`- Local: ${appUrl}`);
20
20
  }
@@ -29,8 +29,7 @@ export {}`;
29
29
  try {
30
30
  // we expect the types directory to already exist
31
31
  const envDtsPath = join(distDir, 'types', 'env.d.ts');
32
- // do not await, this is not essential for further process
33
- writeFile(envDtsPath, definitionStr, 'utf-8');
32
+ await writeFile(envDtsPath, definitionStr, 'utf-8');
34
33
  } catch (e) {
35
34
  console.error('Failed to write env.d.ts:', e);
36
35
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/server/lib/experimental/create-env-definitions.ts"],"sourcesContent":["import type { LoadedEnvFiles } from '@next/env'\nimport { join } from 'node:path'\nimport { writeFile } from 'node:fs/promises'\n\nexport async function createEnvDefinitions({\n distDir,\n loadedEnvFiles,\n}: {\n distDir: string\n loadedEnvFiles: LoadedEnvFiles\n}) {\n const envLines = []\n const seenKeys = new Set()\n // env files are in order of priority\n for (const { path, env } of loadedEnvFiles) {\n for (const key in env) {\n if (!seenKeys.has(key)) {\n envLines.push(` /** Loaded from \\`${path}\\` */`)\n envLines.push(` ${key}?: string`)\n seenKeys.add(key)\n }\n }\n }\n const envStr = envLines.join('\\n')\n\n const definitionStr = `// Type definitions for Next.js environment variables\ndeclare global {\n namespace NodeJS {\n interface ProcessEnv {\n${envStr}\n }\n }\n}\nexport {}`\n\n if (process.env.NODE_ENV === 'test') {\n return definitionStr\n }\n\n try {\n // we expect the types directory to already exist\n const envDtsPath = join(distDir, 'types', 'env.d.ts')\n // do not await, this is not essential for further process\n writeFile(envDtsPath, definitionStr, 'utf-8')\n } catch (e) {\n console.error('Failed to write env.d.ts:', e)\n }\n}\n"],"names":["join","writeFile","createEnvDefinitions","distDir","loadedEnvFiles","envLines","seenKeys","Set","path","env","key","has","push","add","envStr","definitionStr","process","NODE_ENV","envDtsPath","e","console","error"],"mappings":"AACA,SAASA,IAAI,QAAQ,YAAW;AAChC,SAASC,SAAS,QAAQ,mBAAkB;AAE5C,OAAO,eAAeC,qBAAqB,EACzCC,OAAO,EACPC,cAAc,EAIf;IACC,MAAMC,WAAW,EAAE;IACnB,MAAMC,WAAW,IAAIC;IACrB,qCAAqC;IACrC,KAAK,MAAM,EAAEC,IAAI,EAAEC,GAAG,EAAE,IAAIL,eAAgB;QAC1C,IAAK,MAAMM,OAAOD,IAAK;YACrB,IAAI,CAACH,SAASK,GAAG,CAACD,MAAM;gBACtBL,SAASO,IAAI,CAAC,CAAC,wBAAwB,EAAEJ,KAAK,KAAK,CAAC;gBACpDH,SAASO,IAAI,CAAC,CAAC,MAAM,EAAEF,IAAI,SAAS,CAAC;gBACrCJ,SAASO,GAAG,CAACH;YACf;QACF;IACF;IACA,MAAMI,SAAST,SAASL,IAAI,CAAC;IAE7B,MAAMe,gBAAgB,CAAC;;;;AAIzB,EAAED,OAAO;;;;SAIA,CAAC;IAER,IAAIE,QAAQP,GAAG,CAACQ,QAAQ,KAAK,QAAQ;QACnC,OAAOF;IACT;IAEA,IAAI;QACF,iDAAiD;QACjD,MAAMG,aAAalB,KAAKG,SAAS,SAAS;QAC1C,0DAA0D;QAC1DF,UAAUiB,YAAYH,eAAe;IACvC,EAAE,OAAOI,GAAG;QACVC,QAAQC,KAAK,CAAC,6BAA6BF;IAC7C;AACF","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/server/lib/experimental/create-env-definitions.ts"],"sourcesContent":["import type { LoadedEnvFiles } from '@next/env'\nimport { join } from 'node:path'\nimport { writeFile } from 'node:fs/promises'\n\nexport async function createEnvDefinitions({\n distDir,\n loadedEnvFiles,\n}: {\n distDir: string\n loadedEnvFiles: LoadedEnvFiles\n}) {\n const envLines = []\n const seenKeys = new Set()\n // env files are in order of priority\n for (const { path, env } of loadedEnvFiles) {\n for (const key in env) {\n if (!seenKeys.has(key)) {\n envLines.push(` /** Loaded from \\`${path}\\` */`)\n envLines.push(` ${key}?: string`)\n seenKeys.add(key)\n }\n }\n }\n const envStr = envLines.join('\\n')\n\n const definitionStr = `// Type definitions for Next.js environment variables\ndeclare global {\n namespace NodeJS {\n interface ProcessEnv {\n${envStr}\n }\n }\n}\nexport {}`\n\n if (process.env.NODE_ENV === 'test') {\n return definitionStr\n }\n\n try {\n // we expect the types directory to already exist\n const envDtsPath = join(distDir, 'types', 'env.d.ts')\n await writeFile(envDtsPath, definitionStr, 'utf-8')\n } catch (e) {\n console.error('Failed to write env.d.ts:', e)\n }\n}\n"],"names":["join","writeFile","createEnvDefinitions","distDir","loadedEnvFiles","envLines","seenKeys","Set","path","env","key","has","push","add","envStr","definitionStr","process","NODE_ENV","envDtsPath","e","console","error"],"mappings":"AACA,SAASA,IAAI,QAAQ,YAAW;AAChC,SAASC,SAAS,QAAQ,mBAAkB;AAE5C,OAAO,eAAeC,qBAAqB,EACzCC,OAAO,EACPC,cAAc,EAIf;IACC,MAAMC,WAAW,EAAE;IACnB,MAAMC,WAAW,IAAIC;IACrB,qCAAqC;IACrC,KAAK,MAAM,EAAEC,IAAI,EAAEC,GAAG,EAAE,IAAIL,eAAgB;QAC1C,IAAK,MAAMM,OAAOD,IAAK;YACrB,IAAI,CAACH,SAASK,GAAG,CAACD,MAAM;gBACtBL,SAASO,IAAI,CAAC,CAAC,wBAAwB,EAAEJ,KAAK,KAAK,CAAC;gBACpDH,SAASO,IAAI,CAAC,CAAC,MAAM,EAAEF,IAAI,SAAS,CAAC;gBACrCJ,SAASO,GAAG,CAACH;YACf;QACF;IACF;IACA,MAAMI,SAAST,SAASL,IAAI,CAAC;IAE7B,MAAMe,gBAAgB,CAAC;;;;AAIzB,EAAED,OAAO;;;;SAIA,CAAC;IAER,IAAIE,QAAQP,GAAG,CAACQ,QAAQ,KAAK,QAAQ;QACnC,OAAOF;IACT;IAEA,IAAI;QACF,iDAAiD;QACjD,MAAMG,aAAalB,KAAKG,SAAS,SAAS;QAC1C,MAAMF,UAAUiB,YAAYH,eAAe;IAC7C,EAAE,OAAOI,GAAG;QACVC,QAAQC,KAAK,CAAC,6BAA6BF;IAC7C;AACF","ignoreList":[0]}
@@ -203,6 +203,7 @@ async function startWatcher(opts) {
203
203
  const validatorFilePath = path.join(distDir, 'types', 'validator.ts');
204
204
  wp.on('aggregated', async ()=>{
205
205
  var _serverFields_middleware, _serverFields_middleware1;
206
+ let writeEnvDefinitions = false;
206
207
  let typescriptStatusFromLastAggregation = enabledTypeScript;
207
208
  let middlewareMatchers;
208
209
  const routedPages = [];
@@ -459,55 +460,16 @@ async function startWatcher(opts) {
459
460
  previousClientRouterFilters = clientRouterFilters;
460
461
  }
461
462
  }
462
- // Using === false to make the check clearer.
463
- if (typescriptStatusFromLastAggregation === false && enabledTypeScript) {
464
- // we tolerate the error here as this is best effort
465
- // and the manual install command will be shown
466
- await verifyTypeScript(opts).then(()=>{
467
- tsconfigChange = true;
468
- }).catch(()=>{});
469
- }
470
463
  if (envChange || tsconfigChange) {
471
- var _hotReloader_activeWebpackConfigs;
472
464
  if (envChange) {
473
- var _nextConfig_experimental;
474
- const loadEnvConfig = require('@next/env').loadEnvConfig;
475
- const { loadedEnvFiles } = loadEnvConfig(dir, process.env.NODE_ENV === 'development', Log, true, (envFilePath)=>{
476
- Log.info(`Reload env: ${envFilePath}`);
477
- });
478
- if (enabledTypeScript && ((_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.typedEnv)) {
479
- // do not await, this is not essential for further process
480
- createEnvDefinitions({
481
- distDir,
482
- loadedEnvFiles: [
483
- ...loadedEnvFiles,
484
- {
485
- path: nextConfig.configFileName,
486
- env: nextConfig.env,
487
- contents: ''
488
- }
489
- ]
490
- });
491
- }
465
+ writeEnvDefinitions = true;
492
466
  await propagateServerField(opts, 'loadEnvConfig', [
493
467
  {
494
468
  dev: true,
495
- forceReload: true,
496
- silent: true
469
+ forceReload: true
497
470
  }
498
471
  ]);
499
472
  }
500
- let tsconfigResult;
501
- // This is not relevant for Turbopack because tsconfig/jsconfig is handled internally.
502
- if (!hotReloader.turbopackProject) {
503
- if (tsconfigChange) {
504
- try {
505
- const loadJsConfig = require('../../../build/load-jsconfig').default;
506
- tsconfigResult = await loadJsConfig(dir, nextConfig);
507
- } catch (_) {
508
- /* do we want to log if there are syntax errors in tsconfig while editing? */ }
509
- }
510
- }
511
473
  if (hotReloader.turbopackProject) {
512
474
  var _opts_nextConfig_turbopack;
513
475
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
@@ -529,78 +491,89 @@ async function startWatcher(opts) {
529
491
  rootPath,
530
492
  projectPath: normalizePath(path.relative(rootPath, dir))
531
493
  });
532
- }
533
- (_hotReloader_activeWebpackConfigs = hotReloader.activeWebpackConfigs) == null ? void 0 : _hotReloader_activeWebpackConfigs.forEach((config, idx)=>{
534
- const isClient = idx === 0;
535
- const isNodeServer = idx === 1;
536
- const isEdgeServer = idx === 2;
537
- const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
494
+ } else {
495
+ var _hotReloader_activeWebpackConfigs;
496
+ let tsconfigResult;
497
+ // This is not relevant for Turbopack because tsconfig/jsconfig is handled internally.
538
498
  if (tsconfigChange) {
539
- var _config_resolve_plugins, _config_resolve;
540
- (_config_resolve = config.resolve) == null ? void 0 : (_config_resolve_plugins = _config_resolve.plugins) == null ? void 0 : _config_resolve_plugins.forEach((plugin)=>{
541
- // look for the JsConfigPathsPlugin and update with
542
- // the latest paths/baseUrl config
543
- if (plugin instanceof JsConfigPathsPlugin && tsconfigResult) {
544
- var _config_resolve_modules, _config_resolve, _jsConfig_compilerOptions;
545
- const { resolvedBaseUrl, jsConfig } = tsconfigResult;
546
- const currentResolvedBaseUrl = plugin.resolvedBaseUrl;
547
- const resolvedUrlIndex = (_config_resolve = config.resolve) == null ? void 0 : (_config_resolve_modules = _config_resolve.modules) == null ? void 0 : _config_resolve_modules.findIndex((item)=>item === (currentResolvedBaseUrl == null ? void 0 : currentResolvedBaseUrl.baseUrl));
548
- if (resolvedBaseUrl) {
549
- if (resolvedBaseUrl.baseUrl !== (currentResolvedBaseUrl == null ? void 0 : currentResolvedBaseUrl.baseUrl)) {
550
- // remove old baseUrl and add new one
551
- if (resolvedUrlIndex && resolvedUrlIndex > -1) {
552
- var _config_resolve_modules1, _config_resolve1;
553
- (_config_resolve1 = config.resolve) == null ? void 0 : (_config_resolve_modules1 = _config_resolve1.modules) == null ? void 0 : _config_resolve_modules1.splice(resolvedUrlIndex, 1);
554
- }
555
- // If the resolvedBaseUrl is implicit we only remove the previous value.
556
- // Only add the baseUrl if it's explicitly set in tsconfig/jsconfig
557
- if (!resolvedBaseUrl.isImplicit) {
558
- var _config_resolve_modules2, _config_resolve2;
559
- (_config_resolve2 = config.resolve) == null ? void 0 : (_config_resolve_modules2 = _config_resolve2.modules) == null ? void 0 : _config_resolve_modules2.push(resolvedBaseUrl.baseUrl);
499
+ try {
500
+ const loadJsConfig = require('../../../build/load-jsconfig').default;
501
+ tsconfigResult = await loadJsConfig(dir, nextConfig);
502
+ } catch (_) {
503
+ /* do we want to log if there are syntax errors in tsconfig while editing? */ }
504
+ }
505
+ (_hotReloader_activeWebpackConfigs = hotReloader.activeWebpackConfigs) == null ? void 0 : _hotReloader_activeWebpackConfigs.forEach((config, idx)=>{
506
+ const isClient = idx === 0;
507
+ const isNodeServer = idx === 1;
508
+ const isEdgeServer = idx === 2;
509
+ const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
510
+ if (tsconfigChange) {
511
+ var _config_resolve_plugins, _config_resolve;
512
+ (_config_resolve = config.resolve) == null ? void 0 : (_config_resolve_plugins = _config_resolve.plugins) == null ? void 0 : _config_resolve_plugins.forEach((plugin)=>{
513
+ // look for the JsConfigPathsPlugin and update with
514
+ // the latest paths/baseUrl config
515
+ if (plugin instanceof JsConfigPathsPlugin && tsconfigResult) {
516
+ var _config_resolve_modules, _config_resolve, _jsConfig_compilerOptions;
517
+ const { resolvedBaseUrl, jsConfig } = tsconfigResult;
518
+ const currentResolvedBaseUrl = plugin.resolvedBaseUrl;
519
+ const resolvedUrlIndex = (_config_resolve = config.resolve) == null ? void 0 : (_config_resolve_modules = _config_resolve.modules) == null ? void 0 : _config_resolve_modules.findIndex((item)=>item === (currentResolvedBaseUrl == null ? void 0 : currentResolvedBaseUrl.baseUrl));
520
+ if (resolvedBaseUrl) {
521
+ if (resolvedBaseUrl.baseUrl !== (currentResolvedBaseUrl == null ? void 0 : currentResolvedBaseUrl.baseUrl)) {
522
+ // remove old baseUrl and add new one
523
+ if (resolvedUrlIndex && resolvedUrlIndex > -1) {
524
+ var _config_resolve_modules1, _config_resolve1;
525
+ (_config_resolve1 = config.resolve) == null ? void 0 : (_config_resolve_modules1 = _config_resolve1.modules) == null ? void 0 : _config_resolve_modules1.splice(resolvedUrlIndex, 1);
526
+ }
527
+ // If the resolvedBaseUrl is implicit we only remove the previous value.
528
+ // Only add the baseUrl if it's explicitly set in tsconfig/jsconfig
529
+ if (!resolvedBaseUrl.isImplicit) {
530
+ var _config_resolve_modules2, _config_resolve2;
531
+ (_config_resolve2 = config.resolve) == null ? void 0 : (_config_resolve_modules2 = _config_resolve2.modules) == null ? void 0 : _config_resolve_modules2.push(resolvedBaseUrl.baseUrl);
532
+ }
560
533
  }
561
534
  }
535
+ if ((jsConfig == null ? void 0 : (_jsConfig_compilerOptions = jsConfig.compilerOptions) == null ? void 0 : _jsConfig_compilerOptions.paths) && resolvedBaseUrl) {
536
+ Object.keys(plugin.paths).forEach((key)=>{
537
+ delete plugin.paths[key];
538
+ });
539
+ Object.assign(plugin.paths, jsConfig.compilerOptions.paths);
540
+ plugin.resolvedBaseUrl = resolvedBaseUrl;
541
+ }
562
542
  }
563
- if ((jsConfig == null ? void 0 : (_jsConfig_compilerOptions = jsConfig.compilerOptions) == null ? void 0 : _jsConfig_compilerOptions.paths) && resolvedBaseUrl) {
564
- Object.keys(plugin.paths).forEach((key)=>{
565
- delete plugin.paths[key];
543
+ });
544
+ }
545
+ if (envChange) {
546
+ var _config_plugins;
547
+ (_config_plugins = config.plugins) == null ? void 0 : _config_plugins.forEach((plugin)=>{
548
+ // we look for the DefinePlugin definitions so we can
549
+ // update them on the active compilers
550
+ if (plugin && typeof plugin.definitions === 'object' && plugin.definitions.__NEXT_DEFINE_ENV) {
551
+ const newDefine = getDefineEnv({
552
+ isTurbopack: false,
553
+ clientRouterFilters,
554
+ config: nextConfig,
555
+ dev: true,
556
+ distDir,
557
+ fetchCacheKeyPrefix: opts.nextConfig.experimental.fetchCacheKeyPrefix,
558
+ hasRewrites,
559
+ isClient,
560
+ isEdgeServer,
561
+ isNodeServer,
562
+ middlewareMatchers: undefined,
563
+ projectPath: opts.dir,
564
+ rewrites: opts.fsChecker.rewrites
565
+ });
566
+ Object.keys(plugin.definitions).forEach((key)=>{
567
+ if (!(key in newDefine)) {
568
+ delete plugin.definitions[key];
569
+ }
566
570
  });
567
- Object.assign(plugin.paths, jsConfig.compilerOptions.paths);
568
- plugin.resolvedBaseUrl = resolvedBaseUrl;
571
+ Object.assign(plugin.definitions, newDefine);
569
572
  }
570
- }
571
- });
572
- }
573
- if (envChange) {
574
- var _config_plugins;
575
- (_config_plugins = config.plugins) == null ? void 0 : _config_plugins.forEach((plugin)=>{
576
- // we look for the DefinePlugin definitions so we can
577
- // update them on the active compilers
578
- if (plugin && typeof plugin.definitions === 'object' && plugin.definitions.__NEXT_DEFINE_ENV) {
579
- const newDefine = getDefineEnv({
580
- isTurbopack: false,
581
- clientRouterFilters,
582
- config: nextConfig,
583
- dev: true,
584
- distDir,
585
- fetchCacheKeyPrefix: opts.nextConfig.experimental.fetchCacheKeyPrefix,
586
- hasRewrites,
587
- isClient,
588
- isEdgeServer,
589
- isNodeServer,
590
- middlewareMatchers: undefined,
591
- projectPath: opts.dir,
592
- rewrites: opts.fsChecker.rewrites
593
- });
594
- Object.keys(plugin.definitions).forEach((key)=>{
595
- if (!(key in newDefine)) {
596
- delete plugin.definitions[key];
597
- }
598
- });
599
- Object.assign(plugin.definitions, newDefine);
600
- }
601
- });
602
- }
603
- });
573
+ });
574
+ }
575
+ });
576
+ }
604
577
  await hotReloader.invalidate({
605
578
  reloadAfterInvalidation: envChange
606
579
  });
@@ -721,6 +694,32 @@ async function startWatcher(opts) {
721
694
  }
722
695
  prevSortedRoutes = sortedRoutes;
723
696
  if (enabledTypeScript) {
697
+ var _nextConfig_experimental;
698
+ // Using === false to make the check clearer.
699
+ if (typescriptStatusFromLastAggregation === false) {
700
+ // we tolerate the error here as this is best effort
701
+ // and the manual install command will be shown
702
+ await verifyTypeScript(opts).then(()=>{
703
+ tsconfigChange = true;
704
+ }).catch(()=>{});
705
+ }
706
+ if (writeEnvDefinitions && ((_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.typedEnv)) {
707
+ // TODO: The call to propagateServerField 'loadEnvConfig' causes the env to be loaded twice on env file changes.
708
+ const loadEnvConfig = require('@next/env').loadEnvConfig;
709
+ const { loadedEnvFiles } = loadEnvConfig(dir, process.env.NODE_ENV === 'development', // Silent as it's the second time `loadEnvConfig` is called in this pass.
710
+ undefined, true);
711
+ await createEnvDefinitions({
712
+ distDir,
713
+ loadedEnvFiles: [
714
+ ...loadedEnvFiles,
715
+ {
716
+ path: nextConfig.configFileName,
717
+ env: nextConfig.env,
718
+ contents: ''
719
+ }
720
+ ]
721
+ });
722
+ }
724
723
  const routeTypesManifest = await createRouteTypesManifest({
725
724
  dir,
726
725
  pageRoutes,