meriyah 7.1.1 → 7.2.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.
package/dist/meriyah.cjs CHANGED
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var version$1 = "7.1.1";
3
+ var version$1 = "7.2.0";
4
+ var packageJson = {
5
+ version: version$1};
4
6
 
5
7
  const unicodeLookup = ((compressed, lookup) => {
6
8
  const result = new Uint32Array(69632);
@@ -486,7 +488,7 @@ function convertTokenType(t) {
486
488
  return 'RegularExpression';
487
489
  case 67174408:
488
490
  case 67174409:
489
- case 131:
491
+ case 132:
490
492
  return 'TemplateLiteral';
491
493
  default:
492
494
  if ((t & 143360) === 143360)
@@ -794,7 +796,7 @@ class ParseError extends SyntaxError {
794
796
  loc;
795
797
  description;
796
798
  constructor(start, end, type, ...params) {
797
- const description = errorMessages[type].replace(/%(\d+)/g, (_, i) => params[i]);
799
+ const description = errorMessages[type].replaceAll(/%(\d+)/g, (_, i) => params[i]);
798
800
  const message = '[' + start.line + ':' + start.column + '-' + end.line + ':' + end.column + ']: ' + description;
799
801
  super(message);
800
802
  this.start = start.index;
@@ -829,7 +831,7 @@ const KeywordDescTable = [
829
831
  'extends', 'finally', 'for', 'function', 'if', 'import', 'new', 'return', 'super', 'switch',
830
832
  'this', 'throw', 'try', 'while', 'with',
831
833
  'implements', 'interface', 'package', 'private', 'protected', 'public', 'static', 'yield',
832
- 'as', 'async', 'await', 'constructor', 'get', 'set', 'accessor', 'from', 'of',
834
+ 'as', 'async', 'await', 'constructor', 'get', 'set', 'accessor', 'from', 'of', 'using',
833
835
  'enum', 'eval', 'arguments', 'escaped keyword', 'escaped future reserved keyword', 'reserved if strict', '#',
834
836
  'BigIntLiteral', '??', '?.', 'WhiteSpace', 'Illegal', 'LineTerminator', 'PrivateField',
835
837
  'Template', '@', 'target', 'meta', 'LineFeed', 'Escaped', 'JSXText'
@@ -876,6 +878,7 @@ const descKeywordTable = {
876
878
  let: 241737,
877
879
  null: 86023,
878
880
  of: 471156,
881
+ using: 209013,
879
882
  package: 36966,
880
883
  private: 36967,
881
884
  protected: 36968,
@@ -886,12 +889,12 @@ const descKeywordTable = {
886
889
  true: 86022,
887
890
  with: 20579,
888
891
  yield: 241771,
889
- enum: 86133,
890
- eval: 537079926,
892
+ enum: 86134,
893
+ eval: 537079927,
891
894
  as: 77932,
892
- arguments: 537079927,
893
- target: 209029,
894
- meta: 209030,
895
+ arguments: 537079928,
896
+ target: 209030,
897
+ meta: 209031,
895
898
  accessor: 12402,
896
899
  };
897
900
 
@@ -953,24 +956,24 @@ function scanIdentifierSlowCase(parser, context, hasEscape, isValidAsKeyword) {
953
956
  if ((context & (2 | 2048)) === 0) {
954
957
  return token | -2147483648;
955
958
  }
956
- return -2147483528;
959
+ return -2147483527;
957
960
  }
958
961
  if (context & 1) {
959
962
  if (token === 36970) {
960
- return -2147483527;
963
+ return -2147483526;
961
964
  }
962
965
  if ((token & 36864) === 36864) {
963
- return -2147483527;
966
+ return -2147483526;
964
967
  }
965
968
  if ((token & 20480) === 20480) {
966
969
  if (context & 262144 && (context & 8) === 0) {
967
970
  return token | -2147483648;
968
971
  }
969
972
  else {
970
- return -2147483528;
973
+ return -2147483527;
971
974
  }
972
975
  }
973
- return 209018 | -2147483648;
976
+ return 209019 | -2147483648;
974
977
  }
975
978
  if (context & 262144 &&
976
979
  (context & 8) === 0 &&
@@ -979,31 +982,31 @@ function scanIdentifierSlowCase(parser, context, hasEscape, isValidAsKeyword) {
979
982
  }
980
983
  if (token === 241771) {
981
984
  return context & 262144
982
- ? 209018 | -2147483648
985
+ ? 209019 | -2147483648
983
986
  : context & 1024
984
- ? -2147483528
987
+ ? -2147483527
985
988
  : token | -2147483648;
986
989
  }
987
990
  if (token === 209005) {
988
- return 209018 | -2147483648;
991
+ return 209019 | -2147483648;
989
992
  }
990
993
  if ((token & 36864) === 36864) {
991
994
  return token | 12288 | -2147483648;
992
995
  }
993
- return -2147483528;
996
+ return -2147483527;
994
997
  }
995
998
  return 208897 | (hasEscape ? -2147483648 : 0);
996
999
  }
997
1000
  function scanPrivateIdentifier(parser) {
998
1001
  let char = advanceChar(parser);
999
1002
  if (char === 92)
1000
- return 130;
1003
+ return 131;
1001
1004
  const merged = consumePossibleSurrogatePair(parser);
1002
1005
  if (merged)
1003
1006
  char = merged;
1004
1007
  if (!isIdentifierStart(char))
1005
1008
  parser.report(96);
1006
- return 130;
1009
+ return 131;
1007
1010
  }
1008
1011
  function scanIdentifierUnicodeEscape(parser) {
1009
1012
  if (parser.source.charCodeAt(parser.index + 1) !== 117) {
@@ -1209,7 +1212,7 @@ function scanNumber(parser, context, kind) {
1209
1212
  if (isBigInt) {
1210
1213
  parser.tokenRaw = parser.source.slice(parser.tokenIndex, parser.index);
1211
1214
  parser.tokenValue = BigInt(parser.tokenRaw.slice(0, -1).replaceAll('_', ''));
1212
- return 134283388;
1215
+ return 134283389;
1213
1216
  }
1214
1217
  parser.tokenValue =
1215
1218
  kind & (1 | 2 | 8 | 4)
@@ -1520,12 +1523,14 @@ function parseEscape(parser, context, first, isTemplate = 0) {
1520
1523
  const ch = advanceChar(parser);
1521
1524
  if (parser.currentChar === 123) {
1522
1525
  let code = 0;
1526
+ let digits = 0;
1523
1527
  while ((CharTypes[advanceChar(parser)] & 64) !== 0) {
1524
1528
  code = (code << 4) | toHex(parser.currentChar);
1525
1529
  if (code > 1114111)
1526
1530
  return -5;
1531
+ digits++;
1527
1532
  }
1528
- if (parser.currentChar < 1 || parser.currentChar !== 125) {
1533
+ if (digits === 0 || parser.currentChar < 1 || parser.currentChar !== 125) {
1529
1534
  return -4;
1530
1535
  }
1531
1536
  return code;
@@ -1576,6 +1581,7 @@ function scanTemplate(parser, context) {
1576
1581
  const { index: start } = parser;
1577
1582
  let token = 67174409;
1578
1583
  let ret = '';
1584
+ let hasCarriageReturn = false;
1579
1585
  let char = advanceChar(parser);
1580
1586
  while (char !== 96) {
1581
1587
  if (char === 36 && parser.source.charCodeAt(parser.index + 1) === 123) {
@@ -1585,6 +1591,8 @@ function scanTemplate(parser, context) {
1585
1591
  }
1586
1592
  else if (char === 92) {
1587
1593
  char = advanceChar(parser);
1594
+ if (char === 13)
1595
+ hasCarriageReturn = true;
1588
1596
  if (char > 0x7e) {
1589
1597
  ret += String.fromCodePoint(char);
1590
1598
  }
@@ -1599,7 +1607,9 @@ function scanTemplate(parser, context) {
1599
1607
  parser.line = line;
1600
1608
  parser.column = column;
1601
1609
  ret = null;
1602
- char = scanBadTemplate(parser, char);
1610
+ char = scanBadTemplate(parser, char, () => {
1611
+ hasCarriageReturn = true;
1612
+ });
1603
1613
  if (char < 0)
1604
1614
  token = 67174408;
1605
1615
  break;
@@ -1610,10 +1620,13 @@ function scanTemplate(parser, context) {
1610
1620
  }
1611
1621
  }
1612
1622
  else if (parser.index < parser.end) {
1613
- if (char === 13 && parser.source.charCodeAt(parser.index) === 10) {
1614
- ret += String.fromCodePoint(char);
1623
+ if (char === 13)
1624
+ hasCarriageReturn = true;
1625
+ if (char === 13 && parser.source.charCodeAt(parser.index + 1) === 10) {
1615
1626
  parser.currentChar = parser.source.charCodeAt(++parser.index);
1616
1627
  }
1628
+ if (char === 13)
1629
+ char = 10;
1617
1630
  if (((char & 83) < 3 && char === 10) || (char ^ 8232) <= 1) {
1618
1631
  parser.column = -1;
1619
1632
  parser.line++;
@@ -1626,12 +1639,16 @@ function scanTemplate(parser, context) {
1626
1639
  }
1627
1640
  advanceChar(parser);
1628
1641
  parser.tokenValue = ret;
1629
- parser.tokenRaw = parser.source.slice(start + 1, parser.index - (token === 67174409 ? 1 : 2));
1642
+ const tokenRaw = parser.source.slice(start + 1, parser.index - (token === 67174409 ? 1 : 2));
1643
+ parser.tokenRaw = hasCarriageReturn ? tokenRaw.replaceAll(/\r\n?/g, '\n') : tokenRaw;
1630
1644
  return token;
1631
1645
  }
1632
- function scanBadTemplate(parser, ch) {
1646
+ function scanBadTemplate(parser, ch, onCarriageReturn) {
1633
1647
  while (ch !== 96) {
1634
1648
  switch (ch) {
1649
+ case 13:
1650
+ onCarriageReturn();
1651
+ break;
1635
1652
  case 36: {
1636
1653
  const index = parser.index + 1;
1637
1654
  if (index < parser.end && parser.source.charCodeAt(index) === 123) {
@@ -1662,42 +1679,42 @@ function scanTemplateTail(parser, context) {
1662
1679
  }
1663
1680
 
1664
1681
  const TokenLookup = [
1665
- 128,
1666
- 128,
1667
- 128,
1668
- 128,
1669
- 128,
1670
- 128,
1671
- 128,
1672
- 128,
1673
- 128,
1674
- 127,
1675
- 135,
1676
- 127,
1677
- 127,
1682
+ 129,
1683
+ 129,
1684
+ 129,
1685
+ 129,
1686
+ 129,
1687
+ 129,
1688
+ 129,
1689
+ 129,
1678
1690
  129,
1679
1691
  128,
1692
+ 136,
1680
1693
  128,
1681
1694
  128,
1695
+ 130,
1696
+ 129,
1697
+ 129,
1698
+ 129,
1699
+ 129,
1700
+ 129,
1701
+ 129,
1702
+ 129,
1703
+ 129,
1704
+ 129,
1705
+ 129,
1706
+ 129,
1707
+ 129,
1708
+ 129,
1709
+ 129,
1710
+ 129,
1711
+ 129,
1712
+ 129,
1713
+ 129,
1682
1714
  128,
1683
- 128,
1684
- 128,
1685
- 128,
1686
- 128,
1687
- 128,
1688
- 128,
1689
- 128,
1690
- 128,
1691
- 128,
1692
- 128,
1693
- 128,
1694
- 128,
1695
- 128,
1696
- 128,
1697
- 127,
1698
1715
  16842798,
1699
1716
  134283267,
1700
- 130,
1717
+ 131,
1701
1718
  208897,
1702
1719
  8391477,
1703
1720
  8390213,
@@ -1726,7 +1743,7 @@ const TokenLookup = [
1726
1743
  1077936155,
1727
1744
  8390721,
1728
1745
  22,
1729
- 132,
1746
+ 133,
1730
1747
  208897,
1731
1748
  208897,
1732
1749
  208897,
@@ -1754,11 +1771,11 @@ const TokenLookup = [
1754
1771
  208897,
1755
1772
  208897,
1756
1773
  69271571,
1757
- 136,
1774
+ 137,
1758
1775
  20,
1759
1776
  8389959,
1760
1777
  208897,
1761
- 131,
1778
+ 132,
1762
1779
  4096,
1763
1780
  4096,
1764
1781
  4096,
@@ -1789,7 +1806,7 @@ const TokenLookup = [
1789
1806
  8389702,
1790
1807
  1074790415,
1791
1808
  16842799,
1792
- 128,
1809
+ 129,
1793
1810
  ];
1794
1811
  function nextToken(parser, context) {
1795
1812
  parser.flags = (parser.flags | 1) ^ 1;
@@ -1819,8 +1836,8 @@ function scanSingleToken(parser, context, state) {
1819
1836
  case 1074790417:
1820
1837
  case 18:
1821
1838
  case 16842799:
1822
- case 132:
1823
- case 128:
1839
+ case 133:
1840
+ case 129:
1824
1841
  advanceChar(parser);
1825
1842
  return token;
1826
1843
  case 208897:
@@ -1831,20 +1848,20 @@ function scanSingleToken(parser, context, state) {
1831
1848
  return scanNumber(parser, context, 16 | 128);
1832
1849
  case 134283267:
1833
1850
  return scanString(parser, context, char);
1834
- case 131:
1851
+ case 132:
1835
1852
  return scanTemplate(parser, context);
1836
- case 136:
1853
+ case 137:
1837
1854
  return scanUnicodeIdentifier(parser, context);
1838
- case 130:
1855
+ case 131:
1839
1856
  return scanPrivateIdentifier(parser);
1840
- case 127:
1857
+ case 128:
1841
1858
  advanceChar(parser);
1842
1859
  break;
1843
- case 129:
1860
+ case 130:
1844
1861
  state |= 1 | 4;
1845
1862
  scanNewLine(parser);
1846
1863
  break;
1847
- case 135:
1864
+ case 136:
1848
1865
  consumeLineFeed(parser, state);
1849
1866
  state = (state & -5) | 1;
1850
1867
  break;
@@ -2067,7 +2084,7 @@ function scanSingleToken(parser, context, state) {
2067
2084
  advanceChar(parser);
2068
2085
  return 4718634;
2069
2086
  }
2070
- return 276824445;
2087
+ return 276824446;
2071
2088
  }
2072
2089
  if (ch === 46) {
2073
2090
  const index = parser.index + 1;
@@ -2075,7 +2092,7 @@ function scanSingleToken(parser, context, state) {
2075
2092
  ch = source.charCodeAt(index);
2076
2093
  if (!(ch >= 48 && ch <= 57)) {
2077
2094
  advanceChar(parser);
2078
- return 67108990;
2095
+ return 67108991;
2079
2096
  }
2080
2097
  }
2081
2098
  }
@@ -2183,7 +2200,7 @@ function validateBindingIdentifier(parser, context, kind, t, skipEvalArgCheck) {
2183
2200
  parser.report(119);
2184
2201
  }
2185
2202
  }
2186
- if ((t & 20480) === 20480 || t === -2147483528) {
2203
+ if ((t & 20480) === 20480 || t === -2147483527) {
2187
2204
  parser.report(102);
2188
2205
  }
2189
2206
  if (kind & (8 | 16) && (t & 255) === (241737 & 255)) {
@@ -2204,10 +2221,10 @@ function validateFunctionName(parser, context, t) {
2204
2221
  if ((t & 537079808) === 537079808) {
2205
2222
  parser.report(119);
2206
2223
  }
2207
- if (t === -2147483527) {
2224
+ if (t === -2147483526) {
2208
2225
  parser.report(95);
2209
2226
  }
2210
- if (t === -2147483528) {
2227
+ if (t === -2147483527) {
2211
2228
  parser.report(95);
2212
2229
  }
2213
2230
  }
@@ -2231,7 +2248,7 @@ function isStrictReservedWord(parser, context, t) {
2231
2248
  parser.report(97, 'yield');
2232
2249
  return ((t & 20480) === 20480 ||
2233
2250
  (t & 36864) === 36864 ||
2234
- t == -2147483527);
2251
+ t == -2147483526);
2235
2252
  }
2236
2253
  function isPropertyWithPrivateFieldKey(expr) {
2237
2254
  return !expr.property ? false : expr.property.type === 'PrivateIdentifier';
@@ -4446,7 +4463,7 @@ const decodeMap = {
4446
4463
  '159': 376,
4447
4464
  };
4448
4465
  function decodeHTMLStrict(text) {
4449
- return text.replace(/&(?:[a-zA-Z]+|#[xX][\da-fA-F]+|#\d+);/g, (key) => {
4466
+ return text.replaceAll(/&(?:[a-zA-Z]+|#[xX][\da-fA-F]+|#\d+);/g, (key) => {
4450
4467
  if (key.charAt(1) === '#') {
4451
4468
  const secondChar = key.charAt(2);
4452
4469
  const codePoint = secondChar === 'X' || secondChar === 'x' ? parseInt(key.slice(3), 16) : parseInt(key.slice(2), 10);
@@ -4529,7 +4546,7 @@ function nextJSXToken(parser) {
4529
4546
  if (parser.options.raw)
4530
4547
  parser.tokenRaw = raw;
4531
4548
  parser.tokenValue = decodeHTMLStrict(raw);
4532
- parser.setToken(137);
4549
+ parser.setToken(138);
4533
4550
  }
4534
4551
  function rescanJSXIdentifier(parser) {
4535
4552
  if ((parser.getToken() & 143360) === 143360) {
@@ -4932,7 +4949,7 @@ function parseSource(source, rawOptions = {}, context = 0) {
4932
4949
  context |= 1;
4933
4950
  skipHashBang(parser);
4934
4951
  const scope = parser.createScopeIfLexical();
4935
- let body = [];
4952
+ let body;
4936
4953
  let sourceType = 'script';
4937
4954
  if (context & 2) {
4938
4955
  sourceType = 'module';
@@ -4990,7 +5007,7 @@ function parseModuleItemList(parser, context, scope) {
4990
5007
  return statements;
4991
5008
  }
4992
5009
  function parseModuleItem(parser, context, scope) {
4993
- if (parser.getToken() === 132) {
5010
+ if (parser.getToken() === 133) {
4994
5011
  Object.assign(parser.leadingDecorators, {
4995
5012
  start: parser.tokenStart,
4996
5013
  decorators: parseDecorators(parser, context, undefined),
@@ -5017,13 +5034,21 @@ function parseStatementListItem(parser, context, scope, privateScope, origin, la
5017
5034
  switch (parser.getToken()) {
5018
5035
  case 86104:
5019
5036
  return parseFunctionDeclaration(parser, context, scope, privateScope, origin, 1, 0, 0, start);
5020
- case 132:
5037
+ case 133:
5021
5038
  case 86094:
5022
5039
  return parseClassDeclaration(parser, context, scope, privateScope, 0);
5023
5040
  case 86090:
5024
5041
  return parseLexicalDeclaration(parser, context, scope, privateScope, 16, 0);
5025
5042
  case 241737:
5026
5043
  return parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateScope, origin);
5044
+ case 209013:
5045
+ return parseUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels);
5046
+ case 209006:
5047
+ if ((context & 2048 || (context & 2 && context & 8)) &&
5048
+ nextTokenIsUsingOnSameLine(parser)) {
5049
+ return parseAwaitUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels);
5050
+ }
5051
+ return parseStatement(parser, context, scope, privateScope, origin, labels, 1);
5027
5052
  case 20564:
5028
5053
  parser.report(103, 'export');
5029
5054
  case 86106:
@@ -5107,15 +5132,18 @@ function parseExpressionOrLabelledStatement(parser, context, scope, privateScope
5107
5132
  default:
5108
5133
  expr = parsePrimaryExpression(parser, context, privateScope, 2, 0, 1, 0, 1, parser.tokenStart);
5109
5134
  }
5135
+ return finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl, expr, token, tokenValue, tokenStart);
5136
+ }
5137
+ function finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, allowFuncDecl, initialExpression, token, tokenValue, tokenStart) {
5110
5138
  if (token & 143360 && parser.getToken() === 21) {
5111
- return parseLabelledStatement(parser, context, scope, privateScope, origin, labels, tokenValue, expr, token, allowFuncDecl, tokenStart);
5139
+ return parseLabelledStatement(parser, context, scope, privateScope, origin, labels, tokenValue, initialExpression, token, allowFuncDecl, tokenStart);
5112
5140
  }
5113
- expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 0, tokenStart);
5114
- expr = parseAssignmentExpression(parser, context, privateScope, 0, 0, tokenStart, expr);
5141
+ let expression = parseMemberOrUpdateExpression(parser, context, privateScope, initialExpression, 0, 0, tokenStart);
5142
+ expression = parseAssignmentExpression(parser, context, privateScope, 0, 0, tokenStart, expression);
5115
5143
  if (parser.getToken() === 18) {
5116
- expr = parseSequenceExpression(parser, context, privateScope, 0, tokenStart, expr);
5144
+ expression = parseSequenceExpression(parser, context, privateScope, 0, tokenStart, expression);
5117
5145
  }
5118
- return parseExpressionStatement(parser, context, expr, tokenStart);
5146
+ return parseExpressionStatement(parser, context, expression, tokenStart);
5119
5147
  }
5120
5148
  function parseBlock(parser, context, scope, privateScope, labels, start = parser.tokenStart, type = 'BlockStatement') {
5121
5149
  const body = [];
@@ -5304,9 +5332,14 @@ function parseSwitchStatement(parser, context, scope, privateScope, labels) {
5304
5332
  while (parser.getToken() !== 20556 &&
5305
5333
  parser.getToken() !== 1074790415 &&
5306
5334
  parser.getToken() !== 20561) {
5307
- consequent.push(parseStatementListItem(parser, context | 4, scope, privateScope, 2, {
5335
+ const statement = parseStatementListItem(parser, context | 4, scope, privateScope, 2, {
5308
5336
  $: labels,
5309
- }));
5337
+ });
5338
+ if (statement.type === 'VariableDeclaration' &&
5339
+ (statement.kind === 'using' || statement.kind === 'await using')) {
5340
+ parser.report(30, statement.kind);
5341
+ }
5342
+ consequent.push(statement);
5310
5343
  }
5311
5344
  cases.push(parser.finishNode({
5312
5345
  type: 'SwitchCase',
@@ -5425,7 +5458,6 @@ function parseTryStatement(parser, context, scope, privateScope, labels) {
5425
5458
  }
5426
5459
  function parseCatchBlock(parser, context, scope, privateScope, labels, start) {
5427
5460
  let param = null;
5428
- let additionalScope = scope;
5429
5461
  if (consumeOpt(parser, context, 67174411)) {
5430
5462
  scope = scope?.createChildScope(4);
5431
5463
  param = parseBindingPattern(parser, context, scope, privateScope, (parser.getToken() & 2097152) === 2097152
@@ -5439,7 +5471,7 @@ function parseCatchBlock(parser, context, scope, privateScope, labels, start) {
5439
5471
  }
5440
5472
  consume(parser, context | 32, 16);
5441
5473
  }
5442
- additionalScope = scope?.createChildScope(32);
5474
+ const additionalScope = scope?.createChildScope(32);
5443
5475
  const body = parseBlock(parser, context, additionalScope, privateScope, { $: labels });
5444
5476
  return parser.finishNode({
5445
5477
  type: 'CatchClause',
@@ -5477,7 +5509,8 @@ function parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateS
5477
5509
  const { tokenValue, tokenStart } = parser;
5478
5510
  const token = parser.getToken();
5479
5511
  let expr = parseIdentifier(parser, context);
5480
- if (parser.getToken() & (143360 | 2097152)) {
5512
+ if (parser.getToken() & (143360 | 2097152) &&
5513
+ (parser.getToken() & 20480) !== 20480) {
5481
5514
  const declarations = parseVariableDeclarationList(parser, context, scope, privateScope, 8, 0);
5482
5515
  matchOrInsertSemicolon(parser, context | 32);
5483
5516
  return parser.finishNode({
@@ -5508,14 +5541,90 @@ function parseLetIdentOrVarDeclarationStatement(parser, context, scope, privateS
5508
5541
  }
5509
5542
  return parseExpressionStatement(parser, context, expr, tokenStart);
5510
5543
  }
5511
- function parseLexicalDeclaration(parser, context, scope, privateScope, kind, origin) {
5544
+ function nextTokenIsUsingOnSameLine(parser) {
5545
+ const { index: parserIndex, source } = parser;
5546
+ let index = parserIndex;
5547
+ while (index < parser.end) {
5548
+ const char = source.charCodeAt(index);
5549
+ if (char === 0x0a || char === 0x0d || char === 0x2028 || char === 0x2029)
5550
+ return false;
5551
+ if (/\s/u.test(source[index])) {
5552
+ index++;
5553
+ continue;
5554
+ }
5555
+ if (char === 0x2f && source.charCodeAt(index + 1) === 0x2a) {
5556
+ index += 2;
5557
+ while (index < parser.end) {
5558
+ const commentChar = source.charCodeAt(index);
5559
+ if (commentChar === 0x0a || commentChar === 0x0d || commentChar === 0x2028 || commentChar === 0x2029) {
5560
+ return false;
5561
+ }
5562
+ if (commentChar === 0x2a && source.charCodeAt(index + 1) === 0x2f) {
5563
+ index += 2;
5564
+ break;
5565
+ }
5566
+ index++;
5567
+ }
5568
+ continue;
5569
+ }
5570
+ break;
5571
+ }
5572
+ if (source.slice(index, index + 5) !== 'using')
5573
+ return false;
5574
+ const following = source.codePointAt(index + 5);
5575
+ return following === undefined || (following !== 0x5c && !isIdentifierPart(following));
5576
+ }
5577
+ function isResourceBindingStart(token) {
5578
+ return (token & 143360) === 143360 && (token & 20480) !== 20480;
5579
+ }
5580
+ function parseUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels) {
5581
+ const { tokenStart, tokenValue } = parser;
5582
+ const token = parser.getToken();
5583
+ const expression = parseIdentifier(parser, context);
5584
+ if ((parser.flags & 1) === 0 && isResourceBindingStart(parser.getToken())) {
5585
+ if (origin & 4 && context & 8 && (context & 2) === 0) {
5586
+ parser.report(30, KeywordDescTable[parser.getToken() & 255]);
5587
+ }
5588
+ return parseLexicalDeclaration(parser, context, scope, privateScope, 16, origin, 'using', tokenStart, 1);
5589
+ }
5590
+ parser.assignable = 1;
5591
+ return finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, 1, expression, token, tokenValue, tokenStart);
5592
+ }
5593
+ function parseAwaitUsingDeclarationOrExpressionStatement(parser, context, scope, privateScope, origin, labels) {
5512
5594
  const start = parser.tokenStart;
5513
- nextToken(parser, context);
5514
- const declarations = parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin);
5595
+ if (context & 524288)
5596
+ parser.report(177);
5597
+ nextToken(parser, context | 32);
5598
+ let argument;
5599
+ if ((parser.flags & 1) === 0 && parser.getToken() === 209013) {
5600
+ const usingStart = parser.tokenStart;
5601
+ const usingIdentifier = parseIdentifier(parser, context);
5602
+ if ((parser.flags & 1) === 0 && isResourceBindingStart(parser.getToken())) {
5603
+ return parseLexicalDeclaration(parser, context, scope, privateScope, 16, origin, 'await using', start, 1);
5604
+ }
5605
+ argument = parseMemberOrUpdateExpression(parser, context, privateScope, usingIdentifier, 0, 0, usingStart);
5606
+ }
5607
+ else {
5608
+ argument = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 1);
5609
+ }
5610
+ if (parser.getToken() === 8391735)
5611
+ parser.report(33);
5612
+ parser.assignable = 2;
5613
+ const expression = parser.finishNode({
5614
+ type: 'AwaitExpression',
5615
+ argument,
5616
+ }, start);
5617
+ return finishExpressionOrLabelledStatement(parser, context, scope, privateScope, origin, labels, 0, expression, 1048576, '', start);
5618
+ }
5619
+ function parseLexicalDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind, declarationStart = parser.tokenStart, keywordConsumed = 0) {
5620
+ const start = declarationStart;
5621
+ if (!keywordConsumed)
5622
+ nextToken(parser, context);
5623
+ const declarations = parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin, declarationKind);
5515
5624
  matchOrInsertSemicolon(parser, context | 32);
5516
5625
  return parser.finishNode({
5517
5626
  type: 'VariableDeclaration',
5518
- kind: kind & 8 ? 'let' : 'const',
5627
+ kind: declarationKind ?? (kind & 8 ? 'let' : 'const'),
5519
5628
  declarations,
5520
5629
  }, start);
5521
5630
  }
@@ -5530,24 +5639,34 @@ function parseVariableStatement(parser, context, scope, privateScope, origin) {
5530
5639
  declarations,
5531
5640
  }, start);
5532
5641
  }
5533
- function parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin) {
5642
+ function parseVariableDeclarationList(parser, context, scope, privateScope, kind, origin, declarationKind) {
5534
5643
  let bindingCount = 1;
5535
- const list = [
5536
- parseVariableDeclaration(parser, context, scope, privateScope, kind, origin),
5537
- ];
5644
+ const firstDeclaration = parseVariableDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind);
5645
+ const list = [firstDeclaration];
5646
+ const resourceNames = declarationKind && parser.options.lexical ? new Set([firstDeclaration.id.name]) : undefined;
5538
5647
  while (consumeOpt(parser, context, 18)) {
5539
5648
  bindingCount++;
5540
- list.push(parseVariableDeclaration(parser, context, scope, privateScope, kind, origin));
5649
+ const declaration = parseVariableDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind);
5650
+ if (resourceNames) {
5651
+ const { name } = declaration.id;
5652
+ if (resourceNames.has(name))
5653
+ parser.report(145, name);
5654
+ resourceNames.add(name);
5655
+ }
5656
+ list.push(declaration);
5541
5657
  }
5542
5658
  if (bindingCount > 1 && origin & 32 && parser.getToken() & 262144) {
5543
5659
  parser.report(61, KeywordDescTable[parser.getToken() & 255]);
5544
5660
  }
5545
5661
  return list;
5546
5662
  }
5547
- function parseVariableDeclaration(parser, context, scope, privateScope, kind, origin) {
5663
+ function parseVariableDeclaration(parser, context, scope, privateScope, kind, origin, declarationKind) {
5548
5664
  const { tokenStart } = parser;
5549
5665
  const token = parser.getToken();
5550
5666
  let init = null;
5667
+ if (declarationKind && (token & 2097152) === 2097152) {
5668
+ parser.report(50);
5669
+ }
5551
5670
  const id = parseBindingPattern(parser, context, scope, privateScope, kind, origin);
5552
5671
  if (parser.getToken() === 1077936155) {
5553
5672
  nextToken(parser, context | 32);
@@ -5562,7 +5681,7 @@ function parseVariableDeclaration(parser, context, scope, privateScope, kind, or
5562
5681
  }
5563
5682
  else if ((kind & 16 || (token & 2097152) > 0) &&
5564
5683
  (parser.getToken() & 262144) !== 262144) {
5565
- parser.report(59, kind & 16 ? 'const' : 'destructuring');
5684
+ parser.report(59, declarationKind ?? (kind & 16 ? 'const' : 'destructuring'));
5566
5685
  }
5567
5686
  return parser.finishNode({
5568
5687
  type: 'VariableDeclarator',
@@ -5583,25 +5702,23 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5583
5702
  let init = null;
5584
5703
  let isVarDecl = parser.getToken() === 86088 ||
5585
5704
  parser.getToken() === 241737 ||
5586
- parser.getToken() === 86090;
5705
+ parser.getToken() === 86090 ||
5706
+ parser.getToken() === 209013;
5707
+ let resourceDeclarationKind;
5708
+ let consumedForOfDelimiter = false;
5587
5709
  let right;
5588
5710
  const { tokenStart } = parser;
5589
5711
  const token = parser.getToken();
5590
5712
  if (isVarDecl) {
5591
5713
  if (token === 241737) {
5592
5714
  init = parseIdentifier(parser, context);
5593
- if (parser.getToken() & (143360 | 2097152)) {
5594
- if (parser.getToken() === 8673330) {
5595
- if (context & 1)
5596
- parser.report(67);
5597
- }
5598
- else {
5599
- init = parser.finishNode({
5600
- type: 'VariableDeclaration',
5601
- kind: 'let',
5602
- declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 8, 32),
5603
- }, tokenStart);
5604
- }
5715
+ if (parser.getToken() & (143360 | 2097152) &&
5716
+ (parser.getToken() & 20480) !== 20480) {
5717
+ init = parser.finishNode({
5718
+ type: 'VariableDeclaration',
5719
+ kind: 'let',
5720
+ declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 8, 32),
5721
+ }, tokenStart);
5605
5722
  parser.assignable = 1;
5606
5723
  }
5607
5724
  else if (context & 1) {
@@ -5615,6 +5732,81 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5615
5732
  parser.report(115);
5616
5733
  }
5617
5734
  }
5735
+ else if (token === 209013) {
5736
+ const usingIdentifier = parseIdentifier(parser, context);
5737
+ if ((parser.flags & 1) !== 0 || !isResourceBindingStart(parser.getToken())) {
5738
+ isVarDecl = false;
5739
+ parser.assignable = 1;
5740
+ init = parseMemberOrUpdateExpression(parser, context, privateScope, usingIdentifier, 0, 0, tokenStart);
5741
+ }
5742
+ else if (parser.getToken() === 471156) {
5743
+ const ofStart = parser.tokenStart;
5744
+ const ofToken = parser.getToken();
5745
+ const ofValue = parser.tokenValue;
5746
+ const ofIdentifier = parseIdentifier(parser, context);
5747
+ if (parser.getToken() !== 1077936155 &&
5748
+ parser.getToken() !== 8673330 &&
5749
+ parser.getToken() !== 1074790417 &&
5750
+ parser.getToken() !== 18) {
5751
+ isVarDecl = false;
5752
+ consumedForOfDelimiter = true;
5753
+ parser.assignable = 1;
5754
+ init = usingIdentifier;
5755
+ }
5756
+ else {
5757
+ resourceDeclarationKind = 'using';
5758
+ validateBindingIdentifier(parser, context, 16, ofToken, 0);
5759
+ scope?.addBlockName(context, ofValue, 16, 32);
5760
+ let declarationInitializer = null;
5761
+ if (parser.getToken() === 1077936155) {
5762
+ nextToken(parser, context | 32);
5763
+ declarationInitializer = parseExpression(parser, context | 131072, privateScope, 1, 0, parser.tokenStart);
5764
+ if ((parser.getToken() & 262144) === 262144) {
5765
+ throw new ParseError(ofStart, parser.currentLocation, 60, parser.getToken() === 471156 ? 'of' : 'in');
5766
+ }
5767
+ }
5768
+ else if (parser.getToken() !== 8673330) {
5769
+ parser.report(59, resourceDeclarationKind);
5770
+ }
5771
+ const declarations = [
5772
+ parser.finishNode({
5773
+ type: 'VariableDeclarator',
5774
+ id: ofIdentifier,
5775
+ init: declarationInitializer,
5776
+ }, ofStart),
5777
+ ];
5778
+ const resourceNames = parser.options.lexical ? new Set([ofValue]) : undefined;
5779
+ while (consumeOpt(parser, context | 131072, 18)) {
5780
+ const declaration = parseVariableDeclaration(parser, context | 131072, scope, privateScope, 16, 32, resourceDeclarationKind);
5781
+ if (resourceNames) {
5782
+ const { name } = declaration.id;
5783
+ if (resourceNames.has(name))
5784
+ parser.report(145, name);
5785
+ resourceNames.add(name);
5786
+ }
5787
+ declarations.push(declaration);
5788
+ }
5789
+ if (declarations.length > 1 && parser.getToken() & 262144) {
5790
+ parser.report(61, KeywordDescTable[parser.getToken() & 255]);
5791
+ }
5792
+ init = parser.finishNode({
5793
+ type: 'VariableDeclaration',
5794
+ kind: resourceDeclarationKind,
5795
+ declarations,
5796
+ }, tokenStart);
5797
+ parser.assignable = 1;
5798
+ }
5799
+ }
5800
+ else {
5801
+ resourceDeclarationKind = 'using';
5802
+ init = parser.finishNode({
5803
+ type: 'VariableDeclaration',
5804
+ kind: resourceDeclarationKind,
5805
+ declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 16, 32, resourceDeclarationKind),
5806
+ }, tokenStart);
5807
+ parser.assignable = 1;
5808
+ }
5809
+ }
5618
5810
  else {
5619
5811
  nextToken(parser, context);
5620
5812
  init = parser.finishNode(token === 86088
@@ -5631,6 +5823,42 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5631
5823
  parser.assignable = 1;
5632
5824
  }
5633
5825
  }
5826
+ else if (token === 209006 &&
5827
+ (context & 2048 || (context & 2 && context & 8))) {
5828
+ if (context & 524288)
5829
+ parser.report(177);
5830
+ nextToken(parser, context | 32);
5831
+ let awaitArgument;
5832
+ if ((parser.flags & 1) === 0 && parser.getToken() === 209013) {
5833
+ const usingStart = parser.tokenStart;
5834
+ const usingIdentifier = parseIdentifier(parser, context);
5835
+ if ((parser.flags & 1) === 0 && isResourceBindingStart(parser.getToken())) {
5836
+ resourceDeclarationKind = 'await using';
5837
+ isVarDecl = true;
5838
+ init = parser.finishNode({
5839
+ type: 'VariableDeclaration',
5840
+ kind: resourceDeclarationKind,
5841
+ declarations: parseVariableDeclarationList(parser, context | 131072, scope, privateScope, 16, 32, resourceDeclarationKind),
5842
+ }, tokenStart);
5843
+ parser.assignable = 1;
5844
+ }
5845
+ else {
5846
+ awaitArgument = parseMemberOrUpdateExpression(parser, context, privateScope, usingIdentifier, 0, 0, usingStart);
5847
+ }
5848
+ }
5849
+ else {
5850
+ awaitArgument = parseLeftHandSideExpression(parser, context, privateScope, 0, 0, 1);
5851
+ }
5852
+ if (!isVarDecl) {
5853
+ if (parser.getToken() === 8391735)
5854
+ parser.report(33);
5855
+ parser.assignable = 2;
5856
+ init = parser.finishNode({
5857
+ type: 'AwaitExpression',
5858
+ argument: awaitArgument,
5859
+ }, tokenStart);
5860
+ }
5861
+ }
5634
5862
  else if (token === 1074790417) {
5635
5863
  if (forAwait)
5636
5864
  parser.report(82);
@@ -5652,12 +5880,13 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5652
5880
  else {
5653
5881
  init = parseLeftHandSideExpression(parser, context | 131072, privateScope, 1, 0, 1);
5654
5882
  }
5655
- if ((parser.getToken() & 262144) === 262144) {
5656
- if (parser.getToken() === 471156) {
5883
+ if (consumedForOfDelimiter || (parser.getToken() & 262144) === 262144) {
5884
+ if (consumedForOfDelimiter || parser.getToken() === 471156) {
5657
5885
  if (parser.assignable & 2)
5658
5886
  parser.report(80, forAwait ? 'await' : 'of');
5659
5887
  reinterpretToPattern(parser, init);
5660
- nextToken(parser, context | 32);
5888
+ if (!consumedForOfDelimiter)
5889
+ nextToken(parser, context | 32);
5661
5890
  right = parseExpression(parser, context, privateScope, 1, 0, parser.tokenStart);
5662
5891
  consume(parser, context | 32, 16);
5663
5892
  const body = parseIterationStatementBody(parser, context, scope, privateScope, labels);
@@ -5669,6 +5898,8 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5669
5898
  await: forAwait,
5670
5899
  }, start);
5671
5900
  }
5901
+ if (resourceDeclarationKind)
5902
+ parser.report(30, 'in');
5672
5903
  if (parser.assignable & 2)
5673
5904
  parser.report(80, 'in');
5674
5905
  reinterpretToPattern(parser, init);
@@ -5722,7 +5953,7 @@ function parseRestrictedIdentifier(parser, context, scope) {
5722
5953
  function parseImportDeclaration(parser, context, scope) {
5723
5954
  const start = parser.tokenStart;
5724
5955
  nextToken(parser, context);
5725
- let source = null;
5956
+ let source;
5726
5957
  const { tokenStart } = parser;
5727
5958
  let specifiers = [];
5728
5959
  if (parser.getToken() === 134283267) {
@@ -5866,7 +6097,7 @@ function parseExportDeclaration(parser, context, scope) {
5866
6097
  declaration = parseFunctionDeclaration(parser, context, scope, undefined, 4, 1, 1, 0, parser.tokenStart);
5867
6098
  break;
5868
6099
  }
5869
- case 132:
6100
+ case 133:
5870
6101
  case 86094:
5871
6102
  declaration = parseClassDeclaration(parser, context, scope, undefined, 1);
5872
6103
  break;
@@ -5989,7 +6220,7 @@ function parseExportDeclaration(parser, context, scope) {
5989
6220
  matchOrInsertSemicolon(parser, context | 32);
5990
6221
  break;
5991
6222
  }
5992
- case 132:
6223
+ case 133:
5993
6224
  case 86094:
5994
6225
  declaration = parseClassDeclaration(parser, context, scope, undefined, 2);
5995
6226
  break;
@@ -6327,7 +6558,7 @@ function parseSuperExpression(parser, context) {
6327
6558
  const { tokenStart } = parser;
6328
6559
  nextToken(parser, context);
6329
6560
  switch (parser.getToken()) {
6330
- case 67108990:
6561
+ case 67108991:
6331
6562
  parser.report(167);
6332
6563
  case 67174411: {
6333
6564
  if ((context & 512) === 0)
@@ -6374,10 +6605,13 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
6374
6605
  switch (parser.getToken()) {
6375
6606
  case 67108877: {
6376
6607
  nextToken(parser, (context | 262144 | 8) ^ 8);
6377
- if (context & 16 && parser.getToken() === 130 && parser.tokenValue === 'super') {
6608
+ if (context & 16 && parser.getToken() === 131 && parser.tokenValue === 'super') {
6378
6609
  parser.report(173);
6379
6610
  }
6380
- parser.assignable = 1;
6611
+ parser.assignable =
6612
+ (parser.flags & 2048) === 2048
6613
+ ? 2
6614
+ : 1;
6381
6615
  const property = parsePropertyOrPrivatePropertyName(parser, context | 64, privateScope);
6382
6616
  expr = parser.finishNode({
6383
6617
  type: 'MemberExpression',
@@ -6402,7 +6636,7 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
6402
6636
  const { tokenStart } = parser;
6403
6637
  const property = parseExpressions(parser, context, privateScope, inGroup, 1, tokenStart);
6404
6638
  consume(parser, context, 20);
6405
- parser.assignable = 1;
6639
+ parser.assignable = restoreHasOptionalChaining ? 2 : 1;
6406
6640
  expr = parser.finishNode({
6407
6641
  type: 'MemberExpression',
6408
6642
  object: expr,
@@ -6443,7 +6677,7 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
6443
6677
  }
6444
6678
  break;
6445
6679
  }
6446
- case 67108990: {
6680
+ case 67108991: {
6447
6681
  nextToken(parser, (context | 262144 | 8) ^ 8);
6448
6682
  parser.flags |= 2048;
6449
6683
  parser.assignable = 2;
@@ -6530,12 +6764,12 @@ function parseOptionalChain(parser, context, privateScope, expr, start) {
6530
6764
  }
6531
6765
  function parsePropertyOrPrivatePropertyName(parser, context, privateScope) {
6532
6766
  if ((parser.getToken() & 143360) === 0 &&
6533
- parser.getToken() !== -2147483528 &&
6534
6767
  parser.getToken() !== -2147483527 &&
6535
- parser.getToken() !== 130) {
6768
+ parser.getToken() !== -2147483526 &&
6769
+ parser.getToken() !== 131) {
6536
6770
  parser.report(160);
6537
6771
  }
6538
- return parser.getToken() === 130
6772
+ return parser.getToken() === 131
6539
6773
  ? parsePrivateIdentifier(parser, context, privateScope, 0)
6540
6774
  : parseIdentifier(parser, context);
6541
6775
  }
@@ -6628,7 +6862,7 @@ function parsePrimaryExpression(parser, context, privateScope, kind, inNew, canA
6628
6862
  return parseThisExpression(parser, context);
6629
6863
  case 65540:
6630
6864
  return parseRegExpLiteral(parser, context);
6631
- case 132:
6865
+ case 133:
6632
6866
  case 86094:
6633
6867
  return parseClassExpression(parser, context, privateScope, inGroup, start);
6634
6868
  case 86109:
@@ -6639,9 +6873,9 @@ function parsePrimaryExpression(parser, context, privateScope, kind, inNew, canA
6639
6873
  return parseTemplate(parser, context, privateScope);
6640
6874
  case 86107:
6641
6875
  return parseNewExpression(parser, context, privateScope, inGroup);
6642
- case 134283388:
6876
+ case 134283389:
6643
6877
  return parseBigIntLiteral(parser, context);
6644
- case 130:
6878
+ case 131:
6645
6879
  return parsePrivateIdentifier(parser, context, privateScope, 0);
6646
6880
  case 86106:
6647
6881
  return parseImportCallOrMetaExpression(parser, context, privateScope, inNew, inGroup, start);
@@ -6670,7 +6904,7 @@ function parseImportMetaExpression(parser, context, meta, start) {
6670
6904
  parser.report(169);
6671
6905
  nextToken(parser, context);
6672
6906
  const token = parser.getToken();
6673
- if (token !== 209030 && parser.tokenValue !== 'meta') {
6907
+ if (token !== 209031 && parser.tokenValue !== 'meta') {
6674
6908
  parser.report(174);
6675
6909
  }
6676
6910
  else if (token & -2147483648) {
@@ -6718,7 +6952,7 @@ function parseImportAttributes(parser, context) {
6718
6952
  const value = parseStringLiteral(parser, context);
6719
6953
  const keyContent = key.type === 'Literal' ? key.value : key.name;
6720
6954
  if (keysContent.has(keyContent)) {
6721
- parser.report(145, `${keyContent}`);
6955
+ parser.report(145, keyContent);
6722
6956
  }
6723
6957
  keysContent.add(keyContent);
6724
6958
  attributes.push(parser.finishNode({
@@ -6815,6 +7049,7 @@ function parseTemplate(parser, context, privateScope) {
6815
7049
  consume(parser, context, 67174409);
6816
7050
  quasis.push(parseTemplateElement(parser, tokenValue, tokenRaw, tokenStart, true));
6817
7051
  }
7052
+ parser.assignable = 2;
6818
7053
  return parser.finishNode({
6819
7054
  type: 'TemplateLiteral',
6820
7055
  expressions,
@@ -6893,7 +7128,7 @@ function parseIdentifier(parser, context) {
6893
7128
  }
6894
7129
  function parseLiteral(parser, context) {
6895
7130
  const { tokenValue, tokenRaw, tokenStart } = parser;
6896
- if (parser.getToken() === 134283388) {
7131
+ if (parser.getToken() === 134283389) {
6897
7132
  return parseBigIntLiteral(parser, context);
6898
7133
  }
6899
7134
  const node = {
@@ -7410,9 +7645,9 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7410
7645
  let key = null;
7411
7646
  let value;
7412
7647
  if (parser.getToken() & 143360 ||
7413
- parser.getToken() === -2147483528 ||
7414
- parser.getToken() === -2147483527) {
7415
- if (parser.getToken() === -2147483527)
7648
+ parser.getToken() === -2147483527 ||
7649
+ parser.getToken() === -2147483526) {
7650
+ if (parser.getToken() === -2147483526)
7416
7651
  destructible |= 16;
7417
7652
  key = parseIdentifier(parser, context);
7418
7653
  if (parser.getToken() === 18 ||
@@ -7444,7 +7679,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7444
7679
  else {
7445
7680
  destructible |=
7446
7681
  (token === 209006 ? 128 : 0) |
7447
- (token === -2147483528 ? 16 : 0);
7682
+ (token === -2147483527 ? 16 : 0);
7448
7683
  value = parser.cloneIdentifier(key);
7449
7684
  }
7450
7685
  }
@@ -7571,7 +7806,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7571
7806
  }
7572
7807
  else if (parser.getToken() & 143360) {
7573
7808
  destructible |= 16;
7574
- if (token === -2147483528)
7809
+ if (token === -2147483527)
7575
7810
  parser.report(95);
7576
7811
  if (token === 209005) {
7577
7812
  if (parser.flags & 1)
@@ -8382,7 +8617,7 @@ function parseNewExpression(parser, context, privateScope, inGroup) {
8382
8617
  const id = parseIdentifier(parser, context | 32);
8383
8618
  const { tokenStart } = parser;
8384
8619
  if (consumeOpt(parser, context, 67108877)) {
8385
- if (context & 65536 && parser.getToken() === 209029) {
8620
+ if (context & 65536 && parser.getToken() === 209030) {
8386
8621
  parser.assignable = 2;
8387
8622
  return parseMetaProperty(parser, context, id, start);
8388
8623
  }
@@ -8394,7 +8629,7 @@ function parseNewExpression(parser, context, privateScope, inGroup) {
8394
8629
  }
8395
8630
  const expr = parsePrimaryExpression(parser, context, privateScope, 2, 1, 0, inGroup, 1, tokenStart);
8396
8631
  context = (context | 131072) ^ 131072;
8397
- if (parser.getToken() === 67108990)
8632
+ if (parser.getToken() === 67108991)
8398
8633
  parser.report(168);
8399
8634
  const callee = parseMemberExpressionNoCall(parser, context, privateScope, expr, inGroup, tokenStart);
8400
8635
  parser.assignable = 2;
@@ -8448,7 +8683,7 @@ function parseAsyncArrowOrCallExpression(parser, context, privateScope, callee,
8448
8683
  }, start);
8449
8684
  }
8450
8685
  let destructible = 0;
8451
- let expr = null;
8686
+ let expr;
8452
8687
  let isNonSimpleParameterList = 0;
8453
8688
  parser.destructible =
8454
8689
  (parser.destructible | 256 | 128) ^
@@ -8595,7 +8830,7 @@ function parseClassDeclaration(parser, context, scope, privateScope, flags) {
8595
8830
  let start;
8596
8831
  let decorators;
8597
8832
  if (parser.leadingDecorators.decorators.length) {
8598
- if (parser.getToken() === 132) {
8833
+ if (parser.getToken() === 133) {
8599
8834
  parser.report(30, '@');
8600
8835
  }
8601
8836
  start = parser.leadingDecorators.start;
@@ -8684,7 +8919,7 @@ function parseClassExpression(parser, context, privateScope, inGroup, start) {
8684
8919
  function parseDecorators(parser, context, privateScope) {
8685
8920
  const list = [];
8686
8921
  if (parser.options.next) {
8687
- while (parser.getToken() === 132) {
8922
+ while (parser.getToken() === 133) {
8688
8923
  list.push(parseDecoratorList(parser, context, privateScope));
8689
8924
  }
8690
8925
  }
@@ -8737,7 +8972,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8737
8972
  let kind = isStatic ? 32 : 0;
8738
8973
  let key = null;
8739
8974
  const token = parser.getToken();
8740
- if (token & (143360 | 36864) || token === -2147483528) {
8975
+ if (token & (143360 | 36864) || token === -2147483527) {
8741
8976
  key = parseIdentifier(parser, context);
8742
8977
  switch (token) {
8743
8978
  case 36970:
@@ -8758,6 +8993,9 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8758
8993
  break;
8759
8994
  case 209008:
8760
8995
  if (parser.getToken() !== 67174411) {
8996
+ if (parser.getToken() === 8391476 && parser.flags & 1) {
8997
+ return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
8998
+ }
8761
8999
  if ((parser.getToken() & 1073741824) === 1073741824) {
8762
9000
  return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
8763
9001
  }
@@ -8766,6 +9004,9 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8766
9004
  break;
8767
9005
  case 209009:
8768
9006
  if (parser.getToken() !== 67174411) {
9007
+ if (parser.getToken() === 8391476 && parser.flags & 1) {
9008
+ return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
9009
+ }
8769
9010
  if ((parser.getToken() & 1073741824) === 1073741824) {
8770
9011
  return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
8771
9012
  }
@@ -8794,7 +9035,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8794
9035
  kind |= 8;
8795
9036
  nextToken(parser, context);
8796
9037
  }
8797
- else if (parser.getToken() === 130) {
9038
+ else if (parser.getToken() === 131) {
8798
9039
  kind |= 8192;
8799
9040
  key = parsePrivateIdentifier(parser, context | 16, privateScope, 768);
8800
9041
  }
@@ -8804,7 +9045,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8804
9045
  else if (isStatic && token === 2162700) {
8805
9046
  return parseStaticBlock(parser, context | 16, scope, privateScope, start);
8806
9047
  }
8807
- else if (token === -2147483527) {
9048
+ else if (token === -2147483526) {
8808
9049
  key = parseIdentifier(parser, context);
8809
9050
  if (parser.getToken() !== 67174411)
8810
9051
  parser.report(30, KeywordDescTable[parser.getToken() & 255]);
@@ -8814,8 +9055,8 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8814
9055
  }
8815
9056
  if (kind & (8 | 16 | 768 | 1024)) {
8816
9057
  if (parser.getToken() & 143360 ||
8817
- parser.getToken() === -2147483528 ||
8818
- parser.getToken() === -2147483527) {
9058
+ parser.getToken() === -2147483527 ||
9059
+ parser.getToken() === -2147483526) {
8819
9060
  key = parseIdentifier(parser, context);
8820
9061
  }
8821
9062
  else if ((parser.getToken() & 134217728) === 134217728) {
@@ -8825,7 +9066,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8825
9066
  kind |= 2;
8826
9067
  key = parseComputedPropertyName(parser, context, privateScope, 0);
8827
9068
  }
8828
- else if (parser.getToken() === 130) {
9069
+ else if (parser.getToken() === 131) {
8829
9070
  kind |= 8192;
8830
9071
  key = parsePrivateIdentifier(parser, context, privateScope, kind);
8831
9072
  }
@@ -8905,7 +9146,7 @@ function parsePropertyDefinition(parser, context, privateScope, key, state, deco
8905
9146
  if (parser.getToken() === 1077936155) {
8906
9147
  nextToken(parser, context | 32);
8907
9148
  const { tokenStart } = parser;
8908
- if (parser.getToken() === 537079927)
9149
+ if (parser.getToken() === 537079928)
8909
9150
  parser.report(119);
8910
9151
  const modifierFlags = 1024 |
8911
9152
  2048 |
@@ -8937,7 +9178,7 @@ function parsePropertyDefinition(parser, context, privateScope, key, state, deco
8937
9178
  }
8938
9179
  function parseBindingPattern(parser, context, scope, privateScope, type, origin) {
8939
9180
  if (parser.getToken() & 143360 ||
8940
- ((context & 1) === 0 && parser.getToken() === -2147483527))
9181
+ ((context & 1) === 0 && parser.getToken() === -2147483526))
8941
9182
  return parseAndClassifyIdentifier(parser, context, scope, type, origin);
8942
9183
  if ((parser.getToken() & 2097152) !== 2097152)
8943
9184
  parser.report(30, KeywordDescTable[parser.getToken() & 255]);
@@ -8956,7 +9197,7 @@ function parseAndClassifyIdentifier(parser, context, scope, kind, origin) {
8956
9197
  if ((token & 537079808) === 537079808) {
8957
9198
  parser.report(119);
8958
9199
  }
8959
- else if ((token & 36864) === 36864 || token === -2147483527) {
9200
+ else if ((token & 36864) === 36864 || token === -2147483526) {
8960
9201
  parser.report(118);
8961
9202
  }
8962
9203
  }
@@ -9077,7 +9318,7 @@ function parseJSXChildrenAndClosingFragment(parser, context, privateScope, inJSX
9077
9318
  }
9078
9319
  }
9079
9320
  function parseJSXChildOrClosingElement(parser, context, privateScope, inJSXChild) {
9080
- if (parser.getToken() === 137)
9321
+ if (parser.getToken() === 138)
9081
9322
  return parseJSXText(parser, context);
9082
9323
  if (parser.getToken() === 2162700)
9083
9324
  return parseJSXExpressionContainer(parser, context, privateScope, 1, 0);
@@ -9091,7 +9332,7 @@ function parseJSXChildOrClosingElement(parser, context, privateScope, inJSXChild
9091
9332
  parser.report(0);
9092
9333
  }
9093
9334
  function parseJSXChildOrClosingFragment(parser, context, privateScope, inJSXChild) {
9094
- if (parser.getToken() === 137)
9335
+ if (parser.getToken() === 138)
9095
9336
  return parseJSXText(parser, context);
9096
9337
  if (parser.getToken() === 2162700)
9097
9338
  return parseJSXExpressionContainer(parser, context, privateScope, 1, 0);
@@ -9228,7 +9469,7 @@ function parseJSXExpressionContainer(parser, context, privateScope, inJSXChild,
9228
9469
  const { tokenStart } = parser;
9229
9470
  if (parser.getToken() === 14)
9230
9471
  return parseJSXSpreadChild(parser, context, privateScope, start);
9231
- let expression = null;
9472
+ let expression;
9232
9473
  if (parser.getToken() === 1074790415) {
9233
9474
  if (isAttr)
9234
9475
  parser.report(157);
@@ -9282,7 +9523,7 @@ function parseJSXIdentifier(parser, context) {
9282
9523
  }, start);
9283
9524
  }
9284
9525
 
9285
- const version = version$1;
9526
+ const { version } = packageJson;
9286
9527
  function parseScript(source, options) {
9287
9528
  return parseSource(source, { ...options, sourceType: 'script' });
9288
9529
  }