webpack 5.83.1 → 5.85.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 (232) hide show
  1. package/README.md +2 -2
  2. package/lib/AsyncDependenciesBlock.js +2 -2
  3. package/lib/AutomaticPrefetchPlugin.js +1 -0
  4. package/lib/BannerPlugin.js +4 -0
  5. package/lib/CacheFacade.js +4 -0
  6. package/lib/ChunkGroup.js +5 -1
  7. package/lib/CleanPlugin.js +30 -7
  8. package/lib/CompatibilityPlugin.js +4 -3
  9. package/lib/Compilation.js +3 -3
  10. package/lib/Compiler.js +1 -1
  11. package/lib/ContextModule.js +3 -3
  12. package/lib/ContextModuleFactory.js +1 -1
  13. package/lib/DefinePlugin.js +11 -2
  14. package/lib/DllEntryPlugin.js +5 -0
  15. package/lib/DllModule.js +1 -1
  16. package/lib/DllModuleFactory.js +1 -1
  17. package/lib/EvalSourceMapDevToolPlugin.js +3 -1
  18. package/lib/HookWebpackError.js +1 -1
  19. package/lib/IgnoreErrorModuleFactory.js +1 -1
  20. package/lib/MainTemplate.js +2 -2
  21. package/lib/Module.js +21 -9
  22. package/lib/ModuleFactory.js +1 -1
  23. package/lib/ModuleTypeConstants.js +2 -1
  24. package/lib/NormalModuleFactory.js +1 -1
  25. package/lib/NormalModuleReplacementPlugin.js +4 -2
  26. package/lib/NullFactory.js +1 -1
  27. package/lib/PrefetchPlugin.js +4 -0
  28. package/lib/RecordIdsPlugin.js +4 -4
  29. package/lib/RuntimeModule.js +5 -5
  30. package/lib/RuntimePlugin.js +4 -0
  31. package/lib/RuntimeTemplate.js +7 -7
  32. package/lib/SelfModuleFactory.js +12 -0
  33. package/lib/SourceMapDevToolPlugin.js +9 -2
  34. package/lib/Template.js +3 -2
  35. package/lib/UseStrictPlugin.js +4 -0
  36. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  37. package/lib/WatchIgnorePlugin.js +4 -0
  38. package/lib/WebpackOptionsApply.js +2 -1
  39. package/lib/asset/AssetGenerator.js +7 -2
  40. package/lib/asset/AssetModulesPlugin.js +7 -1
  41. package/lib/asset/AssetParser.js +4 -1
  42. package/lib/asset/RawDataUrlModule.js +5 -3
  43. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  44. package/lib/cache/PackFileCacheStrategy.js +7 -1
  45. package/lib/config/browserslistTargetHandler.js +3 -3
  46. package/lib/config/defaults.js +240 -73
  47. package/lib/config/normalization.js +104 -71
  48. package/lib/config/target.js +37 -10
  49. package/lib/container/ContainerEntryModule.js +4 -0
  50. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  51. package/lib/container/FallbackDependency.js +7 -0
  52. package/lib/container/FallbackItemDependency.js +3 -0
  53. package/lib/container/FallbackModule.js +5 -1
  54. package/lib/container/FallbackModuleFactory.js +1 -1
  55. package/lib/container/RemoteModule.js +4 -0
  56. package/lib/container/RemoteRuntimeModule.js +2 -1
  57. package/lib/container/RemoteToExternalDependency.js +3 -0
  58. package/lib/css/CssParser.js +168 -73
  59. package/lib/debug/ProfilingPlugin.js +11 -0
  60. package/lib/dependencies/AMDDefineDependency.js +12 -6
  61. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +8 -2
  62. package/lib/dependencies/AMDPlugin.js +7 -0
  63. package/lib/dependencies/AMDRequireArrayDependency.js +5 -0
  64. package/lib/dependencies/AMDRequireContextDependency.js +6 -0
  65. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  66. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  67. package/lib/dependencies/AMDRequireDependency.js +8 -1
  68. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  69. package/lib/dependencies/CachedConstDependency.js +6 -0
  70. package/lib/dependencies/CommonJsExportRequireDependency.js +11 -0
  71. package/lib/dependencies/CommonJsExportsDependency.js +8 -0
  72. package/lib/dependencies/CommonJsExportsParserPlugin.js +2 -2
  73. package/lib/dependencies/CommonJsFullRequireDependency.js +2 -1
  74. package/lib/dependencies/CommonJsPlugin.js +28 -12
  75. package/lib/dependencies/CommonJsRequireContextDependency.js +8 -0
  76. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  77. package/lib/dependencies/CommonJsSelfReferenceDependency.js +8 -0
  78. package/lib/dependencies/ConstDependency.js +2 -1
  79. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  80. package/lib/dependencies/CreateScriptUrlDependency.js +2 -1
  81. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  82. package/lib/dependencies/CssImportDependency.js +2 -1
  83. package/lib/dependencies/CssLocalIdentifierDependency.js +2 -1
  84. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  85. package/lib/dependencies/CssUrlDependency.js +12 -2
  86. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  87. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  88. package/lib/dependencies/HarmonyAcceptDependency.js +2 -1
  89. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  90. package/lib/dependencies/HarmonyDetectionParserPlugin.js +16 -0
  91. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +12 -1
  92. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +3 -0
  93. package/lib/dependencies/HarmonyExportExpressionDependency.js +8 -0
  94. package/lib/dependencies/HarmonyExportHeaderDependency.js +5 -0
  95. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +2 -1
  96. package/lib/dependencies/HarmonyExportSpecifierDependency.js +4 -0
  97. package/lib/dependencies/HarmonyExports.js +3 -1
  98. package/lib/dependencies/HarmonyImportDependency.js +2 -1
  99. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +18 -5
  100. package/lib/dependencies/HarmonyImportSideEffectDependency.js +6 -0
  101. package/lib/dependencies/HarmonyImportSpecifierDependency.js +86 -6
  102. package/lib/dependencies/HarmonyModulesPlugin.js +12 -0
  103. package/lib/dependencies/ImportContextDependency.js +6 -0
  104. package/lib/dependencies/ImportDependency.js +2 -1
  105. package/lib/dependencies/ImportEagerDependency.js +2 -1
  106. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +32 -13
  107. package/lib/dependencies/ImportMetaContextPlugin.js +7 -0
  108. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  109. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  110. package/lib/dependencies/ImportParserPlugin.js +5 -0
  111. package/lib/dependencies/ImportPlugin.js +7 -0
  112. package/lib/dependencies/ImportWeakDependency.js +2 -1
  113. package/lib/dependencies/LocalModule.js +16 -0
  114. package/lib/dependencies/LocalModuleDependency.js +7 -0
  115. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  116. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  117. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  118. package/lib/dependencies/PrefetchDependency.js +3 -0
  119. package/lib/dependencies/ProvidedDependency.js +2 -1
  120. package/lib/dependencies/PureExpressionDependency.js +2 -1
  121. package/lib/dependencies/RequireContextDependency.js +6 -0
  122. package/lib/dependencies/RequireContextPlugin.js +7 -0
  123. package/lib/dependencies/RequireEnsureDependenciesBlock.js +4 -0
  124. package/lib/dependencies/RequireEnsureDependency.js +8 -2
  125. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  126. package/lib/dependencies/RequireEnsurePlugin.js +14 -0
  127. package/lib/dependencies/RequireHeaderDependency.js +5 -1
  128. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  129. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  130. package/lib/dependencies/RequireIncludePlugin.js +14 -0
  131. package/lib/dependencies/RequireResolveContextDependency.js +8 -0
  132. package/lib/dependencies/RequireResolveDependency.js +6 -0
  133. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -0
  134. package/lib/dependencies/SystemPlugin.js +10 -1
  135. package/lib/dependencies/URLDependency.js +3 -2
  136. package/lib/dependencies/URLPlugin.js +7 -5
  137. package/lib/dependencies/UnsupportedDependency.js +5 -0
  138. package/lib/dependencies/WebAssemblyExportImportedDependency.js +6 -0
  139. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  140. package/lib/dependencies/WorkerDependency.js +2 -1
  141. package/lib/dependencies/WorkerPlugin.js +30 -3
  142. package/lib/dependencies/getFunctionExpression.js +7 -0
  143. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -1
  144. package/lib/esm/ModuleChunkFormatPlugin.js +15 -7
  145. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  146. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +14 -9
  147. package/lib/hmr/LazyCompilationPlugin.js +1 -1
  148. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  149. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  150. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  151. package/lib/ids/HashedModuleIdsPlugin.js +8 -1
  152. package/lib/ids/IdHelpers.js +6 -0
  153. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  154. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  155. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  156. package/lib/ids/SyncModuleIdsPlugin.js +2 -2
  157. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  158. package/lib/javascript/BasicEvaluatedExpression.js +11 -1
  159. package/lib/javascript/ChunkHelpers.js +2 -2
  160. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  161. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  162. package/lib/javascript/JavascriptModulesPlugin.js +36 -31
  163. package/lib/javascript/JavascriptParser.js +586 -192
  164. package/lib/javascript/StartupHelpers.js +2 -2
  165. package/lib/json/JsonGenerator.js +7 -5
  166. package/lib/json/JsonParser.js +1 -1
  167. package/lib/library/AbstractLibraryPlugin.js +4 -0
  168. package/lib/library/AssignLibraryPlugin.js +6 -4
  169. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  170. package/lib/library/ModuleLibraryPlugin.js +6 -3
  171. package/lib/library/SystemLibraryPlugin.js +1 -0
  172. package/lib/library/UmdLibraryPlugin.js +4 -0
  173. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  174. package/lib/node/NodeTemplatePlugin.js +10 -2
  175. package/lib/node/NodeWatchFileSystem.js +1 -1
  176. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +6 -3
  177. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +8 -0
  178. package/lib/node/ReadFileCompileWasmPlugin.js +19 -2
  179. package/lib/node/RequireChunkLoadingRuntimeModule.js +6 -3
  180. package/lib/optimize/ConcatenatedModule.js +1 -1
  181. package/lib/optimize/InnerGraphPlugin.js +11 -4
  182. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  183. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -1
  184. package/lib/runtime/BaseUriRuntimeModule.js +5 -1
  185. package/lib/runtime/EnsureChunkRuntimeModule.js +3 -0
  186. package/lib/runtime/GetChunkFilenameRuntimeModule.js +35 -16
  187. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  188. package/lib/runtime/LoadScriptRuntimeModule.js +1 -1
  189. package/lib/runtime/PublicPathRuntimeModule.js +5 -0
  190. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  191. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +4 -1
  192. package/lib/runtime/StartupEntrypointRuntimeModule.js +8 -5
  193. package/lib/serialization/ArraySerializer.js +22 -6
  194. package/lib/serialization/BinaryMiddleware.js +21 -0
  195. package/lib/serialization/DateObjectSerializer.js +15 -4
  196. package/lib/serialization/ErrorObjectSerializer.js +20 -8
  197. package/lib/serialization/FileMiddleware.js +17 -0
  198. package/lib/serialization/MapObjectSerializer.js +24 -8
  199. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  200. package/lib/serialization/ObjectMiddleware.js +23 -0
  201. package/lib/serialization/PlainObjectSerializer.js +23 -12
  202. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  203. package/lib/serialization/SetObjectSerializer.js +21 -6
  204. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  205. package/lib/sharing/ShareRuntimeModule.js +1 -1
  206. package/lib/util/createHash.js +1 -1
  207. package/lib/util/makeSerializable.js +7 -0
  208. package/lib/util/serialization.js +10 -0
  209. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -0
  210. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  211. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +13 -3
  212. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +19 -2
  213. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -0
  214. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +25 -1
  215. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +14 -5
  216. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -5
  217. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  218. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +12 -1
  219. package/lib/wasm-sync/WebAssemblyParser.js +9 -2
  220. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  221. package/lib/web/FetchCompileAsyncWasmPlugin.js +9 -0
  222. package/lib/web/FetchCompileWasmPlugin.js +19 -2
  223. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  224. package/lib/web/JsonpChunkLoadingRuntimeModule.js +4 -1
  225. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  226. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -2
  227. package/package.json +3 -3
  228. package/schemas/WebpackOptions.check.js +1 -1
  229. package/schemas/WebpackOptions.json +12 -0
  230. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  231. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  232. package/types.d.ts +655 -290
@@ -22,15 +22,26 @@ const processExportInfo = require("./processExportInfo");
22
22
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
23
23
  /** @typedef {import("../Module")} Module */
24
24
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
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/runtime").RuntimeSpec} RuntimeSpec */
29
+ /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
28
30
 
29
31
  const idsSymbol = Symbol("CommonJsExportRequireDependency.ids");
30
32
 
31
33
  const EMPTY_OBJECT = {};
32
34
 
33
35
  class CommonJsExportRequireDependency extends ModuleDependency {
36
+ /**
37
+ * @param {Range} range range
38
+ * @param {Range} valueRange value range
39
+ * @param {CommonJSDependencyBaseKeywords} base base
40
+ * @param {string[]} names names
41
+ * @param {string} request request
42
+ * @param {string[]} ids ids
43
+ * @param {boolean} resultUsed true, when the result is used
44
+ */
34
45
  constructor(range, valueRange, base, names, request, ids, resultUsed) {
35
46
  super(request);
36
47
  this.range = range;
@@ -16,12 +16,20 @@ const NullDependency = require("./NullDependency");
16
16
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
17
17
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
18
18
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
19
20
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
20
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
22
+ /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
21
23
 
22
24
  const EMPTY_OBJECT = {};
23
25
 
24
26
  class CommonJsExportsDependency extends NullDependency {
27
+ /**
28
+ * @param {Range} range range
29
+ * @param {Range} valueRange value range
30
+ * @param {CommonJSDependencyBaseKeywords} base base
31
+ * @param {string[]} names names
32
+ */
25
33
  constructor(range, valueRange, base, names) {
26
34
  super();
27
35
  this.range = range;
@@ -18,7 +18,6 @@ const ModuleDecoratorDependency = require("./ModuleDecoratorDependency");
18
18
 
19
19
  /** @typedef {import("estree").AssignmentExpression} AssignmentExpression */
20
20
  /** @typedef {import("estree").CallExpression} CallExpression */
21
- /** @typedef {import("estree").Expression} ExpressionNode */
22
21
  /** @typedef {import("estree").Expression} Expression */
23
22
  /** @typedef {import("estree").Super} Super */
24
23
 
@@ -95,7 +94,7 @@ const isFalsyLiteral = expr => {
95
94
 
96
95
  /**
97
96
  * @param {JavascriptParser} parser the parser
98
- * @param {ExpressionNode} expr expression
97
+ * @param {Expression} expr expression
99
98
  * @returns {{ argument: BasicEvaluatedExpression, ids: string[] } | undefined} parsed call
100
99
  */
101
100
  const parseRequireCall = (parser, expr) => {
@@ -134,6 +133,7 @@ class CommonJsExportsParserPlugin {
134
133
 
135
134
  /**
136
135
  * @param {JavascriptParser} parser the parser
136
+ * @returns {void}
137
137
  */
138
138
  apply(parser) {
139
139
  const enableStructuredExports = () => {
@@ -16,6 +16,7 @@ const ModuleDependency = require("./ModuleDependency");
16
16
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
17
17
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
18
18
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
19
20
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
20
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
21
22
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
@@ -23,7 +24,7 @@ const ModuleDependency = require("./ModuleDependency");
23
24
  class CommonJsFullRequireDependency extends ModuleDependency {
24
25
  /**
25
26
  * @param {string} request the request string
26
- * @param {[number, number]} range location in source code
27
+ * @param {Range} range location in source code
27
28
  * @param {string[]} names accessed properties on module
28
29
  */
29
30
  constructor(request, range, names) {
@@ -34,9 +34,18 @@ const {
34
34
  } = require("../javascript/JavascriptParserHelpers");
35
35
  const CommonJsExportRequireDependency = require("./CommonJsExportRequireDependency");
36
36
 
37
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
38
+ /** @typedef {import("../Compiler")} Compiler */
39
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
40
+
37
41
  const PLUGIN_NAME = "CommonJsPlugin";
38
42
 
39
43
  class CommonJsPlugin {
44
+ /**
45
+ * Apply the plugin
46
+ * @param {Compiler} compiler the compiler instance
47
+ * @returns {void}
48
+ */
40
49
  apply(compiler) {
41
50
  compiler.hooks.compilation.tap(
42
51
  PLUGIN_NAME,
@@ -162,6 +171,11 @@ class CommonJsPlugin {
162
171
  );
163
172
  });
164
173
 
174
+ /**
175
+ * @param {Parser} parser parser parser
176
+ * @param {JavascriptParserOptions} parserOptions parserOptions
177
+ * @returns {void}
178
+ */
165
179
  const handler = (parser, parserOptions) => {
166
180
  if (parserOptions.commonjs !== undefined && !parserOptions.commonjs)
167
181
  return;
@@ -183,10 +197,10 @@ class CommonJsPlugin {
183
197
  )
184
198
  );
185
199
  parser.hooks.expression
186
- .for("module.loaded")
200
+ .for(RuntimeGlobals.moduleLoaded)
187
201
  .tap(PLUGIN_NAME, expr => {
188
202
  parser.state.module.buildInfo.moduleConcatenationBailout =
189
- "module.loaded";
203
+ RuntimeGlobals.moduleLoaded;
190
204
  const dep = new RuntimeRequirementsDependency([
191
205
  RuntimeGlobals.moduleLoaded
192
206
  ]);
@@ -195,16 +209,18 @@ class CommonJsPlugin {
195
209
  return true;
196
210
  });
197
211
 
198
- parser.hooks.expression.for("module.id").tap(PLUGIN_NAME, expr => {
199
- parser.state.module.buildInfo.moduleConcatenationBailout =
200
- "module.id";
201
- const dep = new RuntimeRequirementsDependency([
202
- RuntimeGlobals.moduleId
203
- ]);
204
- dep.loc = expr.loc;
205
- parser.state.module.addPresentationalDependency(dep);
206
- return true;
207
- });
212
+ parser.hooks.expression
213
+ .for(RuntimeGlobals.moduleId)
214
+ .tap(PLUGIN_NAME, expr => {
215
+ parser.state.module.buildInfo.moduleConcatenationBailout =
216
+ RuntimeGlobals.moduleId;
217
+ const dep = new RuntimeRequirementsDependency([
218
+ RuntimeGlobals.moduleId
219
+ ]);
220
+ dep.loc = expr.loc;
221
+ parser.state.module.addPresentationalDependency(dep);
222
+ return true;
223
+ });
208
224
 
209
225
  parser.hooks.evaluateIdentifier.for("module.hot").tap(
210
226
  PLUGIN_NAME,
@@ -9,10 +9,18 @@ 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 CommonJsRequireContextDependency extends ContextDependency {
17
+ /**
18
+ * @param {TODO} options options for the context module
19
+ * @param {Range} range location in source code
20
+ * @param {Range} valueRange location of the require call
21
+ * @param {boolean} inShorthand true, if the require call is in shorthand notation
22
+ * @param {string} context context
23
+ */
16
24
  constructor(options, range, valueRange, inShorthand, context) {
17
25
  super(options, context);
18
26
 
@@ -9,7 +9,14 @@ 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 CommonJsRequireDependency extends ModuleDependency {
15
+ /**
16
+ * @param {string} request request
17
+ * @param {Range=} range location in source code
18
+ * @param {string=} context request context
19
+ */
13
20
  constructor(request, range, context) {
14
21
  super(request);
15
22
  this.range = range;
@@ -17,11 +17,19 @@ const NullDependency = require("./NullDependency");
17
17
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
18
18
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
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/runtime").RuntimeSpec} RuntimeSpec */
24
+ /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
23
25
 
24
26
  class CommonJsSelfReferenceDependency extends NullDependency {
27
+ /**
28
+ * @param {Range} range range
29
+ * @param {CommonJSDependencyBaseKeywords} base base
30
+ * @param {string[]} names names
31
+ * @param {boolean} call is a call
32
+ */
25
33
  constructor(range, base, names, call) {
26
34
  super();
27
35
  this.range = range;
@@ -15,6 +15,7 @@ const NullDependency = require("./NullDependency");
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
17
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
18
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
18
19
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
20
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
21
  /** @typedef {import("../util/Hash")} Hash */
@@ -22,7 +23,7 @@ const NullDependency = require("./NullDependency");
22
23
  class ConstDependency extends NullDependency {
23
24
  /**
24
25
  * @param {string} expression the expression
25
- * @param {number|[number, number]} range the source range
26
+ * @param {number|Range} range the source range
26
27
  * @param {string[]=} runtimeRequirements runtime requirements
27
28
  */
28
29
  constructor(expression, range, runtimeRequirements) {
@@ -38,12 +38,12 @@ const splitContextFromPrefix = prefix => {
38
38
  };
39
39
 
40
40
  /** @typedef {Partial<Omit<ContextDependencyOptions, "resource">>} PartialContextDependencyOptions */
41
-
42
- /** @typedef {{ new(options: ContextDependencyOptions, range: [number, number], valueRange: [number, number], ...args: any[]): ContextDependency }} ContextDependencyConstructor */
41
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
42
+ /** @typedef {{ new(options: ContextDependencyOptions, range: Range, valueRange: [number, number], ...args: any[]): ContextDependency }} ContextDependencyConstructor */
43
43
 
44
44
  /**
45
45
  * @param {ContextDependencyConstructor} Dep the Dependency class
46
- * @param {[number, number]} range source range
46
+ * @param {Range} range source range
47
47
  * @param {BasicEvaluatedExpression} param context param
48
48
  * @param {EsTreeNode} expr expr
49
49
  * @param {Pick<JavascriptParserOptions, `${"expr"|"wrapped"}Context${"Critical"|"Recursive"|"RegExp"}` | "exprContextRequest">} options options for context creation
@@ -12,12 +12,13 @@ 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 CreateScriptUrlDependency extends NullDependency {
19
20
  /**
20
- * @param {[number, number]} range range
21
+ * @param {Range} range range
21
22
  */
22
23
  constructor(range) {
23
24
  super();
@@ -9,6 +9,9 @@ const WebpackError = require("../WebpackError");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
11
  class CriticalDependencyWarning extends WebpackError {
12
+ /**
13
+ * @param {string} message message
14
+ */
12
15
  constructor(message) {
13
16
  super();
14
17
 
@@ -17,6 +17,7 @@ const ModuleDependency = require("./ModuleDependency");
17
17
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
18
18
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
19
19
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
20
+ /** @typedef {import("../css/CssParser").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 */
@@ -29,7 +30,7 @@ class CssImportDependency extends ModuleDependency {
29
30
  * \@import url("landscape.css") layer(forms) screen and (orientation: landscape) screen and (orientation: landscape);
30
31
  *
31
32
  * @param {string} request request
32
- * @param {[number, number]} range range of the argument
33
+ * @param {Range} range range of the argument
33
34
  * @param {string | undefined} layer layer
34
35
  * @param {string | undefined} supports list of supports conditions
35
36
  * @param {string | undefined} media list of media conditions
@@ -13,13 +13,14 @@ const NullDependency = require("./NullDependency");
13
13
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
14
14
  /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
15
15
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
16
+ /** @typedef {import("../css/CssParser").Range} Range */
16
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
17
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
18
19
 
19
20
  class CssLocalIdentifierDependency extends NullDependency {
20
21
  /**
21
22
  * @param {string} name name
22
- * @param {[number, number]} range range
23
+ * @param {Range} range range
23
24
  * @param {string=} prefix prefix
24
25
  */
25
26
  constructor(name, range, prefix = "") {
@@ -14,6 +14,7 @@ const CssLocalIdentifierDependency = require("./CssLocalIdentifierDependency");
14
14
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
15
15
  /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
+ /** @typedef {import("../css/CssParser").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 CssLocalIdentifierDependency = require("./CssLocalIdentifierDependency");
21
22
  class CssSelfLocalIdentifierDependency extends CssLocalIdentifierDependency {
22
23
  /**
23
24
  * @param {string} name name
24
- * @param {[number, number]} range range
25
+ * @param {Range} range range
25
26
  * @param {string=} prefix prefix
26
27
  * @param {Set<string>=} declaredSet set of declared names (will only be active when in declared set)
27
28
  */
@@ -18,6 +18,7 @@ const ModuleDependency = require("./ModuleDependency");
18
18
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
19
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
20
20
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
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 */
@@ -28,7 +29,7 @@ const getRawDataUrlModule = memoize(() => require("../asset/RawDataUrlModule"));
28
29
  class CssUrlDependency extends ModuleDependency {
29
30
  /**
30
31
  * @param {string} request request
31
- * @param {[number, number]} range range of the argument
32
+ * @param {Range} range range of the argument
32
33
  * @param {"string" | "url"} urlType dependency type e.g. url() or string
33
34
  */
34
35
  constructor(request, range, urlType) {
@@ -73,6 +74,10 @@ class CssUrlDependency extends ModuleDependency {
73
74
  }
74
75
  }
75
76
 
77
+ /**
78
+ * @param {string} str string
79
+ * @returns {string} string in quotes if needed
80
+ */
76
81
  const cssEscapeString = str => {
77
82
  let countWhiteOrBracket = 0;
78
83
  let countQuotation = 0;
@@ -120,6 +125,7 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
120
125
  ) {
121
126
  const dep = /** @type {CssUrlDependency} */ (dependency);
122
127
 
128
+ /** @type {string | undefined} */
123
129
  let newValue;
124
130
 
125
131
  switch (dep.urlType) {
@@ -143,7 +149,11 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
143
149
  break;
144
150
  }
145
151
 
146
- source.replace(dep.range[0], dep.range[1] - 1, newValue);
152
+ source.replace(
153
+ dep.range[0],
154
+ dep.range[1] - 1,
155
+ /** @type {string} */ (newValue)
156
+ );
147
157
  }
148
158
  };
149
159
 
@@ -9,6 +9,9 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
 
11
11
  class DelegatedSourceDependency extends ModuleDependency {
12
+ /**
13
+ * @param {string} request the request string
14
+ */
12
15
  constructor(request) {
13
16
  super(request);
14
17
  }
@@ -16,6 +16,7 @@ const NullDependency = require("./NullDependency");
16
16
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
17
17
  /** @typedef {import("../Module")} Module */
18
18
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
19
20
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
20
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
21
22
  /** @typedef {import("../util/Hash")} Hash */
@@ -84,6 +85,11 @@ const getProperty = (moduleGraph, module, exportName, property, runtime) => {
84
85
  };
85
86
 
86
87
  class ExportsInfoDependency extends NullDependency {
88
+ /**
89
+ * @param {Range} range range
90
+ * @param {TODO} exportName export name
91
+ * @param {string | null} property property
92
+ */
87
93
  constructor(range, exportName, property) {
88
94
  super();
89
95
  this.range = range;
@@ -13,13 +13,14 @@ const NullDependency = require("./NullDependency");
13
13
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
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
  /** @typedef {import("./HarmonyAcceptImportDependency")} HarmonyAcceptImportDependency */
19
20
 
20
21
  class HarmonyAcceptDependency extends NullDependency {
21
22
  /**
22
- * @param {[number, number]} range expression range
23
+ * @param {Range} range expression range
23
24
  * @param {HarmonyAcceptImportDependency[]} dependencies import dependencies
24
25
  * @param {boolean} hasCallback true, if the range wraps an existing callback
25
26
  */
@@ -14,6 +14,9 @@ const NullDependency = require("./NullDependency");
14
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
15
 
16
16
  class HarmonyAcceptImportDependency extends HarmonyImportDependency {
17
+ /**
18
+ * @param {string} request the request string
19
+ */
17
20
  constructor(request) {
18
21
  super(request, NaN);
19
22
  this.weak = true;
@@ -10,12 +10,22 @@ const DynamicExports = require("./DynamicExports");
10
10
  const HarmonyCompatibilityDependency = require("./HarmonyCompatibilityDependency");
11
11
  const HarmonyExports = require("./HarmonyExports");
12
12
 
13
+ /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
14
+ /** @typedef {import("./HarmonyModulesPlugin").HarmonyModulesPluginOptions} HarmonyModulesPluginOptions */
15
+
13
16
  module.exports = class HarmonyDetectionParserPlugin {
17
+ /**
18
+ * @param {HarmonyModulesPluginOptions} options options
19
+ */
14
20
  constructor(options) {
15
21
  const { topLevelAwait = false } = options || {};
16
22
  this.topLevelAwait = topLevelAwait;
17
23
  }
18
24
 
25
+ /**
26
+ * @param {JavascriptParser} parser the parser
27
+ * @returns {void}
28
+ */
19
29
  apply(parser) {
20
30
  parser.hooks.program.tap("HarmonyDetectionParserPlugin", ast => {
21
31
  const isStrictHarmony =
@@ -65,12 +75,18 @@ module.exports = class HarmonyDetectionParserPlugin {
65
75
  module.buildMeta.async = true;
66
76
  });
67
77
 
78
+ /**
79
+ * @returns {boolean | undefined} true if in harmony
80
+ */
68
81
  const skipInHarmony = () => {
69
82
  if (HarmonyExports.isEnabled(parser.state)) {
70
83
  return true;
71
84
  }
72
85
  };
73
86
 
87
+ /**
88
+ * @returns {null | undefined} null if in harmony
89
+ */
74
90
  const nullInHarmony = () => {
75
91
  if (HarmonyExports.isEnabled(parser.state)) {
76
92
  return null;
@@ -12,6 +12,8 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
12
12
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
13
13
  /** @typedef {import("../Dependency")} Dependency */
14
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
+ /** @typedef {import("../javascript/JavascriptParser").Assertions} Assertions */
16
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
16
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
17
19
 
@@ -23,8 +25,17 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
23
25
  * a.x !== undefined; // if x value statically analyzable
24
26
  */
25
27
  class HarmonyEvaluatedImportSpecifierDependency extends HarmonyImportSpecifierDependency {
28
+ /**
29
+ * @param {string} request the request string
30
+ * @param {number} sourceOrder source order
31
+ * @param {TODO} ids ids
32
+ * @param {TODO} name name
33
+ * @param {Range} range location in source code
34
+ * @param {Assertions} assertions assertions
35
+ * @param {string} operator operator
36
+ */
26
37
  constructor(request, sourceOrder, ids, name, range, assertions, operator) {
27
- super(request, sourceOrder, ids, name, range, false, assertions);
38
+ super(request, sourceOrder, ids, name, range, false, assertions, []);
28
39
  this.operator = operator;
29
40
  }
30
41
 
@@ -21,6 +21,9 @@ const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDepe
21
21
  const { HarmonyStarExportsList } = HarmonyExportImportedSpecifierDependency;
22
22
 
23
23
  module.exports = class HarmonyExportDependencyParserPlugin {
24
+ /**
25
+ * @param {import("../../declarations/WebpackOptions").JavascriptParserOptions} options options
26
+ */
24
27
  constructor(options) {
25
28
  this.exportPresenceMode =
26
29
  options.reexportExportsPresence !== undefined
@@ -18,10 +18,17 @@ const NullDependency = require("./NullDependency");
18
18
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
20
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
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
 
24
25
  class HarmonyExportExpressionDependency extends NullDependency {
26
+ /**
27
+ * @param {Range} range range
28
+ * @param {Range} rangeStatement range statement
29
+ * @param {string} prefix prefix
30
+ * @param {string | { range: Range, prefix: string, suffix: string }} [declarationId] declaration id
31
+ */
25
32
  constructor(range, rangeStatement, prefix, declarationId) {
26
33
  super();
27
34
  this.range = range;
@@ -144,6 +151,7 @@ HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTempla
144
151
  `/* harmony default export */ ${dep.prefix}`
145
152
  );
146
153
  } else {
154
+ /** @type {string} */
147
155
  let content;
148
156
  const name = ConcatenationScope.DEFAULT_EXPORT;
149
157
  if (runtimeTemplate.supportsConst()) {
@@ -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 HarmonyExportHeaderDependency extends NullDependency {
19
+ /**
20
+ * @param {Range} range range
21
+ * @param {Range} rangeStatement range statement
22
+ */
18
23
  constructor(range, rangeStatement) {
19
24
  super();
20
25
  this.range = range;
@@ -36,6 +36,7 @@ const processExportInfo = require("./processExportInfo");
36
36
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
37
37
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
38
38
  /** @typedef {import("../WebpackError")} WebpackError */
39
+ /** @typedef {import("../javascript/JavascriptParser").Assertions} Assertions */
39
40
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
40
41
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
41
42
  /** @typedef {import("../util/Hash")} Hash */
@@ -332,7 +333,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
332
333
  * @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | Iterable<HarmonyExportImportedSpecifierDependency>} otherStarExports other star exports in the module before this import
333
334
  * @param {number} exportPresenceMode mode of checking export names
334
335
  * @param {HarmonyStarExportsList} allStarExports all star exports in the module
335
- * @param {Record<string, any>=} assertions import assertions
336
+ * @param {Assertions=} assertions import assertions
336
337
  */
337
338
  constructor(
338
339
  request,
@@ -19,6 +19,10 @@ const NullDependency = require("./NullDependency");
19
19
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
20
 
21
21
  class HarmonyExportSpecifierDependency extends NullDependency {
22
+ /**
23
+ * @param {TODO} id id
24
+ * @param {TODO} name name
25
+ */
22
26
  constructor(id, name) {
23
27
  super();
24
28
  this.id = id;
@@ -5,6 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const RuntimeGlobals = require("../RuntimeGlobals");
9
+
8
10
  /** @typedef {import("../Parser").ParserState} ParserState */
9
11
 
10
12
  /** @type {WeakMap<ParserState, boolean>} */
@@ -22,7 +24,7 @@ exports.enable = (parserState, isStrictHarmony) => {
22
24
  if (value !== true) {
23
25
  parserState.module.buildMeta.exportsType = "namespace";
24
26
  parserState.module.buildInfo.strict = true;
25
- parserState.module.buildInfo.exportsArgument = "__webpack_exports__";
27
+ parserState.module.buildInfo.exportsArgument = RuntimeGlobals.exports;
26
28
  if (isStrictHarmony) {
27
29
  parserState.module.buildMeta.strictHarmonyModule = true;
28
30
  parserState.module.buildInfo.moduleArgument = "__webpack_module__";
@@ -24,6 +24,7 @@ const ModuleDependency = require("./ModuleDependency");
24
24
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
25
25
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
26
26
  /** @typedef {import("../WebpackError")} WebpackError */
27
+ /** @typedef {import("../javascript/JavascriptParser").Assertions} Assertions */
27
28
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
28
29
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
29
30
  /** @typedef {import("../util/Hash")} Hash */
@@ -55,7 +56,7 @@ class HarmonyImportDependency extends ModuleDependency {
55
56
  *
56
57
  * @param {string} request request string
57
58
  * @param {number} sourceOrder source order
58
- * @param {Record<string, any>=} assertions import assertions
59
+ * @param {Assertions=} assertions import assertions
59
60
  */
60
61
  constructor(request, sourceOrder, assertions) {
61
62
  super(request);