@danielx/civet 0.4.7 → 0.4.9

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,
@@ -586,9 +588,8 @@ var require_parser = __commonJS({
586
588
  TripleDoubleStringCharacters,
587
589
  TripleSingleStringCharacters,
588
590
  CoffeeStringSubstitution,
589
- CoffeeCompat,
590
- CoffeeCompatDoubleQuotedString,
591
- CoffeeCompatDoubleQuotedStringCharacters,
591
+ CoffeeInterpolatedDoubleQuotedString,
592
+ CoffeeDoubleQuotedStringCharacters,
592
593
  RegularExpressionLiteral,
593
594
  RegularExpressionBody,
594
595
  RegExpCharacter,
@@ -716,6 +717,10 @@ var require_parser = __commonJS({
716
717
  TypeConstraint,
717
718
  TypeParameterDelimiter,
718
719
  Shebang,
720
+ CivetPrologue,
721
+ CivetPrologueContent,
722
+ CivetOption,
723
+ UnknownPrologue,
719
724
  DirectivePrologue,
720
725
  EOS,
721
726
  EOL,
@@ -732,6 +737,8 @@ var require_parser = __commonJS({
732
737
  InsertSpace,
733
738
  InsertDot,
734
739
  InsertBreak,
740
+ CoffeeCommentEnabled,
741
+ CoffeeInterpolationEnabled,
735
742
  Reset,
736
743
  Init,
737
744
  Indent,
@@ -883,8 +890,9 @@ var require_parser = __commonJS({
883
890
  var $L138 = $L("keyof");
884
891
  var $L139 = $L("infer");
885
892
  var $L140 = $L("[]");
886
- var $L141 = $L(" ");
887
- var $L142 = $L(" ");
893
+ var $L141 = $L("civet");
894
+ var $L142 = $L(" ");
895
+ var $L143 = $L(" ");
888
896
  var $R0 = $R(new RegExp("(of)(?!\\p{ID_Continue})", "suy"));
889
897
  var $R1 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
890
898
  var $R2 = $R(new RegExp("[!~+-]", "suy"));
@@ -921,8 +929,10 @@ var require_parser = __commonJS({
921
929
  var $R33 = $R(new RegExp("[+-]", "suy"));
922
930
  var $R34 = $R(new RegExp("#![^\\r\\n]*", "suy"));
923
931
  var $R35 = $R(new RegExp("[\\t ]*", "suy"));
924
- var $R36 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
925
- var $R37 = $R(new RegExp("$", "suy"));
932
+ var $R36 = $R(new RegExp("[\\s]*", "suy"));
933
+ var $R37 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)", "suy"));
934
+ var $R38 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
935
+ var $R39 = $R(new RegExp("$", "suy"));
926
936
  var Program$0 = $S(Reset, Init, __, $Q(TopLevelStatement), __);
927
937
  function Program(state) {
928
938
  if (state.verbose)
@@ -1178,7 +1188,19 @@ var require_parser = __commonJS({
1178
1188
  }
1179
1189
  }
1180
1190
  var ArrowFunction$0 = ThinArrowFunction;
1181
- var ArrowFunction$1 = $S(Parameters, $E(ReturnTypeSuffix), FatArrow, FatArrowBody);
1191
+ var ArrowFunction$1 = $TS($S(Parameters, $E(ReturnTypeSuffix), FatArrow, FatArrowBody), function($skip, $loc, $0, $1, $2, $3, $4) {
1192
+ var suffix = $2;
1193
+ var expOrBlock = $4;
1194
+ const isVoid = suffix?.children?.[1]?.[0]?.[1]?.token === "void";
1195
+ const isBlock = expOrBlock.type === "BlockStatement";
1196
+ if (module2.config.implicitReturns && !isVoid && isBlock) {
1197
+ module2.addImplicitReturns(expOrBlock);
1198
+ }
1199
+ return {
1200
+ type: "FunctionExpression",
1201
+ children: $0
1202
+ };
1203
+ });
1182
1204
  function ArrowFunction(state) {
1183
1205
  if (state.tokenize) {
1184
1206
  return $TOKEN("ArrowFunction", state, ArrowFunction$0(state) || ArrowFunction$1(state));
@@ -1201,11 +1223,17 @@ var require_parser = __commonJS({
1201
1223
  return FatArrow$0(state);
1202
1224
  }
1203
1225
  }
1204
- var FatArrowBody$0 = $S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace);
1205
- var FatArrowBody$1 = $S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace);
1226
+ var FatArrowBody$0 = $T($S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace), function(value) {
1227
+ var exps = value[3];
1228
+ return { "type": "BlockStatement", "expressions": exps, "children": value };
1229
+ });
1230
+ var FatArrowBody$1 = $T($S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace), function(value) {
1231
+ var exps = value[2];
1232
+ return { "type": "BlockStatement", "expressions": exps, "children": value };
1233
+ });
1206
1234
  var FatArrowBody$2 = AssignmentExpression;
1207
1235
  var FatArrowBody$3 = $S(__, AssignmentExpression);
1208
- var FatArrowBody$4 = $S(InsertOpenBrace, InsertCloseBrace);
1236
+ var FatArrowBody$4 = EmptyBlock;
1209
1237
  function FatArrowBody(state) {
1210
1238
  if (state.tokenize) {
1211
1239
  return $TOKEN("FatArrowBody", state, FatArrowBody$0(state) || FatArrowBody$1(state) || FatArrowBody$2(state) || FatArrowBody$3(state) || FatArrowBody$4(state));
@@ -1521,7 +1549,7 @@ var require_parser = __commonJS({
1521
1549
  return MetaProperty$0(state) || MetaProperty$1(state);
1522
1550
  }
1523
1551
  }
1524
- var Parameters$0 = $S($E(TypeParameters), OpenParen, $Q(ParameterElement), __, CloseParen);
1552
+ var Parameters$0 = NonEmptyParameters;
1525
1553
  var Parameters$1 = $TV($EXPECT($L1, fail, 'Parameters ""'), function($skip, $loc, $0, $1) {
1526
1554
  return { $loc, token: "()" };
1527
1555
  });
@@ -1532,6 +1560,16 @@ var require_parser = __commonJS({
1532
1560
  return Parameters$0(state) || Parameters$1(state);
1533
1561
  }
1534
1562
  }
1563
+ var NonEmptyParameters$0 = $S($E(TypeParameters), OpenParen, $Q(ParameterElement), __, CloseParen);
1564
+ function NonEmptyParameters(state) {
1565
+ if (state.verbose)
1566
+ console.log("ENTER:", "NonEmptyParameters");
1567
+ if (state.tokenize) {
1568
+ return $TOKEN("NonEmptyParameters", state, NonEmptyParameters$0(state));
1569
+ } else {
1570
+ return NonEmptyParameters$0(state);
1571
+ }
1572
+ }
1535
1573
  var ParameterElement$0 = $S(__, $C(BindingIdentifier, BindingPattern), $E(TypeSuffix), $E(Initializer), ParameterElementDelimiter);
1536
1574
  function ParameterElement(state) {
1537
1575
  if (state.verbose)
@@ -1700,8 +1738,17 @@ var require_parser = __commonJS({
1700
1738
  }
1701
1739
  }
1702
1740
  var FunctionExpression$0 = ThinArrowFunction;
1703
- var FunctionExpression$1 = $T($S($E($S(Async, __)), Function, $E($S(Star, __)), $E(BindingIdentifier), __, Parameters, $E(ReturnTypeSuffix), BracedBlock), function(value) {
1704
- return { "type": "FunctionExpression", "children": value };
1741
+ 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) {
1742
+ var suffix = $7;
1743
+ var block = $8;
1744
+ const isVoid = suffix?.children?.[1]?.[0]?.[1]?.token === "void";
1745
+ if (module2.config.implicitReturns && !isVoid) {
1746
+ module2.addImplicitReturns(block);
1747
+ }
1748
+ return {
1749
+ type: "FunctionExpression",
1750
+ children: $0
1751
+ };
1705
1752
  });
1706
1753
  function FunctionExpression(state) {
1707
1754
  if (state.tokenize) {
@@ -1715,7 +1762,8 @@ var require_parser = __commonJS({
1715
1762
  var suffix = $2;
1716
1763
  var arrow = $4;
1717
1764
  var block = $5;
1718
- if (module2.implicitReturns && suffix?.children[3] !== "void") {
1765
+ const isVoid = suffix?.children?.[1]?.[0]?.[1]?.token === "void";
1766
+ if (module2.config.implicitReturns && !isVoid) {
1719
1767
  block = module2.addImplicitReturns(block);
1720
1768
  }
1721
1769
  return {
@@ -1767,9 +1815,7 @@ var require_parser = __commonJS({
1767
1815
  }
1768
1816
  }
1769
1817
  var BracedOrEmptyBlock$0 = BracedBlock;
1770
- var BracedOrEmptyBlock$1 = $T($S(InsertOpenBrace, InsertCloseBrace), function(value) {
1771
- return { "type": "BlockStatement", "expressions": [], "children": value };
1772
- });
1818
+ var BracedOrEmptyBlock$1 = EmptyBlock;
1773
1819
  function BracedOrEmptyBlock(state) {
1774
1820
  if (state.tokenize) {
1775
1821
  return $TOKEN("BracedOrEmptyBlock", state, BracedOrEmptyBlock$0(state) || BracedOrEmptyBlock$1(state));
@@ -1777,6 +1823,18 @@ var require_parser = __commonJS({
1777
1823
  return BracedOrEmptyBlock$0(state) || BracedOrEmptyBlock$1(state);
1778
1824
  }
1779
1825
  }
1826
+ var EmptyBlock$0 = $T($S(InsertOpenBrace, InsertCloseBrace), function(value) {
1827
+ return { "type": "BlockStatement", "expressions": [], "children": value };
1828
+ });
1829
+ function EmptyBlock(state) {
1830
+ if (state.verbose)
1831
+ console.log("ENTER:", "EmptyBlock");
1832
+ if (state.tokenize) {
1833
+ return $TOKEN("EmptyBlock", state, EmptyBlock$0(state));
1834
+ } else {
1835
+ return EmptyBlock$0(state);
1836
+ }
1837
+ }
1780
1838
  var BracedBlock$0 = $T($S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace), function(value) {
1781
1839
  var exps = value[3];
1782
1840
  return { "type": "BlockStatement", "expressions": exps, "children": value };
@@ -2100,7 +2158,17 @@ var require_parser = __commonJS({
2100
2158
  return PropertyName$0(state) || PropertyName$1(state) || PropertyName$2(state) || PropertyName$3(state);
2101
2159
  }
2102
2160
  }
2103
- var MethodDefinition$0 = $S(MethodSignature, BracedBlock);
2161
+ var MethodDefinition$0 = $TS($S(MethodSignature, BracedBlock), function($skip, $loc, $0, $1, $2) {
2162
+ var sig = $1;
2163
+ var block = $2;
2164
+ const isConstructor = sig.name === "constructor";
2165
+ const isVoid = sig.returnType === "void";
2166
+ const isSet = sig.modifier === "set";
2167
+ if (module2.config.implicitReturns && !isConstructor && !isSet && !isVoid) {
2168
+ block = module2.addImplicitReturns(block);
2169
+ }
2170
+ return $0;
2171
+ });
2104
2172
  function MethodDefinition(state) {
2105
2173
  if (state.verbose)
2106
2174
  console.log("ENTER:", "MethodDefinition");
@@ -2121,8 +2189,26 @@ var require_parser = __commonJS({
2121
2189
  return MethodModifier$0(state) || MethodModifier$1(state) || MethodModifier$2(state) || MethodModifier$3(state);
2122
2190
  }
2123
2191
  }
2124
- var MethodSignature$0 = $S(ConstructorShorthand, Parameters);
2125
- var MethodSignature$1 = $S($E(MethodModifier), ClassElementName, $Q(_), Parameters);
2192
+ var MethodSignature$0 = $TS($S(ConstructorShorthand, Parameters), function($skip, $loc, $0, $1, $2) {
2193
+ return {
2194
+ type: "MethodSignature",
2195
+ children: $0,
2196
+ name: $1.token,
2197
+ returnType: void 0
2198
+ };
2199
+ });
2200
+ var MethodSignature$1 = $TS($S($E(MethodModifier), ClassElementName, $Q(_), NonEmptyParameters, $E(ReturnTypeSuffix)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
2201
+ var name = $2;
2202
+ var suffix = $5;
2203
+ name = name.token.match(/^(?:"|')/) ? name.token.slice(1, -1) : name.token;
2204
+ return {
2205
+ type: "MethodSignature",
2206
+ children: $0,
2207
+ name,
2208
+ modifier: $1?.[0]?.token,
2209
+ returnType: void 0
2210
+ };
2211
+ });
2126
2212
  function MethodSignature(state) {
2127
2213
  if (state.tokenize) {
2128
2214
  return $TOKEN("MethodSignature", state, MethodSignature$0(state) || MethodSignature$1(state));
@@ -2139,7 +2225,12 @@ var require_parser = __commonJS({
2139
2225
  return ClassElementName$0(state) || ClassElementName$1(state);
2140
2226
  }
2141
2227
  }
2142
- var PrivateIdentifier$0 = $S($EXPECT($L8, fail, 'PrivateIdentifier "#"'), IdentifierName);
2228
+ var PrivateIdentifier$0 = $TV($TEXT($S($EXPECT($L8, fail, 'PrivateIdentifier "#"'), IdentifierName)), function($skip, $loc, $0, $1) {
2229
+ return {
2230
+ $loc,
2231
+ token: $1
2232
+ };
2233
+ });
2143
2234
  function PrivateIdentifier(state) {
2144
2235
  if (state.verbose)
2145
2236
  console.log("ENTER:", "PrivateIdentifier");
@@ -2214,7 +2305,7 @@ var require_parser = __commonJS({
2214
2305
  var BinaryOpSymbol$12 = $EXPECT($L53, fail, 'BinaryOpSymbol ">"');
2215
2306
  var BinaryOpSymbol$13 = $EXPECT($L54, fail, 'BinaryOpSymbol "!=="');
2216
2307
  var BinaryOpSymbol$14 = $TV($EXPECT($L55, fail, 'BinaryOpSymbol "!="'), function($skip, $loc, $0, $1) {
2217
- if (module2.coffeeCompat)
2308
+ if (module2.config.coffeeEq)
2218
2309
  return "!==";
2219
2310
  return $1;
2220
2311
  });
@@ -2223,7 +2314,7 @@ var require_parser = __commonJS({
2223
2314
  });
2224
2315
  var BinaryOpSymbol$16 = $EXPECT($L57, fail, 'BinaryOpSymbol "==="');
2225
2316
  var BinaryOpSymbol$17 = $TV($EXPECT($L58, fail, 'BinaryOpSymbol "=="'), function($skip, $loc, $0, $1) {
2226
- if (module2.coffeeCompat)
2317
+ if (module2.config.coffeeEq)
2227
2318
  return "===";
2228
2319
  return $1;
2229
2320
  });
@@ -2344,7 +2435,10 @@ var require_parser = __commonJS({
2344
2435
  return EmptyStatement$0(state);
2345
2436
  }
2346
2437
  }
2347
- var BlockStatement$0 = $S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace);
2438
+ var BlockStatement$0 = $T($S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace), function(value) {
2439
+ var exps = value[3];
2440
+ return { "type": "BlockStatement", "children": value, "expressions": exps };
2441
+ });
2348
2442
  function BlockStatement(state) {
2349
2443
  if (state.verbose)
2350
2444
  console.log("ENTER:", "BlockStatement");
@@ -3134,7 +3228,7 @@ var require_parser = __commonJS({
3134
3228
  var e = $3;
3135
3229
  return [s, module2.dedentBlockString(str), e];
3136
3230
  });
3137
- var StringLiteral$2 = CoffeeCompatDoubleQuotedString;
3231
+ var StringLiteral$2 = CoffeeInterpolatedDoubleQuotedString;
3138
3232
  var StringLiteral$3 = BasicStringLiteral;
3139
3233
  function StringLiteral(state) {
3140
3234
  if (state.tokenize) {
@@ -3222,21 +3316,7 @@ var require_parser = __commonJS({
3222
3316
  return CoffeeStringSubstitution$0(state);
3223
3317
  }
3224
3318
  }
3225
- var CoffeeCompat$0 = $TV($EXPECT($L1, fail, 'CoffeeCompat ""'), function($skip, $loc, $0, $1) {
3226
- if (module2.coffeeCompat)
3227
- return;
3228
- return $skip;
3229
- });
3230
- function CoffeeCompat(state) {
3231
- if (state.verbose)
3232
- console.log("ENTER:", "CoffeeCompat");
3233
- if (state.tokenize) {
3234
- return $TOKEN("CoffeeCompat", state, CoffeeCompat$0(state));
3235
- } else {
3236
- return CoffeeCompat$0(state);
3237
- }
3238
- }
3239
- var CoffeeCompatDoubleQuotedString$0 = $TS($S(CoffeeCompat, DoubleQuote, $Q($C(CoffeeCompatDoubleQuotedStringCharacters, CoffeeStringSubstitution)), DoubleQuote), function($skip, $loc, $0, $1, $2, $3, $4) {
3319
+ var CoffeeInterpolatedDoubleQuotedString$0 = $TS($S(CoffeeInterpolationEnabled, DoubleQuote, $Q($C(CoffeeDoubleQuotedStringCharacters, CoffeeStringSubstitution)), DoubleQuote), function($skip, $loc, $0, $1, $2, $3, $4) {
3240
3320
  var s = $2;
3241
3321
  var parts = $3;
3242
3322
  var e = $4;
@@ -3256,25 +3336,25 @@ var require_parser = __commonJS({
3256
3336
  s.token = e.token = "`";
3257
3337
  return [s, parts, e];
3258
3338
  });
3259
- function CoffeeCompatDoubleQuotedString(state) {
3339
+ function CoffeeInterpolatedDoubleQuotedString(state) {
3260
3340
  if (state.verbose)
3261
- console.log("ENTER:", "CoffeeCompatDoubleQuotedString");
3341
+ console.log("ENTER:", "CoffeeInterpolatedDoubleQuotedString");
3262
3342
  if (state.tokenize) {
3263
- return $TOKEN("CoffeeCompatDoubleQuotedString", state, CoffeeCompatDoubleQuotedString$0(state));
3343
+ return $TOKEN("CoffeeInterpolatedDoubleQuotedString", state, CoffeeInterpolatedDoubleQuotedString$0(state));
3264
3344
  } else {
3265
- return CoffeeCompatDoubleQuotedString$0(state);
3345
+ return CoffeeInterpolatedDoubleQuotedString$0(state);
3266
3346
  }
3267
3347
  }
3268
- var CoffeeCompatDoubleQuotedStringCharacters$0 = $TR($EXPECT($R13, fail, 'CoffeeCompatDoubleQuotedStringCharacters /(?:\\\\.|#(?!\\{)|[^"#])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3348
+ var CoffeeDoubleQuotedStringCharacters$0 = $TR($EXPECT($R13, fail, 'CoffeeDoubleQuotedStringCharacters /(?:\\\\.|#(?!\\{)|[^"#])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3269
3349
  return { $loc, token: $0 };
3270
3350
  });
3271
- function CoffeeCompatDoubleQuotedStringCharacters(state) {
3351
+ function CoffeeDoubleQuotedStringCharacters(state) {
3272
3352
  if (state.verbose)
3273
- console.log("ENTER:", "CoffeeCompatDoubleQuotedStringCharacters");
3353
+ console.log("ENTER:", "CoffeeDoubleQuotedStringCharacters");
3274
3354
  if (state.tokenize) {
3275
- return $TOKEN("CoffeeCompatDoubleQuotedStringCharacters", state, CoffeeCompatDoubleQuotedStringCharacters$0(state));
3355
+ return $TOKEN("CoffeeDoubleQuotedStringCharacters", state, CoffeeDoubleQuotedStringCharacters$0(state));
3276
3356
  } else {
3277
- return CoffeeCompatDoubleQuotedStringCharacters$0(state);
3357
+ return CoffeeDoubleQuotedStringCharacters$0(state);
3278
3358
  }
3279
3359
  }
3280
3360
  var RegularExpressionLiteral$0 = $TV($TEXT($S($EXPECT($L44, fail, 'RegularExpressionLiteral "/"'), RegularExpressionBody, $EXPECT($L44, fail, 'RegularExpressionLiteral "/"'), RegularExpressionFlags)), function($skip, $loc, $0, $1) {
@@ -3386,7 +3466,7 @@ var require_parser = __commonJS({
3386
3466
  var SingleLineComment$0 = $TR($EXPECT($R20, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3387
3467
  return { $loc, token: $0 };
3388
3468
  });
3389
- var SingleLineComment$1 = $S(CoffeeCompat, CoffeeSingleLineComment);
3469
+ var SingleLineComment$1 = $S(CoffeeCommentEnabled, CoffeeSingleLineComment);
3390
3470
  function SingleLineComment(state) {
3391
3471
  if (state.tokenize) {
3392
3472
  return $TOKEN("SingleLineComment", state, SingleLineComment$0(state) || SingleLineComment$1(state));
@@ -4412,7 +4492,7 @@ var require_parser = __commonJS({
4412
4492
  }
4413
4493
  }
4414
4494
  var InterfaceProperty$0 = $S($C(TypeIndexSignature, PropertyName), TypeSuffix, InterfacePropertyDelimiter);
4415
- var InterfaceProperty$1 = $S(MethodSignature, $E(TypeSuffix));
4495
+ var InterfaceProperty$1 = MethodSignature;
4416
4496
  function InterfaceProperty(state) {
4417
4497
  if (state.tokenize) {
4418
4498
  return $TOKEN("InterfaceProperty", state, InterfaceProperty$0(state) || InterfaceProperty$1(state));
@@ -4490,7 +4570,7 @@ var require_parser = __commonJS({
4490
4570
  }
4491
4571
  }
4492
4572
  var TypeSuffix$0 = $T($S($E(QuestionMark), __, Colon, Type), function(value) {
4493
- return { "ts": true, "children": value };
4573
+ return { "type": "TypeSuffix", "ts": true, "children": value };
4494
4574
  });
4495
4575
  function TypeSuffix(state) {
4496
4576
  if (state.verbose)
@@ -4501,8 +4581,16 @@ var require_parser = __commonJS({
4501
4581
  return TypeSuffix$0(state);
4502
4582
  }
4503
4583
  }
4504
- var ReturnTypeSuffix$0 = $T($S(__, Colon, $E($S(__, $EXPECT($L137, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function(value) {
4505
- return { "ts": true, "children": value };
4584
+ var ReturnTypeSuffix$0 = $TS($S(__, Colon, $E($S(__, $EXPECT($L137, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2, $3, $4) {
4585
+ if (!$3)
4586
+ $0.splice(2, 1);
4587
+ if ($1.length === 0)
4588
+ $0.shift();
4589
+ return {
4590
+ type: "ReturnTypeAnnotation",
4591
+ children: $0,
4592
+ ts: true
4593
+ };
4506
4594
  });
4507
4595
  function ReturnTypeSuffix(state) {
4508
4596
  if (state.verbose)
@@ -4513,7 +4601,11 @@ var require_parser = __commonJS({
4513
4601
  return ReturnTypeSuffix$0(state);
4514
4602
  }
4515
4603
  }
4516
- var TypePredicate$0 = $S(Type, $E($S(__, $EXPECT($L56, fail, 'TypePredicate "is"'), NonIdContinue, Type)));
4604
+ var TypePredicate$0 = $TS($S(Type, $E($S(__, $EXPECT($L56, fail, 'TypePredicate "is"'), NonIdContinue, Type))), function($skip, $loc, $0, $1, $2) {
4605
+ if (!$2)
4606
+ return $1;
4607
+ return $0;
4608
+ });
4517
4609
  function TypePredicate(state) {
4518
4610
  if (state.verbose)
4519
4611
  console.log("ENTER:", "TypePredicate");
@@ -4533,7 +4625,11 @@ var require_parser = __commonJS({
4533
4625
  return Type$0(state);
4534
4626
  }
4535
4627
  }
4536
- var TypeBinary$0 = $S(TypeUnary, $Q($S(__, TypeBinaryOp, __, TypeUnary)));
4628
+ var TypeBinary$0 = $TS($S(TypeUnary, $Q($S(__, TypeBinaryOp, __, TypeUnary))), function($skip, $loc, $0, $1, $2) {
4629
+ if ($2.length)
4630
+ return $0;
4631
+ return $1;
4632
+ });
4537
4633
  function TypeBinary(state) {
4538
4634
  if (state.verbose)
4539
4635
  console.log("ENTER:", "TypeBinary");
@@ -4543,7 +4639,13 @@ var require_parser = __commonJS({
4543
4639
  return TypeBinary$0(state);
4544
4640
  }
4545
4641
  }
4546
- var TypeUnary$0 = $S($Q($S(__, TypeUnaryOp, NonIdContinue)), TypePrimary, $Q(TypeUnarySuffix));
4642
+ var TypeUnary$0 = $TS($S($Q($S(__, TypeUnaryOp, NonIdContinue)), TypePrimary, $Q(TypeUnarySuffix)), function($skip, $loc, $0, $1, $2, $3) {
4643
+ if (!$3.length)
4644
+ $0.pop();
4645
+ if (!$1.length)
4646
+ $0.shift();
4647
+ return $0;
4648
+ });
4547
4649
  function TypeUnary(state) {
4548
4650
  if (state.verbose)
4549
4651
  console.log("ENTER:", "TypeUnary");
@@ -4586,8 +4688,8 @@ var require_parser = __commonJS({
4586
4688
  var TypePrimary$0 = InterfaceBlock;
4587
4689
  var TypePrimary$1 = $S(__, OpenParen, Type, __, CloseParen);
4588
4690
  var TypePrimary$2 = $S($Q(_), FunctionType);
4589
- var TypePrimary$3 = $S($Q(_), IdentifierName, $Q($S(Dot, IdentifierName)), $E(TypeArguments));
4590
- var TypePrimary$4 = $S($Q(_), TypeLiteral);
4691
+ var TypePrimary$3 = $S($Q(_), TypeLiteral);
4692
+ var TypePrimary$4 = $S($Q(_), IdentifierName, $Q($S(Dot, IdentifierName)), $E(TypeArguments));
4591
4693
  function TypePrimary(state) {
4592
4694
  if (state.tokenize) {
4593
4695
  return $TOKEN("TypePrimary", state, TypePrimary$0(state) || TypePrimary$1(state) || TypePrimary$2(state) || TypePrimary$3(state) || TypePrimary$4(state));
@@ -4595,7 +4697,11 @@ var require_parser = __commonJS({
4595
4697
  return TypePrimary$0(state) || TypePrimary$1(state) || TypePrimary$2(state) || TypePrimary$3(state) || TypePrimary$4(state);
4596
4698
  }
4597
4699
  }
4598
- var TypeConditional$0 = $S(TypeBinary, $E($S(__, $EXPECT($L6, fail, 'TypeConditional "extends"'), Type, $E($S(__, QuestionMark, Type, __, Colon, Type)))));
4700
+ 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) {
4701
+ if ($2)
4702
+ return $0;
4703
+ return $1;
4704
+ });
4599
4705
  function TypeConditional(state) {
4600
4706
  if (state.verbose)
4601
4707
  console.log("ENTER:", "TypeConditional");
@@ -4606,8 +4712,12 @@ var require_parser = __commonJS({
4606
4712
  }
4607
4713
  }
4608
4714
  var TypeLiteral$0 = Literal;
4609
- var TypeLiteral$1 = $EXPECT($L70, fail, 'TypeLiteral "void"');
4610
- var TypeLiteral$2 = $EXPECT($L140, fail, 'TypeLiteral "[]"');
4715
+ var TypeLiteral$1 = $TV($EXPECT($L70, fail, 'TypeLiteral "void"'), function($skip, $loc, $0, $1) {
4716
+ return { $loc, token: "void" };
4717
+ });
4718
+ var TypeLiteral$2 = $TV($EXPECT($L140, fail, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
4719
+ return { $loc, token: "[]" };
4720
+ });
4611
4721
  function TypeLiteral(state) {
4612
4722
  if (state.tokenize) {
4613
4723
  return $TOKEN("TypeLiteral", state, TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state));
@@ -4615,8 +4725,12 @@ var require_parser = __commonJS({
4615
4725
  return TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state);
4616
4726
  }
4617
4727
  }
4618
- var TypeBinaryOp$0 = $EXPECT($L68, fail, 'TypeBinaryOp "|"');
4619
- var TypeBinaryOp$1 = $EXPECT($L66, fail, 'TypeBinaryOp "&"');
4728
+ var TypeBinaryOp$0 = $TV($EXPECT($L68, fail, 'TypeBinaryOp "|"'), function($skip, $loc, $0, $1) {
4729
+ return { $loc, token: "|" };
4730
+ });
4731
+ var TypeBinaryOp$1 = $TV($EXPECT($L66, fail, 'TypeBinaryOp "&"'), function($skip, $loc, $0, $1) {
4732
+ return { $loc, token: "&" };
4733
+ });
4620
4734
  function TypeBinaryOp(state) {
4621
4735
  if (state.tokenize) {
4622
4736
  return $TOKEN("TypeBinaryOp", state, TypeBinaryOp$0(state) || TypeBinaryOp$1(state));
@@ -4701,14 +4815,73 @@ var require_parser = __commonJS({
4701
4815
  return Shebang$0(state);
4702
4816
  }
4703
4817
  }
4704
- var DirectivePrologue$0 = $Q($S($R$0($EXPECT($R35, fail, "DirectivePrologue /[\\t ]*/")), StringLiteral, $TEXT(StatementDelimiter), EOS));
4705
- function DirectivePrologue(state) {
4818
+ var CivetPrologue$0 = $T($S($EXPECT($R35, fail, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
4819
+ var content = value[2];
4820
+ return content;
4821
+ });
4822
+ var CivetPrologue$1 = $T($S($EXPECT($R35, fail, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
4823
+ var content = value[2];
4824
+ return content;
4825
+ });
4826
+ function CivetPrologue(state) {
4827
+ if (state.tokenize) {
4828
+ return $TOKEN("CivetPrologue", state, CivetPrologue$0(state) || CivetPrologue$1(state));
4829
+ } else {
4830
+ return CivetPrologue$0(state) || CivetPrologue$1(state);
4831
+ }
4832
+ }
4833
+ var CivetPrologueContent$0 = $TS($S($EXPECT($L141, fail, 'CivetPrologueContent "civet"'), $Q(CivetOption), $EXPECT($R36, fail, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3) {
4834
+ var options = $2;
4835
+ return {
4836
+ type: "CivetPrologue",
4837
+ children: [],
4838
+ config: Object.fromEntries(options)
4839
+ };
4840
+ });
4841
+ function CivetPrologueContent(state) {
4842
+ if (state.verbose)
4843
+ console.log("ENTER:", "CivetPrologueContent");
4844
+ if (state.tokenize) {
4845
+ return $TOKEN("CivetPrologueContent", state, CivetPrologueContent$0(state));
4846
+ } else {
4847
+ return CivetPrologueContent$0(state);
4848
+ }
4849
+ }
4850
+ var CivetOption$0 = $TR($EXPECT($R37, fail, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4851
+ const optionName = $2.toLowerCase().replace(/-+([a-z]?)/g, (_2, l) => {
4852
+ if (l)
4853
+ return l.toUpperCase();
4854
+ return "";
4855
+ });
4856
+ const value = $1 === "-" ? false : true;
4857
+ return [optionName, value];
4858
+ });
4859
+ function CivetOption(state) {
4706
4860
  if (state.verbose)
4707
- console.log("ENTER:", "DirectivePrologue");
4861
+ console.log("ENTER:", "CivetOption");
4708
4862
  if (state.tokenize) {
4709
- return $TOKEN("DirectivePrologue", state, DirectivePrologue$0(state));
4863
+ return $TOKEN("CivetOption", state, CivetOption$0(state));
4710
4864
  } else {
4711
- return DirectivePrologue$0(state);
4865
+ return CivetOption$0(state);
4866
+ }
4867
+ }
4868
+ var UnknownPrologue$0 = $S($R$0($EXPECT($R35, fail, "UnknownPrologue /[\\t ]*/")), BasicStringLiteral, $TEXT(StatementDelimiter), EOS);
4869
+ function UnknownPrologue(state) {
4870
+ if (state.verbose)
4871
+ console.log("ENTER:", "UnknownPrologue");
4872
+ if (state.tokenize) {
4873
+ return $TOKEN("UnknownPrologue", state, UnknownPrologue$0(state));
4874
+ } else {
4875
+ return UnknownPrologue$0(state);
4876
+ }
4877
+ }
4878
+ var DirectivePrologue$0 = CivetPrologue;
4879
+ var DirectivePrologue$1 = UnknownPrologue;
4880
+ function DirectivePrologue(state) {
4881
+ if (state.tokenize) {
4882
+ return $TOKEN("DirectivePrologue", state, DirectivePrologue$0(state) || DirectivePrologue$1(state));
4883
+ } else {
4884
+ return DirectivePrologue$0(state) || DirectivePrologue$1(state);
4712
4885
  }
4713
4886
  }
4714
4887
  var EOS$0 = $P(RestOfLine);
@@ -4721,7 +4894,7 @@ var require_parser = __commonJS({
4721
4894
  return EOS$0(state);
4722
4895
  }
4723
4896
  }
4724
- var EOL$0 = $R$0($EXPECT($R36, fail, "EOL /\\r\\n|\\n|\\r|$/"));
4897
+ var EOL$0 = $R$0($EXPECT($R38, fail, "EOL /\\r\\n|\\n|\\r|$/"));
4725
4898
  function EOL(state) {
4726
4899
  if (state.verbose)
4727
4900
  console.log("ENTER:", "EOL");
@@ -4731,7 +4904,7 @@ var require_parser = __commonJS({
4731
4904
  return EOL$0(state);
4732
4905
  }
4733
4906
  }
4734
- var EOF$0 = $R$0($EXPECT($R37, fail, "EOF /$/"));
4907
+ var EOF$0 = $R$0($EXPECT($R39, fail, "EOF /$/"));
4735
4908
  function EOF(state) {
4736
4909
  if (state.verbose)
4737
4910
  console.log("ENTER:", "EOF");
@@ -4885,12 +5058,65 @@ var require_parser = __commonJS({
4885
5058
  return InsertBreak$0(state);
4886
5059
  }
4887
5060
  }
5061
+ var CoffeeCommentEnabled$0 = $TV($EXPECT($L1, fail, 'CoffeeCommentEnabled ""'), function($skip, $loc, $0, $1) {
5062
+ if (module2.config.coffeeComment)
5063
+ return;
5064
+ return $skip;
5065
+ });
5066
+ function CoffeeCommentEnabled(state) {
5067
+ if (state.verbose)
5068
+ console.log("ENTER:", "CoffeeCommentEnabled");
5069
+ if (state.tokenize) {
5070
+ return $TOKEN("CoffeeCommentEnabled", state, CoffeeCommentEnabled$0(state));
5071
+ } else {
5072
+ return CoffeeCommentEnabled$0(state);
5073
+ }
5074
+ }
5075
+ var CoffeeInterpolationEnabled$0 = $TV($EXPECT($L1, fail, 'CoffeeInterpolationEnabled ""'), function($skip, $loc, $0, $1) {
5076
+ if (module2.config.coffeeInterpolation)
5077
+ return;
5078
+ return $skip;
5079
+ });
5080
+ function CoffeeInterpolationEnabled(state) {
5081
+ if (state.verbose)
5082
+ console.log("ENTER:", "CoffeeInterpolationEnabled");
5083
+ if (state.tokenize) {
5084
+ return $TOKEN("CoffeeInterpolationEnabled", state, CoffeeInterpolationEnabled$0(state));
5085
+ } else {
5086
+ return CoffeeInterpolationEnabled$0(state);
5087
+ }
5088
+ }
4888
5089
  var Reset$0 = $TV($EXPECT($L1, fail, 'Reset ""'), function($skip, $loc, $0, $1) {
4889
5090
  module2.currentIndent = 0;
4890
5091
  module2.indentLevels = [0];
4891
5092
  module2.verbose = false;
4892
- module2.coffeeCompat = false;
4893
- module2.implicitReturns = true;
5093
+ module2.config = {
5094
+ autoVar: false,
5095
+ coffeeComment: false,
5096
+ coffeeEq: false,
5097
+ coffeeInterpolation: false,
5098
+ implicitReturns: true
5099
+ };
5100
+ Object.defineProperty(module2.config, "coffeeCompat", {
5101
+ set(b) {
5102
+ if (b) {
5103
+ this.autoVar = true;
5104
+ this.coffeeComment = true;
5105
+ this.coffeeEq = true;
5106
+ this.coffeeInterpolation = true;
5107
+ this.implicitReturns = true;
5108
+ } else {
5109
+ this.autoVar = false;
5110
+ this.coffeeComment = false;
5111
+ this.coffeeEq = false;
5112
+ this.coffeeInterpolation = false;
5113
+ this.implicitReturns = false;
5114
+ }
5115
+ }
5116
+ });
5117
+ module2.modifyString = function(str) {
5118
+ return str.replace(/(?<!\\)(\\\\)*\n/g, "$1\\n");
5119
+ };
4894
5120
  });
4895
5121
  function Reset(state) {
4896
5122
  if (state.verbose)
@@ -4901,12 +5127,13 @@ var require_parser = __commonJS({
4901
5127
  return Reset$0(state);
4902
5128
  }
4903
5129
  }
4904
- var Init$0 = $TS($S($E(Shebang), DirectivePrologue, $EXPECT($L1, fail, 'Init ""')), function($skip, $loc, $0, $1, $2, $3) {
5130
+ var Init$0 = $TS($S($E(Shebang), $Q(DirectivePrologue), $EXPECT($L1, fail, 'Init ""')), function($skip, $loc, $0, $1, $2, $3) {
4905
5131
  var directives = $2;
4906
- if (directives) {
4907
- const compatRe = /use coffee-compat/;
4908
- module2.coffeeCompat = directives.some((d) => d[1].token?.match(compatRe));
4909
- }
5132
+ directives.forEach((directive) => {
5133
+ if (directive.type === "CivetPrologue") {
5134
+ Object.assign(module2.config, directive.config);
5135
+ }
5136
+ });
4910
5137
  function hasReturnStatement(node) {
4911
5138
  if (!node)
4912
5139
  return false;
@@ -4948,7 +5175,6 @@ var require_parser = __commonJS({
4948
5175
  if (!Array.isArray(node))
4949
5176
  return;
4950
5177
  const [, exp] = node;
4951
- debugger;
4952
5178
  if (!exp)
4953
5179
  return;
4954
5180
  switch (exp.type) {
@@ -4960,8 +5186,10 @@ var require_parser = __commonJS({
4960
5186
  case "ThrowStatement":
4961
5187
  case "VariableDeclaration":
4962
5188
  return;
5189
+ case "BlockStatement":
5190
+ insertReturn(exp.expressions[exp.expressions.length - 1]);
5191
+ return;
4963
5192
  case "IfStatement":
4964
- debugger;
4965
5193
  insertReturn(exp.children[2]);
4966
5194
  if (exp.children[3])
4967
5195
  insertReturn(exp.children[3][2]);
@@ -5018,9 +5246,6 @@ var require_parser = __commonJS({
5018
5246
  }
5019
5247
  return spacing;
5020
5248
  };
5021
- module2.modifyString = function(str) {
5022
- return str.replace(/(?<!\\)(\\\\)*\n/g, "$1\\n");
5023
- };
5024
5249
  module2.dedentBlockSubstitutions = function($02) {
5025
5250
  const [s, strWithSubstitutions, e] = $02;
5026
5251
  if (strWithSubstitutions.length === 0) {
@@ -5081,7 +5306,7 @@ var require_parser = __commonJS({
5081
5306
  return Init$0(state);
5082
5307
  }
5083
5308
  }
5084
- var Indent$0 = $TV($Q($C($EXPECT($L141, fail, 'Indent " "'), $EXPECT($L142, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
5309
+ var Indent$0 = $TV($Q($C($EXPECT($L142, fail, 'Indent " "'), $EXPECT($L143, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
5085
5310
  const level = $1.length;
5086
5311
  return {
5087
5312
  $loc,