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
 
@@ -31,7 +31,7 @@ function _interopNamespaceDefault(e) {
31
31
 
32
32
  const tty__namespace = /*#__PURE__*/_interopNamespaceDefault(tty);
33
33
 
34
- var version$1 = "3.18.0";
34
+ var version$1 = "3.19.0";
35
35
 
36
36
  function ensureArray$1(items) {
37
37
  if (Array.isArray(items)) {
@@ -1818,6 +1818,7 @@ class MagicString {
1818
1818
  sourcemapLocations: { writable: true, value: new BitSet() },
1819
1819
  storedNames: { writable: true, value: {} },
1820
1820
  indentStr: { writable: true, value: undefined },
1821
+ ignoreList: { writable: true, value: options.ignoreList },
1821
1822
  });
1822
1823
 
1823
1824
  this.byStart[0] = chunk;
@@ -1935,11 +1936,12 @@ class MagicString {
1935
1936
  });
1936
1937
 
1937
1938
  return {
1938
- file: options.file ? options.file.split(/[/\\]/).pop() : null,
1939
- sources: [options.source ? getRelativePath(options.file || '', options.source) : null],
1940
- sourcesContent: options.includeContent ? [this.original] : [null],
1939
+ file: options.file ? options.file.split(/[/\\]/).pop() : undefined,
1940
+ sources: [options.source ? getRelativePath(options.file || '', options.source) : (options.file || '')],
1941
+ sourcesContent: options.includeContent ? [this.original] : undefined,
1941
1942
  names,
1942
1943
  mappings: mappings.raw,
1944
+ x_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined
1943
1945
  };
1944
1946
  }
1945
1947
 
@@ -2609,7 +2611,7 @@ let Bundle$1 = class Bundle {
2609
2611
  );
2610
2612
  }
2611
2613
 
2612
- ['filename', 'indentExclusionRanges', 'separator'].forEach((option) => {
2614
+ ['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {
2613
2615
  if (!hasOwnProp.call(source, option)) source[option] = source.content[option];
2614
2616
  });
2615
2617
 
@@ -2662,6 +2664,7 @@ let Bundle$1 = class Bundle {
2662
2664
 
2663
2665
  generateDecodedMap(options = {}) {
2664
2666
  const names = [];
2667
+ let x_google_ignoreList = undefined;
2665
2668
  this.sources.forEach((source) => {
2666
2669
  Object.keys(source.content.storedNames).forEach((name) => {
2667
2670
  if (!~names.indexOf(name)) names.push(name);
@@ -2719,10 +2722,17 @@ let Bundle$1 = class Bundle {
2719
2722
  if (magicString.outro) {
2720
2723
  mappings.advance(magicString.outro);
2721
2724
  }
2725
+
2726
+ if (source.ignoreList && sourceIndex !== -1) {
2727
+ if (x_google_ignoreList === undefined) {
2728
+ x_google_ignoreList = [];
2729
+ }
2730
+ x_google_ignoreList.push(sourceIndex);
2731
+ }
2722
2732
  });
2723
2733
 
2724
2734
  return {
2725
- file: options.file ? options.file.split(/[/\\]/).pop() : null,
2735
+ file: options.file ? options.file.split(/[/\\]/).pop() : undefined,
2726
2736
  sources: this.uniqueSources.map((source) => {
2727
2737
  return options.file ? getRelativePath(options.file, source.filename) : source.filename;
2728
2738
  }),
@@ -2731,6 +2741,7 @@ let Bundle$1 = class Bundle {
2731
2741
  }),
2732
2742
  names,
2733
2743
  mappings: mappings.raw,
2744
+ x_google_ignoreList,
2734
2745
  };
2735
2746
  }
2736
2747
 
@@ -3009,14 +3020,14 @@ class ExpressionEntity {
3009
3020
  constructor() {
3010
3021
  this.included = false;
3011
3022
  }
3012
- deoptimizePath(_path) { }
3013
- deoptimizeThisOnInteractionAtPath({ thisArg }, _path, _recursionTracker) {
3014
- thisArg.deoptimizePath(UNKNOWN_PATH);
3023
+ deoptimizeArgumentsOnInteractionAtPath(interaction, _path, _recursionTracker) {
3024
+ deoptimizeInteraction(interaction);
3015
3025
  }
3026
+ deoptimizePath(_path) { }
3016
3027
  /**
3017
- * If possible it returns a stringifyable literal value for this node that can be used
3018
- * for inlining or comparing values.
3019
- * Otherwise, it should return UnknownValue.
3028
+ * If possible it returns a stringifyable literal value for this node that
3029
+ * can be used for inlining or comparing values. Otherwise, it should return
3030
+ * UnknownValue.
3020
3031
  */
3021
3032
  getLiteralValueAtPath(_path, _recursionTracker, _origin) {
3022
3033
  return UnknownValue;
@@ -3045,11 +3056,20 @@ const UNKNOWN_RETURN_EXPRESSION = [
3045
3056
  UNKNOWN_EXPRESSION,
3046
3057
  false
3047
3058
  ];
3059
+ const deoptimizeInteraction = (interaction) => {
3060
+ interaction.thisArg?.deoptimizePath(UNKNOWN_PATH);
3061
+ if (interaction.args) {
3062
+ for (const argument of interaction.args) {
3063
+ argument.deoptimizePath(UNKNOWN_PATH);
3064
+ }
3065
+ }
3066
+ };
3048
3067
 
3049
3068
  const INTERACTION_ACCESSED = 0;
3050
3069
  const INTERACTION_ASSIGNED = 1;
3051
3070
  const INTERACTION_CALLED = 2;
3052
3071
  const NODE_INTERACTION_UNKNOWN_ACCESS = {
3072
+ args: null,
3053
3073
  thisArg: null,
3054
3074
  type: INTERACTION_ACCESSED
3055
3075
  };
@@ -6361,9 +6381,9 @@ class NodeBase extends ExpressionEntity {
6361
6381
  }
6362
6382
 
6363
6383
  class SpreadElement extends NodeBase {
6364
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
6384
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
6365
6385
  if (path.length > 0) {
6366
- this.argument.deoptimizeThisOnInteractionAtPath(interaction, [UnknownKey, ...path], recursionTracker);
6386
+ this.argument.deoptimizeArgumentsOnInteractionAtPath(interaction, [UnknownKey, ...path], recursionTracker);
6367
6387
  }
6368
6388
  }
6369
6389
  hasEffects(context) {
@@ -6390,9 +6410,9 @@ class Method extends ExpressionEntity {
6390
6410
  super();
6391
6411
  this.description = description;
6392
6412
  }
6393
- deoptimizeThisOnInteractionAtPath({ type, thisArg }, path) {
6413
+ deoptimizeArgumentsOnInteractionAtPath({ type, thisArg }, path) {
6394
6414
  if (type === INTERACTION_CALLED && path.length === 0 && this.description.mutatesSelfAsArray) {
6395
- thisArg.deoptimizePath(UNKNOWN_INTEGER_PATH);
6415
+ thisArg?.deoptimizePath(UNKNOWN_INTEGER_PATH);
6396
6416
  }
6397
6417
  }
6398
6418
  getReturnExpressionWhenCalledAtPath(path, { thisArg }) {
@@ -6470,6 +6490,7 @@ class ObjectEntity extends ExpressionEntity {
6470
6490
  super();
6471
6491
  this.prototypeExpression = prototypeExpression;
6472
6492
  this.immutable = immutable;
6493
+ this.additionalExpressionsToBeDeoptimized = new Set();
6473
6494
  this.allProperties = [];
6474
6495
  this.deoptimizedPaths = Object.create(null);
6475
6496
  this.expressionsToBeDeoptimizedByKey = Object.create(null);
@@ -6480,7 +6501,6 @@ class ObjectEntity extends ExpressionEntity {
6480
6501
  this.propertiesAndGettersByKey = Object.create(null);
6481
6502
  this.propertiesAndSettersByKey = Object.create(null);
6482
6503
  this.settersByKey = Object.create(null);
6483
- this.thisParametersToBeDeoptimized = new Set();
6484
6504
  this.unknownIntegerProps = [];
6485
6505
  this.unmatchableGetters = [];
6486
6506
  this.unmatchablePropertiesAndGetters = [];
@@ -6518,6 +6538,85 @@ class ObjectEntity extends ExpressionEntity {
6518
6538
  this.prototypeExpression?.deoptimizePath([UnknownKey, UnknownKey]);
6519
6539
  this.deoptimizeCachedEntities();
6520
6540
  }
6541
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
6542
+ const [key, ...subPath] = path;
6543
+ const { args, thisArg, type } = interaction;
6544
+ if (this.hasLostTrack ||
6545
+ // single paths that are deoptimized will not become getters or setters
6546
+ ((type === INTERACTION_CALLED || path.length > 1) &&
6547
+ (this.hasUnknownDeoptimizedProperty ||
6548
+ (typeof key === 'string' && this.deoptimizedPaths[key])))) {
6549
+ thisArg?.deoptimizePath(UNKNOWN_PATH);
6550
+ if (args) {
6551
+ for (const argument of args) {
6552
+ argument.deoptimizePath(UNKNOWN_PATH);
6553
+ }
6554
+ }
6555
+ return;
6556
+ }
6557
+ const [propertiesForExactMatchByKey, relevantPropertiesByKey, relevantUnmatchableProperties] = type === INTERACTION_CALLED || path.length > 1
6558
+ ? [
6559
+ this.propertiesAndGettersByKey,
6560
+ this.propertiesAndGettersByKey,
6561
+ this.unmatchablePropertiesAndGetters
6562
+ ]
6563
+ : type === INTERACTION_ACCESSED
6564
+ ? [this.propertiesAndGettersByKey, this.gettersByKey, this.unmatchableGetters]
6565
+ : [this.propertiesAndSettersByKey, this.settersByKey, this.unmatchableSetters];
6566
+ if (typeof key === 'string') {
6567
+ if (propertiesForExactMatchByKey[key]) {
6568
+ const properties = relevantPropertiesByKey[key];
6569
+ if (properties) {
6570
+ for (const property of properties) {
6571
+ property.deoptimizeArgumentsOnInteractionAtPath(interaction, subPath, recursionTracker);
6572
+ }
6573
+ }
6574
+ if (!this.immutable) {
6575
+ if (thisArg) {
6576
+ this.additionalExpressionsToBeDeoptimized.add(thisArg);
6577
+ }
6578
+ if (args) {
6579
+ for (const argument of args) {
6580
+ this.additionalExpressionsToBeDeoptimized.add(argument);
6581
+ }
6582
+ }
6583
+ }
6584
+ return;
6585
+ }
6586
+ for (const property of relevantUnmatchableProperties) {
6587
+ property.deoptimizeArgumentsOnInteractionAtPath(interaction, subPath, recursionTracker);
6588
+ }
6589
+ if (INTEGER_REG_EXP.test(key)) {
6590
+ for (const property of this.unknownIntegerProps) {
6591
+ property.deoptimizeArgumentsOnInteractionAtPath(interaction, subPath, recursionTracker);
6592
+ }
6593
+ }
6594
+ }
6595
+ else {
6596
+ for (const properties of [
6597
+ ...Object.values(relevantPropertiesByKey),
6598
+ relevantUnmatchableProperties
6599
+ ]) {
6600
+ for (const property of properties) {
6601
+ property.deoptimizeArgumentsOnInteractionAtPath(interaction, subPath, recursionTracker);
6602
+ }
6603
+ }
6604
+ for (const property of this.unknownIntegerProps) {
6605
+ property.deoptimizeArgumentsOnInteractionAtPath(interaction, subPath, recursionTracker);
6606
+ }
6607
+ }
6608
+ if (!this.immutable) {
6609
+ if (thisArg) {
6610
+ this.additionalExpressionsToBeDeoptimized.add(thisArg);
6611
+ }
6612
+ if (args) {
6613
+ for (const argument of args) {
6614
+ this.additionalExpressionsToBeDeoptimized.add(argument);
6615
+ }
6616
+ }
6617
+ }
6618
+ this.prototypeExpression?.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
6619
+ }
6521
6620
  deoptimizeIntegerProperties() {
6522
6621
  if (this.hasLostTrack ||
6523
6622
  this.hasUnknownDeoptimizedProperty ||
@@ -6570,65 +6669,6 @@ class ObjectEntity extends ExpressionEntity {
6570
6669
  }
6571
6670
  this.prototypeExpression?.deoptimizePath(path.length === 1 ? [...path, UnknownKey] : path);
6572
6671
  }
6573
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
6574
- const [key, ...subPath] = path;
6575
- if (this.hasLostTrack ||
6576
- // single paths that are deoptimized will not become getters or setters
6577
- ((interaction.type === INTERACTION_CALLED || path.length > 1) &&
6578
- (this.hasUnknownDeoptimizedProperty ||
6579
- (typeof key === 'string' && this.deoptimizedPaths[key])))) {
6580
- interaction.thisArg.deoptimizePath(UNKNOWN_PATH);
6581
- return;
6582
- }
6583
- const [propertiesForExactMatchByKey, relevantPropertiesByKey, relevantUnmatchableProperties] = interaction.type === INTERACTION_CALLED || path.length > 1
6584
- ? [
6585
- this.propertiesAndGettersByKey,
6586
- this.propertiesAndGettersByKey,
6587
- this.unmatchablePropertiesAndGetters
6588
- ]
6589
- : interaction.type === INTERACTION_ACCESSED
6590
- ? [this.propertiesAndGettersByKey, this.gettersByKey, this.unmatchableGetters]
6591
- : [this.propertiesAndSettersByKey, this.settersByKey, this.unmatchableSetters];
6592
- if (typeof key === 'string') {
6593
- if (propertiesForExactMatchByKey[key]) {
6594
- const properties = relevantPropertiesByKey[key];
6595
- if (properties) {
6596
- for (const property of properties) {
6597
- property.deoptimizeThisOnInteractionAtPath(interaction, subPath, recursionTracker);
6598
- }
6599
- }
6600
- if (!this.immutable) {
6601
- this.thisParametersToBeDeoptimized.add(interaction.thisArg);
6602
- }
6603
- return;
6604
- }
6605
- for (const property of relevantUnmatchableProperties) {
6606
- property.deoptimizeThisOnInteractionAtPath(interaction, subPath, recursionTracker);
6607
- }
6608
- if (INTEGER_REG_EXP.test(key)) {
6609
- for (const property of this.unknownIntegerProps) {
6610
- property.deoptimizeThisOnInteractionAtPath(interaction, subPath, recursionTracker);
6611
- }
6612
- }
6613
- }
6614
- else {
6615
- for (const properties of [
6616
- ...Object.values(relevantPropertiesByKey),
6617
- relevantUnmatchableProperties
6618
- ]) {
6619
- for (const property of properties) {
6620
- property.deoptimizeThisOnInteractionAtPath(interaction, subPath, recursionTracker);
6621
- }
6622
- }
6623
- for (const property of this.unknownIntegerProps) {
6624
- property.deoptimizeThisOnInteractionAtPath(interaction, subPath, recursionTracker);
6625
- }
6626
- }
6627
- if (!this.immutable) {
6628
- this.thisParametersToBeDeoptimized.add(interaction.thisArg);
6629
- }
6630
- this.prototypeExpression?.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
6631
- }
6632
6672
  getLiteralValueAtPath(path, recursionTracker, origin) {
6633
6673
  if (path.length === 0) {
6634
6674
  return UnknownTruthyValue;
@@ -6759,7 +6799,7 @@ class ObjectEntity extends ExpressionEntity {
6759
6799
  expression.deoptimizeCache();
6760
6800
  }
6761
6801
  }
6762
- for (const expression of this.thisParametersToBeDeoptimized) {
6802
+ for (const expression of this.additionalExpressionsToBeDeoptimized) {
6763
6803
  expression.deoptimizePath(UNKNOWN_PATH);
6764
6804
  }
6765
6805
  }
@@ -6771,7 +6811,7 @@ class ObjectEntity extends ExpressionEntity {
6771
6811
  }
6772
6812
  }
6773
6813
  }
6774
- for (const expression of this.thisParametersToBeDeoptimized) {
6814
+ for (const expression of this.additionalExpressionsToBeDeoptimized) {
6775
6815
  expression.deoptimizePath(UNKNOWN_INTEGER_PATH);
6776
6816
  }
6777
6817
  }
@@ -6814,9 +6854,9 @@ const isInteger = (property) => typeof property === 'string' && /^\d+$/.test(pro
6814
6854
  // properties as we do not expect new builtin properties to be numbers, this
6815
6855
  // will improve tree-shaking for out-of-bounds array properties
6816
6856
  const OBJECT_PROTOTYPE_FALLBACK = new (class ObjectPrototypeFallbackExpression extends ExpressionEntity {
6817
- deoptimizeThisOnInteractionAtPath({ type, thisArg }, path) {
6818
- if (type === INTERACTION_CALLED && path.length === 1 && !isInteger(path[0])) {
6819
- thisArg.deoptimizePath(UNKNOWN_PATH);
6857
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path) {
6858
+ if (interaction.type === INTERACTION_CALLED && path.length === 1 && !isInteger(path[0])) {
6859
+ deoptimizeInteraction(interaction);
6820
6860
  }
6821
6861
  }
6822
6862
  getLiteralValueAtPath(path) {
@@ -6975,12 +7015,12 @@ class ArrayExpression extends NodeBase {
6975
7015
  super(...arguments);
6976
7016
  this.objectEntity = null;
6977
7017
  }
7018
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
7019
+ this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
7020
+ }
6978
7021
  deoptimizePath(path) {
6979
7022
  this.getObjectEntity().deoptimizePath(path);
6980
7023
  }
6981
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
6982
- this.getObjectEntity().deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
6983
- }
6984
7024
  getLiteralValueAtPath(path, recursionTracker, origin) {
6985
7025
  return this.getObjectEntity().getLiteralValueAtPath(path, recursionTracker, origin);
6986
7026
  }
@@ -7068,29 +7108,33 @@ class ArrayPattern extends NodeBase {
7068
7108
  class LocalVariable extends Variable {
7069
7109
  constructor(name, declarator, init, context) {
7070
7110
  super(name);
7111
+ this.init = init;
7071
7112
  this.calledFromTryStatement = false;
7072
7113
  this.additionalInitializers = null;
7073
7114
  this.expressionsToBeDeoptimized = [];
7074
7115
  this.declarations = declarator ? [declarator] : [];
7075
- this.init = init;
7076
7116
  this.deoptimizationTracker = context.deoptimizationTracker;
7077
7117
  this.module = context.module;
7078
7118
  }
7079
7119
  addDeclaration(identifier, init) {
7080
7120
  this.declarations.push(identifier);
7081
- const additionalInitializers = this.markInitializersForDeoptimization();
7082
- if (init !== null) {
7083
- additionalInitializers.push(init);
7084
- }
7121
+ this.markInitializersForDeoptimization().push(init);
7085
7122
  }
7086
7123
  consolidateInitializers() {
7087
- if (this.additionalInitializers !== null) {
7124
+ if (this.additionalInitializers) {
7088
7125
  for (const initializer of this.additionalInitializers) {
7089
7126
  initializer.deoptimizePath(UNKNOWN_PATH);
7090
7127
  }
7091
7128
  this.additionalInitializers = null;
7092
7129
  }
7093
7130
  }
7131
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
7132
+ if (this.isReassigned) {
7133
+ deoptimizeInteraction(interaction);
7134
+ return;
7135
+ }
7136
+ recursionTracker.withTrackedEntityAtPath(path, this.init, () => this.init.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker), undefined);
7137
+ }
7094
7138
  deoptimizePath(path) {
7095
7139
  if (this.isReassigned ||
7096
7140
  this.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(path, this)) {
@@ -7104,21 +7148,15 @@ class LocalVariable extends Variable {
7104
7148
  for (const expression of expressionsToBeDeoptimized) {
7105
7149
  expression.deoptimizeCache();
7106
7150
  }
7107
- this.init?.deoptimizePath(UNKNOWN_PATH);
7151
+ this.init.deoptimizePath(UNKNOWN_PATH);
7108
7152
  }
7109
7153
  }
7110
7154
  else {
7111
- this.init?.deoptimizePath(path);
7155
+ this.init.deoptimizePath(path);
7112
7156
  }
7113
7157
  }
7114
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
7115
- if (this.isReassigned || !this.init) {
7116
- return interaction.thisArg.deoptimizePath(UNKNOWN_PATH);
7117
- }
7118
- recursionTracker.withTrackedEntityAtPath(path, this.init, () => this.init.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker), undefined);
7119
- }
7120
7158
  getLiteralValueAtPath(path, recursionTracker, origin) {
7121
- if (this.isReassigned || !this.init) {
7159
+ if (this.isReassigned) {
7122
7160
  return UnknownValue;
7123
7161
  }
7124
7162
  return recursionTracker.withTrackedEntityAtPath(path, this.init, () => {
@@ -7127,7 +7165,7 @@ class LocalVariable extends Variable {
7127
7165
  }, UnknownValue);
7128
7166
  }
7129
7167
  getReturnExpressionWhenCalledAtPath(path, interaction, recursionTracker, origin) {
7130
- if (this.isReassigned || !this.init) {
7168
+ if (this.isReassigned) {
7131
7169
  return UNKNOWN_RETURN_EXPRESSION;
7132
7170
  }
7133
7171
  return recursionTracker.withTrackedEntityAtPath(path, this.init, () => {
@@ -7140,8 +7178,7 @@ class LocalVariable extends Variable {
7140
7178
  case INTERACTION_ACCESSED: {
7141
7179
  if (this.isReassigned)
7142
7180
  return true;
7143
- return !!(this.init &&
7144
- !context.accessed.trackEntityAtPathAndGetIfTracked(path, this) &&
7181
+ return (!context.accessed.trackEntityAtPathAndGetIfTracked(path, this) &&
7145
7182
  this.init.hasEffectsOnInteractionAtPath(path, interaction, context));
7146
7183
  }
7147
7184
  case INTERACTION_ASSIGNED: {
@@ -7151,15 +7188,13 @@ class LocalVariable extends Variable {
7151
7188
  return false;
7152
7189
  if (this.isReassigned)
7153
7190
  return true;
7154
- return !!(this.init &&
7155
- !context.assigned.trackEntityAtPathAndGetIfTracked(path, this) &&
7191
+ return (!context.assigned.trackEntityAtPathAndGetIfTracked(path, this) &&
7156
7192
  this.init.hasEffectsOnInteractionAtPath(path, interaction, context));
7157
7193
  }
7158
7194
  case INTERACTION_CALLED: {
7159
7195
  if (this.isReassigned)
7160
7196
  return true;
7161
- return !!(this.init &&
7162
- !(interaction.withNew ? context.instantiated : context.called).trackEntityAtPathAndGetIfTracked(path, interaction.args, this) &&
7197
+ return (!(interaction.withNew ? context.instantiated : context.called).trackEntityAtPathAndGetIfTracked(path, interaction.args, this) &&
7163
7198
  this.init.hasEffectsOnInteractionAtPath(path, interaction, context));
7164
7199
  }
7165
7200
  }
@@ -7184,12 +7219,12 @@ class LocalVariable extends Variable {
7184
7219
  }
7185
7220
  }
7186
7221
  includeCallArguments(context, parameters) {
7187
- if (this.isReassigned || (this.init && context.includedCallArguments.has(this.init))) {
7222
+ if (this.isReassigned || context.includedCallArguments.has(this.init)) {
7188
7223
  for (const argument of parameters) {
7189
7224
  argument.include(context, false);
7190
7225
  }
7191
7226
  }
7192
- else if (this.init) {
7227
+ else {
7193
7228
  context.includedCallArguments.add(this.init);
7194
7229
  this.init.includeCallArguments(context, parameters);
7195
7230
  context.includedCallArguments.delete(this.init);
@@ -7200,12 +7235,91 @@ class LocalVariable extends Variable {
7200
7235
  }
7201
7236
  markInitializersForDeoptimization() {
7202
7237
  if (this.additionalInitializers === null) {
7203
- this.additionalInitializers = this.init === null ? [] : [this.init];
7238
+ this.additionalInitializers = [this.init];
7204
7239
  this.init = UNKNOWN_EXPRESSION;
7205
7240
  this.isReassigned = true;
7206
7241
  }
7207
7242
  return this.additionalInitializers;
7208
7243
  }
7244
+ mergeDeclarations(variable) {
7245
+ const { declarations } = this;
7246
+ for (const declaration of variable.declarations) {
7247
+ declarations.push(declaration);
7248
+ }
7249
+ const additionalInitializers = this.markInitializersForDeoptimization();
7250
+ additionalInitializers.push(variable.init);
7251
+ if (variable.additionalInitializers) {
7252
+ for (const initializer of variable.additionalInitializers) {
7253
+ additionalInitializers.push(initializer);
7254
+ }
7255
+ }
7256
+ }
7257
+ }
7258
+
7259
+ class ParameterVariable extends LocalVariable {
7260
+ constructor(name, declarator, context) {
7261
+ super(name, declarator, UNKNOWN_EXPRESSION, context);
7262
+ this.deoptimizationInteractions = [];
7263
+ this.deoptimizations = new DiscriminatedPathTracker();
7264
+ this.deoptimizedFields = new Set();
7265
+ this.entitiesToBeDeoptimized = new Set();
7266
+ }
7267
+ addEntityToBeDeoptimized(entity) {
7268
+ if (this.deoptimizedFields.has(UnknownKey)) {
7269
+ entity.deoptimizePath(UNKNOWN_PATH);
7270
+ }
7271
+ else {
7272
+ for (const field of this.deoptimizedFields) {
7273
+ entity.deoptimizePath([field]);
7274
+ }
7275
+ }
7276
+ for (const { interaction, path } of this.deoptimizationInteractions) {
7277
+ entity.deoptimizeArgumentsOnInteractionAtPath(interaction, path, SHARED_RECURSION_TRACKER);
7278
+ }
7279
+ this.entitiesToBeDeoptimized.add(entity);
7280
+ }
7281
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path) {
7282
+ // For performance reasons, we fully deoptimize all deeper interactions
7283
+ if (path.length >= 2) {
7284
+ deoptimizeInteraction(interaction);
7285
+ return;
7286
+ }
7287
+ if (interaction.thisArg &&
7288
+ !this.deoptimizations.trackEntityAtPathAndGetIfTracked(path, interaction.args, interaction.thisArg)) {
7289
+ for (const entity of this.entitiesToBeDeoptimized) {
7290
+ entity.deoptimizeArgumentsOnInteractionAtPath(interaction, path, SHARED_RECURSION_TRACKER);
7291
+ }
7292
+ this.deoptimizationInteractions.push({
7293
+ interaction,
7294
+ path
7295
+ });
7296
+ }
7297
+ }
7298
+ deoptimizePath(path) {
7299
+ if (path.length === 0 || this.deoptimizedFields.has(UnknownKey)) {
7300
+ return;
7301
+ }
7302
+ const key = path[0];
7303
+ if (this.deoptimizedFields.has(key)) {
7304
+ return;
7305
+ }
7306
+ this.deoptimizedFields.add(key);
7307
+ for (const entity of this.entitiesToBeDeoptimized) {
7308
+ entity.deoptimizePath(path);
7309
+ }
7310
+ }
7311
+ getReturnExpressionWhenCalledAtPath(path) {
7312
+ // We deoptimize everything that is called as that will trivially deoptimize
7313
+ // the corresponding return expressions as well and avoid badly performing
7314
+ // and complicated alternatives
7315
+ if (path.length === 0) {
7316
+ this.deoptimizePath(UNKNOWN_PATH);
7317
+ }
7318
+ else if (!this.deoptimizedFields.has(path[0])) {
7319
+ this.deoptimizePath(path.slice(0, 1));
7320
+ }
7321
+ return UNKNOWN_RETURN_EXPRESSION;
7322
+ }
7209
7323
  }
7210
7324
 
7211
7325
  const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$';
@@ -7347,16 +7461,15 @@ class ParameterScope extends ChildScope {
7347
7461
  }
7348
7462
  /**
7349
7463
  * Adds a parameter to this scope. Parameters must be added in the correct
7350
- * order, e.g. from left to right.
7464
+ * order, i.e. from left to right.
7351
7465
  */
7352
7466
  addParameterDeclaration(identifier) {
7353
- const name = identifier.name;
7354
- let variable = this.hoistedBodyVarScope.variables.get(name);
7355
- if (variable) {
7356
- variable.addDeclaration(identifier, null);
7357
- }
7358
- else {
7359
- variable = new LocalVariable(name, identifier, UNKNOWN_EXPRESSION, this.context);
7467
+ const { name } = identifier;
7468
+ const variable = new ParameterVariable(name, identifier, this.context);
7469
+ const localVariable = this.hoistedBodyVarScope.variables.get(name);
7470
+ if (localVariable) {
7471
+ this.hoistedBodyVarScope.variables.set(name, variable);
7472
+ variable.mergeDeclarations(localVariable);
7360
7473
  }
7361
7474
  this.variables.set(name, variable);
7362
7475
  return variable;
@@ -7502,16 +7615,20 @@ const getPureFunctions = ({ treeshake }) => {
7502
7615
  return pureFunctions;
7503
7616
  };
7504
7617
 
7618
+ const doNothing = () => { };
7619
+
7505
7620
  /* eslint sort-keys: "off" */
7506
7621
  const ValueProperties = Symbol('Value Properties');
7507
7622
  const getTruthyLiteralValue = () => UnknownTruthyValue;
7508
7623
  const returnFalse = () => false;
7509
7624
  const returnTrue = () => true;
7510
7625
  const PURE = {
7626
+ deoptimizeArgumentsOnCall: doNothing,
7511
7627
  getLiteralValue: getTruthyLiteralValue,
7512
7628
  hasEffectsWhenCalled: returnFalse
7513
7629
  };
7514
7630
  const IMPURE = {
7631
+ deoptimizeArgumentsOnCall: doNothing,
7515
7632
  getLiteralValue: getTruthyLiteralValue,
7516
7633
  hasEffectsWhenCalled: returnTrue
7517
7634
  };
@@ -7530,6 +7647,9 @@ const PF = {
7530
7647
  const MUTATES_ARG_WITHOUT_ACCESSOR = {
7531
7648
  __proto__: null,
7532
7649
  [ValueProperties]: {
7650
+ deoptimizeArgumentsOnCall({ args: [firstArgument] }) {
7651
+ firstArgument?.deoptimizePath(UNKNOWN_PATH);
7652
+ },
7533
7653
  getLiteralValue: getTruthyLiteralValue,
7534
7654
  hasEffectsWhenCalled({ args }, context) {
7535
7655
  return (args.length === 0 ||
@@ -7734,6 +7854,7 @@ const knownGlobals = {
7734
7854
  toStringTag: {
7735
7855
  __proto__: null,
7736
7856
  [ValueProperties]: {
7857
+ deoptimizeArgumentsOnCall: doNothing,
7737
7858
  getLiteralValue() {
7738
7859
  return SymbolToStringTag;
7739
7860
  },
@@ -7759,7 +7880,30 @@ const knownGlobals = {
7759
7880
  // Additional globals shared by Node and Browser that are not strictly part of the language
7760
7881
  clearInterval: C,
7761
7882
  clearTimeout: C,
7762
- console: O,
7883
+ console: {
7884
+ __proto__: null,
7885
+ [ValueProperties]: IMPURE,
7886
+ assert: C,
7887
+ clear: C,
7888
+ count: C,
7889
+ countReset: C,
7890
+ debug: C,
7891
+ dir: C,
7892
+ dirxml: C,
7893
+ error: C,
7894
+ exception: C,
7895
+ group: C,
7896
+ groupCollapsed: C,
7897
+ groupEnd: C,
7898
+ info: C,
7899
+ log: C,
7900
+ table: C,
7901
+ time: C,
7902
+ timeEnd: C,
7903
+ timeLog: C,
7904
+ trace: C,
7905
+ warn: C
7906
+ },
7763
7907
  Intl: {
7764
7908
  __proto__: null,
7765
7909
  [ValueProperties]: IMPURE,
@@ -8384,6 +8528,29 @@ class GlobalVariable extends Variable {
8384
8528
  // been reassigned
8385
8529
  this.isReassigned = true;
8386
8530
  }
8531
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
8532
+ switch (interaction.type) {
8533
+ // While there is no point in testing these cases as at the moment, they
8534
+ // are also covered via other means, we keep them for completeness
8535
+ case INTERACTION_ACCESSED:
8536
+ case INTERACTION_ASSIGNED: {
8537
+ if (!getGlobalAtPath([this.name, ...path].slice(0, -1))) {
8538
+ super.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
8539
+ }
8540
+ return;
8541
+ }
8542
+ case INTERACTION_CALLED: {
8543
+ const globalAtPath = getGlobalAtPath([this.name, ...path]);
8544
+ if (globalAtPath) {
8545
+ globalAtPath.deoptimizeArgumentsOnCall(interaction);
8546
+ }
8547
+ else {
8548
+ super.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
8549
+ }
8550
+ return;
8551
+ }
8552
+ }
8553
+ }
8387
8554
  getLiteralValueAtPath(path, _recursionTracker, _origin) {
8388
8555
  const globalAtPath = getGlobalAtPath([this.name, ...path]);
8389
8556
  return globalAtPath ? globalAtPath.getLiteralValue() : UnknownValue;
@@ -8468,6 +8635,9 @@ class Identifier extends NodeBase {
8468
8635
  variable.kind = kind;
8469
8636
  return [(this.variable = variable)];
8470
8637
  }
8638
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
8639
+ this.variable.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
8640
+ }
8471
8641
  deoptimizePath(path) {
8472
8642
  if (path.length === 0 && !this.scope.contains(this.name)) {
8473
8643
  this.disallowImportReassignment();
@@ -8476,9 +8646,6 @@ class Identifier extends NodeBase {
8476
8646
  // Identifier as property that might be deoptimized by default
8477
8647
  this.variable?.deoptimizePath(path);
8478
8648
  }
8479
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
8480
- this.variable.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
8481
- }
8482
8649
  getLiteralValueAtPath(path, recursionTracker, origin) {
8483
8650
  return this.getVariableRespectingTDZ().getLiteralValueAtPath(path, recursionTracker, origin);
8484
8651
  }
@@ -8904,6 +9071,30 @@ class FunctionBase extends NodeBase {
8904
9071
  this.objectEntity = null;
8905
9072
  this.deoptimizedReturn = false;
8906
9073
  }
9074
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
9075
+ if (interaction.type === INTERACTION_CALLED) {
9076
+ const { parameters } = this.scope;
9077
+ const { args } = interaction;
9078
+ let hasRest = false;
9079
+ for (let position = 0; position < args.length; position++) {
9080
+ const parameter = this.params[position];
9081
+ if (hasRest || parameter instanceof RestElement) {
9082
+ hasRest = true;
9083
+ args[position].deoptimizePath(UNKNOWN_PATH);
9084
+ }
9085
+ else if (parameter instanceof Identifier) {
9086
+ // args[position].deoptimizePath(UNKNOWN_PATH);
9087
+ parameters[position][0].addEntityToBeDeoptimized(args[position]);
9088
+ }
9089
+ else if (parameter) {
9090
+ args[position].deoptimizePath(UNKNOWN_PATH);
9091
+ }
9092
+ }
9093
+ }
9094
+ else {
9095
+ this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
9096
+ }
9097
+ }
8907
9098
  deoptimizePath(path) {
8908
9099
  this.getObjectEntity().deoptimizePath(path);
8909
9100
  if (path.length === 1 && path[0] === UnknownKey) {
@@ -8912,11 +9103,6 @@ class FunctionBase extends NodeBase {
8912
9103
  this.scope.getReturnExpression().deoptimizePath(UNKNOWN_PATH);
8913
9104
  }
8914
9105
  }
8915
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
8916
- if (path.length > 0) {
8917
- this.getObjectEntity().deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
8918
- }
8919
- }
8920
9106
  getLiteralValueAtPath(path, recursionTracker, origin) {
8921
9107
  return this.getObjectEntity().getLiteralValueAtPath(path, recursionTracker, origin);
8922
9108
  }
@@ -9239,54 +9425,12 @@ class ArgumentsVariable extends LocalVariable {
9239
9425
  }
9240
9426
  }
9241
9427
 
9242
- class ThisVariable extends LocalVariable {
9428
+ class ThisVariable extends ParameterVariable {
9243
9429
  constructor(context) {
9244
- super('this', null, null, context);
9245
- this.deoptimizedPaths = [];
9246
- this.entitiesToBeDeoptimized = new Set();
9247
- this.thisDeoptimizationList = [];
9248
- this.thisDeoptimizations = new DiscriminatedPathTracker();
9249
- }
9250
- addEntityToBeDeoptimized(entity) {
9251
- for (const path of this.deoptimizedPaths) {
9252
- entity.deoptimizePath(path);
9253
- }
9254
- for (const { interaction, path } of this.thisDeoptimizationList) {
9255
- entity.deoptimizeThisOnInteractionAtPath(interaction, path, SHARED_RECURSION_TRACKER);
9256
- }
9257
- this.entitiesToBeDeoptimized.add(entity);
9258
- }
9259
- deoptimizePath(path) {
9260
- if (path.length === 0 ||
9261
- this.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(path, this)) {
9262
- return;
9263
- }
9264
- this.deoptimizedPaths.push(path);
9265
- for (const entity of this.entitiesToBeDeoptimized) {
9266
- entity.deoptimizePath(path);
9267
- }
9268
- }
9269
- deoptimizeThisOnInteractionAtPath(interaction, path) {
9270
- const thisDeoptimization = {
9271
- interaction,
9272
- path
9273
- };
9274
- if (!this.thisDeoptimizations.trackEntityAtPathAndGetIfTracked(path, interaction.type, interaction.thisArg)) {
9275
- for (const entity of this.entitiesToBeDeoptimized) {
9276
- entity.deoptimizeThisOnInteractionAtPath(interaction, path, SHARED_RECURSION_TRACKER);
9277
- }
9278
- this.thisDeoptimizationList.push(thisDeoptimization);
9279
- }
9430
+ super('this', null, context);
9280
9431
  }
9281
9432
  hasEffectsOnInteractionAtPath(path, interaction, context) {
9282
- const replacedVariableInit = context.replacedVariableInits.get(this);
9283
- if (replacedVariableInit) {
9284
- return (replacedVariableInit.hasEffectsOnInteractionAtPath(path, interaction, context) ||
9285
- // If the surrounding function is included, all mutations of "this" must
9286
- // be counted as side effects, which is what this second line does.
9287
- (!context.ignore.this && super.hasEffectsOnInteractionAtPath(path, interaction, context)));
9288
- }
9289
- return UNKNOWN_EXPRESSION.hasEffectsOnInteractionAtPath(path, interaction, context);
9433
+ return (context.replacedVariableInits.get(this) || UNKNOWN_EXPRESSION).hasEffectsOnInteractionAtPath(path, interaction, context);
9290
9434
  }
9291
9435
  }
9292
9436
 
@@ -9323,9 +9467,9 @@ class FunctionNode extends FunctionBase {
9323
9467
  // constructed entity.
9324
9468
  this.scope.thisVariable.addEntityToBeDeoptimized(this.constructedEntity);
9325
9469
  }
9326
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
9327
- super.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
9328
- if (interaction.type === INTERACTION_CALLED && path.length === 0) {
9470
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
9471
+ super.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
9472
+ if (interaction.type === INTERACTION_CALLED && path.length === 0 && interaction.thisArg) {
9329
9473
  this.scope.thisVariable.addEntityToBeDeoptimized(interaction.thisArg);
9330
9474
  }
9331
9475
  }
@@ -9524,7 +9668,7 @@ function renderCallArguments(code, options, node) {
9524
9668
  }
9525
9669
 
9526
9670
  class Literal extends NodeBase {
9527
- deoptimizeThisOnInteractionAtPath() { }
9671
+ deoptimizeArgumentsOnInteractionAtPath() { }
9528
9672
  getLiteralValueAtPath(path) {
9529
9673
  if (path.length > 0 ||
9530
9674
  // unknown literals can also be null but do not start with an "n"
@@ -9642,6 +9786,19 @@ class MemberExpression extends NodeBase {
9642
9786
  super.bind();
9643
9787
  }
9644
9788
  }
9789
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
9790
+ if (this.variable) {
9791
+ this.variable.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
9792
+ }
9793
+ else if (!this.isUndefined) {
9794
+ if (path.length < MAX_PATH_DEPTH) {
9795
+ this.object.deoptimizeArgumentsOnInteractionAtPath(interaction, [this.getPropertyKey(), ...path], recursionTracker);
9796
+ }
9797
+ else {
9798
+ deoptimizeInteraction(interaction);
9799
+ }
9800
+ }
9801
+ }
9645
9802
  deoptimizeCache() {
9646
9803
  const expressionsToBeDeoptimized = this.expressionsToBeDeoptimized;
9647
9804
  this.expressionsToBeDeoptimized = [];
@@ -9665,19 +9822,6 @@ class MemberExpression extends NodeBase {
9665
9822
  ]);
9666
9823
  }
9667
9824
  }
9668
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
9669
- if (this.variable) {
9670
- this.variable.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
9671
- }
9672
- else if (!this.isUndefined) {
9673
- if (path.length < MAX_PATH_DEPTH) {
9674
- this.object.deoptimizeThisOnInteractionAtPath(interaction, [this.getPropertyKey(), ...path], recursionTracker);
9675
- }
9676
- else {
9677
- interaction.thisArg.deoptimizePath(UNKNOWN_PATH);
9678
- }
9679
- }
9680
- }
9681
9825
  getLiteralValueAtPath(path, recursionTracker, origin) {
9682
9826
  if (this.variable) {
9683
9827
  return this.variable.getLiteralValueAtPath(path, recursionTracker, origin);
@@ -9758,7 +9902,7 @@ class MemberExpression extends NodeBase {
9758
9902
  }
9759
9903
  initialise() {
9760
9904
  this.propertyKey = getResolvablePropertyKey(this);
9761
- this.accessInteraction = { thisArg: this.object, type: INTERACTION_ACCESSED };
9905
+ this.accessInteraction = { args: null, thisArg: this.object, type: INTERACTION_ACCESSED };
9762
9906
  }
9763
9907
  isSkippedAsOptional(origin) {
9764
9908
  return (!this.variable &&
@@ -9803,7 +9947,7 @@ class MemberExpression extends NodeBase {
9803
9947
  propertyReadSideEffects &&
9804
9948
  !(this.variable || this.isUndefined)) {
9805
9949
  const propertyKey = this.getPropertyKey();
9806
- this.object.deoptimizeThisOnInteractionAtPath(this.accessInteraction, [propertyKey], SHARED_RECURSION_TRACKER);
9950
+ this.object.deoptimizeArgumentsOnInteractionAtPath(this.accessInteraction, [propertyKey], SHARED_RECURSION_TRACKER);
9807
9951
  this.context.requestTreeshakingPass();
9808
9952
  }
9809
9953
  }
@@ -9816,7 +9960,7 @@ class MemberExpression extends NodeBase {
9816
9960
  this.bound &&
9817
9961
  propertyReadSideEffects &&
9818
9962
  !(this.variable || this.isUndefined)) {
9819
- this.object.deoptimizeThisOnInteractionAtPath(this.assignmentInteraction, [this.getPropertyKey()], SHARED_RECURSION_TRACKER);
9963
+ this.object.deoptimizeArgumentsOnInteractionAtPath(this.assignmentInteraction, [this.getPropertyKey()], SHARED_RECURSION_TRACKER);
9820
9964
  this.context.requestTreeshakingPass();
9821
9965
  }
9822
9966
  }
@@ -9888,6 +10032,33 @@ class CallExpressionBase extends NodeBase {
9888
10032
  this.deoptimizableDependentExpressions = [];
9889
10033
  this.expressionsToBeDeoptimized = new Set();
9890
10034
  }
10035
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
10036
+ const { args, thisArg } = interaction;
10037
+ const [returnExpression, isPure] = this.getReturnExpression(recursionTracker);
10038
+ if (isPure)
10039
+ return;
10040
+ if (returnExpression === UNKNOWN_EXPRESSION) {
10041
+ thisArg?.deoptimizePath(UNKNOWN_PATH);
10042
+ if (args) {
10043
+ for (const argument of args) {
10044
+ argument.deoptimizePath(UNKNOWN_PATH);
10045
+ }
10046
+ }
10047
+ }
10048
+ else {
10049
+ recursionTracker.withTrackedEntityAtPath(path, returnExpression, () => {
10050
+ if (thisArg) {
10051
+ this.expressionsToBeDeoptimized.add(thisArg);
10052
+ }
10053
+ if (args) {
10054
+ for (const argument of args) {
10055
+ this.expressionsToBeDeoptimized.add(argument);
10056
+ }
10057
+ }
10058
+ returnExpression.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
10059
+ }, null);
10060
+ }
10061
+ }
9891
10062
  deoptimizeCache() {
9892
10063
  if (this.returnExpression?.[0] !== UNKNOWN_EXPRESSION) {
9893
10064
  this.returnExpression = UNKNOWN_RETURN_EXPRESSION;
@@ -9909,20 +10080,6 @@ class CallExpressionBase extends NodeBase {
9909
10080
  returnExpression.deoptimizePath(path);
9910
10081
  }
9911
10082
  }
9912
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
9913
- const [returnExpression, isPure] = this.getReturnExpression(recursionTracker);
9914
- if (isPure)
9915
- return;
9916
- if (returnExpression === UNKNOWN_EXPRESSION) {
9917
- interaction.thisArg.deoptimizePath(UNKNOWN_PATH);
9918
- }
9919
- else {
9920
- recursionTracker.withTrackedEntityAtPath(path, returnExpression, () => {
9921
- this.expressionsToBeDeoptimized.add(interaction.thisArg);
9922
- returnExpression.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
9923
- }, null);
9924
- }
9925
- }
9926
10083
  getLiteralValueAtPath(path, recursionTracker, origin) {
9927
10084
  const [returnExpression] = this.getReturnExpression(recursionTracker);
9928
10085
  if (returnExpression === UNKNOWN_EXPRESSION) {
@@ -10032,13 +10189,7 @@ class CallExpression extends CallExpressionBase {
10032
10189
  }
10033
10190
  applyDeoptimizations() {
10034
10191
  this.deoptimized = true;
10035
- if (this.interaction.thisArg) {
10036
- this.callee.deoptimizeThisOnInteractionAtPath(this.interaction, EMPTY_PATH, SHARED_RECURSION_TRACKER);
10037
- }
10038
- for (const argument of this.arguments) {
10039
- // This will make sure all properties of parameters behave as "unknown"
10040
- argument.deoptimizePath(UNKNOWN_PATH);
10041
- }
10192
+ this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction, EMPTY_PATH, SHARED_RECURSION_TRACKER);
10042
10193
  this.context.requestTreeshakingPass();
10043
10194
  }
10044
10195
  getReturnExpression(recursionTracker = SHARED_RECURSION_TRACKER) {
@@ -10135,15 +10286,9 @@ class MethodBase extends NodeBase {
10135
10286
  super(...arguments);
10136
10287
  this.accessedValue = null;
10137
10288
  }
10138
- // As getter properties directly receive their values from fixed function
10139
- // expressions, there is no known situation where a getter is deoptimized.
10140
- deoptimizeCache() { }
10141
- deoptimizePath(path) {
10142
- this.getAccessedValue()[0].deoptimizePath(path);
10143
- }
10144
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
10289
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
10145
10290
  if (interaction.type === INTERACTION_ACCESSED && this.kind === 'get' && path.length === 0) {
10146
- return this.value.deoptimizeThisOnInteractionAtPath({
10291
+ return this.value.deoptimizeArgumentsOnInteractionAtPath({
10147
10292
  args: NO_ARGS,
10148
10293
  thisArg: interaction.thisArg,
10149
10294
  type: INTERACTION_CALLED,
@@ -10151,14 +10296,20 @@ class MethodBase extends NodeBase {
10151
10296
  }, EMPTY_PATH, recursionTracker);
10152
10297
  }
10153
10298
  if (interaction.type === INTERACTION_ASSIGNED && this.kind === 'set' && path.length === 0) {
10154
- return this.value.deoptimizeThisOnInteractionAtPath({
10299
+ return this.value.deoptimizeArgumentsOnInteractionAtPath({
10155
10300
  args: interaction.args,
10156
10301
  thisArg: interaction.thisArg,
10157
10302
  type: INTERACTION_CALLED,
10158
10303
  withNew: false
10159
10304
  }, EMPTY_PATH, recursionTracker);
10160
10305
  }
10161
- this.getAccessedValue()[0].deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
10306
+ this.getAccessedValue()[0].deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
10307
+ }
10308
+ // As getter properties directly receive their values from fixed function
10309
+ // expressions, there is no known situation where a getter is deoptimized.
10310
+ deoptimizeCache() { }
10311
+ deoptimizePath(path) {
10312
+ this.getAccessedValue()[0].deoptimizePath(path);
10162
10313
  }
10163
10314
  getLiteralValueAtPath(path, recursionTracker, origin) {
10164
10315
  return this.getAccessedValue()[0].getLiteralValueAtPath(path, recursionTracker, origin);
@@ -10214,12 +10365,12 @@ class ObjectMember extends ExpressionEntity {
10214
10365
  this.object = object;
10215
10366
  this.key = key;
10216
10367
  }
10368
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
10369
+ this.object.deoptimizeArgumentsOnInteractionAtPath(interaction, [this.key, ...path], recursionTracker);
10370
+ }
10217
10371
  deoptimizePath(path) {
10218
10372
  this.object.deoptimizePath([this.key, ...path]);
10219
10373
  }
10220
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
10221
- this.object.deoptimizeThisOnInteractionAtPath(interaction, [this.key, ...path], recursionTracker);
10222
- }
10223
10374
  getLiteralValueAtPath(path, recursionTracker, origin) {
10224
10375
  return this.object.getLiteralValueAtPath([this.key, ...path], recursionTracker, origin);
10225
10376
  }
@@ -10239,15 +10390,15 @@ class ClassNode extends NodeBase {
10239
10390
  createScope(parentScope) {
10240
10391
  this.scope = new ChildScope(parentScope);
10241
10392
  }
10393
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
10394
+ this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
10395
+ }
10242
10396
  deoptimizeCache() {
10243
10397
  this.getObjectEntity().deoptimizeAllProperties();
10244
10398
  }
10245
10399
  deoptimizePath(path) {
10246
10400
  this.getObjectEntity().deoptimizePath(path);
10247
10401
  }
10248
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
10249
- this.getObjectEntity().deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
10250
- }
10251
10402
  getLiteralValueAtPath(path, recursionTracker, origin) {
10252
10403
  return this.getObjectEntity().getLiteralValueAtPath(path, recursionTracker, origin);
10253
10404
  }
@@ -10434,6 +10585,10 @@ class ConditionalExpression extends NodeBase {
10434
10585
  this.isBranchResolutionAnalysed = false;
10435
10586
  this.usedBranch = null;
10436
10587
  }
10588
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
10589
+ this.consequent.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
10590
+ this.alternate.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
10591
+ }
10437
10592
  deoptimizeCache() {
10438
10593
  if (this.usedBranch !== null) {
10439
10594
  const unusedBranch = this.usedBranch === this.consequent ? this.alternate : this.consequent;
@@ -10454,10 +10609,6 @@ class ConditionalExpression extends NodeBase {
10454
10609
  this.alternate.deoptimizePath(path);
10455
10610
  }
10456
10611
  }
10457
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
10458
- this.consequent.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
10459
- this.alternate.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
10460
- }
10461
10612
  getLiteralValueAtPath(path, recursionTracker, origin) {
10462
10613
  const usedBranch = this.getUsedBranch();
10463
10614
  if (!usedBranch)
@@ -11566,6 +11717,10 @@ class LogicalExpression extends NodeBase {
11566
11717
  this.isBranchResolutionAnalysed = false;
11567
11718
  this.usedBranch = null;
11568
11719
  }
11720
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
11721
+ this.left.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
11722
+ this.right.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
11723
+ }
11569
11724
  deoptimizeCache() {
11570
11725
  if (this.usedBranch) {
11571
11726
  const unusedBranch = this.usedBranch === this.left ? this.right : this.left;
@@ -11589,10 +11744,6 @@ class LogicalExpression extends NodeBase {
11589
11744
  this.right.deoptimizePath(path);
11590
11745
  }
11591
11746
  }
11592
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
11593
- this.left.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
11594
- this.right.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
11595
- }
11596
11747
  getLiteralValueAtPath(path, recursionTracker, origin) {
11597
11748
  const usedBranch = this.getUsedBranch();
11598
11749
  if (!usedBranch)
@@ -11862,10 +12013,7 @@ class NewExpression extends NodeBase {
11862
12013
  }
11863
12014
  applyDeoptimizations() {
11864
12015
  this.deoptimized = true;
11865
- for (const argument of this.arguments) {
11866
- // This will make sure all properties of parameters behave as "unknown"
11867
- argument.deoptimizePath(UNKNOWN_PATH);
11868
- }
12016
+ this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction, EMPTY_PATH, SHARED_RECURSION_TRACKER);
11869
12017
  this.context.requestTreeshakingPass();
11870
12018
  }
11871
12019
  }
@@ -11875,15 +12023,15 @@ class ObjectExpression extends NodeBase {
11875
12023
  super(...arguments);
11876
12024
  this.objectEntity = null;
11877
12025
  }
12026
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
12027
+ this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
12028
+ }
11878
12029
  deoptimizeCache() {
11879
12030
  this.getObjectEntity().deoptimizeAllProperties();
11880
12031
  }
11881
12032
  deoptimizePath(path) {
11882
12033
  this.getObjectEntity().deoptimizePath(path);
11883
12034
  }
11884
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
11885
- this.getObjectEntity().deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
11886
- }
11887
12035
  getLiteralValueAtPath(path, recursionTracker, origin) {
11888
12036
  return this.getObjectEntity().getLiteralValueAtPath(path, recursionTracker, origin);
11889
12037
  }
@@ -12065,12 +12213,12 @@ class Property extends MethodBase {
12065
12213
  }
12066
12214
 
12067
12215
  class PropertyDefinition extends NodeBase {
12216
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
12217
+ this.value?.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
12218
+ }
12068
12219
  deoptimizePath(path) {
12069
12220
  this.value?.deoptimizePath(path);
12070
12221
  }
12071
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
12072
- this.value?.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
12073
- }
12074
12222
  getLiteralValueAtPath(path, recursionTracker, origin) {
12075
12223
  return this.value
12076
12224
  ? this.value.getLiteralValueAtPath(path, recursionTracker, origin)
@@ -12116,12 +12264,12 @@ class ReturnStatement extends NodeBase {
12116
12264
  }
12117
12265
 
12118
12266
  class SequenceExpression extends NodeBase {
12267
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
12268
+ this.expressions[this.expressions.length - 1].deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
12269
+ }
12119
12270
  deoptimizePath(path) {
12120
12271
  this.expressions[this.expressions.length - 1].deoptimizePath(path);
12121
12272
  }
12122
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
12123
- this.expressions[this.expressions.length - 1].deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
12124
- }
12125
12273
  getLiteralValueAtPath(path, recursionTracker, origin) {
12126
12274
  return this.expressions[this.expressions.length - 1].getLiteralValueAtPath(path, recursionTracker, origin);
12127
12275
  }
@@ -12209,12 +12357,12 @@ class Super extends NodeBase {
12209
12357
  bind() {
12210
12358
  this.variable = this.scope.findVariable('this');
12211
12359
  }
12360
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
12361
+ this.variable.deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker);
12362
+ }
12212
12363
  deoptimizePath(path) {
12213
12364
  this.variable.deoptimizePath(path);
12214
12365
  }
12215
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
12216
- this.variable.deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker);
12217
- }
12218
12366
  include() {
12219
12367
  if (!this.included) {
12220
12368
  this.included = true;
@@ -12389,13 +12537,7 @@ class TaggedTemplateExpression extends CallExpressionBase {
12389
12537
  }
12390
12538
  applyDeoptimizations() {
12391
12539
  this.deoptimized = true;
12392
- if (this.interaction.thisArg) {
12393
- this.tag.deoptimizeThisOnInteractionAtPath(this.interaction, EMPTY_PATH, SHARED_RECURSION_TRACKER);
12394
- }
12395
- for (const argument of this.quasi.expressions) {
12396
- // This will make sure all properties of parameters behave as "unknown"
12397
- argument.deoptimizePath(UNKNOWN_PATH);
12398
- }
12540
+ this.tag.deoptimizeArgumentsOnInteractionAtPath(this.interaction, EMPTY_PATH, SHARED_RECURSION_TRACKER);
12399
12541
  this.context.requestTreeshakingPass();
12400
12542
  }
12401
12543
  getReturnExpression(recursionTracker = SHARED_RECURSION_TRACKER) {
@@ -12424,7 +12566,7 @@ class TemplateElement extends NodeBase {
12424
12566
  }
12425
12567
 
12426
12568
  class TemplateLiteral extends NodeBase {
12427
- deoptimizeThisOnInteractionAtPath() { }
12569
+ deoptimizeArgumentsOnInteractionAtPath() { }
12428
12570
  getLiteralValueAtPath(path) {
12429
12571
  if (path.length > 0 || this.quasis.length !== 1) {
12430
12572
  return UnknownValue;
@@ -12568,13 +12710,13 @@ class ThisExpression extends NodeBase {
12568
12710
  bind() {
12569
12711
  this.variable = this.scope.findVariable('this');
12570
12712
  }
12713
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
12714
+ // We rewrite the parameter so that a ThisVariable can detect self-mutations
12715
+ this.variable.deoptimizeArgumentsOnInteractionAtPath(interaction.thisArg === this ? { ...interaction, thisArg: this.variable } : interaction, path, recursionTracker);
12716
+ }
12571
12717
  deoptimizePath(path) {
12572
12718
  this.variable.deoptimizePath(path);
12573
12719
  }
12574
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
12575
- // We rewrite the parameter so that a ThisVariable can detect self-mutations
12576
- this.variable.deoptimizeThisOnInteractionAtPath(interaction.thisArg === this ? { ...interaction, thisArg: this.variable } : interaction, path, recursionTracker);
12577
- }
12578
12720
  hasEffectsOnInteractionAtPath(path, interaction, context) {
12579
12721
  if (path.length === 0) {
12580
12722
  return interaction.type !== INTERACTION_ACCESSED;
@@ -13142,22 +13284,22 @@ class NamespaceVariable extends Variable {
13142
13284
  this.references.push(identifier);
13143
13285
  this.name = identifier.name;
13144
13286
  }
13145
- deoptimizePath(path) {
13146
- if (path.length > 1) {
13287
+ deoptimizeArgumentsOnInteractionAtPath(interaction, path, recursionTracker) {
13288
+ if (path.length > 1 || (path.length === 1 && interaction.type === INTERACTION_CALLED)) {
13147
13289
  const key = path[0];
13148
13290
  if (typeof key === 'string') {
13149
- this.getMemberVariables()[key]?.deoptimizePath(path.slice(1));
13291
+ this.getMemberVariables()[key]?.deoptimizeArgumentsOnInteractionAtPath(interaction, path.slice(1), recursionTracker);
13292
+ }
13293
+ else {
13294
+ deoptimizeInteraction(interaction);
13150
13295
  }
13151
13296
  }
13152
13297
  }
13153
- deoptimizeThisOnInteractionAtPath(interaction, path, recursionTracker) {
13154
- if (path.length > 1 || (path.length === 1 && interaction.type === INTERACTION_CALLED)) {
13298
+ deoptimizePath(path) {
13299
+ if (path.length > 1) {
13155
13300
  const key = path[0];
13156
13301
  if (typeof key === 'string') {
13157
- this.getMemberVariables()[key]?.deoptimizeThisOnInteractionAtPath(interaction, path.slice(1), recursionTracker);
13158
- }
13159
- else {
13160
- interaction.thisArg.deoptimizePath(UNKNOWN_PATH);
13302
+ this.getMemberVariables()[key]?.deoptimizePath(path.slice(1));
13161
13303
  }
13162
13304
  }
13163
13305
  }
@@ -13346,7 +13488,6 @@ function doAssertionsDiffer(assertionA, assertionB) {
13346
13488
  keysA.some(key => assertionA[key] !== assertionB[key]));
13347
13489
  }
13348
13490
 
13349
- const NOOP = () => { };
13350
13491
  let timers = new Map();
13351
13492
  function getPersistedLabel(label, level) {
13352
13493
  switch (level) {
@@ -13400,8 +13541,8 @@ function getTimings() {
13400
13541
  }
13401
13542
  return newTimings;
13402
13543
  }
13403
- let timeStart = NOOP;
13404
- let timeEnd = NOOP;
13544
+ let timeStart = doNothing;
13545
+ let timeEnd = doNothing;
13405
13546
  const TIMED_PLUGIN_HOOKS = [
13406
13547
  'augmentChunkHash',
13407
13548
  'buildEnd',
@@ -13457,8 +13598,8 @@ function initialiseTimers(inputOptions) {
13457
13598
  inputOptions.plugins = inputOptions.plugins.map(getPluginWithTimers);
13458
13599
  }
13459
13600
  else {
13460
- timeStart = NOOP;
13461
- timeEnd = NOOP;
13601
+ timeStart = doNothing;
13602
+ timeEnd = doNothing;
13462
13603
  }
13463
13604
  }
13464
13605
 
@@ -17874,13 +18015,13 @@ function addModuleToManualChunk(alias, module, manualChunkAliasByEntry) {
17874
18015
  }
17875
18016
 
17876
18017
  // This file was generated. Do not modify manually!
17877
- 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];
18018
+ 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];
17878
18019
 
17879
18020
  // This file was generated. Do not modify manually!
17880
- 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];
18021
+ 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];
17881
18022
 
17882
18023
  // This file was generated. Do not modify manually!
17883
- 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";
18024
+ 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";
17884
18025
 
17885
18026
  // This file was generated. Do not modify manually!
17886
18027
  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";
@@ -17925,6 +18066,7 @@ function isInAstralSet(code, set) {
17925
18066
  pos += set[i + 1];
17926
18067
  if (pos >= code) { return true }
17927
18068
  }
18069
+ return false
17928
18070
  }
17929
18071
 
17930
18072
  // Test whether a given character code starts an identifier.
@@ -18310,7 +18452,7 @@ function getOptions(opts) {
18310
18452
  if (options.allowReserved == null)
18311
18453
  { options.allowReserved = options.ecmaVersion < 5; }
18312
18454
 
18313
- if (opts.allowHashBang == null)
18455
+ if (!opts || opts.allowHashBang == null)
18314
18456
  { options.allowHashBang = options.ecmaVersion >= 14; }
18315
18457
 
18316
18458
  if (isArray(options.onToken)) {
@@ -18710,10 +18852,10 @@ pp$8.isLet = function(context) {
18710
18852
  // Statement) is allowed here. If context is not empty then only a Statement
18711
18853
  // is allowed. However, `let [` is an explicit negative lookahead for
18712
18854
  // ExpressionStatement, so special-case it first.
18713
- if (nextCh === 91 || nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '[', '/', astral
18855
+ if (nextCh === 91 || nextCh === 92) { return true } // '[', '/'
18714
18856
  if (context) { return false }
18715
18857
 
18716
- if (nextCh === 123) { return true } // '{'
18858
+ if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral
18717
18859
  if (isIdentifierStart(nextCh, true)) {
18718
18860
  var pos = next + 1;
18719
18861
  while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; }
@@ -19446,7 +19588,7 @@ pp$8.parseClassId = function(node, isStatement) {
19446
19588
  };
19447
19589
 
19448
19590
  pp$8.parseClassSuper = function(node) {
19449
- node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(false) : null;
19591
+ node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;
19450
19592
  };
19451
19593
 
19452
19594
  pp$8.enterClassBody = function() {
@@ -20991,7 +21133,7 @@ pp$5.parseProperty = function(isPattern, refDestructuringErrors) {
20991
21133
  if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {
20992
21134
  isAsync = true;
20993
21135
  isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);
20994
- this.parsePropertyName(prop, refDestructuringErrors);
21136
+ this.parsePropertyName(prop);
20995
21137
  } else {
20996
21138
  isAsync = false;
20997
21139
  }
@@ -21240,7 +21382,7 @@ pp$5.checkUnreserved = function(ref) {
21240
21382
  // when parsing properties), it will also convert keywords into
21241
21383
  // identifiers.
21242
21384
 
21243
- pp$5.parseIdent = function(liberal, isBinding) {
21385
+ pp$5.parseIdent = function(liberal) {
21244
21386
  var node = this.startNode();
21245
21387
  if (this.type === types$1.name) {
21246
21388
  node.name = this.value;
@@ -21483,8 +21625,8 @@ pp$2.copyNode = function(node) {
21483
21625
  return newNode
21484
21626
  };
21485
21627
 
21486
- // This file contains Unicode properties extracted from the ECMAScript
21487
- // specification. The lists are extracted like so:
21628
+ // This file contains Unicode properties extracted from the ECMAScript specification.
21629
+ // The lists are extracted like so:
21488
21630
  // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)
21489
21631
 
21490
21632
  // #table-binary-unicode-properties
@@ -21493,12 +21635,15 @@ var ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic";
21493
21635
  var ecma11BinaryProperties = ecma10BinaryProperties;
21494
21636
  var ecma12BinaryProperties = ecma11BinaryProperties + " EBase EComp EMod EPres ExtPict";
21495
21637
  var ecma13BinaryProperties = ecma12BinaryProperties;
21638
+ var ecma14BinaryProperties = ecma13BinaryProperties;
21639
+
21496
21640
  var unicodeBinaryProperties = {
21497
21641
  9: ecma9BinaryProperties,
21498
21642
  10: ecma10BinaryProperties,
21499
21643
  11: ecma11BinaryProperties,
21500
21644
  12: ecma12BinaryProperties,
21501
- 13: ecma13BinaryProperties
21645
+ 13: ecma13BinaryProperties,
21646
+ 14: ecma14BinaryProperties
21502
21647
  };
21503
21648
 
21504
21649
  // #table-unicode-general-category-values
@@ -21510,12 +21655,15 @@ var ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Han
21510
21655
  var ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho";
21511
21656
  var ecma12ScriptValues = ecma11ScriptValues + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi";
21512
21657
  var ecma13ScriptValues = ecma12ScriptValues + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith";
21658
+ var ecma14ScriptValues = ecma13ScriptValues + " Kawi Nag_Mundari Nagm";
21659
+
21513
21660
  var unicodeScriptValues = {
21514
21661
  9: ecma9ScriptValues,
21515
21662
  10: ecma10ScriptValues,
21516
21663
  11: ecma11ScriptValues,
21517
21664
  12: ecma12ScriptValues,
21518
- 13: ecma13ScriptValues
21665
+ 13: ecma13ScriptValues,
21666
+ 14: ecma14ScriptValues
21519
21667
  };
21520
21668
 
21521
21669
  var data = {};
@@ -21534,7 +21682,7 @@ function buildUnicodeData(ecmaVersion) {
21534
21682
  d.nonBinary.scx = d.nonBinary.Script_Extensions;
21535
21683
  }
21536
21684
 
21537
- for (var i = 0, list = [9, 10, 11, 12, 13]; i < list.length; i += 1) {
21685
+ for (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {
21538
21686
  var ecmaVersion = list[i];
21539
21687
 
21540
21688
  buildUnicodeData(ecmaVersion);
@@ -21545,7 +21693,7 @@ var pp$1 = Parser.prototype;
21545
21693
  var RegExpValidationState = function RegExpValidationState(parser) {
21546
21694
  this.parser = parser;
21547
21695
  this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "");
21548
- this.unicodeProperties = data[parser.options.ecmaVersion >= 13 ? 13 : parser.options.ecmaVersion];
21696
+ this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];
21549
21697
  this.source = "";
21550
21698
  this.flags = "";
21551
21699
  this.start = 0;
@@ -23307,8 +23455,6 @@ pp.readEscapedChar = function(inTemplate) {
23307
23455
  codePos,
23308
23456
  "Invalid escape sequence in template string"
23309
23457
  );
23310
-
23311
- return null
23312
23458
  }
23313
23459
  default:
23314
23460
  if (ch >= 48 && ch <= 55) {
@@ -23396,7 +23542,7 @@ pp.readWord = function() {
23396
23542
 
23397
23543
  // Acorn is a tiny, fast JavaScript parser written in JavaScript.
23398
23544
 
23399
- var version = "8.8.1";
23545
+ var version = "8.8.2";
23400
23546
 
23401
23547
  Parser.acorn = {
23402
23548
  Parser: Parser,