UNPKG

next

Version:

The React Framework

363 lines (362 loc) • 18.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { createAppRouterApiAliases: null, createNextApiEsmAliases: null, createRSCAliases: null, createServerOnlyClientOnlyAliases: null, createWebpackAliases: null, getOptimizedModuleAliases: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { createAppRouterApiAliases: function() { return createAppRouterApiAliases; }, createNextApiEsmAliases: function() { return createNextApiEsmAliases; }, createRSCAliases: function() { return createRSCAliases; }, createServerOnlyClientOnlyAliases: function() { return createServerOnlyClientOnlyAliases; }, createWebpackAliases: function() { return createWebpackAliases; }, getOptimizedModuleAliases: function() { return getOptimizedModuleAliases; } }); const _path = /*#__PURE__*/ _interop_require_default(require("path")); const _react = /*#__PURE__*/ _interop_require_wildcard(require("react")); const _constants = require("../lib/constants"); const _requirehook = require("../server/require-hook"); const _webpackconfig = require("./webpack-config"); const _nextdirpaths = require("./next-dir-paths"); const _utils = require("./utils"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interop_require_wildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = { __proto__: null }; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const isReact19 = typeof _react.use === 'function'; function createWebpackAliases({ distDir, isClient, isEdgeServer, isNodeServer, dev, config, pagesDir, appDir, dir, reactProductionProfiling, hasRewrites }) { const pageExtensions = config.pageExtensions; const clientResolveRewrites = require.resolve('../shared/lib/router/utils/resolve-rewrites'); const customAppAliases = {}; const customDocumentAliases = {}; // tell webpack where to look for _app and _document // using aliases to allow falling back to the default // version when removed or not present if (dev) { const nextDistPath = 'next/dist/' + (isEdgeServer ? 'esm/' : ''); customAppAliases[`${_constants.PAGES_DIR_ALIAS}/_app`] = [ ...pagesDir ? pageExtensions.reduce((prev, ext)=>{ prev.push(_path.default.join(pagesDir, `_app.${ext}`)); return prev; }, []) : [], `${nextDistPath}pages/_app.js` ]; customAppAliases[`${_constants.PAGES_DIR_ALIAS}/_error`] = [ ...pagesDir ? pageExtensions.reduce((prev, ext)=>{ prev.push(_path.default.join(pagesDir, `_error.${ext}`)); return prev; }, []) : [], `${nextDistPath}pages/_error.js` ]; customDocumentAliases[`${_constants.PAGES_DIR_ALIAS}/_document`] = [ ...pagesDir ? pageExtensions.reduce((prev, ext)=>{ prev.push(_path.default.join(pagesDir, `_document.${ext}`)); return prev; }, []) : [], `${nextDistPath}pages/_document.js` ]; } return { '@vercel/og$': 'next/dist/server/og/image-response', // Avoid bundling both entrypoints in React 19 when we just need one. // Also avoids bundler warnings in React 18 where react-dom/server.edge doesn't exist. 'next/dist/server/ReactDOMServerPages': isReact19 ? 'react-dom/server.edge' : 'react-dom/server.browser', // Alias next/dist imports to next/dist/esm assets, // let this alias hit before `next` alias. ...isEdgeServer ? { 'next/dist/api': 'next/dist/esm/api', 'next/dist/build': 'next/dist/esm/build', 'next/dist/client': 'next/dist/esm/client', 'next/dist/shared': 'next/dist/esm/shared', 'next/dist/pages': 'next/dist/esm/pages', 'next/dist/lib': 'next/dist/esm/lib', 'next/dist/server': 'next/dist/esm/server', ...createNextApiEsmAliases() } : undefined, // For RSC server bundle ...!(0, _webpackconfig.hasExternalOtelApiPackage)() && { '@opentelemetry/api': 'next/dist/compiled/@opentelemetry/api' }, ...config.images.loaderFile ? { 'next/dist/shared/lib/image-loader': config.images.loaderFile, ...isEdgeServer && { 'next/dist/esm/shared/lib/image-loader': config.images.loaderFile } } : undefined, 'styled-jsx/style$': _requirehook.defaultOverrides['styled-jsx/style'], 'styled-jsx$': _requirehook.defaultOverrides['styled-jsx'], ...customAppAliases, ...customDocumentAliases, ...pagesDir ? { [_constants.PAGES_DIR_ALIAS]: pagesDir } : {}, ...appDir ? { [_constants.APP_DIR_ALIAS]: appDir } : {}, [_constants.ROOT_DIR_ALIAS]: dir, ...isClient ? { 'private-next-instrumentation-client': [ _path.default.join(dir, 'src', 'instrumentation-client'), _path.default.join(dir, 'instrumentation-client'), 'private-next-empty-module' ], // disable typechecker, webpack5 allows aliases to be set to false to create a no-op module 'private-next-empty-module': false } : {}, [_constants.DOT_NEXT_ALIAS]: distDir, ...isClient || isEdgeServer ? getOptimizedModuleAliases() : {}, ...reactProductionProfiling ? getReactProfilingInProduction() : {}, // For Node server, we need to re-alias the package imports to prefer to // resolve to the ESM export. ...isNodeServer ? getBarrelOptimizationAliases(config.experimental.optimizePackageImports || []) : {}, [_constants.RSC_ACTION_VALIDATE_ALIAS]: 'next/dist/build/webpack/loaders/next-flight-loader/action-validate', [_constants.RSC_ACTION_CLIENT_WRAPPER_ALIAS]: 'next/dist/build/webpack/loaders/next-flight-loader/action-client-wrapper', [_constants.RSC_ACTION_PROXY_ALIAS]: 'next/dist/build/webpack/loaders/next-flight-loader/server-reference', [_constants.RSC_ACTION_ENCRYPTION_ALIAS]: 'next/dist/server/app-render/encryption', [_constants.RSC_CACHE_WRAPPER_ALIAS]: 'next/dist/build/webpack/loaders/next-flight-loader/cache-wrapper', ...isClient || isEdgeServer ? { [clientResolveRewrites]: hasRewrites ? clientResolveRewrites : false } : {}, '@swc/helpers/_': _path.default.join(_path.default.dirname(require.resolve('@swc/helpers/package.json')), '_'), setimmediate: 'next/dist/compiled/setimmediate' }; } function createServerOnlyClientOnlyAliases(isServer) { return isServer ? { 'server-only$': 'next/dist/compiled/server-only/empty', 'client-only$': 'next/dist/compiled/client-only/error', 'next/dist/compiled/server-only$': 'next/dist/compiled/server-only/empty', 'next/dist/compiled/client-only$': 'next/dist/compiled/client-only/error' } : { 'server-only$': 'next/dist/compiled/server-only/index', 'client-only$': 'next/dist/compiled/client-only/index', 'next/dist/compiled/client-only$': 'next/dist/compiled/client-only/index', 'next/dist/compiled/server-only': 'next/dist/compiled/server-only/index' }; } function createNextApiEsmAliases() { const mapping = { head: 'next/dist/api/head', image: 'next/dist/api/image', constants: 'next/dist/api/constants', router: 'next/dist/api/router', dynamic: 'next/dist/api/dynamic', script: 'next/dist/api/script', link: 'next/dist/api/link', form: 'next/dist/api/form', navigation: 'next/dist/api/navigation', headers: 'next/dist/api/headers', og: 'next/dist/api/og', server: 'next/dist/api/server', // pages api document: 'next/dist/api/document', app: 'next/dist/api/app' }; const aliasMap = {}; // Handle fully specified imports like `next/image.js` for (const [key, value] of Object.entries(mapping)){ const nextApiFilePath = _path.default.join(_nextdirpaths.NEXT_PROJECT_ROOT, key); aliasMap[nextApiFilePath + '.js'] = value; } return aliasMap; } function createAppRouterApiAliases(isServerOnlyLayer) { const mapping = { head: 'next/dist/client/components/noop-head', dynamic: 'next/dist/api/app-dynamic', link: 'next/dist/client/app-dir/link', form: 'next/dist/client/app-dir/form' }; if (isServerOnlyLayer) { mapping['navigation'] = 'next/dist/api/navigation.react-server'; } const aliasMap = {}; for (const [key, value] of Object.entries(mapping)){ const nextApiFilePath = _path.default.join(_nextdirpaths.NEXT_PROJECT_ROOT, key); aliasMap[nextApiFilePath + '.js'] = value; } return aliasMap; } function createRSCAliases(bundledReactChannel, { layer, isEdgeServer, reactProductionProfiling }) { const isServerOnlyLayer = (0, _utils.isWebpackServerOnlyLayer)(layer); // For middleware, instrumentation layers, treat them as rsc layer. // Since we only built the runtime package for rsc, convert everything to rsc // to ensure the runtime modules path existed. if (isServerOnlyLayer) { layer = _constants.WEBPACK_LAYERS.reactServerComponents; } let alias = { react$: `next/dist/compiled/react${bundledReactChannel}`, 'react-dom$': `next/dist/compiled/react-dom${bundledReactChannel}`, 'react/jsx-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-runtime`, 'react/jsx-dev-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-dev-runtime`, 'react/compiler-runtime$': `next/dist/compiled/react${bundledReactChannel}/compiler-runtime`, 'react-dom/client$': `next/dist/compiled/react-dom${bundledReactChannel}/client`, 'react-dom/server$': `next/dist/compiled/react-dom${bundledReactChannel}/server`, 'react-dom/server.browser$': `next/dist/compiled/react-dom${bundledReactChannel}/server.browser`, 'react-dom/static$': `next/dist/compiled/react-dom${bundledReactChannel}/static`, 'react-dom/static.edge$': `next/dist/compiled/react-dom${bundledReactChannel}/static.edge`, 'react-dom/static.browser$': `next/dist/compiled/react-dom${bundledReactChannel}/static.browser`, // optimizations to ignore the legacy build of react-dom/server in `server.edge` build 'react-dom/server.edge$': `next/dist/build/webpack/alias/react-dom-server-edge${bundledReactChannel}.js`, // react-server-dom-webpack alias 'react-server-dom-webpack/client$': `next/dist/compiled/react-server-dom-webpack${bundledReactChannel}/client`, 'react-server-dom-webpack/client.edge$': `next/dist/compiled/react-server-dom-webpack${bundledReactChannel}/client.edge`, 'react-server-dom-webpack/server.edge$': `next/dist/compiled/react-server-dom-webpack${bundledReactChannel}/server.edge`, 'react-server-dom-webpack/server.node$': `next/dist/compiled/react-server-dom-webpack${bundledReactChannel}/server.node`, 'react-server-dom-webpack/static.edge$': `next/dist/compiled/react-server-dom-webpack${bundledReactChannel}/static.edge` }; if (!isEdgeServer) { if (layer === _constants.WEBPACK_LAYERS.serverSideRendering) { alias = Object.assign(alias, { 'react/jsx-runtime$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-jsx-runtime`, 'react/jsx-dev-runtime$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-jsx-dev-runtime`, 'react/compiler-runtime$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-compiler-runtime`, react$: `next/dist/server/route-modules/app-page/vendored/${layer}/react`, 'react-dom$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-dom`, 'react-server-dom-webpack/client.edge$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-server-dom-webpack-client-edge` }); } else if (layer === _constants.WEBPACK_LAYERS.reactServerComponents) { alias = Object.assign(alias, { 'react/jsx-runtime$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-jsx-runtime`, 'react/jsx-dev-runtime$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-jsx-dev-runtime`, 'react/compiler-runtime$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-compiler-runtime`, react$: `next/dist/server/route-modules/app-page/vendored/${layer}/react`, 'react-dom$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-dom`, 'react-server-dom-webpack/server.edge$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-server-dom-webpack-server-edge`, 'react-server-dom-webpack/server.node$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-server-dom-webpack-server-node`, 'react-server-dom-webpack/static.edge$': `next/dist/server/route-modules/app-page/vendored/${layer}/react-server-dom-webpack-static-edge` }); } } if (isEdgeServer) { if (layer === _constants.WEBPACK_LAYERS.reactServerComponents) { alias = Object.assign(alias, { react$: `next/dist/compiled/react${bundledReactChannel}/react.react-server`, 'next/dist/compiled/react$': `next/dist/compiled/react${bundledReactChannel}/react.react-server`, 'next/dist/compiled/react-experimental$': `next/dist/compiled/react-experimental/react.react-server`, 'react/jsx-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-runtime.react-server`, 'react/compiler-runtime$': `next/dist/compiled/react${bundledReactChannel}/compiler-runtime`, 'next/dist/compiled/react/jsx-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-runtime.react-server`, 'next/dist/compiled/react-experimental/jsx-runtime$': `next/dist/compiled/react-experimental/jsx-runtime.react-server`, 'react/jsx-dev-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-dev-runtime.react-server`, 'next/dist/compiled/react/jsx-dev-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-dev-runtime.react-server`, 'next/dist/compiled/react-experimental/jsx-dev-runtime$': `next/dist/compiled/react-experimental/jsx-dev-runtime.react-server`, 'react-dom$': `next/dist/compiled/react-dom${bundledReactChannel}/react-dom.react-server`, 'next/dist/compiled/react-dom$': `next/dist/compiled/react-dom${bundledReactChannel}/react-dom.react-server`, 'next/dist/compiled/react-dom-experimental$': `next/dist/compiled/react-dom-experimental/react-dom.react-server` }); } } if (reactProductionProfiling) { alias['react-dom/client$'] = `next/dist/compiled/react-dom${bundledReactChannel}/profiling`; } alias['@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts'] = `next/dist/client/dev/noop-turbopack-hmr`; return alias; } function getOptimizedModuleAliases() { return { unfetch: require.resolve('next/dist/build/polyfills/fetch/index.js'), 'isomorphic-unfetch': require.resolve('next/dist/build/polyfills/fetch/index.js'), 'whatwg-fetch': require.resolve('next/dist/build/polyfills/fetch/whatwg-fetch.js'), 'object-assign': require.resolve('next/dist/build/polyfills/object-assign.js'), 'object.assign/auto': require.resolve('next/dist/build/polyfills/object.assign/auto.js'), 'object.assign/implementation': require.resolve('next/dist/build/polyfills/object.assign/implementation.js'), 'object.assign/polyfill': require.resolve('next/dist/build/polyfills/object.assign/polyfill.js'), 'object.assign/shim': require.resolve('next/dist/build/polyfills/object.assign/shim.js'), url: require.resolve('next/dist/compiled/native-url') }; } // Alias these modules to be resolved with "module" if possible. function getBarrelOptimizationAliases(packages) { const aliases = {}; const mainFields = [ 'module', 'main' ]; for (const pkg of packages){ try { const descriptionFileData = require(`${pkg}/package.json`); const descriptionFilePath = require.resolve(`${pkg}/package.json`); for (const field of mainFields){ if (descriptionFileData.hasOwnProperty(field)) { aliases[pkg + '$'] = _path.default.join(_path.default.dirname(descriptionFilePath), descriptionFileData[field]); break; } } } catch {} } return aliases; } function getReactProfilingInProduction() { return { 'react-dom/client$': 'react-dom/profiling' }; } //# sourceMappingURL=create-compiler-aliases.js.map