next 15.4.0-canary.40 → 15.4.0-canary.41

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 (54) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/define-env.d.ts +1 -2
  3. package/dist/build/define-env.js +19 -5
  4. package/dist/build/define-env.js.map +1 -1
  5. package/dist/build/index.js +2 -2
  6. package/dist/build/swc/index.js +1 -2
  7. package/dist/build/swc/index.js.map +1 -1
  8. package/dist/build/webpack-config.js +2 -3
  9. package/dist/build/webpack-config.js.map +1 -1
  10. package/dist/client/app-bootstrap.js +1 -1
  11. package/dist/client/index.js +1 -1
  12. package/dist/compiled/next-server/app-page-experimental.runtime.dev.js +2 -2
  13. package/dist/compiled/next-server/pages-turbo.runtime.dev.js +2 -2
  14. package/dist/compiled/next-server/pages-turbo.runtime.dev.js.map +1 -1
  15. package/dist/compiled/next-server/pages-turbo.runtime.prod.js +2 -2
  16. package/dist/compiled/next-server/pages-turbo.runtime.prod.js.map +1 -1
  17. package/dist/compiled/next-server/pages.runtime.dev.js +2 -2
  18. package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
  19. package/dist/compiled/next-server/pages.runtime.prod.js +2 -2
  20. package/dist/compiled/next-server/pages.runtime.prod.js.map +1 -1
  21. package/dist/esm/build/define-env.js +19 -5
  22. package/dist/esm/build/define-env.js.map +1 -1
  23. package/dist/esm/build/index.js +2 -2
  24. package/dist/esm/build/swc/index.js +1 -2
  25. package/dist/esm/build/swc/index.js.map +1 -1
  26. package/dist/esm/build/webpack-config.js +2 -3
  27. package/dist/esm/build/webpack-config.js.map +1 -1
  28. package/dist/esm/client/app-bootstrap.js +1 -1
  29. package/dist/esm/client/index.js +1 -1
  30. package/dist/esm/server/config-schema.js +1 -0
  31. package/dist/esm/server/config-schema.js.map +1 -1
  32. package/dist/esm/server/config-shared.js.map +1 -1
  33. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  34. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  35. package/dist/esm/server/lib/app-info-log.js +1 -1
  36. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js +0 -1
  37. package/dist/esm/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  38. package/dist/esm/server/lib/start-server.js +1 -1
  39. package/dist/esm/shared/lib/canary-only.js +1 -1
  40. package/dist/server/config-schema.js +1 -0
  41. package/dist/server/config-schema.js.map +1 -1
  42. package/dist/server/config-shared.d.ts +5 -0
  43. package/dist/server/config-shared.js.map +1 -1
  44. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  45. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  46. package/dist/server/lib/app-info-log.js +1 -1
  47. package/dist/server/lib/router-utils/setup-dev-bundler.js +0 -1
  48. package/dist/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
  49. package/dist/server/lib/start-server.js +1 -1
  50. package/dist/shared/lib/canary-only.js +1 -1
  51. package/dist/telemetry/anonymous-meta.js +1 -1
  52. package/dist/telemetry/events/session-stopped.js +2 -2
  53. package/dist/telemetry/events/version.js +2 -2
  54. package/package.json +15 -15
@@ -32,7 +32,7 @@ function getImageConfig(config, dev) {
32
32
  }
33
33
  };
34
34
  }
35
- export function getDefineEnv({ isTurbopack, clientRouterFilters, config, dev, distDir, fetchCacheKeyPrefix, hasRewrites, isClient, isEdgeServer, isNodeOrEdgeCompilation, isNodeServer, middlewareMatchers, omitNonDeterministic }) {
35
+ export function getDefineEnv({ isTurbopack, clientRouterFilters, config, dev, distDir, fetchCacheKeyPrefix, hasRewrites, isClient, isEdgeServer, isNodeServer, middlewareMatchers, omitNonDeterministic }) {
36
36
  var _config_experimental, _config_experimental_staleTimes, _config_experimental_staleTimes1, _config_experimental_staleTimes2, _config_experimental_staleTimes3, _config_i18n, _config_compiler;
37
37
  const nextPublicEnv = getNextPublicEnvironmentVariables();
38
38
  const nextConfigEnv = getNextConfigEnv(config);
@@ -118,13 +118,13 @@ export function getDefineEnv({ isTurbopack, clientRouterFilters, config, dev, di
118
118
  'process.env.__NEXT_ASSET_PREFIX': config.assetPrefix,
119
119
  'process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS': !!config.experimental.authInterrupts,
120
120
  'process.env.__NEXT_TELEMETRY_DISABLED': Boolean(process.env.NEXT_TELEMETRY_DISABLED),
121
- ...isNodeOrEdgeCompilation ? {
121
+ ...isNodeServer || isEdgeServer ? {
122
122
  // Fix bad-actors in the npm ecosystem (e.g. `node-formidable`)
123
123
  // This is typically found in unmaintained modules from the
124
124
  // pre-webpack era (common in server-side code)
125
125
  'global.GENTLY': false
126
126
  } : undefined,
127
- ...isNodeOrEdgeCompilation ? {
127
+ ...isNodeServer || isEdgeServer ? {
128
128
  'process.env.__NEXT_EXPERIMENTAL_REACT': needsExperimentalReact(config)
129
129
  } : undefined,
130
130
  'process.env.__NEXT_MULTI_ZONE_DRAFT_MODE': JSON.stringify(config.experimental.multiZoneDraftMode),
@@ -138,14 +138,28 @@ export function getDefineEnv({ isTurbopack, clientRouterFilters, config, dev, di
138
138
  const userDefines = ((_config_compiler = config.compiler) == null ? void 0 : _config_compiler.define) ?? {};
139
139
  for(const key in userDefines){
140
140
  if (defineEnv.hasOwnProperty(key)) {
141
- throw Object.defineProperty(new Error(`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 via the \`env\` option.`), "__NEXT_ERROR_CODE", {
142
- value: "E430",
141
+ throw Object.defineProperty(new Error(`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.`), "__NEXT_ERROR_CODE", {
142
+ value: "E683",
143
143
  enumerable: false,
144
144
  configurable: true
145
145
  });
146
146
  }
147
147
  defineEnv[key] = userDefines[key];
148
148
  }
149
+ if (isNodeServer || isEdgeServer) {
150
+ var _config_compiler1;
151
+ const userDefinesServer = ((_config_compiler1 = config.compiler) == null ? void 0 : _config_compiler1.defineServer) ?? {};
152
+ for(const key in userDefinesServer){
153
+ if (defineEnv.hasOwnProperty(key)) {
154
+ throw Object.defineProperty(new Error(`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.`), "__NEXT_ERROR_CODE", {
155
+ value: "E684",
156
+ enumerable: false,
157
+ configurable: true
158
+ });
159
+ }
160
+ defineEnv[key] = userDefinesServer[key];
161
+ }
162
+ }
149
163
  const serializedDefineEnv = serializeDefineEnv(defineEnv);
150
164
  // we delay inlining these values until after the build
151
165
  // with flying shuttle enabled so we can update them
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/build/define-env.ts"],"sourcesContent":["import type { I18NDomains, NextConfigComplete } from '../server/config-shared'\nimport type { MiddlewareMatcher } from './analysis/get-page-static-info'\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 fetchCacheKeyPrefix: string | undefined\n hasRewrites: boolean\n isClient: boolean\n isEdgeServer: boolean\n isNodeOrEdgeCompilation: boolean\n isNodeServer: boolean\n middlewareMatchers: MiddlewareMatcher[] | undefined\n omitNonDeterministic?: boolean\n}\n\ninterface DefineEnv {\n [key: string]:\n | string\n | string[]\n | boolean\n | MiddlewareMatcher[]\n | BloomFilter\n | Partial<NextConfigComplete['images']>\n | I18NDomains\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 = {}\n for (const key in defineEnv) {\n const value = defineEnv[key]\n defineEnvStringified[key] = 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 fetchCacheKeyPrefix,\n hasRewrites,\n isClient,\n isEdgeServer,\n isNodeOrEdgeCompilation,\n isNodeServer,\n middlewareMatchers,\n omitNonDeterministic,\n}: DefineEnvOptions): SerializedDefineEnv {\n const nextPublicEnv = getNextPublicEnvironmentVariables()\n const nextConfigEnv = getNextConfigEnv(config)\n\n const isPPREnabled = checkIsAppPPREnabled(config.experimental.ppr)\n const isDynamicIOEnabled = !!config.experimental.dynamicIO\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_DYNAMIC_IO': isDynamicIOEnabled,\n 'process.env.__NEXT_USE_CACHE': isUseCacheEnabled,\n\n 'process.env.NEXT_DEPLOYMENT_ID': config.experimental?.useSkewCookie\n ? false\n : config.deploymentId || false,\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_SEGMENT_CACHE': Boolean(\n config.experimental.clientSegmentCache\n ),\n 'process.env.__NEXT_DYNAMIC_ON_HOVER': Boolean(\n config.experimental.dynamicOnHover\n ),\n 'process.env.__NEXT_ROUTER_BF_CACHE': Boolean(\n config.experimental.routerBFCache\n ),\n 'process.env.__NEXT_OPTIMISTIC_CLIENT_CACHE':\n config.experimental.optimisticClientCache ?? true,\n 'process.env.__NEXT_MIDDLEWARE_PREFETCH':\n config.experimental.middlewarePrefetch ?? '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 '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_STRICT_NEXT_HEAD':\n config.experimental.strictNextHead ?? true,\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_NO_MIDDLEWARE_URL_NORMALIZE':\n config.skipMiddlewareUrlNormalize,\n 'process.env.__NEXT_EXTERNAL_MIDDLEWARE_REWRITE_RESOLVE':\n config.experimental.externalMiddlewareRewritesResolve ?? 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 ...(isNodeOrEdgeCompilation\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 ...(isNodeOrEdgeCompilation\n ? {\n 'process.env.__NEXT_EXPERIMENTAL_REACT':\n needsExperimentalReact(config),\n }\n : undefined),\n\n 'process.env.__NEXT_MULTI_ZONE_DRAFT_MODE': JSON.stringify(\n config.experimental.multiZoneDraftMode\n ),\n 'process.env.__NEXT_TRUST_HOST_HEADER': JSON.stringify(\n config.experimental.trustHostHeader\n ),\n 'process.env.__NEXT_ALLOWED_REVALIDATE_HEADERS': JSON.stringify(\n config.experimental.allowedRevalidateHeaderKeys\n ),\n ...(isNodeServer\n ? {\n 'process.env.__NEXT_RELATIVE_DIST_DIR': config.distDir,\n }\n : {}),\n 'process.env.__NEXT_DEVTOOL_SEGMENT_EXPLORER':\n config.experimental.devtoolSegmentExplorer ?? false,\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 via the \\`env\\` option.`\n )\n }\n defineEnv[key] = userDefines[key]\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 for (const key of ['process.env.NEXT_DEPLOYMENT_ID']) {\n serializedDefineEnv[key] = safeKey(key)\n }\n }\n\n return serializedDefineEnv\n}\n"],"names":["needsExperimentalReact","checkIsAppPPREnabled","getNextConfigEnv","getNextPublicEnvironmentVariables","serializeDefineEnv","defineEnv","defineEnvStringified","key","value","JSON","stringify","getImageConfig","config","dev","deviceSizes","images","imageSizes","qualities","path","loader","dangerouslyAllowSVG","unoptimized","domains","remotePatterns","localPatterns","output","getDefineEnv","isTurbopack","clientRouterFilters","distDir","fetchCacheKeyPrefix","hasRewrites","isClient","isEdgeServer","isNodeOrEdgeCompilation","isNodeServer","middlewareMatchers","omitNonDeterministic","nextPublicEnv","nextConfigEnv","isPPREnabled","experimental","ppr","isDynamicIOEnabled","dynamicIO","isUseCacheEnabled","useCache","__NEXT_DEFINE_ENV","EdgeRuntime","process","env","NEXT_EDGE_RUNTIME_PROVIDER","NEXT_RSPACK","allowDevelopmentBuild","Boolean","appNavFailHandling","useSkewCookie","deploymentId","__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING","manualClientBasePath","isNaN","Number","staleTimes","dynamic","static","clientRouterFilter","staticFilter","dynamicFilter","clientSegmentCache","dynamicOnHover","routerBFCache","optimisticClientCache","middlewarePrefetch","crossOrigin","__NEXT_TEST_MODE","trailingSlash","devIndicators","position","reactStrictMode","optimizeCss","nextScriptWorkers","scrollRestoration","basePath","strictNextHead","i18n","skipMiddlewareUrlNormalize","externalMiddlewareRewritesResolve","skipTrailingSlashRedirect","webVitalsAttribution","length","linkNoTouchStart","assetPrefix","authInterrupts","NEXT_TELEMETRY_DISABLED","undefined","multiZoneDraftMode","trustHostHeader","allowedRevalidateHeaderKeys","devtoolSegmentExplorer","userDefines","compiler","define","hasOwnProperty","Error","serializedDefineEnv","safeKey","split","pop"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../src/build/define-env.ts"],"sourcesContent":["import type { I18NDomains, NextConfigComplete } from '../server/config-shared'\nimport type { MiddlewareMatcher } from './analysis/get-page-static-info'\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 fetchCacheKeyPrefix: string | undefined\n hasRewrites: boolean\n isClient: boolean\n isEdgeServer: boolean\n isNodeServer: boolean\n middlewareMatchers: MiddlewareMatcher[] | undefined\n omitNonDeterministic?: boolean\n}\n\ninterface DefineEnv {\n [key: string]:\n | string\n | string[]\n | boolean\n | MiddlewareMatcher[]\n | BloomFilter\n | Partial<NextConfigComplete['images']>\n | I18NDomains\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 = {}\n for (const key in defineEnv) {\n const value = defineEnv[key]\n defineEnvStringified[key] = 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 fetchCacheKeyPrefix,\n hasRewrites,\n isClient,\n isEdgeServer,\n isNodeServer,\n middlewareMatchers,\n omitNonDeterministic,\n}: DefineEnvOptions): SerializedDefineEnv {\n const nextPublicEnv = getNextPublicEnvironmentVariables()\n const nextConfigEnv = getNextConfigEnv(config)\n\n const isPPREnabled = checkIsAppPPREnabled(config.experimental.ppr)\n const isDynamicIOEnabled = !!config.experimental.dynamicIO\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_DYNAMIC_IO': isDynamicIOEnabled,\n 'process.env.__NEXT_USE_CACHE': isUseCacheEnabled,\n\n 'process.env.NEXT_DEPLOYMENT_ID': config.experimental?.useSkewCookie\n ? false\n : config.deploymentId || false,\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_SEGMENT_CACHE': Boolean(\n config.experimental.clientSegmentCache\n ),\n 'process.env.__NEXT_DYNAMIC_ON_HOVER': Boolean(\n config.experimental.dynamicOnHover\n ),\n 'process.env.__NEXT_ROUTER_BF_CACHE': Boolean(\n config.experimental.routerBFCache\n ),\n 'process.env.__NEXT_OPTIMISTIC_CLIENT_CACHE':\n config.experimental.optimisticClientCache ?? true,\n 'process.env.__NEXT_MIDDLEWARE_PREFETCH':\n config.experimental.middlewarePrefetch ?? '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 '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_STRICT_NEXT_HEAD':\n config.experimental.strictNextHead ?? true,\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_NO_MIDDLEWARE_URL_NORMALIZE':\n config.skipMiddlewareUrlNormalize,\n 'process.env.__NEXT_EXTERNAL_MIDDLEWARE_REWRITE_RESOLVE':\n config.experimental.externalMiddlewareRewritesResolve ?? 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': JSON.stringify(\n config.experimental.multiZoneDraftMode\n ),\n 'process.env.__NEXT_TRUST_HOST_HEADER': JSON.stringify(\n config.experimental.trustHostHeader\n ),\n 'process.env.__NEXT_ALLOWED_REVALIDATE_HEADERS': JSON.stringify(\n config.experimental.allowedRevalidateHeaderKeys\n ),\n ...(isNodeServer\n ? {\n 'process.env.__NEXT_RELATIVE_DIST_DIR': config.distDir,\n }\n : {}),\n 'process.env.__NEXT_DEVTOOL_SEGMENT_EXPLORER':\n config.experimental.devtoolSegmentExplorer ?? false,\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 for (const key of ['process.env.NEXT_DEPLOYMENT_ID']) {\n serializedDefineEnv[key] = safeKey(key)\n }\n }\n\n return serializedDefineEnv\n}\n"],"names":["needsExperimentalReact","checkIsAppPPREnabled","getNextConfigEnv","getNextPublicEnvironmentVariables","serializeDefineEnv","defineEnv","defineEnvStringified","key","value","JSON","stringify","getImageConfig","config","dev","deviceSizes","images","imageSizes","qualities","path","loader","dangerouslyAllowSVG","unoptimized","domains","remotePatterns","localPatterns","output","getDefineEnv","isTurbopack","clientRouterFilters","distDir","fetchCacheKeyPrefix","hasRewrites","isClient","isEdgeServer","isNodeServer","middlewareMatchers","omitNonDeterministic","nextPublicEnv","nextConfigEnv","isPPREnabled","experimental","ppr","isDynamicIOEnabled","dynamicIO","isUseCacheEnabled","useCache","__NEXT_DEFINE_ENV","EdgeRuntime","process","env","NEXT_EDGE_RUNTIME_PROVIDER","NEXT_RSPACK","allowDevelopmentBuild","Boolean","appNavFailHandling","useSkewCookie","deploymentId","__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING","manualClientBasePath","isNaN","Number","staleTimes","dynamic","static","clientRouterFilter","staticFilter","dynamicFilter","clientSegmentCache","dynamicOnHover","routerBFCache","optimisticClientCache","middlewarePrefetch","crossOrigin","__NEXT_TEST_MODE","trailingSlash","devIndicators","position","reactStrictMode","optimizeCss","nextScriptWorkers","scrollRestoration","basePath","strictNextHead","i18n","skipMiddlewareUrlNormalize","externalMiddlewareRewritesResolve","skipTrailingSlashRedirect","webVitalsAttribution","length","linkNoTouchStart","assetPrefix","authInterrupts","NEXT_TELEMETRY_DISABLED","undefined","multiZoneDraftMode","trustHostHeader","allowedRevalidateHeaderKeys","devtoolSegmentExplorer","userDefines","compiler","define","hasOwnProperty","Error","userDefinesServer","defineServer","serializedDefineEnv","safeKey","split","pop"],"mappings":"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","ignoreList":[0]}
@@ -296,7 +296,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
296
296
  const nextBuildSpan = trace('next-build', undefined, {
297
297
  buildMode: experimentalBuildMode,
298
298
  isTurboBuild: String(isTurbopack),
299
- version: "15.4.0-canary.40"
299
+ version: "15.4.0-canary.41"
300
300
  });
301
301
  NextBuildContext.nextBuildSpan = nextBuildSpan;
302
302
  NextBuildContext.dir = dir;
@@ -678,7 +678,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
678
678
  // Files outside of the distDir can be "type": "module"
679
679
  await writeFileUtf8(path.join(distDir, 'package.json'), '{"type": "commonjs"}');
680
680
  // These are written to distDir, so they need to come after creating and cleaning distDr.
681
- await recordFrameworkVersion("15.4.0-canary.40");
681
+ await recordFrameworkVersion("15.4.0-canary.41");
682
682
  await updateBuildDiagnostics({
683
683
  buildStage: 'start'
684
684
  });
@@ -11,7 +11,7 @@ import { isDeepStrictEqual } from 'util';
11
11
  import { getDefineEnv } from '../define-env';
12
12
  import { getReactCompilerLoader } from '../get-babel-loader-config';
13
13
  import { TurbopackInternalError } from '../../shared/lib/turbopack/utils';
14
- const nextVersion = "15.4.0-canary.40";
14
+ const nextVersion = "15.4.0-canary.41";
15
15
  const ArchName = arch();
16
16
  const PlatformName = platform();
17
17
  function infoLog(...args) {
@@ -282,7 +282,6 @@ export function createDefineEnv({ isTurbopack, clientRouterFilters, config, dev,
282
282
  hasRewrites,
283
283
  isClient: variant === 'client',
284
284
  isEdgeServer: variant === 'edge',
285
- isNodeOrEdgeCompilation: variant === 'nodejs' || variant === 'edge',
286
285
  isNodeServer: variant === 'nodejs',
287
286
  middlewareMatchers
288
287
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/build/swc/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport path from 'path'\nimport { pathToFileURL } from 'url'\nimport { arch, platform } from 'os'\nimport { platformArchTriples } from 'next/dist/compiled/@napi-rs/triples'\nimport * as Log from '../output/log'\nimport { getParserOptions } from './options'\nimport { eventSwcLoadFailure } from '../../telemetry/events/swc-load-failure'\nimport { patchIncorrectLockfile } from '../../lib/patch-incorrect-lockfile'\nimport { downloadNativeNextSwc, downloadWasmSwc } from '../../lib/download-swc'\nimport type {\n NextConfigComplete,\n TurbopackLoaderItem,\n TurbopackRuleConfigItem,\n TurbopackRuleConfigItemOptions,\n TurbopackRuleConfigItemOrShortcut,\n} from '../../server/config-shared'\nimport { isDeepStrictEqual } from 'util'\nimport { type DefineEnvOptions, getDefineEnv } from '../define-env'\nimport { getReactCompilerLoader } from '../get-babel-loader-config'\nimport type {\n NapiPartialProjectOptions,\n NapiProjectOptions,\n} from './generated-native'\nimport type {\n Binding,\n CompilationEvent,\n DefineEnv,\n Endpoint,\n HmrIdentifiers,\n Project,\n ProjectOptions,\n RawEntrypoints,\n Route,\n TurboEngineOptions,\n TurbopackResult,\n TurbopackStackFrame,\n Update,\n UpdateMessage,\n WrittenEndpoint,\n} from './types'\nimport { TurbopackInternalError } from '../../shared/lib/turbopack/utils'\n\ntype RawBindings = typeof import('./generated-native')\ntype RawWasmBindings = typeof import('./generated-wasm') & {\n default?(): Promise<typeof import('./generated-wasm')>\n}\n\nconst nextVersion = process.env.__NEXT_VERSION as string\n\nconst ArchName = arch()\nconst PlatformName = platform()\n\nfunction infoLog(...args: any[]) {\n if (process.env.NEXT_PRIVATE_BUILD_WORKER) {\n return\n }\n if (process.env.DEBUG) {\n Log.info(...args)\n }\n}\n\n/**\n * Based on napi-rs's target triples, returns triples that have corresponding next-swc binaries.\n */\nexport function getSupportedArchTriples(): Record<string, any> {\n const { darwin, win32, linux, freebsd, android } = platformArchTriples\n\n return {\n darwin,\n win32: {\n arm64: win32.arm64,\n ia32: win32.ia32.filter((triple) => triple.abi === 'msvc'),\n x64: win32.x64.filter((triple) => triple.abi === 'msvc'),\n },\n linux: {\n // linux[x64] includes `gnux32` abi, with x64 arch.\n x64: linux.x64.filter((triple) => triple.abi !== 'gnux32'),\n arm64: linux.arm64,\n // This target is being deprecated, however we keep it in `knownDefaultWasmFallbackTriples` for now\n arm: linux.arm,\n },\n // Below targets are being deprecated, however we keep it in `knownDefaultWasmFallbackTriples` for now\n freebsd: {\n x64: freebsd.x64,\n },\n android: {\n arm64: android.arm64,\n arm: android.arm,\n },\n }\n}\n\nconst triples = (() => {\n const supportedArchTriples = getSupportedArchTriples()\n const targetTriple = supportedArchTriples[PlatformName]?.[ArchName]\n\n // If we have supported triple, return it right away\n if (targetTriple) {\n return targetTriple\n }\n\n // If there isn't corresponding target triple in `supportedArchTriples`, check if it's excluded from original raw triples\n // Otherwise, it is completely unsupported platforms.\n let rawTargetTriple = platformArchTriples[PlatformName]?.[ArchName]\n\n if (rawTargetTriple) {\n Log.warn(\n `Trying to load next-swc for target triple ${rawTargetTriple}, but there next-swc does not have native bindings support`\n )\n } else {\n Log.warn(\n `Trying to load next-swc for unsupported platforms ${PlatformName}/${ArchName}`\n )\n }\n\n return []\n})()\n\n// Allow to specify an absolute path to the custom turbopack binary to load.\n// If one of env variables is set, `loadNative` will try to use specified\n// binary instead. This is thin, naive interface\n// - `loadBindings` will not validate neither path nor the binary.\n//\n// Note these are internal flag: there's no stability, feature guarantee.\nconst __INTERNAL_CUSTOM_TURBOPACK_BINDINGS =\n process.env.__INTERNAL_CUSTOM_TURBOPACK_BINDINGS\n\nfunction checkVersionMismatch(pkgData: any) {\n const version = pkgData.version\n\n if (version && version !== nextVersion) {\n Log.warn(\n `Mismatching @next/swc version, detected: ${version} while Next.js is on ${nextVersion}. Please ensure these match`\n )\n }\n}\n\n// These are the platforms we'll try to load wasm bindings first,\n// only try to load native bindings if loading wasm binding somehow fails.\n// Fallback to native binding is for migration period only,\n// once we can verify loading-wasm-first won't cause visible regressions,\n// we'll not include native bindings for these platform at all.\nconst knownDefaultWasmFallbackTriples = [\n 'x86_64-unknown-freebsd',\n 'aarch64-linux-android',\n 'arm-linux-androideabi',\n 'armv7-unknown-linux-gnueabihf',\n 'i686-pc-windows-msvc',\n // WOA targets are TBD, while current userbase is small we may support it in the future\n //'aarch64-pc-windows-msvc',\n]\n\n// The last attempt's error code returned when cjs require to native bindings fails.\n// If node.js throws an error without error code, this should be `unknown` instead of undefined.\n// For the wasm-first targets (`knownDefaultWasmFallbackTriples`) this will be `unsupported_target`.\nlet lastNativeBindingsLoadErrorCode:\n | 'unknown'\n | 'unsupported_target'\n | string\n | undefined = undefined\nlet nativeBindings: Binding\nlet wasmBindings: Binding\nlet downloadWasmPromise: any\nlet pendingBindings: any\nlet swcTraceFlushGuard: any\nlet downloadNativeBindingsPromise: Promise<void> | undefined = undefined\n\nexport const lockfilePatchPromise: { cur?: Promise<void> } = {}\n\nexport async function loadBindings(\n useWasmBinary: boolean = false\n): Promise<Binding> {\n // Increase Rust stack size as some npm packages being compiled need more than the default.\n if (!process.env.RUST_MIN_STACK) {\n process.env.RUST_MIN_STACK = '8388608'\n }\n\n if (pendingBindings) {\n return pendingBindings\n }\n\n // rust needs stdout to be blocking, otherwise it will throw an error (on macOS at least) when writing a lot of data (logs) to it\n // see https://github.com/napi-rs/napi-rs/issues/1630\n // and https://github.com/nodejs/node/blob/main/doc/api/process.md#a-note-on-process-io\n if (process.stdout._handle != null) {\n // @ts-ignore\n process.stdout._handle.setBlocking?.(true)\n }\n if (process.stderr._handle != null) {\n // @ts-ignore\n process.stderr._handle.setBlocking?.(true)\n }\n\n pendingBindings = new Promise(async (resolve, _reject) => {\n if (!lockfilePatchPromise.cur) {\n // always run lockfile check once so that it gets patched\n // even if it doesn't fail to load locally\n lockfilePatchPromise.cur = patchIncorrectLockfile(process.cwd()).catch(\n console.error\n )\n }\n\n let attempts: any[] = []\n const disableWasmFallback = process.env.NEXT_DISABLE_SWC_WASM\n const unsupportedPlatform = triples.some(\n (triple: any) =>\n !!triple?.raw && knownDefaultWasmFallbackTriples.includes(triple.raw)\n )\n const isWebContainer = process.versions.webcontainer\n // Normal execution relies on the param `useWasmBinary` flag to load, but\n // in certain cases where there isn't a native binary we always load wasm fallback first.\n const shouldLoadWasmFallbackFirst =\n (!disableWasmFallback && useWasmBinary) ||\n unsupportedPlatform ||\n isWebContainer\n\n if (!unsupportedPlatform && useWasmBinary) {\n Log.warn(\n `experimental.useWasmBinary is not an option for supported platform ${PlatformName}/${ArchName} and will be ignored.`\n )\n }\n\n if (shouldLoadWasmFallbackFirst) {\n lastNativeBindingsLoadErrorCode = 'unsupported_target'\n const fallbackBindings = await tryLoadWasmWithFallback(attempts)\n if (fallbackBindings) {\n return resolve(fallbackBindings)\n }\n }\n\n // Trickle down loading `fallback` bindings:\n //\n // - First, try to load native bindings installed in node_modules.\n // - If that fails with `ERR_MODULE_NOT_FOUND`, treat it as case of https://github.com/npm/cli/issues/4828\n // that host system where generated package lock is not matching to the guest system running on, try to manually\n // download corresponding target triple and load it. This won't be triggered if native bindings are failed to load\n // with other reasons than `ERR_MODULE_NOT_FOUND`.\n // - Lastly, falls back to wasm binding where possible.\n try {\n return resolve(loadNative())\n } catch (a) {\n if (\n Array.isArray(a) &&\n a.every((m) => m.includes('it was not installed'))\n ) {\n let fallbackBindings = await tryLoadNativeWithFallback(attempts)\n\n if (fallbackBindings) {\n return resolve(fallbackBindings)\n }\n }\n\n attempts = attempts.concat(a)\n }\n\n // For these platforms we already tried to load wasm and failed, skip reattempt\n if (!shouldLoadWasmFallbackFirst && !disableWasmFallback) {\n const fallbackBindings = await tryLoadWasmWithFallback(attempts)\n if (fallbackBindings) {\n return resolve(fallbackBindings)\n }\n }\n\n logLoadFailure(attempts, true)\n })\n return pendingBindings\n}\n\nasync function tryLoadNativeWithFallback(attempts: Array<string>) {\n const nativeBindingsDirectory = path.join(\n path.dirname(require.resolve('next/package.json')),\n 'next-swc-fallback'\n )\n\n if (!downloadNativeBindingsPromise) {\n downloadNativeBindingsPromise = downloadNativeNextSwc(\n nextVersion,\n nativeBindingsDirectory,\n triples.map((triple: any) => triple.platformArchABI)\n )\n }\n await downloadNativeBindingsPromise\n\n try {\n return loadNative(nativeBindingsDirectory)\n } catch (a: any) {\n attempts.push(...[].concat(a))\n }\n\n return undefined\n}\n\nasync function tryLoadWasmWithFallback(attempts: any[]) {\n try {\n let bindings = await loadWasm('')\n // @ts-expect-error TODO: this event has a wrong type.\n eventSwcLoadFailure({\n wasm: 'enabled',\n nativeBindingsErrorCode: lastNativeBindingsLoadErrorCode,\n })\n return bindings\n } catch (a: any) {\n attempts.push(...[].concat(a))\n }\n\n try {\n // if not installed already download wasm package on-demand\n // we download to a custom directory instead of to node_modules\n // as node_module import attempts are cached and can't be re-attempted\n // x-ref: https://github.com/nodejs/modules/issues/307\n const wasmDirectory = path.join(\n path.dirname(require.resolve('next/package.json')),\n 'wasm'\n )\n if (!downloadWasmPromise) {\n downloadWasmPromise = downloadWasmSwc(nextVersion, wasmDirectory)\n }\n await downloadWasmPromise\n let bindings = await loadWasm(wasmDirectory)\n // @ts-expect-error TODO: this event has a wrong type.\n eventSwcLoadFailure({\n wasm: 'fallback',\n nativeBindingsErrorCode: lastNativeBindingsLoadErrorCode,\n })\n\n // still log native load attempts so user is\n // aware it failed and should be fixed\n for (const attempt of attempts) {\n Log.warn(attempt)\n }\n return bindings\n } catch (a: any) {\n attempts.push(...[].concat(a))\n }\n}\n\nfunction loadBindingsSync() {\n let attempts: any[] = []\n try {\n return loadNative()\n } catch (a) {\n attempts = attempts.concat(a)\n }\n\n // we can leverage the wasm bindings if they are already\n // loaded\n if (wasmBindings) {\n return wasmBindings\n }\n\n logLoadFailure(attempts)\n throw new Error('Failed to load bindings', { cause: attempts })\n}\n\nlet loggingLoadFailure = false\n\nfunction logLoadFailure(attempts: any, triedWasm = false) {\n // make sure we only emit the event and log the failure once\n if (loggingLoadFailure) return\n loggingLoadFailure = true\n\n for (let attempt of attempts) {\n Log.warn(attempt)\n }\n\n // @ts-expect-error TODO: this event has a wrong type.\n eventSwcLoadFailure({\n wasm: triedWasm ? 'failed' : undefined,\n nativeBindingsErrorCode: lastNativeBindingsLoadErrorCode,\n })\n .then(() => lockfilePatchPromise.cur || Promise.resolve())\n .finally(() => {\n Log.error(\n `Failed to load SWC binary for ${PlatformName}/${ArchName}, see more info here: https://nextjs.org/docs/messages/failed-loading-swc`\n )\n process.exit(1)\n })\n}\n\ntype RustifiedEnv = { name: string; value: string }[]\n\nexport function createDefineEnv({\n isTurbopack,\n clientRouterFilters,\n config,\n dev,\n distDir,\n fetchCacheKeyPrefix,\n hasRewrites,\n middlewareMatchers,\n}: Omit<\n DefineEnvOptions,\n 'isClient' | 'isNodeOrEdgeCompilation' | 'isEdgeServer' | 'isNodeServer'\n>): DefineEnv {\n let defineEnv: DefineEnv = {\n client: [],\n edge: [],\n nodejs: [],\n }\n\n for (const variant of Object.keys(defineEnv) as (keyof typeof defineEnv)[]) {\n defineEnv[variant] = rustifyEnv(\n getDefineEnv({\n isTurbopack,\n clientRouterFilters,\n config,\n dev,\n distDir,\n fetchCacheKeyPrefix,\n hasRewrites,\n isClient: variant === 'client',\n isEdgeServer: variant === 'edge',\n isNodeOrEdgeCompilation: variant === 'nodejs' || variant === 'edge',\n isNodeServer: variant === 'nodejs',\n middlewareMatchers,\n })\n )\n }\n\n return defineEnv\n}\n\nfunction rustifyEnv(env: Record<string, string>): RustifiedEnv {\n return Object.entries(env)\n .filter(([_, value]) => value != null)\n .map(([name, value]) => ({\n name,\n value,\n }))\n}\n\n// TODO(sokra) Support wasm option.\nfunction bindingToApi(\n binding: RawBindings,\n _wasm: boolean\n): Binding['turbo']['createProject'] {\n type NativeFunction<T> = (\n callback: (err: Error, value: T) => void\n ) => Promise<{ __napiType: 'RootTask' }>\n\n type NapiEndpoint = { __napiType: 'Endpoint' }\n\n type NapiEntrypoints = {\n routes: NapiRoute[]\n middleware?: NapiMiddleware\n instrumentation?: NapiInstrumentation\n pagesDocumentEndpoint: NapiEndpoint\n pagesAppEndpoint: NapiEndpoint\n pagesErrorEndpoint: NapiEndpoint\n }\n\n type NapiMiddleware = {\n endpoint: NapiEndpoint\n runtime: 'nodejs' | 'edge'\n matcher?: string[]\n }\n\n type NapiInstrumentation = {\n nodeJs: NapiEndpoint\n edge: NapiEndpoint\n }\n\n type NapiRoute = {\n pathname: string\n } & (\n | {\n type: 'page'\n htmlEndpoint: NapiEndpoint\n dataEndpoint: NapiEndpoint\n }\n | {\n type: 'page-api'\n endpoint: NapiEndpoint\n }\n | {\n type: 'app-page'\n pages: {\n originalName: string\n htmlEndpoint: NapiEndpoint\n rscEndpoint: NapiEndpoint\n }[]\n }\n | {\n type: 'app-route'\n originalName: string\n endpoint: NapiEndpoint\n }\n | {\n type: 'conflict'\n }\n )\n\n const cancel = new (class Cancel extends Error {})()\n\n /**\n * Utility function to ensure all variants of an enum are handled.\n */\n function invariant(\n never: never,\n computeMessage: (arg: any) => string\n ): never {\n throw new Error(`Invariant: ${computeMessage(never)}`)\n }\n\n async function withErrorCause<T>(fn: () => Promise<T>): Promise<T> {\n try {\n return await fn()\n } catch (nativeError: any) {\n throw TurbopackInternalError.createAndRecordTelemetry(nativeError)\n }\n }\n\n /**\n * Calls a native function and streams the result.\n * If useBuffer is true, all values will be preserved, potentially buffered\n * if consumed slower than produced. Else, only the latest value will be\n * preserved.\n */\n function subscribe<T>(\n useBuffer: boolean,\n nativeFunction:\n | NativeFunction<T>\n | ((callback: (err: Error, value: T) => void) => Promise<void>)\n ): AsyncIterableIterator<T> {\n type BufferItem =\n | { err: Error; value: undefined }\n | { err: undefined; value: T }\n // A buffer of produced items. This will only contain values if the\n // consumer is slower than the producer.\n let buffer: BufferItem[] = []\n // A deferred value waiting for the next produced item. This will only\n // exist if the consumer is faster than the producer.\n let waiting:\n | {\n resolve: (value: T) => void\n reject: (error: Error) => void\n }\n | undefined\n let canceled = false\n\n // The native function will call this every time it emits a new result. We\n // either need to notify a waiting consumer, or buffer the new result until\n // the consumer catches up.\n function emitResult(err: Error | undefined, value: T | undefined) {\n if (waiting) {\n let { resolve, reject } = waiting\n waiting = undefined\n if (err) reject(err)\n else resolve(value!)\n } else {\n const item = { err, value } as BufferItem\n if (useBuffer) buffer.push(item)\n else buffer[0] = item\n }\n }\n\n async function* createIterator() {\n const task = await withErrorCause<{ __napiType: 'RootTask' } | void>(() =>\n nativeFunction(emitResult)\n )\n try {\n while (!canceled) {\n if (buffer.length > 0) {\n const item = buffer.shift()!\n if (item.err) throw item.err\n yield item.value\n } else {\n // eslint-disable-next-line no-loop-func\n yield new Promise<T>((resolve, reject) => {\n waiting = { resolve, reject }\n })\n }\n }\n } catch (e) {\n if (e === cancel) return\n if (e instanceof Error) {\n throw TurbopackInternalError.createAndRecordTelemetry(e)\n }\n throw e\n } finally {\n if (task) {\n binding.rootTaskDispose(task)\n }\n }\n }\n\n const iterator = createIterator()\n iterator.return = async () => {\n canceled = true\n if (waiting) waiting.reject(cancel)\n return { value: undefined, done: true } as IteratorReturnResult<never>\n }\n return iterator\n }\n\n async function rustifyProjectOptions(\n options: ProjectOptions\n ): Promise<NapiProjectOptions> {\n return {\n ...options,\n nextConfig: await serializeNextConfig(\n options.nextConfig,\n options.projectPath!\n ),\n jsConfig: JSON.stringify(options.jsConfig),\n env: rustifyEnv(options.env),\n }\n }\n\n async function rustifyPartialProjectOptions(\n options: Partial<ProjectOptions>\n ): Promise<NapiPartialProjectOptions> {\n return {\n ...options,\n nextConfig:\n options.nextConfig &&\n (await serializeNextConfig(options.nextConfig, options.projectPath!)),\n jsConfig: options.jsConfig && JSON.stringify(options.jsConfig),\n env: options.env && rustifyEnv(options.env),\n }\n }\n\n class ProjectImpl implements Project {\n private readonly _nativeProject: { __napiType: 'Project' }\n\n constructor(nativeProject: { __napiType: 'Project' }) {\n this._nativeProject = nativeProject\n }\n\n async update(options: Partial<ProjectOptions>) {\n await withErrorCause(async () =>\n binding.projectUpdate(\n this._nativeProject,\n await rustifyPartialProjectOptions(options)\n )\n )\n }\n\n async writeAllEntrypointsToDisk(\n appDirOnly: boolean\n ): Promise<TurbopackResult<RawEntrypoints>> {\n return await withErrorCause(async () => {\n const napiEndpoints = (await binding.projectWriteAllEntrypointsToDisk(\n this._nativeProject,\n appDirOnly\n )) as TurbopackResult<NapiEntrypoints>\n\n return napiEntrypointsToRawEntrypoints(napiEndpoints)\n })\n }\n\n entrypointsSubscribe() {\n const subscription = subscribe<TurbopackResult<NapiEntrypoints>>(\n false,\n async (callback) =>\n binding.projectEntrypointsSubscribe(this._nativeProject, callback)\n )\n return (async function* () {\n for await (const entrypoints of subscription) {\n yield napiEntrypointsToRawEntrypoints(entrypoints)\n }\n })()\n }\n\n hmrEvents(identifier: string) {\n return subscribe<TurbopackResult<Update>>(true, async (callback) =>\n binding.projectHmrEvents(this._nativeProject, identifier, callback)\n )\n }\n\n hmrIdentifiersSubscribe() {\n return subscribe<TurbopackResult<HmrIdentifiers>>(\n false,\n async (callback) =>\n binding.projectHmrIdentifiersSubscribe(this._nativeProject, callback)\n )\n }\n\n traceSource(\n stackFrame: TurbopackStackFrame,\n currentDirectoryFileUrl: string\n ): Promise<TurbopackStackFrame | null> {\n return binding.projectTraceSource(\n this._nativeProject,\n stackFrame,\n currentDirectoryFileUrl\n )\n }\n\n getSourceForAsset(filePath: string): Promise<string | null> {\n return binding.projectGetSourceForAsset(this._nativeProject, filePath)\n }\n\n getSourceMap(filePath: string): Promise<string | null> {\n return binding.projectGetSourceMap(this._nativeProject, filePath)\n }\n\n getSourceMapSync(filePath: string): string | null {\n return binding.projectGetSourceMapSync(this._nativeProject, filePath)\n }\n\n updateInfoSubscribe(aggregationMs: number) {\n return subscribe<TurbopackResult<UpdateMessage>>(true, async (callback) =>\n binding.projectUpdateInfoSubscribe(\n this._nativeProject,\n aggregationMs,\n callback\n )\n )\n }\n\n compilationEventsSubscribe() {\n return subscribe<TurbopackResult<CompilationEvent>>(\n true,\n async (callback) => {\n binding.projectCompilationEventsSubscribe(\n this._nativeProject,\n callback\n )\n }\n )\n }\n\n shutdown(): Promise<void> {\n return binding.projectShutdown(this._nativeProject)\n }\n\n onExit(): Promise<void> {\n return binding.projectOnExit(this._nativeProject)\n }\n }\n\n class EndpointImpl implements Endpoint {\n private readonly _nativeEndpoint: { __napiType: 'Endpoint' }\n\n constructor(nativeEndpoint: { __napiType: 'Endpoint' }) {\n this._nativeEndpoint = nativeEndpoint\n }\n\n async writeToDisk(): Promise<TurbopackResult<WrittenEndpoint>> {\n return await withErrorCause(\n () =>\n binding.endpointWriteToDisk(this._nativeEndpoint) as Promise<\n TurbopackResult<WrittenEndpoint>\n >\n )\n }\n\n async clientChanged(): Promise<AsyncIterableIterator<TurbopackResult<{}>>> {\n const clientSubscription = subscribe<TurbopackResult>(\n false,\n async (callback) =>\n binding.endpointClientChangedSubscribe(\n await this._nativeEndpoint,\n callback\n )\n )\n await clientSubscription.next()\n return clientSubscription\n }\n\n async serverChanged(\n includeIssues: boolean\n ): Promise<AsyncIterableIterator<TurbopackResult<{}>>> {\n const serverSubscription = subscribe<TurbopackResult>(\n false,\n async (callback) =>\n binding.endpointServerChangedSubscribe(\n await this._nativeEndpoint,\n includeIssues,\n callback\n )\n )\n await serverSubscription.next()\n return serverSubscription\n }\n }\n\n /**\n * Returns a new copy of next.js config object to avoid mutating the original.\n *\n * Also it does some augmentation to the configuration as well, for example set the\n * turbopack's rules if `experimental.reactCompilerOptions` is set.\n */\n function augmentNextConfig(\n originalNextConfig: NextConfigComplete,\n projectPath: string\n ): Record<string, any> {\n let nextConfig = { ...(originalNextConfig as any) }\n\n const reactCompilerOptions = nextConfig.experimental?.reactCompiler\n\n // It is not easy to set the rules inside of rust as resolving, and passing the context identical to the webpack\n // config is bit hard, also we can reuse same codes between webpack config in here.\n if (reactCompilerOptions) {\n const ruleKeys = ['*.ts', '*.js', '*.jsx', '*.tsx']\n if (\n Object.keys(nextConfig?.turbopack?.rules ?? []).some((key) =>\n ruleKeys.includes(key)\n )\n ) {\n Log.warn(\n `The React Compiler cannot be enabled automatically because 'turbopack.rules' contains a rule for '*.ts', '*.js', '*.jsx', and '*.tsx'. Remove this rule, or add 'babel-loader' and 'babel-plugin-react-compiler' to the Turbopack configuration manually.`\n )\n } else {\n if (!nextConfig.turbopack) {\n nextConfig.turbopack = {}\n }\n\n if (!nextConfig.turbopack.rules) {\n nextConfig.turbopack.rules = {}\n }\n\n for (const key of ['*.ts', '*.js', '*.jsx', '*.tsx']) {\n nextConfig.turbopack.rules[key] = {\n browser: {\n foreign: false,\n loaders: [\n getReactCompilerLoader(\n originalNextConfig.experimental.reactCompiler,\n projectPath,\n nextConfig.dev,\n false,\n undefined\n ),\n ],\n },\n }\n }\n }\n }\n\n return nextConfig\n }\n\n async function serializeNextConfig(\n nextConfig: NextConfigComplete,\n projectPath: string\n ): Promise<string> {\n // Avoid mutating the existing `nextConfig` object.\n let nextConfigSerializable = augmentNextConfig(nextConfig, projectPath)\n\n nextConfigSerializable.generateBuildId =\n await nextConfig.generateBuildId?.()\n\n // TODO: these functions takes arguments, have to be supported in a different way\n nextConfigSerializable.exportPathMap = {}\n nextConfigSerializable.webpack = nextConfig.webpack && {}\n\n if (nextConfigSerializable.experimental?.turbo?.rules) {\n ensureLoadersHaveSerializableOptions(\n nextConfigSerializable.turbopack?.rules\n )\n }\n\n nextConfigSerializable.modularizeImports =\n nextConfigSerializable.modularizeImports\n ? Object.fromEntries(\n Object.entries<any>(nextConfigSerializable.modularizeImports).map(\n ([mod, config]) => [\n mod,\n {\n ...config,\n transform:\n typeof config.transform === 'string'\n ? config.transform\n : Object.entries(config.transform).map(([key, value]) => [\n key,\n value,\n ]),\n },\n ]\n )\n )\n : undefined\n\n // loaderFile is an absolute path, we need it to be relative for turbopack.\n if (nextConfigSerializable.images.loaderFile) {\n nextConfigSerializable.images = {\n ...nextConfig.images,\n loaderFile:\n './' + path.relative(projectPath, nextConfig.images.loaderFile),\n }\n }\n\n const conditions: (typeof nextConfig)['turbopack']['conditions'] =\n nextConfigSerializable.turbopack?.conditions\n if (conditions) {\n type SerializedConditions = {\n [key: string]: {\n path:\n | { type: 'regexp'; value: { source: string; flags: string } }\n | { type: 'glob'; value: string }\n }\n }\n\n const serializedConditions: SerializedConditions = {}\n for (const [key, value] of Object.entries(conditions)) {\n serializedConditions[key] = {\n ...value,\n path:\n value.path instanceof RegExp\n ? {\n type: 'regexp',\n value: { source: value.path.source, flags: value.path.flags },\n }\n : { type: 'glob', value: value.path },\n }\n }\n nextConfigSerializable.turbopack.conditions = serializedConditions\n }\n\n return JSON.stringify(nextConfigSerializable, null, 2)\n }\n\n function ensureLoadersHaveSerializableOptions(\n turbopackRules: Record<string, TurbopackRuleConfigItemOrShortcut>\n ) {\n for (const [glob, rule] of Object.entries(turbopackRules)) {\n if (Array.isArray(rule)) {\n checkLoaderItems(rule, glob)\n } else {\n checkConfigItem(rule, glob)\n }\n }\n\n function checkConfigItem(rule: TurbopackRuleConfigItem, glob: string) {\n if (!rule) return\n if ('loaders' in rule) {\n checkLoaderItems((rule as TurbopackRuleConfigItemOptions).loaders, glob)\n } else {\n for (const key in rule) {\n const inner = rule[key]\n if (typeof inner === 'object' && inner) {\n checkConfigItem(inner, glob)\n }\n }\n }\n }\n\n function checkLoaderItems(\n loaderItems: TurbopackLoaderItem[],\n glob: string\n ) {\n for (const loaderItem of loaderItems) {\n if (\n typeof loaderItem !== 'string' &&\n !isDeepStrictEqual(loaderItem, JSON.parse(JSON.stringify(loaderItem)))\n ) {\n throw new Error(\n `loader ${loaderItem.loader} for match \"${glob}\" does not have serializable options. Ensure that options passed are plain JavaScript objects and values.`\n )\n }\n }\n }\n }\n\n function napiEntrypointsToRawEntrypoints(\n entrypoints: TurbopackResult<NapiEntrypoints>\n ): TurbopackResult<RawEntrypoints> {\n const routes = new Map()\n for (const { pathname, ...nativeRoute } of entrypoints.routes) {\n let route: Route\n const routeType = nativeRoute.type\n switch (routeType) {\n case 'page':\n route = {\n type: 'page',\n htmlEndpoint: new EndpointImpl(nativeRoute.htmlEndpoint),\n dataEndpoint: new EndpointImpl(nativeRoute.dataEndpoint),\n }\n break\n case 'page-api':\n route = {\n type: 'page-api',\n endpoint: new EndpointImpl(nativeRoute.endpoint),\n }\n break\n case 'app-page':\n route = {\n type: 'app-page',\n pages: nativeRoute.pages.map((page) => ({\n originalName: page.originalName,\n htmlEndpoint: new EndpointImpl(page.htmlEndpoint),\n rscEndpoint: new EndpointImpl(page.rscEndpoint),\n })),\n }\n break\n case 'app-route':\n route = {\n type: 'app-route',\n originalName: nativeRoute.originalName,\n endpoint: new EndpointImpl(nativeRoute.endpoint),\n }\n break\n case 'conflict':\n route = {\n type: 'conflict',\n }\n break\n default:\n const _exhaustiveCheck: never = routeType\n invariant(\n nativeRoute,\n () => `Unknown route type: ${_exhaustiveCheck}`\n )\n }\n routes.set(pathname, route)\n }\n const napiMiddlewareToMiddleware = (middleware: NapiMiddleware) => ({\n endpoint: new EndpointImpl(middleware.endpoint),\n runtime: middleware.runtime,\n matcher: middleware.matcher,\n })\n const middleware = entrypoints.middleware\n ? napiMiddlewareToMiddleware(entrypoints.middleware)\n : undefined\n const napiInstrumentationToInstrumentation = (\n instrumentation: NapiInstrumentation\n ) => ({\n nodeJs: new EndpointImpl(instrumentation.nodeJs),\n edge: new EndpointImpl(instrumentation.edge),\n })\n const instrumentation = entrypoints.instrumentation\n ? napiInstrumentationToInstrumentation(entrypoints.instrumentation)\n : undefined\n\n return {\n routes,\n middleware,\n instrumentation,\n pagesDocumentEndpoint: new EndpointImpl(\n entrypoints.pagesDocumentEndpoint\n ),\n pagesAppEndpoint: new EndpointImpl(entrypoints.pagesAppEndpoint),\n pagesErrorEndpoint: new EndpointImpl(entrypoints.pagesErrorEndpoint),\n issues: entrypoints.issues,\n diagnostics: entrypoints.diagnostics,\n }\n }\n\n return async function createProject(\n options: ProjectOptions,\n turboEngineOptions\n ) {\n return new ProjectImpl(\n await binding.projectNew(\n await rustifyProjectOptions(options),\n turboEngineOptions || {}\n )\n )\n }\n}\n\nasync function loadWasm(importPath = '') {\n if (wasmBindings) {\n return wasmBindings\n }\n\n let attempts = []\n for (let pkg of ['@next/swc-wasm-nodejs', '@next/swc-wasm-web']) {\n try {\n let pkgPath = pkg\n\n if (importPath) {\n // the import path must be exact when not in node_modules\n pkgPath = path.join(importPath, pkg, 'wasm.js')\n }\n let bindings: RawWasmBindings = await import(\n pathToFileURL(pkgPath).toString()\n )\n if (pkg === '@next/swc-wasm-web') {\n bindings = await bindings.default!()\n }\n infoLog('next-swc build: wasm build @next/swc-wasm-web')\n\n // Note wasm binary does not support async intefaces yet, all async\n // interface coereces to sync interfaces.\n wasmBindings = {\n css: {\n lightning: {\n transform: function (_options: any) {\n throw new Error(\n '`css.lightning.transform` is not supported by the wasm bindings.'\n )\n },\n transformStyleAttr: function (_options: any) {\n throw new Error(\n '`css.lightning.transformStyleAttr` is not supported by the wasm bindings.'\n )\n },\n },\n },\n isWasm: true,\n transform(src: string, options: any) {\n // TODO: we can remove fallback to sync interface once new stable version of next-swc gets published (current v12.2)\n return bindings?.transform\n ? bindings.transform(src.toString(), options)\n : Promise.resolve(bindings.transformSync(src.toString(), options))\n },\n transformSync(src: string, options: any) {\n return bindings.transformSync(src.toString(), options)\n },\n minify(src: string, options: any) {\n return bindings?.minify\n ? bindings.minify(src.toString(), options)\n : Promise.resolve(bindings.minifySync(src.toString(), options))\n },\n minifySync(src: string, options: any) {\n return bindings.minifySync(src.toString(), options)\n },\n parse(src: string, options: any) {\n return bindings?.parse\n ? bindings.parse(src.toString(), options)\n : Promise.resolve(bindings.parseSync(src.toString(), options))\n },\n getTargetTriple() {\n return undefined\n },\n turbo: {\n createProject: function (\n _options: ProjectOptions,\n _turboEngineOptions?: TurboEngineOptions | undefined\n ): Promise<Project> {\n throw new Error(\n '`turbo.createProject` is not supported by the wasm bindings.'\n )\n },\n startTurbopackTraceServer: function (_traceFilePath: string): void {\n throw new Error(\n '`turbo.startTurbopackTraceServer` is not supported by the wasm bindings.'\n )\n },\n },\n mdx: {\n compile(src: string, options: any) {\n return bindings.mdxCompile(src, getMdxOptions(options))\n },\n compileSync(src: string, options: any) {\n return bindings.mdxCompileSync(src, getMdxOptions(options))\n },\n },\n reactCompiler: {\n isReactCompilerRequired(_filename: string) {\n return Promise.resolve(true)\n },\n },\n }\n return wasmBindings\n } catch (e: any) {\n // Only log attempts for loading wasm when loading as fallback\n if (importPath) {\n if (e?.code === 'ERR_MODULE_NOT_FOUND') {\n attempts.push(`Attempted to load ${pkg}, but it was not installed`)\n } else {\n attempts.push(\n `Attempted to load ${pkg}, but an error occurred: ${e.message ?? e}`\n )\n }\n }\n }\n }\n\n throw attempts\n}\n\nfunction loadNative(importPath?: string) {\n if (nativeBindings) {\n return nativeBindings\n }\n\n const customBindings: RawBindings = !!__INTERNAL_CUSTOM_TURBOPACK_BINDINGS\n ? require(__INTERNAL_CUSTOM_TURBOPACK_BINDINGS)\n : null\n let bindings: RawBindings = customBindings\n let attempts: any[] = []\n\n const NEXT_TEST_NATIVE_DIR = process.env.NEXT_TEST_NATIVE_DIR\n for (const triple of triples) {\n if (NEXT_TEST_NATIVE_DIR) {\n try {\n // Use the binary directly to skip `pnpm pack` for testing as it's slow because of the large native binary.\n bindings = require(\n `${NEXT_TEST_NATIVE_DIR}/next-swc.${triple.platformArchABI}.node`\n )\n infoLog(\n 'next-swc build: local built @next/swc from NEXT_TEST_NATIVE_DIR'\n )\n break\n } catch (e) {}\n } else {\n try {\n bindings = require(\n `@next/swc/native/next-swc.${triple.platformArchABI}.node`\n )\n infoLog('next-swc build: local built @next/swc')\n break\n } catch (e) {}\n }\n }\n\n if (!bindings) {\n for (const triple of triples) {\n let pkg = importPath\n ? path.join(\n importPath,\n `@next/swc-${triple.platformArchABI}`,\n `next-swc.${triple.platformArchABI}.node`\n )\n : `@next/swc-${triple.platformArchABI}`\n try {\n bindings = require(pkg)\n if (!importPath) {\n checkVersionMismatch(require(`${pkg}/package.json`))\n }\n break\n } catch (e: any) {\n if (e?.code === 'MODULE_NOT_FOUND') {\n attempts.push(`Attempted to load ${pkg}, but it was not installed`)\n } else {\n attempts.push(\n `Attempted to load ${pkg}, but an error occurred: ${e.message ?? e}`\n )\n }\n lastNativeBindingsLoadErrorCode = e?.code ?? 'unknown'\n }\n }\n }\n\n if (bindings) {\n nativeBindings = {\n isWasm: false,\n transform(src: string, options: any) {\n const isModule =\n typeof src !== 'undefined' &&\n typeof src !== 'string' &&\n !Buffer.isBuffer(src)\n options = options || {}\n\n if (options?.jsc?.parser) {\n options.jsc.parser.syntax = options.jsc.parser.syntax ?? 'ecmascript'\n }\n\n return bindings.transform(\n isModule ? JSON.stringify(src) : src,\n isModule,\n toBuffer(options)\n )\n },\n\n transformSync(src: string, options: any) {\n if (typeof src === 'undefined') {\n throw new Error(\n \"transformSync doesn't implement reading the file from filesystem\"\n )\n } else if (Buffer.isBuffer(src)) {\n throw new Error(\n \"transformSync doesn't implement taking the source code as Buffer\"\n )\n }\n const isModule = typeof src !== 'string'\n options = options || {}\n\n if (options?.jsc?.parser) {\n options.jsc.parser.syntax = options.jsc.parser.syntax ?? 'ecmascript'\n }\n\n return bindings.transformSync(\n isModule ? JSON.stringify(src) : src,\n isModule,\n toBuffer(options)\n )\n },\n\n minify(src: string, options: any) {\n return bindings.minify(toBuffer(src), toBuffer(options ?? {}))\n },\n\n minifySync(src: string, options: any) {\n return bindings.minifySync(toBuffer(src), toBuffer(options ?? {}))\n },\n\n parse(src: string, options: any) {\n return bindings.parse(src, toBuffer(options ?? {}))\n },\n\n getTargetTriple: bindings.getTargetTriple,\n initCustomTraceSubscriber: bindings.initCustomTraceSubscriber,\n teardownTraceSubscriber: bindings.teardownTraceSubscriber,\n turbo: {\n createProject: bindingToApi(customBindings ?? bindings, false),\n startTurbopackTraceServer(traceFilePath) {\n Log.warn(\n 'Turbopack trace server started. View trace at https://trace.nextjs.org'\n )\n ;(customBindings ?? bindings).startTurbopackTraceServer(traceFilePath)\n },\n },\n mdx: {\n compile(src: string, options: any) {\n return bindings.mdxCompile(src, toBuffer(getMdxOptions(options)))\n },\n compileSync(src: string, options: any) {\n bindings.mdxCompileSync(src, toBuffer(getMdxOptions(options)))\n },\n },\n css: {\n lightning: {\n transform(transformOptions: any) {\n return bindings.lightningCssTransform(transformOptions)\n },\n transformStyleAttr(transformAttrOptions: any) {\n return bindings.lightningCssTransformStyleAttribute(\n transformAttrOptions\n )\n },\n },\n },\n reactCompiler: {\n isReactCompilerRequired: (filename: string) => {\n return bindings.isReactCompilerRequired(filename)\n },\n },\n }\n return nativeBindings\n }\n\n throw attempts\n}\n\n/// Build a mdx options object contains default values that\n/// can be parsed with serde_wasm_bindgen.\nfunction getMdxOptions(options: any = {}) {\n return {\n ...options,\n development: options.development ?? false,\n jsx: options.jsx ?? false,\n mdxType: options.mdxType ?? 'commonMark',\n }\n}\n\nfunction toBuffer(t: any) {\n return Buffer.from(JSON.stringify(t))\n}\n\nexport async function isWasm(): Promise<boolean> {\n let bindings = await loadBindings()\n return bindings.isWasm\n}\n\nexport async function transform(src: string, options?: any): Promise<any> {\n let bindings = await loadBindings()\n return bindings.transform(src, options)\n}\n\nexport function transformSync(src: string, options?: any): any {\n let bindings = loadBindingsSync()\n return bindings.transformSync(src, options)\n}\n\nexport async function minify(\n src: string,\n options: any\n): Promise<{ code: string; map: any }> {\n let bindings = await loadBindings()\n return bindings.minify(src, options)\n}\n\nexport async function isReactCompilerRequired(\n filename: string\n): Promise<boolean> {\n let bindings = await loadBindings()\n return bindings.reactCompiler.isReactCompilerRequired(filename)\n}\n\nexport async function parse(src: string, options: any): Promise<any> {\n let bindings = await loadBindings()\n let parserOptions = getParserOptions(options)\n return bindings\n .parse(src, parserOptions)\n .then((astStr: any) => JSON.parse(astStr))\n}\n\nexport function getBinaryMetadata() {\n let bindings\n try {\n bindings = loadNative()\n } catch (e) {\n // Suppress exceptions, this fn allows to fail to load native bindings\n }\n\n return {\n target: bindings?.getTargetTriple?.(),\n }\n}\n\n/**\n * Initialize trace subscriber to emit traces.\n *\n */\nexport function initCustomTraceSubscriber(traceFileName?: string) {\n if (swcTraceFlushGuard) {\n // Wasm binary doesn't support trace emission\n let bindings = loadNative()\n swcTraceFlushGuard = bindings.initCustomTraceSubscriber?.(traceFileName)\n }\n}\n\nfunction once(fn: () => void): () => void {\n let executed = false\n\n return function (): void {\n if (!executed) {\n executed = true\n\n fn()\n }\n }\n}\n\n/**\n * Teardown swc's trace subscriber if there's an initialized flush guard exists.\n *\n * This is workaround to amend behavior with process.exit\n * (https://github.com/vercel/next.js/blob/4db8c49cc31e4fc182391fae6903fb5ef4e8c66e/packages/next/bin/next.ts#L134=)\n * seems preventing napi's cleanup hook execution (https://github.com/swc-project/swc/blob/main/crates/node/src/util.rs#L48-L51=),\n *\n * instead parent process manually drops guard when process gets signal to exit.\n */\nexport const teardownTraceSubscriber = once(() => {\n try {\n let bindings = loadNative()\n if (swcTraceFlushGuard) {\n bindings.teardownTraceSubscriber?.(swcTraceFlushGuard)\n }\n } catch (e) {\n // Suppress exceptions, this fn allows to fail to load native bindings\n }\n})\n"],"names":["path","pathToFileURL","arch","platform","platformArchTriples","Log","getParserOptions","eventSwcLoadFailure","patchIncorrectLockfile","downloadNativeNextSwc","downloadWasmSwc","isDeepStrictEqual","getDefineEnv","getReactCompilerLoader","TurbopackInternalError","nextVersion","process","env","__NEXT_VERSION","ArchName","PlatformName","infoLog","args","NEXT_PRIVATE_BUILD_WORKER","DEBUG","info","getSupportedArchTriples","darwin","win32","linux","freebsd","android","arm64","ia32","filter","triple","abi","x64","arm","triples","supportedArchTriples","targetTriple","rawTargetTriple","warn","__INTERNAL_CUSTOM_TURBOPACK_BINDINGS","checkVersionMismatch","pkgData","version","knownDefaultWasmFallbackTriples","lastNativeBindingsLoadErrorCode","undefined","nativeBindings","wasmBindings","downloadWasmPromise","pendingBindings","swcTraceFlushGuard","downloadNativeBindingsPromise","lockfilePatchPromise","loadBindings","useWasmBinary","RUST_MIN_STACK","stdout","_handle","setBlocking","stderr","Promise","resolve","_reject","cur","cwd","catch","console","error","attempts","disableWasmFallback","NEXT_DISABLE_SWC_WASM","unsupportedPlatform","some","raw","includes","isWebContainer","versions","webcontainer","shouldLoadWasmFallbackFirst","fallbackBindings","tryLoadWasmWithFallback","loadNative","a","Array","isArray","every","m","tryLoadNativeWithFallback","concat","logLoadFailure","nativeBindingsDirectory","join","dirname","require","map","platformArchABI","push","bindings","loadWasm","wasm","nativeBindingsErrorCode","wasmDirectory","attempt","loadBindingsSync","Error","cause","loggingLoadFailure","triedWasm","then","finally","exit","createDefineEnv","isTurbopack","clientRouterFilters","config","dev","distDir","fetchCacheKeyPrefix","hasRewrites","middlewareMatchers","defineEnv","client","edge","nodejs","variant","Object","keys","rustifyEnv","isClient","isEdgeServer","isNodeOrEdgeCompilation","isNodeServer","entries","_","value","name","bindingToApi","binding","_wasm","cancel","Cancel","invariant","never","computeMessage","withErrorCause","fn","nativeError","createAndRecordTelemetry","subscribe","useBuffer","nativeFunction","buffer","waiting","canceled","emitResult","err","reject","item","createIterator","task","length","shift","e","rootTaskDispose","iterator","return","done","rustifyProjectOptions","options","nextConfig","serializeNextConfig","projectPath","jsConfig","JSON","stringify","rustifyPartialProjectOptions","ProjectImpl","constructor","nativeProject","_nativeProject","update","projectUpdate","writeAllEntrypointsToDisk","appDirOnly","napiEndpoints","projectWriteAllEntrypointsToDisk","napiEntrypointsToRawEntrypoints","entrypointsSubscribe","subscription","callback","projectEntrypointsSubscribe","entrypoints","hmrEvents","identifier","projectHmrEvents","hmrIdentifiersSubscribe","projectHmrIdentifiersSubscribe","traceSource","stackFrame","currentDirectoryFileUrl","projectTraceSource","getSourceForAsset","filePath","projectGetSourceForAsset","getSourceMap","projectGetSourceMap","getSourceMapSync","projectGetSourceMapSync","updateInfoSubscribe","aggregationMs","projectUpdateInfoSubscribe","compilationEventsSubscribe","projectCompilationEventsSubscribe","shutdown","projectShutdown","onExit","projectOnExit","EndpointImpl","nativeEndpoint","_nativeEndpoint","writeToDisk","endpointWriteToDisk","clientChanged","clientSubscription","endpointClientChangedSubscribe","next","serverChanged","includeIssues","serverSubscription","endpointServerChangedSubscribe","augmentNextConfig","originalNextConfig","reactCompilerOptions","experimental","reactCompiler","ruleKeys","turbopack","rules","key","browser","foreign","loaders","nextConfigSerializable","generateBuildId","exportPathMap","webpack","turbo","ensureLoadersHaveSerializableOptions","modularizeImports","fromEntries","mod","transform","images","loaderFile","relative","conditions","serializedConditions","RegExp","type","source","flags","turbopackRules","glob","rule","checkLoaderItems","checkConfigItem","inner","loaderItems","loaderItem","parse","loader","routes","Map","pathname","nativeRoute","route","routeType","htmlEndpoint","dataEndpoint","endpoint","pages","page","originalName","rscEndpoint","_exhaustiveCheck","set","napiMiddlewareToMiddleware","middleware","runtime","matcher","napiInstrumentationToInstrumentation","instrumentation","nodeJs","pagesDocumentEndpoint","pagesAppEndpoint","pagesErrorEndpoint","issues","diagnostics","createProject","turboEngineOptions","projectNew","importPath","pkg","pkgPath","toString","default","css","lightning","_options","transformStyleAttr","isWasm","src","transformSync","minify","minifySync","parseSync","getTargetTriple","_turboEngineOptions","startTurbopackTraceServer","_traceFilePath","mdx","compile","mdxCompile","getMdxOptions","compileSync","mdxCompileSync","isReactCompilerRequired","_filename","code","message","customBindings","NEXT_TEST_NATIVE_DIR","isModule","Buffer","isBuffer","jsc","parser","syntax","toBuffer","initCustomTraceSubscriber","teardownTraceSubscriber","traceFilePath","transformOptions","lightningCssTransform","transformAttrOptions","lightningCssTransformStyleAttribute","filename","development","jsx","mdxType","t","from","parserOptions","astStr","getBinaryMetadata","target","traceFileName","once","executed"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../src/build/swc/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport path from 'path'\nimport { pathToFileURL } from 'url'\nimport { arch, platform } from 'os'\nimport { platformArchTriples } from 'next/dist/compiled/@napi-rs/triples'\nimport * as Log from '../output/log'\nimport { getParserOptions } from './options'\nimport { eventSwcLoadFailure } from '../../telemetry/events/swc-load-failure'\nimport { patchIncorrectLockfile } from '../../lib/patch-incorrect-lockfile'\nimport { downloadNativeNextSwc, downloadWasmSwc } from '../../lib/download-swc'\nimport type {\n NextConfigComplete,\n TurbopackLoaderItem,\n TurbopackRuleConfigItem,\n TurbopackRuleConfigItemOptions,\n TurbopackRuleConfigItemOrShortcut,\n} from '../../server/config-shared'\nimport { isDeepStrictEqual } from 'util'\nimport { type DefineEnvOptions, getDefineEnv } from '../define-env'\nimport { getReactCompilerLoader } from '../get-babel-loader-config'\nimport type {\n NapiPartialProjectOptions,\n NapiProjectOptions,\n} from './generated-native'\nimport type {\n Binding,\n CompilationEvent,\n DefineEnv,\n Endpoint,\n HmrIdentifiers,\n Project,\n ProjectOptions,\n RawEntrypoints,\n Route,\n TurboEngineOptions,\n TurbopackResult,\n TurbopackStackFrame,\n Update,\n UpdateMessage,\n WrittenEndpoint,\n} from './types'\nimport { TurbopackInternalError } from '../../shared/lib/turbopack/utils'\n\ntype RawBindings = typeof import('./generated-native')\ntype RawWasmBindings = typeof import('./generated-wasm') & {\n default?(): Promise<typeof import('./generated-wasm')>\n}\n\nconst nextVersion = process.env.__NEXT_VERSION as string\n\nconst ArchName = arch()\nconst PlatformName = platform()\n\nfunction infoLog(...args: any[]) {\n if (process.env.NEXT_PRIVATE_BUILD_WORKER) {\n return\n }\n if (process.env.DEBUG) {\n Log.info(...args)\n }\n}\n\n/**\n * Based on napi-rs's target triples, returns triples that have corresponding next-swc binaries.\n */\nexport function getSupportedArchTriples(): Record<string, any> {\n const { darwin, win32, linux, freebsd, android } = platformArchTriples\n\n return {\n darwin,\n win32: {\n arm64: win32.arm64,\n ia32: win32.ia32.filter((triple) => triple.abi === 'msvc'),\n x64: win32.x64.filter((triple) => triple.abi === 'msvc'),\n },\n linux: {\n // linux[x64] includes `gnux32` abi, with x64 arch.\n x64: linux.x64.filter((triple) => triple.abi !== 'gnux32'),\n arm64: linux.arm64,\n // This target is being deprecated, however we keep it in `knownDefaultWasmFallbackTriples` for now\n arm: linux.arm,\n },\n // Below targets are being deprecated, however we keep it in `knownDefaultWasmFallbackTriples` for now\n freebsd: {\n x64: freebsd.x64,\n },\n android: {\n arm64: android.arm64,\n arm: android.arm,\n },\n }\n}\n\nconst triples = (() => {\n const supportedArchTriples = getSupportedArchTriples()\n const targetTriple = supportedArchTriples[PlatformName]?.[ArchName]\n\n // If we have supported triple, return it right away\n if (targetTriple) {\n return targetTriple\n }\n\n // If there isn't corresponding target triple in `supportedArchTriples`, check if it's excluded from original raw triples\n // Otherwise, it is completely unsupported platforms.\n let rawTargetTriple = platformArchTriples[PlatformName]?.[ArchName]\n\n if (rawTargetTriple) {\n Log.warn(\n `Trying to load next-swc for target triple ${rawTargetTriple}, but there next-swc does not have native bindings support`\n )\n } else {\n Log.warn(\n `Trying to load next-swc for unsupported platforms ${PlatformName}/${ArchName}`\n )\n }\n\n return []\n})()\n\n// Allow to specify an absolute path to the custom turbopack binary to load.\n// If one of env variables is set, `loadNative` will try to use specified\n// binary instead. This is thin, naive interface\n// - `loadBindings` will not validate neither path nor the binary.\n//\n// Note these are internal flag: there's no stability, feature guarantee.\nconst __INTERNAL_CUSTOM_TURBOPACK_BINDINGS =\n process.env.__INTERNAL_CUSTOM_TURBOPACK_BINDINGS\n\nfunction checkVersionMismatch(pkgData: any) {\n const version = pkgData.version\n\n if (version && version !== nextVersion) {\n Log.warn(\n `Mismatching @next/swc version, detected: ${version} while Next.js is on ${nextVersion}. Please ensure these match`\n )\n }\n}\n\n// These are the platforms we'll try to load wasm bindings first,\n// only try to load native bindings if loading wasm binding somehow fails.\n// Fallback to native binding is for migration period only,\n// once we can verify loading-wasm-first won't cause visible regressions,\n// we'll not include native bindings for these platform at all.\nconst knownDefaultWasmFallbackTriples = [\n 'x86_64-unknown-freebsd',\n 'aarch64-linux-android',\n 'arm-linux-androideabi',\n 'armv7-unknown-linux-gnueabihf',\n 'i686-pc-windows-msvc',\n // WOA targets are TBD, while current userbase is small we may support it in the future\n //'aarch64-pc-windows-msvc',\n]\n\n// The last attempt's error code returned when cjs require to native bindings fails.\n// If node.js throws an error without error code, this should be `unknown` instead of undefined.\n// For the wasm-first targets (`knownDefaultWasmFallbackTriples`) this will be `unsupported_target`.\nlet lastNativeBindingsLoadErrorCode:\n | 'unknown'\n | 'unsupported_target'\n | string\n | undefined = undefined\nlet nativeBindings: Binding\nlet wasmBindings: Binding\nlet downloadWasmPromise: any\nlet pendingBindings: any\nlet swcTraceFlushGuard: any\nlet downloadNativeBindingsPromise: Promise<void> | undefined = undefined\n\nexport const lockfilePatchPromise: { cur?: Promise<void> } = {}\n\nexport async function loadBindings(\n useWasmBinary: boolean = false\n): Promise<Binding> {\n // Increase Rust stack size as some npm packages being compiled need more than the default.\n if (!process.env.RUST_MIN_STACK) {\n process.env.RUST_MIN_STACK = '8388608'\n }\n\n if (pendingBindings) {\n return pendingBindings\n }\n\n // rust needs stdout to be blocking, otherwise it will throw an error (on macOS at least) when writing a lot of data (logs) to it\n // see https://github.com/napi-rs/napi-rs/issues/1630\n // and https://github.com/nodejs/node/blob/main/doc/api/process.md#a-note-on-process-io\n if (process.stdout._handle != null) {\n // @ts-ignore\n process.stdout._handle.setBlocking?.(true)\n }\n if (process.stderr._handle != null) {\n // @ts-ignore\n process.stderr._handle.setBlocking?.(true)\n }\n\n pendingBindings = new Promise(async (resolve, _reject) => {\n if (!lockfilePatchPromise.cur) {\n // always run lockfile check once so that it gets patched\n // even if it doesn't fail to load locally\n lockfilePatchPromise.cur = patchIncorrectLockfile(process.cwd()).catch(\n console.error\n )\n }\n\n let attempts: any[] = []\n const disableWasmFallback = process.env.NEXT_DISABLE_SWC_WASM\n const unsupportedPlatform = triples.some(\n (triple: any) =>\n !!triple?.raw && knownDefaultWasmFallbackTriples.includes(triple.raw)\n )\n const isWebContainer = process.versions.webcontainer\n // Normal execution relies on the param `useWasmBinary` flag to load, but\n // in certain cases where there isn't a native binary we always load wasm fallback first.\n const shouldLoadWasmFallbackFirst =\n (!disableWasmFallback && useWasmBinary) ||\n unsupportedPlatform ||\n isWebContainer\n\n if (!unsupportedPlatform && useWasmBinary) {\n Log.warn(\n `experimental.useWasmBinary is not an option for supported platform ${PlatformName}/${ArchName} and will be ignored.`\n )\n }\n\n if (shouldLoadWasmFallbackFirst) {\n lastNativeBindingsLoadErrorCode = 'unsupported_target'\n const fallbackBindings = await tryLoadWasmWithFallback(attempts)\n if (fallbackBindings) {\n return resolve(fallbackBindings)\n }\n }\n\n // Trickle down loading `fallback` bindings:\n //\n // - First, try to load native bindings installed in node_modules.\n // - If that fails with `ERR_MODULE_NOT_FOUND`, treat it as case of https://github.com/npm/cli/issues/4828\n // that host system where generated package lock is not matching to the guest system running on, try to manually\n // download corresponding target triple and load it. This won't be triggered if native bindings are failed to load\n // with other reasons than `ERR_MODULE_NOT_FOUND`.\n // - Lastly, falls back to wasm binding where possible.\n try {\n return resolve(loadNative())\n } catch (a) {\n if (\n Array.isArray(a) &&\n a.every((m) => m.includes('it was not installed'))\n ) {\n let fallbackBindings = await tryLoadNativeWithFallback(attempts)\n\n if (fallbackBindings) {\n return resolve(fallbackBindings)\n }\n }\n\n attempts = attempts.concat(a)\n }\n\n // For these platforms we already tried to load wasm and failed, skip reattempt\n if (!shouldLoadWasmFallbackFirst && !disableWasmFallback) {\n const fallbackBindings = await tryLoadWasmWithFallback(attempts)\n if (fallbackBindings) {\n return resolve(fallbackBindings)\n }\n }\n\n logLoadFailure(attempts, true)\n })\n return pendingBindings\n}\n\nasync function tryLoadNativeWithFallback(attempts: Array<string>) {\n const nativeBindingsDirectory = path.join(\n path.dirname(require.resolve('next/package.json')),\n 'next-swc-fallback'\n )\n\n if (!downloadNativeBindingsPromise) {\n downloadNativeBindingsPromise = downloadNativeNextSwc(\n nextVersion,\n nativeBindingsDirectory,\n triples.map((triple: any) => triple.platformArchABI)\n )\n }\n await downloadNativeBindingsPromise\n\n try {\n return loadNative(nativeBindingsDirectory)\n } catch (a: any) {\n attempts.push(...[].concat(a))\n }\n\n return undefined\n}\n\nasync function tryLoadWasmWithFallback(attempts: any[]) {\n try {\n let bindings = await loadWasm('')\n // @ts-expect-error TODO: this event has a wrong type.\n eventSwcLoadFailure({\n wasm: 'enabled',\n nativeBindingsErrorCode: lastNativeBindingsLoadErrorCode,\n })\n return bindings\n } catch (a: any) {\n attempts.push(...[].concat(a))\n }\n\n try {\n // if not installed already download wasm package on-demand\n // we download to a custom directory instead of to node_modules\n // as node_module import attempts are cached and can't be re-attempted\n // x-ref: https://github.com/nodejs/modules/issues/307\n const wasmDirectory = path.join(\n path.dirname(require.resolve('next/package.json')),\n 'wasm'\n )\n if (!downloadWasmPromise) {\n downloadWasmPromise = downloadWasmSwc(nextVersion, wasmDirectory)\n }\n await downloadWasmPromise\n let bindings = await loadWasm(wasmDirectory)\n // @ts-expect-error TODO: this event has a wrong type.\n eventSwcLoadFailure({\n wasm: 'fallback',\n nativeBindingsErrorCode: lastNativeBindingsLoadErrorCode,\n })\n\n // still log native load attempts so user is\n // aware it failed and should be fixed\n for (const attempt of attempts) {\n Log.warn(attempt)\n }\n return bindings\n } catch (a: any) {\n attempts.push(...[].concat(a))\n }\n}\n\nfunction loadBindingsSync() {\n let attempts: any[] = []\n try {\n return loadNative()\n } catch (a) {\n attempts = attempts.concat(a)\n }\n\n // we can leverage the wasm bindings if they are already\n // loaded\n if (wasmBindings) {\n return wasmBindings\n }\n\n logLoadFailure(attempts)\n throw new Error('Failed to load bindings', { cause: attempts })\n}\n\nlet loggingLoadFailure = false\n\nfunction logLoadFailure(attempts: any, triedWasm = false) {\n // make sure we only emit the event and log the failure once\n if (loggingLoadFailure) return\n loggingLoadFailure = true\n\n for (let attempt of attempts) {\n Log.warn(attempt)\n }\n\n // @ts-expect-error TODO: this event has a wrong type.\n eventSwcLoadFailure({\n wasm: triedWasm ? 'failed' : undefined,\n nativeBindingsErrorCode: lastNativeBindingsLoadErrorCode,\n })\n .then(() => lockfilePatchPromise.cur || Promise.resolve())\n .finally(() => {\n Log.error(\n `Failed to load SWC binary for ${PlatformName}/${ArchName}, see more info here: https://nextjs.org/docs/messages/failed-loading-swc`\n )\n process.exit(1)\n })\n}\n\ntype RustifiedEnv = { name: string; value: string }[]\n\nexport function createDefineEnv({\n isTurbopack,\n clientRouterFilters,\n config,\n dev,\n distDir,\n fetchCacheKeyPrefix,\n hasRewrites,\n middlewareMatchers,\n}: Omit<\n DefineEnvOptions,\n 'isClient' | 'isNodeOrEdgeCompilation' | 'isEdgeServer' | 'isNodeServer'\n>): DefineEnv {\n let defineEnv: DefineEnv = {\n client: [],\n edge: [],\n nodejs: [],\n }\n\n for (const variant of Object.keys(defineEnv) as (keyof typeof defineEnv)[]) {\n defineEnv[variant] = rustifyEnv(\n getDefineEnv({\n isTurbopack,\n clientRouterFilters,\n config,\n dev,\n distDir,\n fetchCacheKeyPrefix,\n hasRewrites,\n isClient: variant === 'client',\n isEdgeServer: variant === 'edge',\n isNodeServer: variant === 'nodejs',\n middlewareMatchers,\n })\n )\n }\n\n return defineEnv\n}\n\nfunction rustifyEnv(env: Record<string, string>): RustifiedEnv {\n return Object.entries(env)\n .filter(([_, value]) => value != null)\n .map(([name, value]) => ({\n name,\n value,\n }))\n}\n\n// TODO(sokra) Support wasm option.\nfunction bindingToApi(\n binding: RawBindings,\n _wasm: boolean\n): Binding['turbo']['createProject'] {\n type NativeFunction<T> = (\n callback: (err: Error, value: T) => void\n ) => Promise<{ __napiType: 'RootTask' }>\n\n type NapiEndpoint = { __napiType: 'Endpoint' }\n\n type NapiEntrypoints = {\n routes: NapiRoute[]\n middleware?: NapiMiddleware\n instrumentation?: NapiInstrumentation\n pagesDocumentEndpoint: NapiEndpoint\n pagesAppEndpoint: NapiEndpoint\n pagesErrorEndpoint: NapiEndpoint\n }\n\n type NapiMiddleware = {\n endpoint: NapiEndpoint\n runtime: 'nodejs' | 'edge'\n matcher?: string[]\n }\n\n type NapiInstrumentation = {\n nodeJs: NapiEndpoint\n edge: NapiEndpoint\n }\n\n type NapiRoute = {\n pathname: string\n } & (\n | {\n type: 'page'\n htmlEndpoint: NapiEndpoint\n dataEndpoint: NapiEndpoint\n }\n | {\n type: 'page-api'\n endpoint: NapiEndpoint\n }\n | {\n type: 'app-page'\n pages: {\n originalName: string\n htmlEndpoint: NapiEndpoint\n rscEndpoint: NapiEndpoint\n }[]\n }\n | {\n type: 'app-route'\n originalName: string\n endpoint: NapiEndpoint\n }\n | {\n type: 'conflict'\n }\n )\n\n const cancel = new (class Cancel extends Error {})()\n\n /**\n * Utility function to ensure all variants of an enum are handled.\n */\n function invariant(\n never: never,\n computeMessage: (arg: any) => string\n ): never {\n throw new Error(`Invariant: ${computeMessage(never)}`)\n }\n\n async function withErrorCause<T>(fn: () => Promise<T>): Promise<T> {\n try {\n return await fn()\n } catch (nativeError: any) {\n throw TurbopackInternalError.createAndRecordTelemetry(nativeError)\n }\n }\n\n /**\n * Calls a native function and streams the result.\n * If useBuffer is true, all values will be preserved, potentially buffered\n * if consumed slower than produced. Else, only the latest value will be\n * preserved.\n */\n function subscribe<T>(\n useBuffer: boolean,\n nativeFunction:\n | NativeFunction<T>\n | ((callback: (err: Error, value: T) => void) => Promise<void>)\n ): AsyncIterableIterator<T> {\n type BufferItem =\n | { err: Error; value: undefined }\n | { err: undefined; value: T }\n // A buffer of produced items. This will only contain values if the\n // consumer is slower than the producer.\n let buffer: BufferItem[] = []\n // A deferred value waiting for the next produced item. This will only\n // exist if the consumer is faster than the producer.\n let waiting:\n | {\n resolve: (value: T) => void\n reject: (error: Error) => void\n }\n | undefined\n let canceled = false\n\n // The native function will call this every time it emits a new result. We\n // either need to notify a waiting consumer, or buffer the new result until\n // the consumer catches up.\n function emitResult(err: Error | undefined, value: T | undefined) {\n if (waiting) {\n let { resolve, reject } = waiting\n waiting = undefined\n if (err) reject(err)\n else resolve(value!)\n } else {\n const item = { err, value } as BufferItem\n if (useBuffer) buffer.push(item)\n else buffer[0] = item\n }\n }\n\n async function* createIterator() {\n const task = await withErrorCause<{ __napiType: 'RootTask' } | void>(() =>\n nativeFunction(emitResult)\n )\n try {\n while (!canceled) {\n if (buffer.length > 0) {\n const item = buffer.shift()!\n if (item.err) throw item.err\n yield item.value\n } else {\n // eslint-disable-next-line no-loop-func\n yield new Promise<T>((resolve, reject) => {\n waiting = { resolve, reject }\n })\n }\n }\n } catch (e) {\n if (e === cancel) return\n if (e instanceof Error) {\n throw TurbopackInternalError.createAndRecordTelemetry(e)\n }\n throw e\n } finally {\n if (task) {\n binding.rootTaskDispose(task)\n }\n }\n }\n\n const iterator = createIterator()\n iterator.return = async () => {\n canceled = true\n if (waiting) waiting.reject(cancel)\n return { value: undefined, done: true } as IteratorReturnResult<never>\n }\n return iterator\n }\n\n async function rustifyProjectOptions(\n options: ProjectOptions\n ): Promise<NapiProjectOptions> {\n return {\n ...options,\n nextConfig: await serializeNextConfig(\n options.nextConfig,\n options.projectPath!\n ),\n jsConfig: JSON.stringify(options.jsConfig),\n env: rustifyEnv(options.env),\n }\n }\n\n async function rustifyPartialProjectOptions(\n options: Partial<ProjectOptions>\n ): Promise<NapiPartialProjectOptions> {\n return {\n ...options,\n nextConfig:\n options.nextConfig &&\n (await serializeNextConfig(options.nextConfig, options.projectPath!)),\n jsConfig: options.jsConfig && JSON.stringify(options.jsConfig),\n env: options.env && rustifyEnv(options.env),\n }\n }\n\n class ProjectImpl implements Project {\n private readonly _nativeProject: { __napiType: 'Project' }\n\n constructor(nativeProject: { __napiType: 'Project' }) {\n this._nativeProject = nativeProject\n }\n\n async update(options: Partial<ProjectOptions>) {\n await withErrorCause(async () =>\n binding.projectUpdate(\n this._nativeProject,\n await rustifyPartialProjectOptions(options)\n )\n )\n }\n\n async writeAllEntrypointsToDisk(\n appDirOnly: boolean\n ): Promise<TurbopackResult<RawEntrypoints>> {\n return await withErrorCause(async () => {\n const napiEndpoints = (await binding.projectWriteAllEntrypointsToDisk(\n this._nativeProject,\n appDirOnly\n )) as TurbopackResult<NapiEntrypoints>\n\n return napiEntrypointsToRawEntrypoints(napiEndpoints)\n })\n }\n\n entrypointsSubscribe() {\n const subscription = subscribe<TurbopackResult<NapiEntrypoints>>(\n false,\n async (callback) =>\n binding.projectEntrypointsSubscribe(this._nativeProject, callback)\n )\n return (async function* () {\n for await (const entrypoints of subscription) {\n yield napiEntrypointsToRawEntrypoints(entrypoints)\n }\n })()\n }\n\n hmrEvents(identifier: string) {\n return subscribe<TurbopackResult<Update>>(true, async (callback) =>\n binding.projectHmrEvents(this._nativeProject, identifier, callback)\n )\n }\n\n hmrIdentifiersSubscribe() {\n return subscribe<TurbopackResult<HmrIdentifiers>>(\n false,\n async (callback) =>\n binding.projectHmrIdentifiersSubscribe(this._nativeProject, callback)\n )\n }\n\n traceSource(\n stackFrame: TurbopackStackFrame,\n currentDirectoryFileUrl: string\n ): Promise<TurbopackStackFrame | null> {\n return binding.projectTraceSource(\n this._nativeProject,\n stackFrame,\n currentDirectoryFileUrl\n )\n }\n\n getSourceForAsset(filePath: string): Promise<string | null> {\n return binding.projectGetSourceForAsset(this._nativeProject, filePath)\n }\n\n getSourceMap(filePath: string): Promise<string | null> {\n return binding.projectGetSourceMap(this._nativeProject, filePath)\n }\n\n getSourceMapSync(filePath: string): string | null {\n return binding.projectGetSourceMapSync(this._nativeProject, filePath)\n }\n\n updateInfoSubscribe(aggregationMs: number) {\n return subscribe<TurbopackResult<UpdateMessage>>(true, async (callback) =>\n binding.projectUpdateInfoSubscribe(\n this._nativeProject,\n aggregationMs,\n callback\n )\n )\n }\n\n compilationEventsSubscribe() {\n return subscribe<TurbopackResult<CompilationEvent>>(\n true,\n async (callback) => {\n binding.projectCompilationEventsSubscribe(\n this._nativeProject,\n callback\n )\n }\n )\n }\n\n shutdown(): Promise<void> {\n return binding.projectShutdown(this._nativeProject)\n }\n\n onExit(): Promise<void> {\n return binding.projectOnExit(this._nativeProject)\n }\n }\n\n class EndpointImpl implements Endpoint {\n private readonly _nativeEndpoint: { __napiType: 'Endpoint' }\n\n constructor(nativeEndpoint: { __napiType: 'Endpoint' }) {\n this._nativeEndpoint = nativeEndpoint\n }\n\n async writeToDisk(): Promise<TurbopackResult<WrittenEndpoint>> {\n return await withErrorCause(\n () =>\n binding.endpointWriteToDisk(this._nativeEndpoint) as Promise<\n TurbopackResult<WrittenEndpoint>\n >\n )\n }\n\n async clientChanged(): Promise<AsyncIterableIterator<TurbopackResult<{}>>> {\n const clientSubscription = subscribe<TurbopackResult>(\n false,\n async (callback) =>\n binding.endpointClientChangedSubscribe(\n await this._nativeEndpoint,\n callback\n )\n )\n await clientSubscription.next()\n return clientSubscription\n }\n\n async serverChanged(\n includeIssues: boolean\n ): Promise<AsyncIterableIterator<TurbopackResult<{}>>> {\n const serverSubscription = subscribe<TurbopackResult>(\n false,\n async (callback) =>\n binding.endpointServerChangedSubscribe(\n await this._nativeEndpoint,\n includeIssues,\n callback\n )\n )\n await serverSubscription.next()\n return serverSubscription\n }\n }\n\n /**\n * Returns a new copy of next.js config object to avoid mutating the original.\n *\n * Also it does some augmentation to the configuration as well, for example set the\n * turbopack's rules if `experimental.reactCompilerOptions` is set.\n */\n function augmentNextConfig(\n originalNextConfig: NextConfigComplete,\n projectPath: string\n ): Record<string, any> {\n let nextConfig = { ...(originalNextConfig as any) }\n\n const reactCompilerOptions = nextConfig.experimental?.reactCompiler\n\n // It is not easy to set the rules inside of rust as resolving, and passing the context identical to the webpack\n // config is bit hard, also we can reuse same codes between webpack config in here.\n if (reactCompilerOptions) {\n const ruleKeys = ['*.ts', '*.js', '*.jsx', '*.tsx']\n if (\n Object.keys(nextConfig?.turbopack?.rules ?? []).some((key) =>\n ruleKeys.includes(key)\n )\n ) {\n Log.warn(\n `The React Compiler cannot be enabled automatically because 'turbopack.rules' contains a rule for '*.ts', '*.js', '*.jsx', and '*.tsx'. Remove this rule, or add 'babel-loader' and 'babel-plugin-react-compiler' to the Turbopack configuration manually.`\n )\n } else {\n if (!nextConfig.turbopack) {\n nextConfig.turbopack = {}\n }\n\n if (!nextConfig.turbopack.rules) {\n nextConfig.turbopack.rules = {}\n }\n\n for (const key of ['*.ts', '*.js', '*.jsx', '*.tsx']) {\n nextConfig.turbopack.rules[key] = {\n browser: {\n foreign: false,\n loaders: [\n getReactCompilerLoader(\n originalNextConfig.experimental.reactCompiler,\n projectPath,\n nextConfig.dev,\n false,\n undefined\n ),\n ],\n },\n }\n }\n }\n }\n\n return nextConfig\n }\n\n async function serializeNextConfig(\n nextConfig: NextConfigComplete,\n projectPath: string\n ): Promise<string> {\n // Avoid mutating the existing `nextConfig` object.\n let nextConfigSerializable = augmentNextConfig(nextConfig, projectPath)\n\n nextConfigSerializable.generateBuildId =\n await nextConfig.generateBuildId?.()\n\n // TODO: these functions takes arguments, have to be supported in a different way\n nextConfigSerializable.exportPathMap = {}\n nextConfigSerializable.webpack = nextConfig.webpack && {}\n\n if (nextConfigSerializable.experimental?.turbo?.rules) {\n ensureLoadersHaveSerializableOptions(\n nextConfigSerializable.turbopack?.rules\n )\n }\n\n nextConfigSerializable.modularizeImports =\n nextConfigSerializable.modularizeImports\n ? Object.fromEntries(\n Object.entries<any>(nextConfigSerializable.modularizeImports).map(\n ([mod, config]) => [\n mod,\n {\n ...config,\n transform:\n typeof config.transform === 'string'\n ? config.transform\n : Object.entries(config.transform).map(([key, value]) => [\n key,\n value,\n ]),\n },\n ]\n )\n )\n : undefined\n\n // loaderFile is an absolute path, we need it to be relative for turbopack.\n if (nextConfigSerializable.images.loaderFile) {\n nextConfigSerializable.images = {\n ...nextConfig.images,\n loaderFile:\n './' + path.relative(projectPath, nextConfig.images.loaderFile),\n }\n }\n\n const conditions: (typeof nextConfig)['turbopack']['conditions'] =\n nextConfigSerializable.turbopack?.conditions\n if (conditions) {\n type SerializedConditions = {\n [key: string]: {\n path:\n | { type: 'regexp'; value: { source: string; flags: string } }\n | { type: 'glob'; value: string }\n }\n }\n\n const serializedConditions: SerializedConditions = {}\n for (const [key, value] of Object.entries(conditions)) {\n serializedConditions[key] = {\n ...value,\n path:\n value.path instanceof RegExp\n ? {\n type: 'regexp',\n value: { source: value.path.source, flags: value.path.flags },\n }\n : { type: 'glob', value: value.path },\n }\n }\n nextConfigSerializable.turbopack.conditions = serializedConditions\n }\n\n return JSON.stringify(nextConfigSerializable, null, 2)\n }\n\n function ensureLoadersHaveSerializableOptions(\n turbopackRules: Record<string, TurbopackRuleConfigItemOrShortcut>\n ) {\n for (const [glob, rule] of Object.entries(turbopackRules)) {\n if (Array.isArray(rule)) {\n checkLoaderItems(rule, glob)\n } else {\n checkConfigItem(rule, glob)\n }\n }\n\n function checkConfigItem(rule: TurbopackRuleConfigItem, glob: string) {\n if (!rule) return\n if ('loaders' in rule) {\n checkLoaderItems((rule as TurbopackRuleConfigItemOptions).loaders, glob)\n } else {\n for (const key in rule) {\n const inner = rule[key]\n if (typeof inner === 'object' && inner) {\n checkConfigItem(inner, glob)\n }\n }\n }\n }\n\n function checkLoaderItems(\n loaderItems: TurbopackLoaderItem[],\n glob: string\n ) {\n for (const loaderItem of loaderItems) {\n if (\n typeof loaderItem !== 'string' &&\n !isDeepStrictEqual(loaderItem, JSON.parse(JSON.stringify(loaderItem)))\n ) {\n throw new Error(\n `loader ${loaderItem.loader} for match \"${glob}\" does not have serializable options. Ensure that options passed are plain JavaScript objects and values.`\n )\n }\n }\n }\n }\n\n function napiEntrypointsToRawEntrypoints(\n entrypoints: TurbopackResult<NapiEntrypoints>\n ): TurbopackResult<RawEntrypoints> {\n const routes = new Map()\n for (const { pathname, ...nativeRoute } of entrypoints.routes) {\n let route: Route\n const routeType = nativeRoute.type\n switch (routeType) {\n case 'page':\n route = {\n type: 'page',\n htmlEndpoint: new EndpointImpl(nativeRoute.htmlEndpoint),\n dataEndpoint: new EndpointImpl(nativeRoute.dataEndpoint),\n }\n break\n case 'page-api':\n route = {\n type: 'page-api',\n endpoint: new EndpointImpl(nativeRoute.endpoint),\n }\n break\n case 'app-page':\n route = {\n type: 'app-page',\n pages: nativeRoute.pages.map((page) => ({\n originalName: page.originalName,\n htmlEndpoint: new EndpointImpl(page.htmlEndpoint),\n rscEndpoint: new EndpointImpl(page.rscEndpoint),\n })),\n }\n break\n case 'app-route':\n route = {\n type: 'app-route',\n originalName: nativeRoute.originalName,\n endpoint: new EndpointImpl(nativeRoute.endpoint),\n }\n break\n case 'conflict':\n route = {\n type: 'conflict',\n }\n break\n default:\n const _exhaustiveCheck: never = routeType\n invariant(\n nativeRoute,\n () => `Unknown route type: ${_exhaustiveCheck}`\n )\n }\n routes.set(pathname, route)\n }\n const napiMiddlewareToMiddleware = (middleware: NapiMiddleware) => ({\n endpoint: new EndpointImpl(middleware.endpoint),\n runtime: middleware.runtime,\n matcher: middleware.matcher,\n })\n const middleware = entrypoints.middleware\n ? napiMiddlewareToMiddleware(entrypoints.middleware)\n : undefined\n const napiInstrumentationToInstrumentation = (\n instrumentation: NapiInstrumentation\n ) => ({\n nodeJs: new EndpointImpl(instrumentation.nodeJs),\n edge: new EndpointImpl(instrumentation.edge),\n })\n const instrumentation = entrypoints.instrumentation\n ? napiInstrumentationToInstrumentation(entrypoints.instrumentation)\n : undefined\n\n return {\n routes,\n middleware,\n instrumentation,\n pagesDocumentEndpoint: new EndpointImpl(\n entrypoints.pagesDocumentEndpoint\n ),\n pagesAppEndpoint: new EndpointImpl(entrypoints.pagesAppEndpoint),\n pagesErrorEndpoint: new EndpointImpl(entrypoints.pagesErrorEndpoint),\n issues: entrypoints.issues,\n diagnostics: entrypoints.diagnostics,\n }\n }\n\n return async function createProject(\n options: ProjectOptions,\n turboEngineOptions\n ) {\n return new ProjectImpl(\n await binding.projectNew(\n await rustifyProjectOptions(options),\n turboEngineOptions || {}\n )\n )\n }\n}\n\nasync function loadWasm(importPath = '') {\n if (wasmBindings) {\n return wasmBindings\n }\n\n let attempts = []\n for (let pkg of ['@next/swc-wasm-nodejs', '@next/swc-wasm-web']) {\n try {\n let pkgPath = pkg\n\n if (importPath) {\n // the import path must be exact when not in node_modules\n pkgPath = path.join(importPath, pkg, 'wasm.js')\n }\n let bindings: RawWasmBindings = await import(\n pathToFileURL(pkgPath).toString()\n )\n if (pkg === '@next/swc-wasm-web') {\n bindings = await bindings.default!()\n }\n infoLog('next-swc build: wasm build @next/swc-wasm-web')\n\n // Note wasm binary does not support async intefaces yet, all async\n // interface coereces to sync interfaces.\n wasmBindings = {\n css: {\n lightning: {\n transform: function (_options: any) {\n throw new Error(\n '`css.lightning.transform` is not supported by the wasm bindings.'\n )\n },\n transformStyleAttr: function (_options: any) {\n throw new Error(\n '`css.lightning.transformStyleAttr` is not supported by the wasm bindings.'\n )\n },\n },\n },\n isWasm: true,\n transform(src: string, options: any) {\n // TODO: we can remove fallback to sync interface once new stable version of next-swc gets published (current v12.2)\n return bindings?.transform\n ? bindings.transform(src.toString(), options)\n : Promise.resolve(bindings.transformSync(src.toString(), options))\n },\n transformSync(src: string, options: any) {\n return bindings.transformSync(src.toString(), options)\n },\n minify(src: string, options: any) {\n return bindings?.minify\n ? bindings.minify(src.toString(), options)\n : Promise.resolve(bindings.minifySync(src.toString(), options))\n },\n minifySync(src: string, options: any) {\n return bindings.minifySync(src.toString(), options)\n },\n parse(src: string, options: any) {\n return bindings?.parse\n ? bindings.parse(src.toString(), options)\n : Promise.resolve(bindings.parseSync(src.toString(), options))\n },\n getTargetTriple() {\n return undefined\n },\n turbo: {\n createProject: function (\n _options: ProjectOptions,\n _turboEngineOptions?: TurboEngineOptions | undefined\n ): Promise<Project> {\n throw new Error(\n '`turbo.createProject` is not supported by the wasm bindings.'\n )\n },\n startTurbopackTraceServer: function (_traceFilePath: string): void {\n throw new Error(\n '`turbo.startTurbopackTraceServer` is not supported by the wasm bindings.'\n )\n },\n },\n mdx: {\n compile(src: string, options: any) {\n return bindings.mdxCompile(src, getMdxOptions(options))\n },\n compileSync(src: string, options: any) {\n return bindings.mdxCompileSync(src, getMdxOptions(options))\n },\n },\n reactCompiler: {\n isReactCompilerRequired(_filename: string) {\n return Promise.resolve(true)\n },\n },\n }\n return wasmBindings\n } catch (e: any) {\n // Only log attempts for loading wasm when loading as fallback\n if (importPath) {\n if (e?.code === 'ERR_MODULE_NOT_FOUND') {\n attempts.push(`Attempted to load ${pkg}, but it was not installed`)\n } else {\n attempts.push(\n `Attempted to load ${pkg}, but an error occurred: ${e.message ?? e}`\n )\n }\n }\n }\n }\n\n throw attempts\n}\n\nfunction loadNative(importPath?: string) {\n if (nativeBindings) {\n return nativeBindings\n }\n\n const customBindings: RawBindings = !!__INTERNAL_CUSTOM_TURBOPACK_BINDINGS\n ? require(__INTERNAL_CUSTOM_TURBOPACK_BINDINGS)\n : null\n let bindings: RawBindings = customBindings\n let attempts: any[] = []\n\n const NEXT_TEST_NATIVE_DIR = process.env.NEXT_TEST_NATIVE_DIR\n for (const triple of triples) {\n if (NEXT_TEST_NATIVE_DIR) {\n try {\n // Use the binary directly to skip `pnpm pack` for testing as it's slow because of the large native binary.\n bindings = require(\n `${NEXT_TEST_NATIVE_DIR}/next-swc.${triple.platformArchABI}.node`\n )\n infoLog(\n 'next-swc build: local built @next/swc from NEXT_TEST_NATIVE_DIR'\n )\n break\n } catch (e) {}\n } else {\n try {\n bindings = require(\n `@next/swc/native/next-swc.${triple.platformArchABI}.node`\n )\n infoLog('next-swc build: local built @next/swc')\n break\n } catch (e) {}\n }\n }\n\n if (!bindings) {\n for (const triple of triples) {\n let pkg = importPath\n ? path.join(\n importPath,\n `@next/swc-${triple.platformArchABI}`,\n `next-swc.${triple.platformArchABI}.node`\n )\n : `@next/swc-${triple.platformArchABI}`\n try {\n bindings = require(pkg)\n if (!importPath) {\n checkVersionMismatch(require(`${pkg}/package.json`))\n }\n break\n } catch (e: any) {\n if (e?.code === 'MODULE_NOT_FOUND') {\n attempts.push(`Attempted to load ${pkg}, but it was not installed`)\n } else {\n attempts.push(\n `Attempted to load ${pkg}, but an error occurred: ${e.message ?? e}`\n )\n }\n lastNativeBindingsLoadErrorCode = e?.code ?? 'unknown'\n }\n }\n }\n\n if (bindings) {\n nativeBindings = {\n isWasm: false,\n transform(src: string, options: any) {\n const isModule =\n typeof src !== 'undefined' &&\n typeof src !== 'string' &&\n !Buffer.isBuffer(src)\n options = options || {}\n\n if (options?.jsc?.parser) {\n options.jsc.parser.syntax = options.jsc.parser.syntax ?? 'ecmascript'\n }\n\n return bindings.transform(\n isModule ? JSON.stringify(src) : src,\n isModule,\n toBuffer(options)\n )\n },\n\n transformSync(src: string, options: any) {\n if (typeof src === 'undefined') {\n throw new Error(\n \"transformSync doesn't implement reading the file from filesystem\"\n )\n } else if (Buffer.isBuffer(src)) {\n throw new Error(\n \"transformSync doesn't implement taking the source code as Buffer\"\n )\n }\n const isModule = typeof src !== 'string'\n options = options || {}\n\n if (options?.jsc?.parser) {\n options.jsc.parser.syntax = options.jsc.parser.syntax ?? 'ecmascript'\n }\n\n return bindings.transformSync(\n isModule ? JSON.stringify(src) : src,\n isModule,\n toBuffer(options)\n )\n },\n\n minify(src: string, options: any) {\n return bindings.minify(toBuffer(src), toBuffer(options ?? {}))\n },\n\n minifySync(src: string, options: any) {\n return bindings.minifySync(toBuffer(src), toBuffer(options ?? {}))\n },\n\n parse(src: string, options: any) {\n return bindings.parse(src, toBuffer(options ?? {}))\n },\n\n getTargetTriple: bindings.getTargetTriple,\n initCustomTraceSubscriber: bindings.initCustomTraceSubscriber,\n teardownTraceSubscriber: bindings.teardownTraceSubscriber,\n turbo: {\n createProject: bindingToApi(customBindings ?? bindings, false),\n startTurbopackTraceServer(traceFilePath) {\n Log.warn(\n 'Turbopack trace server started. View trace at https://trace.nextjs.org'\n )\n ;(customBindings ?? bindings).startTurbopackTraceServer(traceFilePath)\n },\n },\n mdx: {\n compile(src: string, options: any) {\n return bindings.mdxCompile(src, toBuffer(getMdxOptions(options)))\n },\n compileSync(src: string, options: any) {\n bindings.mdxCompileSync(src, toBuffer(getMdxOptions(options)))\n },\n },\n css: {\n lightning: {\n transform(transformOptions: any) {\n return bindings.lightningCssTransform(transformOptions)\n },\n transformStyleAttr(transformAttrOptions: any) {\n return bindings.lightningCssTransformStyleAttribute(\n transformAttrOptions\n )\n },\n },\n },\n reactCompiler: {\n isReactCompilerRequired: (filename: string) => {\n return bindings.isReactCompilerRequired(filename)\n },\n },\n }\n return nativeBindings\n }\n\n throw attempts\n}\n\n/// Build a mdx options object contains default values that\n/// can be parsed with serde_wasm_bindgen.\nfunction getMdxOptions(options: any = {}) {\n return {\n ...options,\n development: options.development ?? false,\n jsx: options.jsx ?? false,\n mdxType: options.mdxType ?? 'commonMark',\n }\n}\n\nfunction toBuffer(t: any) {\n return Buffer.from(JSON.stringify(t))\n}\n\nexport async function isWasm(): Promise<boolean> {\n let bindings = await loadBindings()\n return bindings.isWasm\n}\n\nexport async function transform(src: string, options?: any): Promise<any> {\n let bindings = await loadBindings()\n return bindings.transform(src, options)\n}\n\nexport function transformSync(src: string, options?: any): any {\n let bindings = loadBindingsSync()\n return bindings.transformSync(src, options)\n}\n\nexport async function minify(\n src: string,\n options: any\n): Promise<{ code: string; map: any }> {\n let bindings = await loadBindings()\n return bindings.minify(src, options)\n}\n\nexport async function isReactCompilerRequired(\n filename: string\n): Promise<boolean> {\n let bindings = await loadBindings()\n return bindings.reactCompiler.isReactCompilerRequired(filename)\n}\n\nexport async function parse(src: string, options: any): Promise<any> {\n let bindings = await loadBindings()\n let parserOptions = getParserOptions(options)\n return bindings\n .parse(src, parserOptions)\n .then((astStr: any) => JSON.parse(astStr))\n}\n\nexport function getBinaryMetadata() {\n let bindings\n try {\n bindings = loadNative()\n } catch (e) {\n // Suppress exceptions, this fn allows to fail to load native bindings\n }\n\n return {\n target: bindings?.getTargetTriple?.(),\n }\n}\n\n/**\n * Initialize trace subscriber to emit traces.\n *\n */\nexport function initCustomTraceSubscriber(traceFileName?: string) {\n if (swcTraceFlushGuard) {\n // Wasm binary doesn't support trace emission\n let bindings = loadNative()\n swcTraceFlushGuard = bindings.initCustomTraceSubscriber?.(traceFileName)\n }\n}\n\nfunction once(fn: () => void): () => void {\n let executed = false\n\n return function (): void {\n if (!executed) {\n executed = true\n\n fn()\n }\n }\n}\n\n/**\n * Teardown swc's trace subscriber if there's an initialized flush guard exists.\n *\n * This is workaround to amend behavior with process.exit\n * (https://github.com/vercel/next.js/blob/4db8c49cc31e4fc182391fae6903fb5ef4e8c66e/packages/next/bin/next.ts#L134=)\n * seems preventing napi's cleanup hook execution (https://github.com/swc-project/swc/blob/main/crates/node/src/util.rs#L48-L51=),\n *\n * instead parent process manually drops guard when process gets signal to exit.\n */\nexport const teardownTraceSubscriber = once(() => {\n try {\n let bindings = loadNative()\n if (swcTraceFlushGuard) {\n bindings.teardownTraceSubscriber?.(swcTraceFlushGuard)\n }\n } catch (e) {\n // Suppress exceptions, this fn allows to fail to load native bindings\n }\n})\n"],"names":["path","pathToFileURL","arch","platform","platformArchTriples","Log","getParserOptions","eventSwcLoadFailure","patchIncorrectLockfile","downloadNativeNextSwc","downloadWasmSwc","isDeepStrictEqual","getDefineEnv","getReactCompilerLoader","TurbopackInternalError","nextVersion","process","env","__NEXT_VERSION","ArchName","PlatformName","infoLog","args","NEXT_PRIVATE_BUILD_WORKER","DEBUG","info","getSupportedArchTriples","darwin","win32","linux","freebsd","android","arm64","ia32","filter","triple","abi","x64","arm","triples","supportedArchTriples","targetTriple","rawTargetTriple","warn","__INTERNAL_CUSTOM_TURBOPACK_BINDINGS","checkVersionMismatch","pkgData","version","knownDefaultWasmFallbackTriples","lastNativeBindingsLoadErrorCode","undefined","nativeBindings","wasmBindings","downloadWasmPromise","pendingBindings","swcTraceFlushGuard","downloadNativeBindingsPromise","lockfilePatchPromise","loadBindings","useWasmBinary","RUST_MIN_STACK","stdout","_handle","setBlocking","stderr","Promise","resolve","_reject","cur","cwd","catch","console","error","attempts","disableWasmFallback","NEXT_DISABLE_SWC_WASM","unsupportedPlatform","some","raw","includes","isWebContainer","versions","webcontainer","shouldLoadWasmFallbackFirst","fallbackBindings","tryLoadWasmWithFallback","loadNative","a","Array","isArray","every","m","tryLoadNativeWithFallback","concat","logLoadFailure","nativeBindingsDirectory","join","dirname","require","map","platformArchABI","push","bindings","loadWasm","wasm","nativeBindingsErrorCode","wasmDirectory","attempt","loadBindingsSync","Error","cause","loggingLoadFailure","triedWasm","then","finally","exit","createDefineEnv","isTurbopack","clientRouterFilters","config","dev","distDir","fetchCacheKeyPrefix","hasRewrites","middlewareMatchers","defineEnv","client","edge","nodejs","variant","Object","keys","rustifyEnv","isClient","isEdgeServer","isNodeServer","entries","_","value","name","bindingToApi","binding","_wasm","cancel","Cancel","invariant","never","computeMessage","withErrorCause","fn","nativeError","createAndRecordTelemetry","subscribe","useBuffer","nativeFunction","buffer","waiting","canceled","emitResult","err","reject","item","createIterator","task","length","shift","e","rootTaskDispose","iterator","return","done","rustifyProjectOptions","options","nextConfig","serializeNextConfig","projectPath","jsConfig","JSON","stringify","rustifyPartialProjectOptions","ProjectImpl","constructor","nativeProject","_nativeProject","update","projectUpdate","writeAllEntrypointsToDisk","appDirOnly","napiEndpoints","projectWriteAllEntrypointsToDisk","napiEntrypointsToRawEntrypoints","entrypointsSubscribe","subscription","callback","projectEntrypointsSubscribe","entrypoints","hmrEvents","identifier","projectHmrEvents","hmrIdentifiersSubscribe","projectHmrIdentifiersSubscribe","traceSource","stackFrame","currentDirectoryFileUrl","projectTraceSource","getSourceForAsset","filePath","projectGetSourceForAsset","getSourceMap","projectGetSourceMap","getSourceMapSync","projectGetSourceMapSync","updateInfoSubscribe","aggregationMs","projectUpdateInfoSubscribe","compilationEventsSubscribe","projectCompilationEventsSubscribe","shutdown","projectShutdown","onExit","projectOnExit","EndpointImpl","nativeEndpoint","_nativeEndpoint","writeToDisk","endpointWriteToDisk","clientChanged","clientSubscription","endpointClientChangedSubscribe","next","serverChanged","includeIssues","serverSubscription","endpointServerChangedSubscribe","augmentNextConfig","originalNextConfig","reactCompilerOptions","experimental","reactCompiler","ruleKeys","turbopack","rules","key","browser","foreign","loaders","nextConfigSerializable","generateBuildId","exportPathMap","webpack","turbo","ensureLoadersHaveSerializableOptions","modularizeImports","fromEntries","mod","transform","images","loaderFile","relative","conditions","serializedConditions","RegExp","type","source","flags","turbopackRules","glob","rule","checkLoaderItems","checkConfigItem","inner","loaderItems","loaderItem","parse","loader","routes","Map","pathname","nativeRoute","route","routeType","htmlEndpoint","dataEndpoint","endpoint","pages","page","originalName","rscEndpoint","_exhaustiveCheck","set","napiMiddlewareToMiddleware","middleware","runtime","matcher","napiInstrumentationToInstrumentation","instrumentation","nodeJs","pagesDocumentEndpoint","pagesAppEndpoint","pagesErrorEndpoint","issues","diagnostics","createProject","turboEngineOptions","projectNew","importPath","pkg","pkgPath","toString","default","css","lightning","_options","transformStyleAttr","isWasm","src","transformSync","minify","minifySync","parseSync","getTargetTriple","_turboEngineOptions","startTurbopackTraceServer","_traceFilePath","mdx","compile","mdxCompile","getMdxOptions","compileSync","mdxCompileSync","isReactCompilerRequired","_filename","code","message","customBindings","NEXT_TEST_NATIVE_DIR","isModule","Buffer","isBuffer","jsc","parser","syntax","toBuffer","initCustomTraceSubscriber","teardownTraceSubscriber","traceFilePath","transformOptions","lightningCssTransform","transformAttrOptions","lightningCssTransformStyleAttribute","filename","development","jsx","mdxType","t","from","parserOptions","astStr","getBinaryMetadata","target","traceFileName","once","executed"],"mappings":"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","ignoreList":[0]}
@@ -1468,7 +1468,6 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1468
1468
  hasRewrites,
1469
1469
  isClient,
1470
1470
  isEdgeServer,
1471
- isNodeOrEdgeCompilation,
1472
1471
  isNodeServer,
1473
1472
  middlewareMatchers,
1474
1473
  omitNonDeterministic: isCompileMode
@@ -1556,7 +1555,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1556
1555
  isClient && new CopyFilePlugin({
1557
1556
  // file path to build output of `@next/polyfill-nomodule`
1558
1557
  filePath: require.resolve('./polyfills/polyfill-nomodule'),
1559
- cacheKey: "15.4.0-canary.40",
1558
+ cacheKey: "15.4.0-canary.41",
1560
1559
  name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
1561
1560
  minimize: false,
1562
1561
  info: {
@@ -1733,7 +1732,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1733
1732
  // - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
1734
1733
  // - Next.js version
1735
1734
  // - next.config.js keys that affect compilation
1736
- version: `${__dirname}|${"15.4.0-canary.40"}|${configVars}`,
1735
+ version: `${__dirname}|${"15.4.0-canary.41"}|${configVars}`,
1737
1736
  cacheDirectory: path.join(distDir, 'cache', 'webpack'),
1738
1737
  // For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
1739
1738
  // So we disable compression here and allow the build runner to take care of compressing the cache as a whole.