next 15.4.0-canary.17 → 15.4.0-canary.18

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 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.4.0-canary.17"}`, '-v, --version', 'Outputs the Next.js version.');
82
+ }).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"15.4.0-canary.18"}`, '-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('--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',
@@ -375,7 +375,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
375
375
  const nextBuildSpan = (0, _trace.trace)('next-build', undefined, {
376
376
  buildMode: experimentalBuildMode,
377
377
  isTurboBuild: String(isTurbopack),
378
- version: "15.4.0-canary.17"
378
+ version: "15.4.0-canary.18"
379
379
  });
380
380
  _buildcontext.NextBuildContext.nextBuildSpan = nextBuildSpan;
381
381
  _buildcontext.NextBuildContext.dir = dir;
@@ -757,7 +757,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
757
757
  // Files outside of the distDir can be "type": "module"
758
758
  await writeFileUtf8(_path.default.join(distDir, 'package.json'), '{"type": "commonjs"}');
759
759
  // These are written to distDir, so they need to come after creating and cleaning distDr.
760
- await (0, _builddiagnostics.recordFrameworkVersion)("15.4.0-canary.17");
760
+ await (0, _builddiagnostics.recordFrameworkVersion)("15.4.0-canary.18");
761
761
  await (0, _builddiagnostics.updateBuildDiagnostics)({
762
762
  buildStage: 'start'
763
763
  });
@@ -123,7 +123,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
123
123
  }
124
124
  return newObj;
125
125
  }
126
- const nextVersion = "15.4.0-canary.17";
126
+ const nextVersion = "15.4.0-canary.18";
127
127
  const ArchName = (0, _os.arch)();
128
128
  const PlatformName = (0, _os.platform)();
129
129
  function infoLog(...args) {
@@ -1653,7 +1653,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
1653
1653
  isClient && new _copyfileplugin.CopyFilePlugin({
1654
1654
  // file path to build output of `@next/polyfill-nomodule`
1655
1655
  filePath: require.resolve('./polyfills/polyfill-nomodule'),
1656
- cacheKey: "15.4.0-canary.17",
1656
+ cacheKey: "15.4.0-canary.18",
1657
1657
  name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
1658
1658
  minimize: false,
1659
1659
  info: {
@@ -1830,7 +1830,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
1830
1830
  // - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
1831
1831
  // - Next.js version
1832
1832
  // - next.config.js keys that affect compilation
1833
- version: `${__dirname}|${"15.4.0-canary.17"}|${configVars}`,
1833
+ version: `${__dirname}|${"15.4.0-canary.18"}|${configVars}`,
1834
1834
  cacheDirectory: _path.default.join(distDir, 'cache', 'webpack'),
1835
1835
  // For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
1836
1836
  // So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
@@ -13,7 +13,7 @@ Object.defineProperty(exports, "appBootstrap", {
13
13
  return appBootstrap;
14
14
  }
15
15
  });
16
- const version = "15.4.0-canary.17";
16
+ const version = "15.4.0-canary.18";
17
17
  window.next = {
18
18
  version,
19
19
  appDir: true
@@ -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.4.0-canary.17";
64
+ const version = "15.4.0-canary.18";
65
65
  let router;
66
66
  const emitter = (0, _mitt.default)();
67
67
  const looseToArray = (input)=>[].slice.call(input);
@@ -307,7 +307,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
307
307
  const nextBuildSpan = trace('next-build', undefined, {
308
308
  buildMode: experimentalBuildMode,
309
309
  isTurboBuild: String(isTurbopack),
310
- version: "15.4.0-canary.17"
310
+ version: "15.4.0-canary.18"
311
311
  });
312
312
  NextBuildContext.nextBuildSpan = nextBuildSpan;
313
313
  NextBuildContext.dir = dir;
@@ -689,7 +689,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
689
689
  // Files outside of the distDir can be "type": "module"
690
690
  await writeFileUtf8(path.join(distDir, 'package.json'), '{"type": "commonjs"}');
691
691
  // These are written to distDir, so they need to come after creating and cleaning distDr.
692
- await recordFrameworkVersion("15.4.0-canary.17");
692
+ await recordFrameworkVersion("15.4.0-canary.18");
693
693
  await updateBuildDiagnostics({
694
694
  buildStage: 'start'
695
695
  });
@@ -11,7 +11,7 @@ import { isDeepStrictEqual } from 'util';
11
11
  import { getDefineEnv } from '../webpack/plugins/define-env-plugin';
12
12
  import { getReactCompilerLoader } from '../get-babel-loader-config';
13
13
  import { TurbopackInternalError } from '../../shared/lib/turbopack/utils';
14
- const nextVersion = "15.4.0-canary.17";
14
+ const nextVersion = "15.4.0-canary.18";
15
15
  const ArchName = arch();
16
16
  const PlatformName = platform();
17
17
  function infoLog(...args) {
@@ -1554,7 +1554,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1554
1554
  isClient && new CopyFilePlugin({
1555
1555
  // file path to build output of `@next/polyfill-nomodule`
1556
1556
  filePath: require.resolve('./polyfills/polyfill-nomodule'),
1557
- cacheKey: "15.4.0-canary.17",
1557
+ cacheKey: "15.4.0-canary.18",
1558
1558
  name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
1559
1559
  minimize: false,
1560
1560
  info: {
@@ -1731,7 +1731,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1731
1731
  // - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
1732
1732
  // - Next.js version
1733
1733
  // - next.config.js keys that affect compilation
1734
- version: `${__dirname}|${"15.4.0-canary.17"}|${configVars}`,
1734
+ version: `${__dirname}|${"15.4.0-canary.18"}|${configVars}`,
1735
1735
  cacheDirectory: path.join(distDir, 'cache', 'webpack'),
1736
1736
  // For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
1737
1737
  // So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
@@ -3,7 +3,7 @@
3
3
  * sure the following scripts are executed in the correct order:
4
4
  * - Polyfills
5
5
  * - next/script with `beforeInteractive` strategy
6
- */ const version = "15.4.0-canary.17";
6
+ */ const version = "15.4.0-canary.18";
7
7
  window.next = {
8
8
  version,
9
9
  appDir: true
@@ -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.4.0-canary.17";
29
+ export const version = "15.4.0-canary.18";
30
30
  export let router;
31
31
  export const emitter = mitt();
32
32
  const looseToArray = (input)=>[].slice.call(input);
@@ -83,7 +83,7 @@ export async function createHotReloaderTurbopack(opts, serverFields, distDir, re
83
83
  }
84
84
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
85
85
  const hotReloaderSpan = trace('hot-reloader', undefined, {
86
- version: "15.4.0-canary.17"
86
+ version: "15.4.0-canary.18"
87
87
  });
88
88
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
89
89
  // of the current `next dev` invocation.
@@ -181,7 +181,7 @@ export default class HotReloaderWebpack {
181
181
  this.previewProps = previewProps;
182
182
  this.rewrites = rewrites;
183
183
  this.hotReloaderSpan = trace('hot-reloader', undefined, {
184
- version: "15.4.0-canary.17"
184
+ version: "15.4.0-canary.18"
185
185
  });
186
186
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
187
187
  // of the current `next dev` invocation.
@@ -12,7 +12,7 @@ export function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures
12
12
  } else {
13
13
  bundlerSuffix = '';
14
14
  }
15
- Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.4.0-canary.17"}`))}${bundlerSuffix}`);
15
+ Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.4.0-canary.18"}`))}${bundlerSuffix}`);
16
16
  if (appUrl) {
17
17
  Log.bootstrap(`- Local: ${appUrl}`);
18
18
  }
@@ -42,7 +42,7 @@ export async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup,
42
42
  export async function startServer(serverOptions) {
43
43
  const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
44
44
  let { port } = serverOptions;
45
- process.title = `next-server (v${"15.4.0-canary.17"})`;
45
+ process.title = `next-server (v${"15.4.0-canary.18"})`;
46
46
  let handlersReady = ()=>{};
47
47
  let handlersError = ()=>{};
48
48
  let handlersPromise = new Promise((resolve, reject)=>{
@@ -64,13 +64,6 @@ function createExoticDraftMode(underlyingProvider) {
64
64
  get () {
65
65
  return instance.isEnabled;
66
66
  },
67
- set (newValue) {
68
- Object.defineProperty(promise, 'isEnabled', {
69
- value: newValue,
70
- writable: true,
71
- enumerable: true
72
- });
73
- },
74
67
  enumerable: true,
75
68
  configurable: true
76
69
  });
@@ -87,13 +80,6 @@ function createExoticDraftModeWithDevWarnings(underlyingProvider, route) {
87
80
  syncIODev(route, expression);
88
81
  return instance.isEnabled;
89
82
  },
90
- set (newValue) {
91
- Object.defineProperty(promise, 'isEnabled', {
92
- value: newValue,
93
- writable: true,
94
- enumerable: true
95
- });
96
- },
97
83
  enumerable: true,
98
84
  configurable: true
99
85
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/request/draft-mode.ts"],"sourcesContent":["import {\n getDraftModeProviderForCacheScope,\n throwForMissingRequestStore,\n} from '../app-render/work-unit-async-storage.external'\n\nimport type { DraftModeProvider } from '../async-storage/draft-mode-provider'\n\nimport {\n workAsyncStorage,\n type WorkStore,\n} from '../app-render/work-async-storage.external'\nimport { workUnitAsyncStorage } from '../app-render/work-unit-async-storage.external'\nimport {\n abortAndThrowOnSynchronousRequestDataAccess,\n postponeWithTracking,\n trackSynchronousRequestDataAccessInDev,\n} from '../app-render/dynamic-rendering'\nimport { createDedupedByCallsiteServerErrorLoggerDev } from '../create-deduped-by-callsite-server-error-logger'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\n\n/**\n * In this version of Next.js `draftMode()` returns a Promise however you can still reference the properties of the underlying draftMode object\n * synchronously to facilitate migration. The `UnsafeUnwrappedDraftMode` type is added to your code by a codemod that attempts to automatically\n * updates callsites to reflect the new Promise return type. There are some cases where `draftMode()` cannot be automatically converted, namely\n * when it is used inside a synchronous function and we can't be sure the function can be made async automatically. In these cases we add an\n * explicit type case to `UnsafeUnwrappedDraftMode` to enable typescript to allow for the synchronous usage only where it is actually necessary.\n *\n * You should should update these callsites to either be async functions where the `draftMode()` value can be awaited or you should call `draftMode()`\n * from outside and await the return value before passing it into this function.\n *\n * You can find instances that require manual migration by searching for `UnsafeUnwrappedDraftMode` in your codebase or by search for a comment that\n * starts with `@next-codemod-error`.\n *\n * In a future version of Next.js `draftMode()` will only return a Promise and you will not be able to access the underlying draftMode object directly\n * without awaiting the return value first. When this change happens the type `UnsafeUnwrappedDraftMode` will be updated to reflect that is it no longer\n * usable.\n *\n * This type is marked deprecated to help identify it as target for refactoring away.\n *\n * @deprecated\n */\nexport type UnsafeUnwrappedDraftMode = DraftMode\n\nexport function draftMode(): Promise<DraftMode> {\n const callingExpression = 'draftMode'\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore || !workUnitStore) {\n throwForMissingRequestStore(callingExpression)\n }\n\n switch (workUnitStore.type) {\n case 'request':\n return createOrGetCachedExoticDraftMode(\n workUnitStore.draftMode,\n workStore\n )\n\n case 'cache':\n case 'unstable-cache':\n // Inside of `\"use cache\"` or `unstable_cache`, draft mode is available if\n // the outmost work unit store is a request store, and if draft mode is\n // enabled.\n const draftModeProvider = getDraftModeProviderForCacheScope(\n workStore,\n workUnitStore\n )\n\n if (draftModeProvider) {\n return createOrGetCachedExoticDraftMode(draftModeProvider, workStore)\n }\n\n // Otherwise, we fall through to providing an empty draft mode.\n // eslint-disable-next-line no-fallthrough\n case 'prerender':\n case 'prerender-ppr':\n case 'prerender-legacy':\n // Return empty draft mode\n if (\n process.env.NODE_ENV === 'development' &&\n !workStore?.isPrefetchRequest\n ) {\n const route = workStore?.route\n return createExoticDraftModeWithDevWarnings(null, route)\n } else {\n return createExoticDraftMode(null)\n }\n\n default:\n const _exhaustiveCheck: never = workUnitStore\n return _exhaustiveCheck\n }\n}\n\nfunction createOrGetCachedExoticDraftMode(\n draftModeProvider: DraftModeProvider,\n workStore: WorkStore | undefined\n): Promise<DraftMode> {\n const cachedDraftMode = CachedDraftModes.get(draftMode)\n\n if (cachedDraftMode) {\n return cachedDraftMode\n }\n\n let promise: Promise<DraftMode>\n\n if (process.env.NODE_ENV === 'development' && !workStore?.isPrefetchRequest) {\n const route = workStore?.route\n promise = createExoticDraftModeWithDevWarnings(draftModeProvider, route)\n } else {\n promise = createExoticDraftMode(draftModeProvider)\n }\n\n CachedDraftModes.set(draftModeProvider, promise)\n\n return promise\n}\n\ninterface CacheLifetime {}\nconst CachedDraftModes = new WeakMap<CacheLifetime, Promise<DraftMode>>()\n\nfunction createExoticDraftMode(\n underlyingProvider: null | DraftModeProvider\n): Promise<DraftMode> {\n const instance = new DraftMode(underlyingProvider)\n const promise = Promise.resolve(instance)\n\n Object.defineProperty(promise, 'isEnabled', {\n get() {\n return instance.isEnabled\n },\n set(newValue) {\n Object.defineProperty(promise, 'isEnabled', {\n value: newValue,\n writable: true,\n enumerable: true,\n })\n },\n enumerable: true,\n configurable: true,\n })\n ;(promise as any).enable = instance.enable.bind(instance)\n ;(promise as any).disable = instance.disable.bind(instance)\n\n return promise\n}\n\nfunction createExoticDraftModeWithDevWarnings(\n underlyingProvider: null | DraftModeProvider,\n route: undefined | string\n): Promise<DraftMode> {\n const instance = new DraftMode(underlyingProvider)\n const promise = Promise.resolve(instance)\n\n Object.defineProperty(promise, 'isEnabled', {\n get() {\n const expression = '`draftMode().isEnabled`'\n syncIODev(route, expression)\n return instance.isEnabled\n },\n set(newValue) {\n Object.defineProperty(promise, 'isEnabled', {\n value: newValue,\n writable: true,\n enumerable: true,\n })\n },\n enumerable: true,\n configurable: true,\n })\n\n Object.defineProperty(promise, 'enable', {\n value: function get() {\n const expression = '`draftMode().enable()`'\n syncIODev(route, expression)\n return instance.enable.apply(instance, arguments as any)\n },\n })\n\n Object.defineProperty(promise, 'disable', {\n value: function get() {\n const expression = '`draftMode().disable()`'\n syncIODev(route, expression)\n return instance.disable.apply(instance, arguments as any)\n },\n })\n\n return promise\n}\n\nclass DraftMode {\n /**\n * @internal - this declaration is stripped via `tsc --stripInternal`\n */\n private readonly _provider: null | DraftModeProvider\n\n constructor(provider: null | DraftModeProvider) {\n this._provider = provider\n }\n get isEnabled() {\n if (this._provider !== null) {\n return this._provider.isEnabled\n }\n return false\n }\n public enable() {\n // We have a store we want to track dynamic data access to ensure we\n // don't statically generate routes that manipulate draft mode.\n trackDynamicDraftMode('draftMode().enable()')\n if (this._provider !== null) {\n this._provider.enable()\n }\n }\n public disable() {\n trackDynamicDraftMode('draftMode().disable()')\n if (this._provider !== null) {\n this._provider.disable()\n }\n }\n}\n\nfunction syncIODev(route: string | undefined, expression: string) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (\n workUnitStore &&\n workUnitStore.type === 'request' &&\n workUnitStore.prerenderPhase === true\n ) {\n // When we're rendering dynamically in dev we need to advance out of the\n // Prerender environment when we read Request data synchronously\n const requestStore = workUnitStore\n trackSynchronousRequestDataAccessInDev(requestStore)\n }\n // In all cases we warn normally\n warnForSyncAccess(route, expression)\n}\n\nconst warnForSyncAccess = createDedupedByCallsiteServerErrorLoggerDev(\n createDraftModeAccessError\n)\n\nfunction createDraftModeAccessError(\n route: string | undefined,\n expression: string\n) {\n const prefix = route ? `Route \"${route}\" ` : 'This route '\n return new Error(\n `${prefix}used ${expression}. ` +\n `\\`draftMode()\\` should be awaited before using its value. ` +\n `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`\n )\n}\n\nfunction trackDynamicDraftMode(expression: string) {\n const store = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (store) {\n // We have a store we want to track dynamic data access to ensure we\n // don't statically generate routes that manipulate draft mode.\n if (workUnitStore) {\n if (workUnitStore.type === 'cache') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside \"use cache\". The enabled status of draftMode can be read in caches but you must not enable or disable draftMode inside a cache. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n } else if (workUnitStore.type === 'unstable-cache') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside a function cached with \"unstable_cache(...)\". The enabled status of draftMode can be read in caches but you must not enable or disable draftMode inside a cache. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`\n )\n } else if (workUnitStore.phase === 'after') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside \\`after\\`. The enabled status of draftMode can be read inside \\`after\\` but you cannot enable or disable draftMode. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`\n )\n }\n }\n\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n if (workUnitStore.type === 'prerender') {\n // dynamicIO Prerender\n const error = new Error(\n `Route ${store.route} used ${expression} without first calling \\`await connection()\\`. See more info here: https://nextjs.org/docs/messages/next-prerender-sync-headers`\n )\n abortAndThrowOnSynchronousRequestDataAccess(\n store.route,\n expression,\n error,\n workUnitStore\n )\n } else if (workUnitStore.type === 'prerender-ppr') {\n // PPR Prerender\n postponeWithTracking(\n store.route,\n expression,\n workUnitStore.dynamicTracking\n )\n } else if (workUnitStore.type === 'prerender-legacy') {\n // legacy Prerender\n workUnitStore.revalidate = 0\n\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n } else if (\n process.env.NODE_ENV === 'development' &&\n workUnitStore &&\n workUnitStore.type === 'request'\n ) {\n workUnitStore.usedDynamic = true\n }\n }\n }\n}\n"],"names":["getDraftModeProviderForCacheScope","throwForMissingRequestStore","workAsyncStorage","workUnitAsyncStorage","abortAndThrowOnSynchronousRequestDataAccess","postponeWithTracking","trackSynchronousRequestDataAccessInDev","createDedupedByCallsiteServerErrorLoggerDev","StaticGenBailoutError","DynamicServerError","draftMode","callingExpression","workStore","getStore","workUnitStore","type","createOrGetCachedExoticDraftMode","draftModeProvider","process","env","NODE_ENV","isPrefetchRequest","route","createExoticDraftModeWithDevWarnings","createExoticDraftMode","_exhaustiveCheck","cachedDraftMode","CachedDraftModes","get","promise","set","WeakMap","underlyingProvider","instance","DraftMode","Promise","resolve","Object","defineProperty","isEnabled","newValue","value","writable","enumerable","configurable","enable","bind","disable","expression","syncIODev","apply","arguments","constructor","provider","_provider","trackDynamicDraftMode","prerenderPhase","requestStore","warnForSyncAccess","createDraftModeAccessError","prefix","Error","store","phase","dynamicShouldError","error","dynamicTracking","revalidate","err","dynamicUsageDescription","dynamicUsageStack","stack","usedDynamic"],"mappings":"AAAA,SACEA,iCAAiC,EACjCC,2BAA2B,QACtB,iDAAgD;AAIvD,SACEC,gBAAgB,QAEX,4CAA2C;AAClD,SAASC,oBAAoB,QAAQ,iDAAgD;AACrF,SACEC,2CAA2C,EAC3CC,oBAAoB,EACpBC,sCAAsC,QACjC,kCAAiC;AACxC,SAASC,2CAA2C,QAAQ,oDAAmD;AAC/G,SAASC,qBAAqB,QAAQ,oDAAmD;AACzF,SAASC,kBAAkB,QAAQ,+CAA8C;AAyBjF,OAAO,SAASC;IACd,MAAMC,oBAAoB;IAC1B,MAAMC,YAAYV,iBAAiBW,QAAQ;IAC3C,MAAMC,gBAAgBX,qBAAqBU,QAAQ;IAEnD,IAAI,CAACD,aAAa,CAACE,eAAe;QAChCb,4BAA4BU;IAC9B;IAEA,OAAQG,cAAcC,IAAI;QACxB,KAAK;YACH,OAAOC,iCACLF,cAAcJ,SAAS,EACvBE;QAGJ,KAAK;QACL,KAAK;YACH,0EAA0E;YAC1E,uEAAuE;YACvE,WAAW;YACX,MAAMK,oBAAoBjB,kCACxBY,WACAE;YAGF,IAAIG,mBAAmB;gBACrB,OAAOD,iCAAiCC,mBAAmBL;YAC7D;QAEF,+DAA+D;QAC/D,0CAA0C;QAC1C,KAAK;QACL,KAAK;QACL,KAAK;YACH,0BAA0B;YAC1B,IACEM,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBACzB,EAACR,6BAAAA,UAAWS,iBAAiB,GAC7B;gBACA,MAAMC,QAAQV,6BAAAA,UAAWU,KAAK;gBAC9B,OAAOC,qCAAqC,MAAMD;YACpD,OAAO;gBACL,OAAOE,sBAAsB;YAC/B;QAEF;YACE,MAAMC,mBAA0BX;YAChC,OAAOW;IACX;AACF;AAEA,SAAST,iCACPC,iBAAoC,EACpCL,SAAgC;IAEhC,MAAMc,kBAAkBC,iBAAiBC,GAAG,CAAClB;IAE7C,IAAIgB,iBAAiB;QACnB,OAAOA;IACT;IAEA,IAAIG;IAEJ,IAAIX,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiB,EAACR,6BAAAA,UAAWS,iBAAiB,GAAE;QAC3E,MAAMC,QAAQV,6BAAAA,UAAWU,KAAK;QAC9BO,UAAUN,qCAAqCN,mBAAmBK;IACpE,OAAO;QACLO,UAAUL,sBAAsBP;IAClC;IAEAU,iBAAiBG,GAAG,CAACb,mBAAmBY;IAExC,OAAOA;AACT;AAGA,MAAMF,mBAAmB,IAAII;AAE7B,SAASP,sBACPQ,kBAA4C;IAE5C,MAAMC,WAAW,IAAIC,UAAUF;IAC/B,MAAMH,UAAUM,QAAQC,OAAO,CAACH;IAEhCI,OAAOC,cAAc,CAACT,SAAS,aAAa;QAC1CD;YACE,OAAOK,SAASM,SAAS;QAC3B;QACAT,KAAIU,QAAQ;YACVH,OAAOC,cAAc,CAACT,SAAS,aAAa;gBAC1CY,OAAOD;gBACPE,UAAU;gBACVC,YAAY;YACd;QACF;QACAA,YAAY;QACZC,cAAc;IAChB;IACEf,QAAgBgB,MAAM,GAAGZ,SAASY,MAAM,CAACC,IAAI,CAACb;IAC9CJ,QAAgBkB,OAAO,GAAGd,SAASc,OAAO,CAACD,IAAI,CAACb;IAElD,OAAOJ;AACT;AAEA,SAASN,qCACPS,kBAA4C,EAC5CV,KAAyB;IAEzB,MAAMW,WAAW,IAAIC,UAAUF;IAC/B,MAAMH,UAAUM,QAAQC,OAAO,CAACH;IAEhCI,OAAOC,cAAc,CAACT,SAAS,aAAa;QAC1CD;YACE,MAAMoB,aAAa;YACnBC,UAAU3B,OAAO0B;YACjB,OAAOf,SAASM,SAAS;QAC3B;QACAT,KAAIU,QAAQ;YACVH,OAAOC,cAAc,CAACT,SAAS,aAAa;gBAC1CY,OAAOD;gBACPE,UAAU;gBACVC,YAAY;YACd;QACF;QACAA,YAAY;QACZC,cAAc;IAChB;IAEAP,OAAOC,cAAc,CAACT,SAAS,UAAU;QACvCY,OAAO,SAASb;YACd,MAAMoB,aAAa;YACnBC,UAAU3B,OAAO0B;YACjB,OAAOf,SAASY,MAAM,CAACK,KAAK,CAACjB,UAAUkB;QACzC;IACF;IAEAd,OAAOC,cAAc,CAACT,SAAS,WAAW;QACxCY,OAAO,SAASb;YACd,MAAMoB,aAAa;YACnBC,UAAU3B,OAAO0B;YACjB,OAAOf,SAASc,OAAO,CAACG,KAAK,CAACjB,UAAUkB;QAC1C;IACF;IAEA,OAAOtB;AACT;AAEA,MAAMK;IAMJkB,YAAYC,QAAkC,CAAE;QAC9C,IAAI,CAACC,SAAS,GAAGD;IACnB;IACA,IAAId,YAAY;QACd,IAAI,IAAI,CAACe,SAAS,KAAK,MAAM;YAC3B,OAAO,IAAI,CAACA,SAAS,CAACf,SAAS;QACjC;QACA,OAAO;IACT;IACOM,SAAS;QACd,oEAAoE;QACpE,+DAA+D;QAC/DU,sBAAsB;QACtB,IAAI,IAAI,CAACD,SAAS,KAAK,MAAM;YAC3B,IAAI,CAACA,SAAS,CAACT,MAAM;QACvB;IACF;IACOE,UAAU;QACfQ,sBAAsB;QACtB,IAAI,IAAI,CAACD,SAAS,KAAK,MAAM;YAC3B,IAAI,CAACA,SAAS,CAACP,OAAO;QACxB;IACF;AACF;AAEA,SAASE,UAAU3B,KAAyB,EAAE0B,UAAkB;IAC9D,MAAMlC,gBAAgBX,qBAAqBU,QAAQ;IACnD,IACEC,iBACAA,cAAcC,IAAI,KAAK,aACvBD,cAAc0C,cAAc,KAAK,MACjC;QACA,wEAAwE;QACxE,gEAAgE;QAChE,MAAMC,eAAe3C;QACrBR,uCAAuCmD;IACzC;IACA,gCAAgC;IAChCC,kBAAkBpC,OAAO0B;AAC3B;AAEA,MAAMU,oBAAoBnD,4CACxBoD;AAGF,SAASA,2BACPrC,KAAyB,EACzB0B,UAAkB;IAElB,MAAMY,SAAStC,QAAQ,CAAC,OAAO,EAAEA,MAAM,EAAE,CAAC,GAAG;IAC7C,OAAO,qBAIN,CAJM,IAAIuC,MACT,GAAGD,OAAO,KAAK,EAAEZ,WAAW,EAAE,CAAC,GAC7B,CAAC,0DAA0D,CAAC,GAC5D,CAAC,8DAA8D,CAAC,GAH7D,qBAAA;eAAA;oBAAA;sBAAA;IAIP;AACF;AAEA,SAASO,sBAAsBP,UAAkB;IAC/C,MAAMc,QAAQ5D,iBAAiBW,QAAQ;IACvC,MAAMC,gBAAgBX,qBAAqBU,QAAQ;IACnD,IAAIiD,OAAO;QACT,oEAAoE;QACpE,+DAA+D;QAC/D,IAAIhD,eAAe;YACjB,IAAIA,cAAcC,IAAI,KAAK,SAAS;gBAClC,MAAM,qBAEL,CAFK,IAAI8C,MACR,CAAC,MAAM,EAAEC,MAAMxC,KAAK,CAAC,OAAO,EAAE0B,WAAW,uNAAuN,CAAC,GAD7P,qBAAA;2BAAA;gCAAA;kCAAA;gBAEN;YACF,OAAO,IAAIlC,cAAcC,IAAI,KAAK,kBAAkB;gBAClD,MAAM,qBAEL,CAFK,IAAI8C,MACR,CAAC,MAAM,EAAEC,MAAMxC,KAAK,CAAC,OAAO,EAAE0B,WAAW,gQAAgQ,CAAC,GADtS,qBAAA;2BAAA;gCAAA;kCAAA;gBAEN;YACF,OAAO,IAAIlC,cAAciD,KAAK,KAAK,SAAS;gBAC1C,MAAM,qBAEL,CAFK,IAAIF,MACR,CAAC,MAAM,EAAEC,MAAMxC,KAAK,CAAC,OAAO,EAAE0B,WAAW,0MAA0M,CAAC,GADhP,qBAAA;2BAAA;gCAAA;kCAAA;gBAEN;YACF;QACF;QAEA,IAAIc,MAAME,kBAAkB,EAAE;YAC5B,MAAM,qBAEL,CAFK,IAAIxD,sBACR,CAAC,MAAM,EAAEsD,MAAMxC,KAAK,CAAC,8EAA8E,EAAE0B,WAAW,4HAA4H,CAAC,GADzO,qBAAA;uBAAA;4BAAA;8BAAA;YAEN;QACF;QAEA,IAAIlC,eAAe;YACjB,IAAIA,cAAcC,IAAI,KAAK,aAAa;gBACtC,sBAAsB;gBACtB,MAAMkD,QAAQ,qBAEb,CAFa,IAAIJ,MAChB,CAAC,MAAM,EAAEC,MAAMxC,KAAK,CAAC,MAAM,EAAE0B,WAAW,+HAA+H,CAAC,GAD5J,qBAAA;2BAAA;gCAAA;kCAAA;gBAEd;gBACA5C,4CACE0D,MAAMxC,KAAK,EACX0B,YACAiB,OACAnD;YAEJ,OAAO,IAAIA,cAAcC,IAAI,KAAK,iBAAiB;gBACjD,gBAAgB;gBAChBV,qBACEyD,MAAMxC,KAAK,EACX0B,YACAlC,cAAcoD,eAAe;YAEjC,OAAO,IAAIpD,cAAcC,IAAI,KAAK,oBAAoB;gBACpD,mBAAmB;gBACnBD,cAAcqD,UAAU,GAAG;gBAE3B,MAAMC,MAAM,qBAEX,CAFW,IAAI3D,mBACd,CAAC,MAAM,EAAEqD,MAAMxC,KAAK,CAAC,mDAAmD,EAAE0B,WAAW,6EAA6E,CAAC,GADzJ,qBAAA;2BAAA;gCAAA;kCAAA;gBAEZ;gBACAc,MAAMO,uBAAuB,GAAGrB;gBAChCc,MAAMQ,iBAAiB,GAAGF,IAAIG,KAAK;gBAEnC,MAAMH;YACR,OAAO,IACLlD,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBACzBN,iBACAA,cAAcC,IAAI,KAAK,WACvB;gBACAD,cAAc0D,WAAW,GAAG;YAC9B;QACF;IACF;AACF","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../src/server/request/draft-mode.ts"],"sourcesContent":["import {\n getDraftModeProviderForCacheScope,\n throwForMissingRequestStore,\n} from '../app-render/work-unit-async-storage.external'\n\nimport type { DraftModeProvider } from '../async-storage/draft-mode-provider'\n\nimport {\n workAsyncStorage,\n type WorkStore,\n} from '../app-render/work-async-storage.external'\nimport { workUnitAsyncStorage } from '../app-render/work-unit-async-storage.external'\nimport {\n abortAndThrowOnSynchronousRequestDataAccess,\n postponeWithTracking,\n trackSynchronousRequestDataAccessInDev,\n} from '../app-render/dynamic-rendering'\nimport { createDedupedByCallsiteServerErrorLoggerDev } from '../create-deduped-by-callsite-server-error-logger'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\n\n/**\n * In this version of Next.js `draftMode()` returns a Promise however you can still reference the properties of the underlying draftMode object\n * synchronously to facilitate migration. The `UnsafeUnwrappedDraftMode` type is added to your code by a codemod that attempts to automatically\n * updates callsites to reflect the new Promise return type. There are some cases where `draftMode()` cannot be automatically converted, namely\n * when it is used inside a synchronous function and we can't be sure the function can be made async automatically. In these cases we add an\n * explicit type case to `UnsafeUnwrappedDraftMode` to enable typescript to allow for the synchronous usage only where it is actually necessary.\n *\n * You should should update these callsites to either be async functions where the `draftMode()` value can be awaited or you should call `draftMode()`\n * from outside and await the return value before passing it into this function.\n *\n * You can find instances that require manual migration by searching for `UnsafeUnwrappedDraftMode` in your codebase or by search for a comment that\n * starts with `@next-codemod-error`.\n *\n * In a future version of Next.js `draftMode()` will only return a Promise and you will not be able to access the underlying draftMode object directly\n * without awaiting the return value first. When this change happens the type `UnsafeUnwrappedDraftMode` will be updated to reflect that is it no longer\n * usable.\n *\n * This type is marked deprecated to help identify it as target for refactoring away.\n *\n * @deprecated\n */\nexport type UnsafeUnwrappedDraftMode = DraftMode\n\nexport function draftMode(): Promise<DraftMode> {\n const callingExpression = 'draftMode'\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore || !workUnitStore) {\n throwForMissingRequestStore(callingExpression)\n }\n\n switch (workUnitStore.type) {\n case 'request':\n return createOrGetCachedExoticDraftMode(\n workUnitStore.draftMode,\n workStore\n )\n\n case 'cache':\n case 'unstable-cache':\n // Inside of `\"use cache\"` or `unstable_cache`, draft mode is available if\n // the outmost work unit store is a request store, and if draft mode is\n // enabled.\n const draftModeProvider = getDraftModeProviderForCacheScope(\n workStore,\n workUnitStore\n )\n\n if (draftModeProvider) {\n return createOrGetCachedExoticDraftMode(draftModeProvider, workStore)\n }\n\n // Otherwise, we fall through to providing an empty draft mode.\n // eslint-disable-next-line no-fallthrough\n case 'prerender':\n case 'prerender-ppr':\n case 'prerender-legacy':\n // Return empty draft mode\n if (\n process.env.NODE_ENV === 'development' &&\n !workStore?.isPrefetchRequest\n ) {\n const route = workStore?.route\n return createExoticDraftModeWithDevWarnings(null, route)\n } else {\n return createExoticDraftMode(null)\n }\n\n default:\n const _exhaustiveCheck: never = workUnitStore\n return _exhaustiveCheck\n }\n}\n\nfunction createOrGetCachedExoticDraftMode(\n draftModeProvider: DraftModeProvider,\n workStore: WorkStore | undefined\n): Promise<DraftMode> {\n const cachedDraftMode = CachedDraftModes.get(draftMode)\n\n if (cachedDraftMode) {\n return cachedDraftMode\n }\n\n let promise: Promise<DraftMode>\n\n if (process.env.NODE_ENV === 'development' && !workStore?.isPrefetchRequest) {\n const route = workStore?.route\n promise = createExoticDraftModeWithDevWarnings(draftModeProvider, route)\n } else {\n promise = createExoticDraftMode(draftModeProvider)\n }\n\n CachedDraftModes.set(draftModeProvider, promise)\n\n return promise\n}\n\ninterface CacheLifetime {}\nconst CachedDraftModes = new WeakMap<CacheLifetime, Promise<DraftMode>>()\n\nfunction createExoticDraftMode(\n underlyingProvider: null | DraftModeProvider\n): Promise<DraftMode> {\n const instance = new DraftMode(underlyingProvider)\n const promise = Promise.resolve(instance)\n\n Object.defineProperty(promise, 'isEnabled', {\n get() {\n return instance.isEnabled\n },\n enumerable: true,\n configurable: true,\n })\n ;(promise as any).enable = instance.enable.bind(instance)\n ;(promise as any).disable = instance.disable.bind(instance)\n\n return promise\n}\n\nfunction createExoticDraftModeWithDevWarnings(\n underlyingProvider: null | DraftModeProvider,\n route: undefined | string\n): Promise<DraftMode> {\n const instance = new DraftMode(underlyingProvider)\n const promise = Promise.resolve(instance)\n\n Object.defineProperty(promise, 'isEnabled', {\n get() {\n const expression = '`draftMode().isEnabled`'\n syncIODev(route, expression)\n return instance.isEnabled\n },\n enumerable: true,\n configurable: true,\n })\n\n Object.defineProperty(promise, 'enable', {\n value: function get() {\n const expression = '`draftMode().enable()`'\n syncIODev(route, expression)\n return instance.enable.apply(instance, arguments as any)\n },\n })\n\n Object.defineProperty(promise, 'disable', {\n value: function get() {\n const expression = '`draftMode().disable()`'\n syncIODev(route, expression)\n return instance.disable.apply(instance, arguments as any)\n },\n })\n\n return promise\n}\n\nclass DraftMode {\n /**\n * @internal - this declaration is stripped via `tsc --stripInternal`\n */\n private readonly _provider: null | DraftModeProvider\n\n constructor(provider: null | DraftModeProvider) {\n this._provider = provider\n }\n get isEnabled() {\n if (this._provider !== null) {\n return this._provider.isEnabled\n }\n return false\n }\n public enable() {\n // We have a store we want to track dynamic data access to ensure we\n // don't statically generate routes that manipulate draft mode.\n trackDynamicDraftMode('draftMode().enable()')\n if (this._provider !== null) {\n this._provider.enable()\n }\n }\n public disable() {\n trackDynamicDraftMode('draftMode().disable()')\n if (this._provider !== null) {\n this._provider.disable()\n }\n }\n}\n\nfunction syncIODev(route: string | undefined, expression: string) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (\n workUnitStore &&\n workUnitStore.type === 'request' &&\n workUnitStore.prerenderPhase === true\n ) {\n // When we're rendering dynamically in dev we need to advance out of the\n // Prerender environment when we read Request data synchronously\n const requestStore = workUnitStore\n trackSynchronousRequestDataAccessInDev(requestStore)\n }\n // In all cases we warn normally\n warnForSyncAccess(route, expression)\n}\n\nconst warnForSyncAccess = createDedupedByCallsiteServerErrorLoggerDev(\n createDraftModeAccessError\n)\n\nfunction createDraftModeAccessError(\n route: string | undefined,\n expression: string\n) {\n const prefix = route ? `Route \"${route}\" ` : 'This route '\n return new Error(\n `${prefix}used ${expression}. ` +\n `\\`draftMode()\\` should be awaited before using its value. ` +\n `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`\n )\n}\n\nfunction trackDynamicDraftMode(expression: string) {\n const store = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (store) {\n // We have a store we want to track dynamic data access to ensure we\n // don't statically generate routes that manipulate draft mode.\n if (workUnitStore) {\n if (workUnitStore.type === 'cache') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside \"use cache\". The enabled status of draftMode can be read in caches but you must not enable or disable draftMode inside a cache. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n } else if (workUnitStore.type === 'unstable-cache') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside a function cached with \"unstable_cache(...)\". The enabled status of draftMode can be read in caches but you must not enable or disable draftMode inside a cache. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`\n )\n } else if (workUnitStore.phase === 'after') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside \\`after\\`. The enabled status of draftMode can be read inside \\`after\\` but you cannot enable or disable draftMode. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`\n )\n }\n }\n\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n if (workUnitStore.type === 'prerender') {\n // dynamicIO Prerender\n const error = new Error(\n `Route ${store.route} used ${expression} without first calling \\`await connection()\\`. See more info here: https://nextjs.org/docs/messages/next-prerender-sync-headers`\n )\n abortAndThrowOnSynchronousRequestDataAccess(\n store.route,\n expression,\n error,\n workUnitStore\n )\n } else if (workUnitStore.type === 'prerender-ppr') {\n // PPR Prerender\n postponeWithTracking(\n store.route,\n expression,\n workUnitStore.dynamicTracking\n )\n } else if (workUnitStore.type === 'prerender-legacy') {\n // legacy Prerender\n workUnitStore.revalidate = 0\n\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n } else if (\n process.env.NODE_ENV === 'development' &&\n workUnitStore &&\n workUnitStore.type === 'request'\n ) {\n workUnitStore.usedDynamic = true\n }\n }\n }\n}\n"],"names":["getDraftModeProviderForCacheScope","throwForMissingRequestStore","workAsyncStorage","workUnitAsyncStorage","abortAndThrowOnSynchronousRequestDataAccess","postponeWithTracking","trackSynchronousRequestDataAccessInDev","createDedupedByCallsiteServerErrorLoggerDev","StaticGenBailoutError","DynamicServerError","draftMode","callingExpression","workStore","getStore","workUnitStore","type","createOrGetCachedExoticDraftMode","draftModeProvider","process","env","NODE_ENV","isPrefetchRequest","route","createExoticDraftModeWithDevWarnings","createExoticDraftMode","_exhaustiveCheck","cachedDraftMode","CachedDraftModes","get","promise","set","WeakMap","underlyingProvider","instance","DraftMode","Promise","resolve","Object","defineProperty","isEnabled","enumerable","configurable","enable","bind","disable","expression","syncIODev","value","apply","arguments","constructor","provider","_provider","trackDynamicDraftMode","prerenderPhase","requestStore","warnForSyncAccess","createDraftModeAccessError","prefix","Error","store","phase","dynamicShouldError","error","dynamicTracking","revalidate","err","dynamicUsageDescription","dynamicUsageStack","stack","usedDynamic"],"mappings":"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","ignoreList":[0]}
@@ -1,6 +1,6 @@
1
1
  export function isStableBuild() {
2
2
  var _process_env___NEXT_VERSION;
3
- return !((_process_env___NEXT_VERSION = "15.4.0-canary.17") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
3
+ return !((_process_env___NEXT_VERSION = "15.4.0-canary.18") == 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){
@@ -139,7 +139,7 @@ async function createHotReloaderTurbopack(opts, serverFields, distDir, resetFetc
139
139
  }
140
140
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
141
141
  const hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
142
- version: "15.4.0-canary.17"
142
+ version: "15.4.0-canary.18"
143
143
  });
144
144
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
145
145
  // of the current `next dev` invocation.
@@ -257,7 +257,7 @@ class HotReloaderWebpack {
257
257
  this.previewProps = previewProps;
258
258
  this.rewrites = rewrites;
259
259
  this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
260
- version: "15.4.0-canary.17"
260
+ version: "15.4.0-canary.18"
261
261
  });
262
262
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
263
263
  // of the current `next dev` invocation.
@@ -75,7 +75,7 @@ function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures, maxEx
75
75
  } else {
76
76
  bundlerSuffix = '';
77
77
  }
78
- _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.4.0-canary.17"}`))}${bundlerSuffix}`);
78
+ _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.4.0-canary.18"}`))}${bundlerSuffix}`);
79
79
  if (appUrl) {
80
80
  _log.bootstrap(`- Local: ${appUrl}`);
81
81
  }
@@ -110,7 +110,7 @@ async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup, server
110
110
  async function startServer(serverOptions) {
111
111
  const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
112
112
  let { port } = serverOptions;
113
- process.title = `next-server (v${"15.4.0-canary.17"})`;
113
+ process.title = `next-server (v${"15.4.0-canary.18"})`;
114
114
  let handlersReady = ()=>{};
115
115
  let handlersError = ()=>{};
116
116
  let handlersPromise = new Promise((resolve, reject)=>{
@@ -73,13 +73,6 @@ function createExoticDraftMode(underlyingProvider) {
73
73
  get () {
74
74
  return instance.isEnabled;
75
75
  },
76
- set (newValue) {
77
- Object.defineProperty(promise, 'isEnabled', {
78
- value: newValue,
79
- writable: true,
80
- enumerable: true
81
- });
82
- },
83
76
  enumerable: true,
84
77
  configurable: true
85
78
  });
@@ -96,13 +89,6 @@ function createExoticDraftModeWithDevWarnings(underlyingProvider, route) {
96
89
  syncIODev(route, expression);
97
90
  return instance.isEnabled;
98
91
  },
99
- set (newValue) {
100
- Object.defineProperty(promise, 'isEnabled', {
101
- value: newValue,
102
- writable: true,
103
- enumerable: true
104
- });
105
- },
106
92
  enumerable: true,
107
93
  configurable: true
108
94
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/request/draft-mode.ts"],"sourcesContent":["import {\n getDraftModeProviderForCacheScope,\n throwForMissingRequestStore,\n} from '../app-render/work-unit-async-storage.external'\n\nimport type { DraftModeProvider } from '../async-storage/draft-mode-provider'\n\nimport {\n workAsyncStorage,\n type WorkStore,\n} from '../app-render/work-async-storage.external'\nimport { workUnitAsyncStorage } from '../app-render/work-unit-async-storage.external'\nimport {\n abortAndThrowOnSynchronousRequestDataAccess,\n postponeWithTracking,\n trackSynchronousRequestDataAccessInDev,\n} from '../app-render/dynamic-rendering'\nimport { createDedupedByCallsiteServerErrorLoggerDev } from '../create-deduped-by-callsite-server-error-logger'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\n\n/**\n * In this version of Next.js `draftMode()` returns a Promise however you can still reference the properties of the underlying draftMode object\n * synchronously to facilitate migration. The `UnsafeUnwrappedDraftMode` type is added to your code by a codemod that attempts to automatically\n * updates callsites to reflect the new Promise return type. There are some cases where `draftMode()` cannot be automatically converted, namely\n * when it is used inside a synchronous function and we can't be sure the function can be made async automatically. In these cases we add an\n * explicit type case to `UnsafeUnwrappedDraftMode` to enable typescript to allow for the synchronous usage only where it is actually necessary.\n *\n * You should should update these callsites to either be async functions where the `draftMode()` value can be awaited or you should call `draftMode()`\n * from outside and await the return value before passing it into this function.\n *\n * You can find instances that require manual migration by searching for `UnsafeUnwrappedDraftMode` in your codebase or by search for a comment that\n * starts with `@next-codemod-error`.\n *\n * In a future version of Next.js `draftMode()` will only return a Promise and you will not be able to access the underlying draftMode object directly\n * without awaiting the return value first. When this change happens the type `UnsafeUnwrappedDraftMode` will be updated to reflect that is it no longer\n * usable.\n *\n * This type is marked deprecated to help identify it as target for refactoring away.\n *\n * @deprecated\n */\nexport type UnsafeUnwrappedDraftMode = DraftMode\n\nexport function draftMode(): Promise<DraftMode> {\n const callingExpression = 'draftMode'\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore || !workUnitStore) {\n throwForMissingRequestStore(callingExpression)\n }\n\n switch (workUnitStore.type) {\n case 'request':\n return createOrGetCachedExoticDraftMode(\n workUnitStore.draftMode,\n workStore\n )\n\n case 'cache':\n case 'unstable-cache':\n // Inside of `\"use cache\"` or `unstable_cache`, draft mode is available if\n // the outmost work unit store is a request store, and if draft mode is\n // enabled.\n const draftModeProvider = getDraftModeProviderForCacheScope(\n workStore,\n workUnitStore\n )\n\n if (draftModeProvider) {\n return createOrGetCachedExoticDraftMode(draftModeProvider, workStore)\n }\n\n // Otherwise, we fall through to providing an empty draft mode.\n // eslint-disable-next-line no-fallthrough\n case 'prerender':\n case 'prerender-ppr':\n case 'prerender-legacy':\n // Return empty draft mode\n if (\n process.env.NODE_ENV === 'development' &&\n !workStore?.isPrefetchRequest\n ) {\n const route = workStore?.route\n return createExoticDraftModeWithDevWarnings(null, route)\n } else {\n return createExoticDraftMode(null)\n }\n\n default:\n const _exhaustiveCheck: never = workUnitStore\n return _exhaustiveCheck\n }\n}\n\nfunction createOrGetCachedExoticDraftMode(\n draftModeProvider: DraftModeProvider,\n workStore: WorkStore | undefined\n): Promise<DraftMode> {\n const cachedDraftMode = CachedDraftModes.get(draftMode)\n\n if (cachedDraftMode) {\n return cachedDraftMode\n }\n\n let promise: Promise<DraftMode>\n\n if (process.env.NODE_ENV === 'development' && !workStore?.isPrefetchRequest) {\n const route = workStore?.route\n promise = createExoticDraftModeWithDevWarnings(draftModeProvider, route)\n } else {\n promise = createExoticDraftMode(draftModeProvider)\n }\n\n CachedDraftModes.set(draftModeProvider, promise)\n\n return promise\n}\n\ninterface CacheLifetime {}\nconst CachedDraftModes = new WeakMap<CacheLifetime, Promise<DraftMode>>()\n\nfunction createExoticDraftMode(\n underlyingProvider: null | DraftModeProvider\n): Promise<DraftMode> {\n const instance = new DraftMode(underlyingProvider)\n const promise = Promise.resolve(instance)\n\n Object.defineProperty(promise, 'isEnabled', {\n get() {\n return instance.isEnabled\n },\n set(newValue) {\n Object.defineProperty(promise, 'isEnabled', {\n value: newValue,\n writable: true,\n enumerable: true,\n })\n },\n enumerable: true,\n configurable: true,\n })\n ;(promise as any).enable = instance.enable.bind(instance)\n ;(promise as any).disable = instance.disable.bind(instance)\n\n return promise\n}\n\nfunction createExoticDraftModeWithDevWarnings(\n underlyingProvider: null | DraftModeProvider,\n route: undefined | string\n): Promise<DraftMode> {\n const instance = new DraftMode(underlyingProvider)\n const promise = Promise.resolve(instance)\n\n Object.defineProperty(promise, 'isEnabled', {\n get() {\n const expression = '`draftMode().isEnabled`'\n syncIODev(route, expression)\n return instance.isEnabled\n },\n set(newValue) {\n Object.defineProperty(promise, 'isEnabled', {\n value: newValue,\n writable: true,\n enumerable: true,\n })\n },\n enumerable: true,\n configurable: true,\n })\n\n Object.defineProperty(promise, 'enable', {\n value: function get() {\n const expression = '`draftMode().enable()`'\n syncIODev(route, expression)\n return instance.enable.apply(instance, arguments as any)\n },\n })\n\n Object.defineProperty(promise, 'disable', {\n value: function get() {\n const expression = '`draftMode().disable()`'\n syncIODev(route, expression)\n return instance.disable.apply(instance, arguments as any)\n },\n })\n\n return promise\n}\n\nclass DraftMode {\n /**\n * @internal - this declaration is stripped via `tsc --stripInternal`\n */\n private readonly _provider: null | DraftModeProvider\n\n constructor(provider: null | DraftModeProvider) {\n this._provider = provider\n }\n get isEnabled() {\n if (this._provider !== null) {\n return this._provider.isEnabled\n }\n return false\n }\n public enable() {\n // We have a store we want to track dynamic data access to ensure we\n // don't statically generate routes that manipulate draft mode.\n trackDynamicDraftMode('draftMode().enable()')\n if (this._provider !== null) {\n this._provider.enable()\n }\n }\n public disable() {\n trackDynamicDraftMode('draftMode().disable()')\n if (this._provider !== null) {\n this._provider.disable()\n }\n }\n}\n\nfunction syncIODev(route: string | undefined, expression: string) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (\n workUnitStore &&\n workUnitStore.type === 'request' &&\n workUnitStore.prerenderPhase === true\n ) {\n // When we're rendering dynamically in dev we need to advance out of the\n // Prerender environment when we read Request data synchronously\n const requestStore = workUnitStore\n trackSynchronousRequestDataAccessInDev(requestStore)\n }\n // In all cases we warn normally\n warnForSyncAccess(route, expression)\n}\n\nconst warnForSyncAccess = createDedupedByCallsiteServerErrorLoggerDev(\n createDraftModeAccessError\n)\n\nfunction createDraftModeAccessError(\n route: string | undefined,\n expression: string\n) {\n const prefix = route ? `Route \"${route}\" ` : 'This route '\n return new Error(\n `${prefix}used ${expression}. ` +\n `\\`draftMode()\\` should be awaited before using its value. ` +\n `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`\n )\n}\n\nfunction trackDynamicDraftMode(expression: string) {\n const store = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (store) {\n // We have a store we want to track dynamic data access to ensure we\n // don't statically generate routes that manipulate draft mode.\n if (workUnitStore) {\n if (workUnitStore.type === 'cache') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside \"use cache\". The enabled status of draftMode can be read in caches but you must not enable or disable draftMode inside a cache. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n } else if (workUnitStore.type === 'unstable-cache') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside a function cached with \"unstable_cache(...)\". The enabled status of draftMode can be read in caches but you must not enable or disable draftMode inside a cache. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`\n )\n } else if (workUnitStore.phase === 'after') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside \\`after\\`. The enabled status of draftMode can be read inside \\`after\\` but you cannot enable or disable draftMode. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`\n )\n }\n }\n\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n if (workUnitStore.type === 'prerender') {\n // dynamicIO Prerender\n const error = new Error(\n `Route ${store.route} used ${expression} without first calling \\`await connection()\\`. See more info here: https://nextjs.org/docs/messages/next-prerender-sync-headers`\n )\n abortAndThrowOnSynchronousRequestDataAccess(\n store.route,\n expression,\n error,\n workUnitStore\n )\n } else if (workUnitStore.type === 'prerender-ppr') {\n // PPR Prerender\n postponeWithTracking(\n store.route,\n expression,\n workUnitStore.dynamicTracking\n )\n } else if (workUnitStore.type === 'prerender-legacy') {\n // legacy Prerender\n workUnitStore.revalidate = 0\n\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n } else if (\n process.env.NODE_ENV === 'development' &&\n workUnitStore &&\n workUnitStore.type === 'request'\n ) {\n workUnitStore.usedDynamic = true\n }\n }\n }\n}\n"],"names":["draftMode","callingExpression","workStore","workAsyncStorage","getStore","workUnitStore","workUnitAsyncStorage","throwForMissingRequestStore","type","createOrGetCachedExoticDraftMode","draftModeProvider","getDraftModeProviderForCacheScope","process","env","NODE_ENV","isPrefetchRequest","route","createExoticDraftModeWithDevWarnings","createExoticDraftMode","_exhaustiveCheck","cachedDraftMode","CachedDraftModes","get","promise","set","WeakMap","underlyingProvider","instance","DraftMode","Promise","resolve","Object","defineProperty","isEnabled","newValue","value","writable","enumerable","configurable","enable","bind","disable","expression","syncIODev","apply","arguments","constructor","provider","_provider","trackDynamicDraftMode","prerenderPhase","requestStore","trackSynchronousRequestDataAccessInDev","warnForSyncAccess","createDedupedByCallsiteServerErrorLoggerDev","createDraftModeAccessError","prefix","Error","store","phase","dynamicShouldError","StaticGenBailoutError","error","abortAndThrowOnSynchronousRequestDataAccess","postponeWithTracking","dynamicTracking","revalidate","err","DynamicServerError","dynamicUsageDescription","dynamicUsageStack","stack","usedDynamic"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../src/server/request/draft-mode.ts"],"sourcesContent":["import {\n getDraftModeProviderForCacheScope,\n throwForMissingRequestStore,\n} from '../app-render/work-unit-async-storage.external'\n\nimport type { DraftModeProvider } from '../async-storage/draft-mode-provider'\n\nimport {\n workAsyncStorage,\n type WorkStore,\n} from '../app-render/work-async-storage.external'\nimport { workUnitAsyncStorage } from '../app-render/work-unit-async-storage.external'\nimport {\n abortAndThrowOnSynchronousRequestDataAccess,\n postponeWithTracking,\n trackSynchronousRequestDataAccessInDev,\n} from '../app-render/dynamic-rendering'\nimport { createDedupedByCallsiteServerErrorLoggerDev } from '../create-deduped-by-callsite-server-error-logger'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\n\n/**\n * In this version of Next.js `draftMode()` returns a Promise however you can still reference the properties of the underlying draftMode object\n * synchronously to facilitate migration. The `UnsafeUnwrappedDraftMode` type is added to your code by a codemod that attempts to automatically\n * updates callsites to reflect the new Promise return type. There are some cases where `draftMode()` cannot be automatically converted, namely\n * when it is used inside a synchronous function and we can't be sure the function can be made async automatically. In these cases we add an\n * explicit type case to `UnsafeUnwrappedDraftMode` to enable typescript to allow for the synchronous usage only where it is actually necessary.\n *\n * You should should update these callsites to either be async functions where the `draftMode()` value can be awaited or you should call `draftMode()`\n * from outside and await the return value before passing it into this function.\n *\n * You can find instances that require manual migration by searching for `UnsafeUnwrappedDraftMode` in your codebase or by search for a comment that\n * starts with `@next-codemod-error`.\n *\n * In a future version of Next.js `draftMode()` will only return a Promise and you will not be able to access the underlying draftMode object directly\n * without awaiting the return value first. When this change happens the type `UnsafeUnwrappedDraftMode` will be updated to reflect that is it no longer\n * usable.\n *\n * This type is marked deprecated to help identify it as target for refactoring away.\n *\n * @deprecated\n */\nexport type UnsafeUnwrappedDraftMode = DraftMode\n\nexport function draftMode(): Promise<DraftMode> {\n const callingExpression = 'draftMode'\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore || !workUnitStore) {\n throwForMissingRequestStore(callingExpression)\n }\n\n switch (workUnitStore.type) {\n case 'request':\n return createOrGetCachedExoticDraftMode(\n workUnitStore.draftMode,\n workStore\n )\n\n case 'cache':\n case 'unstable-cache':\n // Inside of `\"use cache\"` or `unstable_cache`, draft mode is available if\n // the outmost work unit store is a request store, and if draft mode is\n // enabled.\n const draftModeProvider = getDraftModeProviderForCacheScope(\n workStore,\n workUnitStore\n )\n\n if (draftModeProvider) {\n return createOrGetCachedExoticDraftMode(draftModeProvider, workStore)\n }\n\n // Otherwise, we fall through to providing an empty draft mode.\n // eslint-disable-next-line no-fallthrough\n case 'prerender':\n case 'prerender-ppr':\n case 'prerender-legacy':\n // Return empty draft mode\n if (\n process.env.NODE_ENV === 'development' &&\n !workStore?.isPrefetchRequest\n ) {\n const route = workStore?.route\n return createExoticDraftModeWithDevWarnings(null, route)\n } else {\n return createExoticDraftMode(null)\n }\n\n default:\n const _exhaustiveCheck: never = workUnitStore\n return _exhaustiveCheck\n }\n}\n\nfunction createOrGetCachedExoticDraftMode(\n draftModeProvider: DraftModeProvider,\n workStore: WorkStore | undefined\n): Promise<DraftMode> {\n const cachedDraftMode = CachedDraftModes.get(draftMode)\n\n if (cachedDraftMode) {\n return cachedDraftMode\n }\n\n let promise: Promise<DraftMode>\n\n if (process.env.NODE_ENV === 'development' && !workStore?.isPrefetchRequest) {\n const route = workStore?.route\n promise = createExoticDraftModeWithDevWarnings(draftModeProvider, route)\n } else {\n promise = createExoticDraftMode(draftModeProvider)\n }\n\n CachedDraftModes.set(draftModeProvider, promise)\n\n return promise\n}\n\ninterface CacheLifetime {}\nconst CachedDraftModes = new WeakMap<CacheLifetime, Promise<DraftMode>>()\n\nfunction createExoticDraftMode(\n underlyingProvider: null | DraftModeProvider\n): Promise<DraftMode> {\n const instance = new DraftMode(underlyingProvider)\n const promise = Promise.resolve(instance)\n\n Object.defineProperty(promise, 'isEnabled', {\n get() {\n return instance.isEnabled\n },\n enumerable: true,\n configurable: true,\n })\n ;(promise as any).enable = instance.enable.bind(instance)\n ;(promise as any).disable = instance.disable.bind(instance)\n\n return promise\n}\n\nfunction createExoticDraftModeWithDevWarnings(\n underlyingProvider: null | DraftModeProvider,\n route: undefined | string\n): Promise<DraftMode> {\n const instance = new DraftMode(underlyingProvider)\n const promise = Promise.resolve(instance)\n\n Object.defineProperty(promise, 'isEnabled', {\n get() {\n const expression = '`draftMode().isEnabled`'\n syncIODev(route, expression)\n return instance.isEnabled\n },\n enumerable: true,\n configurable: true,\n })\n\n Object.defineProperty(promise, 'enable', {\n value: function get() {\n const expression = '`draftMode().enable()`'\n syncIODev(route, expression)\n return instance.enable.apply(instance, arguments as any)\n },\n })\n\n Object.defineProperty(promise, 'disable', {\n value: function get() {\n const expression = '`draftMode().disable()`'\n syncIODev(route, expression)\n return instance.disable.apply(instance, arguments as any)\n },\n })\n\n return promise\n}\n\nclass DraftMode {\n /**\n * @internal - this declaration is stripped via `tsc --stripInternal`\n */\n private readonly _provider: null | DraftModeProvider\n\n constructor(provider: null | DraftModeProvider) {\n this._provider = provider\n }\n get isEnabled() {\n if (this._provider !== null) {\n return this._provider.isEnabled\n }\n return false\n }\n public enable() {\n // We have a store we want to track dynamic data access to ensure we\n // don't statically generate routes that manipulate draft mode.\n trackDynamicDraftMode('draftMode().enable()')\n if (this._provider !== null) {\n this._provider.enable()\n }\n }\n public disable() {\n trackDynamicDraftMode('draftMode().disable()')\n if (this._provider !== null) {\n this._provider.disable()\n }\n }\n}\n\nfunction syncIODev(route: string | undefined, expression: string) {\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (\n workUnitStore &&\n workUnitStore.type === 'request' &&\n workUnitStore.prerenderPhase === true\n ) {\n // When we're rendering dynamically in dev we need to advance out of the\n // Prerender environment when we read Request data synchronously\n const requestStore = workUnitStore\n trackSynchronousRequestDataAccessInDev(requestStore)\n }\n // In all cases we warn normally\n warnForSyncAccess(route, expression)\n}\n\nconst warnForSyncAccess = createDedupedByCallsiteServerErrorLoggerDev(\n createDraftModeAccessError\n)\n\nfunction createDraftModeAccessError(\n route: string | undefined,\n expression: string\n) {\n const prefix = route ? `Route \"${route}\" ` : 'This route '\n return new Error(\n `${prefix}used ${expression}. ` +\n `\\`draftMode()\\` should be awaited before using its value. ` +\n `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`\n )\n}\n\nfunction trackDynamicDraftMode(expression: string) {\n const store = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (store) {\n // We have a store we want to track dynamic data access to ensure we\n // don't statically generate routes that manipulate draft mode.\n if (workUnitStore) {\n if (workUnitStore.type === 'cache') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside \"use cache\". The enabled status of draftMode can be read in caches but you must not enable or disable draftMode inside a cache. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n } else if (workUnitStore.type === 'unstable-cache') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside a function cached with \"unstable_cache(...)\". The enabled status of draftMode can be read in caches but you must not enable or disable draftMode inside a cache. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`\n )\n } else if (workUnitStore.phase === 'after') {\n throw new Error(\n `Route ${store.route} used \"${expression}\" inside \\`after\\`. The enabled status of draftMode can be read inside \\`after\\` but you cannot enable or disable draftMode. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`\n )\n }\n }\n\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n if (workUnitStore.type === 'prerender') {\n // dynamicIO Prerender\n const error = new Error(\n `Route ${store.route} used ${expression} without first calling \\`await connection()\\`. See more info here: https://nextjs.org/docs/messages/next-prerender-sync-headers`\n )\n abortAndThrowOnSynchronousRequestDataAccess(\n store.route,\n expression,\n error,\n workUnitStore\n )\n } else if (workUnitStore.type === 'prerender-ppr') {\n // PPR Prerender\n postponeWithTracking(\n store.route,\n expression,\n workUnitStore.dynamicTracking\n )\n } else if (workUnitStore.type === 'prerender-legacy') {\n // legacy Prerender\n workUnitStore.revalidate = 0\n\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n } else if (\n process.env.NODE_ENV === 'development' &&\n workUnitStore &&\n workUnitStore.type === 'request'\n ) {\n workUnitStore.usedDynamic = true\n }\n }\n }\n}\n"],"names":["draftMode","callingExpression","workStore","workAsyncStorage","getStore","workUnitStore","workUnitAsyncStorage","throwForMissingRequestStore","type","createOrGetCachedExoticDraftMode","draftModeProvider","getDraftModeProviderForCacheScope","process","env","NODE_ENV","isPrefetchRequest","route","createExoticDraftModeWithDevWarnings","createExoticDraftMode","_exhaustiveCheck","cachedDraftMode","CachedDraftModes","get","promise","set","WeakMap","underlyingProvider","instance","DraftMode","Promise","resolve","Object","defineProperty","isEnabled","enumerable","configurable","enable","bind","disable","expression","syncIODev","value","apply","arguments","constructor","provider","_provider","trackDynamicDraftMode","prerenderPhase","requestStore","trackSynchronousRequestDataAccessInDev","warnForSyncAccess","createDedupedByCallsiteServerErrorLoggerDev","createDraftModeAccessError","prefix","Error","store","phase","dynamicShouldError","StaticGenBailoutError","error","abortAndThrowOnSynchronousRequestDataAccess","postponeWithTracking","dynamicTracking","revalidate","err","DynamicServerError","dynamicUsageDescription","dynamicUsageStack","stack","usedDynamic"],"mappings":"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","ignoreList":[0]}
@@ -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.4.0-canary.17") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
25
+ return !((_process_env___NEXT_VERSION = "15.4.0-canary.18") == 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){
@@ -81,7 +81,7 @@ function getAnonymousMeta() {
81
81
  isWsl: _iswsl.default,
82
82
  isCI: _ciinfo.isCI,
83
83
  ciName: _ciinfo.isCI && _ciinfo.name || null,
84
- nextVersion: "15.4.0-canary.17"
84
+ nextVersion: "15.4.0-canary.18"
85
85
  };
86
86
  return traits;
87
87
  }
@@ -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.4.0-canary.17" !== 'string') {
14
+ if (typeof "15.4.0-canary.18" !== 'string') {
15
15
  return [];
16
16
  }
17
17
  const payload = {
18
- nextVersion: "15.4.0-canary.17",
18
+ nextVersion: "15.4.0-canary.18",
19
19
  nodeVersion: process.version,
20
20
  cliCommand: event.cliCommand,
21
21
  durationMilliseconds: event.durationMilliseconds,
@@ -36,12 +36,12 @@ function hasBabelConfig(dir) {
36
36
  function eventCliSession(dir, nextConfig, event) {
37
37
  var _nextConfig_experimental_staleTimes, _nextConfig_experimental_staleTimes1, _nextConfig_experimental_reactCompiler, _nextConfig_experimental_reactCompiler1;
38
38
  // This should be an invariant, if it fails our build tooling is broken.
39
- if (typeof "15.4.0-canary.17" !== 'string') {
39
+ if (typeof "15.4.0-canary.18" !== 'string') {
40
40
  return [];
41
41
  }
42
42
  const { images, i18n } = nextConfig || {};
43
43
  const payload = {
44
- nextVersion: "15.4.0-canary.17",
44
+ nextVersion: "15.4.0-canary.18",
45
45
  nodeVersion: process.version,
46
46
  cliCommand: event.cliCommand,
47
47
  isSrcDir: event.isSrcDir,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next",
3
- "version": "15.4.0-canary.17",
3
+ "version": "15.4.0-canary.18",
4
4
  "description": "The React Framework",
5
5
  "main": "./dist/server/next.js",
6
6
  "license": "MIT",
@@ -100,7 +100,7 @@
100
100
  ]
101
101
  },
102
102
  "dependencies": {
103
- "@next/env": "15.4.0-canary.17",
103
+ "@next/env": "15.4.0-canary.18",
104
104
  "@swc/helpers": "0.5.15",
105
105
  "caniuse-lite": "^1.0.30001579",
106
106
  "postcss": "8.4.31",
@@ -130,14 +130,14 @@
130
130
  },
131
131
  "optionalDependencies": {
132
132
  "sharp": "^0.34.1",
133
- "@next/swc-darwin-arm64": "15.4.0-canary.17",
134
- "@next/swc-darwin-x64": "15.4.0-canary.17",
135
- "@next/swc-linux-arm64-gnu": "15.4.0-canary.17",
136
- "@next/swc-linux-arm64-musl": "15.4.0-canary.17",
137
- "@next/swc-linux-x64-gnu": "15.4.0-canary.17",
138
- "@next/swc-linux-x64-musl": "15.4.0-canary.17",
139
- "@next/swc-win32-arm64-msvc": "15.4.0-canary.17",
140
- "@next/swc-win32-x64-msvc": "15.4.0-canary.17"
133
+ "@next/swc-darwin-arm64": "15.4.0-canary.18",
134
+ "@next/swc-darwin-x64": "15.4.0-canary.18",
135
+ "@next/swc-linux-arm64-gnu": "15.4.0-canary.18",
136
+ "@next/swc-linux-arm64-musl": "15.4.0-canary.18",
137
+ "@next/swc-linux-x64-gnu": "15.4.0-canary.18",
138
+ "@next/swc-linux-x64-musl": "15.4.0-canary.18",
139
+ "@next/swc-win32-arm64-msvc": "15.4.0-canary.18",
140
+ "@next/swc-win32-x64-msvc": "15.4.0-canary.18"
141
141
  },
142
142
  "devDependencies": {
143
143
  "@ampproject/toolbox-optimizer": "2.8.3",
@@ -170,11 +170,11 @@
170
170
  "@jest/types": "29.5.0",
171
171
  "@mswjs/interceptors": "0.23.0",
172
172
  "@napi-rs/triples": "1.2.0",
173
- "@next/font": "15.4.0-canary.17",
174
- "@next/polyfill-module": "15.4.0-canary.17",
175
- "@next/polyfill-nomodule": "15.4.0-canary.17",
176
- "@next/react-refresh-utils": "15.4.0-canary.17",
177
- "@next/swc": "15.4.0-canary.17",
173
+ "@next/font": "15.4.0-canary.18",
174
+ "@next/polyfill-module": "15.4.0-canary.18",
175
+ "@next/polyfill-nomodule": "15.4.0-canary.18",
176
+ "@next/react-refresh-utils": "15.4.0-canary.18",
177
+ "@next/swc": "15.4.0-canary.18",
178
178
  "@opentelemetry/api": "1.6.0",
179
179
  "@playwright/test": "1.41.2",
180
180
  "@storybook/addon-a11y": "8.6.0",