webpack 5.90.0 → 5.90.2

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 (38) hide show
  1. package/lib/APIPlugin.js +16 -12
  2. package/lib/Compilation.js +1 -1
  3. package/lib/ConditionalInitFragment.js +3 -3
  4. package/lib/DefinePlugin.js +47 -26
  5. package/lib/EvalSourceMapDevToolPlugin.js +1 -1
  6. package/lib/InitFragment.js +7 -7
  7. package/lib/NodeStuffPlugin.js +3 -3
  8. package/lib/Stats.js +4 -0
  9. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  10. package/lib/buildChunkGraph.js +101 -15
  11. package/lib/config/browserslistTargetHandler.js +18 -16
  12. package/lib/config/defaults.js +1 -0
  13. package/lib/dependencies/AMDDefineDependency.js +4 -4
  14. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +126 -34
  15. package/lib/dependencies/AMDPlugin.js +11 -4
  16. package/lib/dependencies/AMDRequireArrayDependency.js +13 -1
  17. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +159 -43
  18. package/lib/dependencies/AMDRequireDependency.js +2 -2
  19. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  20. package/lib/dependencies/ExportsInfoDependency.js +6 -12
  21. package/lib/dependencies/ExternalModuleDependency.js +9 -0
  22. package/lib/dependencies/ExternalModuleInitFragment.js +10 -3
  23. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  24. package/lib/dependencies/HarmonyImportSpecifierDependency.js +1 -1
  25. package/lib/dependencies/ImportParserPlugin.js +1 -0
  26. package/lib/dependencies/LocalModuleDependency.js +1 -1
  27. package/lib/dependencies/WorkerPlugin.js +3 -2
  28. package/lib/dependencies/getFunctionExpression.js +2 -2
  29. package/lib/hmr/HotModuleReplacement.runtime.js +1 -1
  30. package/lib/javascript/JavascriptParser.js +212 -74
  31. package/lib/optimize/MangleExportsPlugin.js +5 -1
  32. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -1
  33. package/lib/util/chainedImports.js +7 -6
  34. package/lib/util/comparators.js +59 -23
  35. package/lib/util/numberHash.js +53 -52
  36. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +53 -28
  37. package/package.json +4 -59
  38. package/types.d.ts +101 -74
@@ -19,13 +19,30 @@ const { getLocalModule } = require("./LocalModulesHelpers");
19
19
  const UnsupportedDependency = require("./UnsupportedDependency");
20
20
  const getFunctionExpression = require("./getFunctionExpression");
21
21
 
22
+ /** @typedef {import("estree").CallExpression} CallExpression */
23
+ /** @typedef {import("estree").Expression} Expression */
24
+ /** @typedef {import("estree").SourceLocation} SourceLocation */
25
+ /** @typedef {import("estree").SpreadElement} SpreadElement */
26
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
27
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
28
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
29
+ /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
22
30
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
31
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
23
32
 
24
33
  class AMDRequireDependenciesBlockParserPlugin {
34
+ /**
35
+ * @param {JavascriptParserOptions} options parserOptions
36
+ */
25
37
  constructor(options) {
26
38
  this.options = options;
27
39
  }
28
40
 
41
+ /**
42
+ * @param {JavascriptParser} parser the parser
43
+ * @param {Expression | SpreadElement} expression expression
44
+ * @returns {boolean} need bind this
45
+ */
29
46
  processFunctionArgument(parser, expression) {
30
47
  let bindThis = true;
31
48
  const fnData = getFunctionExpression(expression);
@@ -65,9 +82,15 @@ class AMDRequireDependenciesBlockParserPlugin {
65
82
  );
66
83
  }
67
84
 
85
+ /**
86
+ * @param {JavascriptParser} parser the parser
87
+ * @param {CallExpression} expr call expression
88
+ * @param {BasicEvaluatedExpression} param param
89
+ * @returns {boolean | undefined} result
90
+ */
68
91
  processArray(parser, expr, param) {
69
92
  if (param.isArray()) {
70
- for (const p of param.items) {
93
+ for (const p of /** @type {BasicEvaluatedExpression[]} */ (param.items)) {
71
94
  const result = this.processItem(parser, expr, p);
72
95
  if (result === undefined) {
73
96
  this.processContext(parser, expr, p);
@@ -75,8 +98,9 @@ class AMDRequireDependenciesBlockParserPlugin {
75
98
  }
76
99
  return true;
77
100
  } else if (param.isConstArray()) {
101
+ /** @type {(string | LocalModuleDependency | AMDRequireItemDependency)[]} */
78
102
  const deps = [];
79
- for (const request of param.array) {
103
+ for (const request of /** @type {any[]} */ (param.array)) {
80
104
  let dep, localModule;
81
105
  if (request === "require") {
82
106
  dep = RuntimeGlobals.require;
@@ -85,26 +109,38 @@ class AMDRequireDependenciesBlockParserPlugin {
85
109
  } else if ((localModule = getLocalModule(parser.state, request))) {
86
110
  localModule.flagUsed();
87
111
  dep = new LocalModuleDependency(localModule, undefined, false);
88
- dep.loc = expr.loc;
112
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
89
113
  parser.state.module.addPresentationalDependency(dep);
90
114
  } else {
91
115
  dep = this.newRequireItemDependency(request);
92
- dep.loc = expr.loc;
116
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
93
117
  dep.optional = !!parser.scope.inTry;
94
118
  parser.state.current.addDependency(dep);
95
119
  }
96
120
  deps.push(dep);
97
121
  }
98
- const dep = this.newRequireArrayDependency(deps, param.range);
99
- dep.loc = expr.loc;
122
+ const dep = this.newRequireArrayDependency(
123
+ deps,
124
+ /** @type {Range} */ (param.range)
125
+ );
126
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
100
127
  dep.optional = !!parser.scope.inTry;
101
128
  parser.state.module.addPresentationalDependency(dep);
102
129
  return true;
103
130
  }
104
131
  }
132
+
133
+ /**
134
+ * @param {JavascriptParser} parser the parser
135
+ * @param {CallExpression} expr call expression
136
+ * @param {BasicEvaluatedExpression} param param
137
+ * @returns {boolean | undefined} result
138
+ */
105
139
  processItem(parser, expr, param) {
106
140
  if (param.isConditional()) {
107
- for (const p of param.options) {
141
+ for (const p of /** @type {BasicEvaluatedExpression[]} */ (
142
+ param.options
143
+ )) {
108
144
  const result = this.processItem(parser, expr, p);
109
145
  if (result === undefined) {
110
146
  this.processContext(parser, expr, p);
@@ -114,40 +150,59 @@ class AMDRequireDependenciesBlockParserPlugin {
114
150
  } else if (param.isString()) {
115
151
  let dep, localModule;
116
152
  if (param.string === "require") {
117
- dep = new ConstDependency(RuntimeGlobals.require, param.string, [
118
- RuntimeGlobals.require
119
- ]);
153
+ dep = new ConstDependency(
154
+ RuntimeGlobals.require,
155
+ /** @type {TODO} */ (param.string),
156
+ [RuntimeGlobals.require]
157
+ );
120
158
  } else if (param.string === "module") {
121
159
  dep = new ConstDependency(
122
- parser.state.module.buildInfo.moduleArgument,
123
- param.range,
160
+ /** @type {BuildInfo} */
161
+ (parser.state.module.buildInfo).moduleArgument,
162
+ /** @type {Range} */ (param.range),
124
163
  [RuntimeGlobals.module]
125
164
  );
126
165
  } else if (param.string === "exports") {
127
166
  dep = new ConstDependency(
128
- parser.state.module.buildInfo.exportsArgument,
129
- param.range,
167
+ /** @type {BuildInfo} */
168
+ (parser.state.module.buildInfo).exportsArgument,
169
+ /** @type {Range} */ (param.range),
130
170
  [RuntimeGlobals.exports]
131
171
  );
132
- } else if ((localModule = getLocalModule(parser.state, param.string))) {
172
+ } else if (
173
+ (localModule = getLocalModule(
174
+ parser.state,
175
+ /** @type {string} */ (param.string)
176
+ ))
177
+ ) {
133
178
  localModule.flagUsed();
134
179
  dep = new LocalModuleDependency(localModule, param.range, false);
135
180
  } else {
136
- dep = this.newRequireItemDependency(param.string, param.range);
137
- dep.loc = expr.loc;
181
+ dep = this.newRequireItemDependency(
182
+ /** @type {string} */ (param.string),
183
+ param.range
184
+ );
185
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
138
186
  dep.optional = !!parser.scope.inTry;
139
187
  parser.state.current.addDependency(dep);
140
188
  return true;
141
189
  }
142
- dep.loc = expr.loc;
190
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
143
191
  parser.state.module.addPresentationalDependency(dep);
144
192
  return true;
145
193
  }
146
194
  }
195
+
196
+ /**
197
+ * @param {JavascriptParser} parser the parser
198
+ * @param {CallExpression} expr call expression
199
+ * @param {BasicEvaluatedExpression} param param
200
+ * @returns {boolean | undefined} result
201
+ */
147
202
  processContext(parser, expr, param) {
148
203
  const dep = ContextDependencyHelpers.create(
149
204
  AMDRequireContextDependency,
150
- param.range,
205
+ /** @type {Range} */ (param.range),
151
206
  param,
152
207
  expr,
153
208
  this.options,
@@ -157,38 +212,55 @@ class AMDRequireDependenciesBlockParserPlugin {
157
212
  parser
158
213
  );
159
214
  if (!dep) return;
160
- dep.loc = expr.loc;
215
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
161
216
  dep.optional = !!parser.scope.inTry;
162
217
  parser.state.current.addDependency(dep);
163
218
  return true;
164
219
  }
165
220
 
221
+ /**
222
+ * @param {BasicEvaluatedExpression} param param
223
+ * @returns {string | undefined} result
224
+ */
166
225
  processArrayForRequestString(param) {
167
226
  if (param.isArray()) {
168
- const result = param.items.map(item =>
169
- this.processItemForRequestString(item)
170
- );
227
+ const result =
228
+ /** @type {BasicEvaluatedExpression[]} */
229
+ (param.items).map(item => this.processItemForRequestString(item));
171
230
  if (result.every(Boolean)) return result.join(" ");
172
231
  } else if (param.isConstArray()) {
173
- return param.array.join(" ");
232
+ return /** @type {string[]} */ (param.array).join(" ");
174
233
  }
175
234
  }
176
235
 
236
+ /**
237
+ * @param {BasicEvaluatedExpression} param param
238
+ * @returns {string | undefined} result
239
+ */
177
240
  processItemForRequestString(param) {
178
241
  if (param.isConditional()) {
179
- const result = param.options.map(item =>
180
- this.processItemForRequestString(item)
181
- );
242
+ const result =
243
+ /** @type {BasicEvaluatedExpression[]} */
244
+ (param.options).map(item => this.processItemForRequestString(item));
182
245
  if (result.every(Boolean)) return result.join("|");
183
246
  } else if (param.isString()) {
184
247
  return param.string;
185
248
  }
186
249
  }
187
250
 
251
+ /**
252
+ * @param {JavascriptParser} parser the parser
253
+ * @param {CallExpression} expr call expression
254
+ * @returns {boolean | undefined} result
255
+ */
188
256
  processCallRequire(parser, expr) {
257
+ /** @type {BasicEvaluatedExpression | undefined} */
189
258
  let param;
259
+ /** @type {AMDRequireDependenciesBlock | undefined | null} */
190
260
  let depBlock;
261
+ /** @type {AMDRequireDependency | undefined} */
191
262
  let dep;
263
+ /** @type {boolean | undefined} */
192
264
  let result;
193
265
 
194
266
  const old = parser.state.current;
@@ -196,57 +268,76 @@ class AMDRequireDependenciesBlockParserPlugin {
196
268
  if (expr.arguments.length >= 1) {
197
269
  param = parser.evaluateExpression(expr.arguments[0]);
198
270
  depBlock = this.newRequireDependenciesBlock(
199
- expr.loc,
200
- this.processArrayForRequestString(param)
271
+ /** @type {DependencyLocation} */ (expr.loc),
272
+ /** @type {string} */ (this.processArrayForRequestString(param))
201
273
  );
202
274
  dep = this.newRequireDependency(
203
- expr.range,
204
- param.range,
205
- expr.arguments.length > 1 ? expr.arguments[1].range : null,
206
- expr.arguments.length > 2 ? expr.arguments[2].range : null
275
+ /** @type {Range} */ (expr.range),
276
+ /** @type {Range} */ (param.range),
277
+ expr.arguments.length > 1
278
+ ? /** @type {Range} */ (expr.arguments[1].range)
279
+ : null,
280
+ expr.arguments.length > 2
281
+ ? /** @type {Range} */ (expr.arguments[2].range)
282
+ : null
207
283
  );
208
- dep.loc = expr.loc;
284
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
209
285
  depBlock.addDependency(dep);
210
286
 
211
- parser.state.current = depBlock;
287
+ parser.state.current = /** @type {TODO} */ (depBlock);
212
288
  }
213
289
 
214
290
  if (expr.arguments.length === 1) {
215
291
  parser.inScope([], () => {
216
- result = this.processArray(parser, expr, param);
292
+ result = this.processArray(
293
+ parser,
294
+ expr,
295
+ /** @type {BasicEvaluatedExpression} */ (param)
296
+ );
217
297
  });
218
298
  parser.state.current = old;
219
299
  if (!result) return;
220
- parser.state.current.addBlock(depBlock);
300
+ parser.state.current.addBlock(
301
+ /** @type {AMDRequireDependenciesBlock} */ (depBlock)
302
+ );
221
303
  return true;
222
304
  }
223
305
 
224
306
  if (expr.arguments.length === 2 || expr.arguments.length === 3) {
225
307
  try {
226
308
  parser.inScope([], () => {
227
- result = this.processArray(parser, expr, param);
309
+ result = this.processArray(
310
+ parser,
311
+ expr,
312
+ /** @type {BasicEvaluatedExpression} */ (param)
313
+ );
228
314
  });
229
315
  if (!result) {
230
- const dep = new UnsupportedDependency("unsupported", expr.range);
316
+ const dep = new UnsupportedDependency(
317
+ "unsupported",
318
+ /** @type {Range} */ (expr.range)
319
+ );
231
320
  old.addPresentationalDependency(dep);
232
321
  if (parser.state.module) {
233
322
  parser.state.module.addError(
234
323
  new UnsupportedFeatureWarning(
235
324
  "Cannot statically analyse 'require(…, …)' in line " +
236
- expr.loc.start.line,
237
- expr.loc
325
+ /** @type {SourceLocation} */ (expr.loc).start.line,
326
+ /** @type {DependencyLocation} */ (expr.loc)
238
327
  )
239
328
  );
240
329
  }
241
330
  depBlock = null;
242
331
  return true;
243
332
  }
244
- dep.functionBindThis = this.processFunctionArgument(
333
+ /** @type {AMDRequireDependency} */
334
+ (dep).functionBindThis = this.processFunctionArgument(
245
335
  parser,
246
336
  expr.arguments[1]
247
337
  );
248
338
  if (expr.arguments.length === 3) {
249
- dep.errorCallbackBindThis = this.processFunctionArgument(
339
+ /** @type {AMDRequireDependency} */
340
+ (dep).errorCallbackBindThis = this.processFunctionArgument(
250
341
  parser,
251
342
  expr.arguments[2]
252
343
  );
@@ -259,9 +350,22 @@ class AMDRequireDependenciesBlockParserPlugin {
259
350
  }
260
351
  }
261
352
 
353
+ /**
354
+ * @param {DependencyLocation} loc location
355
+ * @param {string} request request
356
+ * @returns {AMDRequireDependenciesBlock} AMDRequireDependenciesBlock
357
+ */
262
358
  newRequireDependenciesBlock(loc, request) {
263
359
  return new AMDRequireDependenciesBlock(loc, request);
264
360
  }
361
+
362
+ /**
363
+ * @param {Range} outerRange outer range
364
+ * @param {Range} arrayRange array range
365
+ * @param {Range | null} functionRange function range
366
+ * @param {Range | null} errorCallbackRange error callback range
367
+ * @returns {AMDRequireDependency} dependency
368
+ */
265
369
  newRequireDependency(
266
370
  outerRange,
267
371
  arrayRange,
@@ -275,9 +379,21 @@ class AMDRequireDependenciesBlockParserPlugin {
275
379
  errorCallbackRange
276
380
  );
277
381
  }
382
+
383
+ /**
384
+ * @param {string} request request
385
+ * @param {Range=} range range
386
+ * @returns {AMDRequireItemDependency} AMDRequireItemDependency
387
+ */
278
388
  newRequireItemDependency(request, range) {
279
389
  return new AMDRequireItemDependency(request, range);
280
390
  }
391
+
392
+ /**
393
+ * @param {(string | LocalModuleDependency | AMDRequireItemDependency)[]} depsArray deps array
394
+ * @param {Range} range range
395
+ * @returns {AMDRequireArrayDependency} AMDRequireArrayDependency
396
+ */
281
397
  newRequireArrayDependency(depsArray, range) {
282
398
  return new AMDRequireArrayDependency(depsArray, range);
283
399
  }
@@ -21,8 +21,8 @@ class AMDRequireDependency extends NullDependency {
21
21
  /**
22
22
  * @param {Range} outerRange outer range
23
23
  * @param {Range} arrayRange array range
24
- * @param {Range} functionRange function range
25
- * @param {Range} errorCallbackRange error callback range
24
+ * @param {Range | null} functionRange function range
25
+ * @param {Range | null} errorCallbackRange error callback range
26
26
  */
27
27
  constructor(outerRange, arrayRange, functionRange, errorCallbackRange) {
28
28
  super();
@@ -14,7 +14,7 @@ const ModuleDependencyTemplateAsRequireId = require("./ModuleDependencyTemplateA
14
14
  class AMDRequireItemDependency extends ModuleDependency {
15
15
  /**
16
16
  * @param {string} request the request string
17
- * @param {Range} range location in source code
17
+ * @param {Range=} range location in source code
18
18
  */
19
19
  constructor(request, range) {
20
20
  super(request);
@@ -25,7 +25,7 @@ const NullDependency = require("./NullDependency");
25
25
  /**
26
26
  * @param {ModuleGraph} moduleGraph the module graph
27
27
  * @param {Module} module the module
28
- * @param {string | null} exportName name of the export if any
28
+ * @param {string[] | null} exportName name of the export if any
29
29
  * @param {string | null} property name of the requested property
30
30
  * @param {RuntimeSpec} runtime for which runtime
31
31
  * @returns {any} value of the property
@@ -51,23 +51,19 @@ const getProperty = (moduleGraph, module, exportName, property, runtime) => {
51
51
  switch (property) {
52
52
  case "canMangle": {
53
53
  const exportsInfo = moduleGraph.getExportsInfo(module);
54
- const exportInfo = exportsInfo.getExportInfo(
55
- /** @type {string} */ (exportName)
56
- );
54
+ const exportInfo = exportsInfo.getExportInfo(exportName[0]);
57
55
  if (exportInfo) return exportInfo.canMangle;
58
56
  return exportsInfo.otherExportsInfo.canMangle;
59
57
  }
60
58
  case "used":
61
59
  return (
62
- moduleGraph
63
- .getExportsInfo(module)
64
- .getUsed(/** @type {string} */ (exportName), runtime) !==
60
+ moduleGraph.getExportsInfo(module).getUsed(exportName, runtime) !==
65
61
  UsageState.Unused
66
62
  );
67
63
  case "useInfo": {
68
64
  const state = moduleGraph
69
65
  .getExportsInfo(module)
70
- .getUsed(/** @type {string} */ (exportName), runtime);
66
+ .getUsed(exportName, runtime);
71
67
  switch (state) {
72
68
  case UsageState.Used:
73
69
  case UsageState.OnlyPropertiesUsed:
@@ -83,9 +79,7 @@ const getProperty = (moduleGraph, module, exportName, property, runtime) => {
83
79
  }
84
80
  }
85
81
  case "provideInfo":
86
- return moduleGraph
87
- .getExportsInfo(module)
88
- .isExportProvided(/** @type {string} */ (exportName));
82
+ return moduleGraph.getExportsInfo(module).isExportProvided(exportName);
89
83
  }
90
84
  return undefined;
91
85
  };
@@ -93,7 +87,7 @@ const getProperty = (moduleGraph, module, exportName, property, runtime) => {
93
87
  class ExportsInfoDependency extends NullDependency {
94
88
  /**
95
89
  * @param {Range} range range
96
- * @param {TODO} exportName export name
90
+ * @param {string[] | null} exportName export name
97
91
  * @param {string | null} property property
98
92
  */
99
93
  constructor(range, exportName, property) {
@@ -14,11 +14,20 @@ const ExternalModuleInitFragment = require("./ExternalModuleInitFragment");
14
14
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
16
  /** @typedef {import("../javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
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/Hash")} Hash */
20
21
 
21
22
  class ExternalModuleDependency extends CachedConstDependency {
23
+ /**
24
+ * @param {string} module module
25
+ * @param {{ name: string, value: string }[]} importSpecifiers import specifiers
26
+ * @param {string | undefined} defaultImport default import
27
+ * @param {string} expression expression
28
+ * @param {Range} range range
29
+ * @param {string} identifier identifier
30
+ */
22
31
  constructor(
23
32
  module,
24
33
  importSpecifiers,
@@ -9,11 +9,14 @@ const InitFragment = require("../InitFragment");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
11
  /** @typedef {import("webpack-sources").Source} Source */
12
- /** @typedef {import("../Generator").GenerateContext} Context */
12
+ /** @typedef {import("../Generator").GenerateContext} GenerateContext */
13
13
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
14
14
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
15
  /** @typedef {Map<string, Set<string>>} ImportSpecifiers */
16
16
 
17
+ /**
18
+ * @extends {InitFragment<GenerateContext>}
19
+ */
17
20
  class ExternalModuleInitFragment extends InitFragment {
18
21
  /**
19
22
  * @param {string} importedModule imported module
@@ -45,6 +48,10 @@ class ExternalModuleInitFragment extends InitFragment {
45
48
  this.defaultImport = defaultImport;
46
49
  }
47
50
 
51
+ /**
52
+ * @param {ExternalModuleInitFragment} other other
53
+ * @returns {ExternalModuleInitFragment} ExternalModuleInitFragment
54
+ */
48
55
  merge(other) {
49
56
  const newSpecifiersMap = new Map(this.specifiers);
50
57
  for (const [name, specifiers] of other.specifiers) {
@@ -63,8 +70,8 @@ class ExternalModuleInitFragment extends InitFragment {
63
70
  }
64
71
 
65
72
  /**
66
- * @param {Context} context context
67
- * @returns {string|Source} the source code that will be included as initialization code
73
+ * @param {GenerateContext} context context
74
+ * @returns {string | Source} the source code that will be included as initialization code
68
75
  */
69
76
  getContent({ runtimeRequirements }) {
70
77
  const namedImports = [];
@@ -130,8 +130,8 @@ class HarmonyExportInitFragment extends InitFragment {
130
130
  }
131
131
 
132
132
  /**
133
- * @param {Context} context context
134
- * @returns {string|Source} the source code that will be included as initialization code
133
+ * @param {GenerateContext} context context
134
+ * @returns {string | Source} the source code that will be included as initialization code
135
135
  */
136
136
  getContent({ runtimeTemplate, runtimeRequirements }) {
137
137
  runtimeRequirements.add(RuntimeGlobals.exports);
@@ -192,7 +192,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
192
192
  for (const key of this.referencedPropertiesInDestructuring) {
193
193
  refs.push({
194
194
  name: ids ? ids.concat([key]) : [key],
195
- canMangle: false
195
+ canMangle: Array.isArray(ids) && ids.length > 0
196
196
  });
197
197
  }
198
198
  return refs;
@@ -287,6 +287,7 @@ class ImportParserPlugin {
287
287
  exports
288
288
  );
289
289
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
290
+ dep.optional = !!parser.scope.inTry;
290
291
  depBlock.addDependency(dep);
291
292
  parser.state.current.addBlock(depBlock);
292
293
  }
@@ -19,7 +19,7 @@ const NullDependency = require("./NullDependency");
19
19
  class LocalModuleDependency extends NullDependency {
20
20
  /**
21
21
  * @param {LocalModule} localModule local module
22
- * @param {Range} range range
22
+ * @param {Range | undefined} range range
23
23
  * @param {boolean} callNew true, when the local module should be called with new
24
24
  */
25
25
  constructor(localModule, range, callNew) {
@@ -184,8 +184,9 @@ class WorkerPlugin {
184
184
  }
185
185
  }
186
186
  const insertType = expr.properties.length > 0 ? "comma" : "single";
187
- const insertLocation =
188
- expr.properties[expr.properties.length - 1].range[1];
187
+ const insertLocation = /** @type {Range} */ (
188
+ expr.properties[expr.properties.length - 1].range
189
+ )[1];
189
190
  return {
190
191
  expressions,
191
192
  otherElements,
@@ -9,8 +9,8 @@
9
9
  /** @typedef {import("estree").SpreadElement} SpreadElement */
10
10
 
11
11
  /**
12
- * @param {Expression} expr expressions
13
- * @returns {{fn: TODO, expressions: (Expression | SpreadElement)[], needThis: boolean | undefined }} function expression with additional information
12
+ * @param {Expression | SpreadElement} expr expressions
13
+ * @returns {{fn: TODO, expressions: (Expression | SpreadElement)[], needThis: boolean | undefined } | undefined} function expression with additional information
14
14
  */
15
15
  module.exports = expr => {
16
16
  // <FunctionExpression>
@@ -215,7 +215,7 @@ module.exports = function () {
215
215
  for (var i = 0; i < registeredStatusHandlers.length; i++)
216
216
  results[i] = registeredStatusHandlers[i].call(null, newStatus);
217
217
 
218
- return Promise.all(results);
218
+ return Promise.all(results).then(function () {});
219
219
  }
220
220
 
221
221
  function unblock() {