next
Version:
The React Framework
114 lines (113 loc) • 5.53 kB
JavaScript
// Synchronously inject a require hook for webpack and webpack/. It's required to use the internal ncc webpack version.
// This is needed for userland plugins to attach to the same webpack instance as Next.js'.
// Individually compiled modules are as defined for the compilation in bundles/webpack/packages/*.
// This module will only be loaded once per process.
;
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
defaultOverrides: null,
baseOverrides: null,
experimentalOverrides: null,
addHookAliases: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
defaultOverrides: function() {
return defaultOverrides;
},
baseOverrides: function() {
return baseOverrides;
},
experimentalOverrides: function() {
return experimentalOverrides;
},
addHookAliases: function() {
return addHookAliases;
}
});
const { dirname } = require("path");
const mod = require("module");
const resolveFilename = mod._resolveFilename;
const hookPropertyMap = new Map();
let aliasedPrebundledReact = false;
const resolve = process.env.NEXT_MINIMAL ? __non_webpack_require__.resolve : require.resolve;
const toResolveMap = (map)=>Object.entries(map).map(([key, value])=>[
key,
resolve(value)
]);
const defaultOverrides = {
"styled-jsx": dirname(require.resolve("styled-jsx/package.json")),
"styled-jsx/style": require.resolve("styled-jsx/style")
};
const baseOverrides = {
react: "next/dist/compiled/react",
"react/package.json": "next/dist/compiled/react/package.json",
"react/jsx-runtime": "next/dist/compiled/react/jsx-runtime",
"react/jsx-dev-runtime": "next/dist/compiled/react/jsx-dev-runtime",
"react-dom": "next/dist/compiled/react-dom/server-rendering-stub",
"react-dom/package.json": "next/dist/compiled/react-dom/package.json",
"react-dom/client": "next/dist/compiled/react-dom/client",
"react-dom/server": "next/dist/compiled/react-dom/server",
"react-dom/server.browser": "next/dist/compiled/react-dom/server.browser",
"react-dom/server.edge": "next/dist/compiled/react-dom/server.edge",
"react-server-dom-webpack/client": "next/dist/compiled/react-server-dom-webpack/client",
"react-server-dom-webpack/client.edge": "next/dist/compiled/react-server-dom-webpack/client.edge",
"react-server-dom-webpack/server.edge": "next/dist/compiled/react-server-dom-webpack/server.edge",
"react-server-dom-webpack/server.node": "next/dist/compiled/react-server-dom-webpack/server.node"
};
const experimentalOverrides = {
react: "next/dist/compiled/react-experimental",
"react/jsx-runtime": "next/dist/compiled/react-experimental/jsx-runtime",
"react/jsx-dev-runtime": "next/dist/compiled/react-experimental/jsx-dev-runtime",
"react-dom": "next/dist/compiled/react-dom-experimental/server-rendering-stub",
"react/package.json": "next/dist/compiled/react-experimental/package.json",
"react-dom/package.json": "next/dist/compiled/react-dom-experimental/package.json",
"react-dom/client": "next/dist/compiled/react-dom-experimental/client",
"react-dom/server": "next/dist/compiled/react-dom-experimental/server",
"react-dom/server.browser": "next/dist/compiled/react-dom-experimental/server.browser",
"react-dom/server.edge": "next/dist/compiled/react-dom-experimental/server.edge",
"react-server-dom-webpack/client": "next/dist/compiled/react-server-dom-webpack-experimental/client",
"react-server-dom-webpack/client.edge": "next/dist/compiled/react-server-dom-webpack-experimental/client.edge",
"react-server-dom-webpack/server.edge": "next/dist/compiled/react-server-dom-webpack-experimental/server.edge",
"react-server-dom-webpack/server.node": "next/dist/compiled/react-server-dom-webpack-experimental/server.node"
};
function addHookAliases(aliases = []) {
for (const [key, value] of aliases){
hookPropertyMap.set(key, value);
}
}
// Add default aliases
addHookAliases(toResolveMap(defaultOverrides));
// Override built-in React packages if necessary
function overrideReact() {
if (process.env.__NEXT_PRIVATE_PREBUNDLED_REACT) {
aliasedPrebundledReact = true;
// Require these modules with static paths to make sure they are tracked by
// NFT when building the app in standalone mode, as we are now conditionally
// aliasing them it's tricky to track them in build time.
if (process.env.__NEXT_PRIVATE_PREBUNDLED_REACT === "experimental") {
addHookAliases(toResolveMap(experimentalOverrides));
} else {
addHookAliases(toResolveMap(baseOverrides));
}
}
}
overrideReact();
mod._resolveFilename = (function(originalResolveFilename, requestMap, request, parent, isMain, options) {
if (process.env.__NEXT_PRIVATE_PREBUNDLED_REACT && !aliasedPrebundledReact) {
// In case the environment variable is set after the module is loaded.
overrideReact();
}
const hookResolved = requestMap.get(request);
if (hookResolved) request = hookResolved;
return originalResolveFilename.call(mod, request, parent, isMain, options);
// We use `bind` here to avoid referencing outside variables to create potential memory leaks.
}).bind(null, resolveFilename, hookPropertyMap);
//# sourceMappingURL=require-hook.js.map