webpack 5.83.1 → 5.84.0

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.

Potentially problematic release.


This version of webpack might be problematic. Click here for more details.

Files changed (137) hide show
  1. package/README.md +2 -2
  2. package/lib/CompatibilityPlugin.js +3 -2
  3. package/lib/Compilation.js +2 -2
  4. package/lib/ContextModule.js +3 -3
  5. package/lib/DefinePlugin.js +11 -2
  6. package/lib/DllEntryPlugin.js +5 -0
  7. package/lib/DllModule.js +1 -1
  8. package/lib/EvalSourceMapDevToolPlugin.js +3 -1
  9. package/lib/MainTemplate.js +2 -2
  10. package/lib/PrefetchPlugin.js +4 -0
  11. package/lib/RuntimeTemplate.js +5 -5
  12. package/lib/SelfModuleFactory.js +12 -0
  13. package/lib/SourceMapDevToolPlugin.js +9 -2
  14. package/lib/Template.js +2 -1
  15. package/lib/config/browserslistTargetHandler.js +3 -3
  16. package/lib/config/defaults.js +209 -70
  17. package/lib/config/normalization.js +103 -71
  18. package/lib/config/target.js +37 -10
  19. package/lib/container/FallbackModule.js +1 -1
  20. package/lib/container/RemoteRuntimeModule.js +1 -1
  21. package/lib/css/CssParser.js +168 -73
  22. package/lib/debug/ProfilingPlugin.js +11 -0
  23. package/lib/dependencies/AMDDefineDependency.js +12 -6
  24. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +8 -2
  25. package/lib/dependencies/AMDPlugin.js +7 -0
  26. package/lib/dependencies/AMDRequireArrayDependency.js +5 -0
  27. package/lib/dependencies/AMDRequireContextDependency.js +6 -0
  28. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  29. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  30. package/lib/dependencies/AMDRequireDependency.js +8 -1
  31. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  32. package/lib/dependencies/CachedConstDependency.js +6 -0
  33. package/lib/dependencies/CommonJsExportRequireDependency.js +11 -0
  34. package/lib/dependencies/CommonJsExportsDependency.js +8 -0
  35. package/lib/dependencies/CommonJsExportsParserPlugin.js +2 -2
  36. package/lib/dependencies/CommonJsFullRequireDependency.js +2 -1
  37. package/lib/dependencies/CommonJsPlugin.js +14 -0
  38. package/lib/dependencies/CommonJsRequireContextDependency.js +8 -0
  39. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  40. package/lib/dependencies/CommonJsSelfReferenceDependency.js +8 -0
  41. package/lib/dependencies/ConstDependency.js +2 -1
  42. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  43. package/lib/dependencies/CreateScriptUrlDependency.js +2 -1
  44. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  45. package/lib/dependencies/CssImportDependency.js +2 -1
  46. package/lib/dependencies/CssLocalIdentifierDependency.js +2 -1
  47. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  48. package/lib/dependencies/CssUrlDependency.js +12 -2
  49. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  50. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  51. package/lib/dependencies/HarmonyAcceptDependency.js +2 -1
  52. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  53. package/lib/dependencies/HarmonyDetectionParserPlugin.js +16 -0
  54. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +11 -0
  55. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +3 -0
  56. package/lib/dependencies/HarmonyExportExpressionDependency.js +8 -0
  57. package/lib/dependencies/HarmonyExportHeaderDependency.js +5 -0
  58. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +2 -1
  59. package/lib/dependencies/HarmonyExportSpecifierDependency.js +4 -0
  60. package/lib/dependencies/HarmonyImportDependency.js +2 -1
  61. package/lib/dependencies/HarmonyImportSideEffectDependency.js +6 -0
  62. package/lib/dependencies/HarmonyImportSpecifierDependency.js +11 -0
  63. package/lib/dependencies/HarmonyModulesPlugin.js +12 -0
  64. package/lib/dependencies/ImportContextDependency.js +6 -0
  65. package/lib/dependencies/ImportDependency.js +2 -1
  66. package/lib/dependencies/ImportEagerDependency.js +2 -1
  67. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +32 -13
  68. package/lib/dependencies/ImportMetaContextPlugin.js +7 -0
  69. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  70. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  71. package/lib/dependencies/ImportParserPlugin.js +5 -0
  72. package/lib/dependencies/ImportPlugin.js +7 -0
  73. package/lib/dependencies/ImportWeakDependency.js +2 -1
  74. package/lib/dependencies/LocalModule.js +16 -0
  75. package/lib/dependencies/LocalModuleDependency.js +7 -0
  76. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  77. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  78. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  79. package/lib/dependencies/PrefetchDependency.js +3 -0
  80. package/lib/dependencies/ProvidedDependency.js +2 -1
  81. package/lib/dependencies/PureExpressionDependency.js +2 -1
  82. package/lib/dependencies/RequireContextDependency.js +6 -0
  83. package/lib/dependencies/RequireContextPlugin.js +7 -0
  84. package/lib/dependencies/RequireEnsureDependenciesBlock.js +4 -0
  85. package/lib/dependencies/RequireEnsureDependency.js +8 -2
  86. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  87. package/lib/dependencies/RequireEnsurePlugin.js +14 -0
  88. package/lib/dependencies/RequireHeaderDependency.js +5 -1
  89. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  90. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  91. package/lib/dependencies/RequireIncludePlugin.js +14 -0
  92. package/lib/dependencies/RequireResolveContextDependency.js +8 -0
  93. package/lib/dependencies/RequireResolveDependency.js +6 -0
  94. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -0
  95. package/lib/dependencies/SystemPlugin.js +10 -1
  96. package/lib/dependencies/URLDependency.js +3 -2
  97. package/lib/dependencies/URLPlugin.js +7 -5
  98. package/lib/dependencies/UnsupportedDependency.js +5 -0
  99. package/lib/dependencies/WebAssemblyExportImportedDependency.js +6 -0
  100. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  101. package/lib/dependencies/WorkerDependency.js +2 -1
  102. package/lib/dependencies/WorkerPlugin.js +5 -2
  103. package/lib/dependencies/getFunctionExpression.js +7 -0
  104. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -1
  105. package/lib/esm/ModuleChunkFormatPlugin.js +2 -2
  106. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -2
  107. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +2 -2
  108. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  109. package/lib/javascript/JavascriptModulesPlugin.js +13 -13
  110. package/lib/javascript/JavascriptParser.js +540 -180
  111. package/lib/javascript/StartupHelpers.js +1 -1
  112. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  113. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  114. package/lib/optimize/ConcatenatedModule.js +1 -1
  115. package/lib/optimize/InnerGraphPlugin.js +11 -4
  116. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
  117. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -5
  118. package/lib/serialization/ArraySerializer.js +22 -6
  119. package/lib/serialization/BinaryMiddleware.js +21 -0
  120. package/lib/serialization/DateObjectSerializer.js +15 -4
  121. package/lib/serialization/ErrorObjectSerializer.js +20 -8
  122. package/lib/serialization/FileMiddleware.js +17 -0
  123. package/lib/serialization/MapObjectSerializer.js +24 -8
  124. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  125. package/lib/serialization/ObjectMiddleware.js +23 -0
  126. package/lib/serialization/PlainObjectSerializer.js +23 -12
  127. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  128. package/lib/serialization/SetObjectSerializer.js +21 -6
  129. package/lib/sharing/ShareRuntimeModule.js +1 -1
  130. package/lib/util/makeSerializable.js +7 -0
  131. package/lib/util/serialization.js +10 -0
  132. package/lib/web/JsonpChunkLoadingRuntimeModule.js +4 -1
  133. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +5 -1
  134. package/package.json +3 -3
  135. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  136. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  137. package/types.d.ts +469 -149
@@ -12,10 +12,14 @@ const NullDependency = require("./NullDependency");
12
12
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
13
  /** @typedef {import("../Dependency")} Dependency */
14
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
16
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
17
18
 
18
19
  class RequireHeaderDependency extends NullDependency {
20
+ /**
21
+ * @param {Range} range range
22
+ */
19
23
  constructor(range) {
20
24
  super();
21
25
  if (!Array.isArray(range)) throw new Error("range must be valid");
@@ -55,7 +59,7 @@ RequireHeaderDependency.Template = class RequireHeaderDependencyTemplate extends
55
59
  apply(dependency, source, { runtimeRequirements }) {
56
60
  const dep = /** @type {RequireHeaderDependency} */ (dependency);
57
61
  runtimeRequirements.add(RuntimeGlobals.require);
58
- source.replace(dep.range[0], dep.range[1] - 1, "__webpack_require__");
62
+ source.replace(dep.range[0], dep.range[1] - 1, RuntimeGlobals.require);
59
63
  }
60
64
  };
61
65
 
@@ -14,9 +14,14 @@ const ModuleDependency = require("./ModuleDependency");
14
14
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
17
18
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
18
19
 
19
20
  class RequireIncludeDependency extends ModuleDependency {
21
+ /**
22
+ * @param {string} request the request string
23
+ * @param {Range} range location in source code
24
+ */
20
25
  constructor(request, range) {
21
26
  super(request);
22
27
 
@@ -14,6 +14,9 @@ const makeSerializable = require("../util/makeSerializable");
14
14
  const RequireIncludeDependency = require("./RequireIncludeDependency");
15
15
 
16
16
  module.exports = class RequireIncludeDependencyParserPlugin {
17
+ /**
18
+ * @param {boolean} warn true: warn about deprecation, false: don't warn
19
+ */
17
20
  constructor(warn) {
18
21
  this.warn = warn;
19
22
  }
@@ -12,9 +12,18 @@ const {
12
12
  const RequireIncludeDependency = require("./RequireIncludeDependency");
13
13
  const RequireIncludeDependencyParserPlugin = require("./RequireIncludeDependencyParserPlugin");
14
14
 
15
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
16
+ /** @typedef {import("../Compiler")} Compiler */
17
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
18
+
15
19
  const PLUGIN_NAME = "RequireIncludePlugin";
16
20
 
17
21
  class RequireIncludePlugin {
22
+ /**
23
+ * Apply the plugin
24
+ * @param {Compiler} compiler the compiler instance
25
+ * @returns {void}
26
+ */
18
27
  apply(compiler) {
19
28
  compiler.hooks.compilation.tap(
20
29
  PLUGIN_NAME,
@@ -28,6 +37,11 @@ class RequireIncludePlugin {
28
37
  new RequireIncludeDependency.Template()
29
38
  );
30
39
 
40
+ /**
41
+ * @param {Parser} parser parser parser
42
+ * @param {JavascriptParserOptions} parserOptions parserOptions
43
+ * @returns {void}
44
+ */
31
45
  const handler = (parser, parserOptions) => {
32
46
  if (parserOptions.requireInclude === false) return;
33
47
  const warn = parserOptions.requireInclude === undefined;
@@ -9,10 +9,18 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ContextDependency = require("./ContextDependency");
10
10
  const ContextDependencyTemplateAsId = require("./ContextDependencyTemplateAsId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
12
13
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
13
14
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
+ /** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
14
16
 
15
17
  class RequireResolveContextDependency extends ContextDependency {
18
+ /**
19
+ * @param {ContextDependencyOptions} options options
20
+ * @param {Range} range range
21
+ * @param {Range} valueRange value range
22
+ * @param {TODO} context context
23
+ */
16
24
  constructor(options, range, valueRange, context) {
17
25
  super(options, context);
18
26
 
@@ -12,9 +12,15 @@ const ModuleDependencyAsId = require("./ModuleDependencyTemplateAsId");
12
12
 
13
13
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
14
14
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
16
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
16
17
 
17
18
  class RequireResolveDependency extends ModuleDependency {
19
+ /**
20
+ * @param {string} request the request string
21
+ * @param {Range} range location in source code
22
+ * @param {string} [context] context
23
+ */
18
24
  constructor(request, range, context) {
19
25
  super(request);
20
26
 
@@ -11,10 +11,14 @@ const NullDependency = require("./NullDependency");
11
11
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
12
  /** @typedef {import("../Dependency")} Dependency */
13
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
14
15
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
17
 
17
18
  class RequireResolveHeaderDependency extends NullDependency {
19
+ /**
20
+ * @param {Range} range range
21
+ */
18
22
  constructor(range) {
19
23
  super();
20
24
 
@@ -20,7 +20,9 @@ const makeSerializable = require("../util/makeSerializable");
20
20
  const ConstDependency = require("./ConstDependency");
21
21
  const SystemRuntimeModule = require("./SystemRuntimeModule");
22
22
 
23
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
23
24
  /** @typedef {import("../Compiler")} Compiler */
25
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
24
26
 
25
27
  const PLUGIN_NAME = "SystemPlugin";
26
28
 
@@ -46,6 +48,11 @@ class SystemPlugin {
46
48
  compilation.addRuntimeModule(chunk, new SystemRuntimeModule());
47
49
  });
48
50
 
51
+ /**
52
+ * @param {Parser} parser parser parser
53
+ * @param {JavascriptParserOptions} parserOptions parserOptions
54
+ * @returns {void}
55
+ */
49
56
  const handler = (parser, parserOptions) => {
50
57
  if (parserOptions.system === undefined || !parserOptions.system) {
51
58
  return;
@@ -105,7 +112,9 @@ class SystemPlugin {
105
112
 
106
113
  return parser.hooks.importCall.call({
107
114
  type: "ImportExpression",
108
- source: expr.arguments[0],
115
+ source:
116
+ /** @type {import("estree").Literal} */
117
+ (expr.arguments[0]),
109
118
  loc: expr.loc,
110
119
  range: expr.range
111
120
  });
@@ -22,6 +22,7 @@ const ModuleDependency = require("./ModuleDependency");
22
22
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
23
23
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
24
24
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
25
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
25
26
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
26
27
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
27
28
  /** @typedef {import("../util/Hash")} Hash */
@@ -32,8 +33,8 @@ const getRawDataUrlModule = memoize(() => require("../asset/RawDataUrlModule"));
32
33
  class URLDependency extends ModuleDependency {
33
34
  /**
34
35
  * @param {string} request request
35
- * @param {[number, number]} range range of the arguments of new URL( |> ... <| )
36
- * @param {[number, number]} outerRange range of the full |> new URL(...) <|
36
+ * @param {Range} range range of the arguments of new URL( |> ... <| )
37
+ * @param {Range} outerRange range of the full |> new URL(...) <|
37
38
  * @param {boolean=} relative use relative urls instead of absolute with base uri
38
39
  */
39
40
  constructor(request, range, outerRange, relative) {
@@ -16,9 +16,11 @@ const InnerGraph = require("../optimize/InnerGraph");
16
16
  const URLDependency = require("./URLDependency");
17
17
 
18
18
  /** @typedef {import("estree").NewExpression} NewExpressionNode */
19
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
19
20
  /** @typedef {import("../Compiler")} Compiler */
20
21
  /** @typedef {import("../NormalModule")} NormalModule */
21
22
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
23
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
22
24
 
23
25
  const PLUGIN_NAME = "URLPlugin";
24
26
 
@@ -43,9 +45,11 @@ class URLPlugin {
43
45
  const getUrl = module => {
44
46
  return pathToFileURL(module.resource);
45
47
  };
48
+
46
49
  /**
47
- * @param {JavascriptParser} parser parser
48
- * @param {object} parserOptions options
50
+ * @param {Parser} parser parser parser
51
+ * @param {JavascriptParserOptions} parserOptions parserOptions
52
+ * @returns {void}
49
53
  */
50
54
  const parserCallback = (parser, parserOptions) => {
51
55
  if (parserOptions.url === false) return;
@@ -77,9 +81,7 @@ class URLPlugin {
77
81
  )
78
82
  return;
79
83
 
80
- const request = parser.evaluateExpression(arg1).asString();
81
-
82
- return request;
84
+ return parser.evaluateExpression(arg1).asString();
83
85
  };
84
86
 
85
87
  parser.hooks.canRename.for("URL").tap(PLUGIN_NAME, approve);
@@ -11,10 +11,15 @@ const NullDependency = require("./NullDependency");
11
11
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
12
  /** @typedef {import("../Dependency")} Dependency */
13
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
14
15
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
17
 
17
18
  class UnsupportedDependency extends NullDependency {
19
+ /**
20
+ * @param {string} request the request string
21
+ * @param {Range} range location in source code
22
+ */
18
23
  constructor(request, range) {
19
24
  super();
20
25
 
@@ -17,6 +17,12 @@ const ModuleDependency = require("./ModuleDependency");
17
17
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
18
18
 
19
19
  class WebAssemblyExportImportedDependency extends ModuleDependency {
20
+ /**
21
+ * @param {string} exportName export name
22
+ * @param {string} request request
23
+ * @param {string} name name
24
+ * @param {TODO} valueType value type
25
+ */
20
26
  constructor(exportName, request, name, valueType) {
21
27
  super(request);
22
28
  /** @type {string} */
@@ -15,9 +15,14 @@ const ModuleDependency = require("./ModuleDependency");
15
15
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
16
16
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
17
17
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
18
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
18
19
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
19
20
 
20
21
  class WebpackIsIncludedDependency extends ModuleDependency {
22
+ /**
23
+ * @param {string} request the request string
24
+ * @param {Range} range location in source code
25
+ */
21
26
  constructor(request, range) {
22
27
  super(request);
23
28
 
@@ -18,6 +18,7 @@ const ModuleDependency = require("./ModuleDependency");
18
18
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
19
  /** @typedef {import("../Entrypoint")} Entrypoint */
20
20
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
21
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
23
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
23
24
  /** @typedef {import("../util/Hash")} Hash */
@@ -26,7 +27,7 @@ const ModuleDependency = require("./ModuleDependency");
26
27
  class WorkerDependency extends ModuleDependency {
27
28
  /**
28
29
  * @param {string} request request
29
- * @param {[number, number]} range range
30
+ * @param {Range} range range
30
31
  * @param {Object} workerDependencyOptions options
31
32
  * @param {string} workerDependencyOptions.publicPath public path for the worker
32
33
  */
@@ -30,11 +30,13 @@ const WorkerDependency = require("./WorkerDependency");
30
30
  /** @typedef {import("estree").Pattern} Pattern */
31
31
  /** @typedef {import("estree").Property} Property */
32
32
  /** @typedef {import("estree").SpreadElement} SpreadElement */
33
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
33
34
  /** @typedef {import("../Compiler")} Compiler */
34
35
  /** @typedef {import("../Entrypoint").EntryOptions} EntryOptions */
35
36
  /** @typedef {import("../Parser").ParserState} ParserState */
36
37
  /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
37
38
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
39
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
38
40
  /** @typedef {import("./HarmonyImportDependencyParserPlugin").HarmonySettings} HarmonySettings */
39
41
 
40
42
  const getUrl = module => {
@@ -169,8 +171,9 @@ class WorkerPlugin {
169
171
  };
170
172
 
171
173
  /**
172
- * @param {JavascriptParser} parser the parser
173
- * @param {object} parserOptions options
174
+ * @param {Parser} parser parser parser
175
+ * @param {JavascriptParserOptions} parserOptions parserOptions
176
+ * @returns {void}
174
177
  */
175
178
  const parserPlugin = (parser, parserOptions) => {
176
179
  if (parserOptions.worker === false) return;
@@ -5,6 +5,13 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ /** @typedef {import("estree").Expression} Expression */
9
+ /** @typedef {import("estree").SpreadElement} SpreadElement */
10
+
11
+ /**
12
+ * @param {Expression} expr expressions
13
+ * @returns {{fn: TODO, expressions: (Expression | SpreadElement)[], needThis: boolean | undefined }} function expression with additional information
14
+ */
8
15
  module.exports = expr => {
9
16
  // <FunctionExpression>
10
17
  if (
@@ -4,6 +4,7 @@
4
4
 
5
5
  "use strict";
6
6
 
7
+ const RuntimeGlobals = require("../RuntimeGlobals");
7
8
  const RuntimeModule = require("../RuntimeModule");
8
9
 
9
10
  class ExportWebpackRequireRuntimeModule extends RuntimeModule {
@@ -22,7 +23,7 @@ class ExportWebpackRequireRuntimeModule extends RuntimeModule {
22
23
  * @returns {string} runtime code
23
24
  */
24
25
  generate() {
25
- return "export default __webpack_require__;";
26
+ return `export default ${RuntimeGlobals.require};`;
26
27
  }
27
28
  }
28
29
 
@@ -123,7 +123,7 @@ class ModuleChunkFormatPlugin {
123
123
  entrySource.add(source);
124
124
  entrySource.add(";\n\n// load runtime\n");
125
125
  entrySource.add(
126
- `import __webpack_require__ from ${JSON.stringify(
126
+ `import ${RuntimeGlobals.require} from ${JSON.stringify(
127
127
  getRelativePath(runtimeChunk)
128
128
  )};\n`
129
129
  );
@@ -131,7 +131,7 @@ class ModuleChunkFormatPlugin {
131
131
  const startupSource = new ConcatSource();
132
132
  startupSource.add(
133
133
  `var __webpack_exec__ = ${runtimeTemplate.returningFunction(
134
- `__webpack_require__(${RuntimeGlobals.entryModuleId} = moduleId)`,
134
+ `${RuntimeGlobals.require}(${RuntimeGlobals.entryModuleId} = moduleId)`,
135
135
  "moduleId"
136
136
  )}\n`
137
137
  );
@@ -50,6 +50,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
50
50
  return hooks;
51
51
  }
52
52
 
53
+ /**
54
+ * @param {ReadonlySet<string>} runtimeRequirements runtime requirements
55
+ */
53
56
  constructor(runtimeRequirements) {
54
57
  super("import chunk loading", RuntimeModule.STAGE_ATTACH);
55
58
  this._runtimeRequirements = runtimeRequirements;
@@ -112,7 +115,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
112
115
  );
113
116
  const rootOutputDir = getUndoPath(
114
117
  outputName,
115
- this.compilation.outputOptions.path,
118
+ /** @type {string} */ (this.compilation.outputOptions.path),
116
119
  true
117
120
  );
118
121
 
@@ -156,7 +159,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
156
159
  "}"
157
160
  ]),
158
161
  "}",
159
- "if(runtime) runtime(__webpack_require__);",
162
+ `if(runtime) runtime(${RuntimeGlobals.require});`,
160
163
  "for(;i < ids.length; i++) {",
161
164
  Template.indent([
162
165
  "chunkId = ids[i];",
@@ -84,8 +84,8 @@ class ArrayPushCallbackChunkFormatPlugin {
84
84
  if (runtimeModules.length > 0 || entries.length > 0) {
85
85
  const runtime = new ConcatSource(
86
86
  (runtimeTemplate.supportsArrowFunction()
87
- ? "__webpack_require__ =>"
88
- : "function(__webpack_require__)") +
87
+ ? `${RuntimeGlobals.require} =>`
88
+ : `function(${RuntimeGlobals.require})`) +
89
89
  " { // webpackRuntimeModules\n"
90
90
  );
91
91
  if (runtimeModules.length > 0) {
@@ -120,7 +120,7 @@ class CommonJsChunkFormatPlugin {
120
120
  entrySource.add(source);
121
121
  entrySource.add(";\n\n// load runtime\n");
122
122
  entrySource.add(
123
- `var __webpack_require__ = require(${JSON.stringify(
123
+ `var ${RuntimeGlobals.require} = require(${JSON.stringify(
124
124
  runtimePath
125
125
  )});\n`
126
126
  );
@@ -429,7 +429,7 @@ class JavascriptModulesPlugin {
429
429
  const code = source.source();
430
430
 
431
431
  const fn = vm.runInThisContext(
432
- `(function(${module.moduleArgument}, ${module.exportsArgument}, __webpack_require__) {\n${code}\n/**/})`,
432
+ `(function(${module.moduleArgument}, ${module.exportsArgument}, ${RuntimeGlobals.require}) {\n${code}\n/**/})`,
433
433
  {
434
434
  filename: module.identifier(),
435
435
  lineOffset: -1
@@ -454,7 +454,7 @@ class JavascriptModulesPlugin {
454
454
  if (typeof code !== "string") code = code.toString();
455
455
 
456
456
  const fn = vm.runInThisContext(
457
- `(function(__webpack_require__) {\n${code}\n/**/})`,
457
+ `(function(${RuntimeGlobals.require}) {\n${code}\n/**/})`,
458
458
  {
459
459
  filename: options.module.identifier(),
460
460
  lineOffset: -1
@@ -557,7 +557,7 @@ class JavascriptModulesPlugin {
557
557
  ? module.exportsArgument
558
558
  : "__unused_webpack_" + module.exportsArgument
559
559
  );
560
- if (needRequire) args.push("__webpack_require__");
560
+ if (needRequire) args.push(RuntimeGlobals.require);
561
561
  if (!needThisAsExports && runtimeTemplate.supportsArrowFunction()) {
562
562
  factorySource.add("/***/ ((" + args.join(", ") + ") => {\n\n");
563
563
  } else {
@@ -1038,13 +1038,13 @@ class JavascriptModulesPlugin {
1038
1038
 
1039
1039
  if (useRequire) {
1040
1040
  buf.push("// The require function");
1041
- buf.push(`function __webpack_require__(moduleId) {`);
1041
+ buf.push(`function ${RuntimeGlobals.require}(moduleId) {`);
1042
1042
  buf.push(Template.indent(this.renderRequire(renderContext, hooks)));
1043
1043
  buf.push("}");
1044
1044
  buf.push("");
1045
1045
  } else if (runtimeRequirements.has(RuntimeGlobals.requireScope)) {
1046
1046
  buf.push("// The require scope");
1047
- buf.push("var __webpack_require__ = {};");
1047
+ buf.push(`var ${RuntimeGlobals.require} = {};`);
1048
1048
  buf.push("");
1049
1049
  }
1050
1050
 
@@ -1163,14 +1163,14 @@ class JavascriptModulesPlugin {
1163
1163
  }(undefined, ${JSON.stringify(
1164
1164
  chunks.map(c => c.id)
1165
1165
  )}, ${runtimeTemplate.returningFunction(
1166
- `__webpack_require__(${moduleIdExpr})`
1166
+ `${RuntimeGlobals.require}(${moduleIdExpr})`
1167
1167
  )})`
1168
1168
  );
1169
1169
  } else if (useRequire) {
1170
1170
  buf2.push(
1171
- `${
1172
- i === 0 ? "var __webpack_exports__ = " : ""
1173
- }__webpack_require__(${moduleIdExpr});`
1171
+ `${i === 0 ? "var __webpack_exports__ = " : ""}${
1172
+ RuntimeGlobals.require
1173
+ }(${moduleIdExpr});`
1174
1174
  );
1175
1175
  } else {
1176
1176
  if (i === 0) buf2.push("var __webpack_exports__ = {};");
@@ -1178,7 +1178,7 @@ class JavascriptModulesPlugin {
1178
1178
  buf2.push(
1179
1179
  `__webpack_modules__[${moduleIdExpr}](0, ${
1180
1180
  i === 0 ? "__webpack_exports__" : "{}"
1181
- }, __webpack_require__);`
1181
+ }, ${RuntimeGlobals.require});`
1182
1182
  );
1183
1183
  } else if (entryRuntimeRequirements.has(RuntimeGlobals.exports)) {
1184
1184
  buf2.push(
@@ -1281,17 +1281,17 @@ class JavascriptModulesPlugin {
1281
1281
  RuntimeGlobals.interceptModuleExecution
1282
1282
  )
1283
1283
  ? Template.asString([
1284
- "var execOptions = { id: moduleId, module: module, factory: __webpack_modules__[moduleId], require: __webpack_require__ };",
1284
+ `var execOptions = { id: moduleId, module: module, factory: __webpack_modules__[moduleId], require: ${RuntimeGlobals.require} };`,
1285
1285
  `${RuntimeGlobals.interceptModuleExecution}.forEach(function(handler) { handler(execOptions); });`,
1286
1286
  "module = execOptions.module;",
1287
1287
  "execOptions.factory.call(module.exports, module, module.exports, execOptions.require);"
1288
1288
  ])
1289
1289
  : runtimeRequirements.has(RuntimeGlobals.thisAsExports)
1290
1290
  ? Template.asString([
1291
- "__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);"
1291
+ `__webpack_modules__[moduleId].call(module.exports, module, module.exports, ${RuntimeGlobals.require});`
1292
1292
  ])
1293
1293
  : Template.asString([
1294
- "__webpack_modules__[moduleId](module, module.exports, __webpack_require__);"
1294
+ `__webpack_modules__[moduleId](module, module.exports, ${RuntimeGlobals.require});`
1295
1295
  ]);
1296
1296
  const needModuleId = runtimeRequirements.has(RuntimeGlobals.moduleId);
1297
1297
  const needModuleLoaded = runtimeRequirements.has(