Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: use global constant for __webpack_require__ instead of string literal #17228

Merged
merged 3 commits into from May 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 3 additions & 2 deletions lib/CompatibilityPlugin.js
Expand Up @@ -10,6 +10,7 @@ const {
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
JAVASCRIPT_MODULE_TYPE_ESM
} = require("./ModuleTypeConstants");
const RuntimeGlobals = require("./RuntimeGlobals");
const ConstDependency = require("./dependencies/ConstDependency");

/** @typedef {import("./Compiler")} Compiler */
Expand Down Expand Up @@ -79,7 +80,7 @@ class CompatibilityPlugin {
if (
statement.type === "FunctionDeclaration" &&
statement.id &&
statement.id.name === "__webpack_require__"
statement.id.name === RuntimeGlobals.require
) {
const newName = `__nested_webpack_require_${statement.range[0]}__`;
parser.tagVariable(
Expand All @@ -98,7 +99,7 @@ class CompatibilityPlugin {
}
});
parser.hooks.pattern
.for("__webpack_require__")
.for(RuntimeGlobals.require)
.tap(PLUGIN_NAME, pattern => {
const newName = `__nested_webpack_require_${pattern.range[0]}__`;
parser.tagVariable(pattern.name, nestedWebpackIdentifierTag, {
Expand Down
4 changes: 2 additions & 2 deletions lib/Compilation.js
Expand Up @@ -5024,13 +5024,13 @@ This prevents using hashes of each other and should be avoided.`);
};
const interceptModuleExecution = (__webpack_require__[
RuntimeGlobals.interceptModuleExecution.replace(
"__webpack_require__.",
`${RuntimeGlobals.require}.`,
""
)
] = []);
const moduleCache = (__webpack_require__[
RuntimeGlobals.moduleCache.replace(
"__webpack_require__.",
`${RuntimeGlobals.require}.`,
""
)
] = {});
Expand Down
6 changes: 3 additions & 3 deletions lib/ContextModule.js
Expand Up @@ -640,7 +640,7 @@ class ContextModule extends Module {

getReturn(type, asyncModule) {
if (type === 9) {
return "__webpack_require__(id)";
return `${RuntimeGlobals.require}(id)`;
}
return `${RuntimeGlobals.createFakeNamespaceObject}(id, ${type}${
asyncModule ? " | 16" : ""
Expand Down Expand Up @@ -799,7 +799,7 @@ module.exports = webpackAsyncContext;`;
? `${arrow ? "id =>" : "function(id)"} {
${this.getReturnModuleObjectSource(fakeMap)}
}`
: "__webpack_require__";
: RuntimeGlobals.require;
return `var map = ${JSON.stringify(map, null, "\t")};
${this.getFakeMapInitStatement(fakeMap)}

Expand Down Expand Up @@ -850,7 +850,7 @@ module.exports = webpackAsyncContext;`;
? `${arrow ? "id =>" : "function(id)"} {
${this.getReturnModuleObjectSource(fakeMap, true)};
}`
: "__webpack_require__";
: RuntimeGlobals.require;

return `var map = ${JSON.stringify(map, null, "\t")};
${this.getFakeMapInitStatement(fakeMap)}
Expand Down
2 changes: 1 addition & 1 deletion lib/DllModule.js
Expand Up @@ -89,7 +89,7 @@ class DllModule extends Module {
const sources = new Map();
sources.set(
"javascript",
new RawSource("module.exports = __webpack_require__;")
new RawSource(`module.exports = ${RuntimeGlobals.require};`)
);
return {
sources,
Expand Down
4 changes: 2 additions & 2 deletions lib/MainTemplate.js
Expand Up @@ -306,8 +306,8 @@ class MainTemplate {

Object.defineProperty(MainTemplate.prototype, "requireFn", {
get: util.deprecate(
() => "__webpack_require__",
'MainTemplate.requireFn is deprecated (use "__webpack_require__")',
() => RuntimeGlobals.require,
`MainTemplate.requireFn is deprecated (use "${RuntimeGlobals.require}")`,
"DEP_WEBPACK_MAIN_TEMPLATE_REQUIRE_FN"
)
});
Expand Down
10 changes: 5 additions & 5 deletions lib/RuntimeTemplate.js
Expand Up @@ -429,7 +429,7 @@ class RuntimeTemplate {
);
}
runtimeRequirements.add(RuntimeGlobals.require);
return `__webpack_require__(${this.moduleId({
return `${RuntimeGlobals.require}(${this.moduleId({
module,
chunkGraph,
request,
Expand Down Expand Up @@ -625,7 +625,7 @@ class RuntimeTemplate {
)})`;
} else {
runtimeRequirements.add(RuntimeGlobals.require);
appending = `.then(__webpack_require__.bind(__webpack_require__, ${comment}${idExpr}))`;
appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
}
break;
case "dynamic":
Expand All @@ -651,7 +651,7 @@ class RuntimeTemplate {
)})`;
} else {
runtimeRequirements.add(RuntimeGlobals.require);
appending = `.then(__webpack_require__.bind(__webpack_require__, ${comment}${idExpr}))`;
appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
}
appending += `.then(${this.returningFunction(
`${RuntimeGlobals.createFakeNamespaceObject}(m, ${fakeType})`,
Expand All @@ -666,7 +666,7 @@ class RuntimeTemplate {
`${header}return ${returnExpression};`
)})`;
} else {
appending = `.then(${RuntimeGlobals.createFakeNamespaceObject}.bind(__webpack_require__, ${comment}${idExpr}, ${fakeType}))`;
appending = `.then(${RuntimeGlobals.createFakeNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${fakeType}))`;
}
}
break;
Expand Down Expand Up @@ -773,7 +773,7 @@ class RuntimeTemplate {
originModule.buildMeta.strictHarmonyModule
);
runtimeRequirements.add(RuntimeGlobals.require);
const importContent = `/* harmony import */ ${optDeclaration}${importVar} = __webpack_require__(${moduleId});\n`;
const importContent = `/* harmony import */ ${optDeclaration}${importVar} = ${RuntimeGlobals.require}(${moduleId});\n`;

if (exportsType === "dynamic") {
runtimeRequirements.add(RuntimeGlobals.compatGetDefaultExport);
Expand Down
3 changes: 2 additions & 1 deletion lib/Template.js
Expand Up @@ -7,6 +7,7 @@

const { ConcatSource, PrefixSource } = require("webpack-sources");
const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
const RuntimeGlobals = require("./RuntimeGlobals");

/** @typedef {import("webpack-sources").Source} Source */
/** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
Expand Down Expand Up @@ -405,7 +406,7 @@ class Template {
return new PrefixSource(
"/******/ ",
new ConcatSource(
"function(__webpack_require__) { // webpackRuntimeModules\n",
`function(${RuntimeGlobals.require}) { // webpackRuntimeModules\n`,
this.renderRuntimeModules(runtimeModules, renderContext),
"}\n"
)
Expand Down
2 changes: 1 addition & 1 deletion lib/container/FallbackModule.js
Expand Up @@ -136,7 +136,7 @@ class FallbackModule extends Module {
`var loop = ${runtimeTemplate.basicFunction("next", [
"while(i < ids.length) {",
Template.indent([
"try { next = __webpack_require__(ids[i++]); } catch(e) { return handleError(e); }",
`try { next = ${RuntimeGlobals.require}(ids[i++]); } catch(e) { return handleError(e); }`,
"if(next) return next.then ? next.then(handleResult, handleError) : handleResult(next);"
]),
"}",
Expand Down
2 changes: 1 addition & 1 deletion lib/container/RemoteRuntimeModule.js
Expand Up @@ -117,7 +117,7 @@ class RemoteRuntimeModule extends RuntimeModule {
"module.exports = factory();"
])}`
])};`,
"handleFunction(__webpack_require__, data[2], 0, 0, onExternal, 1);"
`handleFunction(${RuntimeGlobals.require}, data[2], 0, 0, onExternal, 1);`
])});`
]),
"}"
Expand Down
10 changes: 4 additions & 6 deletions lib/dependencies/AMDDefineDependency.js
Expand Up @@ -19,7 +19,7 @@ const NullDependency = require("./NullDependency");
const DEFINITIONS = {
f: {
definition: "var __WEBPACK_AMD_DEFINE_RESULT__;",
content: `!(__WEBPACK_AMD_DEFINE_RESULT__ = (#).call(exports, __webpack_require__, exports, module),
content: `!(__WEBPACK_AMD_DEFINE_RESULT__ = (#).call(exports, ${RuntimeGlobals.require}, exports, module),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))`,
requests: [
RuntimeGlobals.require,
Expand All @@ -37,7 +37,7 @@ const DEFINITIONS = {
"var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;",
content: `!(__WEBPACK_AMD_DEFINE_FACTORY__ = (#),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, ${RuntimeGlobals.require}, exports, module)) :
__WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))`,
requests: [
Expand Down Expand Up @@ -69,8 +69,7 @@ const DEFINITIONS = {
},
lf: {
definition: "var XXX, XXXmodule;",
content:
"!(XXXmodule = { id: YYY, exports: {}, loaded: false }, XXX = (#).call(XXXmodule.exports, __webpack_require__, XXXmodule.exports, XXXmodule), XXXmodule.loaded = true, XXX === undefined && (XXX = XXXmodule.exports))",
content: `!(XXXmodule = { id: YYY, exports: {}, loaded: false }, XXX = (#).call(XXXmodule.exports, ${RuntimeGlobals.require}, XXXmodule.exports, XXXmodule), XXXmodule.loaded = true, XXX === undefined && (XXX = XXXmodule.exports))`,
requests: [RuntimeGlobals.require, RuntimeGlobals.module]
},
lo: {
Expand All @@ -80,8 +79,7 @@ const DEFINITIONS = {
},
lof: {
definition: "var XXX, XXXfactory, XXXmodule;",
content:
"!(XXXfactory = (#), (typeof XXXfactory === 'function' ? ((XXXmodule = { id: YYY, exports: {}, loaded: false }), (XXX = XXXfactory.call(XXXmodule.exports, __webpack_require__, XXXmodule.exports, XXXmodule)), (XXXmodule.loaded = true), XXX === undefined && (XXX = XXXmodule.exports)) : XXX = XXXfactory))",
content: `!(XXXfactory = (#), (typeof XXXfactory === 'function' ? ((XXXmodule = { id: YYY, exports: {}, loaded: false }), (XXX = XXXfactory.call(XXXmodule.exports, ${RuntimeGlobals.require}, XXXmodule.exports, XXXmodule)), (XXXmodule.loaded = true), XXX === undefined && (XXX = XXXmodule.exports)) : XXX = XXXfactory))`,
requests: [RuntimeGlobals.require, RuntimeGlobals.module]
},
laf: {
Expand Down
4 changes: 2 additions & 2 deletions lib/dependencies/AMDDefineDependencyParserPlugin.js
Expand Up @@ -73,7 +73,7 @@ class AMDDefineDependencyParserPlugin {
let localModule;
if (request === "require") {
identifiers[idx] = request;
dep = "__webpack_require__";
dep = RuntimeGlobals.require;
} else if (["exports", "module"].includes(request)) {
identifiers[idx] = request;
dep = request;
Expand Down Expand Up @@ -109,7 +109,7 @@ class AMDDefineDependencyParserPlugin {
} else if (param.isString()) {
let dep, localModule;
if (param.string === "require") {
dep = new ConstDependency("__webpack_require__", param.range, [
dep = new ConstDependency(RuntimeGlobals.require, param.range, [
RuntimeGlobals.require
]);
} else if (param.string === "exports") {
Expand Down
4 changes: 2 additions & 2 deletions lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js
Expand Up @@ -73,7 +73,7 @@ class AMDRequireDependenciesBlockParserPlugin {
for (const request of param.array) {
let dep, localModule;
if (request === "require") {
dep = "__webpack_require__";
dep = RuntimeGlobals.require;
} else if (["exports", "module"].includes(request)) {
dep = request;
} else if ((localModule = getLocalModule(parser.state, request))) {
Expand Down Expand Up @@ -108,7 +108,7 @@ class AMDRequireDependenciesBlockParserPlugin {
} else if (param.isString()) {
let dep, localModule;
if (param.string === "require") {
dep = new ConstDependency("__webpack_require__", param.string, [
dep = new ConstDependency(RuntimeGlobals.require, param.string, [
RuntimeGlobals.require
]);
} else if (param.string === "module") {
Expand Down
2 changes: 1 addition & 1 deletion lib/dependencies/AMDRequireDependency.js
Expand Up @@ -111,7 +111,7 @@ AMDRequireDependency.Template = class AMDRequireDependencyTemplate extends (
// has function range but no array range
if (dep.functionRange && !dep.arrayRange) {
const startBlock = `${promise}.then((`;
const endBlock = `).bind(exports, __webpack_require__, exports, module))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`;
const endBlock = `).bind(exports, ${RuntimeGlobals.require}, exports, module))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`;
runtimeRequirements.add(RuntimeGlobals.uncaughtErrorHandler);

source.replace(dep.outerRange[0], dep.functionRange[0] - 1, startBlock);
Expand Down
4 changes: 2 additions & 2 deletions lib/dependencies/RequireEnsureDependency.js
Expand Up @@ -93,14 +93,14 @@ RequireEnsureDependency.Template = class RequireEnsureDependencyTemplate extends
source.replace(
contentRange[1],
errorHandlerRange[0] - 1,
").bind(null, __webpack_require__))['catch']("
`).bind(null, ${RuntimeGlobals.require}))['catch'](`
);
source.replace(errorHandlerRange[1], range[1] - 1, ")");
} else {
source.replace(
contentRange[1],
range[1] - 1,
`).bind(null, __webpack_require__))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`
`).bind(null, ${RuntimeGlobals.require}))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`
);
}
}
Expand Down
2 changes: 1 addition & 1 deletion lib/dependencies/RequireHeaderDependency.js
Expand Up @@ -55,7 +55,7 @@ RequireHeaderDependency.Template = class RequireHeaderDependencyTemplate extends
apply(dependency, source, { runtimeRequirements }) {
const dep = /** @type {RequireHeaderDependency} */ (dependency);
runtimeRequirements.add(RuntimeGlobals.require);
source.replace(dep.range[0], dep.range[1] - 1, "__webpack_require__");
source.replace(dep.range[0], dep.range[1] - 1, RuntimeGlobals.require);
}
};

Expand Down
3 changes: 2 additions & 1 deletion lib/esm/ExportWebpackRequireRuntimeModule.js
Expand Up @@ -4,6 +4,7 @@

"use strict";

const RuntimeGlobals = require("../RuntimeGlobals");
const RuntimeModule = require("../RuntimeModule");

class ExportWebpackRequireRuntimeModule extends RuntimeModule {
Expand All @@ -22,7 +23,7 @@ class ExportWebpackRequireRuntimeModule extends RuntimeModule {
* @returns {string} runtime code
*/
generate() {
return "export default __webpack_require__;";
return `export default ${RuntimeGlobals.require};`;
}
}

Expand Down
4 changes: 2 additions & 2 deletions lib/esm/ModuleChunkFormatPlugin.js
Expand Up @@ -123,15 +123,15 @@ class ModuleChunkFormatPlugin {
entrySource.add(source);
entrySource.add(";\n\n// load runtime\n");
entrySource.add(
`import __webpack_require__ from ${JSON.stringify(
`import ${RuntimeGlobals.require} from ${JSON.stringify(
getRelativePath(runtimeChunk)
)};\n`
);

const startupSource = new ConcatSource();
startupSource.add(
`var __webpack_exec__ = ${runtimeTemplate.returningFunction(
`__webpack_require__(${RuntimeGlobals.entryModuleId} = moduleId)`,
`${RuntimeGlobals.require}(${RuntimeGlobals.entryModuleId} = moduleId)`,
"moduleId"
)}\n`
);
Expand Down
2 changes: 1 addition & 1 deletion lib/esm/ModuleChunkLoadingRuntimeModule.js
Expand Up @@ -156,7 +156,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
"}"
]),
"}",
"if(runtime) runtime(__webpack_require__);",
`if(runtime) runtime(${RuntimeGlobals.require});`,
"for(;i < ids.length; i++) {",
Template.indent([
"chunkId = ids[i];",
Expand Down
4 changes: 2 additions & 2 deletions lib/javascript/ArrayPushCallbackChunkFormatPlugin.js
Expand Up @@ -84,8 +84,8 @@ class ArrayPushCallbackChunkFormatPlugin {
if (runtimeModules.length > 0 || entries.length > 0) {
const runtime = new ConcatSource(
(runtimeTemplate.supportsArrowFunction()
? "__webpack_require__ =>"
: "function(__webpack_require__)") +
? `${RuntimeGlobals.require} =>`
: `function(${RuntimeGlobals.require})`) +
" { // webpackRuntimeModules\n"
);
if (runtimeModules.length > 0) {
Expand Down
2 changes: 1 addition & 1 deletion lib/javascript/CommonJsChunkFormatPlugin.js
Expand Up @@ -120,7 +120,7 @@ class CommonJsChunkFormatPlugin {
entrySource.add(source);
entrySource.add(";\n\n// load runtime\n");
entrySource.add(
`var __webpack_require__ = require(${JSON.stringify(
`var ${RuntimeGlobals.require} = require(${JSON.stringify(
runtimePath
)});\n`
);
Expand Down