next 15.6.0-canary.12 → 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 (55) 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/webpack-config.js +2 -2
  5. package/dist/client/app-bootstrap.js +1 -1
  6. package/dist/client/index.js +1 -1
  7. package/dist/compiled/next-devtools/index.js +15 -15
  8. package/dist/compiled/next-devtools/index.js.map +1 -1
  9. package/dist/compiled/next-server/pages-api.runtime.dev.js +1 -1
  10. package/dist/compiled/next-server/pages-api.runtime.dev.js.map +1 -1
  11. package/dist/compiled/next-server/pages-api.runtime.prod.js +1 -1
  12. package/dist/compiled/next-server/pages-api.runtime.prod.js.map +1 -1
  13. package/dist/compiled/next-server/pages.runtime.dev.js +1 -1
  14. package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
  15. package/dist/compiled/next-server/pages.runtime.prod.js +1 -1
  16. package/dist/compiled/next-server/pages.runtime.prod.js.map +1 -1
  17. package/dist/compiled/next-server/server.runtime.prod.js +1 -1
  18. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  19. package/dist/esm/build/index.js +3 -3
  20. package/dist/esm/build/swc/index.js +1 -1
  21. package/dist/esm/build/webpack-config.js +2 -2
  22. package/dist/esm/client/app-bootstrap.js +1 -1
  23. package/dist/esm/client/index.js +1 -1
  24. package/dist/esm/server/base-server.js +2 -1
  25. package/dist/esm/server/base-server.js.map +1 -1
  26. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  27. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  28. package/dist/esm/server/lib/app-info-log.js +1 -1
  29. package/dist/esm/server/lib/experimental/create-env-definitions.js +1 -2
  30. package/dist/esm/server/lib/experimental/create-env-definitions.js.map +1 -1
  31. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js +106 -107
  32. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  33. package/dist/esm/server/lib/start-server.js +1 -1
  34. package/dist/esm/server/next-server.js +4 -5
  35. package/dist/esm/server/next-server.js.map +1 -1
  36. package/dist/esm/shared/lib/canary-only.js +1 -1
  37. package/dist/server/base-server.d.ts +1 -1
  38. package/dist/server/base-server.js +2 -1
  39. package/dist/server/base-server.js.map +1 -1
  40. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  41. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  42. package/dist/server/lib/app-info-log.js +1 -1
  43. package/dist/server/lib/experimental/create-env-definitions.js +1 -2
  44. package/dist/server/lib/experimental/create-env-definitions.js.map +1 -1
  45. package/dist/server/lib/router-utils/setup-dev-bundler.js +106 -107
  46. package/dist/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  47. package/dist/server/lib/start-server.js +1 -1
  48. package/dist/server/next-server.d.ts +2 -3
  49. package/dist/server/next-server.js +4 -5
  50. package/dist/server/next-server.js.map +1 -1
  51. package/dist/shared/lib/canary-only.js +1 -1
  52. package/dist/telemetry/anonymous-meta.js +1 -1
  53. package/dist/telemetry/events/session-stopped.js +2 -2
  54. package/dist/telemetry/events/version.js +2 -2
  55. package/package.json +15 -15
@@ -146,7 +146,7 @@ async function createHotReloaderTurbopack(opts, serverFields, distDir, resetFetc
146
146
  }
147
147
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
148
148
  const hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
149
- version: "15.6.0-canary.12"
149
+ version: "15.6.0-canary.13"
150
150
  });
151
151
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
152
152
  // of the current `next dev` invocation.
@@ -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-canary.12"
229
+ version: "15.6.0-canary.13"
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-canary.12"}`))}${bundlerSuffix}`);
85
+ _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.6.0-canary.13"}`))}${bundlerSuffix}`);
86
86
  if (appUrl) {
87
87
  _log.bootstrap(`- Local: ${appUrl}`);
88
88
  }
@@ -39,8 +39,7 @@ export {}`;
39
39
  try {
40
40
  // we expect the types directory to already exist
41
41
  const envDtsPath = (0, _nodepath.join)(distDir, 'types', 'env.d.ts');
42
- // do not await, this is not essential for further process
43
- (0, _promises.writeFile)(envDtsPath, definitionStr, 'utf-8');
42
+ await (0, _promises.writeFile)(envDtsPath, definitionStr, 'utf-8');
44
43
  } catch (e) {
45
44
  console.error('Failed to write env.d.ts:', e);
46
45
  }
@@ -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":["createEnvDefinitions","distDir","loadedEnvFiles","envLines","seenKeys","Set","path","env","key","has","push","add","envStr","join","definitionStr","process","NODE_ENV","envDtsPath","writeFile","e","console","error"],"mappings":";;;;+BAIsBA;;;eAAAA;;;0BAHD;0BACK;AAEnB,eAAeA,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,SAASU,IAAI,CAAC;IAE7B,MAAMC,gBAAgB,CAAC;;;;AAIzB,EAAEF,OAAO;;;;SAIA,CAAC;IAER,IAAIG,QAAQR,GAAG,CAACS,QAAQ,KAAK,QAAQ;QACnC,OAAOF;IACT;IAEA,IAAI;QACF,iDAAiD;QACjD,MAAMG,aAAaJ,IAAAA,cAAI,EAACZ,SAAS,SAAS;QAC1C,0DAA0D;QAC1DiB,IAAAA,mBAAS,EAACD,YAAYH,eAAe;IACvC,EAAE,OAAOK,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":["createEnvDefinitions","distDir","loadedEnvFiles","envLines","seenKeys","Set","path","env","key","has","push","add","envStr","join","definitionStr","process","NODE_ENV","envDtsPath","writeFile","e","console","error"],"mappings":";;;;+BAIsBA;;;eAAAA;;;0BAHD;0BACK;AAEnB,eAAeA,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,SAASU,IAAI,CAAC;IAE7B,MAAMC,gBAAgB,CAAC;;;;AAIzB,EAAEF,OAAO;;;;SAIA,CAAC;IAER,IAAIG,QAAQR,GAAG,CAACS,QAAQ,KAAK,QAAQ;QACnC,OAAOF;IACT;IAEA,IAAI;QACF,iDAAiD;QACjD,MAAMG,aAAaJ,IAAAA,cAAI,EAACZ,SAAS,SAAS;QAC1C,MAAMiB,IAAAA,mBAAS,EAACD,YAAYH,eAAe;IAC7C,EAAE,OAAOK,GAAG;QACVC,QAAQC,KAAK,CAAC,6BAA6BF;IAC7C;AACF","ignoreList":[0]}
@@ -271,6 +271,7 @@ async function startWatcher(opts) {
271
271
  const validatorFilePath = _path.default.join(distDir, 'types', 'validator.ts');
272
272
  wp.on('aggregated', async ()=>{
273
273
  var _serverFields_middleware, _serverFields_middleware1;
274
+ let writeEnvDefinitions = false;
274
275
  let typescriptStatusFromLastAggregation = enabledTypeScript;
275
276
  let middlewareMatchers;
276
277
  const routedPages = [];
@@ -527,55 +528,16 @@ async function startWatcher(opts) {
527
528
  previousClientRouterFilters = clientRouterFilters;
528
529
  }
529
530
  }
530
- // Using === false to make the check clearer.
531
- if (typescriptStatusFromLastAggregation === false && enabledTypeScript) {
532
- // we tolerate the error here as this is best effort
533
- // and the manual install command will be shown
534
- await verifyTypeScript(opts).then(()=>{
535
- tsconfigChange = true;
536
- }).catch(()=>{});
537
- }
538
531
  if (envChange || tsconfigChange) {
539
- var _hotReloader_activeWebpackConfigs;
540
532
  if (envChange) {
541
- var _nextConfig_experimental;
542
- const loadEnvConfig = require('@next/env').loadEnvConfig;
543
- const { loadedEnvFiles } = loadEnvConfig(dir, process.env.NODE_ENV === 'development', _log, true, (envFilePath)=>{
544
- _log.info(`Reload env: ${envFilePath}`);
545
- });
546
- if (enabledTypeScript && ((_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.typedEnv)) {
547
- // do not await, this is not essential for further process
548
- (0, _createenvdefinitions.createEnvDefinitions)({
549
- distDir,
550
- loadedEnvFiles: [
551
- ...loadedEnvFiles,
552
- {
553
- path: nextConfig.configFileName,
554
- env: nextConfig.env,
555
- contents: ''
556
- }
557
- ]
558
- });
559
- }
533
+ writeEnvDefinitions = true;
560
534
  await propagateServerField(opts, 'loadEnvConfig', [
561
535
  {
562
536
  dev: true,
563
- forceReload: true,
564
- silent: true
537
+ forceReload: true
565
538
  }
566
539
  ]);
567
540
  }
568
- let tsconfigResult;
569
- // This is not relevant for Turbopack because tsconfig/jsconfig is handled internally.
570
- if (!hotReloader.turbopackProject) {
571
- if (tsconfigChange) {
572
- try {
573
- const loadJsConfig = require('../../../build/load-jsconfig').default;
574
- tsconfigResult = await loadJsConfig(dir, nextConfig);
575
- } catch (_) {
576
- /* do we want to log if there are syntax errors in tsconfig while editing? */ }
577
- }
578
- }
579
541
  if (hotReloader.turbopackProject) {
580
542
  var _opts_nextConfig_turbopack;
581
543
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
@@ -597,78 +559,89 @@ async function startWatcher(opts) {
597
559
  rootPath,
598
560
  projectPath: (0, _normalizepath.normalizePath)(_path.default.relative(rootPath, dir))
599
561
  });
600
- }
601
- (_hotReloader_activeWebpackConfigs = hotReloader.activeWebpackConfigs) == null ? void 0 : _hotReloader_activeWebpackConfigs.forEach((config, idx)=>{
602
- const isClient = idx === 0;
603
- const isNodeServer = idx === 1;
604
- const isEdgeServer = idx === 2;
605
- const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
562
+ } else {
563
+ var _hotReloader_activeWebpackConfigs;
564
+ let tsconfigResult;
565
+ // This is not relevant for Turbopack because tsconfig/jsconfig is handled internally.
606
566
  if (tsconfigChange) {
607
- var _config_resolve_plugins, _config_resolve;
608
- (_config_resolve = config.resolve) == null ? void 0 : (_config_resolve_plugins = _config_resolve.plugins) == null ? void 0 : _config_resolve_plugins.forEach((plugin)=>{
609
- // look for the JsConfigPathsPlugin and update with
610
- // the latest paths/baseUrl config
611
- if (plugin instanceof _jsconfigpathsplugin.JsConfigPathsPlugin && tsconfigResult) {
612
- var _config_resolve_modules, _config_resolve, _jsConfig_compilerOptions;
613
- const { resolvedBaseUrl, jsConfig } = tsconfigResult;
614
- const currentResolvedBaseUrl = plugin.resolvedBaseUrl;
615
- 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));
616
- if (resolvedBaseUrl) {
617
- if (resolvedBaseUrl.baseUrl !== (currentResolvedBaseUrl == null ? void 0 : currentResolvedBaseUrl.baseUrl)) {
618
- // remove old baseUrl and add new one
619
- if (resolvedUrlIndex && resolvedUrlIndex > -1) {
620
- var _config_resolve_modules1, _config_resolve1;
621
- (_config_resolve1 = config.resolve) == null ? void 0 : (_config_resolve_modules1 = _config_resolve1.modules) == null ? void 0 : _config_resolve_modules1.splice(resolvedUrlIndex, 1);
622
- }
623
- // If the resolvedBaseUrl is implicit we only remove the previous value.
624
- // Only add the baseUrl if it's explicitly set in tsconfig/jsconfig
625
- if (!resolvedBaseUrl.isImplicit) {
626
- var _config_resolve_modules2, _config_resolve2;
627
- (_config_resolve2 = config.resolve) == null ? void 0 : (_config_resolve_modules2 = _config_resolve2.modules) == null ? void 0 : _config_resolve_modules2.push(resolvedBaseUrl.baseUrl);
567
+ try {
568
+ const loadJsConfig = require('../../../build/load-jsconfig').default;
569
+ tsconfigResult = await loadJsConfig(dir, nextConfig);
570
+ } catch (_) {
571
+ /* do we want to log if there are syntax errors in tsconfig while editing? */ }
572
+ }
573
+ (_hotReloader_activeWebpackConfigs = hotReloader.activeWebpackConfigs) == null ? void 0 : _hotReloader_activeWebpackConfigs.forEach((config, idx)=>{
574
+ const isClient = idx === 0;
575
+ const isNodeServer = idx === 1;
576
+ const isEdgeServer = idx === 2;
577
+ const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
578
+ if (tsconfigChange) {
579
+ var _config_resolve_plugins, _config_resolve;
580
+ (_config_resolve = config.resolve) == null ? void 0 : (_config_resolve_plugins = _config_resolve.plugins) == null ? void 0 : _config_resolve_plugins.forEach((plugin)=>{
581
+ // look for the JsConfigPathsPlugin and update with
582
+ // the latest paths/baseUrl config
583
+ if (plugin instanceof _jsconfigpathsplugin.JsConfigPathsPlugin && tsconfigResult) {
584
+ var _config_resolve_modules, _config_resolve, _jsConfig_compilerOptions;
585
+ const { resolvedBaseUrl, jsConfig } = tsconfigResult;
586
+ const currentResolvedBaseUrl = plugin.resolvedBaseUrl;
587
+ 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));
588
+ if (resolvedBaseUrl) {
589
+ if (resolvedBaseUrl.baseUrl !== (currentResolvedBaseUrl == null ? void 0 : currentResolvedBaseUrl.baseUrl)) {
590
+ // remove old baseUrl and add new one
591
+ if (resolvedUrlIndex && resolvedUrlIndex > -1) {
592
+ var _config_resolve_modules1, _config_resolve1;
593
+ (_config_resolve1 = config.resolve) == null ? void 0 : (_config_resolve_modules1 = _config_resolve1.modules) == null ? void 0 : _config_resolve_modules1.splice(resolvedUrlIndex, 1);
594
+ }
595
+ // If the resolvedBaseUrl is implicit we only remove the previous value.
596
+ // Only add the baseUrl if it's explicitly set in tsconfig/jsconfig
597
+ if (!resolvedBaseUrl.isImplicit) {
598
+ var _config_resolve_modules2, _config_resolve2;
599
+ (_config_resolve2 = config.resolve) == null ? void 0 : (_config_resolve_modules2 = _config_resolve2.modules) == null ? void 0 : _config_resolve_modules2.push(resolvedBaseUrl.baseUrl);
600
+ }
628
601
  }
629
602
  }
603
+ if ((jsConfig == null ? void 0 : (_jsConfig_compilerOptions = jsConfig.compilerOptions) == null ? void 0 : _jsConfig_compilerOptions.paths) && resolvedBaseUrl) {
604
+ Object.keys(plugin.paths).forEach((key)=>{
605
+ delete plugin.paths[key];
606
+ });
607
+ Object.assign(plugin.paths, jsConfig.compilerOptions.paths);
608
+ plugin.resolvedBaseUrl = resolvedBaseUrl;
609
+ }
630
610
  }
631
- if ((jsConfig == null ? void 0 : (_jsConfig_compilerOptions = jsConfig.compilerOptions) == null ? void 0 : _jsConfig_compilerOptions.paths) && resolvedBaseUrl) {
632
- Object.keys(plugin.paths).forEach((key)=>{
633
- delete plugin.paths[key];
611
+ });
612
+ }
613
+ if (envChange) {
614
+ var _config_plugins;
615
+ (_config_plugins = config.plugins) == null ? void 0 : _config_plugins.forEach((plugin)=>{
616
+ // we look for the DefinePlugin definitions so we can
617
+ // update them on the active compilers
618
+ if (plugin && typeof plugin.definitions === 'object' && plugin.definitions.__NEXT_DEFINE_ENV) {
619
+ const newDefine = (0, _defineenv.getDefineEnv)({
620
+ isTurbopack: false,
621
+ clientRouterFilters,
622
+ config: nextConfig,
623
+ dev: true,
624
+ distDir,
625
+ fetchCacheKeyPrefix: opts.nextConfig.experimental.fetchCacheKeyPrefix,
626
+ hasRewrites,
627
+ isClient,
628
+ isEdgeServer,
629
+ isNodeServer,
630
+ middlewareMatchers: undefined,
631
+ projectPath: opts.dir,
632
+ rewrites: opts.fsChecker.rewrites
633
+ });
634
+ Object.keys(plugin.definitions).forEach((key)=>{
635
+ if (!(key in newDefine)) {
636
+ delete plugin.definitions[key];
637
+ }
634
638
  });
635
- Object.assign(plugin.paths, jsConfig.compilerOptions.paths);
636
- plugin.resolvedBaseUrl = resolvedBaseUrl;
639
+ Object.assign(plugin.definitions, newDefine);
637
640
  }
638
- }
639
- });
640
- }
641
- if (envChange) {
642
- var _config_plugins;
643
- (_config_plugins = config.plugins) == null ? void 0 : _config_plugins.forEach((plugin)=>{
644
- // we look for the DefinePlugin definitions so we can
645
- // update them on the active compilers
646
- if (plugin && typeof plugin.definitions === 'object' && plugin.definitions.__NEXT_DEFINE_ENV) {
647
- const newDefine = (0, _defineenv.getDefineEnv)({
648
- isTurbopack: false,
649
- clientRouterFilters,
650
- config: nextConfig,
651
- dev: true,
652
- distDir,
653
- fetchCacheKeyPrefix: opts.nextConfig.experimental.fetchCacheKeyPrefix,
654
- hasRewrites,
655
- isClient,
656
- isEdgeServer,
657
- isNodeServer,
658
- middlewareMatchers: undefined,
659
- projectPath: opts.dir,
660
- rewrites: opts.fsChecker.rewrites
661
- });
662
- Object.keys(plugin.definitions).forEach((key)=>{
663
- if (!(key in newDefine)) {
664
- delete plugin.definitions[key];
665
- }
666
- });
667
- Object.assign(plugin.definitions, newDefine);
668
- }
669
- });
670
- }
671
- });
641
+ });
642
+ }
643
+ });
644
+ }
672
645
  await hotReloader.invalidate({
673
646
  reloadAfterInvalidation: envChange
674
647
  });
@@ -789,6 +762,32 @@ async function startWatcher(opts) {
789
762
  }
790
763
  prevSortedRoutes = sortedRoutes;
791
764
  if (enabledTypeScript) {
765
+ var _nextConfig_experimental;
766
+ // Using === false to make the check clearer.
767
+ if (typescriptStatusFromLastAggregation === false) {
768
+ // we tolerate the error here as this is best effort
769
+ // and the manual install command will be shown
770
+ await verifyTypeScript(opts).then(()=>{
771
+ tsconfigChange = true;
772
+ }).catch(()=>{});
773
+ }
774
+ if (writeEnvDefinitions && ((_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.typedEnv)) {
775
+ // TODO: The call to propagateServerField 'loadEnvConfig' causes the env to be loaded twice on env file changes.
776
+ const loadEnvConfig = require('@next/env').loadEnvConfig;
777
+ const { loadedEnvFiles } = loadEnvConfig(dir, process.env.NODE_ENV === 'development', // Silent as it's the second time `loadEnvConfig` is called in this pass.
778
+ undefined, true);
779
+ await (0, _createenvdefinitions.createEnvDefinitions)({
780
+ distDir,
781
+ loadedEnvFiles: [
782
+ ...loadedEnvFiles,
783
+ {
784
+ path: nextConfig.configFileName,
785
+ env: nextConfig.env,
786
+ contents: ''
787
+ }
788
+ ]
789
+ });
790
+ }
792
791
  const routeTypesManifest = await (0, _routetypesutils.createRouteTypesManifest)({
793
792
  dir,
794
793
  pageRoutes,