@danielx/civet 0.4.6 → 0.4.8

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/main.js CHANGED
@@ -455,6 +455,7 @@ var require_parser = __commonJS({
455
455
  SuperProperty,
456
456
  MetaProperty,
457
457
  Parameters,
458
+ NonEmptyParameters,
458
459
  ParameterElement,
459
460
  ParameterElementDelimiter,
460
461
  BindingIdentifier,
@@ -475,6 +476,7 @@ var require_parser = __commonJS({
475
476
  Arrow,
476
477
  Block,
477
478
  BracedOrEmptyBlock,
479
+ EmptyBlock,
478
480
  BracedBlock,
479
481
  SingleNestedExpression,
480
482
  NestedBlockExpressions,
@@ -534,6 +536,7 @@ var require_parser = __commonJS({
534
536
  NestedCaseClause,
535
537
  CaseClause,
536
538
  CaseExpressionList,
539
+ NoExpressions,
537
540
  ImpliedColon,
538
541
  TryStatement,
539
542
  CatchClause,
@@ -654,6 +657,7 @@ var require_parser = __commonJS({
654
657
  SubstitutionStart,
655
658
  Switch,
656
659
  Target,
660
+ Throw,
657
661
  TripleDoubleQuote,
658
662
  TripleSingleQuote,
659
663
  TripleTick,
@@ -820,46 +824,46 @@ var require_parser = __commonJS({
820
824
  var $L77 = $L("break");
821
825
  var $L78 = $L("continue");
822
826
  var $L79 = $L("debugger");
823
- var $L80 = $L("throw");
824
- var $L81 = $L("import type");
825
- var $L82 = $L("default");
826
- var $L83 = $L(":=");
827
- var $L84 = $L("/*");
828
- var $L85 = $L("*/");
829
- var $L86 = $L("###");
830
- var $L87 = $L("as");
831
- var $L88 = $L("async");
832
- var $L89 = $L("await");
833
- var $L90 = $L("case");
834
- var $L91 = $L("catch");
835
- var $L92 = $L("class");
836
- var $L93 = $L("#{");
837
- var $L94 = $L(":");
838
- var $L95 = $L(".");
839
- var $L96 = $L('"');
840
- var $L97 = $L("else");
841
- var $L98 = $L("export");
842
- var $L99 = $L("for");
843
- var $L100 = $L("from");
844
- var $L101 = $L("function");
845
- var $L102 = $L("get");
846
- var $L103 = $L("set");
847
- var $L104 = $L("if");
848
- var $L105 = $L("let");
849
- var $L106 = $L("const");
850
- var $L107 = $L("loop");
851
- var $L108 = $L("new");
852
- var $L109 = $L("of");
853
- var $L110 = $L("{");
854
- var $L111 = $L("[");
855
- var $L112 = $L("(");
856
- var $L113 = $L("?");
857
- var $L114 = $L("return");
858
- var $L115 = $L("'");
859
- var $L116 = $L("static");
860
- var $L117 = $L("${");
861
- var $L118 = $L("switch");
862
- var $L119 = $L("target");
827
+ var $L80 = $L("import type");
828
+ var $L81 = $L("default");
829
+ var $L82 = $L(":=");
830
+ var $L83 = $L("/*");
831
+ var $L84 = $L("*/");
832
+ var $L85 = $L("###");
833
+ var $L86 = $L("as");
834
+ var $L87 = $L("async");
835
+ var $L88 = $L("await");
836
+ var $L89 = $L("case");
837
+ var $L90 = $L("catch");
838
+ var $L91 = $L("class");
839
+ var $L92 = $L("#{");
840
+ var $L93 = $L(":");
841
+ var $L94 = $L(".");
842
+ var $L95 = $L('"');
843
+ var $L96 = $L("else");
844
+ var $L97 = $L("export");
845
+ var $L98 = $L("for");
846
+ var $L99 = $L("from");
847
+ var $L100 = $L("function");
848
+ var $L101 = $L("get");
849
+ var $L102 = $L("set");
850
+ var $L103 = $L("if");
851
+ var $L104 = $L("let");
852
+ var $L105 = $L("const");
853
+ var $L106 = $L("loop");
854
+ var $L107 = $L("new");
855
+ var $L108 = $L("of");
856
+ var $L109 = $L("{");
857
+ var $L110 = $L("[");
858
+ var $L111 = $L("(");
859
+ var $L112 = $L("?");
860
+ var $L113 = $L("return");
861
+ var $L114 = $L("'");
862
+ var $L115 = $L("static");
863
+ var $L116 = $L("${");
864
+ var $L117 = $L("switch");
865
+ var $L118 = $L("target");
866
+ var $L119 = $L("throw");
863
867
  var $L120 = $L('"""');
864
868
  var $L121 = $L("'''");
865
869
  var $L122 = $L("```");
@@ -941,7 +945,11 @@ var require_parser = __commonJS({
941
945
  return TopLevelStatement$0(state);
942
946
  }
943
947
  }
944
- var Expression$0 = $S(AssignmentExpression, $Q($S(__, Comma, AssignmentExpression)));
948
+ var Expression$0 = $TS($S(AssignmentExpression, $Q($S(__, Comma, AssignmentExpression))), function($skip, $loc, $0, $1, $2) {
949
+ if ($2.length == 0)
950
+ return $1;
951
+ return $0;
952
+ });
945
953
  function Expression(state) {
946
954
  if (state.verbose)
947
955
  console.log("ENTER:", "Expression");
@@ -1022,7 +1030,9 @@ var require_parser = __commonJS({
1022
1030
  var spacing = $2;
1023
1031
  return module2.insertTrimmingSpace(spacing, "(");
1024
1032
  });
1025
- var ApplicationStart$1 = $S(IndentedApplicationAllowed, $Y(NestedObjectLiteral), InsertOpenParen);
1033
+ var ApplicationStart$1 = $T($S(IndentedApplicationAllowed, $Y(NestedObjectLiteral), InsertOpenParen), function(value) {
1034
+ return value[2];
1035
+ });
1026
1036
  function ApplicationStart(state) {
1027
1037
  if (state.tokenize) {
1028
1038
  return $TOKEN("ApplicationStart", state, ApplicationStart$0(state) || ApplicationStart$1(state));
@@ -1054,7 +1064,11 @@ var require_parser = __commonJS({
1054
1064
  return CommaExpression$0(state);
1055
1065
  }
1056
1066
  }
1057
- var BinaryOpExpression$0 = $S(UnaryExpression, $Q($S(__, BinaryOp, __, UnaryExpression)));
1067
+ var BinaryOpExpression$0 = $TS($S(UnaryExpression, $Q($S(__, BinaryOp, __, UnaryExpression))), function($skip, $loc, $0, $1, $2) {
1068
+ if ($2.length)
1069
+ return $0;
1070
+ return $1;
1071
+ });
1058
1072
  function BinaryOpExpression(state) {
1059
1073
  if (state.verbose)
1060
1074
  console.log("ENTER:", "BinaryOpExpression");
@@ -1094,7 +1108,11 @@ var require_parser = __commonJS({
1094
1108
  }
1095
1109
  }
1096
1110
  var UpdateExpression$0 = $S(UpdateExpressionSymbol, UnaryExpression);
1097
- var UpdateExpression$1 = $S(LeftHandSideExpression, $E(UpdateExpressionSymbol));
1111
+ var UpdateExpression$1 = $TS($S(LeftHandSideExpression, $E(UpdateExpressionSymbol)), function($skip, $loc, $0, $1, $2) {
1112
+ if ($2)
1113
+ return $0;
1114
+ return $1;
1115
+ });
1098
1116
  function UpdateExpression(state) {
1099
1117
  if (state.tokenize) {
1100
1118
  return $TOKEN("UpdateExpression", state, UpdateExpression$0(state) || UpdateExpression$1(state));
@@ -1114,7 +1132,11 @@ var require_parser = __commonJS({
1114
1132
  return UpdateExpressionSymbol$0(state);
1115
1133
  }
1116
1134
  }
1117
- var AssignmentExpression$0 = $S($Q(TrailingComment), AssignmentExpressionRest);
1135
+ var AssignmentExpression$0 = $TS($S($Q(TrailingComment), AssignmentExpressionRest), function($skip, $loc, $0, $1, $2) {
1136
+ if ($1.length)
1137
+ return $0;
1138
+ return $2;
1139
+ });
1118
1140
  var AssignmentExpression$1 = $S(__, AssignmentExpressionRest);
1119
1141
  function AssignmentExpression(state) {
1120
1142
  if (state.tokenize) {
@@ -1126,7 +1148,9 @@ var require_parser = __commonJS({
1126
1148
  var AssignmentExpressionRest$0 = AwaitExpression;
1127
1149
  var AssignmentExpressionRest$1 = YieldExpression;
1128
1150
  var AssignmentExpressionRest$2 = $S($E($S(Async, __)), ArrowFunction);
1129
- var AssignmentExpressionRest$3 = $S($P($S(__, LeftHandSideExpression, __, AssignmentOp)), Expression);
1151
+ var AssignmentExpressionRest$3 = $T($S($P($S(__, LeftHandSideExpression, __, AssignmentOp)), Expression), function(value) {
1152
+ return { "type": "AssignmentExpression", "children": value };
1153
+ });
1130
1154
  var AssignmentExpressionRest$4 = ConditionalExpression;
1131
1155
  function AssignmentExpressionRest(state) {
1132
1156
  if (state.tokenize) {
@@ -1156,7 +1180,19 @@ var require_parser = __commonJS({
1156
1180
  }
1157
1181
  }
1158
1182
  var ArrowFunction$0 = ThinArrowFunction;
1159
- var ArrowFunction$1 = $S(Parameters, $E(ReturnTypeSuffix), FatArrow, FatArrowBody);
1183
+ var ArrowFunction$1 = $TS($S(Parameters, $E(ReturnTypeSuffix), FatArrow, FatArrowBody), function($skip, $loc, $0, $1, $2, $3, $4) {
1184
+ var suffix = $2;
1185
+ var expOrBlock = $4;
1186
+ const isVoid = suffix?.children?.[1]?.[0]?.[1]?.token === "void";
1187
+ const isBlock = expOrBlock.type === "BlockStatement";
1188
+ if (module2.implicitReturns && !isVoid && isBlock) {
1189
+ module2.addImplicitReturns(expOrBlock);
1190
+ }
1191
+ return {
1192
+ type: "FunctionExpression",
1193
+ children: $0
1194
+ };
1195
+ });
1160
1196
  function ArrowFunction(state) {
1161
1197
  if (state.tokenize) {
1162
1198
  return $TOKEN("ArrowFunction", state, ArrowFunction$0(state) || ArrowFunction$1(state));
@@ -1179,11 +1215,17 @@ var require_parser = __commonJS({
1179
1215
  return FatArrow$0(state);
1180
1216
  }
1181
1217
  }
1182
- var FatArrowBody$0 = $S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace);
1183
- var FatArrowBody$1 = $S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace);
1218
+ var FatArrowBody$0 = $T($S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace), function(value) {
1219
+ var exps = value[3];
1220
+ return { "type": "BlockStatement", "expressions": exps, "children": value };
1221
+ });
1222
+ var FatArrowBody$1 = $T($S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace), function(value) {
1223
+ var exps = value[2];
1224
+ return { "type": "BlockStatement", "expressions": exps, "children": value };
1225
+ });
1184
1226
  var FatArrowBody$2 = AssignmentExpression;
1185
1227
  var FatArrowBody$3 = $S(__, AssignmentExpression);
1186
- var FatArrowBody$4 = $S(InsertOpenBrace, InsertCloseBrace);
1228
+ var FatArrowBody$4 = EmptyBlock;
1187
1229
  function FatArrowBody(state) {
1188
1230
  if (state.tokenize) {
1189
1231
  return $TOKEN("FatArrowBody", state, FatArrowBody$0(state) || FatArrowBody$1(state) || FatArrowBody$2(state) || FatArrowBody$3(state) || FatArrowBody$4(state));
@@ -1191,7 +1233,11 @@ var require_parser = __commonJS({
1191
1233
  return FatArrowBody$0(state) || FatArrowBody$1(state) || FatArrowBody$2(state) || FatArrowBody$3(state) || FatArrowBody$4(state);
1192
1234
  }
1193
1235
  }
1194
- var ConditionalExpression$0 = $S(ShortCircuitExpression, $E($S(__, QuestionMark, AssignmentExpression, __, Colon, AssignmentExpression)));
1236
+ var ConditionalExpression$0 = $TS($S(ShortCircuitExpression, $E($S(__, QuestionMark, AssignmentExpression, __, Colon, AssignmentExpression))), function($skip, $loc, $0, $1, $2) {
1237
+ if ($2)
1238
+ return $0;
1239
+ return $1;
1240
+ });
1195
1241
  function ConditionalExpression(state) {
1196
1242
  if (state.verbose)
1197
1243
  console.log("ENTER:", "ConditionalExpression");
@@ -1380,7 +1426,11 @@ var require_parser = __commonJS({
1380
1426
  }
1381
1427
  var CallExpression$0 = $S($EXPECT($L10, fail, 'CallExpression "super"'), ArgumentsWithTrailingCallExpressions);
1382
1428
  var CallExpression$1 = $S($EXPECT($L11, fail, 'CallExpression "import"'), __, OpenParen, AssignmentExpression, __, CloseParen);
1383
- var CallExpression$2 = $S(MemberExpression, $Q(CallExpressionRest));
1429
+ var CallExpression$2 = $TS($S(MemberExpression, $Q(CallExpressionRest)), function($skip, $loc, $0, $1, $2) {
1430
+ if ($2.length)
1431
+ return $0;
1432
+ return $1;
1433
+ });
1384
1434
  function CallExpression(state) {
1385
1435
  if (state.tokenize) {
1386
1436
  return $TOKEN("CallExpression", state, CallExpression$0(state) || CallExpression$1(state) || CallExpression$2(state));
@@ -1430,7 +1480,11 @@ var require_parser = __commonJS({
1430
1480
  return AdditionalReservedWords$0(state);
1431
1481
  }
1432
1482
  }
1433
- var MemberExpression$0 = $S(PrimaryExpression, $Q(MemberExpressionRest));
1483
+ var MemberExpression$0 = $TS($S(PrimaryExpression, $Q(MemberExpressionRest)), function($skip, $loc, $0, $1, $2) {
1484
+ if ($2.length)
1485
+ return $0;
1486
+ return $1;
1487
+ });
1434
1488
  var MemberExpression$1 = $S($Q(TrailingComment), SuperProperty);
1435
1489
  var MemberExpression$2 = $S($Q(TrailingComment), MetaProperty);
1436
1490
  function MemberExpression(state) {
@@ -1487,7 +1541,7 @@ var require_parser = __commonJS({
1487
1541
  return MetaProperty$0(state) || MetaProperty$1(state);
1488
1542
  }
1489
1543
  }
1490
- var Parameters$0 = $S($E(TypeParameters), OpenParen, $Q(ParameterElement), __, CloseParen);
1544
+ var Parameters$0 = NonEmptyParameters;
1491
1545
  var Parameters$1 = $TV($EXPECT($L1, fail, 'Parameters ""'), function($skip, $loc, $0, $1) {
1492
1546
  return { $loc, token: "()" };
1493
1547
  });
@@ -1498,6 +1552,16 @@ var require_parser = __commonJS({
1498
1552
  return Parameters$0(state) || Parameters$1(state);
1499
1553
  }
1500
1554
  }
1555
+ var NonEmptyParameters$0 = $S($E(TypeParameters), OpenParen, $Q(ParameterElement), __, CloseParen);
1556
+ function NonEmptyParameters(state) {
1557
+ if (state.verbose)
1558
+ console.log("ENTER:", "NonEmptyParameters");
1559
+ if (state.tokenize) {
1560
+ return $TOKEN("NonEmptyParameters", state, NonEmptyParameters$0(state));
1561
+ } else {
1562
+ return NonEmptyParameters$0(state);
1563
+ }
1564
+ }
1501
1565
  var ParameterElement$0 = $S(__, $C(BindingIdentifier, BindingPattern), $E(TypeSuffix), $E(Initializer), ParameterElementDelimiter);
1502
1566
  function ParameterElement(state) {
1503
1567
  if (state.verbose)
@@ -1666,7 +1730,18 @@ var require_parser = __commonJS({
1666
1730
  }
1667
1731
  }
1668
1732
  var FunctionExpression$0 = ThinArrowFunction;
1669
- var FunctionExpression$1 = $S($E($S(Async, __)), Function, $E($S(Star, __)), $E(BindingIdentifier), __, Parameters, $E(ReturnTypeSuffix), BracedBlock);
1733
+ var FunctionExpression$1 = $TS($S($E($S(Async, __)), Function, $E($S(Star, __)), $E(BindingIdentifier), __, Parameters, $E(ReturnTypeSuffix), BracedBlock), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
1734
+ var suffix = $7;
1735
+ var block = $8;
1736
+ const isVoid = suffix?.children?.[1]?.[0]?.[1]?.token === "void";
1737
+ if (module2.implicitReturns && !isVoid) {
1738
+ module2.addImplicitReturns(block);
1739
+ }
1740
+ return {
1741
+ type: "FunctionExpression",
1742
+ children: $0
1743
+ };
1744
+ });
1670
1745
  function FunctionExpression(state) {
1671
1746
  if (state.tokenize) {
1672
1747
  return $TOKEN("FunctionExpression", state, FunctionExpression$0(state) || FunctionExpression$1(state));
@@ -1674,17 +1749,24 @@ var require_parser = __commonJS({
1674
1749
  return FunctionExpression$0(state) || FunctionExpression$1(state);
1675
1750
  }
1676
1751
  }
1677
- var ThinArrowFunction$0 = $TS($S(Parameters, $E(ReturnTypeSuffix), __, Arrow, BracedOrEmptyBlock), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1752
+ var ThinArrowFunction$0 = $TS($S(Parameters, $E(ReturnTypeSuffix), $Q(_), Arrow, BracedOrEmptyBlock), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1678
1753
  var params = $1;
1679
1754
  var suffix = $2;
1680
1755
  var arrow = $4;
1681
1756
  var block = $5;
1682
- return [
1683
- { $loc: arrow.$loc, token: "function" },
1684
- params,
1685
- suffix,
1686
- block
1687
- ];
1757
+ const isVoid = suffix?.children?.[1]?.[0]?.[1]?.token === "void";
1758
+ if (module2.implicitReturns && !isVoid) {
1759
+ block = module2.addImplicitReturns(block);
1760
+ }
1761
+ return {
1762
+ type: "FunctionExpression",
1763
+ children: [
1764
+ { $loc: arrow.$loc, token: "function" },
1765
+ params,
1766
+ suffix,
1767
+ block
1768
+ ]
1769
+ };
1688
1770
  });
1689
1771
  function ThinArrowFunction(state) {
1690
1772
  if (state.verbose)
@@ -1707,8 +1789,14 @@ var require_parser = __commonJS({
1707
1789
  return Arrow$0(state);
1708
1790
  }
1709
1791
  }
1710
- var Block$0 = $S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace);
1711
- var Block$1 = $S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace);
1792
+ var Block$0 = $T($S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace), function(value) {
1793
+ var exps = value[3];
1794
+ return { "type": "BlockStatement", "expressions": exps, "children": value };
1795
+ });
1796
+ var Block$1 = $T($S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace), function(value) {
1797
+ var exps = value[2];
1798
+ return { "type": "BlockStatement", "expressions": exps, "children": value };
1799
+ });
1712
1800
  var Block$2 = Statement;
1713
1801
  var Block$3 = $S(__, Statement);
1714
1802
  function Block(state) {
@@ -1719,7 +1807,7 @@ var require_parser = __commonJS({
1719
1807
  }
1720
1808
  }
1721
1809
  var BracedOrEmptyBlock$0 = BracedBlock;
1722
- var BracedOrEmptyBlock$1 = $S(InsertOpenBrace, InsertCloseBrace);
1810
+ var BracedOrEmptyBlock$1 = EmptyBlock;
1723
1811
  function BracedOrEmptyBlock(state) {
1724
1812
  if (state.tokenize) {
1725
1813
  return $TOKEN("BracedOrEmptyBlock", state, BracedOrEmptyBlock$0(state) || BracedOrEmptyBlock$1(state));
@@ -1727,9 +1815,34 @@ var require_parser = __commonJS({
1727
1815
  return BracedOrEmptyBlock$0(state) || BracedOrEmptyBlock$1(state);
1728
1816
  }
1729
1817
  }
1730
- var BracedBlock$0 = $S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace);
1731
- var BracedBlock$1 = $S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace);
1732
- var BracedBlock$2 = $S(InsertOpenBrace, $N(EOS), __, Statement, InsertSpace, InsertCloseBrace);
1818
+ var EmptyBlock$0 = $T($S(InsertOpenBrace, InsertCloseBrace), function(value) {
1819
+ return { "type": "BlockStatement", "expressions": [], "children": value };
1820
+ });
1821
+ function EmptyBlock(state) {
1822
+ if (state.verbose)
1823
+ console.log("ENTER:", "EmptyBlock");
1824
+ if (state.tokenize) {
1825
+ return $TOKEN("EmptyBlock", state, EmptyBlock$0(state));
1826
+ } else {
1827
+ return EmptyBlock$0(state);
1828
+ }
1829
+ }
1830
+ var BracedBlock$0 = $T($S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace), function(value) {
1831
+ var exps = value[3];
1832
+ return { "type": "BlockStatement", "expressions": exps, "children": value };
1833
+ });
1834
+ var BracedBlock$1 = $T($S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace), function(value) {
1835
+ var exps = value[2];
1836
+ return { "type": "BlockStatement", "expressions": exps, "children": value };
1837
+ });
1838
+ var BracedBlock$2 = $TS($S(InsertOpenBrace, $N(EOS), __, Statement, InsertSpace, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
1839
+ var s = $4;
1840
+ return {
1841
+ type: "BlockStatement",
1842
+ expressions: [s],
1843
+ children: $0
1844
+ };
1845
+ });
1733
1846
  function BracedBlock(state) {
1734
1847
  if (state.tokenize) {
1735
1848
  return $TOKEN("BracedBlock", state, BracedBlock$0(state) || BracedBlock$1(state) || BracedBlock$2(state));
@@ -1824,7 +1937,9 @@ var require_parser = __commonJS({
1824
1937
  return Comma$0(state);
1825
1938
  }
1826
1939
  }
1827
- var Identifier$0 = $S($N(ReservedWord), IdentifierName);
1940
+ var Identifier$0 = $T($S($N(ReservedWord), IdentifierName), function(value) {
1941
+ return value[1];
1942
+ });
1828
1943
  function Identifier(state) {
1829
1944
  if (state.verbose)
1830
1945
  console.log("ENTER:", "Identifier");
@@ -2035,7 +2150,17 @@ var require_parser = __commonJS({
2035
2150
  return PropertyName$0(state) || PropertyName$1(state) || PropertyName$2(state) || PropertyName$3(state);
2036
2151
  }
2037
2152
  }
2038
- var MethodDefinition$0 = $S(MethodSignature, BracedBlock);
2153
+ var MethodDefinition$0 = $TS($S(MethodSignature, BracedBlock), function($skip, $loc, $0, $1, $2) {
2154
+ var sig = $1;
2155
+ var block = $2;
2156
+ const isConstructor = sig.name === "constructor";
2157
+ const isVoid = sig.returnType === "void";
2158
+ const isSet = sig.modifier === "set";
2159
+ if (module2.implicitReturns && !isConstructor && !isSet && !isVoid) {
2160
+ block = module2.addImplicitReturns(block);
2161
+ }
2162
+ return $0;
2163
+ });
2039
2164
  function MethodDefinition(state) {
2040
2165
  if (state.verbose)
2041
2166
  console.log("ENTER:", "MethodDefinition");
@@ -2056,8 +2181,26 @@ var require_parser = __commonJS({
2056
2181
  return MethodModifier$0(state) || MethodModifier$1(state) || MethodModifier$2(state) || MethodModifier$3(state);
2057
2182
  }
2058
2183
  }
2059
- var MethodSignature$0 = $S(ConstructorShorthand, Parameters);
2060
- var MethodSignature$1 = $S($E(MethodModifier), ClassElementName, $Q(_), Parameters);
2184
+ var MethodSignature$0 = $TS($S(ConstructorShorthand, Parameters), function($skip, $loc, $0, $1, $2) {
2185
+ return {
2186
+ type: "MethodSignature",
2187
+ children: $0,
2188
+ name: $1.token,
2189
+ returnType: void 0
2190
+ };
2191
+ });
2192
+ var MethodSignature$1 = $TS($S($E(MethodModifier), ClassElementName, $Q(_), NonEmptyParameters, $E(ReturnTypeSuffix)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
2193
+ var name = $2;
2194
+ var suffix = $5;
2195
+ name = name.token.match(/^(?:"|')/) ? name.token.slice(1, -1) : name.token;
2196
+ return {
2197
+ type: "MethodSignature",
2198
+ children: $0,
2199
+ name,
2200
+ modifier: $1?.[0]?.token,
2201
+ returnType: void 0
2202
+ };
2203
+ });
2061
2204
  function MethodSignature(state) {
2062
2205
  if (state.tokenize) {
2063
2206
  return $TOKEN("MethodSignature", state, MethodSignature$0(state) || MethodSignature$1(state));
@@ -2074,7 +2217,12 @@ var require_parser = __commonJS({
2074
2217
  return ClassElementName$0(state) || ClassElementName$1(state);
2075
2218
  }
2076
2219
  }
2077
- var PrivateIdentifier$0 = $S($EXPECT($L8, fail, 'PrivateIdentifier "#"'), IdentifierName);
2220
+ var PrivateIdentifier$0 = $TV($TEXT($S($EXPECT($L8, fail, 'PrivateIdentifier "#"'), IdentifierName)), function($skip, $loc, $0, $1) {
2221
+ return {
2222
+ $loc,
2223
+ token: $1
2224
+ };
2225
+ });
2078
2226
  function PrivateIdentifier(state) {
2079
2227
  if (state.verbose)
2080
2228
  console.log("ENTER:", "PrivateIdentifier");
@@ -2212,8 +2360,7 @@ var require_parser = __commonJS({
2212
2360
  var l = $3;
2213
2361
  if (cond)
2214
2362
  return [cond, statement, { $loc: l.$loc, token: "}" }];
2215
- $0.pop();
2216
- return $0;
2363
+ return statement;
2217
2364
  });
2218
2365
  function StatementListItem(state) {
2219
2366
  if (state.verbose)
@@ -2268,7 +2415,9 @@ var require_parser = __commonJS({
2268
2415
  return Statement$0(state) || Statement$1(state) || Statement$2(state) || Statement$3(state) || Statement$4(state) || Statement$5(state) || Statement$6(state) || Statement$7(state) || Statement$8(state);
2269
2416
  }
2270
2417
  }
2271
- var EmptyStatement$0 = $S($Q(TrailingComment), $Y($EXPECT($L72, fail, 'EmptyStatement ";"')));
2418
+ var EmptyStatement$0 = $T($S($Q(TrailingComment), $Y($EXPECT($L72, fail, 'EmptyStatement ";"'))), function(value) {
2419
+ return { "type": "EmptyStatement", "children": value[0] };
2420
+ });
2272
2421
  function EmptyStatement(state) {
2273
2422
  if (state.verbose)
2274
2423
  console.log("ENTER:", "EmptyStatement");
@@ -2288,7 +2437,9 @@ var require_parser = __commonJS({
2288
2437
  return BlockStatement$0(state);
2289
2438
  }
2290
2439
  }
2291
- var IfStatement$0 = $S(If, Condition, Block, $E($S(__, Else, Block)));
2440
+ var IfStatement$0 = $T($S(If, Condition, Block, $E($S(__, Else, Block))), function(value) {
2441
+ return { "type": "IfStatement", "children": value };
2442
+ });
2292
2443
  var IfStatement$1 = $TS($S(Unless, Condition, Block), function($skip, $loc, $0, $1, $2, $3) {
2293
2444
  var kind = $1;
2294
2445
  var condition = $2;
@@ -2302,7 +2453,10 @@ var require_parser = __commonJS({
2302
2453
  c.token = "))";
2303
2454
  });
2304
2455
  kind.token = "if";
2305
- return [kind, condition, block];
2456
+ return {
2457
+ type: "IfStatement",
2458
+ children: [kind, condition, block]
2459
+ };
2306
2460
  });
2307
2461
  function IfStatement(state) {
2308
2462
  if (state.tokenize) {
@@ -2314,8 +2468,12 @@ var require_parser = __commonJS({
2314
2468
  var IterationStatement$0 = LoopStatement;
2315
2469
  var IterationStatement$1 = DoWhileStatement;
2316
2470
  var IterationStatement$2 = WhileStatement;
2317
- var IterationStatement$3 = ForStatement;
2318
- var IterationStatement$4 = ForInOfStatement;
2471
+ var IterationStatement$3 = $T($S(ForStatement), function(value) {
2472
+ return { "type": "IterationStatement", "children": value };
2473
+ });
2474
+ var IterationStatement$4 = $T($S(ForInOfStatement), function(value) {
2475
+ return { "type": "IterationStatement", "children": value };
2476
+ });
2319
2477
  function IterationStatement(state) {
2320
2478
  if (state.tokenize) {
2321
2479
  return $TOKEN("IterationStatement", state, IterationStatement$0(state) || IterationStatement$1(state) || IterationStatement$2(state) || IterationStatement$3(state) || IterationStatement$4(state));
@@ -2323,7 +2481,9 @@ var require_parser = __commonJS({
2323
2481
  return IterationStatement$0(state) || IterationStatement$1(state) || IterationStatement$2(state) || IterationStatement$3(state) || IterationStatement$4(state);
2324
2482
  }
2325
2483
  }
2326
- var LoopStatement$0 = $S(Loop, Block);
2484
+ var LoopStatement$0 = $T($S(Loop, Block), function(value) {
2485
+ return { "type": "IterationStatement", "children": value };
2486
+ });
2327
2487
  function LoopStatement(state) {
2328
2488
  if (state.verbose)
2329
2489
  console.log("ENTER:", "LoopStatement");
@@ -2333,7 +2493,9 @@ var require_parser = __commonJS({
2333
2493
  return LoopStatement$0(state);
2334
2494
  }
2335
2495
  }
2336
- var DoWhileStatement$0 = $S($EXPECT($L73, fail, 'DoWhileStatement "do"'), NonIdContinue, Block, __, WhileClause);
2496
+ var DoWhileStatement$0 = $T($S($EXPECT($L73, fail, 'DoWhileStatement "do"'), NonIdContinue, Block, __, WhileClause), function(value) {
2497
+ return { "type": "IterationStatement", "children": value };
2498
+ });
2337
2499
  function DoWhileStatement(state) {
2338
2500
  if (state.verbose)
2339
2501
  console.log("ENTER:", "DoWhileStatement");
@@ -2343,7 +2505,9 @@ var require_parser = __commonJS({
2343
2505
  return DoWhileStatement$0(state);
2344
2506
  }
2345
2507
  }
2346
- var WhileStatement$0 = $S(WhileClause, Block);
2508
+ var WhileStatement$0 = $T($S(WhileClause, Block), function(value) {
2509
+ return { "type": "IterationStatement", "children": value };
2510
+ });
2347
2511
  function WhileStatement(state) {
2348
2512
  if (state.verbose)
2349
2513
  console.log("ENTER:", "WhileStatement");
@@ -2412,7 +2576,9 @@ var require_parser = __commonJS({
2412
2576
  return ForBinding$0(state) || ForBinding$1(state);
2413
2577
  }
2414
2578
  }
2415
- var SwitchStatement$0 = $S(Switch, Condition, CaseBlock);
2579
+ var SwitchStatement$0 = $T($S(Switch, Condition, CaseBlock), function(value) {
2580
+ return { "type": "SwitchStatement", "children": value };
2581
+ });
2416
2582
  function SwitchStatement(state) {
2417
2583
  if (state.verbose)
2418
2584
  console.log("ENTER:", "SwitchStatement");
@@ -2422,8 +2588,24 @@ var require_parser = __commonJS({
2422
2588
  return SwitchStatement$0(state);
2423
2589
  }
2424
2590
  }
2425
- var CaseBlock$0 = $S(__, OpenBrace, $Y(EOS), NestedCaseClauses, __, CloseBrace);
2426
- var CaseBlock$1 = $S($Y(EOS), InsertOpenBrace, NestedCaseClauses, InsertNewline, InsertCloseBrace);
2591
+ var CaseBlock$0 = $TS($S(__, OpenBrace, $Y(EOS), NestedCaseClauses, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2592
+ var clauses = $4;
2593
+ $0.splice(2, 1);
2594
+ return {
2595
+ type: "CaseBlock",
2596
+ clauses,
2597
+ children: $0
2598
+ };
2599
+ });
2600
+ var CaseBlock$1 = $TS($S($Y(EOS), InsertOpenBrace, NestedCaseClauses, InsertNewline, InsertIndent, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2601
+ var clauses = $3;
2602
+ $0.shift();
2603
+ return {
2604
+ type: "CaseBlock",
2605
+ clauses,
2606
+ children: $0
2607
+ };
2608
+ });
2427
2609
  function CaseBlock(state) {
2428
2610
  if (state.tokenize) {
2429
2611
  return $TOKEN("CaseBlock", state, CaseBlock$0(state) || CaseBlock$1(state));
@@ -2446,7 +2628,10 @@ var require_parser = __commonJS({
2446
2628
  return NestedCaseClauses$0(state);
2447
2629
  }
2448
2630
  }
2449
- var NestedCaseClause$0 = $S(Nested, CaseClause);
2631
+ var NestedCaseClause$0 = $TS($S(Nested, CaseClause), function($skip, $loc, $0, $1, $2) {
2632
+ $2.children.unshift($1);
2633
+ return $2;
2634
+ });
2450
2635
  function NestedCaseClause(state) {
2451
2636
  if (state.verbose)
2452
2637
  console.log("ENTER:", "NestedCaseClause");
@@ -2456,14 +2641,32 @@ var require_parser = __commonJS({
2456
2641
  return NestedCaseClause$0(state);
2457
2642
  }
2458
2643
  }
2459
- var CaseClause$0 = $S(Case, CaseExpressionList, NestedBlockExpressions);
2460
- var CaseClause$1 = $S(When, CaseExpressionList, NestedBlockExpressions, InsertBreak);
2461
- var CaseClause$2 = $S(Default, ImpliedColon, NestedBlockExpressions);
2644
+ var CaseClause$0 = $T($S(Case, CaseExpressionList, $C(NestedBlockExpressions, NoExpressions)), function(value) {
2645
+ var exps = value[2];
2646
+ return { "type": "CaseClause", "expressions": exps, "children": value };
2647
+ });
2648
+ var CaseClause$1 = $T($S(When, CaseExpressionList, NestedBlockExpressions, InsertBreak), function(value) {
2649
+ var exps = value[2];
2650
+ return { "type": "WhenClause", "expressions": exps, "children": value };
2651
+ });
2652
+ var CaseClause$2 = $T($S(Default, ImpliedColon, $C(NestedBlockExpressions, NoExpressions)), function(value) {
2653
+ var exps = value[2];
2654
+ return { "type": "DefaultClause", "expressions": exps, "children": value };
2655
+ });
2656
+ var CaseClause$3 = $TS($S(Else, ImpliedColon, NestedBlockExpressions), function($skip, $loc, $0, $1, $2, $3) {
2657
+ var exps = $3;
2658
+ $1.token = "default";
2659
+ return {
2660
+ type: "DefaultClause",
2661
+ expressions: exps,
2662
+ children: $0
2663
+ };
2664
+ });
2462
2665
  function CaseClause(state) {
2463
2666
  if (state.tokenize) {
2464
- return $TOKEN("CaseClause", state, CaseClause$0(state) || CaseClause$1(state) || CaseClause$2(state));
2667
+ return $TOKEN("CaseClause", state, CaseClause$0(state) || CaseClause$1(state) || CaseClause$2(state) || CaseClause$3(state));
2465
2668
  } else {
2466
- return CaseClause$0(state) || CaseClause$1(state) || CaseClause$2(state);
2669
+ return CaseClause$0(state) || CaseClause$1(state) || CaseClause$2(state) || CaseClause$3(state);
2467
2670
  }
2468
2671
  }
2469
2672
  var CaseExpressionList$0 = $TS($S($S($Q(_), ExpressionWithIndentedApplicationSuppressed, ImpliedColon), $Q($S(__, Comma, ExpressionWithIndentedApplicationSuppressed, ImpliedColon))), function($skip, $loc, $0, $1, $2) {
@@ -2485,6 +2688,18 @@ var require_parser = __commonJS({
2485
2688
  return CaseExpressionList$0(state);
2486
2689
  }
2487
2690
  }
2691
+ var NoExpressions$0 = $T($EXPECT($L1, fail, 'NoExpressions ""'), function(value) {
2692
+ return [];
2693
+ });
2694
+ function NoExpressions(state) {
2695
+ if (state.verbose)
2696
+ console.log("ENTER:", "NoExpressions");
2697
+ if (state.tokenize) {
2698
+ return $TOKEN("NoExpressions", state, NoExpressions$0(state));
2699
+ } else {
2700
+ return NoExpressions$0(state);
2701
+ }
2702
+ }
2488
2703
  var ImpliedColon$0 = $S(__, Colon);
2489
2704
  var ImpliedColon$1 = $TV($EXPECT($L1, fail, 'ImpliedColon ""'), function($skip, $loc, $0, $1) {
2490
2705
  return { $loc, token: ":" };
@@ -2497,12 +2712,20 @@ var require_parser = __commonJS({
2497
2712
  }
2498
2713
  }
2499
2714
  var TryStatement$0 = $TS($S(Try, BracedBlock, $E(CatchClause), $E(Finally)), function($skip, $loc, $0, $1, $2, $3, $4) {
2715
+ var t = $1;
2716
+ var b = $2;
2500
2717
  var c = $3;
2501
2718
  var f = $4;
2502
2719
  if (!c && !f) {
2503
- return [$1, $2, " catch {}"];
2720
+ return {
2721
+ type: "TryStatement",
2722
+ children: [t, b, " catch(e) {}"]
2723
+ };
2504
2724
  }
2505
- return [$1, $2, c, f];
2725
+ return {
2726
+ type: "TryStatement",
2727
+ children: [t, b, c, f]
2728
+ };
2506
2729
  });
2507
2730
  function TryStatement(state) {
2508
2731
  if (state.verbose)
@@ -2524,7 +2747,7 @@ var require_parser = __commonJS({
2524
2747
  }
2525
2748
  }
2526
2749
  var CatchBind$0 = $S(__, OpenParen, __, CatchParameter, __, CloseParen);
2527
- var CatchBind$1 = $S(__, InsertOpenParen, CatchParameter, InsertCloseParen);
2750
+ var CatchBind$1 = $S($N(EOS), $Q(TrailingComment), InsertOpenParen, CatchParameter, InsertCloseParen);
2528
2751
  function CatchBind(state) {
2529
2752
  if (state.tokenize) {
2530
2753
  return $TOKEN("CatchBind", state, CatchBind$0(state) || CatchBind$1(state));
@@ -2598,11 +2821,21 @@ var require_parser = __commonJS({
2598
2821
  return ExpressionStatement$0(state);
2599
2822
  }
2600
2823
  }
2601
- var KeywordStatement$0 = $S($EXPECT($L77, fail, 'KeywordStatement "break"'), NonIdContinue);
2602
- var KeywordStatement$1 = $S($EXPECT($L78, fail, 'KeywordStatement "continue"'), NonIdContinue);
2603
- var KeywordStatement$2 = $S($EXPECT($L79, fail, 'KeywordStatement "debugger"'), NonIdContinue);
2604
- var KeywordStatement$3 = $S(Return, $E(MaybeNestedExpression));
2605
- var KeywordStatement$4 = $S($EXPECT($L80, fail, 'KeywordStatement "throw"'), NonIdContinue, Expression);
2824
+ var KeywordStatement$0 = $T($S($EXPECT($L77, fail, 'KeywordStatement "break"'), NonIdContinue), function(value) {
2825
+ return { "type": "BreakStatement", "children": value };
2826
+ });
2827
+ var KeywordStatement$1 = $T($S($EXPECT($L78, fail, 'KeywordStatement "continue"'), NonIdContinue), function(value) {
2828
+ return { "type": "ContinueStatement", "children": value };
2829
+ });
2830
+ var KeywordStatement$2 = $T($S($EXPECT($L79, fail, 'KeywordStatement "debugger"'), NonIdContinue), function(value) {
2831
+ return { "type": "DebuggerStatement", "children": value };
2832
+ });
2833
+ var KeywordStatement$3 = $T($S(Return, $E(MaybeNestedExpression)), function(value) {
2834
+ return { "type": "ReturnStatement", "children": value };
2835
+ });
2836
+ var KeywordStatement$4 = $T($S(Throw, Expression), function(value) {
2837
+ return { "type": "ThrowStatement", "children": value };
2838
+ });
2606
2839
  function KeywordStatement(state) {
2607
2840
  if (state.tokenize) {
2608
2841
  return $TOKEN("KeywordStatement", state, KeywordStatement$0(state) || KeywordStatement$1(state) || KeywordStatement$2(state) || KeywordStatement$3(state) || KeywordStatement$4(state));
@@ -2619,7 +2852,7 @@ var require_parser = __commonJS({
2619
2852
  return MaybeNestedExpression$0(state) || MaybeNestedExpression$1(state);
2620
2853
  }
2621
2854
  }
2622
- var ImportDeclaration$0 = $T($S($EXPECT($L81, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
2855
+ var ImportDeclaration$0 = $T($S($EXPECT($L80, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
2623
2856
  return { "ts": true, "children": value };
2624
2857
  });
2625
2858
  var ImportDeclaration$1 = $S(Import, __, ImportClause, __, FromClause);
@@ -2757,7 +2990,7 @@ var require_parser = __commonJS({
2757
2990
  return ImportedBinding$0(state);
2758
2991
  }
2759
2992
  }
2760
- var ExportDeclaration$0 = $S(Export, __, $EXPECT($L82, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, AssignmentExpression));
2993
+ var ExportDeclaration$0 = $S(Export, __, $EXPECT($L81, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, AssignmentExpression));
2761
2994
  var ExportDeclaration$1 = $S(Export, __, ExportFromClause, __, FromClause);
2762
2995
  var ExportDeclaration$2 = $S(Export, __, $C(NamedExports, VariableStatement, Declaration));
2763
2996
  function ExportDeclaration(state) {
@@ -2817,7 +3050,9 @@ var require_parser = __commonJS({
2817
3050
  return HoistableDeclaration$0(state);
2818
3051
  }
2819
3052
  }
2820
- var LexicalDeclaration$0 = $S(LetOrConst, __, LexicalBinding, $Q($S(__, Comma, __, LexicalBinding)));
3053
+ var LexicalDeclaration$0 = $T($S(LetOrConst, __, LexicalBinding, $Q($S(__, Comma, __, LexicalBinding))), function(value) {
3054
+ return { "type": "VariableDeclaration", "children": value };
3055
+ });
2821
3056
  var LexicalDeclaration$1 = $TS($S(InsertConst, $C(BindingPattern, BindingIdentifier), $E(TypeSuffix), __, ConstAssignment, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2822
3057
  var c = $1;
2823
3058
  var ca = $5;
@@ -2825,7 +3060,10 @@ var require_parser = __commonJS({
2825
3060
  pos: ca.$loc.pos - 1,
2826
3061
  length: ca.$loc.length + 1
2827
3062
  };
2828
- return $0;
3063
+ return {
3064
+ type: "VariableDeclaration",
3065
+ children: $0
3066
+ };
2829
3067
  });
2830
3068
  function LexicalDeclaration(state) {
2831
3069
  if (state.tokenize) {
@@ -2834,7 +3072,7 @@ var require_parser = __commonJS({
2834
3072
  return LexicalDeclaration$0(state) || LexicalDeclaration$1(state);
2835
3073
  }
2836
3074
  }
2837
- var ConstAssignment$0 = $TV($EXPECT($L83, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
3075
+ var ConstAssignment$0 = $TV($EXPECT($L82, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
2838
3076
  return { $loc, token: "=" };
2839
3077
  });
2840
3078
  function ConstAssignment(state) {
@@ -2865,7 +3103,9 @@ var require_parser = __commonJS({
2865
3103
  return Initializer$0(state);
2866
3104
  }
2867
3105
  }
2868
- var VariableStatement$0 = $S(Var, __, VariableDeclarationList);
3106
+ var VariableStatement$0 = $T($S(Var, __, VariableDeclarationList), function(value) {
3107
+ return { "type": "VariableDeclaration", "children": value };
3108
+ });
2869
3109
  function VariableStatement(state) {
2870
3110
  if (state.verbose)
2871
3111
  console.log("ENTER:", "VariableStatement");
@@ -3246,7 +3486,7 @@ var require_parser = __commonJS({
3246
3486
  return MultiLineComment$0(state) || MultiLineComment$1(state);
3247
3487
  }
3248
3488
  }
3249
- var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L84, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L85, fail, 'JSMultiLineComment "*/"')), $EXPECT($R21, fail, "JSMultiLineComment /./"))), $EXPECT($L85, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3489
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L84, fail, 'JSMultiLineComment "*/"')), $EXPECT($R21, fail, "JSMultiLineComment /./"))), $EXPECT($L84, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3250
3490
  return { $loc, token: $1 };
3251
3491
  });
3252
3492
  function JSMultiLineComment(state) {
@@ -3270,7 +3510,7 @@ var require_parser = __commonJS({
3270
3510
  return CoffeeSingleLineComment$0(state);
3271
3511
  }
3272
3512
  }
3273
- var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L86, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L86, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L85, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R21, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L86, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3513
+ var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L84, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R21, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L85, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3274
3514
  return { $loc, token: `/*${$2}*/` };
3275
3515
  });
3276
3516
  function CoffeeMultiLineComment(state) {
@@ -3282,7 +3522,7 @@ var require_parser = __commonJS({
3282
3522
  return CoffeeMultiLineComment$0(state);
3283
3523
  }
3284
3524
  }
3285
- var InlineComment$0 = $TV($TEXT($S($EXPECT($L84, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L85, fail, 'InlineComment "*/"')), $EXPECT($R23, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L85, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3525
+ var InlineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L84, fail, 'InlineComment "*/"')), $EXPECT($R23, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L84, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3286
3526
  return { $loc, token: $1 };
3287
3527
  });
3288
3528
  function InlineComment(state) {
@@ -3391,7 +3631,7 @@ var require_parser = __commonJS({
3391
3631
  return Loc$0(state);
3392
3632
  }
3393
3633
  }
3394
- var As$0 = $TS($S($EXPECT($L87, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3634
+ var As$0 = $TS($S($EXPECT($L86, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3395
3635
  return { $loc, token: $1 };
3396
3636
  });
3397
3637
  function As(state) {
@@ -3403,7 +3643,7 @@ var require_parser = __commonJS({
3403
3643
  return As$0(state);
3404
3644
  }
3405
3645
  }
3406
- var Async$0 = $TV($EXPECT($L88, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3646
+ var Async$0 = $TV($EXPECT($L87, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3407
3647
  return { $loc, token: $1 };
3408
3648
  });
3409
3649
  function Async(state) {
@@ -3415,7 +3655,7 @@ var require_parser = __commonJS({
3415
3655
  return Async$0(state);
3416
3656
  }
3417
3657
  }
3418
- var Await$0 = $TS($S($EXPECT($L89, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3658
+ var Await$0 = $TS($S($EXPECT($L88, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3419
3659
  return { $loc, token: $1 };
3420
3660
  });
3421
3661
  function Await(state) {
@@ -3427,7 +3667,7 @@ var require_parser = __commonJS({
3427
3667
  return Await$0(state);
3428
3668
  }
3429
3669
  }
3430
- var Case$0 = $TS($S($EXPECT($L90, fail, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3670
+ var Case$0 = $TS($S($EXPECT($L89, fail, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3431
3671
  return { $loc, token: $1 };
3432
3672
  });
3433
3673
  function Case(state) {
@@ -3439,7 +3679,7 @@ var require_parser = __commonJS({
3439
3679
  return Case$0(state);
3440
3680
  }
3441
3681
  }
3442
- var Catch$0 = $TV($EXPECT($L91, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3682
+ var Catch$0 = $TV($EXPECT($L90, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3443
3683
  return { $loc, token: $1 };
3444
3684
  });
3445
3685
  function Catch(state) {
@@ -3451,7 +3691,7 @@ var require_parser = __commonJS({
3451
3691
  return Catch$0(state);
3452
3692
  }
3453
3693
  }
3454
- var Class$0 = $TV($EXPECT($L92, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3694
+ var Class$0 = $TV($EXPECT($L91, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3455
3695
  return { $loc, token: $1 };
3456
3696
  });
3457
3697
  function Class(state) {
@@ -3499,7 +3739,7 @@ var require_parser = __commonJS({
3499
3739
  return CloseParen$0(state);
3500
3740
  }
3501
3741
  }
3502
- var CoffeeSubstitutionStart$0 = $TV($EXPECT($L93, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
3742
+ var CoffeeSubstitutionStart$0 = $TV($EXPECT($L92, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
3503
3743
  return { $loc, token: "${" };
3504
3744
  });
3505
3745
  function CoffeeSubstitutionStart(state) {
@@ -3511,7 +3751,7 @@ var require_parser = __commonJS({
3511
3751
  return CoffeeSubstitutionStart$0(state);
3512
3752
  }
3513
3753
  }
3514
- var Colon$0 = $TV($EXPECT($L94, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3754
+ var Colon$0 = $TV($EXPECT($L93, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3515
3755
  return { $loc, token: $1 };
3516
3756
  });
3517
3757
  function Colon(state) {
@@ -3535,7 +3775,7 @@ var require_parser = __commonJS({
3535
3775
  return ConstructorShorthand$0(state);
3536
3776
  }
3537
3777
  }
3538
- var Default$0 = $TS($S($EXPECT($L82, fail, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3778
+ var Default$0 = $TS($S($EXPECT($L81, fail, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3539
3779
  return { $loc, token: $1 };
3540
3780
  });
3541
3781
  function Default(state) {
@@ -3547,7 +3787,7 @@ var require_parser = __commonJS({
3547
3787
  return Default$0(state);
3548
3788
  }
3549
3789
  }
3550
- var Dot$0 = $TV($EXPECT($L95, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3790
+ var Dot$0 = $TV($EXPECT($L94, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3551
3791
  return { $loc, token: $1 };
3552
3792
  });
3553
3793
  function Dot(state) {
@@ -3559,7 +3799,7 @@ var require_parser = __commonJS({
3559
3799
  return Dot$0(state);
3560
3800
  }
3561
3801
  }
3562
- var DoubleQuote$0 = $TV($EXPECT($L96, fail, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
3802
+ var DoubleQuote$0 = $TV($EXPECT($L95, fail, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
3563
3803
  return { $loc, token: $1 };
3564
3804
  });
3565
3805
  function DoubleQuote(state) {
@@ -3571,7 +3811,7 @@ var require_parser = __commonJS({
3571
3811
  return DoubleQuote$0(state);
3572
3812
  }
3573
3813
  }
3574
- var Else$0 = $TV($EXPECT($L97, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3814
+ var Else$0 = $TV($EXPECT($L96, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3575
3815
  return { $loc, token: $1 };
3576
3816
  });
3577
3817
  function Else(state) {
@@ -3595,7 +3835,7 @@ var require_parser = __commonJS({
3595
3835
  return Equals$0(state);
3596
3836
  }
3597
3837
  }
3598
- var Export$0 = $TS($S($EXPECT($L98, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3838
+ var Export$0 = $TS($S($EXPECT($L97, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3599
3839
  return { $loc, token: $1 };
3600
3840
  });
3601
3841
  function Export(state) {
@@ -3607,7 +3847,7 @@ var require_parser = __commonJS({
3607
3847
  return Export$0(state);
3608
3848
  }
3609
3849
  }
3610
- var For$0 = $TS($S($EXPECT($L99, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3850
+ var For$0 = $TS($S($EXPECT($L98, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3611
3851
  return { $loc, token: $1 };
3612
3852
  });
3613
3853
  function For(state) {
@@ -3619,7 +3859,7 @@ var require_parser = __commonJS({
3619
3859
  return For$0(state);
3620
3860
  }
3621
3861
  }
3622
- var From$0 = $TS($S($EXPECT($L100, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3862
+ var From$0 = $TS($S($EXPECT($L99, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3623
3863
  return { $loc, token: $1 };
3624
3864
  });
3625
3865
  function From(state) {
@@ -3631,7 +3871,7 @@ var require_parser = __commonJS({
3631
3871
  return From$0(state);
3632
3872
  }
3633
3873
  }
3634
- var Function$0 = $TV($EXPECT($L101, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
3874
+ var Function$0 = $TV($EXPECT($L100, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
3635
3875
  return { $loc, token: $1 };
3636
3876
  });
3637
3877
  function Function(state) {
@@ -3643,7 +3883,7 @@ var require_parser = __commonJS({
3643
3883
  return Function$0(state);
3644
3884
  }
3645
3885
  }
3646
- var GetOrSet$0 = $TS($S($C($EXPECT($L102, fail, 'GetOrSet "get"'), $EXPECT($L103, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3886
+ var GetOrSet$0 = $TS($S($C($EXPECT($L101, fail, 'GetOrSet "get"'), $EXPECT($L102, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3647
3887
  return { $loc, token: $1 };
3648
3888
  });
3649
3889
  function GetOrSet(state) {
@@ -3655,7 +3895,7 @@ var require_parser = __commonJS({
3655
3895
  return GetOrSet$0(state);
3656
3896
  }
3657
3897
  }
3658
- var If$0 = $TV($EXPECT($L104, fail, 'If "if"'), function($skip, $loc, $0, $1) {
3898
+ var If$0 = $TV($EXPECT($L103, fail, 'If "if"'), function($skip, $loc, $0, $1) {
3659
3899
  return { $loc, token: $1 };
3660
3900
  });
3661
3901
  function If(state) {
@@ -3691,7 +3931,7 @@ var require_parser = __commonJS({
3691
3931
  return In$0(state);
3692
3932
  }
3693
3933
  }
3694
- var LetOrConst$0 = $TV($C($EXPECT($L105, fail, 'LetOrConst "let"'), $EXPECT($L106, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
3934
+ var LetOrConst$0 = $TV($C($EXPECT($L104, fail, 'LetOrConst "let"'), $EXPECT($L105, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
3695
3935
  return { $loc, token: $1 };
3696
3936
  });
3697
3937
  function LetOrConst(state) {
@@ -3703,7 +3943,7 @@ var require_parser = __commonJS({
3703
3943
  return LetOrConst$0(state);
3704
3944
  }
3705
3945
  }
3706
- var Loop$0 = $TS($S($EXPECT($L107, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3946
+ var Loop$0 = $TS($S($EXPECT($L106, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3707
3947
  return { $loc, token: "while(true)" };
3708
3948
  });
3709
3949
  function Loop(state) {
@@ -3715,7 +3955,7 @@ var require_parser = __commonJS({
3715
3955
  return Loop$0(state);
3716
3956
  }
3717
3957
  }
3718
- var New$0 = $TV($EXPECT($L108, fail, 'New "new"'), function($skip, $loc, $0, $1) {
3958
+ var New$0 = $TV($EXPECT($L107, fail, 'New "new"'), function($skip, $loc, $0, $1) {
3719
3959
  return { $loc, token: $1 };
3720
3960
  });
3721
3961
  function New(state) {
@@ -3727,7 +3967,7 @@ var require_parser = __commonJS({
3727
3967
  return New$0(state);
3728
3968
  }
3729
3969
  }
3730
- var Of$0 = $TV($EXPECT($L109, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
3970
+ var Of$0 = $TV($EXPECT($L108, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
3731
3971
  return { $loc, token: $1 };
3732
3972
  });
3733
3973
  function Of(state) {
@@ -3739,7 +3979,7 @@ var require_parser = __commonJS({
3739
3979
  return Of$0(state);
3740
3980
  }
3741
3981
  }
3742
- var OpenBrace$0 = $TV($EXPECT($L110, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
3982
+ var OpenBrace$0 = $TV($EXPECT($L109, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
3743
3983
  return { $loc, token: $1 };
3744
3984
  });
3745
3985
  function OpenBrace(state) {
@@ -3751,7 +3991,7 @@ var require_parser = __commonJS({
3751
3991
  return OpenBrace$0(state);
3752
3992
  }
3753
3993
  }
3754
- var OpenBracket$0 = $TV($EXPECT($L111, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
3994
+ var OpenBracket$0 = $TV($EXPECT($L110, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
3755
3995
  return { $loc, token: $1 };
3756
3996
  });
3757
3997
  function OpenBracket(state) {
@@ -3763,7 +4003,7 @@ var require_parser = __commonJS({
3763
4003
  return OpenBracket$0(state);
3764
4004
  }
3765
4005
  }
3766
- var OpenParen$0 = $TV($EXPECT($L112, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
4006
+ var OpenParen$0 = $TV($EXPECT($L111, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
3767
4007
  return { $loc, token: $1 };
3768
4008
  });
3769
4009
  function OpenParen(state) {
@@ -3775,7 +4015,7 @@ var require_parser = __commonJS({
3775
4015
  return OpenParen$0(state);
3776
4016
  }
3777
4017
  }
3778
- var QuestionMark$0 = $TV($EXPECT($L113, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
4018
+ var QuestionMark$0 = $TV($EXPECT($L112, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
3779
4019
  return { $loc, token: $1 };
3780
4020
  });
3781
4021
  function QuestionMark(state) {
@@ -3787,7 +4027,7 @@ var require_parser = __commonJS({
3787
4027
  return QuestionMark$0(state);
3788
4028
  }
3789
4029
  }
3790
- var Return$0 = $TS($S($EXPECT($L114, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4030
+ var Return$0 = $TS($S($EXPECT($L113, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3791
4031
  return { $loc, token: $1 };
3792
4032
  });
3793
4033
  function Return(state) {
@@ -3811,7 +4051,7 @@ var require_parser = __commonJS({
3811
4051
  return Semicolon$0(state);
3812
4052
  }
3813
4053
  }
3814
- var SingleQuote$0 = $TV($EXPECT($L115, fail, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
4054
+ var SingleQuote$0 = $TV($EXPECT($L114, fail, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
3815
4055
  return { $loc, token: $1 };
3816
4056
  });
3817
4057
  function SingleQuote(state) {
@@ -3835,10 +4075,10 @@ var require_parser = __commonJS({
3835
4075
  return Star$0(state);
3836
4076
  }
3837
4077
  }
3838
- var Static$0 = $TV($EXPECT($L116, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
4078
+ var Static$0 = $TV($EXPECT($L115, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
3839
4079
  return { $loc, token: $1 };
3840
4080
  });
3841
- var Static$1 = $TS($S($EXPECT($L9, fail, 'Static "@"'), $N($EXPECT($L112, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
4081
+ var Static$1 = $TS($S($EXPECT($L9, fail, 'Static "@"'), $N($EXPECT($L111, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
3842
4082
  return { $loc, token: "static " };
3843
4083
  });
3844
4084
  function Static(state) {
@@ -3848,7 +4088,7 @@ var require_parser = __commonJS({
3848
4088
  return Static$0(state) || Static$1(state);
3849
4089
  }
3850
4090
  }
3851
- var SubstitutionStart$0 = $TV($EXPECT($L117, fail, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
4091
+ var SubstitutionStart$0 = $TV($EXPECT($L116, fail, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
3852
4092
  return { $loc, token: $1 };
3853
4093
  });
3854
4094
  function SubstitutionStart(state) {
@@ -3860,7 +4100,7 @@ var require_parser = __commonJS({
3860
4100
  return SubstitutionStart$0(state);
3861
4101
  }
3862
4102
  }
3863
- var Switch$0 = $TS($S($EXPECT($L118, fail, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4103
+ var Switch$0 = $TS($S($EXPECT($L117, fail, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3864
4104
  return { $loc, token: $1 };
3865
4105
  });
3866
4106
  function Switch(state) {
@@ -3872,7 +4112,7 @@ var require_parser = __commonJS({
3872
4112
  return Switch$0(state);
3873
4113
  }
3874
4114
  }
3875
- var Target$0 = $TV($EXPECT($L119, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
4115
+ var Target$0 = $TV($EXPECT($L118, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
3876
4116
  return { $loc, token: $1 };
3877
4117
  });
3878
4118
  function Target(state) {
@@ -3884,6 +4124,18 @@ var require_parser = __commonJS({
3884
4124
  return Target$0(state);
3885
4125
  }
3886
4126
  }
4127
+ var Throw$0 = $TS($S($EXPECT($L119, fail, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4128
+ return { $loc, token: $1 };
4129
+ });
4130
+ function Throw(state) {
4131
+ if (state.verbose)
4132
+ console.log("ENTER:", "Throw");
4133
+ if (state.tokenize) {
4134
+ return $TOKEN("Throw", state, Throw$0(state));
4135
+ } else {
4136
+ return Throw$0(state);
4137
+ }
4138
+ }
3887
4139
  var TripleDoubleQuote$0 = $TV($EXPECT($L120, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
3888
4140
  return { $loc, token: "`" };
3889
4141
  });
@@ -4243,7 +4495,7 @@ var require_parser = __commonJS({
4243
4495
  }
4244
4496
  }
4245
4497
  var InterfaceProperty$0 = $S($C(TypeIndexSignature, PropertyName), TypeSuffix, InterfacePropertyDelimiter);
4246
- var InterfaceProperty$1 = $S(MethodSignature, $E(TypeSuffix));
4498
+ var InterfaceProperty$1 = MethodSignature;
4247
4499
  function InterfaceProperty(state) {
4248
4500
  if (state.tokenize) {
4249
4501
  return $TOKEN("InterfaceProperty", state, InterfaceProperty$0(state) || InterfaceProperty$1(state));
@@ -4321,7 +4573,7 @@ var require_parser = __commonJS({
4321
4573
  }
4322
4574
  }
4323
4575
  var TypeSuffix$0 = $T($S($E(QuestionMark), __, Colon, Type), function(value) {
4324
- return { "ts": true, "children": value };
4576
+ return { "type": "TypeSuffix", "ts": true, "children": value };
4325
4577
  });
4326
4578
  function TypeSuffix(state) {
4327
4579
  if (state.verbose)
@@ -4332,8 +4584,16 @@ var require_parser = __commonJS({
4332
4584
  return TypeSuffix$0(state);
4333
4585
  }
4334
4586
  }
4335
- var ReturnTypeSuffix$0 = $T($S(__, Colon, $E($S(__, $EXPECT($L137, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function(value) {
4336
- return { "ts": true, "children": value };
4587
+ var ReturnTypeSuffix$0 = $TS($S(__, Colon, $E($S(__, $EXPECT($L137, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2, $3, $4) {
4588
+ if (!$3)
4589
+ $0.splice(2, 1);
4590
+ if ($1.length === 0)
4591
+ $0.shift();
4592
+ return {
4593
+ type: "ReturnTypeAnnotation",
4594
+ children: $0,
4595
+ ts: true
4596
+ };
4337
4597
  });
4338
4598
  function ReturnTypeSuffix(state) {
4339
4599
  if (state.verbose)
@@ -4344,7 +4604,11 @@ var require_parser = __commonJS({
4344
4604
  return ReturnTypeSuffix$0(state);
4345
4605
  }
4346
4606
  }
4347
- var TypePredicate$0 = $S(Type, $E($S(__, $EXPECT($L56, fail, 'TypePredicate "is"'), NonIdContinue, Type)));
4607
+ var TypePredicate$0 = $TS($S(Type, $E($S(__, $EXPECT($L56, fail, 'TypePredicate "is"'), NonIdContinue, Type))), function($skip, $loc, $0, $1, $2) {
4608
+ if (!$2)
4609
+ return $1;
4610
+ return $0;
4611
+ });
4348
4612
  function TypePredicate(state) {
4349
4613
  if (state.verbose)
4350
4614
  console.log("ENTER:", "TypePredicate");
@@ -4364,7 +4628,11 @@ var require_parser = __commonJS({
4364
4628
  return Type$0(state);
4365
4629
  }
4366
4630
  }
4367
- var TypeBinary$0 = $S(TypeUnary, $Q($S(__, TypeBinaryOp, __, TypeUnary)));
4631
+ var TypeBinary$0 = $TS($S(TypeUnary, $Q($S(__, TypeBinaryOp, __, TypeUnary))), function($skip, $loc, $0, $1, $2) {
4632
+ if ($2.length)
4633
+ return $0;
4634
+ return $1;
4635
+ });
4368
4636
  function TypeBinary(state) {
4369
4637
  if (state.verbose)
4370
4638
  console.log("ENTER:", "TypeBinary");
@@ -4374,7 +4642,13 @@ var require_parser = __commonJS({
4374
4642
  return TypeBinary$0(state);
4375
4643
  }
4376
4644
  }
4377
- var TypeUnary$0 = $S($Q($S(__, TypeUnaryOp, NonIdContinue)), TypePrimary, $Q(TypeUnarySuffix));
4645
+ var TypeUnary$0 = $TS($S($Q($S(__, TypeUnaryOp, NonIdContinue)), TypePrimary, $Q(TypeUnarySuffix)), function($skip, $loc, $0, $1, $2, $3) {
4646
+ if (!$3.length)
4647
+ $0.pop();
4648
+ if (!$1.length)
4649
+ $0.shift();
4650
+ return $0;
4651
+ });
4378
4652
  function TypeUnary(state) {
4379
4653
  if (state.verbose)
4380
4654
  console.log("ENTER:", "TypeUnary");
@@ -4417,8 +4691,8 @@ var require_parser = __commonJS({
4417
4691
  var TypePrimary$0 = InterfaceBlock;
4418
4692
  var TypePrimary$1 = $S(__, OpenParen, Type, __, CloseParen);
4419
4693
  var TypePrimary$2 = $S($Q(_), FunctionType);
4420
- var TypePrimary$3 = $S($Q(_), IdentifierName, $Q($S(Dot, IdentifierName)), $E(TypeArguments));
4421
- var TypePrimary$4 = $S($Q(_), TypeLiteral);
4694
+ var TypePrimary$3 = $S($Q(_), TypeLiteral);
4695
+ var TypePrimary$4 = $S($Q(_), IdentifierName, $Q($S(Dot, IdentifierName)), $E(TypeArguments));
4422
4696
  function TypePrimary(state) {
4423
4697
  if (state.tokenize) {
4424
4698
  return $TOKEN("TypePrimary", state, TypePrimary$0(state) || TypePrimary$1(state) || TypePrimary$2(state) || TypePrimary$3(state) || TypePrimary$4(state));
@@ -4426,7 +4700,11 @@ var require_parser = __commonJS({
4426
4700
  return TypePrimary$0(state) || TypePrimary$1(state) || TypePrimary$2(state) || TypePrimary$3(state) || TypePrimary$4(state);
4427
4701
  }
4428
4702
  }
4429
- var TypeConditional$0 = $S(TypeBinary, $E($S(__, $EXPECT($L6, fail, 'TypeConditional "extends"'), Type, $E($S(__, QuestionMark, Type, __, Colon, Type)))));
4703
+ var TypeConditional$0 = $TS($S(TypeBinary, $E($S(__, $EXPECT($L6, fail, 'TypeConditional "extends"'), Type, $E($S(__, QuestionMark, Type, __, Colon, Type))))), function($skip, $loc, $0, $1, $2) {
4704
+ if ($2)
4705
+ return $0;
4706
+ return $1;
4707
+ });
4430
4708
  function TypeConditional(state) {
4431
4709
  if (state.verbose)
4432
4710
  console.log("ENTER:", "TypeConditional");
@@ -4437,8 +4715,12 @@ var require_parser = __commonJS({
4437
4715
  }
4438
4716
  }
4439
4717
  var TypeLiteral$0 = Literal;
4440
- var TypeLiteral$1 = $EXPECT($L70, fail, 'TypeLiteral "void"');
4441
- var TypeLiteral$2 = $EXPECT($L140, fail, 'TypeLiteral "[]"');
4718
+ var TypeLiteral$1 = $TV($EXPECT($L70, fail, 'TypeLiteral "void"'), function($skip, $loc, $0, $1) {
4719
+ return { $loc, token: "void" };
4720
+ });
4721
+ var TypeLiteral$2 = $TV($EXPECT($L140, fail, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
4722
+ return { $loc, token: "[]" };
4723
+ });
4442
4724
  function TypeLiteral(state) {
4443
4725
  if (state.tokenize) {
4444
4726
  return $TOKEN("TypeLiteral", state, TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state));
@@ -4446,8 +4728,12 @@ var require_parser = __commonJS({
4446
4728
  return TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state);
4447
4729
  }
4448
4730
  }
4449
- var TypeBinaryOp$0 = $EXPECT($L68, fail, 'TypeBinaryOp "|"');
4450
- var TypeBinaryOp$1 = $EXPECT($L66, fail, 'TypeBinaryOp "&"');
4731
+ var TypeBinaryOp$0 = $TV($EXPECT($L68, fail, 'TypeBinaryOp "|"'), function($skip, $loc, $0, $1) {
4732
+ return { $loc, token: "|" };
4733
+ });
4734
+ var TypeBinaryOp$1 = $TV($EXPECT($L66, fail, 'TypeBinaryOp "&"'), function($skip, $loc, $0, $1) {
4735
+ return { $loc, token: "&" };
4736
+ });
4451
4737
  function TypeBinaryOp(state) {
4452
4738
  if (state.tokenize) {
4453
4739
  return $TOKEN("TypeBinaryOp", state, TypeBinaryOp$0(state) || TypeBinaryOp$1(state));
@@ -4721,6 +5007,7 @@ var require_parser = __commonJS({
4721
5007
  module2.indentLevels = [0];
4722
5008
  module2.verbose = false;
4723
5009
  module2.coffeeCompat = false;
5010
+ module2.implicitReturns = true;
4724
5011
  });
4725
5012
  function Reset(state) {
4726
5013
  if (state.verbose)
@@ -4737,6 +5024,79 @@ var require_parser = __commonJS({
4737
5024
  const compatRe = /use coffee-compat/;
4738
5025
  module2.coffeeCompat = directives.some((d) => d[1].token?.match(compatRe));
4739
5026
  }
5027
+ function hasReturnStatement(node) {
5028
+ if (!node)
5029
+ return false;
5030
+ if (Array.isArray(node))
5031
+ return node.some(hasReturnStatement);
5032
+ if (node.type === "ReturnStatement")
5033
+ return true;
5034
+ if (node.type === "FunctionExpression")
5035
+ return false;
5036
+ if (node.children)
5037
+ return hasReturnStatement(node.children);
5038
+ return false;
5039
+ }
5040
+ function insertReturn(node) {
5041
+ if (!node)
5042
+ return;
5043
+ switch (node.type) {
5044
+ case "AssignmentExpression":
5045
+ node.children.unshift("return ");
5046
+ return;
5047
+ case "BlockStatement":
5048
+ insertReturn(node.expressions[node.expressions.length - 1]);
5049
+ return;
5050
+ case "CaseBlock":
5051
+ node.clauses.forEach((clause) => {
5052
+ insertReturn(clause);
5053
+ });
5054
+ return;
5055
+ case "CaseClause":
5056
+ return;
5057
+ case "WhenClause":
5058
+ node.children.pop();
5059
+ insertReturn(node.expressions[node.expressions.length - 1]);
5060
+ return;
5061
+ case "DefaultClause":
5062
+ insertReturn(node.expressions[node.expressions.length - 1]);
5063
+ return;
5064
+ }
5065
+ if (!Array.isArray(node))
5066
+ return;
5067
+ const [, exp] = node;
5068
+ if (!exp)
5069
+ return;
5070
+ switch (exp.type) {
5071
+ case "BreakStatement":
5072
+ case "ContinueStatement":
5073
+ case "DebuggerStatement":
5074
+ case "EmptyStatement":
5075
+ case "IterationStatement":
5076
+ case "ThrowStatement":
5077
+ case "VariableDeclaration":
5078
+ return;
5079
+ case "IfStatement":
5080
+ insertReturn(exp.children[2]);
5081
+ if (exp.children[3])
5082
+ insertReturn(exp.children[3][2]);
5083
+ return;
5084
+ case "SwitchStatement":
5085
+ insertReturn(exp.children[2]);
5086
+ return;
5087
+ case "TryStatement":
5088
+ insertReturn(exp.children[1]);
5089
+ insertReturn(exp.children[2][3]);
5090
+ return;
5091
+ }
5092
+ node.splice(1, 0, "return ");
5093
+ }
5094
+ module2.addImplicitReturns = function(block) {
5095
+ if (hasReturnStatement(block))
5096
+ return block;
5097
+ insertReturn(block);
5098
+ return block;
5099
+ };
4740
5100
  module2.parsePosition = function() {
4741
5101
  let s = Error().stack.split(/\n at /);
4742
5102
  s.shift();
@@ -4744,6 +5104,25 @@ var require_parser = __commonJS({
4744
5104
  s = s.slice(1, s.indexOf("Program") + 1);
4745
5105
  return s;
4746
5106
  };
5107
+ module2.prune = function(node) {
5108
+ if (node === null || node === void 0)
5109
+ return;
5110
+ if (node.length === 0)
5111
+ return;
5112
+ if (Array.isArray(node)) {
5113
+ const a = node.map((n) => module2.prune(n)).filter((n) => !!n);
5114
+ if (a.length > 1)
5115
+ return a;
5116
+ if (a.length === 1)
5117
+ return a[0];
5118
+ return;
5119
+ }
5120
+ if (node.children != null) {
5121
+ node.children = module2.prune(node.children);
5122
+ return node;
5123
+ }
5124
+ return node;
5125
+ };
4747
5126
  module2.insertTrimmingSpace = function(spacing, c) {
4748
5127
  let target = spacing;
4749
5128
  while (Array.isArray(target)) {
@@ -5013,7 +5392,7 @@ var require_generate = __commonJS({
5013
5392
  return;
5014
5393
  }
5015
5394
  if (node.children != null) {
5016
- node.children = prune2(node.children);
5395
+ node.children = prune2(node.children) || [];
5017
5396
  return node;
5018
5397
  }
5019
5398
  return node;