next 16.2.0-canary.1 → 16.2.0-canary.2

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 (97) hide show
  1. package/dist/.build-commit +1 -1
  2. package/dist/bin/next +2 -2
  3. package/dist/build/define-env.js +1 -1
  4. package/dist/build/define-env.js.map +1 -1
  5. package/dist/build/index.js +3 -3
  6. package/dist/build/swc/index.js +1 -1
  7. package/dist/build/webpack-config.js +3 -3
  8. package/dist/bundle-analyzer/404.html +2 -2
  9. package/dist/bundle-analyzer/__next.__PAGE__.txt +1 -1
  10. package/dist/bundle-analyzer/__next._full.txt +1 -1
  11. package/dist/bundle-analyzer/__next._head.txt +1 -1
  12. package/dist/bundle-analyzer/__next._index.txt +1 -1
  13. package/dist/bundle-analyzer/__next._tree.txt +1 -1
  14. package/dist/bundle-analyzer/_not-found/__next._full.txt +1 -1
  15. package/dist/bundle-analyzer/_not-found/__next._head.txt +1 -1
  16. package/dist/bundle-analyzer/_not-found/__next._index.txt +1 -1
  17. package/dist/bundle-analyzer/_not-found/__next._not-found.__PAGE__.txt +1 -1
  18. package/dist/bundle-analyzer/_not-found/__next._not-found.txt +1 -1
  19. package/dist/bundle-analyzer/_not-found/__next._tree.txt +1 -1
  20. package/dist/bundle-analyzer/_not-found.html +2 -2
  21. package/dist/bundle-analyzer/_not-found.txt +1 -1
  22. package/dist/bundle-analyzer/index.html +2 -2
  23. package/dist/bundle-analyzer/index.txt +1 -1
  24. package/dist/client/app-bootstrap.js +1 -1
  25. package/dist/client/index.js +1 -1
  26. package/dist/compiled/next-devtools/index.js +1 -1
  27. package/dist/compiled/next-devtools/index.js.map +1 -1
  28. package/dist/compiled/next-server/pages-api.runtime.prod.js +1 -1
  29. package/dist/compiled/next-server/pages-api.runtime.prod.js.map +1 -1
  30. package/dist/compiled/next-server/pages.runtime.prod.js +1 -1
  31. package/dist/compiled/next-server/pages.runtime.prod.js.map +1 -1
  32. package/dist/compiled/next-server/server.runtime.prod.js +1 -1
  33. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  34. package/dist/esm/build/define-env.js +1 -1
  35. package/dist/esm/build/define-env.js.map +1 -1
  36. package/dist/esm/build/index.js +3 -3
  37. package/dist/esm/build/swc/index.js +1 -1
  38. package/dist/esm/build/webpack-config.js +3 -3
  39. package/dist/esm/client/app-bootstrap.js +1 -1
  40. package/dist/esm/client/index.js +1 -1
  41. package/dist/esm/next-devtools/shared/stack-frame.js +5 -5
  42. package/dist/esm/next-devtools/shared/stack-frame.js.map +1 -1
  43. package/dist/esm/next-devtools/shared/webpack-module-path.js +1 -1
  44. package/dist/esm/next-devtools/shared/webpack-module-path.js.map +1 -1
  45. package/dist/esm/server/config-schema.js +7 -0
  46. package/dist/esm/server/config-schema.js.map +1 -1
  47. package/dist/esm/server/config-shared.js.map +1 -1
  48. package/dist/esm/server/config.js +23 -6
  49. package/dist/esm/server/config.js.map +1 -1
  50. package/dist/esm/server/dev/browser-logs/receive-logs.js +1 -3
  51. package/dist/esm/server/dev/browser-logs/receive-logs.js.map +1 -1
  52. package/dist/esm/server/dev/browser-logs/source-map.js +1 -4
  53. package/dist/esm/server/dev/browser-logs/source-map.js.map +1 -1
  54. package/dist/esm/server/dev/hot-reloader-turbopack.js +4 -3
  55. package/dist/esm/server/dev/hot-reloader-turbopack.js.map +1 -1
  56. package/dist/esm/server/dev/hot-reloader-webpack.js +4 -3
  57. package/dist/esm/server/dev/hot-reloader-webpack.js.map +1 -1
  58. package/dist/esm/server/dev/middleware-webpack.js +2 -2
  59. package/dist/esm/server/dev/middleware-webpack.js.map +1 -1
  60. package/dist/esm/server/lib/app-info-log.js +1 -1
  61. package/dist/esm/server/lib/start-server.js +1 -1
  62. package/dist/esm/shared/lib/errors/canary-only-config-error.js +1 -1
  63. package/dist/next-devtools/dev-overlay/components/call-stack-frame/call-stack-frame.d.ts +1 -1
  64. package/dist/next-devtools/shared/stack-frame.d.ts +1 -1
  65. package/dist/next-devtools/shared/stack-frame.js +9 -9
  66. package/dist/next-devtools/shared/stack-frame.js.map +1 -1
  67. package/dist/next-devtools/shared/webpack-module-path.d.ts +1 -1
  68. package/dist/next-devtools/shared/webpack-module-path.js +4 -4
  69. package/dist/next-devtools/shared/webpack-module-path.js.map +1 -1
  70. package/dist/server/config-schema.js +7 -0
  71. package/dist/server/config-schema.js.map +1 -1
  72. package/dist/server/config-shared.d.ts +10 -0
  73. package/dist/server/config-shared.js.map +1 -1
  74. package/dist/server/config.js +23 -6
  75. package/dist/server/config.js.map +1 -1
  76. package/dist/server/dev/browser-logs/receive-logs.d.ts +1 -5
  77. package/dist/server/dev/browser-logs/receive-logs.js +1 -3
  78. package/dist/server/dev/browser-logs/receive-logs.js.map +1 -1
  79. package/dist/server/dev/browser-logs/source-map.d.ts +1 -4
  80. package/dist/server/dev/browser-logs/source-map.js +1 -4
  81. package/dist/server/dev/browser-logs/source-map.js.map +1 -1
  82. package/dist/server/dev/hot-reloader-turbopack.js +4 -3
  83. package/dist/server/dev/hot-reloader-turbopack.js.map +1 -1
  84. package/dist/server/dev/hot-reloader-webpack.js +4 -3
  85. package/dist/server/dev/hot-reloader-webpack.js.map +1 -1
  86. package/dist/server/dev/middleware-webpack.js +1 -1
  87. package/dist/server/dev/middleware-webpack.js.map +1 -1
  88. package/dist/server/lib/app-info-log.js +1 -1
  89. package/dist/server/lib/start-server.js +1 -1
  90. package/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  91. package/dist/telemetry/anonymous-meta.js +1 -1
  92. package/dist/telemetry/events/session-stopped.js +2 -2
  93. package/dist/telemetry/events/version.js +2 -2
  94. package/package.json +15 -15
  95. /package/dist/bundle-analyzer/_next/static/{nf72XAMLkW3IWwd7evK6l → H1pZGGFy24tVYIk0cE8HL}/_buildManifest.js +0 -0
  96. /package/dist/bundle-analyzer/_next/static/{nf72XAMLkW3IWwd7evK6l → H1pZGGFy24tVYIk0cE8HL}/_clientMiddlewareManifest.json +0 -0
  97. /package/dist/bundle-analyzer/_next/static/{nf72XAMLkW3IWwd7evK6l → H1pZGGFy24tVYIk0cE8HL}/_ssgManifest.js +0 -0
@@ -156,7 +156,7 @@ export function getDefineEnv({ isTurbopack, clientRouterFilters, config, dev, di
156
156
  'process.env.__NEXT_RELATIVE_DIST_DIR': config.distDir,
157
157
  'process.env.__NEXT_RELATIVE_PROJECT_DIR': path.relative(process.cwd(), projectPath)
158
158
  } : {},
159
- 'process.env.__NEXT_BROWSER_DEBUG_INFO_IN_TERMINAL': JSON.stringify(config.experimental.browserDebugInfoInTerminal || false),
159
+ 'process.env.__NEXT_BROWSER_DEBUG_INFO_IN_TERMINAL': JSON.stringify(config.logging && config.logging.browserToTerminal || false),
160
160
  'process.env.__NEXT_MCP_SERVER': !!config.experimental.mcpServer,
161
161
  // The devtools need to know whether or not to show an option to clear the
162
162
  // bundler cache. This option may be removed later once Turbopack's
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/build/define-env.ts"],"sourcesContent":["import type {\n I18NConfig,\n I18NDomains,\n NextConfigComplete,\n} from '../server/config-shared'\nimport type { ProxyMatcher } from './analysis/get-page-static-info'\nimport type { Rewrite } from '../lib/load-custom-routes'\nimport path from 'node:path'\nimport { needsExperimentalReact } from '../lib/needs-experimental-react'\nimport { checkIsAppPPREnabled } from '../server/lib/experimental/ppr'\nimport {\n getNextConfigEnv,\n getNextPublicEnvironmentVariables,\n} from '../lib/static-env'\n\ntype BloomFilter = ReturnType<\n import('../shared/lib/bloom-filter').BloomFilter['export']\n>\n\nexport interface DefineEnvOptions {\n isTurbopack: boolean\n clientRouterFilters?: {\n staticFilter: BloomFilter\n dynamicFilter: BloomFilter\n }\n config: NextConfigComplete\n dev: boolean\n distDir: string\n projectPath: string\n fetchCacheKeyPrefix: string | undefined\n hasRewrites: boolean\n isClient: boolean\n isEdgeServer: boolean\n isNodeServer: boolean\n middlewareMatchers: ProxyMatcher[] | undefined\n omitNonDeterministic?: boolean\n rewrites: {\n beforeFiles: Rewrite[]\n afterFiles: Rewrite[]\n fallback: Rewrite[]\n }\n}\n\nconst DEFINE_ENV_EXPRESSION = Symbol('DEFINE_ENV_EXPRESSION')\n\ninterface DefineEnv {\n [key: string]:\n | string\n | string[]\n | boolean\n | { [DEFINE_ENV_EXPRESSION]: string }\n | ProxyMatcher[]\n | BloomFilter\n | Partial<NextConfigComplete['images']>\n | I18NDomains\n | I18NConfig\n}\n\ninterface SerializedDefineEnv {\n [key: string]: string\n}\n\n/**\n * Serializes the DefineEnv config so that it can be inserted into the code by Webpack/Turbopack, JSON stringifies each value.\n */\nfunction serializeDefineEnv(defineEnv: DefineEnv): SerializedDefineEnv {\n const defineEnvStringified: SerializedDefineEnv = Object.fromEntries(\n Object.entries(defineEnv).map(([key, value]) => [\n key,\n typeof value === 'object' && DEFINE_ENV_EXPRESSION in value\n ? value[DEFINE_ENV_EXPRESSION]\n : JSON.stringify(value),\n ])\n )\n return defineEnvStringified\n}\n\nfunction getImageConfig(\n config: NextConfigComplete,\n dev: boolean\n): { 'process.env.__NEXT_IMAGE_OPTS': Partial<NextConfigComplete['images']> } {\n return {\n 'process.env.__NEXT_IMAGE_OPTS': {\n deviceSizes: config.images.deviceSizes,\n imageSizes: config.images.imageSizes,\n qualities: config.images.qualities,\n path: config.images.path,\n loader: config.images.loader,\n dangerouslyAllowSVG: config.images.dangerouslyAllowSVG,\n unoptimized: config?.images?.unoptimized,\n ...(dev\n ? {\n // additional config in dev to allow validating on the client\n domains: config.images.domains,\n remotePatterns: config.images?.remotePatterns,\n localPatterns: config.images?.localPatterns,\n output: config.output,\n }\n : {}),\n },\n }\n}\n\nexport function getDefineEnv({\n isTurbopack,\n clientRouterFilters,\n config,\n dev,\n distDir,\n projectPath,\n fetchCacheKeyPrefix,\n hasRewrites,\n isClient,\n isEdgeServer,\n isNodeServer,\n middlewareMatchers,\n omitNonDeterministic,\n rewrites,\n}: DefineEnvOptions): SerializedDefineEnv {\n const nextPublicEnv = getNextPublicEnvironmentVariables()\n const nextConfigEnv = getNextConfigEnv(config)\n\n const isPPREnabled = checkIsAppPPREnabled(config.experimental.ppr)\n const isCacheComponentsEnabled = !!config.cacheComponents\n const isUseCacheEnabled = !!config.experimental.useCache\n\n const defineEnv: DefineEnv = {\n // internal field to identify the plugin config\n __NEXT_DEFINE_ENV: true,\n\n ...nextPublicEnv,\n ...nextConfigEnv,\n ...(!isEdgeServer\n ? {}\n : {\n EdgeRuntime:\n /**\n * Cloud providers can set this environment variable to allow users\n * and library authors to have different implementations based on\n * the runtime they are running with, if it's not using `edge-runtime`\n */\n process.env.NEXT_EDGE_RUNTIME_PROVIDER ?? 'edge-runtime',\n\n // process should be only { env: {...} } for edge runtime.\n // For ignore avoid warn on `process.emit` usage but directly omit it.\n 'process.emit': false,\n }),\n 'process.turbopack': isTurbopack,\n 'process.env.TURBOPACK': isTurbopack,\n 'process.env.__NEXT_BUNDLER': isTurbopack\n ? 'Turbopack'\n : process.env.NEXT_RSPACK\n ? 'Rspack'\n : 'Webpack',\n // TODO: enforce `NODE_ENV` on `process.env`, and add a test:\n 'process.env.NODE_ENV':\n dev || config.experimental.allowDevelopmentBuild\n ? 'development'\n : 'production',\n 'process.env.NEXT_RUNTIME': isEdgeServer\n ? 'edge'\n : isNodeServer\n ? 'nodejs'\n : '',\n 'process.env.NEXT_MINIMAL': '',\n 'process.env.__NEXT_APP_NAV_FAIL_HANDLING': Boolean(\n config.experimental.appNavFailHandling\n ),\n 'process.env.__NEXT_PPR': isPPREnabled,\n 'process.env.__NEXT_CACHE_COMPONENTS': isCacheComponentsEnabled,\n 'process.env.__NEXT_USE_CACHE': isUseCacheEnabled,\n\n ...(config.experimental?.useSkewCookie || !config.deploymentId\n ? {\n 'process.env.NEXT_DEPLOYMENT_ID': false,\n }\n : isClient\n ? isTurbopack\n ? {\n // This is set at runtime by packages/next/src/client/register-deployment-id-global.ts\n 'process.env.NEXT_DEPLOYMENT_ID': {\n [DEFINE_ENV_EXPRESSION]: 'globalThis.NEXT_DEPLOYMENT_ID',\n },\n }\n : {\n // For Webpack, we currently don't use the non-inlining globalThis.NEXT_DEPLOYMENT_ID\n // approach because we cannot forward this global variable to web workers easily.\n 'process.env.NEXT_DEPLOYMENT_ID': config.deploymentId || false,\n }\n : config.experimental?.runtimeServerDeploymentId\n ? {\n // Don't inline at all, keep process.env.NEXT_DEPLOYMENT_ID as is\n }\n : {\n 'process.env.NEXT_DEPLOYMENT_ID': config.deploymentId || false,\n }),\n\n // Propagates the `__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING` environment\n // variable to the client.\n 'process.env.__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING':\n process.env.__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING || false,\n 'process.env.__NEXT_FETCH_CACHE_KEY_PREFIX': fetchCacheKeyPrefix ?? '',\n ...(isTurbopack\n ? {}\n : {\n 'process.env.__NEXT_MIDDLEWARE_MATCHERS': middlewareMatchers ?? [],\n }),\n 'process.env.__NEXT_MANUAL_CLIENT_BASE_PATH':\n config.experimental.manualClientBasePath ?? false,\n 'process.env.__NEXT_CLIENT_ROUTER_DYNAMIC_STALETIME': JSON.stringify(\n isNaN(Number(config.experimental.staleTimes?.dynamic))\n ? 0\n : config.experimental.staleTimes?.dynamic\n ),\n 'process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME': JSON.stringify(\n isNaN(Number(config.experimental.staleTimes?.static))\n ? 5 * 60 // 5 minutes\n : config.experimental.staleTimes?.static\n ),\n 'process.env.__NEXT_CLIENT_ROUTER_FILTER_ENABLED':\n config.experimental.clientRouterFilter ?? true,\n 'process.env.__NEXT_CLIENT_ROUTER_S_FILTER':\n clientRouterFilters?.staticFilter ?? false,\n 'process.env.__NEXT_CLIENT_ROUTER_D_FILTER':\n clientRouterFilters?.dynamicFilter ?? false,\n 'process.env.__NEXT_CLIENT_VALIDATE_RSC_REQUEST_HEADERS': Boolean(\n config.experimental.validateRSCRequestHeaders\n ),\n 'process.env.__NEXT_DYNAMIC_ON_HOVER': Boolean(\n config.experimental.dynamicOnHover\n ),\n 'process.env.__NEXT_OPTIMISTIC_CLIENT_CACHE':\n config.experimental.optimisticClientCache ?? true,\n 'process.env.__NEXT_MIDDLEWARE_PREFETCH':\n config.experimental.proxyPrefetch ?? 'flexible',\n 'process.env.__NEXT_CROSS_ORIGIN': config.crossOrigin,\n 'process.browser': isClient,\n 'process.env.__NEXT_TEST_MODE': process.env.__NEXT_TEST_MODE ?? false,\n // This is used in client/dev-error-overlay/hot-dev-client.js to replace the dist directory\n ...(dev && (isClient ?? isEdgeServer)\n ? {\n 'process.env.__NEXT_DIST_DIR': distDir,\n }\n : {}),\n // This is used in devtools to strip the project path in edge runtime,\n // as there's only a dummy `dir` value (`.`) as edge runtime doesn't have concept of file system.\n ...(dev && isEdgeServer\n ? {\n 'process.env.__NEXT_EDGE_PROJECT_DIR': isTurbopack\n ? path.relative(process.cwd(), projectPath)\n : projectPath,\n }\n : {}),\n 'process.env.__NEXT_BASE_PATH': config.basePath,\n 'process.env.__NEXT_CASE_SENSITIVE_ROUTES': Boolean(\n config.experimental.caseSensitiveRoutes\n ),\n 'process.env.__NEXT_REWRITES': rewrites as any,\n 'process.env.__NEXT_TRAILING_SLASH': config.trailingSlash,\n 'process.env.__NEXT_DEV_INDICATOR': config.devIndicators !== false,\n 'process.env.__NEXT_DEV_INDICATOR_POSITION':\n config.devIndicators === false\n ? 'bottom-left' // This will not be used as the indicator is disabled.\n : (config.devIndicators.position ?? 'bottom-left'),\n 'process.env.__NEXT_STRICT_MODE':\n config.reactStrictMode === null ? false : config.reactStrictMode,\n 'process.env.__NEXT_STRICT_MODE_APP':\n // When next.config.js does not have reactStrictMode it's enabled by default.\n config.reactStrictMode === null ? true : config.reactStrictMode,\n 'process.env.__NEXT_OPTIMIZE_CSS':\n (config.experimental.optimizeCss && !dev) ?? false,\n 'process.env.__NEXT_SCRIPT_WORKERS':\n (config.experimental.nextScriptWorkers && !dev) ?? false,\n 'process.env.__NEXT_SCROLL_RESTORATION':\n config.experimental.scrollRestoration ?? false,\n ...getImageConfig(config, dev),\n 'process.env.__NEXT_ROUTER_BASEPATH': config.basePath,\n 'process.env.__NEXT_HAS_REWRITES': hasRewrites,\n 'process.env.__NEXT_CONFIG_OUTPUT': config.output,\n 'process.env.__NEXT_I18N_SUPPORT': !!config.i18n,\n 'process.env.__NEXT_I18N_DOMAINS': config.i18n?.domains ?? false,\n 'process.env.__NEXT_I18N_CONFIG': config.i18n || '',\n 'process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE':\n config.skipProxyUrlNormalize,\n 'process.env.__NEXT_EXTERNAL_MIDDLEWARE_REWRITE_RESOLVE':\n config.experimental.externalProxyRewritesResolve ?? false,\n 'process.env.__NEXT_MANUAL_TRAILING_SLASH':\n config.skipTrailingSlashRedirect,\n 'process.env.__NEXT_HAS_WEB_VITALS_ATTRIBUTION':\n (config.experimental.webVitalsAttribution &&\n config.experimental.webVitalsAttribution.length > 0) ??\n false,\n 'process.env.__NEXT_WEB_VITALS_ATTRIBUTION':\n config.experimental.webVitalsAttribution ?? false,\n 'process.env.__NEXT_LINK_NO_TOUCH_START':\n config.experimental.linkNoTouchStart ?? false,\n 'process.env.__NEXT_ASSET_PREFIX': config.assetPrefix,\n 'process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS':\n !!config.experimental.authInterrupts,\n 'process.env.__NEXT_TELEMETRY_DISABLED': Boolean(\n process.env.NEXT_TELEMETRY_DISABLED\n ),\n ...(isNodeServer || isEdgeServer\n ? {\n // Fix bad-actors in the npm ecosystem (e.g. `node-formidable`)\n // This is typically found in unmaintained modules from the\n // pre-webpack era (common in server-side code)\n 'global.GENTLY': false,\n }\n : undefined),\n ...(isNodeServer || isEdgeServer\n ? {\n 'process.env.__NEXT_EXPERIMENTAL_REACT':\n needsExperimentalReact(config),\n }\n : undefined),\n\n 'process.env.__NEXT_MULTI_ZONE_DRAFT_MODE':\n config.experimental.multiZoneDraftMode ?? false,\n 'process.env.__NEXT_TRUST_HOST_HEADER':\n config.experimental.trustHostHeader ?? false,\n 'process.env.__NEXT_ALLOWED_REVALIDATE_HEADERS':\n config.experimental.allowedRevalidateHeaderKeys ?? [],\n ...(isNodeServer || isEdgeServer\n ? {\n 'process.env.__NEXT_RELATIVE_DIST_DIR': config.distDir,\n 'process.env.__NEXT_RELATIVE_PROJECT_DIR': path.relative(\n process.cwd(),\n projectPath\n ),\n }\n : {}),\n\n 'process.env.__NEXT_BROWSER_DEBUG_INFO_IN_TERMINAL': JSON.stringify(\n config.experimental.browserDebugInfoInTerminal || false\n ),\n 'process.env.__NEXT_MCP_SERVER': !!config.experimental.mcpServer,\n\n // The devtools need to know whether or not to show an option to clear the\n // bundler cache. This option may be removed later once Turbopack's\n // filesystem cache feature is more stable.\n //\n // This environment value is currently best-effort:\n // - It's possible to disable the webpack filesystem cache, but it's\n // unlikely for a user to do that.\n // - Rspack's filesystem cache is unstable and requires a different\n // configuration than webpack to enable (which we don't do).\n //\n // In the worst case we'll show an option to clear the cache, but it'll be a\n // no-op that just restarts the development server.\n 'process.env.__NEXT_BUNDLER_HAS_PERSISTENT_CACHE':\n !isTurbopack ||\n (config.experimental.turbopackFileSystemCacheForDev ?? false),\n 'process.env.__NEXT_REACT_DEBUG_CHANNEL':\n config.experimental.reactDebugChannel ?? false,\n 'process.env.__NEXT_TRANSITION_INDICATOR':\n config.experimental.transitionIndicator ?? false,\n 'process.env.__NEXT_GESTURE_TRANSITION':\n config.experimental.gestureTransition ?? false,\n 'process.env.__NEXT_CACHE_LIFE': config.cacheLife,\n 'process.env.__NEXT_CLIENT_PARAM_PARSING_ORIGINS':\n config.experimental.clientParamParsingOrigins || [],\n }\n\n const userDefines = config.compiler?.define ?? {}\n for (const key in userDefines) {\n if (defineEnv.hasOwnProperty(key)) {\n throw new Error(\n `The \\`compiler.define\\` option is configured to replace the \\`${key}\\` variable. This variable is either part of a Next.js built-in or is already configured.`\n )\n }\n defineEnv[key] = userDefines[key]\n }\n\n if (isNodeServer || isEdgeServer) {\n const userDefinesServer = config.compiler?.defineServer ?? {}\n for (const key in userDefinesServer) {\n if (defineEnv.hasOwnProperty(key)) {\n throw new Error(\n `The \\`compiler.defineServer\\` option is configured to replace the \\`${key}\\` variable. This variable is either part of a Next.js built-in or is already configured.`\n )\n }\n defineEnv[key] = userDefinesServer[key]\n }\n }\n\n const serializedDefineEnv = serializeDefineEnv(defineEnv)\n\n // we delay inlining these values until after the build\n // with flying shuttle enabled so we can update them\n // without invalidating entries\n if (!dev && omitNonDeterministic) {\n // client uses window. instead of leaving process.env\n // in case process isn't polyfilled on client already\n // since by this point it won't be added by webpack\n const safeKey = (key: string) =>\n isClient ? `window.${key.split('.').pop()}` : key\n\n for (const key in nextPublicEnv) {\n serializedDefineEnv[key] = safeKey(key)\n }\n for (const key in nextConfigEnv) {\n serializedDefineEnv[key] = safeKey(key)\n }\n if (!config.experimental.runtimeServerDeploymentId) {\n for (const key of ['process.env.NEXT_DEPLOYMENT_ID']) {\n serializedDefineEnv[key] = safeKey(key)\n }\n }\n }\n\n return serializedDefineEnv\n}\n"],"names":["path","needsExperimentalReact","checkIsAppPPREnabled","getNextConfigEnv","getNextPublicEnvironmentVariables","DEFINE_ENV_EXPRESSION","Symbol","serializeDefineEnv","defineEnv","defineEnvStringified","Object","fromEntries","entries","map","key","value","JSON","stringify","getImageConfig","config","dev","deviceSizes","images","imageSizes","qualities","loader","dangerouslyAllowSVG","unoptimized","domains","remotePatterns","localPatterns","output","getDefineEnv","isTurbopack","clientRouterFilters","distDir","projectPath","fetchCacheKeyPrefix","hasRewrites","isClient","isEdgeServer","isNodeServer","middlewareMatchers","omitNonDeterministic","rewrites","nextPublicEnv","nextConfigEnv","isPPREnabled","experimental","ppr","isCacheComponentsEnabled","cacheComponents","isUseCacheEnabled","useCache","__NEXT_DEFINE_ENV","EdgeRuntime","process","env","NEXT_EDGE_RUNTIME_PROVIDER","NEXT_RSPACK","allowDevelopmentBuild","Boolean","appNavFailHandling","useSkewCookie","deploymentId","runtimeServerDeploymentId","__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING","manualClientBasePath","isNaN","Number","staleTimes","dynamic","static","clientRouterFilter","staticFilter","dynamicFilter","validateRSCRequestHeaders","dynamicOnHover","optimisticClientCache","proxyPrefetch","crossOrigin","__NEXT_TEST_MODE","relative","cwd","basePath","caseSensitiveRoutes","trailingSlash","devIndicators","position","reactStrictMode","optimizeCss","nextScriptWorkers","scrollRestoration","i18n","skipProxyUrlNormalize","externalProxyRewritesResolve","skipTrailingSlashRedirect","webVitalsAttribution","length","linkNoTouchStart","assetPrefix","authInterrupts","NEXT_TELEMETRY_DISABLED","undefined","multiZoneDraftMode","trustHostHeader","allowedRevalidateHeaderKeys","browserDebugInfoInTerminal","mcpServer","turbopackFileSystemCacheForDev","reactDebugChannel","transitionIndicator","gestureTransition","cacheLife","clientParamParsingOrigins","userDefines","compiler","define","hasOwnProperty","Error","userDefinesServer","defineServer","serializedDefineEnv","safeKey","split","pop"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../src/build/define-env.ts"],"sourcesContent":["import type {\n I18NConfig,\n I18NDomains,\n NextConfigComplete,\n} from '../server/config-shared'\nimport type { ProxyMatcher } from './analysis/get-page-static-info'\nimport type { Rewrite } from '../lib/load-custom-routes'\nimport path from 'node:path'\nimport { needsExperimentalReact } from '../lib/needs-experimental-react'\nimport { checkIsAppPPREnabled } from '../server/lib/experimental/ppr'\nimport {\n getNextConfigEnv,\n getNextPublicEnvironmentVariables,\n} from '../lib/static-env'\n\ntype BloomFilter = ReturnType<\n import('../shared/lib/bloom-filter').BloomFilter['export']\n>\n\nexport interface DefineEnvOptions {\n isTurbopack: boolean\n clientRouterFilters?: {\n staticFilter: BloomFilter\n dynamicFilter: BloomFilter\n }\n config: NextConfigComplete\n dev: boolean\n distDir: string\n projectPath: string\n fetchCacheKeyPrefix: string | undefined\n hasRewrites: boolean\n isClient: boolean\n isEdgeServer: boolean\n isNodeServer: boolean\n middlewareMatchers: ProxyMatcher[] | undefined\n omitNonDeterministic?: boolean\n rewrites: {\n beforeFiles: Rewrite[]\n afterFiles: Rewrite[]\n fallback: Rewrite[]\n }\n}\n\nconst DEFINE_ENV_EXPRESSION = Symbol('DEFINE_ENV_EXPRESSION')\n\ninterface DefineEnv {\n [key: string]:\n | string\n | string[]\n | boolean\n | { [DEFINE_ENV_EXPRESSION]: string }\n | ProxyMatcher[]\n | BloomFilter\n | Partial<NextConfigComplete['images']>\n | I18NDomains\n | I18NConfig\n}\n\ninterface SerializedDefineEnv {\n [key: string]: string\n}\n\n/**\n * Serializes the DefineEnv config so that it can be inserted into the code by Webpack/Turbopack, JSON stringifies each value.\n */\nfunction serializeDefineEnv(defineEnv: DefineEnv): SerializedDefineEnv {\n const defineEnvStringified: SerializedDefineEnv = Object.fromEntries(\n Object.entries(defineEnv).map(([key, value]) => [\n key,\n typeof value === 'object' && DEFINE_ENV_EXPRESSION in value\n ? value[DEFINE_ENV_EXPRESSION]\n : JSON.stringify(value),\n ])\n )\n return defineEnvStringified\n}\n\nfunction getImageConfig(\n config: NextConfigComplete,\n dev: boolean\n): { 'process.env.__NEXT_IMAGE_OPTS': Partial<NextConfigComplete['images']> } {\n return {\n 'process.env.__NEXT_IMAGE_OPTS': {\n deviceSizes: config.images.deviceSizes,\n imageSizes: config.images.imageSizes,\n qualities: config.images.qualities,\n path: config.images.path,\n loader: config.images.loader,\n dangerouslyAllowSVG: config.images.dangerouslyAllowSVG,\n unoptimized: config?.images?.unoptimized,\n ...(dev\n ? {\n // additional config in dev to allow validating on the client\n domains: config.images.domains,\n remotePatterns: config.images?.remotePatterns,\n localPatterns: config.images?.localPatterns,\n output: config.output,\n }\n : {}),\n },\n }\n}\n\nexport function getDefineEnv({\n isTurbopack,\n clientRouterFilters,\n config,\n dev,\n distDir,\n projectPath,\n fetchCacheKeyPrefix,\n hasRewrites,\n isClient,\n isEdgeServer,\n isNodeServer,\n middlewareMatchers,\n omitNonDeterministic,\n rewrites,\n}: DefineEnvOptions): SerializedDefineEnv {\n const nextPublicEnv = getNextPublicEnvironmentVariables()\n const nextConfigEnv = getNextConfigEnv(config)\n\n const isPPREnabled = checkIsAppPPREnabled(config.experimental.ppr)\n const isCacheComponentsEnabled = !!config.cacheComponents\n const isUseCacheEnabled = !!config.experimental.useCache\n\n const defineEnv: DefineEnv = {\n // internal field to identify the plugin config\n __NEXT_DEFINE_ENV: true,\n\n ...nextPublicEnv,\n ...nextConfigEnv,\n ...(!isEdgeServer\n ? {}\n : {\n EdgeRuntime:\n /**\n * Cloud providers can set this environment variable to allow users\n * and library authors to have different implementations based on\n * the runtime they are running with, if it's not using `edge-runtime`\n */\n process.env.NEXT_EDGE_RUNTIME_PROVIDER ?? 'edge-runtime',\n\n // process should be only { env: {...} } for edge runtime.\n // For ignore avoid warn on `process.emit` usage but directly omit it.\n 'process.emit': false,\n }),\n 'process.turbopack': isTurbopack,\n 'process.env.TURBOPACK': isTurbopack,\n 'process.env.__NEXT_BUNDLER': isTurbopack\n ? 'Turbopack'\n : process.env.NEXT_RSPACK\n ? 'Rspack'\n : 'Webpack',\n // TODO: enforce `NODE_ENV` on `process.env`, and add a test:\n 'process.env.NODE_ENV':\n dev || config.experimental.allowDevelopmentBuild\n ? 'development'\n : 'production',\n 'process.env.NEXT_RUNTIME': isEdgeServer\n ? 'edge'\n : isNodeServer\n ? 'nodejs'\n : '',\n 'process.env.NEXT_MINIMAL': '',\n 'process.env.__NEXT_APP_NAV_FAIL_HANDLING': Boolean(\n config.experimental.appNavFailHandling\n ),\n 'process.env.__NEXT_PPR': isPPREnabled,\n 'process.env.__NEXT_CACHE_COMPONENTS': isCacheComponentsEnabled,\n 'process.env.__NEXT_USE_CACHE': isUseCacheEnabled,\n\n ...(config.experimental?.useSkewCookie || !config.deploymentId\n ? {\n 'process.env.NEXT_DEPLOYMENT_ID': false,\n }\n : isClient\n ? isTurbopack\n ? {\n // This is set at runtime by packages/next/src/client/register-deployment-id-global.ts\n 'process.env.NEXT_DEPLOYMENT_ID': {\n [DEFINE_ENV_EXPRESSION]: 'globalThis.NEXT_DEPLOYMENT_ID',\n },\n }\n : {\n // For Webpack, we currently don't use the non-inlining globalThis.NEXT_DEPLOYMENT_ID\n // approach because we cannot forward this global variable to web workers easily.\n 'process.env.NEXT_DEPLOYMENT_ID': config.deploymentId || false,\n }\n : config.experimental?.runtimeServerDeploymentId\n ? {\n // Don't inline at all, keep process.env.NEXT_DEPLOYMENT_ID as is\n }\n : {\n 'process.env.NEXT_DEPLOYMENT_ID': config.deploymentId || false,\n }),\n\n // Propagates the `__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING` environment\n // variable to the client.\n 'process.env.__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING':\n process.env.__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING || false,\n 'process.env.__NEXT_FETCH_CACHE_KEY_PREFIX': fetchCacheKeyPrefix ?? '',\n ...(isTurbopack\n ? {}\n : {\n 'process.env.__NEXT_MIDDLEWARE_MATCHERS': middlewareMatchers ?? [],\n }),\n 'process.env.__NEXT_MANUAL_CLIENT_BASE_PATH':\n config.experimental.manualClientBasePath ?? false,\n 'process.env.__NEXT_CLIENT_ROUTER_DYNAMIC_STALETIME': JSON.stringify(\n isNaN(Number(config.experimental.staleTimes?.dynamic))\n ? 0\n : config.experimental.staleTimes?.dynamic\n ),\n 'process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME': JSON.stringify(\n isNaN(Number(config.experimental.staleTimes?.static))\n ? 5 * 60 // 5 minutes\n : config.experimental.staleTimes?.static\n ),\n 'process.env.__NEXT_CLIENT_ROUTER_FILTER_ENABLED':\n config.experimental.clientRouterFilter ?? true,\n 'process.env.__NEXT_CLIENT_ROUTER_S_FILTER':\n clientRouterFilters?.staticFilter ?? false,\n 'process.env.__NEXT_CLIENT_ROUTER_D_FILTER':\n clientRouterFilters?.dynamicFilter ?? false,\n 'process.env.__NEXT_CLIENT_VALIDATE_RSC_REQUEST_HEADERS': Boolean(\n config.experimental.validateRSCRequestHeaders\n ),\n 'process.env.__NEXT_DYNAMIC_ON_HOVER': Boolean(\n config.experimental.dynamicOnHover\n ),\n 'process.env.__NEXT_OPTIMISTIC_CLIENT_CACHE':\n config.experimental.optimisticClientCache ?? true,\n 'process.env.__NEXT_MIDDLEWARE_PREFETCH':\n config.experimental.proxyPrefetch ?? 'flexible',\n 'process.env.__NEXT_CROSS_ORIGIN': config.crossOrigin,\n 'process.browser': isClient,\n 'process.env.__NEXT_TEST_MODE': process.env.__NEXT_TEST_MODE ?? false,\n // This is used in client/dev-error-overlay/hot-dev-client.js to replace the dist directory\n ...(dev && (isClient ?? isEdgeServer)\n ? {\n 'process.env.__NEXT_DIST_DIR': distDir,\n }\n : {}),\n // This is used in devtools to strip the project path in edge runtime,\n // as there's only a dummy `dir` value (`.`) as edge runtime doesn't have concept of file system.\n ...(dev && isEdgeServer\n ? {\n 'process.env.__NEXT_EDGE_PROJECT_DIR': isTurbopack\n ? path.relative(process.cwd(), projectPath)\n : projectPath,\n }\n : {}),\n 'process.env.__NEXT_BASE_PATH': config.basePath,\n 'process.env.__NEXT_CASE_SENSITIVE_ROUTES': Boolean(\n config.experimental.caseSensitiveRoutes\n ),\n 'process.env.__NEXT_REWRITES': rewrites as any,\n 'process.env.__NEXT_TRAILING_SLASH': config.trailingSlash,\n 'process.env.__NEXT_DEV_INDICATOR': config.devIndicators !== false,\n 'process.env.__NEXT_DEV_INDICATOR_POSITION':\n config.devIndicators === false\n ? 'bottom-left' // This will not be used as the indicator is disabled.\n : (config.devIndicators.position ?? 'bottom-left'),\n 'process.env.__NEXT_STRICT_MODE':\n config.reactStrictMode === null ? false : config.reactStrictMode,\n 'process.env.__NEXT_STRICT_MODE_APP':\n // When next.config.js does not have reactStrictMode it's enabled by default.\n config.reactStrictMode === null ? true : config.reactStrictMode,\n 'process.env.__NEXT_OPTIMIZE_CSS':\n (config.experimental.optimizeCss && !dev) ?? false,\n 'process.env.__NEXT_SCRIPT_WORKERS':\n (config.experimental.nextScriptWorkers && !dev) ?? false,\n 'process.env.__NEXT_SCROLL_RESTORATION':\n config.experimental.scrollRestoration ?? false,\n ...getImageConfig(config, dev),\n 'process.env.__NEXT_ROUTER_BASEPATH': config.basePath,\n 'process.env.__NEXT_HAS_REWRITES': hasRewrites,\n 'process.env.__NEXT_CONFIG_OUTPUT': config.output,\n 'process.env.__NEXT_I18N_SUPPORT': !!config.i18n,\n 'process.env.__NEXT_I18N_DOMAINS': config.i18n?.domains ?? false,\n 'process.env.__NEXT_I18N_CONFIG': config.i18n || '',\n 'process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE':\n config.skipProxyUrlNormalize,\n 'process.env.__NEXT_EXTERNAL_MIDDLEWARE_REWRITE_RESOLVE':\n config.experimental.externalProxyRewritesResolve ?? false,\n 'process.env.__NEXT_MANUAL_TRAILING_SLASH':\n config.skipTrailingSlashRedirect,\n 'process.env.__NEXT_HAS_WEB_VITALS_ATTRIBUTION':\n (config.experimental.webVitalsAttribution &&\n config.experimental.webVitalsAttribution.length > 0) ??\n false,\n 'process.env.__NEXT_WEB_VITALS_ATTRIBUTION':\n config.experimental.webVitalsAttribution ?? false,\n 'process.env.__NEXT_LINK_NO_TOUCH_START':\n config.experimental.linkNoTouchStart ?? false,\n 'process.env.__NEXT_ASSET_PREFIX': config.assetPrefix,\n 'process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS':\n !!config.experimental.authInterrupts,\n 'process.env.__NEXT_TELEMETRY_DISABLED': Boolean(\n process.env.NEXT_TELEMETRY_DISABLED\n ),\n ...(isNodeServer || isEdgeServer\n ? {\n // Fix bad-actors in the npm ecosystem (e.g. `node-formidable`)\n // This is typically found in unmaintained modules from the\n // pre-webpack era (common in server-side code)\n 'global.GENTLY': false,\n }\n : undefined),\n ...(isNodeServer || isEdgeServer\n ? {\n 'process.env.__NEXT_EXPERIMENTAL_REACT':\n needsExperimentalReact(config),\n }\n : undefined),\n\n 'process.env.__NEXT_MULTI_ZONE_DRAFT_MODE':\n config.experimental.multiZoneDraftMode ?? false,\n 'process.env.__NEXT_TRUST_HOST_HEADER':\n config.experimental.trustHostHeader ?? false,\n 'process.env.__NEXT_ALLOWED_REVALIDATE_HEADERS':\n config.experimental.allowedRevalidateHeaderKeys ?? [],\n ...(isNodeServer || isEdgeServer\n ? {\n 'process.env.__NEXT_RELATIVE_DIST_DIR': config.distDir,\n 'process.env.__NEXT_RELATIVE_PROJECT_DIR': path.relative(\n process.cwd(),\n projectPath\n ),\n }\n : {}),\n\n 'process.env.__NEXT_BROWSER_DEBUG_INFO_IN_TERMINAL': JSON.stringify(\n (config.logging && config.logging.browserToTerminal) || false\n ),\n 'process.env.__NEXT_MCP_SERVER': !!config.experimental.mcpServer,\n\n // The devtools need to know whether or not to show an option to clear the\n // bundler cache. This option may be removed later once Turbopack's\n // filesystem cache feature is more stable.\n //\n // This environment value is currently best-effort:\n // - It's possible to disable the webpack filesystem cache, but it's\n // unlikely for a user to do that.\n // - Rspack's filesystem cache is unstable and requires a different\n // configuration than webpack to enable (which we don't do).\n //\n // In the worst case we'll show an option to clear the cache, but it'll be a\n // no-op that just restarts the development server.\n 'process.env.__NEXT_BUNDLER_HAS_PERSISTENT_CACHE':\n !isTurbopack ||\n (config.experimental.turbopackFileSystemCacheForDev ?? false),\n 'process.env.__NEXT_REACT_DEBUG_CHANNEL':\n config.experimental.reactDebugChannel ?? false,\n 'process.env.__NEXT_TRANSITION_INDICATOR':\n config.experimental.transitionIndicator ?? false,\n 'process.env.__NEXT_GESTURE_TRANSITION':\n config.experimental.gestureTransition ?? false,\n 'process.env.__NEXT_CACHE_LIFE': config.cacheLife,\n 'process.env.__NEXT_CLIENT_PARAM_PARSING_ORIGINS':\n config.experimental.clientParamParsingOrigins || [],\n }\n\n const userDefines = config.compiler?.define ?? {}\n for (const key in userDefines) {\n if (defineEnv.hasOwnProperty(key)) {\n throw new Error(\n `The \\`compiler.define\\` option is configured to replace the \\`${key}\\` variable. This variable is either part of a Next.js built-in or is already configured.`\n )\n }\n defineEnv[key] = userDefines[key]\n }\n\n if (isNodeServer || isEdgeServer) {\n const userDefinesServer = config.compiler?.defineServer ?? {}\n for (const key in userDefinesServer) {\n if (defineEnv.hasOwnProperty(key)) {\n throw new Error(\n `The \\`compiler.defineServer\\` option is configured to replace the \\`${key}\\` variable. This variable is either part of a Next.js built-in or is already configured.`\n )\n }\n defineEnv[key] = userDefinesServer[key]\n }\n }\n\n const serializedDefineEnv = serializeDefineEnv(defineEnv)\n\n // we delay inlining these values until after the build\n // with flying shuttle enabled so we can update them\n // without invalidating entries\n if (!dev && omitNonDeterministic) {\n // client uses window. instead of leaving process.env\n // in case process isn't polyfilled on client already\n // since by this point it won't be added by webpack\n const safeKey = (key: string) =>\n isClient ? `window.${key.split('.').pop()}` : key\n\n for (const key in nextPublicEnv) {\n serializedDefineEnv[key] = safeKey(key)\n }\n for (const key in nextConfigEnv) {\n serializedDefineEnv[key] = safeKey(key)\n }\n if (!config.experimental.runtimeServerDeploymentId) {\n for (const key of ['process.env.NEXT_DEPLOYMENT_ID']) {\n serializedDefineEnv[key] = safeKey(key)\n }\n }\n }\n\n return serializedDefineEnv\n}\n"],"names":["path","needsExperimentalReact","checkIsAppPPREnabled","getNextConfigEnv","getNextPublicEnvironmentVariables","DEFINE_ENV_EXPRESSION","Symbol","serializeDefineEnv","defineEnv","defineEnvStringified","Object","fromEntries","entries","map","key","value","JSON","stringify","getImageConfig","config","dev","deviceSizes","images","imageSizes","qualities","loader","dangerouslyAllowSVG","unoptimized","domains","remotePatterns","localPatterns","output","getDefineEnv","isTurbopack","clientRouterFilters","distDir","projectPath","fetchCacheKeyPrefix","hasRewrites","isClient","isEdgeServer","isNodeServer","middlewareMatchers","omitNonDeterministic","rewrites","nextPublicEnv","nextConfigEnv","isPPREnabled","experimental","ppr","isCacheComponentsEnabled","cacheComponents","isUseCacheEnabled","useCache","__NEXT_DEFINE_ENV","EdgeRuntime","process","env","NEXT_EDGE_RUNTIME_PROVIDER","NEXT_RSPACK","allowDevelopmentBuild","Boolean","appNavFailHandling","useSkewCookie","deploymentId","runtimeServerDeploymentId","__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING","manualClientBasePath","isNaN","Number","staleTimes","dynamic","static","clientRouterFilter","staticFilter","dynamicFilter","validateRSCRequestHeaders","dynamicOnHover","optimisticClientCache","proxyPrefetch","crossOrigin","__NEXT_TEST_MODE","relative","cwd","basePath","caseSensitiveRoutes","trailingSlash","devIndicators","position","reactStrictMode","optimizeCss","nextScriptWorkers","scrollRestoration","i18n","skipProxyUrlNormalize","externalProxyRewritesResolve","skipTrailingSlashRedirect","webVitalsAttribution","length","linkNoTouchStart","assetPrefix","authInterrupts","NEXT_TELEMETRY_DISABLED","undefined","multiZoneDraftMode","trustHostHeader","allowedRevalidateHeaderKeys","logging","browserToTerminal","mcpServer","turbopackFileSystemCacheForDev","reactDebugChannel","transitionIndicator","gestureTransition","cacheLife","clientParamParsingOrigins","userDefines","compiler","define","hasOwnProperty","Error","userDefinesServer","defineServer","serializedDefineEnv","safeKey","split","pop"],"mappings":"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","ignoreList":[0]}
@@ -315,7 +315,7 @@ export default async function build(dir, experimentalAnalyze = false, reactProdu
315
315
  try {
316
316
  const nextBuildSpan = trace('next-build', undefined, {
317
317
  buildMode: experimentalBuildMode,
318
- version: "16.2.0-canary.1"
318
+ version: "16.2.0-canary.2"
319
319
  });
320
320
  NextBuildContext.nextBuildSpan = nextBuildSpan;
321
321
  NextBuildContext.dir = dir;
@@ -821,7 +821,7 @@ export default async function build(dir, experimentalAnalyze = false, reactProdu
821
821
  // Files outside of the distDir can be "type": "module"
822
822
  await writeFileUtf8(path.join(distDir, 'package.json'), '{"type": "commonjs"}');
823
823
  // These are written to distDir, so they need to come after creating and cleaning distDr.
824
- await recordFrameworkVersion("16.2.0-canary.1");
824
+ await recordFrameworkVersion("16.2.0-canary.2");
825
825
  await updateBuildDiagnostics({
826
826
  buildStage: 'start'
827
827
  });
@@ -2523,7 +2523,7 @@ export default async function build(dir, experimentalAnalyze = false, reactProdu
2523
2523
  configOutDir: path.join(dir, configOutDir),
2524
2524
  staticPages,
2525
2525
  serverPropsPages,
2526
- nextVersion: "16.2.0-canary.1",
2526
+ nextVersion: "16.2.0-canary.2",
2527
2527
  tracingRoot: outputFileTracingRoot,
2528
2528
  hasNodeMiddleware,
2529
2529
  hasInstrumentationHook,
@@ -10,7 +10,7 @@ import { downloadNativeNextSwc, downloadWasmSwc } from '../../lib/download-swc';
10
10
  import { isDeepStrictEqual } from 'util';
11
11
  import { getDefineEnv } from '../define-env';
12
12
  import { throwTurbopackInternalError } from '../../shared/lib/turbopack/internal-error';
13
- const nextVersion = "16.2.0-canary.1";
13
+ const nextVersion = "16.2.0-canary.2";
14
14
  const ArchName = arch();
15
15
  const PlatformName = platform();
16
16
  function infoLog(...args) {
@@ -1624,7 +1624,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1624
1624
  isClient && new CopyFilePlugin({
1625
1625
  // file path to build output of `@next/polyfill-nomodule`
1626
1626
  filePath: require.resolve('./polyfills/polyfill-nomodule'),
1627
- cacheKey: "16.2.0-canary.1",
1627
+ cacheKey: "16.2.0-canary.2",
1628
1628
  name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
1629
1629
  minimize: false,
1630
1630
  info: {
@@ -1818,7 +1818,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1818
1818
  // - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
1819
1819
  // - Next.js version
1820
1820
  // - next.config.js keys that affect compilation
1821
- version: `${__dirname}|${"16.2.0-canary.1"}|${configVars}`,
1821
+ version: `${__dirname}|${"16.2.0-canary.2"}|${configVars}`,
1822
1822
  cacheDirectory: path.join(distDir, 'cache', 'webpack'),
1823
1823
  // For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
1824
1824
  // So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
@@ -1874,7 +1874,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1874
1874
  type: 'filesystem',
1875
1875
  directory: cache.cacheDirectory
1876
1876
  },
1877
- version: `${__dirname}|${"16.2.0-canary.1"}|${configVars}`
1877
+ version: `${__dirname}|${"16.2.0-canary.2"}|${configVars}`
1878
1878
  };
1879
1879
  }
1880
1880
  if (process.env.NEXT_WEBPACK_LOGGING) {
@@ -5,7 +5,7 @@
5
5
  * - next/script with `beforeInteractive` strategy
6
6
  */ import { getAssetPrefix } from './asset-prefix';
7
7
  import { setAttributesFromProps } from './set-attributes-from-props';
8
- const version = "16.2.0-canary.1";
8
+ const version = "16.2.0-canary.2";
9
9
  window.next = {
10
10
  version,
11
11
  appDir: true
@@ -25,7 +25,7 @@ import { SearchParamsContext, PathParamsContext } from '../shared/lib/hooks-clie
25
25
  import { onRecoverableError } from './react-client-callbacks/on-recoverable-error';
26
26
  import tracer from './tracing/tracer';
27
27
  import { isNextRouterError } from './components/is-next-router-error';
28
- export const version = "16.2.0-canary.1";
28
+ export const version = "16.2.0-canary.2";
29
29
  export let router;
30
30
  export const emitter = mitt();
31
31
  const looseToArray = (input)=>[].slice.call(input);
@@ -1,4 +1,4 @@
1
- import { isWebpackInternalResource, formatFrameSourceFile } from './webpack-module-path';
1
+ import { isWebpackInternalResource, formatStackFrameFile } from './webpack-module-path';
2
2
  function getOriginalStackFrame(source, response) {
3
3
  async function _getOriginalStackFrame() {
4
4
  if (response.status === 'rejected') {
@@ -74,13 +74,13 @@ export async function getOriginalStackFrames(frames, type, isAppDir) {
74
74
  reason: `Failed to fetch the original stack frames ${reason ? `: ${reason}` : ''}`
75
75
  })));
76
76
  }
77
- export function getFrameSource(frame) {
77
+ export function getStackFrameFile(frame) {
78
78
  if (!frame.file) return '';
79
79
  const isWebpackFrame = isWebpackInternalResource(frame.file);
80
80
  let str = '';
81
81
  // Skip URL parsing for webpack internal file paths.
82
82
  if (isWebpackFrame) {
83
- str = formatFrameSourceFile(frame.file);
83
+ str = formatStackFrameFile(frame.file);
84
84
  } else {
85
85
  try {
86
86
  const u = new URL(frame.file);
@@ -98,9 +98,9 @@ export function getFrameSource(frame) {
98
98
  // Strip query string information as it's typically too verbose to be
99
99
  // meaningful.
100
100
  parsedPath += u.pathname;
101
- str = formatFrameSourceFile(parsedPath);
101
+ str = formatStackFrameFile(parsedPath);
102
102
  } catch {
103
- str = formatFrameSourceFile(frame.file);
103
+ str = formatStackFrameFile(frame.file);
104
104
  }
105
105
  }
106
106
  if (!isWebpackInternalResource(frame.file) && frame.line1 != null) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next-devtools/shared/stack-frame.ts"],"sourcesContent":["import type {\n OriginalStackFrameResponse,\n OriginalStackFrameResponseResult,\n OriginalStackFramesRequest,\n StackFrame,\n} from '../server/shared'\nimport {\n isWebpackInternalResource,\n formatFrameSourceFile,\n} from './webpack-module-path'\n\nexport type { StackFrame }\n\ninterface ResolvedOriginalStackFrame extends OriginalStackFrameResponse {\n error: false\n reason: null\n external: boolean\n ignored: boolean\n sourceStackFrame: StackFrame\n}\n\ninterface RejectedOriginalStackFrame extends OriginalStackFrameResponse {\n error: true\n reason: string\n external: boolean\n ignored: boolean\n sourceStackFrame: StackFrame\n}\n\nexport type OriginalStackFrame =\n | ResolvedOriginalStackFrame\n | RejectedOriginalStackFrame\n\nfunction getOriginalStackFrame(\n source: StackFrame,\n response: OriginalStackFrameResponseResult\n): Promise<OriginalStackFrame> {\n async function _getOriginalStackFrame(): Promise<ResolvedOriginalStackFrame> {\n if (response.status === 'rejected') {\n throw new Error(response.reason)\n }\n\n const body: OriginalStackFrameResponse = response.value\n\n return {\n error: false,\n reason: null,\n external: false,\n sourceStackFrame: source,\n originalStackFrame: body.originalStackFrame,\n originalCodeFrame: body.originalCodeFrame || null,\n ignored: body.originalStackFrame?.ignored || false,\n }\n }\n\n // TODO: merge this section into ignoredList handling\n if (source.file === 'file://' || source.file?.match(/https?:\\/\\//)) {\n return Promise.resolve({\n error: false,\n reason: null,\n external: true,\n sourceStackFrame: source,\n originalStackFrame: null,\n originalCodeFrame: null,\n ignored: true,\n })\n }\n\n return _getOriginalStackFrame().catch(\n (err: Error): RejectedOriginalStackFrame => ({\n error: true,\n reason: err?.message ?? err?.toString() ?? 'Unknown Error',\n external: false,\n sourceStackFrame: source,\n originalStackFrame: null,\n originalCodeFrame: null,\n ignored: false,\n })\n )\n}\n\nexport async function getOriginalStackFrames(\n frames: readonly StackFrame[],\n type: 'server' | 'edge-server' | null,\n isAppDir: boolean\n): Promise<readonly OriginalStackFrame[]> {\n const req: OriginalStackFramesRequest = {\n frames,\n isServer: type === 'server',\n isEdgeServer: type === 'edge-server',\n isAppDirectory: isAppDir,\n }\n\n let res: Response | undefined = undefined\n let reason: string | undefined = undefined\n try {\n res = await fetch('/__nextjs_original-stack-frames', {\n method: 'POST',\n body: JSON.stringify(req),\n })\n } catch (e) {\n reason = e + ''\n }\n\n // When fails to fetch the original stack frames, we reject here to be\n // caught at `_getOriginalStackFrame()` and return the stack frames so\n // that the error overlay can render.\n if (res && res.ok && res.status !== 204) {\n const data = await res.json()\n return Promise.all(\n frames.map((frame, index) => getOriginalStackFrame(frame, data[index]))\n )\n } else {\n if (res) {\n reason = await res.text()\n }\n }\n return Promise.all(\n frames.map((frame) =>\n getOriginalStackFrame(frame, {\n status: 'rejected',\n reason: `Failed to fetch the original stack frames ${reason ? `: ${reason}` : ''}`,\n })\n )\n )\n}\n\nexport function getFrameSource(frame: StackFrame): string {\n if (!frame.file) return ''\n\n const isWebpackFrame = isWebpackInternalResource(frame.file)\n\n let str = ''\n // Skip URL parsing for webpack internal file paths.\n if (isWebpackFrame) {\n str = formatFrameSourceFile(frame.file)\n } else {\n try {\n const u = new URL(frame.file)\n\n let parsedPath = ''\n // Strip the origin for same-origin scripts.\n if (globalThis.location?.origin !== u.origin) {\n // URLs can be valid without an `origin`, so long as they have a\n // `protocol`. However, `origin` is preferred.\n if (u.origin === 'null') {\n parsedPath += u.protocol\n } else {\n parsedPath += u.origin\n }\n }\n\n // Strip query string information as it's typically too verbose to be\n // meaningful.\n parsedPath += u.pathname\n str = formatFrameSourceFile(parsedPath)\n } catch {\n str = formatFrameSourceFile(frame.file)\n }\n }\n\n if (!isWebpackInternalResource(frame.file) && frame.line1 != null) {\n // We don't need line and column numbers for anonymous sources because\n // there's no entrypoint for the location anyway.\n if (str && frame.file !== '<anonymous>') {\n if (frame.column1 != null) {\n str += ` (${frame.line1}:${frame.column1})`\n } else {\n str += ` (${frame.line1})`\n }\n }\n }\n return str\n}\n"],"names":["isWebpackInternalResource","formatFrameSourceFile","getOriginalStackFrame","source","response","_getOriginalStackFrame","status","Error","reason","body","value","error","external","sourceStackFrame","originalStackFrame","originalCodeFrame","ignored","file","match","Promise","resolve","catch","err","message","toString","getOriginalStackFrames","frames","type","isAppDir","req","isServer","isEdgeServer","isAppDirectory","res","undefined","fetch","method","JSON","stringify","e","ok","data","json","all","map","frame","index","text","getFrameSource","isWebpackFrame","str","u","URL","parsedPath","globalThis","location","origin","protocol","pathname","line1","column1"],"mappings":"AAMA,SACEA,yBAAyB,EACzBC,qBAAqB,QAChB,wBAAuB;AAwB9B,SAASC,sBACPC,MAAkB,EAClBC,QAA0C;IAE1C,eAAeC;QACb,IAAID,SAASE,MAAM,KAAK,YAAY;YAClC,MAAM,qBAA0B,CAA1B,IAAIC,MAAMH,SAASI,MAAM,GAAzB,qBAAA;uBAAA;4BAAA;8BAAA;YAAyB;QACjC;QAEA,MAAMC,OAAmCL,SAASM,KAAK;QAEvD,OAAO;YACLC,OAAO;YACPH,QAAQ;YACRI,UAAU;YACVC,kBAAkBV;YAClBW,oBAAoBL,KAAKK,kBAAkB;YAC3CC,mBAAmBN,KAAKM,iBAAiB,IAAI;YAC7CC,SAASP,KAAKK,kBAAkB,EAAEE,WAAW;QAC/C;IACF;IAEA,qDAAqD;IACrD,IAAIb,OAAOc,IAAI,KAAK,aAAad,OAAOc,IAAI,EAAEC,MAAM,gBAAgB;QAClE,OAAOC,QAAQC,OAAO,CAAC;YACrBT,OAAO;YACPH,QAAQ;YACRI,UAAU;YACVC,kBAAkBV;YAClBW,oBAAoB;YACpBC,mBAAmB;YACnBC,SAAS;QACX;IACF;IAEA,OAAOX,yBAAyBgB,KAAK,CACnC,CAACC,MAA4C,CAAA;YAC3CX,OAAO;YACPH,QAAQc,KAAKC,WAAWD,KAAKE,cAAc;YAC3CZ,UAAU;YACVC,kBAAkBV;YAClBW,oBAAoB;YACpBC,mBAAmB;YACnBC,SAAS;QACX,CAAA;AAEJ;AAEA,OAAO,eAAeS,uBACpBC,MAA6B,EAC7BC,IAAqC,EACrCC,QAAiB;IAEjB,MAAMC,MAAkC;QACtCH;QACAI,UAAUH,SAAS;QACnBI,cAAcJ,SAAS;QACvBK,gBAAgBJ;IAClB;IAEA,IAAIK,MAA4BC;IAChC,IAAI1B,SAA6B0B;IACjC,IAAI;QACFD,MAAM,MAAME,MAAM,mCAAmC;YACnDC,QAAQ;YACR3B,MAAM4B,KAAKC,SAAS,CAACT;QACvB;IACF,EAAE,OAAOU,GAAG;QACV/B,SAAS+B,IAAI;IACf;IAEA,sEAAsE;IACtE,sEAAsE;IACtE,qCAAqC;IACrC,IAAIN,OAAOA,IAAIO,EAAE,IAAIP,IAAI3B,MAAM,KAAK,KAAK;QACvC,MAAMmC,OAAO,MAAMR,IAAIS,IAAI;QAC3B,OAAOvB,QAAQwB,GAAG,CAChBjB,OAAOkB,GAAG,CAAC,CAACC,OAAOC,QAAU5C,sBAAsB2C,OAAOJ,IAAI,CAACK,MAAM;IAEzE,OAAO;QACL,IAAIb,KAAK;YACPzB,SAAS,MAAMyB,IAAIc,IAAI;QACzB;IACF;IACA,OAAO5B,QAAQwB,GAAG,CAChBjB,OAAOkB,GAAG,CAAC,CAACC,QACV3C,sBAAsB2C,OAAO;YAC3BvC,QAAQ;YACRE,QAAQ,CAAC,0CAA0C,EAAEA,SAAS,CAAC,EAAE,EAAEA,QAAQ,GAAG,IAAI;QACpF;AAGN;AAEA,OAAO,SAASwC,eAAeH,KAAiB;IAC9C,IAAI,CAACA,MAAM5B,IAAI,EAAE,OAAO;IAExB,MAAMgC,iBAAiBjD,0BAA0B6C,MAAM5B,IAAI;IAE3D,IAAIiC,MAAM;IACV,oDAAoD;IACpD,IAAID,gBAAgB;QAClBC,MAAMjD,sBAAsB4C,MAAM5B,IAAI;IACxC,OAAO;QACL,IAAI;YACF,MAAMkC,IAAI,IAAIC,IAAIP,MAAM5B,IAAI;YAE5B,IAAIoC,aAAa;YACjB,4CAA4C;YAC5C,IAAIC,WAAWC,QAAQ,EAAEC,WAAWL,EAAEK,MAAM,EAAE;gBAC5C,gEAAgE;gBAChE,8CAA8C;gBAC9C,IAAIL,EAAEK,MAAM,KAAK,QAAQ;oBACvBH,cAAcF,EAAEM,QAAQ;gBAC1B,OAAO;oBACLJ,cAAcF,EAAEK,MAAM;gBACxB;YACF;YAEA,qEAAqE;YACrE,cAAc;YACdH,cAAcF,EAAEO,QAAQ;YACxBR,MAAMjD,sBAAsBoD;QAC9B,EAAE,OAAM;YACNH,MAAMjD,sBAAsB4C,MAAM5B,IAAI;QACxC;IACF;IAEA,IAAI,CAACjB,0BAA0B6C,MAAM5B,IAAI,KAAK4B,MAAMc,KAAK,IAAI,MAAM;QACjE,sEAAsE;QACtE,iDAAiD;QACjD,IAAIT,OAAOL,MAAM5B,IAAI,KAAK,eAAe;YACvC,IAAI4B,MAAMe,OAAO,IAAI,MAAM;gBACzBV,OAAO,CAAC,EAAE,EAAEL,MAAMc,KAAK,CAAC,CAAC,EAAEd,MAAMe,OAAO,CAAC,CAAC,CAAC;YAC7C,OAAO;gBACLV,OAAO,CAAC,EAAE,EAAEL,MAAMc,KAAK,CAAC,CAAC,CAAC;YAC5B;QACF;IACF;IACA,OAAOT;AACT","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/next-devtools/shared/stack-frame.ts"],"sourcesContent":["import type {\n OriginalStackFrameResponse,\n OriginalStackFrameResponseResult,\n OriginalStackFramesRequest,\n StackFrame,\n} from '../server/shared'\nimport {\n isWebpackInternalResource,\n formatStackFrameFile,\n} from './webpack-module-path'\n\nexport type { StackFrame }\n\ninterface ResolvedOriginalStackFrame extends OriginalStackFrameResponse {\n error: false\n reason: null\n external: boolean\n ignored: boolean\n sourceStackFrame: StackFrame\n}\n\ninterface RejectedOriginalStackFrame extends OriginalStackFrameResponse {\n error: true\n reason: string\n external: boolean\n ignored: boolean\n sourceStackFrame: StackFrame\n}\n\nexport type OriginalStackFrame =\n | ResolvedOriginalStackFrame\n | RejectedOriginalStackFrame\n\nfunction getOriginalStackFrame(\n source: StackFrame,\n response: OriginalStackFrameResponseResult\n): Promise<OriginalStackFrame> {\n async function _getOriginalStackFrame(): Promise<ResolvedOriginalStackFrame> {\n if (response.status === 'rejected') {\n throw new Error(response.reason)\n }\n\n const body: OriginalStackFrameResponse = response.value\n\n return {\n error: false,\n reason: null,\n external: false,\n sourceStackFrame: source,\n originalStackFrame: body.originalStackFrame,\n originalCodeFrame: body.originalCodeFrame || null,\n ignored: body.originalStackFrame?.ignored || false,\n }\n }\n\n // TODO: merge this section into ignoredList handling\n if (source.file === 'file://' || source.file?.match(/https?:\\/\\//)) {\n return Promise.resolve({\n error: false,\n reason: null,\n external: true,\n sourceStackFrame: source,\n originalStackFrame: null,\n originalCodeFrame: null,\n ignored: true,\n })\n }\n\n return _getOriginalStackFrame().catch(\n (err: Error): RejectedOriginalStackFrame => ({\n error: true,\n reason: err?.message ?? err?.toString() ?? 'Unknown Error',\n external: false,\n sourceStackFrame: source,\n originalStackFrame: null,\n originalCodeFrame: null,\n ignored: false,\n })\n )\n}\n\nexport async function getOriginalStackFrames(\n frames: readonly StackFrame[],\n type: 'server' | 'edge-server' | null,\n isAppDir: boolean\n): Promise<readonly OriginalStackFrame[]> {\n const req: OriginalStackFramesRequest = {\n frames,\n isServer: type === 'server',\n isEdgeServer: type === 'edge-server',\n isAppDirectory: isAppDir,\n }\n\n let res: Response | undefined = undefined\n let reason: string | undefined = undefined\n try {\n res = await fetch('/__nextjs_original-stack-frames', {\n method: 'POST',\n body: JSON.stringify(req),\n })\n } catch (e) {\n reason = e + ''\n }\n\n // When fails to fetch the original stack frames, we reject here to be\n // caught at `_getOriginalStackFrame()` and return the stack frames so\n // that the error overlay can render.\n if (res && res.ok && res.status !== 204) {\n const data = await res.json()\n return Promise.all(\n frames.map((frame, index) => getOriginalStackFrame(frame, data[index]))\n )\n } else {\n if (res) {\n reason = await res.text()\n }\n }\n return Promise.all(\n frames.map((frame) =>\n getOriginalStackFrame(frame, {\n status: 'rejected',\n reason: `Failed to fetch the original stack frames ${reason ? `: ${reason}` : ''}`,\n })\n )\n )\n}\n\nexport function getStackFrameFile(frame: StackFrame): string {\n if (!frame.file) return ''\n\n const isWebpackFrame = isWebpackInternalResource(frame.file)\n\n let str = ''\n // Skip URL parsing for webpack internal file paths.\n if (isWebpackFrame) {\n str = formatStackFrameFile(frame.file)\n } else {\n try {\n const u = new URL(frame.file)\n\n let parsedPath = ''\n // Strip the origin for same-origin scripts.\n if (globalThis.location?.origin !== u.origin) {\n // URLs can be valid without an `origin`, so long as they have a\n // `protocol`. However, `origin` is preferred.\n if (u.origin === 'null') {\n parsedPath += u.protocol\n } else {\n parsedPath += u.origin\n }\n }\n\n // Strip query string information as it's typically too verbose to be\n // meaningful.\n parsedPath += u.pathname\n str = formatStackFrameFile(parsedPath)\n } catch {\n str = formatStackFrameFile(frame.file)\n }\n }\n\n if (!isWebpackInternalResource(frame.file) && frame.line1 != null) {\n // We don't need line and column numbers for anonymous sources because\n // there's no entrypoint for the location anyway.\n if (str && frame.file !== '<anonymous>') {\n if (frame.column1 != null) {\n str += ` (${frame.line1}:${frame.column1})`\n } else {\n str += ` (${frame.line1})`\n }\n }\n }\n return str\n}\n"],"names":["isWebpackInternalResource","formatStackFrameFile","getOriginalStackFrame","source","response","_getOriginalStackFrame","status","Error","reason","body","value","error","external","sourceStackFrame","originalStackFrame","originalCodeFrame","ignored","file","match","Promise","resolve","catch","err","message","toString","getOriginalStackFrames","frames","type","isAppDir","req","isServer","isEdgeServer","isAppDirectory","res","undefined","fetch","method","JSON","stringify","e","ok","data","json","all","map","frame","index","text","getStackFrameFile","isWebpackFrame","str","u","URL","parsedPath","globalThis","location","origin","protocol","pathname","line1","column1"],"mappings":"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","ignoreList":[0]}
@@ -16,7 +16,7 @@ export function isWebpackInternalResource(file) {
16
16
  * webpack://_N_E/./src/hello.tsx => ./src/hello.tsx
17
17
  * webpack://./src/hello.tsx => ./src/hello.tsx
18
18
  * webpack:///./src/hello.tsx => ./src/hello.tsx
19
- */ export function formatFrameSourceFile(file) {
19
+ */ export function formatStackFrameFile(file) {
20
20
  for (const regex of replacementRegExes){
21
21
  file = file.replace(regex, '');
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next-devtools/shared/webpack-module-path.ts"],"sourcesContent":["const replacementRegExes = [\n /^webpack-internal:\\/\\/\\/(\\([\\w-]+\\)\\/)?/,\n /^(webpack:\\/\\/\\/|webpack:\\/\\/(_N_E\\/)?)(\\([\\w-]+\\)\\/)?/,\n]\n\nexport function isWebpackInternalResource(file: string) {\n for (const regex of replacementRegExes) {\n if (regex.test(file)) return true\n\n file = file.replace(regex, '')\n }\n\n return false\n}\n\n/**\n * Format the webpack internal id to original file path\n *\n * webpack-internal:///./src/hello.tsx => ./src/hello.tsx\n * webpack://_N_E/./src/hello.tsx => ./src/hello.tsx\n * webpack://./src/hello.tsx => ./src/hello.tsx\n * webpack:///./src/hello.tsx => ./src/hello.tsx\n */\nexport function formatFrameSourceFile(file: string) {\n for (const regex of replacementRegExes) {\n file = file.replace(regex, '')\n }\n\n return file\n}\n"],"names":["replacementRegExes","isWebpackInternalResource","file","regex","test","replace","formatFrameSourceFile"],"mappings":"AAAA,MAAMA,qBAAqB;IACzB;IACA;CACD;AAED,OAAO,SAASC,0BAA0BC,IAAY;IACpD,KAAK,MAAMC,SAASH,mBAAoB;QACtC,IAAIG,MAAMC,IAAI,CAACF,OAAO,OAAO;QAE7BA,OAAOA,KAAKG,OAAO,CAACF,OAAO;IAC7B;IAEA,OAAO;AACT;AAEA;;;;;;;CAOC,GACD,OAAO,SAASG,sBAAsBJ,IAAY;IAChD,KAAK,MAAMC,SAASH,mBAAoB;QACtCE,OAAOA,KAAKG,OAAO,CAACF,OAAO;IAC7B;IAEA,OAAOD;AACT","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/next-devtools/shared/webpack-module-path.ts"],"sourcesContent":["const replacementRegExes = [\n /^webpack-internal:\\/\\/\\/(\\([\\w-]+\\)\\/)?/,\n /^(webpack:\\/\\/\\/|webpack:\\/\\/(_N_E\\/)?)(\\([\\w-]+\\)\\/)?/,\n]\n\nexport function isWebpackInternalResource(file: string) {\n for (const regex of replacementRegExes) {\n if (regex.test(file)) return true\n\n file = file.replace(regex, '')\n }\n\n return false\n}\n\n/**\n * Format the webpack internal id to original file path\n *\n * webpack-internal:///./src/hello.tsx => ./src/hello.tsx\n * webpack://_N_E/./src/hello.tsx => ./src/hello.tsx\n * webpack://./src/hello.tsx => ./src/hello.tsx\n * webpack:///./src/hello.tsx => ./src/hello.tsx\n */\nexport function formatStackFrameFile(file: string) {\n for (const regex of replacementRegExes) {\n file = file.replace(regex, '')\n }\n\n return file\n}\n"],"names":["replacementRegExes","isWebpackInternalResource","file","regex","test","replace","formatStackFrameFile"],"mappings":"AAAA,MAAMA,qBAAqB;IACzB;IACA;CACD;AAED,OAAO,SAASC,0BAA0BC,IAAY;IACpD,KAAK,MAAMC,SAASH,mBAAoB;QACtC,IAAIG,MAAMC,IAAI,CAACF,OAAO,OAAO;QAE7BA,OAAOA,KAAKG,OAAO,CAACF,OAAO;IAC7B;IAEA,OAAO;AACT;AAEA;;;;;;;CAOC,GACD,OAAO,SAASG,qBAAqBJ,IAAY;IAC/C,KAAK,MAAMC,SAASH,mBAAoB;QACtCE,OAAOA,KAAKG,OAAO,CAACF,OAAO;IAC7B;IAEA,OAAOD;AACT","ignoreList":[0]}
@@ -545,6 +545,13 @@ export const configSchema = z.lazy(()=>z.strictObject({
545
545
  z.object({
546
546
  ignore: z.array(z.instanceof(RegExp))
547
547
  })
548
+ ]).optional(),
549
+ browserToTerminal: z.union([
550
+ z.boolean(),
551
+ z.enum([
552
+ 'error',
553
+ 'warn'
554
+ ])
548
555
  ]).optional()
549
556
  }),
550
557
  z.literal(false)