webpack 5.85.0 → 5.85.1

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.

@@ -212,7 +212,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
212
212
  .for(harmonySpecifierTag)
213
213
  .tap(
214
214
  "HarmonyImportDependencyParserPlugin",
215
- (expression, members, membersOptionals, memberRangeStarts) => {
215
+ (expression, members, membersOptionals, memberRanges) => {
216
216
  const settings = /** @type {HarmonySettings} */ (
217
217
  parser.currentTagData
218
218
  );
@@ -220,10 +220,9 @@ module.exports = class HarmonyImportDependencyParserPlugin {
220
220
  members,
221
221
  membersOptionals
222
222
  );
223
- const rangeStarts = memberRangeStarts.slice(
223
+ const ranges = memberRanges.slice(
224
224
  0,
225
- memberRangeStarts.length -
226
- (members.length - nonOptionalMembers.length)
225
+ memberRanges.length - (members.length - nonOptionalMembers.length)
227
226
  );
228
227
  const expr =
229
228
  nonOptionalMembers !== members
@@ -241,7 +240,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
241
240
  expr.range,
242
241
  exportPresenceMode,
243
242
  settings.assertions,
244
- rangeStarts
243
+ ranges
245
244
  );
246
245
  dep.referencedPropertiesInDestructuring =
247
246
  parser.destructuringAssignmentPropertiesFor(expr);
@@ -256,7 +255,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
256
255
  .for(harmonySpecifierTag)
257
256
  .tap(
258
257
  "HarmonyImportDependencyParserPlugin",
259
- (expression, members, membersOptionals, memberRangeStarts) => {
258
+ (expression, members, membersOptionals, memberRanges) => {
260
259
  const { arguments: args, callee } = expression;
261
260
  const settings = /** @type {HarmonySettings} */ (
262
261
  parser.currentTagData
@@ -265,10 +264,9 @@ module.exports = class HarmonyImportDependencyParserPlugin {
265
264
  members,
266
265
  membersOptionals
267
266
  );
268
- const rangeStarts = memberRangeStarts.slice(
267
+ const ranges = memberRanges.slice(
269
268
  0,
270
- memberRangeStarts.length -
271
- (members.length - nonOptionalMembers.length)
269
+ memberRanges.length - (members.length - nonOptionalMembers.length)
272
270
  );
273
271
  const expr =
274
272
  nonOptionalMembers !== members
@@ -286,7 +284,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
286
284
  expr.range,
287
285
  exportPresenceMode,
288
286
  settings.assertions,
289
- rangeStarts
287
+ ranges
290
288
  );
291
289
  dep.directImport = members.length === 0;
292
290
  dep.call = true;
@@ -43,7 +43,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
43
43
  * @param {Range} range range
44
44
  * @param {TODO} exportPresenceMode export presence mode
45
45
  * @param {Assertions=} assertions assertions
46
- * @param {number[]=} idRangeStarts range starts for members of ids; the two arrays are right-aligned
46
+ * @param {Range[]=} idRanges ranges for members of ids; the two arrays are right-aligned
47
47
  */
48
48
  constructor(
49
49
  request,
@@ -53,13 +53,13 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
53
53
  range,
54
54
  exportPresenceMode,
55
55
  assertions,
56
- idRangeStarts // TODO webpack 6 make this non-optional. It must always be set to properly trim ids.
56
+ idRanges // TODO webpack 6 make this non-optional. It must always be set to properly trim ids.
57
57
  ) {
58
58
  super(request, sourceOrder, assertions);
59
59
  this.ids = ids;
60
60
  this.name = name;
61
61
  this.range = range;
62
- this.idRangeStarts = idRangeStarts;
62
+ this.idRanges = idRanges;
63
63
  this.exportPresenceMode = exportPresenceMode;
64
64
  this.namespaceObjectAsContext = false;
65
65
  this.call = undefined;
@@ -261,7 +261,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
261
261
  write(this.ids);
262
262
  write(this.name);
263
263
  write(this.range);
264
- write(this.idRangeStarts);
264
+ write(this.idRanges);
265
265
  write(this.exportPresenceMode);
266
266
  write(this.namespaceObjectAsContext);
267
267
  write(this.call);
@@ -281,7 +281,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
281
281
  this.ids = read();
282
282
  this.name = read();
283
283
  this.range = read();
284
- this.idRangeStarts = read();
284
+ this.idRanges = read();
285
285
  this.exportPresenceMode = read();
286
286
  this.namespaceObjectAsContext = read();
287
287
  this.call = read();
@@ -320,15 +320,15 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
320
320
 
321
321
  let [rangeStart, rangeEnd] = dep.range;
322
322
  if (trimmedIds.length !== ids.length) {
323
- // The array returned from dep.idRangeStarts is right-aligned with the array returned from dep.getIds.
323
+ // The array returned from dep.idRanges is right-aligned with the array returned from dep.getIds.
324
324
  // Meaning, the two arrays may not always have the same number of elements, but the last element of
325
- // dep.idRangeStarts corresponds to [the starting range position of] the last element of dep.getIds.
326
- // Use this to find the correct range end position based on the number of ids that were trimmed.
325
+ // dep.idRanges corresponds to [the expression fragment to the left of] the last element of dep.getIds.
326
+ // Use this to find the correct replacement range based on the number of ids that were trimmed.
327
327
  const idx =
328
- dep.idRangeStarts === undefined
328
+ dep.idRanges === undefined
329
329
  ? -1 /* trigger failure case below */
330
- : dep.idRangeStarts.length + (trimmedIds.length - ids.length);
331
- if (idx < 0 || idx >= dep.idRangeStarts.length) {
330
+ : dep.idRanges.length + (trimmedIds.length - ids.length);
331
+ if (idx < 0 || idx >= dep.idRanges.length) {
332
332
  // cspell:ignore minifiers
333
333
  // Should not happen but we can't throw an error here because of backward compatibility with
334
334
  // external plugins in wp5. Instead, we just disable trimming for now. This may break some minifiers.
@@ -336,7 +336,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
336
336
  // TODO webpack 6 remove the "trimmedIds = ids" above and uncomment the following line instead.
337
337
  // throw new Error("Missing range starts data for id replacement trimming.");
338
338
  } else {
339
- rangeEnd = dep.idRangeStarts[idx];
339
+ [rangeStart, rangeEnd] = dep.idRanges[idx];
340
340
  }
341
341
  }
342
342
 
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  /** @typedef {import("estree").Node} EsTreeNode */
9
+ /** @typedef {import("./JavascriptParser").Range} Range */
9
10
  /** @typedef {import("./JavascriptParser").VariableInfoInterface} VariableInfoInterface */
10
11
 
11
12
  const TypeUnknown = 0;
@@ -70,8 +71,8 @@ class BasicEvaluatedExpression {
70
71
  this.getMembers = undefined;
71
72
  /** @type {() => boolean[]} */
72
73
  this.getMembersOptionals = undefined;
73
- /** @type {() => number[]} */
74
- this.getMemberRangeStarts = undefined;
74
+ /** @type {() => Range[]} */
75
+ this.getMemberRanges = undefined;
75
76
  /** @type {EsTreeNode} */
76
77
  this.expression = undefined;
77
78
  }
@@ -386,7 +387,7 @@ class BasicEvaluatedExpression {
386
387
  * @param {string | VariableInfoInterface} rootInfo root info
387
388
  * @param {() => string[]} getMembers members
388
389
  * @param {() => boolean[]=} getMembersOptionals optional members
389
- * @param {() => number[]=} getMemberRangeStarts range start of progressively increasing sub-expressions
390
+ * @param {() => Range[]=} getMemberRanges ranges of progressively increasing sub-expressions
390
391
  * @returns {this} this
391
392
  */
392
393
  setIdentifier(
@@ -394,14 +395,14 @@ class BasicEvaluatedExpression {
394
395
  rootInfo,
395
396
  getMembers,
396
397
  getMembersOptionals,
397
- getMemberRangeStarts
398
+ getMemberRanges
398
399
  ) {
399
400
  this.type = TypeIdentifier;
400
401
  this.identifier = identifier;
401
402
  this.rootInfo = rootInfo;
402
403
  this.getMembers = getMembers;
403
404
  this.getMembersOptionals = getMembersOptionals;
404
- this.getMemberRangeStarts = getMemberRangeStarts;
405
+ this.getMemberRanges = getMemberRanges;
405
406
  this.sideEffects = true;
406
407
  return this;
407
408
  }
@@ -91,7 +91,7 @@ const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
91
91
  /** @typedef {import("../Parser").ParserState} ParserState */
92
92
  /** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
93
93
  /** @typedef {{declaredScope: ScopeInfo, freeName: string | true, tagInfo: TagInfo | undefined}} VariableInfoInterface */
94
- /** @typedef {{ name: string | VariableInfo, rootInfo: string | VariableInfo, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRangeStarts: () => number[] }} GetInfoResult */
94
+ /** @typedef {{ name: string | VariableInfo, rootInfo: string | VariableInfo, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRanges: () => Range[] }} GetInfoResult */
95
95
 
96
96
  const EMPTY_ARRAY = [];
97
97
  const ALLOWED_MEMBER_TYPES_CALL_EXPRESSION = 0b01;
@@ -350,14 +350,14 @@ class JavascriptParser extends Parser {
350
350
  /** @type {HookMap<SyncBailHook<[BaseCallExpression], boolean | void>>} */
351
351
  call: new HookMap(() => new SyncBailHook(["expression"])),
352
352
  /** Something like "a.b()" */
353
- /** @type {HookMap<SyncBailHook<[CallExpression, string[], boolean[], number[]], boolean | void>>} */
353
+ /** @type {HookMap<SyncBailHook<[CallExpression, string[], boolean[], Range[]], boolean | void>>} */
354
354
  callMemberChain: new HookMap(
355
355
  () =>
356
356
  new SyncBailHook([
357
357
  "expression",
358
358
  "members",
359
359
  "membersOptionals",
360
- "memberRangeStarts"
360
+ "memberRanges"
361
361
  ])
362
362
  ),
363
363
  /** Something like "a.b().c.d" */
@@ -390,14 +390,14 @@ class JavascriptParser extends Parser {
390
390
  binaryExpression: new SyncBailHook(["binaryExpression"]),
391
391
  /** @type {HookMap<SyncBailHook<[Expression], boolean | void>>} */
392
392
  expression: new HookMap(() => new SyncBailHook(["expression"])),
393
- /** @type {HookMap<SyncBailHook<[Expression, string[], boolean[], number[]], boolean | void>>} */
393
+ /** @type {HookMap<SyncBailHook<[Expression, string[], boolean[], Range[]], boolean | void>>} */
394
394
  expressionMemberChain: new HookMap(
395
395
  () =>
396
396
  new SyncBailHook([
397
397
  "expression",
398
398
  "members",
399
399
  "membersOptionals",
400
- "memberRangeStarts"
400
+ "memberRanges"
401
401
  ])
402
402
  ),
403
403
  /** @type {HookMap<SyncBailHook<[Expression, string[]], boolean | void>>} */
@@ -1163,7 +1163,7 @@ class JavascriptParser extends Parser {
1163
1163
  info.rootInfo,
1164
1164
  info.getMembers,
1165
1165
  info.getMembersOptionals,
1166
- info.getMemberRangeStarts
1166
+ info.getMemberRanges
1167
1167
  )
1168
1168
  .setRange(expr.range);
1169
1169
  }
@@ -1184,7 +1184,7 @@ class JavascriptParser extends Parser {
1184
1184
  rootInfo: info,
1185
1185
  getMembers: () => [],
1186
1186
  getMembersOptionals: () => [],
1187
- getMemberRangeStarts: () => []
1187
+ getMemberRanges: () => []
1188
1188
  };
1189
1189
  }
1190
1190
  });
@@ -1199,7 +1199,7 @@ class JavascriptParser extends Parser {
1199
1199
  rootInfo: info,
1200
1200
  getMembers: () => [],
1201
1201
  getMembersOptionals: () => [],
1202
- getMemberRangeStarts: () => []
1202
+ getMemberRanges: () => []
1203
1203
  };
1204
1204
  }
1205
1205
  });
@@ -3264,7 +3264,7 @@ class JavascriptParser extends Parser {
3264
3264
  callee.getMembersOptionals
3265
3265
  ? callee.getMembersOptionals()
3266
3266
  : callee.getMembers().map(() => false),
3267
- callee.getMemberRangeStarts ? callee.getMemberRangeStarts() : []
3267
+ callee.getMemberRanges ? callee.getMemberRanges() : []
3268
3268
  );
3269
3269
  if (result1 === true) return;
3270
3270
  const result2 = this.callHooksForInfo(
@@ -3308,14 +3308,14 @@ class JavascriptParser extends Parser {
3308
3308
  if (result1 === true) return;
3309
3309
  const members = exprInfo.getMembers();
3310
3310
  const membersOptionals = exprInfo.getMembersOptionals();
3311
- const memberRangeStarts = exprInfo.getMemberRangeStarts();
3311
+ const memberRanges = exprInfo.getMemberRanges();
3312
3312
  const result2 = this.callHooksForInfo(
3313
3313
  this.hooks.expressionMemberChain,
3314
3314
  exprInfo.rootInfo,
3315
3315
  expression,
3316
3316
  members,
3317
3317
  membersOptionals,
3318
- memberRangeStarts
3318
+ memberRanges
3319
3319
  );
3320
3320
  if (result2 === true) return;
3321
3321
  this.walkMemberExpressionWithExpressionName(
@@ -4271,23 +4271,23 @@ class JavascriptParser extends Parser {
4271
4271
 
4272
4272
  /**
4273
4273
  * @param {MemberExpression} expression a member expression
4274
- * @returns {{ members: string[], object: Expression | Super, membersOptionals: boolean[], memberRangeStarts: number[] }} member names (reverse order) and remaining object
4274
+ * @returns {{ members: string[], object: Expression | Super, membersOptionals: boolean[], memberRanges: Range[] }} member names (reverse order) and remaining object
4275
4275
  */
4276
4276
  extractMemberExpressionChain(expression) {
4277
4277
  /** @type {AnyNode} */
4278
4278
  let expr = expression;
4279
4279
  const members = [];
4280
4280
  const membersOptionals = [];
4281
- const memberRangeStarts = [];
4281
+ const memberRanges = [];
4282
4282
  while (expr.type === "MemberExpression") {
4283
4283
  if (expr.computed) {
4284
4284
  if (expr.property.type !== "Literal") break;
4285
- members.push(`${expr.property.value}`);
4286
- memberRangeStarts.push(expr.object.range[1]);
4285
+ members.push(`${expr.property.value}`); // the literal
4286
+ memberRanges.push(expr.object.range); // the range of the expression fragment before the literal
4287
4287
  } else {
4288
4288
  if (expr.property.type !== "Identifier") break;
4289
- members.push(expr.property.name);
4290
- memberRangeStarts.push(expr.object.range[1]);
4289
+ members.push(expr.property.name); // the identifier
4290
+ memberRanges.push(expr.object.range); // the range of the expression fragment before the identifier
4291
4291
  }
4292
4292
  membersOptionals.push(expr.optional);
4293
4293
  expr = expr.object;
@@ -4296,7 +4296,7 @@ class JavascriptParser extends Parser {
4296
4296
  return {
4297
4297
  members,
4298
4298
  membersOptionals,
4299
- memberRangeStarts,
4299
+ memberRanges,
4300
4300
  object: expr
4301
4301
  };
4302
4302
  }
@@ -4319,8 +4319,8 @@ class JavascriptParser extends Parser {
4319
4319
  return { info, name };
4320
4320
  }
4321
4321
 
4322
- /** @typedef {{ type: "call", call: CallExpression, calleeName: string, rootInfo: string | VariableInfo, getCalleeMembers: () => string[], name: string, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRangeStarts: () => number[]}} CallExpressionInfo */
4323
- /** @typedef {{ type: "expression", rootInfo: string | VariableInfo, name: string, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRangeStarts: () => number[]}} ExpressionExpressionInfo */
4322
+ /** @typedef {{ type: "call", call: CallExpression, calleeName: string, rootInfo: string | VariableInfo, getCalleeMembers: () => string[], name: string, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRanges: () => Range[]}} CallExpressionInfo */
4323
+ /** @typedef {{ type: "expression", rootInfo: string | VariableInfo, name: string, getMembers: () => string[], getMembersOptionals: () => boolean[], getMemberRanges: () => Range[]}} ExpressionExpressionInfo */
4324
4324
 
4325
4325
  /**
4326
4326
  * @param {MemberExpression} expression a member expression
@@ -4328,7 +4328,7 @@ class JavascriptParser extends Parser {
4328
4328
  * @returns {CallExpressionInfo | ExpressionExpressionInfo | undefined} expression info
4329
4329
  */
4330
4330
  getMemberExpressionInfo(expression, allowedTypes) {
4331
- const { object, members, membersOptionals, memberRangeStarts } =
4331
+ const { object, members, membersOptionals, memberRanges } =
4332
4332
  this.extractMemberExpressionChain(expression);
4333
4333
  switch (object.type) {
4334
4334
  case "CallExpression": {
@@ -4355,7 +4355,7 @@ class JavascriptParser extends Parser {
4355
4355
  name: objectAndMembersToName(`${calleeName}()`, members),
4356
4356
  getMembers: memoize(() => members.reverse()),
4357
4357
  getMembersOptionals: memoize(() => membersOptionals.reverse()),
4358
- getMemberRangeStarts: memoize(() => memberRangeStarts.reverse())
4358
+ getMemberRanges: memoize(() => memberRanges.reverse())
4359
4359
  };
4360
4360
  }
4361
4361
  case "Identifier":
@@ -4375,7 +4375,7 @@ class JavascriptParser extends Parser {
4375
4375
  rootInfo,
4376
4376
  getMembers: memoize(() => members.reverse()),
4377
4377
  getMembersOptionals: memoize(() => membersOptionals.reverse()),
4378
- getMemberRangeStarts: memoize(() => memberRangeStarts.reverse())
4378
+ getMemberRanges: memoize(() => memberRanges.reverse())
4379
4379
  };
4380
4380
  }
4381
4381
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webpack",
3
- "version": "5.85.0",
3
+ "version": "5.85.1",
4
4
  "author": "Tobias Koppers @sokra",
5
5
  "description": "Packs ECMAScript/CommonJs/AMD modules for the browser. Allows you to split your codebase into multiple bundles, which can be loaded on demand. Supports loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.",
6
6
  "license": "MIT",
package/types.d.ts CHANGED
@@ -507,7 +507,7 @@ declare abstract class BasicEvaluatedExpression {
507
507
  rootInfo: string | VariableInfoInterface;
508
508
  getMembers: () => string[];
509
509
  getMembersOptionals: () => boolean[];
510
- getMemberRangeStarts: () => number[];
510
+ getMemberRanges: () => [number, number][];
511
511
  expression: NodeEstreeIndex;
512
512
  isUnknown(): boolean;
513
513
  isNull(): boolean;
@@ -593,7 +593,7 @@ declare abstract class BasicEvaluatedExpression {
593
593
  rootInfo: string | VariableInfoInterface,
594
594
  getMembers: () => string[],
595
595
  getMembersOptionals?: () => boolean[],
596
- getMemberRangeStarts?: () => number[]
596
+ getMemberRanges?: () => [number, number][]
597
597
  ): BasicEvaluatedExpression;
598
598
 
599
599
  /**
@@ -788,7 +788,7 @@ declare interface CallExpressionInfo {
788
788
  name: string;
789
789
  getMembers: () => string[];
790
790
  getMembersOptionals: () => boolean[];
791
- getMemberRangeStarts: () => number[];
791
+ getMemberRanges: () => [number, number][];
792
792
  }
793
793
  declare interface CallbackAsyncQueue<T> {
794
794
  (err?: null | WebpackError, result?: T): any;
@@ -3991,7 +3991,7 @@ declare interface ExpressionExpressionInfo {
3991
3991
  name: string;
3992
3992
  getMembers: () => string[];
3993
3993
  getMembersOptionals: () => boolean[];
3994
- getMemberRangeStarts: () => number[];
3994
+ getMemberRanges: () => [number, number][];
3995
3995
  }
3996
3996
  declare interface ExtensionAliasOption {
3997
3997
  alias: string | string[];
@@ -5344,7 +5344,7 @@ declare class JavascriptParser extends Parser {
5344
5344
  call: HookMap<SyncBailHook<[BaseCallExpression], boolean | void>>;
5345
5345
  callMemberChain: HookMap<
5346
5346
  SyncBailHook<
5347
- [CallExpression, string[], boolean[], number[]],
5347
+ [CallExpression, string[], boolean[], [number, number][]],
5348
5348
  boolean | void
5349
5349
  >
5350
5350
  >;
@@ -5365,7 +5365,10 @@ declare class JavascriptParser extends Parser {
5365
5365
  binaryExpression: SyncBailHook<[BinaryExpression], boolean | void>;
5366
5366
  expression: HookMap<SyncBailHook<[Expression], boolean | void>>;
5367
5367
  expressionMemberChain: HookMap<
5368
- SyncBailHook<[Expression, string[], boolean[], number[]], boolean | void>
5368
+ SyncBailHook<
5369
+ [Expression, string[], boolean[], [number, number][]],
5370
+ boolean | void
5371
+ >
5369
5372
  >;
5370
5373
  unhandledExpressionMemberChain: HookMap<
5371
5374
  SyncBailHook<[Expression, string[]], boolean | void>
@@ -5954,7 +5957,7 @@ declare class JavascriptParser extends Parser {
5954
5957
  | YieldExpression
5955
5958
  | Super;
5956
5959
  membersOptionals: boolean[];
5957
- memberRangeStarts: number[];
5960
+ memberRanges: [number, number][];
5958
5961
  };
5959
5962
  getFreeInfoFromVariable(varName: string): {
5960
5963
  name: string;