webpack 5.86.0 → 5.88.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 (207) hide show
  1. package/README.md +5 -2
  2. package/lib/APIPlugin.js +1 -1
  3. package/lib/AsyncDependenciesBlock.js +3 -3
  4. package/lib/CaseSensitiveModulesWarning.js +3 -1
  5. package/lib/ChunkGraph.js +4 -4
  6. package/lib/ChunkGroup.js +10 -3
  7. package/lib/CompatibilityPlugin.js +50 -30
  8. package/lib/Compilation.js +2 -1
  9. package/lib/Compiler.js +3 -1
  10. package/lib/ConcatenationScope.js +2 -2
  11. package/lib/ConditionalInitFragment.js +11 -1
  12. package/lib/ConstPlugin.js +57 -29
  13. package/lib/ContextModule.js +4 -1
  14. package/lib/ContextReplacementPlugin.js +13 -0
  15. package/lib/DelegatedModule.js +15 -3
  16. package/lib/DelegatedModuleFactoryPlugin.js +6 -0
  17. package/lib/Dependency.js +11 -5
  18. package/lib/DllEntryPlugin.js +11 -1
  19. package/lib/DllReferencePlugin.js +13 -1
  20. package/lib/Entrypoint.js +1 -1
  21. package/lib/ErrorHelpers.js +1 -0
  22. package/lib/EvalSourceMapDevToolPlugin.js +4 -0
  23. package/lib/ExportsInfo.js +17 -3
  24. package/lib/ExportsInfoApiPlugin.js +14 -5
  25. package/lib/ExternalModule.js +5 -0
  26. package/lib/FlagAllModulesAsUsedPlugin.js +6 -1
  27. package/lib/FlagDependencyUsagePlugin.js +3 -1
  28. package/lib/FlagEntryExportAsUsedPlugin.js +4 -0
  29. package/lib/HotModuleReplacementPlugin.js +8 -0
  30. package/lib/InitFragment.js +28 -5
  31. package/lib/JavascriptMetaInfoPlugin.js +11 -6
  32. package/lib/LibManifestPlugin.js +20 -4
  33. package/lib/Module.js +7 -2
  34. package/lib/ModuleDependencyError.js +4 -2
  35. package/lib/ModuleDependencyWarning.js +4 -2
  36. package/lib/ModuleGraph.js +31 -24
  37. package/lib/ModuleGraphConnection.js +19 -6
  38. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  39. package/lib/ModuleNotFoundError.js +5 -2
  40. package/lib/ModuleProfile.js +1 -0
  41. package/lib/ModuleRestoreError.js +2 -0
  42. package/lib/ModuleStoreError.js +2 -1
  43. package/lib/ModuleTypeConstants.js +7 -0
  44. package/lib/MultiWatching.js +4 -0
  45. package/lib/NodeStuffPlugin.js +32 -6
  46. package/lib/ProvidePlugin.js +13 -4
  47. package/lib/RawModule.js +3 -1
  48. package/lib/RequireJsStuffPlugin.js +7 -0
  49. package/lib/RuntimeGlobals.js +5 -0
  50. package/lib/RuntimeModule.js +3 -3
  51. package/lib/RuntimePlugin.js +6 -3
  52. package/lib/RuntimeTemplate.js +22 -4
  53. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  54. package/lib/SourceMapDevToolPlugin.js +7 -2
  55. package/lib/UseStrictPlugin.js +10 -3
  56. package/lib/WebpackError.js +6 -5
  57. package/lib/WebpackIsIncludedPlugin.js +6 -4
  58. package/lib/WebpackOptionsApply.js +1 -1
  59. package/lib/WebpackOptionsDefaulter.js +10 -3
  60. package/lib/asset/AssetGenerator.js +2 -1
  61. package/lib/asset/AssetParser.js +11 -6
  62. package/lib/asset/AssetSourceParser.js +8 -3
  63. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  64. package/lib/cache/IdleFileCachePlugin.js +2 -1
  65. package/lib/cache/PackFileCacheStrategy.js +35 -14
  66. package/lib/config/browserslistTargetHandler.js +7 -7
  67. package/lib/config/defaults.js +43 -26
  68. package/lib/container/RemoteRuntimeModule.js +1 -1
  69. package/lib/css/CssLoadingRuntimeModule.js +30 -13
  70. package/lib/css/CssModulesPlugin.js +5 -2
  71. package/lib/css/CssParser.js +22 -0
  72. package/lib/dependencies/AMDDefineDependency.js +34 -4
  73. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +5 -0
  74. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  75. package/lib/dependencies/CommonJsExportsParserPlugin.js +14 -4
  76. package/lib/dependencies/CommonJsImportsParserPlugin.js +169 -59
  77. package/lib/dependencies/CommonJsPlugin.js +13 -8
  78. package/lib/dependencies/CommonJsRequireContextDependency.js +2 -2
  79. package/lib/dependencies/ConstDependency.js +2 -2
  80. package/lib/dependencies/ContextDependency.js +7 -2
  81. package/lib/dependencies/CssImportDependency.js +1 -1
  82. package/lib/dependencies/CssLocalIdentifierDependency.js +5 -0
  83. package/lib/dependencies/CssUrlDependency.js +3 -3
  84. package/lib/dependencies/DllEntryDependency.js +5 -0
  85. package/lib/dependencies/DynamicExports.js +10 -6
  86. package/lib/dependencies/ExportsInfoDependency.js +14 -4
  87. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  88. package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -1
  89. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +12 -5
  90. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +2 -0
  91. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +4 -4
  92. package/lib/dependencies/HarmonyExports.js +9 -5
  93. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +32 -17
  94. package/lib/dependencies/HarmonyImportSideEffectDependency.js +1 -2
  95. package/lib/dependencies/HarmonyImportSpecifierDependency.js +19 -9
  96. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  97. package/lib/dependencies/ImportDependency.js +5 -3
  98. package/lib/dependencies/ImportEagerDependency.js +5 -3
  99. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +19 -0
  100. package/lib/dependencies/ImportMetaPlugin.js +31 -15
  101. package/lib/dependencies/ImportParserPlugin.js +62 -25
  102. package/lib/dependencies/ImportWeakDependency.js +5 -3
  103. package/lib/dependencies/ModuleDependency.js +1 -1
  104. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  105. package/lib/dependencies/ProvidedDependency.js +4 -1
  106. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  107. package/lib/dependencies/RequireEnsureDependenciesBlock.js +5 -2
  108. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  109. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  110. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +26 -5
  111. package/lib/dependencies/RequireResolveHeaderDependency.js +9 -0
  112. package/lib/dependencies/SystemPlugin.js +17 -5
  113. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  114. package/lib/dependencies/URLDependency.js +2 -2
  115. package/lib/dependencies/URLPlugin.js +9 -4
  116. package/lib/dependencies/WebAssemblyImportDependency.js +1 -1
  117. package/lib/dependencies/WorkerPlugin.js +59 -22
  118. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  119. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +1 -1
  120. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  121. package/lib/ids/HashedModuleIdsPlugin.js +1 -1
  122. package/lib/ids/SyncModuleIdsPlugin.js +1 -0
  123. package/lib/javascript/BasicEvaluatedExpression.js +23 -15
  124. package/lib/javascript/CommonJsChunkFormatPlugin.js +6 -2
  125. package/lib/javascript/JavascriptParser.js +135 -63
  126. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  127. package/lib/logging/runtime.js +1 -1
  128. package/lib/logging/truncateArgs.js +4 -0
  129. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -6
  130. package/lib/node/RequireChunkLoadingRuntimeModule.js +10 -6
  131. package/lib/optimize/InnerGraph.js +1 -1
  132. package/lib/optimize/InnerGraphPlugin.js +2 -1
  133. package/lib/performance/SizeLimitsPlugin.js +7 -4
  134. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  135. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  136. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  137. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  138. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  139. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  140. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  141. package/lib/rules/RuleSetCompiler.js +3 -3
  142. package/lib/rules/UseEffectRulePlugin.js +6 -4
  143. package/lib/runtime/AsyncModuleRuntimeModule.js +8 -5
  144. package/lib/runtime/AutoPublicPathRuntimeModule.js +4 -2
  145. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  146. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  147. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  148. package/lib/runtime/CompatRuntimeModule.js +7 -2
  149. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  150. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  151. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  152. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  153. package/lib/runtime/EnsureChunkRuntimeModule.js +15 -4
  154. package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -10
  155. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  156. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  157. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +4 -2
  158. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  159. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  160. package/lib/runtime/LoadScriptRuntimeModule.js +64 -48
  161. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  162. package/lib/runtime/NonceRuntimeModule.js +1 -1
  163. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  164. package/lib/runtime/PublicPathRuntimeModule.js +4 -2
  165. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  166. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  167. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +9 -3
  168. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -2
  169. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  170. package/lib/serialization/ObjectMiddleware.js +6 -3
  171. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  172. package/lib/sharing/ConsumeSharedRuntimeModule.js +14 -5
  173. package/lib/sharing/ProvideSharedDependency.js +11 -0
  174. package/lib/sharing/ProvideSharedModule.js +4 -0
  175. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  176. package/lib/sharing/ShareRuntimeModule.js +12 -5
  177. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  178. package/lib/sharing/utils.js +32 -5
  179. package/lib/util/AsyncQueue.js +4 -2
  180. package/lib/util/ParallelismFactorCalculator.js +10 -0
  181. package/lib/util/Semaphore.js +1 -1
  182. package/lib/util/createHash.js +30 -9
  183. package/lib/util/deprecation.js +10 -3
  184. package/lib/util/deterministicGrouping.js +50 -11
  185. package/lib/util/findGraphRoots.js +4 -2
  186. package/lib/util/memoize.js +3 -3
  187. package/lib/util/processAsyncTree.js +7 -1
  188. package/lib/util/registerExternalSerializer.js +1 -1
  189. package/lib/util/runtime.js +14 -1
  190. package/lib/util/smartGrouping.js +1 -1
  191. package/lib/validateSchema.js +6 -2
  192. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +6 -2
  193. package/lib/wasm-async/AsyncWebAssemblyParser.js +7 -3
  194. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +14 -7
  195. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -1
  196. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -0
  197. package/lib/wasm-sync/WebAssemblyParser.js +6 -2
  198. package/lib/web/JsonpChunkLoadingRuntimeModule.js +14 -4
  199. package/lib/webpack.js +11 -2
  200. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -16
  201. package/module.d.ts +1 -0
  202. package/package.json +5 -4
  203. package/schemas/WebpackOptions.check.js +1 -1
  204. package/schemas/WebpackOptions.json +39 -5
  205. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  206. package/schemas/plugins/css/CssParserOptions.json +1 -1
  207. package/types.d.ts +519 -222
@@ -56,7 +56,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
56
56
  }
57
57
 
58
58
  /**
59
- * @returns {string} runtime code
59
+ * @returns {string | null} runtime code
60
60
  */
61
61
  generate() {
62
62
  const { compilation, chunk, _runtimeRequirements } = this;
@@ -135,6 +135,14 @@ class CssLoadingRuntimeModule extends RuntimeModule {
135
135
 
136
136
  /** @type {(str: string) => number} */
137
137
  const cc = str => str.charCodeAt(0);
138
+ const name = uniqueName
139
+ ? runtimeTemplate.concatenation(
140
+ "--webpack-",
141
+ { expr: "uniqueName" },
142
+ "-",
143
+ { expr: "chunkId" }
144
+ )
145
+ : runtimeTemplate.concatenation("--webpack-", { expr: "chunkId" });
138
146
 
139
147
  return Template.asString([
140
148
  "// object to store loaded and loading chunks",
@@ -157,18 +165,27 @@ class CssLoadingRuntimeModule extends RuntimeModule {
157
165
  [
158
166
  `var data, token = "", token2, exports = {}, exportsWithId = [], exportsWithDashes = [], ${
159
167
  withHmr ? "moduleIds = [], " : ""
160
- }i = 0, cc = 1;`,
161
- "try { if(!link) link = loadStylesheet(chunkId); data = link.sheet.cssRules; data = data[data.length - 1].style; } catch(e) { data = getComputedStyle(document.head); }",
162
- `data = data.getPropertyValue(${
163
- uniqueName
164
- ? runtimeTemplate.concatenation(
165
- "--webpack-",
166
- { expr: "uniqueName" },
167
- "-",
168
- { expr: "chunkId" }
169
- )
170
- : runtimeTemplate.concatenation("--webpack-", { expr: "chunkId" })
171
- });`,
168
+ }name = ${name}, i = 0, cc = 1;`,
169
+ "try {",
170
+ Template.indent([
171
+ "if(!link) link = loadStylesheet(chunkId);",
172
+ // `link.sheet.rules` for legacy browsers
173
+ "var cssRules = link.sheet.cssRules || link.sheet.rules;",
174
+ "var j = cssRules.length - 1;",
175
+ "while(j > -1 && !data) {",
176
+ Template.indent([
177
+ "var style = cssRules[j--].style;",
178
+ "if(!style) continue;",
179
+ `data = style.getPropertyValue(name);`
180
+ ]),
181
+ "}"
182
+ ]),
183
+ "}catch(e){}",
184
+ "if(!data) {",
185
+ Template.indent([
186
+ "data = getComputedStyle(document.head).getPropertyValue(name);"
187
+ ]),
188
+ "}",
172
189
  "if(!data) return [];",
173
190
  "for(; cc; i++) {",
174
191
  Template.indent([
@@ -11,7 +11,8 @@ const HotUpdateChunk = require("../HotUpdateChunk");
11
11
  const {
12
12
  CSS_MODULE_TYPE,
13
13
  CSS_MODULE_TYPE_GLOBAL,
14
- CSS_MODULE_TYPE_MODULE
14
+ CSS_MODULE_TYPE_MODULE,
15
+ CSS_MODULE_TYPE_AUTO
15
16
  } = require("../ModuleTypeConstants");
16
17
  const RuntimeGlobals = require("../RuntimeGlobals");
17
18
  const SelfModuleFactory = require("../SelfModuleFactory");
@@ -149,7 +150,8 @@ class CssModulesPlugin {
149
150
  for (const type of [
150
151
  CSS_MODULE_TYPE,
151
152
  CSS_MODULE_TYPE_GLOBAL,
152
- CSS_MODULE_TYPE_MODULE
153
+ CSS_MODULE_TYPE_MODULE,
154
+ CSS_MODULE_TYPE_AUTO
153
155
  ]) {
154
156
  normalModuleFactory.hooks.createParser
155
157
  .for(type)
@@ -158,6 +160,7 @@ class CssModulesPlugin {
158
160
 
159
161
  switch (type) {
160
162
  case CSS_MODULE_TYPE:
163
+ case CSS_MODULE_TYPE_AUTO:
161
164
  return new CssParser();
162
165
  case CSS_MODULE_TYPE_GLOBAL:
163
166
  return new CssParser({
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const ModuleDependencyWarning = require("../ModuleDependencyWarning");
9
+ const { CSS_MODULE_TYPE_AUTO } = require("../ModuleTypeConstants");
9
10
  const Parser = require("../Parser");
10
11
  const WebpackError = require("../WebpackError");
11
12
  const ConstDependency = require("../dependencies/ConstDependency");
@@ -15,6 +16,7 @@ const CssLocalIdentifierDependency = require("../dependencies/CssLocalIdentifier
15
16
  const CssSelfLocalIdentifierDependency = require("../dependencies/CssSelfLocalIdentifierDependency");
16
17
  const CssUrlDependency = require("../dependencies/CssUrlDependency");
17
18
  const StaticExportsDependency = require("../dependencies/StaticExportsDependency");
19
+ const { parseResource } = require("../util/identifier");
18
20
  const walkCssTokens = require("./walkCssTokens");
19
21
 
20
22
  /** @typedef {import("../Parser").ParserState} ParserState */
@@ -37,6 +39,7 @@ const IMAGE_SET_FUNCTION = /^(-\w+-)?image-set$/i;
37
39
  const OPTIONALLY_VENDOR_PREFIXED_KEYFRAMES_AT_RULE = /^@(-\w+-)?keyframes$/;
38
40
  const OPTIONALLY_VENDOR_PREFIXED_ANIMATION_PROPERTY =
39
41
  /^(-\w+-)?animation(-name)?$/i;
42
+ const IS_MODULES = /\.module(s)?\.[^.]+$/i;
40
43
 
41
44
  /**
42
45
  * @param {string} str url string
@@ -169,6 +172,21 @@ class CssParser extends Parser {
169
172
  }
170
173
 
171
174
  const module = state.module;
175
+
176
+ /** @type {string | undefined} */
177
+ let oldDefaultMode;
178
+
179
+ if (
180
+ module.type === CSS_MODULE_TYPE_AUTO &&
181
+ IS_MODULES.test(
182
+ parseResource(module.matchResource || module.resource).path
183
+ )
184
+ ) {
185
+ oldDefaultMode = this.defaultMode;
186
+
187
+ this.defaultMode = "local";
188
+ }
189
+
172
190
  const locConverter = new LocConverter(source);
173
191
  /** @type {Set<string>}*/
174
192
  const declaredCssVariables = new Set();
@@ -1001,6 +1019,10 @@ class CssParser extends Parser {
1001
1019
  }
1002
1020
  });
1003
1021
 
1022
+ if (oldDefaultMode) {
1023
+ this.defaultMode = oldDefaultMode;
1024
+ }
1025
+
1004
1026
  module.buildInfo.strict = true;
1005
1027
  module.buildMeta.exportsType = "namespace";
1006
1028
  module.addDependency(new StaticExportsDependency([], true));
@@ -180,6 +180,10 @@ AMDDefineDependency.Template = class AMDDefineDependencyTemplate extends (
180
180
  this.replace(dep, source, definition, content);
181
181
  }
182
182
 
183
+ /**
184
+ * @param {AMDDefineDependency} dependency dependency
185
+ * @returns {string} variable name
186
+ */
183
187
  localModuleVar(dependency) {
184
188
  return (
185
189
  dependency.localModule &&
@@ -188,6 +192,10 @@ AMDDefineDependency.Template = class AMDDefineDependencyTemplate extends (
188
192
  );
189
193
  }
190
194
 
195
+ /**
196
+ * @param {AMDDefineDependency} dependency dependency
197
+ * @returns {string} branch
198
+ */
191
199
  branch(dependency) {
192
200
  const localModuleVar = this.localModuleVar(dependency) ? "l" : "";
193
201
  const arrayRange = dependency.arrayRange ? "a" : "";
@@ -196,6 +204,12 @@ AMDDefineDependency.Template = class AMDDefineDependencyTemplate extends (
196
204
  return localModuleVar + arrayRange + objectRange + functionRange;
197
205
  }
198
206
 
207
+ /**
208
+ * @param {AMDDefineDependency} dependency dependency
209
+ * @param {ReplaceSource} source source
210
+ * @param {string} definition definition
211
+ * @param {string} text text
212
+ */
199
213
  replace(dependency, source, definition, text) {
200
214
  const localModuleVar = this.localModuleVar(dependency);
201
215
  if (localModuleVar) {
@@ -216,18 +230,34 @@ AMDDefineDependency.Template = class AMDDefineDependencyTemplate extends (
216
230
 
217
231
  let current = dependency.range[0];
218
232
  if (dependency.arrayRange) {
219
- source.replace(current, dependency.arrayRange[0] - 1, texts.shift());
233
+ source.replace(
234
+ current,
235
+ dependency.arrayRange[0] - 1,
236
+ /** @type {string} */ (texts.shift())
237
+ );
220
238
  current = dependency.arrayRange[1];
221
239
  }
222
240
 
223
241
  if (dependency.objectRange) {
224
- source.replace(current, dependency.objectRange[0] - 1, texts.shift());
242
+ source.replace(
243
+ current,
244
+ dependency.objectRange[0] - 1,
245
+ /** @type {string} */ (texts.shift())
246
+ );
225
247
  current = dependency.objectRange[1];
226
248
  } else if (dependency.functionRange) {
227
- source.replace(current, dependency.functionRange[0] - 1, texts.shift());
249
+ source.replace(
250
+ current,
251
+ dependency.functionRange[0] - 1,
252
+ /** @type {string} */ (texts.shift())
253
+ );
228
254
  current = dependency.functionRange[1];
229
255
  }
230
- source.replace(current, dependency.range[1] - 1, texts.shift());
256
+ source.replace(
257
+ current,
258
+ dependency.range[1] - 1,
259
+ /** @type {string} */ (texts.shift())
260
+ );
231
261
  if (texts.length > 0) throw new Error("Implementation error");
232
262
  }
233
263
  };
@@ -16,8 +16,13 @@ const DynamicExports = require("./DynamicExports");
16
16
  const LocalModuleDependency = require("./LocalModuleDependency");
17
17
  const { addLocalModule, getLocalModule } = require("./LocalModulesHelpers");
18
18
 
19
+ /** @typedef {import("estree").CallExpression} CallExpression */
19
20
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
20
21
 
22
+ /**
23
+ * @param {CallExpression} expr expression
24
+ * @returns {boolean} true if it's a bound function expression
25
+ */
21
26
  const isBoundFunctionExpression = expr => {
22
27
  if (expr.type !== "CallExpression") return false;
23
28
  if (expr.callee.type !== "MemberExpression") return false;
@@ -14,7 +14,7 @@ class AMDDefineRuntimeModule extends RuntimeModule {
14
14
  }
15
15
 
16
16
  /**
17
- * @returns {string} runtime code
17
+ * @returns {string | null} runtime code
18
18
  */
19
19
  generate() {
20
20
  return Template.asString([
@@ -35,7 +35,7 @@ class AMDOptionsRuntimeModule extends RuntimeModule {
35
35
  }
36
36
 
37
37
  /**
38
- * @returns {string} runtime code
38
+ * @returns {string | null} runtime code
39
39
  */
40
40
  generate() {
41
41
  return Template.asString([
@@ -21,6 +21,7 @@ const ModuleDecoratorDependency = require("./ModuleDecoratorDependency");
21
21
  /** @typedef {import("estree").Expression} Expression */
22
22
  /** @typedef {import("estree").Super} Super */
23
23
 
24
+ /** @typedef {import("../ModuleGraph")} ModuleGraph */
24
25
  /** @typedef {import("../NormalModule")} NormalModule */
25
26
  /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
26
27
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
@@ -43,7 +44,7 @@ const ModuleDecoratorDependency = require("./ModuleDecoratorDependency");
43
44
  * ```
44
45
  *
45
46
  * @param {TODO} expr expression
46
- * @returns {Expression} returns the value of property descriptor
47
+ * @returns {Expression | undefined} returns the value of property descriptor
47
48
  */
48
49
  const getValueOfPropertyDescription = expr => {
49
50
  if (expr.type !== "ObjectExpression") return;
@@ -127,6 +128,9 @@ const parseRequireCall = (parser, expr) => {
127
128
  };
128
129
 
129
130
  class CommonJsExportsParserPlugin {
131
+ /**
132
+ * @param {ModuleGraph} moduleGraph module graph
133
+ */
130
134
  constructor(moduleGraph) {
131
135
  this.moduleGraph = moduleGraph;
132
136
  }
@@ -143,7 +147,7 @@ class CommonJsExportsParserPlugin {
143
147
  /**
144
148
  * @param {boolean} topLevel true, when the export is on top level
145
149
  * @param {string[]} members members of the export
146
- * @param {Expression} valueExpr expression for the value
150
+ * @param {Expression | undefined} valueExpr expression for the value
147
151
  * @returns {void}
148
152
  */
149
153
  const checkNamespace = (topLevel, members, valueExpr) => {
@@ -156,10 +160,16 @@ class CommonJsExportsParserPlugin {
156
160
  }
157
161
  }
158
162
  };
163
+ /**
164
+ * @param {string=} reason reason
165
+ */
159
166
  const bailout = reason => {
160
167
  DynamicExports.bailout(parser.state);
161
168
  if (reason) bailoutHint(reason);
162
169
  };
170
+ /**
171
+ * @param {string} reason reason
172
+ */
163
173
  const bailoutHint = reason => {
164
174
  this.moduleGraph
165
175
  .getOptimizationBailout(parser.state.module)
@@ -292,8 +302,8 @@ class CommonJsExportsParserPlugin {
292
302
  * @param {Expression | Super} expr expression
293
303
  * @param {CommonJSDependencyBaseKeywords} base commonjs base keywords
294
304
  * @param {string[]} members members of the export
295
- * @param {CallExpression} call call expression
296
- * @returns {boolean} true, when the expression was handled
305
+ * @param {CallExpression=} call call expression
306
+ * @returns {boolean | void} true, when the expression was handled
297
307
  */
298
308
  const handleAccessExport = (expr, base, members, call = undefined) => {
299
309
  if (HarmonyExports.isEnabled(parser.state)) return;