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
@@ -25,11 +25,18 @@ const HarmonyExportDependencyParserPlugin = require("./HarmonyExportDependencyPa
25
25
  const HarmonyImportDependencyParserPlugin = require("./HarmonyImportDependencyParserPlugin");
26
26
  const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlugin");
27
27
 
28
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
28
29
  /** @typedef {import("../Compiler")} Compiler */
30
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
29
31
 
30
32
  const PLUGIN_NAME = "HarmonyModulesPlugin";
31
33
 
34
+ /** @typedef {{ topLevelAwait?: boolean }} HarmonyModulesPluginOptions */
35
+
32
36
  class HarmonyModulesPlugin {
37
+ /**
38
+ * @param {HarmonyModulesPluginOptions} options options
39
+ */
33
40
  constructor(options) {
34
41
  this.options = options;
35
42
  }
@@ -113,6 +120,11 @@ class HarmonyModulesPlugin {
113
120
  new HarmonyAcceptImportDependency.Template()
114
121
  );
115
122
 
123
+ /**
124
+ * @param {Parser} parser parser parser
125
+ * @param {JavascriptParserOptions} parserOptions parserOptions
126
+ * @returns {void}
127
+ */
116
128
  const handler = (parser, parserOptions) => {
117
129
  // TODO webpack 6: rename harmony to esm or module
118
130
  if (parserOptions.harmony !== undefined && !parserOptions.harmony)
@@ -9,10 +9,16 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ContextDependency = require("./ContextDependency");
10
10
  const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
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 */
14
15
 
15
16
  class ImportContextDependency extends ContextDependency {
17
+ /**
18
+ * @param {TODO} options options
19
+ * @param {Range} range range
20
+ * @param {Range} valueRange value range
21
+ */
16
22
  constructor(options, range, valueRange) {
17
23
  super(options);
18
24
 
@@ -14,6 +14,7 @@ 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("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
19
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
19
20
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
@@ -21,7 +22,7 @@ const ModuleDependency = require("./ModuleDependency");
21
22
  class ImportDependency extends ModuleDependency {
22
23
  /**
23
24
  * @param {string} request the request
24
- * @param {[number, number]} range expression range
25
+ * @param {Range} range expression range
25
26
  * @param {string[][]=} referencedExports list of referenced exports
26
27
  */
27
28
  constructor(request, range, referencedExports) {
@@ -13,11 +13,12 @@ const ImportDependency = require("./ImportDependency");
13
13
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
14
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
15
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
16
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
16
17
 
17
18
  class ImportEagerDependency extends ImportDependency {
18
19
  /**
19
20
  * @param {string} request the request
20
- * @param {[number, number]} range expression range
21
+ * @param {Range} range expression range
21
22
  * @param {string[][]=} referencedExports list of referenced exports
22
23
  */
23
24
  constructor(request, range, referencedExports) {
@@ -11,13 +11,20 @@ const {
11
11
  } = require("../javascript/JavascriptParserHelpers");
12
12
  const ImportMetaContextDependency = require("./ImportMetaContextDependency");
13
13
 
14
- /** @typedef {import("estree").Expression} ExpressionNode */
15
- /** @typedef {import("estree").ObjectExpression} ObjectExpressionNode */
14
+ /** @typedef {import("estree").Expression} Expression */
15
+ /** @typedef {import("estree").ObjectExpression} ObjectExpression */
16
+ /** @typedef {import("estree").Property} Property */
17
+ /** @typedef {import("estree").SourceLocation} SourceLocation */
16
18
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
17
19
  /** @typedef {import("../ContextModule").ContextModuleOptions} ContextModuleOptions */
18
20
  /** @typedef {import("../ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
19
21
  /** @typedef {Pick<ContextModuleOptions, 'mode'|'recursive'|'regExp'|'include'|'exclude'|'chunkName'>&{groupOptions: RawChunkGroupOptions, exports?: ContextModuleOptions["referencedExports"]}} ImportMetaContextOptions */
20
22
 
23
+ /**
24
+ * @param {TODO} prop property
25
+ * @param {string} expect except message
26
+ * @returns {WebpackError} error
27
+ */
21
28
  function createPropertyParseError(prop, expect) {
22
29
  return createError(
23
30
  `Parsing import.meta.webpackContext options failed. Unknown value for property ${JSON.stringify(
@@ -27,6 +34,11 @@ function createPropertyParseError(prop, expect) {
27
34
  );
28
35
  }
29
36
 
37
+ /**
38
+ * @param {string} msg message
39
+ * @param {SourceLocation} loc location
40
+ * @returns {WebpackError} error
41
+ */
30
42
  function createError(msg, loc) {
31
43
  const error = new WebpackError(msg);
32
44
  error.name = "ImportMetaContextError";
@@ -35,6 +47,10 @@ function createError(msg, loc) {
35
47
  }
36
48
 
37
49
  module.exports = class ImportMetaContextDependencyParserPlugin {
50
+ /**
51
+ * @param {JavascriptParser} parser the parser
52
+ * @returns {void}
53
+ */
38
54
  apply(parser) {
39
55
  parser.hooks.evaluateIdentifier
40
56
  .for("import.meta.webpackContext")
@@ -52,7 +68,9 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
52
68
  if (expr.arguments.length < 1 || expr.arguments.length > 2) return;
53
69
  const [directoryNode, optionsNode] = expr.arguments;
54
70
  if (optionsNode && optionsNode.type !== "ObjectExpression") return;
55
- const requestExpr = parser.evaluateExpression(directoryNode);
71
+ const requestExpr = parser.evaluateExpression(
72
+ /** @type {Expression} */ (directoryNode)
73
+ );
56
74
  if (!requestExpr.isString()) return;
57
75
  const request = requestExpr.string;
58
76
  const errors = [];
@@ -71,7 +89,8 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
71
89
  /** @type {ContextModuleOptions["referencedExports"]} */
72
90
  let exports;
73
91
  if (optionsNode) {
74
- for (const prop of optionsNode.properties) {
92
+ for (const prop of /** @type {ObjectExpression} */ (optionsNode)
93
+ .properties) {
75
94
  if (prop.type !== "Property" || prop.key.type !== "Identifier") {
76
95
  errors.push(
77
96
  createError(
@@ -84,7 +103,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
84
103
  switch (prop.key.name) {
85
104
  case "regExp": {
86
105
  const regExpExpr = parser.evaluateExpression(
87
- /** @type {ExpressionNode} */ (prop.value)
106
+ /** @type {Expression} */ (prop.value)
88
107
  );
89
108
  if (!regExpExpr.isRegExp()) {
90
109
  errors.push(createPropertyParseError(prop, "RegExp"));
@@ -95,7 +114,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
95
114
  }
96
115
  case "include": {
97
116
  const regExpExpr = parser.evaluateExpression(
98
- /** @type {ExpressionNode} */ (prop.value)
117
+ /** @type {Expression} */ (prop.value)
99
118
  );
100
119
  if (!regExpExpr.isRegExp()) {
101
120
  errors.push(createPropertyParseError(prop, "RegExp"));
@@ -106,7 +125,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
106
125
  }
107
126
  case "exclude": {
108
127
  const regExpExpr = parser.evaluateExpression(
109
- /** @type {ExpressionNode} */ (prop.value)
128
+ /** @type {Expression} */ (prop.value)
110
129
  );
111
130
  if (!regExpExpr.isRegExp()) {
112
131
  errors.push(createPropertyParseError(prop, "RegExp"));
@@ -117,7 +136,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
117
136
  }
118
137
  case "mode": {
119
138
  const modeExpr = parser.evaluateExpression(
120
- /** @type {ExpressionNode} */ (prop.value)
139
+ /** @type {Expression} */ (prop.value)
121
140
  );
122
141
  if (!modeExpr.isString()) {
123
142
  errors.push(createPropertyParseError(prop, "string"));
@@ -130,7 +149,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
130
149
  }
131
150
  case "chunkName": {
132
151
  const expr = parser.evaluateExpression(
133
- /** @type {ExpressionNode} */ (prop.value)
152
+ /** @type {Expression} */ (prop.value)
134
153
  );
135
154
  if (!expr.isString()) {
136
155
  errors.push(createPropertyParseError(prop, "string"));
@@ -141,7 +160,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
141
160
  }
142
161
  case "exports": {
143
162
  const expr = parser.evaluateExpression(
144
- /** @type {ExpressionNode} */ (prop.value)
163
+ /** @type {Expression} */ (prop.value)
145
164
  );
146
165
  if (expr.isString()) {
147
166
  exports = [[expr.string]];
@@ -176,7 +195,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
176
195
  }
177
196
  case "prefetch": {
178
197
  const expr = parser.evaluateExpression(
179
- /** @type {ExpressionNode} */ (prop.value)
198
+ /** @type {Expression} */ (prop.value)
180
199
  );
181
200
  if (expr.isBoolean()) {
182
201
  groupOptions.prefetchOrder = 0;
@@ -189,7 +208,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
189
208
  }
190
209
  case "preload": {
191
210
  const expr = parser.evaluateExpression(
192
- /** @type {ExpressionNode} */ (prop.value)
211
+ /** @type {Expression} */ (prop.value)
193
212
  );
194
213
  if (expr.isBoolean()) {
195
214
  groupOptions.preloadOrder = 0;
@@ -202,7 +221,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
202
221
  }
203
222
  case "recursive": {
204
223
  const recursiveExpr = parser.evaluateExpression(
205
- /** @type {ExpressionNode} */ (prop.value)
224
+ /** @type {Expression} */ (prop.value)
206
225
  );
207
226
  if (!recursiveExpr.isBoolean()) {
208
227
  errors.push(createPropertyParseError(prop, "boolean"));
@@ -13,8 +13,10 @@ const ContextElementDependency = require("./ContextElementDependency");
13
13
  const ImportMetaContextDependency = require("./ImportMetaContextDependency");
14
14
  const ImportMetaContextDependencyParserPlugin = require("./ImportMetaContextDependencyParserPlugin");
15
15
 
16
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
16
17
  /** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
17
18
  /** @typedef {import("../Compiler")} Compiler */
19
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
18
20
 
19
21
  const PLUGIN_NAME = "ImportMetaContextPlugin";
20
22
 
@@ -41,6 +43,11 @@ class ImportMetaContextPlugin {
41
43
  normalModuleFactory
42
44
  );
43
45
 
46
+ /**
47
+ * @param {Parser} parser parser parser
48
+ * @param {JavascriptParserOptions} parserOptions parserOptions
49
+ * @returns {void}
50
+ */
44
51
  const handler = (parser, parserOptions) => {
45
52
  if (
46
53
  parserOptions.importMetaContext !== undefined &&
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
  const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class ImportMetaHotAcceptDependency extends ModuleDependency {
15
+ /**
16
+ * @param {string} request the request string
17
+ * @param {Range} range location in source code
18
+ */
13
19
  constructor(request, range) {
14
20
  super(request);
15
21
  this.range = range;
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
  const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class ImportMetaHotDeclineDependency extends ModuleDependency {
15
+ /**
16
+ * @param {string} request the request string
17
+ * @param {Range} range location in source code
18
+ */
13
19
  constructor(request, range) {
14
20
  super(request);
15
21
 
@@ -17,6 +17,7 @@ const ImportWeakDependency = require("./ImportWeakDependency");
17
17
  /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
18
18
  /** @typedef {import("../ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
19
19
  /** @typedef {import("../ContextModule").ContextMode} ContextMode */
20
+ /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
20
21
 
21
22
  class ImportParserPlugin {
22
23
  /**
@@ -26,6 +27,10 @@ class ImportParserPlugin {
26
27
  this.options = options;
27
28
  }
28
29
 
30
+ /**
31
+ * @param {JavascriptParser} parser the parser
32
+ * @returns {void}
33
+ */
29
34
  apply(parser) {
30
35
  const exportsFromEnumerable = enumerable =>
31
36
  Array.from(enumerable, e => [e]);
@@ -16,7 +16,9 @@ const ImportEagerDependency = require("./ImportEagerDependency");
16
16
  const ImportParserPlugin = require("./ImportParserPlugin");
17
17
  const ImportWeakDependency = require("./ImportWeakDependency");
18
18
 
19
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
19
20
  /** @typedef {import("../Compiler")} Compiler */
21
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
20
22
 
21
23
  const PLUGIN_NAME = "ImportPlugin";
22
24
 
@@ -66,6 +68,11 @@ class ImportPlugin {
66
68
  new ImportContextDependency.Template()
67
69
  );
68
70
 
71
+ /**
72
+ * @param {Parser} parser parser parser
73
+ * @param {JavascriptParserOptions} parserOptions parserOptions
74
+ * @returns {void}
75
+ */
69
76
  const handler = (parser, parserOptions) => {
70
77
  if (parserOptions.import !== undefined && !parserOptions.import)
71
78
  return;
@@ -13,11 +13,12 @@ const ImportDependency = require("./ImportDependency");
13
13
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
14
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
15
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
16
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
16
17
 
17
18
  class ImportWeakDependency extends ImportDependency {
18
19
  /**
19
20
  * @param {string} request the request
20
- * @param {[number, number]} range expression range
21
+ * @param {Range} range expression range
21
22
  * @param {string[][]=} referencedExports list of referenced exports
22
23
  */
23
24
  constructor(request, range, referencedExports) {
@@ -7,7 +7,14 @@
7
7
 
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
 
10
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
11
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
12
+
10
13
  class LocalModule {
14
+ /**
15
+ * @param {string} name name
16
+ * @param {number} idx index
17
+ */
11
18
  constructor(name, idx) {
12
19
  this.name = name;
13
20
  this.idx = idx;
@@ -18,10 +25,16 @@ class LocalModule {
18
25
  this.used = true;
19
26
  }
20
27
 
28
+ /**
29
+ * @returns {string} variable name
30
+ */
21
31
  variableName() {
22
32
  return "__WEBPACK_LOCAL_MODULE_" + this.idx + "__";
23
33
  }
24
34
 
35
+ /**
36
+ * @param {ObjectSerializerContext} context context
37
+ */
25
38
  serialize(context) {
26
39
  const { write } = context;
27
40
 
@@ -30,6 +43,9 @@ class LocalModule {
30
43
  write(this.used);
31
44
  }
32
45
 
46
+ /**
47
+ * @param {ObjectDeserializerContext} context context
48
+ */
33
49
  deserialize(context) {
34
50
  const { read } = context;
35
51
 
@@ -11,10 +11,17 @@ 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 */
17
+ /** @typedef {import("./LocalModule")} LocalModule */
16
18
 
17
19
  class LocalModuleDependency extends NullDependency {
20
+ /**
21
+ * @param {LocalModule} localModule local module
22
+ * @param {Range} range range
23
+ * @param {boolean} callNew true, when the local module should be called with new
24
+ */
18
25
  constructor(localModule, range, callNew) {
19
26
  super();
20
27
 
@@ -7,6 +7,13 @@
7
7
 
8
8
  const LocalModule = require("./LocalModule");
9
9
 
10
+ /** @typedef {import("../javascript/JavascriptParser").ParserState} ParserState */
11
+
12
+ /**
13
+ * @param {string} parent parent module
14
+ * @param {string} mod module to resolve
15
+ * @returns {string} resolved module
16
+ */
10
17
  const lookup = (parent, mod) => {
11
18
  if (mod.charAt(0) !== ".") return mod;
12
19
 
@@ -26,6 +33,11 @@ const lookup = (parent, mod) => {
26
33
  return path.join("/");
27
34
  };
28
35
 
36
+ /**
37
+ * @param {ParserState} state parser state
38
+ * @param {string} name name
39
+ * @returns {LocalModule} local module
40
+ */
29
41
  exports.addLocalModule = (state, name) => {
30
42
  if (!state.localModules) {
31
43
  state.localModules = [];
@@ -35,6 +47,12 @@ exports.addLocalModule = (state, name) => {
35
47
  return m;
36
48
  };
37
49
 
50
+ /**
51
+ * @param {ParserState} state parser state
52
+ * @param {string} name name
53
+ * @param {string} [namedModule] named module
54
+ * @returns {LocalModule | null} local module or null
55
+ */
38
56
  exports.getLocalModule = (state, name, namedModule) => {
39
57
  if (!state.localModules) return null;
40
58
  if (namedModule) {
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
  const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class ModuleHotAcceptDependency extends ModuleDependency {
15
+ /**
16
+ * @param {string} request the request string
17
+ * @param {Range} range location in source code
18
+ */
13
19
  constructor(request, range) {
14
20
  super(request);
15
21
  this.range = range;
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
  const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class ModuleHotDeclineDependency extends ModuleDependency {
15
+ /**
16
+ * @param {string} request the request string
17
+ * @param {Range} range location in source code
18
+ */
13
19
  constructor(request, range) {
14
20
  super(request);
15
21
 
@@ -8,6 +8,9 @@
8
8
  const ModuleDependency = require("./ModuleDependency");
9
9
 
10
10
  class PrefetchDependency extends ModuleDependency {
11
+ /**
12
+ * @param {string} request the request string
13
+ */
11
14
  constructor(request) {
12
15
  super(request);
13
16
  }
@@ -18,6 +18,7 @@ const ModuleDependency = require("./ModuleDependency");
18
18
  /** @typedef {import("../DependencyTemplates")} DependencyTemplates */
19
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
20
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
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 */
@@ -37,7 +38,7 @@ class ProvidedDependency extends ModuleDependency {
37
38
  * @param {string} request request
38
39
  * @param {string} identifier identifier
39
40
  * @param {string[]} ids ids
40
- * @param {[number, number]} range range
41
+ * @param {Range} range range
41
42
  */
42
43
  constructor(request, identifier, ids, range) {
43
44
  super(request);
@@ -17,13 +17,14 @@ const NullDependency = require("./NullDependency");
17
17
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
18
18
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
19
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
20
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
20
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
21
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
22
23
  /** @typedef {import("../util/Hash")} Hash */
23
24
 
24
25
  class PureExpressionDependency extends NullDependency {
25
26
  /**
26
- * @param {[number, number]} range the source range
27
+ * @param {Range} range the source range
27
28
  */
28
29
  constructor(range) {
29
30
  super();
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ContextDependency = require("./ContextDependency");
10
10
  const ModuleDependencyTemplateAsRequireId = require("./ModuleDependencyTemplateAsRequireId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class RequireContextDependency extends ContextDependency {
15
+ /**
16
+ * @param {TODO} options options
17
+ * @param {Range} range range
18
+ */
13
19
  constructor(options, range) {
14
20
  super(options);
15
21
 
@@ -14,8 +14,10 @@ const ContextElementDependency = require("./ContextElementDependency");
14
14
  const RequireContextDependency = require("./RequireContextDependency");
15
15
  const RequireContextDependencyParserPlugin = require("./RequireContextDependencyParserPlugin");
16
16
 
17
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
17
18
  /** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
18
19
  /** @typedef {import("../Compiler")} Compiler */
20
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
19
21
 
20
22
  /** @type {ResolveOptions} */
21
23
  const EMPTY_RESOLVE_OPTIONS = {};
@@ -46,6 +48,11 @@ class RequireContextPlugin {
46
48
  normalModuleFactory
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 (
51
58
  parserOptions.requireContext !== undefined &&
@@ -9,6 +9,10 @@ const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
11
  class RequireEnsureDependenciesBlock extends AsyncDependenciesBlock {
12
+ /**
13
+ * @param {TODO} chunkName chunk name
14
+ * @param {TODO} loc location info
15
+ */
12
16
  constructor(chunkName, loc) {
13
17
  super(chunkName, loc, null);
14
18
  }
@@ -13,10 +13,16 @@ const NullDependency = require("./NullDependency");
13
13
  /** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
14
14
  /** @typedef {import("../Dependency")} Dependency */
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
16
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
17
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
18
19
 
19
20
  class RequireEnsureDependency extends NullDependency {
21
+ /**
22
+ * @param {Range} range range
23
+ * @param {Range} contentRange content range
24
+ * @param {Range} errorHandlerRange error handler range
25
+ */
20
26
  constructor(range, contentRange, errorHandlerRange) {
21
27
  super();
22
28
 
@@ -93,14 +99,14 @@ RequireEnsureDependency.Template = class RequireEnsureDependencyTemplate extends
93
99
  source.replace(
94
100
  contentRange[1],
95
101
  errorHandlerRange[0] - 1,
96
- ").bind(null, __webpack_require__))['catch']("
102
+ `).bind(null, ${RuntimeGlobals.require}))['catch'](`
97
103
  );
98
104
  source.replace(errorHandlerRange[1], range[1] - 1, ")");
99
105
  } else {
100
106
  source.replace(
101
107
  contentRange[1],
102
108
  range[1] - 1,
103
- `).bind(null, __webpack_require__))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`
109
+ `).bind(null, ${RuntimeGlobals.require}))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`
104
110
  );
105
111
  }
106
112
  }
@@ -10,6 +10,9 @@ const ModuleDependency = require("./ModuleDependency");
10
10
  const NullDependency = require("./NullDependency");
11
11
 
12
12
  class RequireEnsureItemDependency extends ModuleDependency {
13
+ /**
14
+ * @param {string} request the request string
15
+ */
13
16
  constructor(request) {
14
17
  super(request);
15
18
  }
@@ -19,9 +19,18 @@ const {
19
19
  toConstantDependency
20
20
  } = require("../javascript/JavascriptParserHelpers");
21
21
 
22
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
23
+ /** @typedef {import("../Compiler")} Compiler */
24
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
25
+
22
26
  const PLUGIN_NAME = "RequireEnsurePlugin";
23
27
 
24
28
  class RequireEnsurePlugin {
29
+ /**
30
+ * Apply the plugin
31
+ * @param {Compiler} compiler the compiler instance
32
+ * @returns {void}
33
+ */
25
34
  apply(compiler) {
26
35
  compiler.hooks.compilation.tap(
27
36
  PLUGIN_NAME,
@@ -40,6 +49,11 @@ class RequireEnsurePlugin {
40
49
  new RequireEnsureDependency.Template()
41
50
  );
42
51
 
52
+ /**
53
+ * @param {Parser} parser parser parser
54
+ * @param {JavascriptParserOptions} parserOptions parserOptions
55
+ * @returns {void}
56
+ */
43
57
  const handler = (parser, parserOptions) => {
44
58
  if (
45
59
  parserOptions.requireEnsure !== undefined &&