rollup 3.18.0 → 3.19.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.
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v3.18.0
4
- Wed, 01 Mar 2023 18:45:12 GMT - commit 25bdc129d21685b69a00ee55397d42ac6eff6449
3
+ Rollup.js v3.19.0
4
+ Thu, 09 Mar 2023 19:00:13 GMT - commit cff3bbcb34cf35a765a8bcbbd56ba643bd1de68d
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -16,7 +16,7 @@ import { lstat, realpath, readdir, readFile, mkdir, writeFile } from 'node:fs/pr
16
16
  import { EventEmitter } from 'node:events';
17
17
  import * as tty from 'tty';
18
18
 
19
- var version$1 = "3.18.0";
19
+ var version$1 = "3.19.0";
20
20
 
21
21
  const comma = ','.charCodeAt(0);
22
22
  const semicolon = ';'.charCodeAt(0);
@@ -557,6 +557,7 @@ class MagicString {
557
557
  sourcemapLocations: { writable: true, value: new BitSet() },
558
558
  storedNames: { writable: true, value: {} },
559
559
  indentStr: { writable: true, value: undefined },
560
+ ignoreList: { writable: true, value: options.ignoreList },
560
561
  });
561
562
 
562
563
  this.byStart[0] = chunk;
@@ -674,11 +675,12 @@ class MagicString {
674
675
  });
675
676
 
676
677
  return {
677
- file: options.file ? options.file.split(/[/\\]/).pop() : null,
678
- sources: [options.source ? getRelativePath(options.file || '', options.source) : null],
679
- sourcesContent: options.includeContent ? [this.original] : [null],
678
+ file: options.file ? options.file.split(/[/\\]/).pop() : undefined,
679
+ sources: [options.source ? getRelativePath(options.file || '', options.source) : (options.file || '')],
680
+ sourcesContent: options.includeContent ? [this.original] : undefined,
680
681
  names,
681
682
  mappings: mappings.raw,
683
+ x_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined
682
684
  };
683
685
  }
684
686
 
@@ -1348,7 +1350,7 @@ let Bundle$1 = class Bundle {
1348
1350
  );
1349
1351
  }
1350
1352
 
1351
- ['filename', 'indentExclusionRanges', 'separator'].forEach((option) => {
1353
+ ['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {
1352
1354
  if (!hasOwnProp.call(source, option)) source[option] = source.content[option];
1353
1355
  });
1354
1356
 
@@ -1401,6 +1403,7 @@ let Bundle$1 = class Bundle {
1401
1403
 
1402
1404
  generateDecodedMap(options = {}) {
1403
1405
  const names = [];
1406
+ let x_google_ignoreList = undefined;
1404
1407
  this.sources.forEach((source) => {
1405
1408
  Object.keys(source.content.storedNames).forEach((name) => {
1406
1409
  if (!~names.indexOf(name)) names.push(name);
@@ -1458,10 +1461,17 @@ let Bundle$1 = class Bundle {
1458
1461
  if (magicString.outro) {
1459
1462
  mappings.advance(magicString.outro);
1460
1463
  }
1464
+
1465
+ if (source.ignoreList && sourceIndex !== -1) {
1466
+ if (x_google_ignoreList === undefined) {
1467
+ x_google_ignoreList = [];
1468
+ }
1469
+ x_google_ignoreList.push(sourceIndex);
1470
+ }
1461
1471
  });
1462
1472
 
1463
1473
  return {
1464
- file: options.file ? options.file.split(/[/\\]/).pop() : null,
1474
+ file: options.file ? options.file.split(/[/\\]/).pop() : undefined,
1465
1475
  sources: this.uniqueSources.map((source) => {
1466
1476
  return options.file ? getRelativePath(options.file, source.filename) : source.filename;
1467
1477
  }),
@@ -1470,6 +1480,7 @@ let Bundle$1 = class Bundle {
1470
1480
  }),
1471
1481
  names,
1472
1482
  mappings: mappings.raw,
1483
+ x_google_ignoreList,
1473
1484
  };
1474
1485
  }
1475
1486
 
@@ -1812,14 +1823,14 @@ class ExpressionEntity {
1812
1823
  constructor() {
1813
1824
  this.included = false;
1814
1825
  }
1815
- deoptimizePath(_path) { }
1816
- deoptimizeThisOnInteractionAtPath({ thisArg }, _path, _recursionTracker) {
1817
- thisArg.deoptimizePath(UNKNOWN_PATH);
1826
+ deoptimizeArgumentsOnInteractionAtPath(interaction, _path, _recursionTracker) {
1827
+ deoptimizeInteraction(interaction);
1818
1828
  }
1829
+ deoptimizePath(_path) { }
1819
1830
  /**
1820
- * If possible it returns a stringifyable literal value for this node that can be used
1821
- * for inlining or comparing values.
1822
- * Otherwise, it should return UnknownValue.
1831
+ * If possible it returns a stringifyable literal value for this node that
1832
+ * can be used for inlining or comparing values. Otherwise, it should return
1833
+ * UnknownValue.
1823
1834
  */
1824
1835
  getLiteralValueAtPath(_path, _recursionTracker, _origin) {
1825
1836
  return UnknownValue;
@@ -1848,11 +1859,20 @@ const UNKNOWN_RETURN_EXPRESSION = [
1848
1859
  UNKNOWN_EXPRESSION,
1849
1860
  false
1850
1861
  ];
1862
+ const deoptimizeInteraction = (interaction) => {
1863
+ interaction.thisArg?.deoptimizePath(UNKNOWN_PATH);
1864
+ if (interaction.args) {
1865
+ for (const argument of interaction.args) {
1866
+ argument.deoptimizePath(UNKNOWN_PATH);
1867
+ }
1868
+ }
1869
+ };
1851
1870
 
1852
1871
  const INTERACTION_ACCESSED = 0;
1853
1872
  const INTERACTION_ASSIGNED = 1;
1854
1873
  const INTERACTION_CALLED = 2;
1855
1874
  const NODE_INTERACTION_UNKNOWN_ACCESS = {
1875
+ args: null,
1856
1876
  thisArg: null,
1857
1877
  type: INTERACTION_ACCESSED
1858
1878
  };
@@ -5863,9 +5883,9 @@ class NodeBase extends ExpressionEntity {
5863
5883
  }
5864
5884
 
5865
5885
  class SpreadElement extends NodeBase {
5866
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
5886
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
5867
5887
  if (path.length > 0) {
5868
- this.argument.deoptimizeThisOnInteractionAtPath(interaction, [UnknownKey, ...path], recursionTracker);
5888
+ this.argument.deoptimizeArgumentsOnInteractionAtPath(interaction, [UnknownKey, ...path], recursionTracker);
5869
5889
  }
5870
5890
  }
5871
5891
  hasEffects(context) {
@@ -5892,9 +5912,9 @@ class Method extends ExpressionEntity {
5892
5912
  super();
5893
5913
  this.description = description;
5894
5914
  }
5895
- deoptimizeThisOnInteractionAtPath({ type, thisArg }, path) {
5915
+ deoptimizeArgumentsOnInteractionAtPath({ type, thisArg }, path) {
5896
5916
  if (type === INTERACTION_CALLED && path.length === 0 && this.description.mutatesSelfAsArray) {
5897
- thisArg.deoptimizePath(UNKNOWN_INTEGER_PATH);
5917
+ thisArg?.deoptimizePath(UNKNOWN_INTEGER_PATH);
5898
5918
  }
5899
5919
  }
5900
5920
  getReturnExpressionWhenCalledAtPath(path, { thisArg }) {
@@ -5972,6 +5992,7 @@ class ObjectEntity extends ExpressionEntity {
5972
5992
  super();
5973
5993
  this.prototypeExpression = prototypeExpression;
5974
5994
  this.immutable = immutable;
5995
+ this.additionalExpressionsToBeDeoptimized = new Set();
5975
5996
  this.allProperties = [];
5976
5997
  this.deoptimizedPaths = Object.create(null);
5977
5998
  this.expressionsToBeDeoptimizedByKey = Object.create(null);
@@ -5982,7 +6003,6 @@ class ObjectEntity extends ExpressionEntity {
5982
6003
  this.propertiesAndGettersByKey = Object.create(null);
5983
6004
  this.propertiesAndSettersByKey = Object.create(null);
5984
6005
  this.settersByKey = Object.create(null);
5985
- this.thisParametersToBeDeoptimized = new Set();
5986
6006
  this.unknownIntegerProps = [];
5987
6007
  this.unmatchableGetters = [];
5988
6008
  this.unmatchablePropertiesAndGetters = [];
@@ -6020,6 +6040,85 @@ class ObjectEntity extends ExpressionEntity {
6020
6040
  this.prototypeExpression?.deoptimizePath([UnknownKey, UnknownKey]);
6021
6041
  this.deoptimizeCachedEntities();
6022
6042
  }
6043
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
6044
+ const [key, ...subPath] = path;
6045
+ const { args, thisArg, type } = interaction;
6046
+ if (this.hasLostTrack ||
6047
+ // single paths that are deoptimized will not become getters or setters
6048
+ ((type === INTERACTION_CALLED || path.length > 1) &&
6049
+ (this.hasUnknownDeoptimizedProperty ||
6050
+ (typeof key === 'string' && this.deoptimizedPaths[key])))) {
6051
+ thisArg?.deoptimizePath(UNKNOWN_PATH);
6052
+ if (args) {
6053
+ for (const argument of args) {
6054
+ argument.deoptimizePath(UNKNOWN_PATH);
6055
+ }
6056
+ }
6057
+ return;
6058
+ }
6059
+ const [propertiesForExactMatchByKey, relevantPropertiesByKey, relevantUnmatchableProperties] = type === INTERACTION_CALLED || path.length > 1
6060
+ ? [
6061
+ this.propertiesAndGettersByKey,
6062
+ this.propertiesAndGettersByKey,
6063
+ this.unmatchablePropertiesAndGetters
6064
+ ]
6065
+ : type === INTERACTION_ACCESSED
6066
+ ? [this.propertiesAndGettersByKey, this.gettersByKey, this.unmatchableGetters]
6067
+ : [this.propertiesAndSettersByKey, this.settersByKey, this.unmatchableSetters];
6068
+ if (typeof key === 'string') {
6069
+ if (propertiesForExactMatchByKey[key]) {
6070
+ const properties = relevantPropertiesByKey[key];
6071
+ if (properties) {
6072
+ for (const property of properties) {
6073
+ property.deoptimizeArgumentsOnInteractionAtPath(interaction, subPath, recursionTracker);
6074
+ }
6075
+ }
6076
+ if (!this.immutable) {
6077
+ if (thisArg) {
6078
+ this.additionalExpressionsToBeDeoptimized.add(thisArg);
6079
+ }
6080
+ if (args) {
6081
+ for (const argument of args) {
6082
+ this.additionalExpressionsToBeDeoptimized.add(argument);
6083
+ }
6084
+ }
6085
+ }
6086
+ return;
6087
+ }
6088
+ for (const property of relevantUnmatchableProperties) {
6089
+ property.deoptimizeArgumentsOnInteractionAtPath(interaction, subPath, recursionTracker);
6090
+ }
6091
+ if (INTEGER_REG_EXP.test(key)) {
6092
+ for (const property of this.unknownIntegerProps) {
6093
+ property.deoptimizeArgumentsOnInteractionAtPath(interaction, subPath, recursionTracker);
6094
+ }
6095
+ }
6096
+ }
6097
+ else {
6098
+ for (const properties of [
6099
+ ...Object.values(relevantPropertiesByKey),
6100
+ relevantUnmatchableProperties
6101
+ ]) {
6102
+ for (const property of properties) {
6103
+ property.deoptimizeArgumentsOnInteractionAtPath(interaction, subPath, recursionTracker);
6104
+ }
6105
+ }
6106
+ for (const property of this.unknownIntegerProps) {
6107
+ property.deoptimizeArgumentsOnInteractionAtPath(interaction, subPath, recursionTracker);
6108
+ }
6109
+ }
6110
+ if (!this.immutable) {
6111
+ if (thisArg) {
6112
+ this.additionalExpressionsToBeDeoptimized.add(thisArg);
6113
+ }
6114
+ if (args) {
6115
+ for (const argument of args) {
6116
+ this.additionalExpressionsToBeDeoptimized.add(argument);
6117
+ }
6118
+ }
6119
+ }
6120
+ this.prototypeExpression?.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
6121
+ }
6023
6122
  deoptimizeIntegerProperties() {
6024
6123
  if (this.hasLostTrack ||
6025
6124
  this.hasUnknownDeoptimizedProperty ||
@@ -6072,65 +6171,6 @@ class ObjectEntity extends ExpressionEntity {
6072
6171
  }
6073
6172
  this.prototypeExpression?.deoptimizePath(path.length === 1 ? [...path, UnknownKey] : path);
6074
6173
  }
6075
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
6076
- const [key, ...subPath] = path;
6077
- if (this.hasLostTrack ||
6078
- // single paths that are deoptimized will not become getters or setters
6079
- ((interaction.type === INTERACTION_CALLED || path.length > 1) &&
6080
- (this.hasUnknownDeoptimizedProperty ||
6081
- (typeof key === 'string' && this.deoptimizedPaths[key])))) {
6082
- interaction.thisArg.deoptimizePath(UNKNOWN_PATH);
6083
- return;
6084
- }
6085
- const [propertiesForExactMatchByKey, relevantPropertiesByKey, relevantUnmatchableProperties] = interaction.type === INTERACTION_CALLED || path.length > 1
6086
- ? [
6087
- this.propertiesAndGettersByKey,
6088
- this.propertiesAndGettersByKey,
6089
- this.unmatchablePropertiesAndGetters
6090
- ]
6091
- : interaction.type === INTERACTION_ACCESSED
6092
- ? [this.propertiesAndGettersByKey, this.gettersByKey, this.unmatchableGetters]
6093
- : [this.propertiesAndSettersByKey, this.settersByKey, this.unmatchableSetters];
6094
- if (typeof key === 'string') {
6095
- if (propertiesForExactMatchByKey[key]) {
6096
- const properties = relevantPropertiesByKey[key];
6097
- if (properties) {
6098
- for (const property of properties) {
6099
- property.deoptimizeThisOnInteractionAtPath(interaction, subPath, recursionTracker);
6100
- }
6101
- }
6102
- if (!this.immutable) {
6103
- this.thisParametersToBeDeoptimized.add(interaction.thisArg);
6104
- }
6105
- return;
6106
- }
6107
- for (const property of relevantUnmatchableProperties) {
6108
- property.deoptimizeThisOnInteractionAtPath(interaction, subPath, recursionTracker);
6109
- }
6110
- if (INTEGER_REG_EXP.test(key)) {
6111
- for (const property of this.unknownIntegerProps) {
6112
- property.deoptimizeThisOnInteractionAtPath(interaction, subPath, recursionTracker);
6113
- }
6114
- }
6115
- }
6116
- else {
6117
- for (const properties of [
6118
- ...Object.values(relevantPropertiesByKey),
6119
- relevantUnmatchableProperties
6120
- ]) {
6121
- for (const property of properties) {
6122
- property.deoptimizeThisOnInteractionAtPath(interaction, subPath, recursionTracker);
6123
- }
6124
- }
6125
- for (const property of this.unknownIntegerProps) {
6126
- property.deoptimizeThisOnInteractionAtPath(interaction, subPath, recursionTracker);
6127
- }
6128
- }
6129
- if (!this.immutable) {
6130
- this.thisParametersToBeDeoptimized.add(interaction.thisArg);
6131
- }
6132
- this.prototypeExpression?.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
6133
- }
6134
6174
  getLiteralValueAtPath(path, recursionTracker, origin) {
6135
6175
  if (path.length === 0) {
6136
6176
  return UnknownTruthyValue;
@@ -6261,7 +6301,7 @@ class ObjectEntity extends ExpressionEntity {
6261
6301
  expression.deoptimizeCache();
6262
6302
  }
6263
6303
  }
6264
- for (const expression of this.thisParametersToBeDeoptimized) {
6304
+ for (const expression of this.additionalExpressionsToBeDeoptimized) {
6265
6305
  expression.deoptimizePath(UNKNOWN_PATH);
6266
6306
  }
6267
6307
  }
@@ -6273,7 +6313,7 @@ class ObjectEntity extends ExpressionEntity {
6273
6313
  }
6274
6314
  }
6275
6315
  }
6276
- for (const expression of this.thisParametersToBeDeoptimized) {
6316
+ for (const expression of this.additionalExpressionsToBeDeoptimized) {
6277
6317
  expression.deoptimizePath(UNKNOWN_INTEGER_PATH);
6278
6318
  }
6279
6319
  }
@@ -6316,9 +6356,9 @@ const isInteger = (property) => typeof property === 'string' && /^\d+$/.test(pro
6316
6356
  // properties as we do not expect new builtin properties to be numbers, this
6317
6357
  // will improve tree-shaking for out-of-bounds array properties
6318
6358
  const OBJECT_PROTOTYPE_FALLBACK = new (class ObjectPrototypeFallbackExpression extends ExpressionEntity {
6319
- deoptimizeThisOnInteractionAtPath({ type, thisArg }, path) {
6320
- if (type === INTERACTION_CALLED && path.length === 1 && !isInteger(path[0])) {
6321
- thisArg.deoptimizePath(UNKNOWN_PATH);
6359
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path) {
6360
+ if (interaction.type === INTERACTION_CALLED && path.length === 1 && !isInteger(path[0])) {
6361
+ deoptimizeInteraction(interaction);
6322
6362
  }
6323
6363
  }
6324
6364
  getLiteralValueAtPath(path) {
@@ -6477,12 +6517,12 @@ class ArrayExpression extends NodeBase {
6477
6517
  super(...arguments);
6478
6518
  this.objectEntity = null;
6479
6519
  }
6520
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
6521
+ this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
6522
+ }
6480
6523
  deoptimizePath(path) {
6481
6524
  this.getObjectEntity().deoptimizePath(path);
6482
6525
  }
6483
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
6484
- this.getObjectEntity().deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
6485
- }
6486
6526
  getLiteralValueAtPath(path, recursionTracker, origin) {
6487
6527
  return this.getObjectEntity().getLiteralValueAtPath(path, recursionTracker, origin);
6488
6528
  }
@@ -6570,29 +6610,33 @@ class ArrayPattern extends NodeBase {
6570
6610
  class LocalVariable extends Variable {
6571
6611
  constructor(name, declarator, init, context) {
6572
6612
  super(name);
6613
+ this.init = init;
6573
6614
  this.calledFromTryStatement = false;
6574
6615
  this.additionalInitializers = null;
6575
6616
  this.expressionsToBeDeoptimized = [];
6576
6617
  this.declarations = declarator ? [declarator] : [];
6577
- this.init = init;
6578
6618
  this.deoptimizationTracker = context.deoptimizationTracker;
6579
6619
  this.module = context.module;
6580
6620
  }
6581
6621
  addDeclaration(identifier, init) {
6582
6622
  this.declarations.push(identifier);
6583
- const additionalInitializers = this.markInitializersForDeoptimization();
6584
- if (init !== null) {
6585
- additionalInitializers.push(init);
6586
- }
6623
+ this.markInitializersForDeoptimization().push(init);
6587
6624
  }
6588
6625
  consolidateInitializers() {
6589
- if (this.additionalInitializers !== null) {
6626
+ if (this.additionalInitializers) {
6590
6627
  for (const initializer of this.additionalInitializers) {
6591
6628
  initializer.deoptimizePath(UNKNOWN_PATH);
6592
6629
  }
6593
6630
  this.additionalInitializers = null;
6594
6631
  }
6595
6632
  }
6633
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
6634
+ if (this.isReassigned) {
6635
+ deoptimizeInteraction(interaction);
6636
+ return;
6637
+ }
6638
+ recursionTracker.withTrackedEntityAtPath(path, this.init, () => this.init.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker), undefined);
6639
+ }
6596
6640
  deoptimizePath(path) {
6597
6641
  if (this.isReassigned ||
6598
6642
  this.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(path, this)) {
@@ -6606,21 +6650,15 @@ class LocalVariable extends Variable {
6606
6650
  for (const expression of expressionsToBeDeoptimized) {
6607
6651
  expression.deoptimizeCache();
6608
6652
  }
6609
- this.init?.deoptimizePath(UNKNOWN_PATH);
6653
+ this.init.deoptimizePath(UNKNOWN_PATH);
6610
6654
  }
6611
6655
  }
6612
6656
  else {
6613
- this.init?.deoptimizePath(path);
6657
+ this.init.deoptimizePath(path);
6614
6658
  }
6615
6659
  }
6616
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
6617
- if (this.isReassigned || !this.init) {
6618
- return interaction.thisArg.deoptimizePath(UNKNOWN_PATH);
6619
- }
6620
- recursionTracker.withTrackedEntityAtPath(path, this.init, () => this.init.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker), undefined);
6621
- }
6622
6660
  getLiteralValueAtPath(path, recursionTracker, origin) {
6623
- if (this.isReassigned || !this.init) {
6661
+ if (this.isReassigned) {
6624
6662
  return UnknownValue;
6625
6663
  }
6626
6664
  return recursionTracker.withTrackedEntityAtPath(path, this.init, () => {
@@ -6629,7 +6667,7 @@ class LocalVariable extends Variable {
6629
6667
  }, UnknownValue);
6630
6668
  }
6631
6669
  getReturnExpressionWhenCalledAtPath(path, interaction, recursionTracker, origin) {
6632
- if (this.isReassigned || !this.init) {
6670
+ if (this.isReassigned) {
6633
6671
  return UNKNOWN_RETURN_EXPRESSION;
6634
6672
  }
6635
6673
  return recursionTracker.withTrackedEntityAtPath(path, this.init, () => {
@@ -6642,8 +6680,7 @@ class LocalVariable extends Variable {
6642
6680
  case INTERACTION_ACCESSED: {
6643
6681
  if (this.isReassigned)
6644
6682
  return true;
6645
- return !!(this.init &&
6646
- !context.accessed.trackEntityAtPathAndGetIfTracked(path, this) &&
6683
+ return (!context.accessed.trackEntityAtPathAndGetIfTracked(path, this) &&
6647
6684
  this.init.hasEffectsOnInteractionAtPath(path, interaction, context));
6648
6685
  }
6649
6686
  case INTERACTION_ASSIGNED: {
@@ -6653,15 +6690,13 @@ class LocalVariable extends Variable {
6653
6690
  return false;
6654
6691
  if (this.isReassigned)
6655
6692
  return true;
6656
- return !!(this.init &&
6657
- !context.assigned.trackEntityAtPathAndGetIfTracked(path, this) &&
6693
+ return (!context.assigned.trackEntityAtPathAndGetIfTracked(path, this) &&
6658
6694
  this.init.hasEffectsOnInteractionAtPath(path, interaction, context));
6659
6695
  }
6660
6696
  case INTERACTION_CALLED: {
6661
6697
  if (this.isReassigned)
6662
6698
  return true;
6663
- return !!(this.init &&
6664
- !(interaction.withNew ? context.instantiated : context.called).trackEntityAtPathAndGetIfTracked(path, interaction.args, this) &&
6699
+ return (!(interaction.withNew ? context.instantiated : context.called).trackEntityAtPathAndGetIfTracked(path, interaction.args, this) &&
6665
6700
  this.init.hasEffectsOnInteractionAtPath(path, interaction, context));
6666
6701
  }
6667
6702
  }
@@ -6686,12 +6721,12 @@ class LocalVariable extends Variable {
6686
6721
  }
6687
6722
  }
6688
6723
  includeCallArguments(context, parameters) {
6689
- if (this.isReassigned || (this.init && context.includedCallArguments.has(this.init))) {
6724
+ if (this.isReassigned || context.includedCallArguments.has(this.init)) {
6690
6725
  for (const argument of parameters) {
6691
6726
  argument.include(context, false);
6692
6727
  }
6693
6728
  }
6694
- else if (this.init) {
6729
+ else {
6695
6730
  context.includedCallArguments.add(this.init);
6696
6731
  this.init.includeCallArguments(context, parameters);
6697
6732
  context.includedCallArguments.delete(this.init);
@@ -6702,12 +6737,91 @@ class LocalVariable extends Variable {
6702
6737
  }
6703
6738
  markInitializersForDeoptimization() {
6704
6739
  if (this.additionalInitializers === null) {
6705
- this.additionalInitializers = this.init === null ? [] : [this.init];
6740
+ this.additionalInitializers = [this.init];
6706
6741
  this.init = UNKNOWN_EXPRESSION;
6707
6742
  this.isReassigned = true;
6708
6743
  }
6709
6744
  return this.additionalInitializers;
6710
6745
  }
6746
+ mergeDeclarations(variable) {
6747
+ const { declarations } = this;
6748
+ for (const declaration of variable.declarations) {
6749
+ declarations.push(declaration);
6750
+ }
6751
+ const additionalInitializers = this.markInitializersForDeoptimization();
6752
+ additionalInitializers.push(variable.init);
6753
+ if (variable.additionalInitializers) {
6754
+ for (const initializer of variable.additionalInitializers) {
6755
+ additionalInitializers.push(initializer);
6756
+ }
6757
+ }
6758
+ }
6759
+ }
6760
+
6761
+ class ParameterVariable extends LocalVariable {
6762
+ constructor(name, declarator, context) {
6763
+ super(name, declarator, UNKNOWN_EXPRESSION, context);
6764
+ this.deoptimizationInteractions = [];
6765
+ this.deoptimizations = new DiscriminatedPathTracker();
6766
+ this.deoptimizedFields = new Set();
6767
+ this.entitiesToBeDeoptimized = new Set();
6768
+ }
6769
+ addEntityToBeDeoptimized(entity) {
6770
+ if (this.deoptimizedFields.has(UnknownKey)) {
6771
+ entity.deoptimizePath(UNKNOWN_PATH);
6772
+ }
6773
+ else {
6774
+ for (const field of this.deoptimizedFields) {
6775
+ entity.deoptimizePath([field]);
6776
+ }
6777
+ }
6778
+ for (const { interaction, path } of this.deoptimizationInteractions) {
6779
+ entity.deoptimizeArgumentsOnInteractionAtPath(interaction, path, SHARED_RECURSION_TRACKER);
6780
+ }
6781
+ this.entitiesToBeDeoptimized.add(entity);
6782
+ }
6783
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path) {
6784
+ // For performance reasons, we fully deoptimize all deeper interactions
6785
+ if (path.length >= 2) {
6786
+ deoptimizeInteraction(interaction);
6787
+ return;
6788
+ }
6789
+ if (interaction.thisArg &&
6790
+ !this.deoptimizations.trackEntityAtPathAndGetIfTracked(path, interaction.args, interaction.thisArg)) {
6791
+ for (const entity of this.entitiesToBeDeoptimized) {
6792
+ entity.deoptimizeArgumentsOnInteractionAtPath(interaction, path, SHARED_RECURSION_TRACKER);
6793
+ }
6794
+ this.deoptimizationInteractions.push({
6795
+ interaction,
6796
+ path
6797
+ });
6798
+ }
6799
+ }
6800
+ deoptimizePath(path) {
6801
+ if (path.length === 0 || this.deoptimizedFields.has(UnknownKey)) {
6802
+ return;
6803
+ }
6804
+ const key = path[0];
6805
+ if (this.deoptimizedFields.has(key)) {
6806
+ return;
6807
+ }
6808
+ this.deoptimizedFields.add(key);
6809
+ for (const entity of this.entitiesToBeDeoptimized) {
6810
+ entity.deoptimizePath(path);
6811
+ }
6812
+ }
6813
+ getReturnExpressionWhenCalledAtPath(path) {
6814
+ // We deoptimize everything that is called as that will trivially deoptimize
6815
+ // the corresponding return expressions as well and avoid badly performing
6816
+ // and complicated alternatives
6817
+ if (path.length === 0) {
6818
+ this.deoptimizePath(UNKNOWN_PATH);
6819
+ }
6820
+ else if (!this.deoptimizedFields.has(path[0])) {
6821
+ this.deoptimizePath(path.slice(0, 1));
6822
+ }
6823
+ return UNKNOWN_RETURN_EXPRESSION;
6824
+ }
6711
6825
  }
6712
6826
 
6713
6827
  const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$';
@@ -6849,16 +6963,15 @@ class ParameterScope extends ChildScope {
6849
6963
  }
6850
6964
  /**
6851
6965
  * Adds a parameter to this scope. Parameters must be added in the correct
6852
- * order, e.g. from left to right.
6966
+ * order, i.e. from left to right.
6853
6967
  */
6854
6968
  addParameterDeclaration(identifier) {
6855
- const name = identifier.name;
6856
- let variable = this.hoistedBodyVarScope.variables.get(name);
6857
- if (variable) {
6858
- variable.addDeclaration(identifier, null);
6859
- }
6860
- else {
6861
- variable = new LocalVariable(name, identifier, UNKNOWN_EXPRESSION, this.context);
6969
+ const { name } = identifier;
6970
+ const variable = new ParameterVariable(name, identifier, this.context);
6971
+ const localVariable = this.hoistedBodyVarScope.variables.get(name);
6972
+ if (localVariable) {
6973
+ this.hoistedBodyVarScope.variables.set(name, variable);
6974
+ variable.mergeDeclarations(localVariable);
6862
6975
  }
6863
6976
  this.variables.set(name, variable);
6864
6977
  return variable;
@@ -7004,16 +7117,20 @@ const getPureFunctions = ({ treeshake }) => {
7004
7117
  return pureFunctions;
7005
7118
  };
7006
7119
 
7120
+ const doNothing = () => { };
7121
+
7007
7122
  /* eslint sort-keys: "off" */
7008
7123
  const ValueProperties = Symbol('Value Properties');
7009
7124
  const getTruthyLiteralValue = () => UnknownTruthyValue;
7010
7125
  const returnFalse = () => false;
7011
7126
  const returnTrue = () => true;
7012
7127
  const PURE = {
7128
+ deoptimizeArgumentsOnCall: doNothing,
7013
7129
  getLiteralValue: getTruthyLiteralValue,
7014
7130
  hasEffectsWhenCalled: returnFalse
7015
7131
  };
7016
7132
  const IMPURE = {
7133
+ deoptimizeArgumentsOnCall: doNothing,
7017
7134
  getLiteralValue: getTruthyLiteralValue,
7018
7135
  hasEffectsWhenCalled: returnTrue
7019
7136
  };
@@ -7032,6 +7149,9 @@ const PF = {
7032
7149
  const MUTATES_ARG_WITHOUT_ACCESSOR = {
7033
7150
  __proto__: null,
7034
7151
  [ValueProperties]: {
7152
+ deoptimizeArgumentsOnCall({ args: [firstArgument] }) {
7153
+ firstArgument?.deoptimizePath(UNKNOWN_PATH);
7154
+ },
7035
7155
  getLiteralValue: getTruthyLiteralValue,
7036
7156
  hasEffectsWhenCalled({ args }, context) {
7037
7157
  return (args.length === 0 ||
@@ -7236,6 +7356,7 @@ const knownGlobals = {
7236
7356
  toStringTag: {
7237
7357
  __proto__: null,
7238
7358
  [ValueProperties]: {
7359
+ deoptimizeArgumentsOnCall: doNothing,
7239
7360
  getLiteralValue() {
7240
7361
  return SymbolToStringTag;
7241
7362
  },
@@ -7261,7 +7382,30 @@ const knownGlobals = {
7261
7382
  // Additional globals shared by Node and Browser that are not strictly part of the language
7262
7383
  clearInterval: C,
7263
7384
  clearTimeout: C,
7264
- console: O,
7385
+ console: {
7386
+ __proto__: null,
7387
+ [ValueProperties]: IMPURE,
7388
+ assert: C,
7389
+ clear: C,
7390
+ count: C,
7391
+ countReset: C,
7392
+ debug: C,
7393
+ dir: C,
7394
+ dirxml: C,
7395
+ error: C,
7396
+ exception: C,
7397
+ group: C,
7398
+ groupCollapsed: C,
7399
+ groupEnd: C,
7400
+ info: C,
7401
+ log: C,
7402
+ table: C,
7403
+ time: C,
7404
+ timeEnd: C,
7405
+ timeLog: C,
7406
+ trace: C,
7407
+ warn: C
7408
+ },
7265
7409
  Intl: {
7266
7410
  __proto__: null,
7267
7411
  [ValueProperties]: IMPURE,
@@ -7886,6 +8030,29 @@ class GlobalVariable extends Variable {
7886
8030
  // been reassigned
7887
8031
  this.isReassigned = true;
7888
8032
  }
8033
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
8034
+ switch (interaction.type) {
8035
+ // While there is no point in testing these cases as at the moment, they
8036
+ // are also covered via other means, we keep them for completeness
8037
+ case INTERACTION_ACCESSED:
8038
+ case INTERACTION_ASSIGNED: {
8039
+ if (!getGlobalAtPath([this.name, ...path].slice(0, -1))) {
8040
+ super.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
8041
+ }
8042
+ return;
8043
+ }
8044
+ case INTERACTION_CALLED: {
8045
+ const globalAtPath = getGlobalAtPath([this.name, ...path]);
8046
+ if (globalAtPath) {
8047
+ globalAtPath.deoptimizeArgumentsOnCall(interaction);
8048
+ }
8049
+ else {
8050
+ super.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
8051
+ }
8052
+ return;
8053
+ }
8054
+ }
8055
+ }
7889
8056
  getLiteralValueAtPath(path, _recursionTracker, _origin) {
7890
8057
  const globalAtPath = getGlobalAtPath([this.name, ...path]);
7891
8058
  return globalAtPath ? globalAtPath.getLiteralValue() : UnknownValue;
@@ -7970,6 +8137,9 @@ class Identifier extends NodeBase {
7970
8137
  variable.kind = kind;
7971
8138
  return [(this.variable = variable)];
7972
8139
  }
8140
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
8141
+ this.variable.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
8142
+ }
7973
8143
  deoptimizePath(path) {
7974
8144
  if (path.length === 0 && !this.scope.contains(this.name)) {
7975
8145
  this.disallowImportReassignment();
@@ -7978,9 +8148,6 @@ class Identifier extends NodeBase {
7978
8148
  // Identifier as property that might be deoptimized by default
7979
8149
  this.variable?.deoptimizePath(path);
7980
8150
  }
7981
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
7982
- this.variable.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
7983
- }
7984
8151
  getLiteralValueAtPath(path, recursionTracker, origin) {
7985
8152
  return this.getVariableRespectingTDZ().getLiteralValueAtPath(path, recursionTracker, origin);
7986
8153
  }
@@ -8406,6 +8573,30 @@ class FunctionBase extends NodeBase {
8406
8573
  this.objectEntity = null;
8407
8574
  this.deoptimizedReturn = false;
8408
8575
  }
8576
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
8577
+ if (interaction.type === INTERACTION_CALLED) {
8578
+ const { parameters } = this.scope;
8579
+ const { args } = interaction;
8580
+ let hasRest = false;
8581
+ for (let position = 0; position < args.length; position++) {
8582
+ const parameter = this.params[position];
8583
+ if (hasRest || parameter instanceof RestElement) {
8584
+ hasRest = true;
8585
+ args[position].deoptimizePath(UNKNOWN_PATH);
8586
+ }
8587
+ else if (parameter instanceof Identifier) {
8588
+ // args[position].deoptimizePath(UNKNOWN_PATH);
8589
+ parameters[position][0].addEntityToBeDeoptimized(args[position]);
8590
+ }
8591
+ else if (parameter) {
8592
+ args[position].deoptimizePath(UNKNOWN_PATH);
8593
+ }
8594
+ }
8595
+ }
8596
+ else {
8597
+ this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
8598
+ }
8599
+ }
8409
8600
  deoptimizePath(path) {
8410
8601
  this.getObjectEntity().deoptimizePath(path);
8411
8602
  if (path.length === 1 && path[0] === UnknownKey) {
@@ -8414,11 +8605,6 @@ class FunctionBase extends NodeBase {
8414
8605
  this.scope.getReturnExpression().deoptimizePath(UNKNOWN_PATH);
8415
8606
  }
8416
8607
  }
8417
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
8418
- if (path.length > 0) {
8419
- this.getObjectEntity().deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
8420
- }
8421
- }
8422
8608
  getLiteralValueAtPath(path, recursionTracker, origin) {
8423
8609
  return this.getObjectEntity().getLiteralValueAtPath(path, recursionTracker, origin);
8424
8610
  }
@@ -8741,54 +8927,12 @@ class ArgumentsVariable extends LocalVariable {
8741
8927
  }
8742
8928
  }
8743
8929
 
8744
- class ThisVariable extends LocalVariable {
8930
+ class ThisVariable extends ParameterVariable {
8745
8931
  constructor(context) {
8746
- super('this', null, null, context);
8747
- this.deoptimizedPaths = [];
8748
- this.entitiesToBeDeoptimized = new Set();
8749
- this.thisDeoptimizationList = [];
8750
- this.thisDeoptimizations = new DiscriminatedPathTracker();
8751
- }
8752
- addEntityToBeDeoptimized(entity) {
8753
- for (const path of this.deoptimizedPaths) {
8754
- entity.deoptimizePath(path);
8755
- }
8756
- for (const { interaction, path } of this.thisDeoptimizationList) {
8757
- entity.deoptimizeThisOnInteractionAtPath(interaction, path, SHARED_RECURSION_TRACKER);
8758
- }
8759
- this.entitiesToBeDeoptimized.add(entity);
8760
- }
8761
- deoptimizePath(path) {
8762
- if (path.length === 0 ||
8763
- this.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(path, this)) {
8764
- return;
8765
- }
8766
- this.deoptimizedPaths.push(path);
8767
- for (const entity of this.entitiesToBeDeoptimized) {
8768
- entity.deoptimizePath(path);
8769
- }
8770
- }
8771
- deoptimizeThisOnInteractionAtPath(interaction, path) {
8772
- const thisDeoptimization = {
8773
- interaction,
8774
- path
8775
- };
8776
- if (!this.thisDeoptimizations.trackEntityAtPathAndGetIfTracked(path, interaction.type, interaction.thisArg)) {
8777
- for (const entity of this.entitiesToBeDeoptimized) {
8778
- entity.deoptimizeThisOnInteractionAtPath(interaction, path, SHARED_RECURSION_TRACKER);
8779
- }
8780
- this.thisDeoptimizationList.push(thisDeoptimization);
8781
- }
8932
+ super('this', null, context);
8782
8933
  }
8783
8934
  hasEffectsOnInteractionAtPath(path, interaction, context) {
8784
- const replacedVariableInit = context.replacedVariableInits.get(this);
8785
- if (replacedVariableInit) {
8786
- return (replacedVariableInit.hasEffectsOnInteractionAtPath(path, interaction, context) ||
8787
- // If the surrounding function is included, all mutations of "this" must
8788
- // be counted as side effects, which is what this second line does.
8789
- (!context.ignore.this && super.hasEffectsOnInteractionAtPath(path, interaction, context)));
8790
- }
8791
- return UNKNOWN_EXPRESSION.hasEffectsOnInteractionAtPath(path, interaction, context);
8935
+ return (context.replacedVariableInits.get(this) || UNKNOWN_EXPRESSION).hasEffectsOnInteractionAtPath(path, interaction, context);
8792
8936
  }
8793
8937
  }
8794
8938
 
@@ -8825,9 +8969,9 @@ class FunctionNode extends FunctionBase {
8825
8969
  // constructed entity.
8826
8970
  this.scope.thisVariable.addEntityToBeDeoptimized(this.constructedEntity);
8827
8971
  }
8828
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
8829
- super.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
8830
- if (interaction.type === INTERACTION_CALLED && path.length === 0) {
8972
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
8973
+ super.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
8974
+ if (interaction.type === INTERACTION_CALLED && path.length === 0 && interaction.thisArg) {
8831
8975
  this.scope.thisVariable.addEntityToBeDeoptimized(interaction.thisArg);
8832
8976
  }
8833
8977
  }
@@ -9026,7 +9170,7 @@ function renderCallArguments(code, options, node) {
9026
9170
  }
9027
9171
 
9028
9172
  class Literal extends NodeBase {
9029
- deoptimizeThisOnInteractionAtPath() { }
9173
+ deoptimizeArgumentsOnInteractionAtPath() { }
9030
9174
  getLiteralValueAtPath(path) {
9031
9175
  if (path.length > 0 ||
9032
9176
  // unknown literals can also be null but do not start with an "n"
@@ -9144,6 +9288,19 @@ class MemberExpression extends NodeBase {
9144
9288
  super.bind();
9145
9289
  }
9146
9290
  }
9291
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
9292
+ if (this.variable) {
9293
+ this.variable.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
9294
+ }
9295
+ else if (!this.isUndefined) {
9296
+ if (path.length < MAX_PATH_DEPTH) {
9297
+ this.object.deoptimizeArgumentsOnInteractionAtPath(interaction, [this.getPropertyKey(), ...path], recursionTracker);
9298
+ }
9299
+ else {
9300
+ deoptimizeInteraction(interaction);
9301
+ }
9302
+ }
9303
+ }
9147
9304
  deoptimizeCache() {
9148
9305
  const expressionsToBeDeoptimized = this.expressionsToBeDeoptimized;
9149
9306
  this.expressionsToBeDeoptimized = [];
@@ -9167,19 +9324,6 @@ class MemberExpression extends NodeBase {
9167
9324
  ]);
9168
9325
  }
9169
9326
  }
9170
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
9171
- if (this.variable) {
9172
- this.variable.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
9173
- }
9174
- else if (!this.isUndefined) {
9175
- if (path.length < MAX_PATH_DEPTH) {
9176
- this.object.deoptimizeThisOnInteractionAtPath(interaction, [this.getPropertyKey(), ...path], recursionTracker);
9177
- }
9178
- else {
9179
- interaction.thisArg.deoptimizePath(UNKNOWN_PATH);
9180
- }
9181
- }
9182
- }
9183
9327
  getLiteralValueAtPath(path, recursionTracker, origin) {
9184
9328
  if (this.variable) {
9185
9329
  return this.variable.getLiteralValueAtPath(path, recursionTracker, origin);
@@ -9260,7 +9404,7 @@ class MemberExpression extends NodeBase {
9260
9404
  }
9261
9405
  initialise() {
9262
9406
  this.propertyKey = getResolvablePropertyKey(this);
9263
- this.accessInteraction = { thisArg: this.object, type: INTERACTION_ACCESSED };
9407
+ this.accessInteraction = { args: null, thisArg: this.object, type: INTERACTION_ACCESSED };
9264
9408
  }
9265
9409
  isSkippedAsOptional(origin) {
9266
9410
  return (!this.variable &&
@@ -9305,7 +9449,7 @@ class MemberExpression extends NodeBase {
9305
9449
  propertyReadSideEffects &&
9306
9450
  !(this.variable || this.isUndefined)) {
9307
9451
  const propertyKey = this.getPropertyKey();
9308
- this.object.deoptimizeThisOnInteractionAtPath(this.accessInteraction, [propertyKey], SHARED_RECURSION_TRACKER);
9452
+ this.object.deoptimizeArgumentsOnInteractionAtPath(this.accessInteraction, [propertyKey], SHARED_RECURSION_TRACKER);
9309
9453
  this.context.requestTreeshakingPass();
9310
9454
  }
9311
9455
  }
@@ -9318,7 +9462,7 @@ class MemberExpression extends NodeBase {
9318
9462
  this.bound &&
9319
9463
  propertyReadSideEffects &&
9320
9464
  !(this.variable || this.isUndefined)) {
9321
- this.object.deoptimizeThisOnInteractionAtPath(this.assignmentInteraction, [this.getPropertyKey()], SHARED_RECURSION_TRACKER);
9465
+ this.object.deoptimizeArgumentsOnInteractionAtPath(this.assignmentInteraction, [this.getPropertyKey()], SHARED_RECURSION_TRACKER);
9322
9466
  this.context.requestTreeshakingPass();
9323
9467
  }
9324
9468
  }
@@ -9390,6 +9534,33 @@ class CallExpressionBase extends NodeBase {
9390
9534
  this.deoptimizableDependentExpressions = [];
9391
9535
  this.expressionsToBeDeoptimized = new Set();
9392
9536
  }
9537
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
9538
+ const { args, thisArg } = interaction;
9539
+ const [returnExpression, isPure] = this.getReturnExpression(recursionTracker);
9540
+ if (isPure)
9541
+ return;
9542
+ if (returnExpression === UNKNOWN_EXPRESSION) {
9543
+ thisArg?.deoptimizePath(UNKNOWN_PATH);
9544
+ if (args) {
9545
+ for (const argument of args) {
9546
+ argument.deoptimizePath(UNKNOWN_PATH);
9547
+ }
9548
+ }
9549
+ }
9550
+ else {
9551
+ recursionTracker.withTrackedEntityAtPath(path, returnExpression, () => {
9552
+ if (thisArg) {
9553
+ this.expressionsToBeDeoptimized.add(thisArg);
9554
+ }
9555
+ if (args) {
9556
+ for (const argument of args) {
9557
+ this.expressionsToBeDeoptimized.add(argument);
9558
+ }
9559
+ }
9560
+ returnExpression.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
9561
+ }, null);
9562
+ }
9563
+ }
9393
9564
  deoptimizeCache() {
9394
9565
  if (this.returnExpression?.[0] !== UNKNOWN_EXPRESSION) {
9395
9566
  this.returnExpression = UNKNOWN_RETURN_EXPRESSION;
@@ -9411,20 +9582,6 @@ class CallExpressionBase extends NodeBase {
9411
9582
  returnExpression.deoptimizePath(path);
9412
9583
  }
9413
9584
  }
9414
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
9415
- const [returnExpression, isPure] = this.getReturnExpression(recursionTracker);
9416
- if (isPure)
9417
- return;
9418
- if (returnExpression === UNKNOWN_EXPRESSION) {
9419
- interaction.thisArg.deoptimizePath(UNKNOWN_PATH);
9420
- }
9421
- else {
9422
- recursionTracker.withTrackedEntityAtPath(path, returnExpression, () => {
9423
- this.expressionsToBeDeoptimized.add(interaction.thisArg);
9424
- returnExpression.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
9425
- }, null);
9426
- }
9427
- }
9428
9585
  getLiteralValueAtPath(path, recursionTracker, origin) {
9429
9586
  const [returnExpression] = this.getReturnExpression(recursionTracker);
9430
9587
  if (returnExpression === UNKNOWN_EXPRESSION) {
@@ -9534,13 +9691,7 @@ class CallExpression extends CallExpressionBase {
9534
9691
  }
9535
9692
  applyDeoptimizations() {
9536
9693
  this.deoptimized = true;
9537
- if (this.interaction.thisArg) {
9538
- this.callee.deoptimizeThisOnInteractionAtPath(this.interaction, EMPTY_PATH, SHARED_RECURSION_TRACKER);
9539
- }
9540
- for (const argument of this.arguments) {
9541
- // This will make sure all properties of parameters behave as "unknown"
9542
- argument.deoptimizePath(UNKNOWN_PATH);
9543
- }
9694
+ this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction, EMPTY_PATH, SHARED_RECURSION_TRACKER);
9544
9695
  this.context.requestTreeshakingPass();
9545
9696
  }
9546
9697
  getReturnExpression(recursionTracker = SHARED_RECURSION_TRACKER) {
@@ -9637,15 +9788,9 @@ class MethodBase extends NodeBase {
9637
9788
  super(...arguments);
9638
9789
  this.accessedValue = null;
9639
9790
  }
9640
- // As getter properties directly receive their values from fixed function
9641
- // expressions, there is no known situation where a getter is deoptimized.
9642
- deoptimizeCache() { }
9643
- deoptimizePath(path) {
9644
- this.getAccessedValue()[0].deoptimizePath(path);
9645
- }
9646
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
9791
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
9647
9792
  if (interaction.type === INTERACTION_ACCESSED && this.kind === 'get' && path.length === 0) {
9648
- return this.value.deoptimizeThisOnInteractionAtPath({
9793
+ return this.value.deoptimizeArgumentsOnInteractionAtPath({
9649
9794
  args: NO_ARGS,
9650
9795
  thisArg: interaction.thisArg,
9651
9796
  type: INTERACTION_CALLED,
@@ -9653,14 +9798,20 @@ class MethodBase extends NodeBase {
9653
9798
  }, EMPTY_PATH, recursionTracker);
9654
9799
  }
9655
9800
  if (interaction.type === INTERACTION_ASSIGNED && this.kind === 'set' && path.length === 0) {
9656
- return this.value.deoptimizeThisOnInteractionAtPath({
9801
+ return this.value.deoptimizeArgumentsOnInteractionAtPath({
9657
9802
  args: interaction.args,
9658
9803
  thisArg: interaction.thisArg,
9659
9804
  type: INTERACTION_CALLED,
9660
9805
  withNew: false
9661
9806
  }, EMPTY_PATH, recursionTracker);
9662
9807
  }
9663
- this.getAccessedValue()[0].deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
9808
+ this.getAccessedValue()[0].deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
9809
+ }
9810
+ // As getter properties directly receive their values from fixed function
9811
+ // expressions, there is no known situation where a getter is deoptimized.
9812
+ deoptimizeCache() { }
9813
+ deoptimizePath(path) {
9814
+ this.getAccessedValue()[0].deoptimizePath(path);
9664
9815
  }
9665
9816
  getLiteralValueAtPath(path, recursionTracker, origin) {
9666
9817
  return this.getAccessedValue()[0].getLiteralValueAtPath(path, recursionTracker, origin);
@@ -9716,12 +9867,12 @@ class ObjectMember extends ExpressionEntity {
9716
9867
  this.object = object;
9717
9868
  this.key = key;
9718
9869
  }
9870
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
9871
+ this.object.deoptimizeArgumentsOnInteractionAtPath(interaction, [this.key, ...path], recursionTracker);
9872
+ }
9719
9873
  deoptimizePath(path) {
9720
9874
  this.object.deoptimizePath([this.key, ...path]);
9721
9875
  }
9722
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
9723
- this.object.deoptimizeThisOnInteractionAtPath(interaction, [this.key, ...path], recursionTracker);
9724
- }
9725
9876
  getLiteralValueAtPath(path, recursionTracker, origin) {
9726
9877
  return this.object.getLiteralValueAtPath([this.key, ...path], recursionTracker, origin);
9727
9878
  }
@@ -9741,15 +9892,15 @@ class ClassNode extends NodeBase {
9741
9892
  createScope(parentScope) {
9742
9893
  this.scope = new ChildScope(parentScope);
9743
9894
  }
9895
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
9896
+ this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
9897
+ }
9744
9898
  deoptimizeCache() {
9745
9899
  this.getObjectEntity().deoptimizeAllProperties();
9746
9900
  }
9747
9901
  deoptimizePath(path) {
9748
9902
  this.getObjectEntity().deoptimizePath(path);
9749
9903
  }
9750
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
9751
- this.getObjectEntity().deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
9752
- }
9753
9904
  getLiteralValueAtPath(path, recursionTracker, origin) {
9754
9905
  return this.getObjectEntity().getLiteralValueAtPath(path, recursionTracker, origin);
9755
9906
  }
@@ -9936,6 +10087,10 @@ class ConditionalExpression extends NodeBase {
9936
10087
  this.isBranchResolutionAnalysed = false;
9937
10088
  this.usedBranch = null;
9938
10089
  }
10090
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
10091
+ this.consequent.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
10092
+ this.alternate.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
10093
+ }
9939
10094
  deoptimizeCache() {
9940
10095
  if (this.usedBranch !== null) {
9941
10096
  const unusedBranch = this.usedBranch === this.consequent ? this.alternate : this.consequent;
@@ -9956,10 +10111,6 @@ class ConditionalExpression extends NodeBase {
9956
10111
  this.alternate.deoptimizePath(path);
9957
10112
  }
9958
10113
  }
9959
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
9960
- this.consequent.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
9961
- this.alternate.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
9962
- }
9963
10114
  getLiteralValueAtPath(path, recursionTracker, origin) {
9964
10115
  const usedBranch = this.getUsedBranch();
9965
10116
  if (!usedBranch)
@@ -11068,6 +11219,10 @@ class LogicalExpression extends NodeBase {
11068
11219
  this.isBranchResolutionAnalysed = false;
11069
11220
  this.usedBranch = null;
11070
11221
  }
11222
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
11223
+ this.left.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
11224
+ this.right.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
11225
+ }
11071
11226
  deoptimizeCache() {
11072
11227
  if (this.usedBranch) {
11073
11228
  const unusedBranch = this.usedBranch === this.left ? this.right : this.left;
@@ -11091,10 +11246,6 @@ class LogicalExpression extends NodeBase {
11091
11246
  this.right.deoptimizePath(path);
11092
11247
  }
11093
11248
  }
11094
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
11095
- this.left.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
11096
- this.right.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
11097
- }
11098
11249
  getLiteralValueAtPath(path, recursionTracker, origin) {
11099
11250
  const usedBranch = this.getUsedBranch();
11100
11251
  if (!usedBranch)
@@ -11364,10 +11515,7 @@ class NewExpression extends NodeBase {
11364
11515
  }
11365
11516
  applyDeoptimizations() {
11366
11517
  this.deoptimized = true;
11367
- for (const argument of this.arguments) {
11368
- // This will make sure all properties of parameters behave as "unknown"
11369
- argument.deoptimizePath(UNKNOWN_PATH);
11370
- }
11518
+ this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction, EMPTY_PATH, SHARED_RECURSION_TRACKER);
11371
11519
  this.context.requestTreeshakingPass();
11372
11520
  }
11373
11521
  }
@@ -11377,15 +11525,15 @@ class ObjectExpression extends NodeBase {
11377
11525
  super(...arguments);
11378
11526
  this.objectEntity = null;
11379
11527
  }
11528
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
11529
+ this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
11530
+ }
11380
11531
  deoptimizeCache() {
11381
11532
  this.getObjectEntity().deoptimizeAllProperties();
11382
11533
  }
11383
11534
  deoptimizePath(path) {
11384
11535
  this.getObjectEntity().deoptimizePath(path);
11385
11536
  }
11386
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
11387
- this.getObjectEntity().deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
11388
- }
11389
11537
  getLiteralValueAtPath(path, recursionTracker, origin) {
11390
11538
  return this.getObjectEntity().getLiteralValueAtPath(path, recursionTracker, origin);
11391
11539
  }
@@ -11567,12 +11715,12 @@ class Property extends MethodBase {
11567
11715
  }
11568
11716
 
11569
11717
  class PropertyDefinition extends NodeBase {
11718
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
11719
+ this.value?.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
11720
+ }
11570
11721
  deoptimizePath(path) {
11571
11722
  this.value?.deoptimizePath(path);
11572
11723
  }
11573
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
11574
- this.value?.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
11575
- }
11576
11724
  getLiteralValueAtPath(path, recursionTracker, origin) {
11577
11725
  return this.value
11578
11726
  ? this.value.getLiteralValueAtPath(path, recursionTracker, origin)
@@ -11618,12 +11766,12 @@ class ReturnStatement extends NodeBase {
11618
11766
  }
11619
11767
 
11620
11768
  class SequenceExpression extends NodeBase {
11769
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
11770
+ this.expressions[this.expressions.length - 1].deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
11771
+ }
11621
11772
  deoptimizePath(path) {
11622
11773
  this.expressions[this.expressions.length - 1].deoptimizePath(path);
11623
11774
  }
11624
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
11625
- this.expressions[this.expressions.length - 1].deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
11626
- }
11627
11775
  getLiteralValueAtPath(path, recursionTracker, origin) {
11628
11776
  return this.expressions[this.expressions.length - 1].getLiteralValueAtPath(path, recursionTracker, origin);
11629
11777
  }
@@ -11711,12 +11859,12 @@ class Super extends NodeBase {
11711
11859
  bind() {
11712
11860
  this.variable = this.scope.findVariable('this');
11713
11861
  }
11862
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
11863
+ this.variable.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
11864
+ }
11714
11865
  deoptimizePath(path) {
11715
11866
  this.variable.deoptimizePath(path);
11716
11867
  }
11717
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
11718
- this.variable.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
11719
- }
11720
11868
  include() {
11721
11869
  if (!this.included) {
11722
11870
  this.included = true;
@@ -11891,13 +12039,7 @@ class TaggedTemplateExpression extends CallExpressionBase {
11891
12039
  }
11892
12040
  applyDeoptimizations() {
11893
12041
  this.deoptimized = true;
11894
- if (this.interaction.thisArg) {
11895
- this.tag.deoptimizeThisOnInteractionAtPath(this.interaction, EMPTY_PATH, SHARED_RECURSION_TRACKER);
11896
- }
11897
- for (const argument of this.quasi.expressions) {
11898
- // This will make sure all properties of parameters behave as "unknown"
11899
- argument.deoptimizePath(UNKNOWN_PATH);
11900
- }
12042
+ this.tag.deoptimizeArgumentsOnInteractionAtPath(this.interaction, EMPTY_PATH, SHARED_RECURSION_TRACKER);
11901
12043
  this.context.requestTreeshakingPass();
11902
12044
  }
11903
12045
  getReturnExpression(recursionTracker = SHARED_RECURSION_TRACKER) {
@@ -11926,7 +12068,7 @@ class TemplateElement extends NodeBase {
11926
12068
  }
11927
12069
 
11928
12070
  class TemplateLiteral extends NodeBase {
11929
- deoptimizeThisOnInteractionAtPath() { }
12071
+ deoptimizeArgumentsOnInteractionAtPath() { }
11930
12072
  getLiteralValueAtPath(path) {
11931
12073
  if (path.length > 0 || this.quasis.length !== 1) {
11932
12074
  return UnknownValue;
@@ -12070,13 +12212,13 @@ class ThisExpression extends NodeBase {
12070
12212
  bind() {
12071
12213
  this.variable = this.scope.findVariable('this');
12072
12214
  }
12215
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
12216
+ // We rewrite the parameter so that a ThisVariable can detect self-mutations
12217
+ this.variable.deoptimizeArgumentsOnInteractionAtPath(interaction.thisArg === this ? { ...interaction, thisArg: this.variable } : interaction, path, recursionTracker);
12218
+ }
12073
12219
  deoptimizePath(path) {
12074
12220
  this.variable.deoptimizePath(path);
12075
12221
  }
12076
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
12077
- // We rewrite the parameter so that a ThisVariable can detect self-mutations
12078
- this.variable.deoptimizeThisOnInteractionAtPath(interaction.thisArg === this ? { ...interaction, thisArg: this.variable } : interaction, path, recursionTracker);
12079
- }
12080
12222
  hasEffectsOnInteractionAtPath(path, interaction, context) {
12081
12223
  if (path.length === 0) {
12082
12224
  return interaction.type !== INTERACTION_ACCESSED;
@@ -12644,22 +12786,22 @@ class NamespaceVariable extends Variable {
12644
12786
  this.references.push(identifier);
12645
12787
  this.name = identifier.name;
12646
12788
  }
12647
- deoptimizePath(path) {
12648
- if (path.length > 1) {
12789
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
12790
+ if (path.length > 1 || (path.length === 1 && interaction.type === INTERACTION_CALLED)) {
12649
12791
  const key = path[0];
12650
12792
  if (typeof key === 'string') {
12651
- this.getMemberVariables()[key]?.deoptimizePath(path.slice(1));
12793
+ this.getMemberVariables()[key]?.deoptimizeArgumentsOnInteractionAtPath(interaction, path.slice(1), recursionTracker);
12794
+ }
12795
+ else {
12796
+ deoptimizeInteraction(interaction);
12652
12797
  }
12653
12798
  }
12654
12799
  }
12655
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
12656
- if (path.length > 1 || (path.length === 1 && interaction.type === INTERACTION_CALLED)) {
12800
+ deoptimizePath(path) {
12801
+ if (path.length > 1) {
12657
12802
  const key = path[0];
12658
12803
  if (typeof key === 'string') {
12659
- this.getMemberVariables()[key]?.deoptimizeThisOnInteractionAtPath(interaction, path.slice(1), recursionTracker);
12660
- }
12661
- else {
12662
- interaction.thisArg.deoptimizePath(UNKNOWN_PATH);
12804
+ this.getMemberVariables()[key]?.deoptimizePath(path.slice(1));
12663
12805
  }
12664
12806
  }
12665
12807
  }
@@ -12848,7 +12990,6 @@ function doAssertionsDiffer(assertionA, assertionB) {
12848
12990
  keysA.some(key => assertionA[key] !== assertionB[key]));
12849
12991
  }
12850
12992
 
12851
- const NOOP = () => { };
12852
12993
  let timers = new Map();
12853
12994
  function getPersistedLabel(label, level) {
12854
12995
  switch (level) {
@@ -12902,8 +13043,8 @@ function getTimings() {
12902
13043
  }
12903
13044
  return newTimings;
12904
13045
  }
12905
- let timeStart = NOOP;
12906
- let timeEnd = NOOP;
13046
+ let timeStart = doNothing;
13047
+ let timeEnd = doNothing;
12907
13048
  const TIMED_PLUGIN_HOOKS = [
12908
13049
  'augmentChunkHash',
12909
13050
  'buildEnd',
@@ -12959,8 +13100,8 @@ function initialiseTimers(inputOptions) {
12959
13100
  inputOptions.plugins = inputOptions.plugins.map(getPluginWithTimers);
12960
13101
  }
12961
13102
  else {
12962
- timeStart = NOOP;
12963
- timeEnd = NOOP;
13103
+ timeStart = doNothing;
13104
+ timeEnd = doNothing;
12964
13105
  }
12965
13106
  }
12966
13107
 
@@ -17376,13 +17517,13 @@ function addModuleToManualChunk(alias, module, manualChunkAliasByEntry) {
17376
17517
  }
17377
17518
 
17378
17519
  // This file was generated. Do not modify manually!
17379
- var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
17520
+ var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
17380
17521
 
17381
17522
  // This file was generated. Do not modify manually!
17382
- var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];
17523
+ var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938, 6, 4191];
17383
17524
 
17384
17525
  // This file was generated. Do not modify manually!
17385
- var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
17526
+ var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
17386
17527
 
17387
17528
  // This file was generated. Do not modify manually!
17388
17529
  var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
@@ -17427,6 +17568,7 @@ function isInAstralSet(code, set) {
17427
17568
  pos += set[i + 1];
17428
17569
  if (pos >= code) { return true }
17429
17570
  }
17571
+ return false
17430
17572
  }
17431
17573
 
17432
17574
  // Test whether a given character code starts an identifier.
@@ -17812,7 +17954,7 @@ function getOptions(opts) {
17812
17954
  if (options.allowReserved == null)
17813
17955
  { options.allowReserved = options.ecmaVersion < 5; }
17814
17956
 
17815
- if (opts.allowHashBang == null)
17957
+ if (!opts || opts.allowHashBang == null)
17816
17958
  { options.allowHashBang = options.ecmaVersion >= 14; }
17817
17959
 
17818
17960
  if (isArray(options.onToken)) {
@@ -18212,10 +18354,10 @@ pp$8.isLet = function(context) {
18212
18354
  // Statement) is allowed here. If context is not empty then only a Statement
18213
18355
  // is allowed. However, `let [` is an explicit negative lookahead for
18214
18356
  // ExpressionStatement, so special-case it first.
18215
- if (nextCh === 91 || nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '[', '/', astral
18357
+ if (nextCh === 91 || nextCh === 92) { return true } // '[', '/'
18216
18358
  if (context) { return false }
18217
18359
 
18218
- if (nextCh === 123) { return true } // '{'
18360
+ if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral
18219
18361
  if (isIdentifierStart(nextCh, true)) {
18220
18362
  var pos = next + 1;
18221
18363
  while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; }
@@ -18948,7 +19090,7 @@ pp$8.parseClassId = function(node, isStatement) {
18948
19090
  };
18949
19091
 
18950
19092
  pp$8.parseClassSuper = function(node) {
18951
- node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(false) : null;
19093
+ node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;
18952
19094
  };
18953
19095
 
18954
19096
  pp$8.enterClassBody = function() {
@@ -20493,7 +20635,7 @@ pp$5.parseProperty = function(isPattern, refDestructuringErrors) {
20493
20635
  if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {
20494
20636
  isAsync = true;
20495
20637
  isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);
20496
- this.parsePropertyName(prop, refDestructuringErrors);
20638
+ this.parsePropertyName(prop);
20497
20639
  } else {
20498
20640
  isAsync = false;
20499
20641
  }
@@ -20742,7 +20884,7 @@ pp$5.checkUnreserved = function(ref) {
20742
20884
  // when parsing properties), it will also convert keywords into
20743
20885
  // identifiers.
20744
20886
 
20745
- pp$5.parseIdent = function(liberal, isBinding) {
20887
+ pp$5.parseIdent = function(liberal) {
20746
20888
  var node = this.startNode();
20747
20889
  if (this.type === types$1.name) {
20748
20890
  node.name = this.value;
@@ -20985,8 +21127,8 @@ pp$2.copyNode = function(node) {
20985
21127
  return newNode
20986
21128
  };
20987
21129
 
20988
- // This file contains Unicode properties extracted from the ECMAScript
20989
- // specification. The lists are extracted like so:
21130
+ // This file contains Unicode properties extracted from the ECMAScript specification.
21131
+ // The lists are extracted like so:
20990
21132
  // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)
20991
21133
 
20992
21134
  // #table-binary-unicode-properties
@@ -20995,12 +21137,15 @@ var ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic";
20995
21137
  var ecma11BinaryProperties = ecma10BinaryProperties;
20996
21138
  var ecma12BinaryProperties = ecma11BinaryProperties + " EBase EComp EMod EPres ExtPict";
20997
21139
  var ecma13BinaryProperties = ecma12BinaryProperties;
21140
+ var ecma14BinaryProperties = ecma13BinaryProperties;
21141
+
20998
21142
  var unicodeBinaryProperties = {
20999
21143
  9: ecma9BinaryProperties,
21000
21144
  10: ecma10BinaryProperties,
21001
21145
  11: ecma11BinaryProperties,
21002
21146
  12: ecma12BinaryProperties,
21003
- 13: ecma13BinaryProperties
21147
+ 13: ecma13BinaryProperties,
21148
+ 14: ecma14BinaryProperties
21004
21149
  };
21005
21150
 
21006
21151
  // #table-unicode-general-category-values
@@ -21012,12 +21157,15 @@ var ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Han
21012
21157
  var ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho";
21013
21158
  var ecma12ScriptValues = ecma11ScriptValues + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi";
21014
21159
  var ecma13ScriptValues = ecma12ScriptValues + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith";
21160
+ var ecma14ScriptValues = ecma13ScriptValues + " Kawi Nag_Mundari Nagm";
21161
+
21015
21162
  var unicodeScriptValues = {
21016
21163
  9: ecma9ScriptValues,
21017
21164
  10: ecma10ScriptValues,
21018
21165
  11: ecma11ScriptValues,
21019
21166
  12: ecma12ScriptValues,
21020
- 13: ecma13ScriptValues
21167
+ 13: ecma13ScriptValues,
21168
+ 14: ecma14ScriptValues
21021
21169
  };
21022
21170
 
21023
21171
  var data = {};
@@ -21036,7 +21184,7 @@ function buildUnicodeData(ecmaVersion) {
21036
21184
  d.nonBinary.scx = d.nonBinary.Script_Extensions;
21037
21185
  }
21038
21186
 
21039
- for (var i = 0, list = [9, 10, 11, 12, 13]; i < list.length; i += 1) {
21187
+ for (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {
21040
21188
  var ecmaVersion = list[i];
21041
21189
 
21042
21190
  buildUnicodeData(ecmaVersion);
@@ -21047,7 +21195,7 @@ var pp$1 = Parser.prototype;
21047
21195
  var RegExpValidationState = function RegExpValidationState(parser) {
21048
21196
  this.parser = parser;
21049
21197
  this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "");
21050
- this.unicodeProperties = data[parser.options.ecmaVersion >= 13 ? 13 : parser.options.ecmaVersion];
21198
+ this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];
21051
21199
  this.source = "";
21052
21200
  this.flags = "";
21053
21201
  this.start = 0;
@@ -22809,8 +22957,6 @@ pp.readEscapedChar = function(inTemplate) {
22809
22957
  codePos,
22810
22958
  "Invalid escape sequence in template string"
22811
22959
  );
22812
-
22813
- return null
22814
22960
  }
22815
22961
  default:
22816
22962
  if (ch >= 48 && ch <= 55) {
@@ -22898,7 +23044,7 @@ pp.readWord = function() {
22898
23044
 
22899
23045
  // Acorn is a tiny, fast JavaScript parser written in JavaScript.
22900
23046
 
22901
- var version = "8.8.1";
23047
+ var version = "8.8.2";
22902
23048
 
22903
23049
  Parser.acorn = {
22904
23050
  Parser: Parser,