@danielx/civet 0.2.12 → 0.2.15

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/README.md CHANGED
@@ -46,6 +46,25 @@ createCompilerHost := (options: CompilerOptions, moduleSearchLocations : string[
46
46
  return fileCache[fileName]
47
47
  ```
48
48
 
49
+ ESBuild Plugin
50
+ ---
51
+
52
+ ```coffee
53
+ esbuild = require "esbuild"
54
+ civetPlugin = require "@danielx/civet/esbuild-plugin"
55
+
56
+ esbuild.build
57
+ entryPoints: ['source/main.civet']
58
+ bundle: true
59
+ platform: 'node'
60
+ outfile: 'dist/main.js'
61
+ plugins: [
62
+ civetPlugin
63
+ ]
64
+ .catch -> process.exit 1
65
+
66
+ ```
67
+
49
68
  Things Kept from CoffeeScript
50
69
  ---
51
70
 
package/dist/browser.js CHANGED
@@ -445,6 +445,8 @@ var Civet = (() => {
445
445
  ApplicationStart,
446
446
  AdditionalReservedWords,
447
447
  MemberExpression,
448
+ MemberExpressionRest,
449
+ PropertyAccess,
448
450
  SuperProperty,
449
451
  MetaProperty,
450
452
  Parameters,
@@ -463,7 +465,8 @@ var Civet = (() => {
463
465
  ThinArrowFunction,
464
466
  Block,
465
467
  BracedBlock,
466
- SingleNestedBlockExpression,
468
+ SingleNestedExpression,
469
+ SingleNestedBlockStatement,
467
470
  NestedBlockExpressions,
468
471
  BlockExpression,
469
472
  Literal,
@@ -529,6 +532,8 @@ var Civet = (() => {
529
532
  Condition,
530
533
  ExpressionStatement,
531
534
  KeywordStatement,
535
+ MaybeNestedExpression,
536
+ Return,
532
537
  ImportDeclaration,
533
538
  ImportClause,
534
539
  NameSpaceImport,
@@ -547,6 +552,7 @@ var Civet = (() => {
547
552
  Declaration,
548
553
  HoistableDeclaration,
549
554
  LexicalDeclaration,
555
+ ConstAssignment,
550
556
  LexicalBinding,
551
557
  Initializer,
552
558
  VariableStatement,
@@ -632,6 +638,7 @@ var Civet = (() => {
632
638
  EOS,
633
639
  EOL,
634
640
  EOF,
641
+ Debugger,
635
642
  InsertOpenParen,
636
643
  InsertCloseParen,
637
644
  InsertOpenBrace,
@@ -645,7 +652,8 @@ var Civet = (() => {
645
652
  Indent,
646
653
  PushIndent,
647
654
  PopIndent,
648
- Nested
655
+ Nested,
656
+ NestedFurther
649
657
  });
650
658
  var $L0 = $L(",");
651
659
  var $L1 = $L("(");
@@ -671,9 +679,9 @@ var Civet = (() => {
671
679
  var $L21 = $L("new");
672
680
  var $L22 = $L("super");
673
681
  var $L23 = $L("import");
674
- var $L24 = $L("[");
675
- var $L25 = $L("]");
676
- var $L26 = $L(".");
682
+ var $L24 = $L(".");
683
+ var $L25 = $L("[");
684
+ var $L26 = $L("]");
677
685
  var $L27 = $L("::");
678
686
  var $L28 = $L("super[");
679
687
  var $L29 = $L("new.target");
@@ -757,8 +765,8 @@ var Civet = (() => {
757
765
  var $L107 = $L("break");
758
766
  var $L108 = $L("continue");
759
767
  var $L109 = $L("debugger");
760
- var $L110 = $L("return");
761
- var $L111 = $L("throw");
768
+ var $L110 = $L("throw");
769
+ var $L111 = $L("return");
762
770
  var $L112 = $L("import type");
763
771
  var $L113 = $L("from");
764
772
  var $L114 = $L("export");
@@ -931,7 +939,9 @@ var Civet = (() => {
931
939
  }
932
940
  }
933
941
  var UnaryPostfix$0 = $EXPECT($L3, fail, 'UnaryPostfix "?"');
934
- var UnaryPostfix$1 = $S(__, $EXPECT($L4, fail, 'UnaryPostfix "as"'), NonIdContinue, Type);
942
+ var UnaryPostfix$1 = $T($S(__, $EXPECT($L4, fail, 'UnaryPostfix "as"'), NonIdContinue, Type), function(value) {
943
+ return { "ts": true, "children": value };
944
+ });
935
945
  function UnaryPostfix(state) {
936
946
  if (state.tokenize) {
937
947
  return $TOKEN("UnaryPostfix", state, UnaryPostfix$0(state) || UnaryPostfix$1(state));
@@ -1002,7 +1012,7 @@ var Civet = (() => {
1002
1012
  return FatArrow$0(state);
1003
1013
  }
1004
1014
  }
1005
- var ConciseBody$0 = $S(EOS, SingleNestedBlockExpression);
1015
+ var ConciseBody$0 = $S(EOS, SingleNestedBlockStatement);
1006
1016
  var ConciseBody$1 = $S($N($S($Q(_), $EXPECT($L11, fail, 'ConciseBody "{"'))), AssignmentExpression);
1007
1017
  var ConciseBody$2 = BracedBlock;
1008
1018
  function ConciseBody(state) {
@@ -1071,7 +1081,7 @@ var Civet = (() => {
1071
1081
  return ClassExpression$0(state);
1072
1082
  }
1073
1083
  }
1074
- var ClassHeritage$0 = $S(ExtendsToken, __, $S(MemberExpression, $Q(CallExpressionRest)));
1084
+ var ClassHeritage$0 = $S(ExtendsToken, __, MemberExpression);
1075
1085
  function ClassHeritage(state) {
1076
1086
  if (state.verbose)
1077
1087
  console.log("ENTER:", "ClassHeritage");
@@ -1150,8 +1160,8 @@ var Civet = (() => {
1150
1160
  var ref = value[1];
1151
1161
  return ["this.", ref];
1152
1162
  });
1153
- var This$2 = $T($EXPECT($L19, fail, 'This "@"'), function(value) {
1154
- return "this";
1163
+ var This$2 = $TV($EXPECT($L19, fail, 'This "@"'), function($skip, $loc, $0, $1) {
1164
+ return { $loc, token: "this" };
1155
1165
  });
1156
1166
  function This(state) {
1157
1167
  if (state.tokenize) {
@@ -1169,7 +1179,7 @@ var Civet = (() => {
1169
1179
  return LeftHandSideExpression$0(state) || LeftHandSideExpression$1(state);
1170
1180
  }
1171
1181
  }
1172
- var NewExpression$0 = $S($P($S($EXPECT($L21, fail, 'NewExpression "new"'), __)), MemberExpression);
1182
+ var NewExpression$0 = $S($P($S($EXPECT($L21, fail, 'NewExpression "new"'), __)), CallExpression);
1173
1183
  function NewExpression(state) {
1174
1184
  if (state.verbose)
1175
1185
  console.log("ENTER:", "NewExpression");
@@ -1181,7 +1191,7 @@ var Civet = (() => {
1181
1191
  }
1182
1192
  var CallExpression$0 = $S($EXPECT($L22, fail, 'CallExpression "super"'), __, Arguments);
1183
1193
  var CallExpression$1 = $S($EXPECT($L23, fail, 'CallExpression "import"'), __, $EXPECT($L1, fail, 'CallExpression "("'), AssignmentExpression, __, $EXPECT($L2, fail, 'CallExpression ")"'));
1184
- var CallExpression$2 = $S(MemberExpression, $Q(CallExpressionRest), $E(SpacedApplication));
1194
+ var CallExpression$2 = $S(MemberExpression, $Q(CallExpressionRest));
1185
1195
  function CallExpression(state) {
1186
1196
  if (state.tokenize) {
1187
1197
  return $TOKEN("CallExpression", state, CallExpression$0(state) || CallExpression$1(state) || CallExpression$2(state));
@@ -1190,23 +1200,17 @@ var Civet = (() => {
1190
1200
  }
1191
1201
  }
1192
1202
  var CallExpressionRest$0 = $S($E(OptionalShorthand), Arguments);
1193
- var CallExpressionRest$1 = $S($E(OptionalShorthand), $EXPECT($L24, fail, 'CallExpressionRest "["'), __, Expression, __, $EXPECT($L25, fail, 'CallExpressionRest "]"'));
1194
- var CallExpressionRest$2 = $S($E($EXPECT($L3, fail, 'CallExpressionRest "?"')), $EXPECT($L26, fail, 'CallExpressionRest "."'), $C(IdentifierName, PrivateIdentifier));
1195
- var CallExpressionRest$3 = $TS($S($EXPECT($L27, fail, 'CallExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2) {
1196
- var id = $2;
1197
- if (id)
1198
- return [".prototype.", id];
1199
- return ".prototype";
1200
- });
1201
- var CallExpressionRest$4 = TemplateLiteral;
1203
+ var CallExpressionRest$1 = MemberExpressionRest;
1204
+ var CallExpressionRest$2 = SpacedApplication;
1205
+ var CallExpressionRest$3 = TemplateLiteral;
1202
1206
  function CallExpressionRest(state) {
1203
1207
  if (state.tokenize) {
1204
- return $TOKEN("CallExpressionRest", state, CallExpressionRest$0(state) || CallExpressionRest$1(state) || CallExpressionRest$2(state) || CallExpressionRest$3(state) || CallExpressionRest$4(state));
1208
+ return $TOKEN("CallExpressionRest", state, CallExpressionRest$0(state) || CallExpressionRest$1(state) || CallExpressionRest$2(state) || CallExpressionRest$3(state));
1205
1209
  } else {
1206
- return CallExpressionRest$0(state) || CallExpressionRest$1(state) || CallExpressionRest$2(state) || CallExpressionRest$3(state) || CallExpressionRest$4(state);
1210
+ return CallExpressionRest$0(state) || CallExpressionRest$1(state) || CallExpressionRest$2(state) || CallExpressionRest$3(state);
1207
1211
  }
1208
1212
  }
1209
- var OptionalShorthand$0 = $S($EXPECT($L3, fail, 'OptionalShorthand "?"'), $C($EXPECT($L26, fail, 'OptionalShorthand "."'), InsertDot));
1213
+ var OptionalShorthand$0 = $S($EXPECT($L3, fail, 'OptionalShorthand "?"'), $C($EXPECT($L24, fail, 'OptionalShorthand "."'), InsertDot));
1210
1214
  function OptionalShorthand(state) {
1211
1215
  if (state.verbose)
1212
1216
  console.log("ENTER:", "OptionalShorthand");
@@ -1216,7 +1220,7 @@ var Civet = (() => {
1216
1220
  return OptionalShorthand$0(state);
1217
1221
  }
1218
1222
  }
1219
- var SpacedApplication$0 = $S(ApplicationStart, ArgumentList, InsertCloseParen);
1223
+ var SpacedApplication$0 = $S(ApplicationStart, ArgumentList, InsertCloseParen, $Q($S($Y(EOS), Nested, CallExpressionRest)));
1220
1224
  function SpacedApplication(state) {
1221
1225
  if (state.verbose)
1222
1226
  console.log("ENTER:", "SpacedApplication");
@@ -1250,7 +1254,7 @@ var Civet = (() => {
1250
1254
  return AdditionalReservedWords$0(state);
1251
1255
  }
1252
1256
  }
1253
- var MemberExpression$0 = $S(PrimaryExpression, $Q(CallExpressionRest));
1257
+ var MemberExpression$0 = $S(PrimaryExpression, $Q(MemberExpressionRest));
1254
1258
  var MemberExpression$1 = $S($Q(TrailingComment), SuperProperty);
1255
1259
  var MemberExpression$2 = $S($Q(TrailingComment), MetaProperty);
1256
1260
  function MemberExpression(state) {
@@ -1260,7 +1264,32 @@ var Civet = (() => {
1260
1264
  return MemberExpression$0(state) || MemberExpression$1(state) || MemberExpression$2(state);
1261
1265
  }
1262
1266
  }
1263
- var SuperProperty$0 = $S($EXPECT($L28, fail, 'SuperProperty "super["'), __, Expression, __, $EXPECT($L25, fail, 'SuperProperty "]"'));
1267
+ var MemberExpressionRest$0 = $S($E(OptionalShorthand), $EXPECT($L25, fail, 'MemberExpressionRest "["'), __, Expression, __, $EXPECT($L26, fail, 'MemberExpressionRest "]"'));
1268
+ var MemberExpressionRest$1 = $S($E($S(EOS, NestedFurther)), PropertyAccess);
1269
+ var MemberExpressionRest$2 = $TS($S($EXPECT($L27, fail, 'MemberExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2) {
1270
+ var id = $2;
1271
+ if (id)
1272
+ return [".prototype.", id];
1273
+ return ".prototype";
1274
+ });
1275
+ function MemberExpressionRest(state) {
1276
+ if (state.tokenize) {
1277
+ return $TOKEN("MemberExpressionRest", state, MemberExpressionRest$0(state) || MemberExpressionRest$1(state) || MemberExpressionRest$2(state));
1278
+ } else {
1279
+ return MemberExpressionRest$0(state) || MemberExpressionRest$1(state) || MemberExpressionRest$2(state);
1280
+ }
1281
+ }
1282
+ var PropertyAccess$0 = $S($E($EXPECT($L3, fail, 'PropertyAccess "?"')), $EXPECT($L24, fail, 'PropertyAccess "."'), $C(IdentifierName, PrivateIdentifier));
1283
+ function PropertyAccess(state) {
1284
+ if (state.verbose)
1285
+ console.log("ENTER:", "PropertyAccess");
1286
+ if (state.tokenize) {
1287
+ return $TOKEN("PropertyAccess", state, PropertyAccess$0(state));
1288
+ } else {
1289
+ return PropertyAccess$0(state);
1290
+ }
1291
+ }
1292
+ var SuperProperty$0 = $S($EXPECT($L28, fail, 'SuperProperty "super["'), __, Expression, __, $EXPECT($L26, fail, 'SuperProperty "]"'));
1264
1293
  function SuperProperty(state) {
1265
1294
  if (state.verbose)
1266
1295
  console.log("ENTER:", "SuperProperty");
@@ -1344,7 +1373,7 @@ var Civet = (() => {
1344
1373
  return ObjectBindingPattern$0(state);
1345
1374
  }
1346
1375
  }
1347
- var ArrayBindingPattern$0 = $S($EXPECT($L24, fail, 'ArrayBindingPattern "["'), $Q($C(BindingElement, Elision)), $E($S(__, BindingRestElement)), __, $EXPECT($L25, fail, 'ArrayBindingPattern "]"'));
1376
+ var ArrayBindingPattern$0 = $S($EXPECT($L25, fail, 'ArrayBindingPattern "["'), $Q($C(BindingElement, Elision)), $E($S(__, BindingRestElement)), __, $EXPECT($L26, fail, 'ArrayBindingPattern "]"'));
1348
1377
  function ArrayBindingPattern(state) {
1349
1378
  if (state.verbose)
1350
1379
  console.log("ENTER:", "ArrayBindingPattern");
@@ -1448,19 +1477,34 @@ var Civet = (() => {
1448
1477
  return BracedBlock$0(state) || BracedBlock$1(state) || BracedBlock$2(state);
1449
1478
  }
1450
1479
  }
1451
- var SingleNestedBlockExpression$0 = $TS($S(PushIndent, $E($S(Nested, StatementListItem)), $C($C($N($S(Nested, StatementListItem)), $S(PopIndent, $N($EXPECT($L31, fail, 'SingleNestedBlockExpression ""')))), PopIndent)), function($skip, $loc, $0, $1, $2, $3) {
1480
+ var SingleNestedExpression$0 = $TS($S(PushIndent, $E($S(Nested, Expression, StatementDelimiter)), $C($S($N($S(Nested, Expression)), PopIndent), PopIndent)), function($skip, $loc, $0, $1, $2, $3) {
1452
1481
  var exp = $2;
1453
1482
  if (exp)
1454
1483
  return exp;
1455
1484
  return $skip;
1456
1485
  });
1457
- function SingleNestedBlockExpression(state) {
1486
+ function SingleNestedExpression(state) {
1458
1487
  if (state.verbose)
1459
- console.log("ENTER:", "SingleNestedBlockExpression");
1488
+ console.log("ENTER:", "SingleNestedExpression");
1460
1489
  if (state.tokenize) {
1461
- return $TOKEN("SingleNestedBlockExpression", state, SingleNestedBlockExpression$0(state));
1490
+ return $TOKEN("SingleNestedExpression", state, SingleNestedExpression$0(state));
1462
1491
  } else {
1463
- return SingleNestedBlockExpression$0(state);
1492
+ return SingleNestedExpression$0(state);
1493
+ }
1494
+ }
1495
+ var SingleNestedBlockStatement$0 = $TS($S(PushIndent, $E($S(Nested, StatementListItem)), $C($C($N($S(Nested, StatementListItem)), PopIndent), PopIndent)), function($skip, $loc, $0, $1, $2, $3) {
1496
+ var exp = $2;
1497
+ if (exp)
1498
+ return exp;
1499
+ return $skip;
1500
+ });
1501
+ function SingleNestedBlockStatement(state) {
1502
+ if (state.verbose)
1503
+ console.log("ENTER:", "SingleNestedBlockStatement");
1504
+ if (state.tokenize) {
1505
+ return $TOKEN("SingleNestedBlockStatement", state, SingleNestedBlockStatement$0(state));
1506
+ } else {
1507
+ return SingleNestedBlockStatement$0(state);
1464
1508
  }
1465
1509
  }
1466
1510
  var NestedBlockExpressions$0 = $TS($S(PushIndent, $Q(BlockExpression), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
@@ -1521,7 +1565,12 @@ var Civet = (() => {
1521
1565
  return Identifier$0(state);
1522
1566
  }
1523
1567
  }
1524
- var IdentifierName$0 = $R$0($EXPECT($R1, fail, "IdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
1568
+ var IdentifierName$0 = $TR($EXPECT($R1, fail, "IdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
1569
+ return {
1570
+ $loc,
1571
+ token: $0
1572
+ };
1573
+ });
1525
1574
  function IdentifierName(state) {
1526
1575
  if (state.verbose)
1527
1576
  console.log("ENTER:", "IdentifierName");
@@ -1541,8 +1590,8 @@ var Civet = (() => {
1541
1590
  return IdentifierReference$0(state);
1542
1591
  }
1543
1592
  }
1544
- var ArrayLiteral$0 = $S($EXPECT($L24, fail, 'ArrayLiteral "["'), NestedElementList, __, $EXPECT($L25, fail, 'ArrayLiteral "]"'));
1545
- var ArrayLiteral$1 = $S($EXPECT($L24, fail, 'ArrayLiteral "["'), ElementList, __, $EXPECT($L25, fail, 'ArrayLiteral "]"'));
1593
+ var ArrayLiteral$0 = $S($EXPECT($L25, fail, 'ArrayLiteral "["'), NestedElementList, __, $EXPECT($L26, fail, 'ArrayLiteral "]"'));
1594
+ var ArrayLiteral$1 = $S($EXPECT($L25, fail, 'ArrayLiteral "["'), ElementList, __, $EXPECT($L26, fail, 'ArrayLiteral "]"'));
1546
1595
  function ArrayLiteral(state) {
1547
1596
  if (state.tokenize) {
1548
1597
  return $TOKEN("ArrayLiteral", state, ArrayLiteral$0(state) || ArrayLiteral$1(state));
@@ -1576,8 +1625,8 @@ var Civet = (() => {
1576
1625
  }
1577
1626
  }
1578
1627
  var ArrayElementDelimiter$0 = $S($Q(_), $EXPECT($L0, fail, 'ArrayElementDelimiter ","'));
1579
- var ArrayElementDelimiter$1 = $Y($S($Q(_), $EXPECT($L25, fail, 'ArrayElementDelimiter "]"')));
1580
- var ArrayElementDelimiter$2 = $T($Y($S(__, $EXPECT($L25, fail, 'ArrayElementDelimiter "]"'))), function(value) {
1628
+ var ArrayElementDelimiter$1 = $Y($S($Q(_), $EXPECT($L26, fail, 'ArrayElementDelimiter "]"')));
1629
+ var ArrayElementDelimiter$2 = $T($Y($S(__, $EXPECT($L26, fail, 'ArrayElementDelimiter "]"'))), function(value) {
1581
1630
  return ",";
1582
1631
  });
1583
1632
  var ArrayElementDelimiter$3 = $T($Y(EOS), function(value) {
@@ -1705,7 +1754,7 @@ var Civet = (() => {
1705
1754
  var PropertyName$0 = NumericLiteral;
1706
1755
  var PropertyName$1 = StringLiteral;
1707
1756
  var PropertyName$2 = IdentifierName;
1708
- var PropertyName$3 = $S($EXPECT($L24, fail, 'PropertyName "["'), AssignmentExpression, __, $EXPECT($L25, fail, 'PropertyName "]"'));
1757
+ var PropertyName$3 = $S($EXPECT($L25, fail, 'PropertyName "["'), AssignmentExpression, __, $EXPECT($L26, fail, 'PropertyName "]"'));
1709
1758
  function PropertyName(state) {
1710
1759
  if (state.tokenize) {
1711
1760
  return $TOKEN("PropertyName", state, PropertyName$0(state) || PropertyName$1(state) || PropertyName$2(state) || PropertyName$3(state));
@@ -2242,14 +2291,32 @@ var Civet = (() => {
2242
2291
  var KeywordStatement$0 = $S($EXPECT($L107, fail, 'KeywordStatement "break"'), NonIdContinue);
2243
2292
  var KeywordStatement$1 = $S($EXPECT($L108, fail, 'KeywordStatement "continue"'), NonIdContinue);
2244
2293
  var KeywordStatement$2 = $S($EXPECT($L109, fail, 'KeywordStatement "debugger"'), NonIdContinue);
2245
- var KeywordStatement$3 = $S($EXPECT($L110, fail, 'KeywordStatement "return"'), NonIdContinue, Expression);
2246
- var KeywordStatement$4 = $S($EXPECT($L110, fail, 'KeywordStatement "return"'), NonIdContinue);
2247
- var KeywordStatement$5 = $S($EXPECT($L111, fail, 'KeywordStatement "throw"'), NonIdContinue, Expression);
2294
+ var KeywordStatement$3 = $S(Return, $E(MaybeNestedExpression));
2295
+ var KeywordStatement$4 = $S($EXPECT($L110, fail, 'KeywordStatement "throw"'), NonIdContinue, Expression);
2248
2296
  function KeywordStatement(state) {
2249
2297
  if (state.tokenize) {
2250
- return $TOKEN("KeywordStatement", state, KeywordStatement$0(state) || KeywordStatement$1(state) || KeywordStatement$2(state) || KeywordStatement$3(state) || KeywordStatement$4(state) || KeywordStatement$5(state));
2298
+ return $TOKEN("KeywordStatement", state, KeywordStatement$0(state) || KeywordStatement$1(state) || KeywordStatement$2(state) || KeywordStatement$3(state) || KeywordStatement$4(state));
2251
2299
  } else {
2252
- return KeywordStatement$0(state) || KeywordStatement$1(state) || KeywordStatement$2(state) || KeywordStatement$3(state) || KeywordStatement$4(state) || KeywordStatement$5(state);
2300
+ return KeywordStatement$0(state) || KeywordStatement$1(state) || KeywordStatement$2(state) || KeywordStatement$3(state) || KeywordStatement$4(state);
2301
+ }
2302
+ }
2303
+ var MaybeNestedExpression$0 = $S($N(EOS), $Q(TrailingComment), Expression);
2304
+ var MaybeNestedExpression$1 = $S($Y(EOS), ObjectLiteral);
2305
+ function MaybeNestedExpression(state) {
2306
+ if (state.tokenize) {
2307
+ return $TOKEN("MaybeNestedExpression", state, MaybeNestedExpression$0(state) || MaybeNestedExpression$1(state));
2308
+ } else {
2309
+ return MaybeNestedExpression$0(state) || MaybeNestedExpression$1(state);
2310
+ }
2311
+ }
2312
+ var Return$0 = $S($EXPECT($L111, fail, 'Return "return"'), NonIdContinue);
2313
+ function Return(state) {
2314
+ if (state.verbose)
2315
+ console.log("ENTER:", "Return");
2316
+ if (state.tokenize) {
2317
+ return $TOKEN("Return", state, Return$0(state));
2318
+ } else {
2319
+ return Return$0(state);
2253
2320
  }
2254
2321
  }
2255
2322
  var ImportDeclaration$0 = $T($S($EXPECT($L112, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
@@ -2423,12 +2490,21 @@ var Civet = (() => {
2423
2490
  }
2424
2491
  }
2425
2492
  var LexicalDeclaration$0 = $S($C($EXPECT($L98, fail, 'LexicalDeclaration "let"'), $EXPECT($L99, fail, 'LexicalDeclaration "const"')), __, LexicalBinding, $Q($S(__, $EXPECT($L0, fail, 'LexicalDeclaration ","'), __, LexicalBinding)));
2426
- var LexicalDeclaration$1 = $T($S($C(BindingPattern, BindingIdentifier), $E(TypeSuffix), __, $EXPECT($L115, fail, 'LexicalDeclaration ":="'), AssignmentExpression), function(value) {
2427
- var bind = value[0];
2428
- var suffix = value[1];
2429
- var ws = value[2];
2430
- var exp = value[4];
2431
- return ["const ", bind, suffix, ws, "=", exp];
2493
+ var LexicalDeclaration$1 = $TS($S($C(BindingPattern, BindingIdentifier), $E(TypeSuffix), __, ConstAssignment, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
2494
+ var bind = $1;
2495
+ var suffix = $2;
2496
+ var ws = $3;
2497
+ var ca = $4;
2498
+ var exp = $5;
2499
+ return [
2500
+ { token: "const", $loc: ca.$loc },
2501
+ " ",
2502
+ bind,
2503
+ suffix,
2504
+ ws,
2505
+ { token: "=", $loc: ca.$loc },
2506
+ exp
2507
+ ];
2432
2508
  });
2433
2509
  function LexicalDeclaration(state) {
2434
2510
  if (state.tokenize) {
@@ -2437,6 +2513,18 @@ var Civet = (() => {
2437
2513
  return LexicalDeclaration$0(state) || LexicalDeclaration$1(state);
2438
2514
  }
2439
2515
  }
2516
+ var ConstAssignment$0 = $TV($EXPECT($L115, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
2517
+ return { $loc, token: $0 };
2518
+ });
2519
+ function ConstAssignment(state) {
2520
+ if (state.verbose)
2521
+ console.log("ENTER:", "ConstAssignment");
2522
+ if (state.tokenize) {
2523
+ return $TOKEN("ConstAssignment", state, ConstAssignment$0(state));
2524
+ } else {
2525
+ return ConstAssignment$0(state);
2526
+ }
2527
+ }
2440
2528
  var LexicalBinding$0 = $S(BindingPattern, $E(TypeSuffix), Initializer);
2441
2529
  var LexicalBinding$1 = $S(BindingIdentifier, $E(TypeSuffix), $E(Initializer));
2442
2530
  function LexicalBinding(state) {
@@ -2864,7 +2952,7 @@ var Civet = (() => {
2864
2952
  return JSXFragment$0(state);
2865
2953
  }
2866
2954
  }
2867
- var JSXElementName$0 = $S(JSXIdentifierName, $C($S($EXPECT($L12, fail, 'JSXElementName ":"'), JSXIdentifierName), $Q($S($EXPECT($L26, fail, 'JSXElementName "."'), JSXIdentifierName))));
2955
+ var JSXElementName$0 = $S(JSXIdentifierName, $C($S($EXPECT($L12, fail, 'JSXElementName ":"'), JSXIdentifierName), $Q($S($EXPECT($L24, fail, 'JSXElementName "."'), JSXIdentifierName))));
2868
2956
  function JSXElementName(state) {
2869
2957
  if (state.verbose)
2870
2958
  console.log("ENTER:", "JSXElementName");
@@ -3049,7 +3137,7 @@ var Civet = (() => {
3049
3137
  return InterfacePropertyDelimiter$0(state) || InterfacePropertyDelimiter$1(state) || InterfacePropertyDelimiter$2(state) || InterfacePropertyDelimiter$3(state);
3050
3138
  }
3051
3139
  }
3052
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R29, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L129, fail, 'TypeIndexSignature "readonly"'), __)), $EXPECT($L24, fail, 'TypeIndexSignature "["'), TypeIndex, $EXPECT($L25, fail, 'TypeIndexSignature "]"'), $E($S(__, $R$0($EXPECT($R30, fail, "TypeIndexSignature /[+-]/")), $EXPECT($L3, fail, 'TypeIndexSignature "?"'))));
3140
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R29, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L129, fail, 'TypeIndexSignature "readonly"'), __)), $EXPECT($L25, fail, 'TypeIndexSignature "["'), TypeIndex, $EXPECT($L26, fail, 'TypeIndexSignature "]"'), $E($S(__, $R$0($EXPECT($R30, fail, "TypeIndexSignature /[+-]/")), $EXPECT($L3, fail, 'TypeIndexSignature "?"'))));
3053
3141
  function TypeIndexSignature(state) {
3054
3142
  if (state.verbose)
3055
3143
  console.log("ENTER:", "TypeIndexSignature");
@@ -3152,7 +3240,7 @@ var Civet = (() => {
3152
3240
  return TypeUnaryOp$0(state) || TypeUnaryOp$1(state) || TypeUnaryOp$2(state);
3153
3241
  }
3154
3242
  }
3155
- var TypeIndexedAccess$0 = $S(__, $EXPECT($L24, fail, 'TypeIndexedAccess "["'), $E(Type), __, $EXPECT($L25, fail, 'TypeIndexedAccess "]"'));
3243
+ var TypeIndexedAccess$0 = $S(__, $EXPECT($L25, fail, 'TypeIndexedAccess "["'), $E(Type), __, $EXPECT($L26, fail, 'TypeIndexedAccess "]"'));
3156
3244
  function TypeIndexedAccess(state) {
3157
3245
  if (state.verbose)
3158
3246
  console.log("ENTER:", "TypeIndexedAccess");
@@ -3165,7 +3253,7 @@ var Civet = (() => {
3165
3253
  var TypePrimary$0 = InterfaceBlock;
3166
3254
  var TypePrimary$1 = $S(__, $EXPECT($L1, fail, 'TypePrimary "("'), Type, __, $EXPECT($L2, fail, 'TypePrimary ")"'));
3167
3255
  var TypePrimary$2 = $S($Q(_), FunctionType);
3168
- var TypePrimary$3 = $S($Q(_), IdentifierName, $Q($S($EXPECT($L26, fail, 'TypePrimary "."'), IdentifierName)), $E(TypeArguments));
3256
+ var TypePrimary$3 = $S($Q(_), IdentifierName, $Q($S($EXPECT($L24, fail, 'TypePrimary "."'), IdentifierName)), $E(TypeArguments));
3169
3257
  var TypePrimary$4 = $S($Q(_), TypeLiteral);
3170
3258
  function TypePrimary(state) {
3171
3259
  if (state.tokenize) {
@@ -3320,6 +3408,18 @@ var Civet = (() => {
3320
3408
  return EOF$0(state);
3321
3409
  }
3322
3410
  }
3411
+ var Debugger$0 = $TV($EXPECT($L31, fail, 'Debugger ""'), function($skip, $loc, $0, $1) {
3412
+ debugger;
3413
+ });
3414
+ function Debugger(state) {
3415
+ if (state.verbose)
3416
+ console.log("ENTER:", "Debugger");
3417
+ if (state.tokenize) {
3418
+ return $TOKEN("Debugger", state, Debugger$0(state));
3419
+ } else {
3420
+ return Debugger$0(state);
3421
+ }
3422
+ }
3323
3423
  var InsertOpenParen$0 = $T($EXPECT($L31, fail, 'InsertOpenParen ""'), function(value) {
3324
3424
  return "(";
3325
3425
  });
@@ -3519,6 +3619,31 @@ var Civet = (() => {
3519
3619
  return Nested$0(state);
3520
3620
  }
3521
3621
  }
3622
+ var NestedFurther$0 = $TS($S($E(EOS), Indent), function($skip, $loc, $0, $1, $2) {
3623
+ var eos = $1;
3624
+ var indent = $2;
3625
+ const currentIndent = global.indentLevels[global.indentLevels.length - 1];
3626
+ if (global.verbose) {
3627
+ console.log("global indent", global.currentIndent);
3628
+ console.log("Indented", indent, currentIndent);
3629
+ }
3630
+ if (indent !== currentIndent + 1) {
3631
+ if (global.verbose) {
3632
+ console.log("skipped nested");
3633
+ }
3634
+ return $skip;
3635
+ }
3636
+ return [eos, "".padStart(indent * 2)];
3637
+ });
3638
+ function NestedFurther(state) {
3639
+ if (state.verbose)
3640
+ console.log("ENTER:", "NestedFurther");
3641
+ if (state.tokenize) {
3642
+ return $TOKEN("NestedFurther", state, NestedFurther$0(state));
3643
+ } else {
3644
+ return NestedFurther$0(state);
3645
+ }
3646
+ }
3522
3647
  module.exports = {
3523
3648
  parse
3524
3649
  };
@@ -3529,11 +3654,18 @@ var Civet = (() => {
3529
3654
  var require_generate = __commonJS({
3530
3655
  "source/generate.coffee"(exports, module) {
3531
3656
  var gen;
3657
+ var prune;
3532
3658
  gen = function(node, options) {
3659
+ var $loc, token;
3533
3660
  if (node === null || node === void 0) {
3534
3661
  return "";
3535
3662
  }
3536
3663
  if (typeof node === "string") {
3664
+ if (options != null) {
3665
+ if (typeof options.updateSourceMap === "function") {
3666
+ options.updateSourceMap(node);
3667
+ }
3668
+ }
3537
3669
  return node;
3538
3670
  }
3539
3671
  if (Array.isArray(node)) {
@@ -3542,19 +3674,55 @@ var Civet = (() => {
3542
3674
  }).join("");
3543
3675
  }
3544
3676
  if (typeof node === "object") {
3545
- if ((options != null ? options.js : void 0) && node.ts) {
3677
+ if (options.js && node.ts) {
3546
3678
  return "";
3547
3679
  }
3680
+ if (node.$loc != null) {
3681
+ ({ token, $loc } = node);
3682
+ if (options != null) {
3683
+ if (typeof options.updateSourceMap === "function") {
3684
+ options.updateSourceMap(token, $loc.pos);
3685
+ }
3686
+ }
3687
+ return token;
3688
+ }
3548
3689
  if (!node.children) {
3549
3690
  throw new Error("Unknown node", JSON.stringify(node));
3550
3691
  }
3551
- return node.children.map(function(child) {
3552
- return gen(child, options);
3553
- }).join("");
3692
+ return gen(node.children, options);
3554
3693
  }
3555
3694
  throw new Error("Unknown node", JSON.stringify(node));
3556
3695
  };
3557
3696
  module.exports = gen;
3697
+ prune = function(node) {
3698
+ var a;
3699
+ if (node === null || node === void 0) {
3700
+ return;
3701
+ }
3702
+ if (node.length === 0) {
3703
+ return;
3704
+ }
3705
+ if (Array.isArray(node)) {
3706
+ a = node.map(function(n) {
3707
+ return prune(n);
3708
+ }).filter(function(n) {
3709
+ return !!n;
3710
+ });
3711
+ if (a.length > 1) {
3712
+ return a;
3713
+ }
3714
+ if (a.length === 1) {
3715
+ return a[0];
3716
+ }
3717
+ return;
3718
+ }
3719
+ if (node.children != null) {
3720
+ node.children = prune(node.children);
3721
+ return node;
3722
+ }
3723
+ return node;
3724
+ };
3725
+ gen.prune = prune;
3558
3726
  }
3559
3727
  });
3560
3728
 
@@ -3568,7 +3736,9 @@ var Civet = (() => {
3568
3736
  module.exports = {
3569
3737
  parse,
3570
3738
  compile: function(src, options) {
3571
- return gen(parse(src), options);
3739
+ return gen(parse(src, {
3740
+ filename: options != null ? options.filename : void 0
3741
+ }), options);
3572
3742
  },
3573
3743
  generate: gen
3574
3744
  };