@danielx/civet 0.4.16 → 0.4.18

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
@@ -406,6 +406,8 @@ var require_parser = __commonJS({
406
406
  var { parse: parse2 } = parserState({
407
407
  Program,
408
408
  TopLevelStatement,
409
+ ExtendedExpression,
410
+ ExpressionizedStatement,
409
411
  Expression,
410
412
  Arguments,
411
413
  ArgumentsWithTrailingCallExpressions,
@@ -422,10 +424,11 @@ var require_parser = __commonJS({
422
424
  UpdateExpression,
423
425
  UpdateExpressionSymbol,
424
426
  AssignmentExpression,
425
- AssignmentExpressionRest,
426
- AwaitExpression,
427
+ AssignmentExpressionTail,
427
428
  YieldExpression,
429
+ YieldTail,
428
430
  ArrowFunction,
431
+ ArrowFunctionTail,
429
432
  FatArrow,
430
433
  FatArrowBody,
431
434
  ConditionalExpression,
@@ -443,7 +446,6 @@ var require_parser = __commonJS({
443
446
  This,
444
447
  AtAccessor,
445
448
  LeftHandSideExpression,
446
- NewExpression,
447
449
  CallExpression,
448
450
  CallExpressionRest,
449
451
  OptionalShorthand,
@@ -463,10 +465,14 @@ var require_parser = __commonJS({
463
465
  BindingIdentifier,
464
466
  BindingPattern,
465
467
  ObjectBindingPattern,
468
+ ObjectBindingPatternContent,
466
469
  ArrayBindingPattern,
470
+ ArrayBindingPatternContent,
471
+ Elision,
467
472
  NestedBindingProperties,
468
473
  NestedBindingProperty,
469
474
  BindingProperty,
475
+ NestedBindingRestProperty,
470
476
  BindingRestProperty,
471
477
  NestedBindingElements,
472
478
  NestedBindingElement,
@@ -481,10 +487,11 @@ var require_parser = __commonJS({
481
487
  BracedOrEmptyBlock,
482
488
  EmptyBlock,
483
489
  BracedBlock,
484
- SingleNestedExpression,
485
- NestedBlockExpressions,
486
- BlockExpression,
490
+ BracedContent,
491
+ NestedBlockStatements,
492
+ NestedBlockStatement,
487
493
  Literal,
494
+ LiteralContent,
488
495
  NullLiteral,
489
496
  BooleanLiteral,
490
497
  CoffeeScriptBooleanLiteral,
@@ -493,14 +500,16 @@ var require_parser = __commonJS({
493
500
  IdentifierName,
494
501
  IdentifierReference,
495
502
  ArrayLiteral,
503
+ ArrayLiteralContent,
496
504
  NestedElementList,
497
505
  NestedElement,
498
506
  ArrayElementDelimiter,
499
507
  ElementList,
500
- InlineElementList,
508
+ ElementListRest,
501
509
  ArrayElementExpression,
502
- Elision,
503
510
  ObjectLiteral,
511
+ BracedObjectLiteral,
512
+ BracedObjectLiteralContent,
504
513
  NestedObjectLiteral,
505
514
  NestedPropertyDefinitions,
506
515
  NestedPropertyDefinition,
@@ -527,6 +536,10 @@ var require_parser = __commonJS({
527
536
  IfStatement,
528
537
  IfClause,
529
538
  UnlessClause,
539
+ IfExpression,
540
+ ExpressionBlock,
541
+ NestedBlockExpressions,
542
+ NestedBlockExpression,
530
543
  IterationStatement,
531
544
  LoopStatement,
532
545
  LoopClause,
@@ -536,10 +549,15 @@ var require_parser = __commonJS({
536
549
  ForStatement,
537
550
  ForClause,
538
551
  ForStatementControl,
552
+ WhenCondition,
553
+ CoffeeForStatementParameters,
554
+ CoffeeForDeclaration,
555
+ ForStatementParameters,
539
556
  ForInOfDeclaration,
540
557
  ForDeclaration,
541
558
  ForBinding,
542
559
  SwitchStatement,
560
+ SwitchExpression,
543
561
  CaseBlock,
544
562
  NestedCaseClauses,
545
563
  NestedCaseClause,
@@ -557,6 +575,8 @@ var require_parser = __commonJS({
557
575
  SuppressIndentedApplication,
558
576
  ExpressionStatement,
559
577
  KeywordStatement,
578
+ DebuggerExpression,
579
+ ThrowExpression,
560
580
  MaybeNestedExpression,
561
581
  ImportDeclaration,
562
582
  ImpliedImport,
@@ -622,9 +642,11 @@ var require_parser = __commonJS({
622
642
  NonNewlineWhitespace,
623
643
  __,
624
644
  Whitespace,
645
+ ExpressionDelimiter,
625
646
  StatementDelimiter,
626
647
  NonIdContinue,
627
648
  Loc,
649
+ Ampersand,
628
650
  As,
629
651
  Async,
630
652
  Await,
@@ -658,6 +680,7 @@ var require_parser = __commonJS({
658
680
  LetOrConst,
659
681
  Loop,
660
682
  New,
683
+ Not,
661
684
  Of,
662
685
  OpenBrace,
663
686
  OpenBracket,
@@ -671,6 +694,7 @@ var require_parser = __commonJS({
671
694
  SubstitutionStart,
672
695
  Switch,
673
696
  Target,
697
+ Then,
674
698
  Throw,
675
699
  TripleDoubleQuote,
676
700
  TripleSingleQuote,
@@ -761,7 +785,11 @@ var require_parser = __commonJS({
761
785
  InsertBreak,
762
786
  CoffeeCommentEnabled,
763
787
  CoffeeBooleansEnabled,
788
+ CoffeeForLoopsEnabled,
764
789
  CoffeeInterpolationEnabled,
790
+ CoffeeIsntEnabled,
791
+ CoffeeNotEnabled,
792
+ CoffeeOfEnabled,
765
793
  Reset,
766
794
  Init,
767
795
  Indent,
@@ -781,149 +809,154 @@ var require_parser = __commonJS({
781
809
  var $L6 = $L("this");
782
810
  var $L7 = $L("#");
783
811
  var $L8 = $L("@");
784
- var $L9 = $L("super");
785
- var $L10 = $L("import");
786
- var $L11 = $L("!");
787
- var $L12 = $L("::");
788
- var $L13 = $L("super[");
789
- var $L14 = $L("import.meta");
790
- var $L15 = $L(")");
791
- var $L16 = $L("->");
792
- var $L17 = $L("null");
793
- var $L18 = $L("true");
794
- var $L19 = $L("false");
795
- var $L20 = $L("yes");
796
- var $L21 = $L("on");
797
- var $L22 = $L("no");
798
- var $L23 = $L("off");
799
- var $L24 = $L(",");
800
- var $L25 = $L("]");
801
- var $L26 = $L("}");
802
- var $L27 = $L("**=");
803
- var $L28 = $L("*=");
804
- var $L29 = $L("/=");
805
- var $L30 = $L("%=");
806
- var $L31 = $L("+=");
807
- var $L32 = $L("-=");
808
- var $L33 = $L("<<=");
809
- var $L34 = $L(">>>=");
810
- var $L35 = $L(">>=");
811
- var $L36 = $L("&&=");
812
- var $L37 = $L("&=");
813
- var $L38 = $L("^=");
814
- var $L39 = $L("||=");
815
- var $L40 = $L("|=");
816
- var $L41 = $L("??=");
817
- var $L42 = $L("?=");
818
- var $L43 = $L("=");
819
- var $L44 = $L("**");
820
- var $L45 = $L("*");
821
- var $L46 = $L("/");
822
- var $L47 = $L("%");
823
- var $L48 = $L("+");
824
- var $L49 = $L("-");
825
- var $L50 = $L("<=");
826
- var $L51 = $L(">=");
827
- var $L52 = $L("<<");
828
- var $L53 = $L(">>>");
829
- var $L54 = $L(">>");
830
- var $L55 = $L(">");
831
- var $L56 = $L("!==");
832
- var $L57 = $L("!=");
833
- var $L58 = $L("is");
834
- var $L59 = $L("===");
835
- var $L60 = $L("==");
836
- var $L61 = $L("and");
837
- var $L62 = $L("&&");
838
- var $L63 = $L("or");
839
- var $L64 = $L("||");
840
- var $L65 = $L("??");
841
- var $L66 = $L("instanceof");
842
- var $L67 = $L("in");
843
- var $L68 = $L("&");
844
- var $L69 = $L("^");
845
- var $L70 = $L("|");
846
- var $L71 = $L(";");
847
- var $L72 = $L("finally");
848
- var $L73 = $L("break");
849
- var $L74 = $L("continue");
850
- var $L75 = $L("debugger");
851
- var $L76 = $L("import type");
852
- var $L77 = $L("default");
853
- var $L78 = $L(":=");
854
- var $L79 = $L("/*");
855
- var $L80 = $L("*/");
856
- var $L81 = $L("###");
857
- var $L82 = $L("as");
858
- var $L83 = $L("async");
859
- var $L84 = $L("await");
860
- var $L85 = $L("`");
861
- var $L86 = $L("case");
862
- var $L87 = $L("catch");
863
- var $L88 = $L("class");
864
- var $L89 = $L("#{");
865
- var $L90 = $L(":");
866
- var $L91 = $L("delete");
867
- var $L92 = $L("do");
868
- var $L93 = $L(".");
869
- var $L94 = $L("..");
870
- var $L95 = $L("...");
871
- var $L96 = $L('"');
872
- var $L97 = $L("else");
873
- var $L98 = $L("export");
874
- var $L99 = $L("for");
875
- var $L100 = $L("from");
876
- var $L101 = $L("function");
877
- var $L102 = $L("get");
878
- var $L103 = $L("set");
879
- var $L104 = $L("if");
880
- var $L105 = $L("let");
881
- var $L106 = $L("const");
882
- var $L107 = $L("loop");
883
- var $L108 = $L("new");
884
- var $L109 = $L("of");
885
- var $L110 = $L("{");
886
- var $L111 = $L("[");
887
- var $L112 = $L("(");
888
- var $L113 = $L("?");
889
- var $L114 = $L("return");
890
- var $L115 = $L("'");
891
- var $L116 = $L("static");
892
- var $L117 = $L("${");
893
- var $L118 = $L("switch");
894
- var $L119 = $L("target");
895
- var $L120 = $L("throw");
896
- var $L121 = $L('"""');
897
- var $L122 = $L("'''");
898
- var $L123 = $L("```");
899
- var $L124 = $L("try");
900
- var $L125 = $L("typeof");
901
- var $L126 = $L("unless");
902
- var $L127 = $L("until");
903
- var $L128 = $L("var");
904
- var $L129 = $L("void");
905
- var $L130 = $L("when");
906
- var $L131 = $L("while");
907
- var $L132 = $L("yield");
908
- var $L133 = $L("/>");
909
- var $L134 = $L("</");
910
- var $L135 = $L("<>");
911
- var $L136 = $L("</>");
912
- var $L137 = $L("declare");
913
- var $L138 = $L("type");
914
- var $L139 = $L("interface");
915
- var $L140 = $L("namespace");
916
- var $L141 = $L("readonly");
917
- var $L142 = $L("asserts");
918
- var $L143 = $L("keyof");
919
- var $L144 = $L("infer");
920
- var $L145 = $L("[]");
921
- var $L146 = $L("civet");
922
- var $L147 = $L(" ");
923
- var $L148 = $L(" ");
924
- var $R0 = $R(new RegExp("(of)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
812
+ var $L9 = $L(".");
813
+ var $L10 = $L("super");
814
+ var $L11 = $L("import");
815
+ var $L12 = $L("!");
816
+ var $L13 = $L("::");
817
+ var $L14 = $L("super[");
818
+ var $L15 = $L("import.meta");
819
+ var $L16 = $L(")");
820
+ var $L17 = $L("->");
821
+ var $L18 = $L("null");
822
+ var $L19 = $L("true");
823
+ var $L20 = $L("false");
824
+ var $L21 = $L("yes");
825
+ var $L22 = $L("on");
826
+ var $L23 = $L("no");
827
+ var $L24 = $L("off");
828
+ var $L25 = $L(",");
829
+ var $L26 = $L("]");
830
+ var $L27 = $L("}");
831
+ var $L28 = $L("**=");
832
+ var $L29 = $L("*=");
833
+ var $L30 = $L("/=");
834
+ var $L31 = $L("%=");
835
+ var $L32 = $L("+=");
836
+ var $L33 = $L("-=");
837
+ var $L34 = $L("<<=");
838
+ var $L35 = $L(">>>=");
839
+ var $L36 = $L(">>=");
840
+ var $L37 = $L("&&=");
841
+ var $L38 = $L("&=");
842
+ var $L39 = $L("^=");
843
+ var $L40 = $L("||=");
844
+ var $L41 = $L("|=");
845
+ var $L42 = $L("??=");
846
+ var $L43 = $L("?=");
847
+ var $L44 = $L("=");
848
+ var $L45 = $L("**");
849
+ var $L46 = $L("*");
850
+ var $L47 = $L("/");
851
+ var $L48 = $L("%");
852
+ var $L49 = $L("+");
853
+ var $L50 = $L("-");
854
+ var $L51 = $L("<=");
855
+ var $L52 = $L(">=");
856
+ var $L53 = $L("<<");
857
+ var $L54 = $L(">>>");
858
+ var $L55 = $L(">>");
859
+ var $L56 = $L(">");
860
+ var $L57 = $L("!==");
861
+ var $L58 = $L("!=");
862
+ var $L59 = $L("isnt");
863
+ var $L60 = $L("is");
864
+ var $L61 = $L("===");
865
+ var $L62 = $L("==");
866
+ var $L63 = $L("and");
867
+ var $L64 = $L("&&");
868
+ var $L65 = $L("of");
869
+ var $L66 = $L("or");
870
+ var $L67 = $L("||");
871
+ var $L68 = $L("??");
872
+ var $L69 = $L("instanceof");
873
+ var $L70 = $L("in");
874
+ var $L71 = $L("&");
875
+ var $L72 = $L("^");
876
+ var $L73 = $L("|");
877
+ var $L74 = $L(";");
878
+ var $L75 = $L("own");
879
+ var $L76 = $L("finally");
880
+ var $L77 = $L("break");
881
+ var $L78 = $L("continue");
882
+ var $L79 = $L("debugger");
883
+ var $L80 = $L("import type");
884
+ var $L81 = $L("default");
885
+ var $L82 = $L(":=");
886
+ var $L83 = $L("/*");
887
+ var $L84 = $L("*/");
888
+ var $L85 = $L("###");
889
+ var $L86 = $L("as");
890
+ var $L87 = $L("async");
891
+ var $L88 = $L("await");
892
+ var $L89 = $L("`");
893
+ var $L90 = $L("case");
894
+ var $L91 = $L("catch");
895
+ var $L92 = $L("class");
896
+ var $L93 = $L("#{");
897
+ var $L94 = $L(":");
898
+ var $L95 = $L("delete");
899
+ var $L96 = $L("do");
900
+ var $L97 = $L("..");
901
+ var $L98 = $L("...");
902
+ var $L99 = $L('"');
903
+ var $L100 = $L("else");
904
+ var $L101 = $L("export");
905
+ var $L102 = $L("for");
906
+ var $L103 = $L("from");
907
+ var $L104 = $L("function");
908
+ var $L105 = $L("get");
909
+ var $L106 = $L("set");
910
+ var $L107 = $L("if");
911
+ var $L108 = $L(" ");
912
+ var $L109 = $L("let");
913
+ var $L110 = $L("const");
914
+ var $L111 = $L("loop");
915
+ var $L112 = $L("new");
916
+ var $L113 = $L("not");
917
+ var $L114 = $L("{");
918
+ var $L115 = $L("[");
919
+ var $L116 = $L("(");
920
+ var $L117 = $L("?");
921
+ var $L118 = $L("return");
922
+ var $L119 = $L("'");
923
+ var $L120 = $L("static");
924
+ var $L121 = $L("${");
925
+ var $L122 = $L("switch");
926
+ var $L123 = $L("target");
927
+ var $L124 = $L("then");
928
+ var $L125 = $L("throw");
929
+ var $L126 = $L('"""');
930
+ var $L127 = $L("'''");
931
+ var $L128 = $L("```");
932
+ var $L129 = $L("try");
933
+ var $L130 = $L("typeof");
934
+ var $L131 = $L("unless");
935
+ var $L132 = $L("until");
936
+ var $L133 = $L("var");
937
+ var $L134 = $L("void");
938
+ var $L135 = $L("when");
939
+ var $L136 = $L("while");
940
+ var $L137 = $L("yield");
941
+ var $L138 = $L("/>");
942
+ var $L139 = $L("</");
943
+ var $L140 = $L("<>");
944
+ var $L141 = $L("</>");
945
+ var $L142 = $L("declare");
946
+ var $L143 = $L("type");
947
+ var $L144 = $L("interface");
948
+ var $L145 = $L("namespace");
949
+ var $L146 = $L("readonly");
950
+ var $L147 = $L("asserts");
951
+ var $L148 = $L("keyof");
952
+ var $L149 = $L("infer");
953
+ var $L150 = $L("[]");
954
+ var $L151 = $L("civet");
955
+ var $L152 = $L(" ");
956
+ var $L153 = $L(" ");
957
+ var $R0 = $R(new RegExp("(of|then|when)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
925
958
  var $R1 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
926
- var $R2 = $R(new RegExp("[!~+-]", "suy"));
959
+ var $R2 = $R(new RegExp("[!~+-](?!\\s)", "suy"));
927
960
  var $R3 = $R(new RegExp("(?=[\\s\\)])", "suy"));
928
961
  var $R4 = $R(new RegExp('[^;"\\s]+', "suy"));
929
962
  var $R5 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
@@ -945,27 +978,32 @@ var require_parser = __commonJS({
945
978
  var $R21 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
946
979
  var $R22 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
947
980
  var $R23 = $R(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
948
- var $R24 = $R(new RegExp("(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
949
- var $R25 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
950
- var $R26 = $R(new RegExp(".", "suy"));
951
- var $R27 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
952
- var $R28 = $R(new RegExp("[^\\r\\n]", "suy"));
953
- var $R29 = $R(new RegExp("[ \\t]+", "suy"));
954
- var $R30 = $R(new RegExp("[\\s]+", "suy"));
955
- var $R31 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
956
- var $R32 = $R(new RegExp("\\s", "suy"));
957
- var $R33 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
958
- var $R34 = $R(new RegExp('"[^"]*"', "suy"));
959
- var $R35 = $R(new RegExp("'[^']*'", "suy"));
960
- var $R36 = $R(new RegExp("[^{}<>]+", "suy"));
961
- var $R37 = $R(new RegExp("[+-]?", "suy"));
962
- var $R38 = $R(new RegExp("[+-]", "suy"));
963
- var $R39 = $R(new RegExp("#![^\\r\\n]*", "suy"));
964
- var $R40 = $R(new RegExp("[\\t ]*", "suy"));
965
- var $R41 = $R(new RegExp("[\\s]*", "suy"));
966
- var $R42 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)", "suy"));
967
- var $R43 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
968
- var Program$0 = $S(Reset, Init, __, $Q(TopLevelStatement), __);
981
+ var $R24 = $R(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
982
+ var $R25 = $R(new RegExp("(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
983
+ var $R26 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
984
+ var $R27 = $R(new RegExp(".", "suy"));
985
+ var $R28 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
986
+ var $R29 = $R(new RegExp("[^\\r\\n]", "suy"));
987
+ var $R30 = $R(new RegExp("[ \\t]+", "suy"));
988
+ var $R31 = $R(new RegExp("[\\s]+", "suy"));
989
+ var $R32 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
990
+ var $R33 = $R(new RegExp("\\s", "suy"));
991
+ var $R34 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
992
+ var $R35 = $R(new RegExp('"[^"]*"', "suy"));
993
+ var $R36 = $R(new RegExp("'[^']*'", "suy"));
994
+ var $R37 = $R(new RegExp("[^{}<>]+", "suy"));
995
+ var $R38 = $R(new RegExp("[+-]?", "suy"));
996
+ var $R39 = $R(new RegExp("[+-]", "suy"));
997
+ var $R40 = $R(new RegExp("#![^\\r\\n]*", "suy"));
998
+ var $R41 = $R(new RegExp("[\\t ]*", "suy"));
999
+ var $R42 = $R(new RegExp("[\\s]*", "suy"));
1000
+ var $R43 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)", "suy"));
1001
+ var $R44 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
1002
+ var Program$0 = $TS($S(Reset, Init, __, $Q(TopLevelStatement), __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1003
+ var statements = $4;
1004
+ module2.processProgram(statements);
1005
+ return $0;
1006
+ });
969
1007
  function Program(state) {
970
1008
  if (state.verbose)
971
1009
  console.log("ENTER:", "Program");
@@ -985,6 +1023,31 @@ var require_parser = __commonJS({
985
1023
  return TopLevelStatement$0(state);
986
1024
  }
987
1025
  }
1026
+ var ExtendedExpression$0 = $TS($S(__, ExpressionizedStatement), function($skip, $loc, $0, $1, $2) {
1027
+ if ($1.length) {
1028
+ $2.children.splice(0, 0, ...$1);
1029
+ }
1030
+ return $2;
1031
+ });
1032
+ var ExtendedExpression$1 = AssignmentExpression;
1033
+ function ExtendedExpression(state) {
1034
+ if (state.tokenize) {
1035
+ return $TOKEN("ExtendedExpression", state, ExtendedExpression$0(state) || ExtendedExpression$1(state));
1036
+ } else {
1037
+ return ExtendedExpression$0(state) || ExtendedExpression$1(state);
1038
+ }
1039
+ }
1040
+ var ExpressionizedStatement$0 = DebuggerExpression;
1041
+ var ExpressionizedStatement$1 = IfExpression;
1042
+ var ExpressionizedStatement$2 = SwitchExpression;
1043
+ var ExpressionizedStatement$3 = ThrowExpression;
1044
+ function ExpressionizedStatement(state) {
1045
+ if (state.tokenize) {
1046
+ return $TOKEN("ExpressionizedStatement", state, ExpressionizedStatement$0(state) || ExpressionizedStatement$1(state) || ExpressionizedStatement$2(state) || ExpressionizedStatement$3(state));
1047
+ } else {
1048
+ return ExpressionizedStatement$0(state) || ExpressionizedStatement$1(state) || ExpressionizedStatement$2(state) || ExpressionizedStatement$3(state);
1049
+ }
1050
+ }
988
1051
  var Expression$0 = $TS($S(AssignmentExpression, $Q($S(__, Comma, AssignmentExpression))), function($skip, $loc, $0, $1, $2) {
989
1052
  if ($2.length == 0)
990
1053
  return $1;
@@ -1056,7 +1119,7 @@ var require_parser = __commonJS({
1056
1119
  return NestedArgument$0(state);
1057
1120
  }
1058
1121
  }
1059
- var InlineArgumentExpressions$0 = $TS($S($S($E(DotDotDot), AssignmentExpressionRest), $Q($S(__, Comma, $Q(TrailingComment), $E(DotDotDot), AssignmentExpressionRest))), function($skip, $loc, $0, $1, $2) {
1122
+ var InlineArgumentExpressions$0 = $TS($S($S($E(DotDotDot), ExtendedExpression), $Q($S(__, Comma, $Q(TrailingComment), $E(DotDotDot), ExtendedExpression))), function($skip, $loc, $0, $1, $2) {
1060
1123
  if ($2.length == 0)
1061
1124
  return $1;
1062
1125
  return $0;
@@ -1110,7 +1173,23 @@ var require_parser = __commonJS({
1110
1173
  }
1111
1174
  var BinaryOpExpression$0 = $TS($S(UnaryExpression, $Q($S(__, BinaryOp, __, UnaryExpression))), function($skip, $loc, $0, $1, $2) {
1112
1175
  if ($2.length) {
1113
- return module2.expandChainedComparisons($0);
1176
+ const expandedOps = module2.expandChainedComparisons($0);
1177
+ let i = 2;
1178
+ while (i < expandedOps.length) {
1179
+ const op = expandedOps[i];
1180
+ if (op.type === "Ref") {
1181
+ const [a, wsOp, op2, wsB, b] = expandedOps.slice(i - 2, i + 3);
1182
+ module2.insertTrimmingSpace(wsOp, "");
1183
+ module2.insertTrimmingSpace(wsB, "");
1184
+ expandedOps.splice(i - 2, 5, {
1185
+ type: "Call",
1186
+ children: [wsOp, op2, ".call(", wsB, b, ", ", a, ") >= 0"]
1187
+ });
1188
+ } else {
1189
+ i += 4;
1190
+ }
1191
+ }
1192
+ return expandedOps;
1114
1193
  }
1115
1194
  return $1;
1116
1195
  });
@@ -1184,12 +1263,17 @@ var require_parser = __commonJS({
1184
1263
  return UpdateExpressionSymbol$0(state);
1185
1264
  }
1186
1265
  }
1187
- var AssignmentExpression$0 = $TS($S($Q(TrailingComment), AssignmentExpressionRest), function($skip, $loc, $0, $1, $2) {
1188
- if ($1.length)
1266
+ var AssignmentExpression$0 = $TS($S($Q(TrailingComment), AssignmentExpressionTail), function($skip, $loc, $0, $1, $2) {
1267
+ if ($1.length) {
1268
+ if ($2.children) {
1269
+ $2.children.splice(0, 0, ...$1);
1270
+ return $2;
1271
+ }
1189
1272
  return $0;
1273
+ }
1190
1274
  return $2;
1191
1275
  });
1192
- var AssignmentExpression$1 = $S(__, AssignmentExpressionRest);
1276
+ var AssignmentExpression$1 = $S(__, AssignmentExpressionTail);
1193
1277
  function AssignmentExpression(state) {
1194
1278
  if (state.tokenize) {
1195
1279
  return $TOKEN("AssignmentExpression", state, AssignmentExpression$0(state) || AssignmentExpression$1(state));
@@ -1197,71 +1281,105 @@ var require_parser = __commonJS({
1197
1281
  return AssignmentExpression$0(state) || AssignmentExpression$1(state);
1198
1282
  }
1199
1283
  }
1200
- var AssignmentExpressionRest$0 = AwaitExpression;
1201
- var AssignmentExpressionRest$1 = YieldExpression;
1202
- var AssignmentExpressionRest$2 = $S($E($S(Async, __)), ArrowFunction);
1203
- var AssignmentExpressionRest$3 = $TS($S($P($S(__, LeftHandSideExpression, __, AssignmentOp)), Expression), function($skip, $loc, $0, $1, $2) {
1204
- const lastAssignment = $1[$1.length - 1];
1205
- if (lastAssignment[3].token === "=") {
1206
- const lhs = lastAssignment[1];
1207
- if (Array.isArray(lhs) && lhs.length > 1) {
1208
- const props = lhs[lhs.length - 1];
1209
- if (Array.isArray(props)) {
1210
- const lastProp = props[props.length - 1];
1211
- if (lastProp.type === "SliceExpression") {
1212
- const { start, end, children: c } = lastProp;
1213
- c[0].token = ".splice(";
1214
- c[1] = start;
1215
- c[2] = ", ";
1216
- if (end)
1217
- c[3] = [end, " - ", start];
1218
- else
1219
- c[3] = ["1/0"];
1220
- c[4] = [", ...", $2];
1221
- c[5] = ")";
1222
- lastAssignment.pop();
1223
- if (module2.isWhitespaceOrEmpty(lastAssignment[2]))
1284
+ var AssignmentExpressionTail$0 = YieldExpression;
1285
+ var AssignmentExpressionTail$1 = ArrowFunction;
1286
+ var AssignmentExpressionTail$2 = $TS($S($P($S(__, LeftHandSideExpression, __, AssignmentOp)), ExtendedExpression), function($skip, $loc, $0, $1, $2) {
1287
+ let tail = [], i = 0, len = $1.length;
1288
+ while (i < len) {
1289
+ const lastAssignment = $1[i++];
1290
+ const [, lhs, , op] = lastAssignment;
1291
+ if (op.token !== "=")
1292
+ continue;
1293
+ if (lhs.type === "ObjectExpression") {
1294
+ lhs.children.splice(0, 0, "(");
1295
+ tail.push(")");
1296
+ break;
1297
+ }
1298
+ }
1299
+ i = len - 1;
1300
+ while (i >= 0) {
1301
+ const lastAssignment = $1[i];
1302
+ if (lastAssignment[3].token === "=") {
1303
+ const lhs = lastAssignment[1];
1304
+ if (Array.isArray(lhs) && lhs.length > 1) {
1305
+ const props = lhs[lhs.length - 1];
1306
+ if (Array.isArray(props)) {
1307
+ const lastProp = props[props.length - 1];
1308
+ if (lastProp.type === "SliceExpression") {
1309
+ const { start, end, children: c } = lastProp;
1310
+ c[0].token = ".splice(";
1311
+ c[1] = start;
1312
+ c[2] = ", ";
1313
+ if (end)
1314
+ c[3] = [end, " - ", start];
1315
+ else
1316
+ c[3] = ["1/0"];
1317
+ c[4] = [", ...", $2];
1318
+ c[5] = ")";
1224
1319
  lastAssignment.pop();
1225
- return $1;
1320
+ if (module2.isWhitespaceOrEmpty(lastAssignment[2]))
1321
+ lastAssignment.pop();
1322
+ if ($1.length > 1) {
1323
+ throw new Error("Not implemented yet! TODO: Handle multiple splice assignments");
1324
+ }
1325
+ return $1;
1326
+ }
1226
1327
  }
1227
1328
  }
1228
1329
  }
1330
+ i--;
1229
1331
  }
1332
+ const names = $1.flatMap(([, l]) => l.names || []);
1230
1333
  return {
1231
1334
  type: "AssignmentExpression",
1232
- children: $0
1335
+ children: [...$0, ...tail],
1336
+ names
1233
1337
  };
1234
1338
  });
1235
- var AssignmentExpressionRest$4 = ConditionalExpression;
1236
- function AssignmentExpressionRest(state) {
1339
+ var AssignmentExpressionTail$3 = ConditionalExpression;
1340
+ function AssignmentExpressionTail(state) {
1237
1341
  if (state.tokenize) {
1238
- return $TOKEN("AssignmentExpressionRest", state, AssignmentExpressionRest$0(state) || AssignmentExpressionRest$1(state) || AssignmentExpressionRest$2(state) || AssignmentExpressionRest$3(state) || AssignmentExpressionRest$4(state));
1342
+ return $TOKEN("AssignmentExpressionTail", state, AssignmentExpressionTail$0(state) || AssignmentExpressionTail$1(state) || AssignmentExpressionTail$2(state) || AssignmentExpressionTail$3(state));
1239
1343
  } else {
1240
- return AssignmentExpressionRest$0(state) || AssignmentExpressionRest$1(state) || AssignmentExpressionRest$2(state) || AssignmentExpressionRest$3(state) || AssignmentExpressionRest$4(state);
1344
+ return AssignmentExpressionTail$0(state) || AssignmentExpressionTail$1(state) || AssignmentExpressionTail$2(state) || AssignmentExpressionTail$3(state);
1241
1345
  }
1242
1346
  }
1243
- var AwaitExpression$0 = $S(Await, $Q(TrailingComment), AssignmentExpression);
1244
- function AwaitExpression(state) {
1347
+ var YieldExpression$0 = $S(Yield, YieldTail);
1348
+ function YieldExpression(state) {
1245
1349
  if (state.verbose)
1246
- console.log("ENTER:", "AwaitExpression");
1350
+ console.log("ENTER:", "YieldExpression");
1247
1351
  if (state.tokenize) {
1248
- return $TOKEN("AwaitExpression", state, AwaitExpression$0(state));
1352
+ return $TOKEN("YieldExpression", state, YieldExpression$0(state));
1249
1353
  } else {
1250
- return AwaitExpression$0(state);
1354
+ return YieldExpression$0(state);
1251
1355
  }
1252
1356
  }
1253
- var YieldExpression$0 = $S(Yield, $E($S($Q(TrailingComment), Star)), AssignmentExpression);
1254
- function YieldExpression(state) {
1357
+ var YieldTail$0 = $Y(EOS);
1358
+ var YieldTail$1 = $S($E($S($Q(TrailingComment), Star)), AssignmentExpression);
1359
+ function YieldTail(state) {
1360
+ if (state.tokenize) {
1361
+ return $TOKEN("YieldTail", state, YieldTail$0(state) || YieldTail$1(state));
1362
+ } else {
1363
+ return YieldTail$0(state) || YieldTail$1(state);
1364
+ }
1365
+ }
1366
+ var ArrowFunction$0 = $TS($S($E($S(Async, __)), ArrowFunctionTail), function($skip, $loc, $0, $1, $2) {
1367
+ if ($1)
1368
+ $2.children.unshift($1);
1369
+ return $2;
1370
+ });
1371
+ function ArrowFunction(state) {
1255
1372
  if (state.verbose)
1256
- console.log("ENTER:", "YieldExpression");
1373
+ console.log("ENTER:", "ArrowFunction");
1257
1374
  if (state.tokenize) {
1258
- return $TOKEN("YieldExpression", state, YieldExpression$0(state));
1375
+ return $TOKEN("ArrowFunction", state, ArrowFunction$0(state));
1259
1376
  } else {
1260
- return YieldExpression$0(state);
1377
+ return ArrowFunction$0(state);
1261
1378
  }
1262
1379
  }
1263
- var ArrowFunction$0 = ThinArrowFunction;
1264
- var ArrowFunction$1 = $TS($S(Parameters, $E(ReturnTypeSuffix), FatArrow, FatArrowBody), function($skip, $loc, $0, $1, $2, $3, $4) {
1380
+ var ArrowFunctionTail$0 = ThinArrowFunction;
1381
+ var ArrowFunctionTail$1 = $TS($S(Parameters, $E(ReturnTypeSuffix), FatArrow, FatArrowBody), function($skip, $loc, $0, $1, $2, $3, $4) {
1382
+ var parameters = $1;
1265
1383
  var suffix = $2;
1266
1384
  var expOrBlock = $4;
1267
1385
  const isVoid = suffix?.children?.[1]?.[0]?.[1]?.token === "void";
@@ -1270,15 +1388,19 @@ var require_parser = __commonJS({
1270
1388
  module2.addImplicitReturns(expOrBlock);
1271
1389
  }
1272
1390
  return {
1273
- type: "FunctionExpression",
1391
+ type: "ArrowFunction",
1392
+ parameters,
1393
+ returnType: suffix,
1394
+ ts: false,
1395
+ block: expOrBlock,
1274
1396
  children: $0
1275
1397
  };
1276
1398
  });
1277
- function ArrowFunction(state) {
1399
+ function ArrowFunctionTail(state) {
1278
1400
  if (state.tokenize) {
1279
- return $TOKEN("ArrowFunction", state, ArrowFunction$0(state) || ArrowFunction$1(state));
1401
+ return $TOKEN("ArrowFunctionTail", state, ArrowFunctionTail$0(state) || ArrowFunctionTail$1(state));
1280
1402
  } else {
1281
- return ArrowFunction$0(state) || ArrowFunction$1(state);
1403
+ return ArrowFunctionTail$0(state) || ArrowFunctionTail$1(state);
1282
1404
  }
1283
1405
  }
1284
1406
  var FatArrow$0 = $TS($S(__, $EXPECT($L3, fail, 'FatArrow "=>"')), function($skip, $loc, $0, $1, $2) {
@@ -1296,25 +1418,24 @@ var require_parser = __commonJS({
1296
1418
  return FatArrow$0(state);
1297
1419
  }
1298
1420
  }
1299
- var FatArrowBody$0 = $T($S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace), function(value) {
1421
+ var FatArrowBody$0 = $T($S(__, OpenBrace, EOS, NestedBlockStatements, __, CloseBrace), function(value) {
1300
1422
  var exps = value[3];
1301
1423
  return { "type": "BlockStatement", "expressions": exps, "children": value };
1302
1424
  });
1303
- var FatArrowBody$1 = $T($S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace), function(value) {
1425
+ var FatArrowBody$1 = $T($S(InsertOpenBrace, EOS, NestedBlockStatements, InsertNewline, InsertIndent, InsertCloseBrace), function(value) {
1304
1426
  var exps = value[2];
1305
1427
  return { "type": "BlockStatement", "expressions": exps, "children": value };
1306
1428
  });
1307
1429
  var FatArrowBody$2 = AssignmentExpression;
1308
- var FatArrowBody$3 = $S(__, AssignmentExpression);
1309
- var FatArrowBody$4 = EmptyBlock;
1430
+ var FatArrowBody$3 = EmptyBlock;
1310
1431
  function FatArrowBody(state) {
1311
1432
  if (state.tokenize) {
1312
- return $TOKEN("FatArrowBody", state, FatArrowBody$0(state) || FatArrowBody$1(state) || FatArrowBody$2(state) || FatArrowBody$3(state) || FatArrowBody$4(state));
1433
+ return $TOKEN("FatArrowBody", state, FatArrowBody$0(state) || FatArrowBody$1(state) || FatArrowBody$2(state) || FatArrowBody$3(state));
1313
1434
  } else {
1314
- return FatArrowBody$0(state) || FatArrowBody$1(state) || FatArrowBody$2(state) || FatArrowBody$3(state) || FatArrowBody$4(state);
1435
+ return FatArrowBody$0(state) || FatArrowBody$1(state) || FatArrowBody$2(state) || FatArrowBody$3(state);
1315
1436
  }
1316
1437
  }
1317
- var ConditionalExpression$0 = $TS($S(ShortCircuitExpression, $E($S(__, QuestionMark, AssignmentExpression, __, Colon, AssignmentExpression))), function($skip, $loc, $0, $1, $2) {
1438
+ var ConditionalExpression$0 = $TS($S(ShortCircuitExpression, $E($S(__, QuestionMark, ExtendedExpression, __, Colon, ExtendedExpression))), function($skip, $loc, $0, $1, $2) {
1318
1439
  if ($2)
1319
1440
  return $0;
1320
1441
  return $1;
@@ -1347,7 +1468,7 @@ var require_parser = __commonJS({
1347
1468
  var PrimaryExpression$6 = ClassExpression;
1348
1469
  var PrimaryExpression$7 = RegularExpressionLiteral;
1349
1470
  var PrimaryExpression$8 = TemplateLiteral;
1350
- var PrimaryExpression$9 = $S(OpenParen, Expression, __, CloseParen);
1471
+ var PrimaryExpression$9 = $S(OpenParen, ExtendedExpression, __, CloseParen);
1351
1472
  var PrimaryExpression$10 = JSXElement;
1352
1473
  var PrimaryExpression$11 = JSXFragment;
1353
1474
  function PrimaryExpression(state) {
@@ -1443,7 +1564,7 @@ var require_parser = __commonJS({
1443
1564
  return ClassElement$0(state) || ClassElement$1(state);
1444
1565
  }
1445
1566
  }
1446
- var FieldDefinition$0 = $TS($S(InsertReadonly, ClassElementName, $E(TypeSuffix), __, ConstAssignment, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
1567
+ var FieldDefinition$0 = $TS($S(InsertReadonly, ClassElementName, $E(TypeSuffix), __, ConstAssignment, ExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
1447
1568
  var r = $1;
1448
1569
  var ca = $5;
1449
1570
  r.children[0].$loc = {
@@ -1486,27 +1607,22 @@ var require_parser = __commonJS({
1486
1607
  return AtAccessor$0(state);
1487
1608
  }
1488
1609
  }
1489
- var LeftHandSideExpression$0 = NewExpression;
1490
- var LeftHandSideExpression$1 = CallExpression;
1610
+ var LeftHandSideExpression$0 = $TS($S($Q($S(New, $N($EXPECT($L9, fail, 'LeftHandSideExpression "."')), __)), CallExpression), function($skip, $loc, $0, $1, $2) {
1611
+ if ($1.length)
1612
+ return $0;
1613
+ return $2;
1614
+ });
1491
1615
  function LeftHandSideExpression(state) {
1492
- if (state.tokenize) {
1493
- return $TOKEN("LeftHandSideExpression", state, LeftHandSideExpression$0(state) || LeftHandSideExpression$1(state));
1494
- } else {
1495
- return LeftHandSideExpression$0(state) || LeftHandSideExpression$1(state);
1496
- }
1497
- }
1498
- var NewExpression$0 = $S($P($S(New, __)), CallExpression);
1499
- function NewExpression(state) {
1500
1616
  if (state.verbose)
1501
- console.log("ENTER:", "NewExpression");
1617
+ console.log("ENTER:", "LeftHandSideExpression");
1502
1618
  if (state.tokenize) {
1503
- return $TOKEN("NewExpression", state, NewExpression$0(state));
1619
+ return $TOKEN("LeftHandSideExpression", state, LeftHandSideExpression$0(state));
1504
1620
  } else {
1505
- return NewExpression$0(state);
1621
+ return LeftHandSideExpression$0(state);
1506
1622
  }
1507
1623
  }
1508
- var CallExpression$0 = $S($EXPECT($L9, fail, 'CallExpression "super"'), ArgumentsWithTrailingCallExpressions);
1509
- var CallExpression$1 = $S($EXPECT($L10, fail, 'CallExpression "import"'), __, OpenParen, AssignmentExpression, __, CloseParen);
1624
+ var CallExpression$0 = $S($EXPECT($L10, fail, 'CallExpression "super"'), ArgumentsWithTrailingCallExpressions);
1625
+ var CallExpression$1 = $S($EXPECT($L11, fail, 'CallExpression "import"'), __, OpenParen, ExtendedExpression, __, CloseParen);
1510
1626
  var CallExpression$2 = $TS($S(MemberExpression, $Q(CallExpressionRest)), function($skip, $loc, $0, $1, $2) {
1511
1627
  if ($2.length)
1512
1628
  return $0;
@@ -1539,7 +1655,7 @@ var require_parser = __commonJS({
1539
1655
  return OptionalShorthand$0(state);
1540
1656
  }
1541
1657
  }
1542
- var NonNullAssertion$0 = $T($EXPECT($L11, fail, 'NonNullAssertion "!"'), function(value) {
1658
+ var NonNullAssertion$0 = $T($EXPECT($L12, fail, 'NonNullAssertion "!"'), function(value) {
1543
1659
  return { "ts": true, "children": value };
1544
1660
  });
1545
1661
  function NonNullAssertion(state) {
@@ -1551,7 +1667,7 @@ var require_parser = __commonJS({
1551
1667
  return NonNullAssertion$0(state);
1552
1668
  }
1553
1669
  }
1554
- var AdditionalReservedWords$0 = $R$0($EXPECT($R0, fail, "AdditionalReservedWords /(of)(?!\\p{ID_Continue}|[\\u200C\\u200D$])/"));
1670
+ var AdditionalReservedWords$0 = $R$0($EXPECT($R0, fail, "AdditionalReservedWords /(of|then|when)(?!\\p{ID_Continue}|[\\u200C\\u200D$])/"));
1555
1671
  function AdditionalReservedWords(state) {
1556
1672
  if (state.verbose)
1557
1673
  console.log("ENTER:", "AdditionalReservedWords");
@@ -1566,8 +1682,8 @@ var require_parser = __commonJS({
1566
1682
  return $0;
1567
1683
  return $1;
1568
1684
  });
1569
- var MemberExpression$1 = $S($Q(TrailingComment), SuperProperty);
1570
- var MemberExpression$2 = $S($Q(TrailingComment), MetaProperty);
1685
+ var MemberExpression$1 = SuperProperty;
1686
+ var MemberExpression$2 = MetaProperty;
1571
1687
  function MemberExpression(state) {
1572
1688
  if (state.tokenize) {
1573
1689
  return $TOKEN("MemberExpression", state, MemberExpression$0(state) || MemberExpression$1(state) || MemberExpression$2(state));
@@ -1576,12 +1692,20 @@ var require_parser = __commonJS({
1576
1692
  }
1577
1693
  }
1578
1694
  var MemberExpressionRest$0 = $TS($S($E($C(OptionalShorthand, NonNullAssertion)), MemberBracketContent), function($skip, $loc, $0, $1, $2) {
1579
- if ($1)
1695
+ if ($1) {
1696
+ if ($1.length === 2 && $2.type === "SliceExpression") {
1697
+ $1.pop();
1698
+ }
1580
1699
  return $0;
1700
+ }
1701
+ return $2;
1702
+ });
1703
+ var MemberExpressionRest$1 = $TS($S($E($S($Y(EOS), IndentedFurther)), PropertyAccess), function($skip, $loc, $0, $1, $2) {
1704
+ if ($1)
1705
+ $2.children.unshift($1[1]);
1581
1706
  return $2;
1582
1707
  });
1583
- var MemberExpressionRest$1 = $S($E($S($Y(EOS), IndentedFurther)), PropertyAccess);
1584
- var MemberExpressionRest$2 = $TS($S($E($S($Y(EOS), IndentedFurther)), $EXPECT($L12, fail, 'MemberExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2, $3) {
1708
+ var MemberExpressionRest$2 = $TS($S($E($S($Y(EOS), IndentedFurther)), $EXPECT($L13, fail, 'MemberExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2, $3) {
1585
1709
  var id = $3;
1586
1710
  if (id)
1587
1711
  return [".prototype.", id];
@@ -1595,7 +1719,7 @@ var require_parser = __commonJS({
1595
1719
  return MemberExpressionRest$0(state) || MemberExpressionRest$1(state) || MemberExpressionRest$2(state) || MemberExpressionRest$3(state);
1596
1720
  }
1597
1721
  }
1598
- var MemberBracketContent$0 = $TS($S(OpenBracket, Expression, $E($S($C(DotDotDot, DotDot), $E(Expression))), __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1722
+ var MemberBracketContent$0 = $TS($S(OpenBracket, ExtendedExpression, $E($S($C(DotDotDot, DotDot), $E(ExtendedExpression))), __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1599
1723
  if ($3) {
1600
1724
  const sep = $3[0];
1601
1725
  const end = $3[1];
@@ -1637,7 +1761,14 @@ var require_parser = __commonJS({
1637
1761
  return MemberBracketContent$0(state);
1638
1762
  }
1639
1763
  }
1640
- var PropertyAccess$0 = $S($E($C(QuestionMark, NonNullAssertion)), Dot, $C(IdentifierName, PrivateIdentifier));
1764
+ var PropertyAccess$0 = $TS($S($E($C(QuestionMark, NonNullAssertion)), Dot, $C(IdentifierName, PrivateIdentifier)), function($skip, $loc, $0, $1, $2, $3) {
1765
+ var id = $3;
1766
+ id.type = "PropertyAccess";
1767
+ id.children.unshift($2);
1768
+ if ($1)
1769
+ id.children.unshift($1);
1770
+ return id;
1771
+ });
1641
1772
  function PropertyAccess(state) {
1642
1773
  if (state.verbose)
1643
1774
  console.log("ENTER:", "PropertyAccess");
@@ -1647,7 +1778,7 @@ var require_parser = __commonJS({
1647
1778
  return PropertyAccess$0(state);
1648
1779
  }
1649
1780
  }
1650
- var SuperProperty$0 = $S($EXPECT($L13, fail, 'SuperProperty "super["'), Expression, __, CloseBracket);
1781
+ var SuperProperty$0 = $S($EXPECT($L14, fail, 'SuperProperty "super["'), ExtendedExpression, __, CloseBracket);
1651
1782
  function SuperProperty(state) {
1652
1783
  if (state.verbose)
1653
1784
  console.log("ENTER:", "SuperProperty");
@@ -1658,7 +1789,7 @@ var require_parser = __commonJS({
1658
1789
  }
1659
1790
  }
1660
1791
  var MetaProperty$0 = $S(New, Dot, Target);
1661
- var MetaProperty$1 = $TV($EXPECT($L14, fail, 'MetaProperty "import.meta"'), function($skip, $loc, $0, $1) {
1792
+ var MetaProperty$1 = $TV($EXPECT($L15, fail, 'MetaProperty "import.meta"'), function($skip, $loc, $0, $1) {
1662
1793
  return { $loc, token: $1 };
1663
1794
  });
1664
1795
  function MetaProperty(state) {
@@ -1670,7 +1801,11 @@ var require_parser = __commonJS({
1670
1801
  }
1671
1802
  var Parameters$0 = NonEmptyParameters;
1672
1803
  var Parameters$1 = $TV($EXPECT($L0, fail, 'Parameters ""'), function($skip, $loc, $0, $1) {
1673
- return { $loc, token: "()" };
1804
+ return {
1805
+ type: "Parameters",
1806
+ children: [{ $loc, token: "()" }],
1807
+ names: []
1808
+ };
1674
1809
  });
1675
1810
  function Parameters(state) {
1676
1811
  if (state.tokenize) {
@@ -1679,7 +1814,13 @@ var require_parser = __commonJS({
1679
1814
  return Parameters$0(state) || Parameters$1(state);
1680
1815
  }
1681
1816
  }
1682
- var NonEmptyParameters$0 = $S($E(TypeParameters), OpenParen, $Q(ParameterElement), $E(FunctionRestParameter), __, CloseParen);
1817
+ var NonEmptyParameters$0 = $TS($S($E(TypeParameters), OpenParen, $Q(ParameterElement), $E(FunctionRestParameter), __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
1818
+ return {
1819
+ type: "Parameters",
1820
+ children: $0,
1821
+ names: $3.flatMap((p) => p.names)
1822
+ };
1823
+ });
1683
1824
  function NonEmptyParameters(state) {
1684
1825
  if (state.verbose)
1685
1826
  console.log("ENTER:", "NonEmptyParameters");
@@ -1699,7 +1840,13 @@ var require_parser = __commonJS({
1699
1840
  return FunctionRestParameter$0(state);
1700
1841
  }
1701
1842
  }
1702
- var ParameterElement$0 = $S(__, $C(BindingIdentifier, BindingPattern), $E(TypeSuffix), $E(Initializer), ParameterElementDelimiter);
1843
+ var ParameterElement$0 = $TS($S($C(BindingIdentifier, BindingPattern), $E(TypeSuffix), $E(Initializer), ParameterElementDelimiter), function($skip, $loc, $0, $1, $2, $3, $4) {
1844
+ return {
1845
+ type: "Parameter",
1846
+ children: $0,
1847
+ names: $1.names
1848
+ };
1849
+ });
1703
1850
  function ParameterElement(state) {
1704
1851
  if (state.verbose)
1705
1852
  console.log("ENTER:", "ParameterElement");
@@ -1710,7 +1857,7 @@ var require_parser = __commonJS({
1710
1857
  }
1711
1858
  }
1712
1859
  var ParameterElementDelimiter$0 = $S($Q(_), Comma);
1713
- var ParameterElementDelimiter$1 = $Y($S(__, $EXPECT($L15, fail, 'ParameterElementDelimiter ")"')));
1860
+ var ParameterElementDelimiter$1 = $Y($S(__, $EXPECT($L16, fail, 'ParameterElementDelimiter ")"')));
1714
1861
  var ParameterElementDelimiter$2 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
1715
1862
  return { $loc, token: "," };
1716
1863
  });
@@ -1721,7 +1868,10 @@ var require_parser = __commonJS({
1721
1868
  return ParameterElementDelimiter$0(state) || ParameterElementDelimiter$1(state) || ParameterElementDelimiter$2(state);
1722
1869
  }
1723
1870
  }
1724
- var BindingIdentifier$0 = $S(__, Identifier);
1871
+ var BindingIdentifier$0 = $TS($S(__, Identifier), function($skip, $loc, $0, $1, $2) {
1872
+ $2.children.unshift($1);
1873
+ return $2;
1874
+ });
1725
1875
  function BindingIdentifier(state) {
1726
1876
  if (state.verbose)
1727
1877
  console.log("ENTER:", "BindingIdentifier");
@@ -1731,8 +1881,16 @@ var require_parser = __commonJS({
1731
1881
  return BindingIdentifier$0(state);
1732
1882
  }
1733
1883
  }
1734
- var BindingPattern$0 = $S(__, ObjectBindingPattern);
1735
- var BindingPattern$1 = $S(__, ArrayBindingPattern);
1884
+ var BindingPattern$0 = $TS($S(__, ObjectBindingPattern), function($skip, $loc, $0, $1, $2) {
1885
+ var p = $2;
1886
+ p.children.unshift($1);
1887
+ return p;
1888
+ });
1889
+ var BindingPattern$1 = $TS($S(__, ArrayBindingPattern), function($skip, $loc, $0, $1, $2) {
1890
+ var p = $2;
1891
+ p.children.unshift($1);
1892
+ return p;
1893
+ });
1736
1894
  function BindingPattern(state) {
1737
1895
  if (state.tokenize) {
1738
1896
  return $TOKEN("BindingPattern", state, BindingPattern$0(state) || BindingPattern$1(state));
@@ -1740,32 +1898,111 @@ var require_parser = __commonJS({
1740
1898
  return BindingPattern$0(state) || BindingPattern$1(state);
1741
1899
  }
1742
1900
  }
1743
- var ObjectBindingPattern$0 = $S(OpenBrace, $Y(EOS), NestedBindingProperties, __, CloseBrace);
1744
- var ObjectBindingPattern$1 = $S(OpenBrace, $Q(BindingProperty), $E($S(__, BindingRestProperty)), __, CloseBrace);
1901
+ var ObjectBindingPattern$0 = $TS($S(OpenBrace, ObjectBindingPatternContent, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
1902
+ var c = $2;
1903
+ c.children.unshift($1);
1904
+ c.children.push($3, $4);
1905
+ return c;
1906
+ });
1745
1907
  function ObjectBindingPattern(state) {
1908
+ if (state.verbose)
1909
+ console.log("ENTER:", "ObjectBindingPattern");
1910
+ if (state.tokenize) {
1911
+ return $TOKEN("ObjectBindingPattern", state, ObjectBindingPattern$0(state));
1912
+ } else {
1913
+ return ObjectBindingPattern$0(state);
1914
+ }
1915
+ }
1916
+ var ObjectBindingPatternContent$0 = $T($S($Y(EOS), NestedBindingProperties), function(value) {
1917
+ return value[1];
1918
+ });
1919
+ var ObjectBindingPatternContent$1 = $TS($S($Q(BindingProperty), $E($S(__, BindingRestProperty))), function($skip, $loc, $0, $1, $2) {
1920
+ var props = $1;
1921
+ var rest = $2;
1922
+ const names = props.flatMap((p) => p.names);
1923
+ if (rest) {
1924
+ props.push(...rest);
1925
+ names.push(...rest[1].names);
1926
+ }
1927
+ return {
1928
+ type: "BindingPattern",
1929
+ names,
1930
+ children: props
1931
+ };
1932
+ });
1933
+ function ObjectBindingPatternContent(state) {
1746
1934
  if (state.tokenize) {
1747
- return $TOKEN("ObjectBindingPattern", state, ObjectBindingPattern$0(state) || ObjectBindingPattern$1(state));
1935
+ return $TOKEN("ObjectBindingPatternContent", state, ObjectBindingPatternContent$0(state) || ObjectBindingPatternContent$1(state));
1748
1936
  } else {
1749
- return ObjectBindingPattern$0(state) || ObjectBindingPattern$1(state);
1937
+ return ObjectBindingPatternContent$0(state) || ObjectBindingPatternContent$1(state);
1750
1938
  }
1751
1939
  }
1752
- var ArrayBindingPattern$0 = $S(OpenBracket, $Y(EOS), NestedBindingElements, __, CloseBracket);
1753
- var ArrayBindingPattern$1 = $S(OpenBracket, $Q($C(BindingElement, Elision)), $E($S(__, BindingRestElement)), __, CloseBracket);
1940
+ var ArrayBindingPattern$0 = $TS($S(OpenBracket, ArrayBindingPatternContent, __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
1941
+ var c = $2;
1942
+ return {
1943
+ type: "BindingPattern",
1944
+ names: c.names,
1945
+ children: $0
1946
+ };
1947
+ });
1754
1948
  function ArrayBindingPattern(state) {
1949
+ if (state.verbose)
1950
+ console.log("ENTER:", "ArrayBindingPattern");
1951
+ if (state.tokenize) {
1952
+ return $TOKEN("ArrayBindingPattern", state, ArrayBindingPattern$0(state));
1953
+ } else {
1954
+ return ArrayBindingPattern$0(state);
1955
+ }
1956
+ }
1957
+ var ArrayBindingPatternContent$0 = $T($S($Y(EOS), NestedBindingElements), function(value) {
1958
+ return value[1];
1959
+ });
1960
+ var ArrayBindingPatternContent$1 = $TS($S($Q($C(BindingElement, Elision)), $E($S(__, BindingRestElement))), function($skip, $loc, $0, $1, $2) {
1961
+ var props = $1;
1962
+ var rest = $2;
1963
+ const names = props.flatMap((p) => p.names || []);
1964
+ if (rest) {
1965
+ props.push(...rest);
1966
+ names.push(...rest[1].names);
1967
+ }
1968
+ return {
1969
+ type: "BindingPattern",
1970
+ names,
1971
+ children: props
1972
+ };
1973
+ });
1974
+ function ArrayBindingPatternContent(state) {
1975
+ if (state.tokenize) {
1976
+ return $TOKEN("ArrayBindingPatternContent", state, ArrayBindingPatternContent$0(state) || ArrayBindingPatternContent$1(state));
1977
+ } else {
1978
+ return ArrayBindingPatternContent$0(state) || ArrayBindingPatternContent$1(state);
1979
+ }
1980
+ }
1981
+ var Elision$0 = $S(__, Comma);
1982
+ function Elision(state) {
1983
+ if (state.verbose)
1984
+ console.log("ENTER:", "Elision");
1755
1985
  if (state.tokenize) {
1756
- return $TOKEN("ArrayBindingPattern", state, ArrayBindingPattern$0(state) || ArrayBindingPattern$1(state));
1986
+ return $TOKEN("Elision", state, Elision$0(state));
1757
1987
  } else {
1758
- return ArrayBindingPattern$0(state) || ArrayBindingPattern$1(state);
1988
+ return Elision$0(state);
1759
1989
  }
1760
1990
  }
1761
- var NestedBindingProperties$0 = $TS($S(PushIndent, $Q(NestedBindingProperty), $E($S(Nested, BindingRestProperty)), PopIndent), function($skip, $loc, $0, $1, $2, $3, $4) {
1991
+ var NestedBindingProperties$0 = $TS($S(PushIndent, $Q(NestedBindingProperty), $E(NestedBindingRestProperty), PopIndent), function($skip, $loc, $0, $1, $2, $3, $4) {
1762
1992
  var props = $2;
1763
1993
  var rest = $3;
1764
- if (!props.length)
1994
+ if (!(props.length || rest))
1765
1995
  return $skip;
1766
- if (rest)
1996
+ const names = props.flatMap((p) => p.names);
1997
+ if (rest) {
1767
1998
  props.push(rest);
1768
- return props;
1999
+ names.push(...rest.names);
2000
+ }
2001
+ return {
2002
+ type: "BindingPattern",
2003
+ children: props,
2004
+ names
2005
+ };
1769
2006
  });
1770
2007
  function NestedBindingProperties(state) {
1771
2008
  if (state.verbose)
@@ -1776,7 +2013,10 @@ var require_parser = __commonJS({
1776
2013
  return NestedBindingProperties$0(state);
1777
2014
  }
1778
2015
  }
1779
- var NestedBindingProperty$0 = $S(Nested, BindingProperty);
2016
+ var NestedBindingProperty$0 = $TS($S(Nested, BindingProperty), function($skip, $loc, $0, $1, $2) {
2017
+ $2.children.unshift($1);
2018
+ return $2;
2019
+ });
1780
2020
  function NestedBindingProperty(state) {
1781
2021
  if (state.verbose)
1782
2022
  console.log("ENTER:", "NestedBindingProperty");
@@ -1786,8 +2026,22 @@ var require_parser = __commonJS({
1786
2026
  return NestedBindingProperty$0(state);
1787
2027
  }
1788
2028
  }
1789
- var BindingProperty$0 = $S(__, PropertyName, __, Colon, $C(BindingIdentifier, BindingPattern), $E(Initializer), ObjectPropertyDelimiter);
1790
- var BindingProperty$1 = $S(BindingIdentifier, $E(Initializer), ObjectPropertyDelimiter);
2029
+ var BindingProperty$0 = $TS($S(__, PropertyName, __, Colon, $C(BindingIdentifier, BindingPattern), $E(Initializer), ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
2030
+ var b = $5;
2031
+ return {
2032
+ type: "BindingPattern",
2033
+ names: b.names,
2034
+ children: $0
2035
+ };
2036
+ });
2037
+ var BindingProperty$1 = $TS($S(BindingIdentifier, $E(Initializer), ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3) {
2038
+ var b = $1;
2039
+ return {
2040
+ type: "BindingPattern",
2041
+ names: b.names,
2042
+ children: $0
2043
+ };
2044
+ });
1791
2045
  function BindingProperty(state) {
1792
2046
  if (state.tokenize) {
1793
2047
  return $TOKEN("BindingProperty", state, BindingProperty$0(state) || BindingProperty$1(state));
@@ -1795,7 +2049,23 @@ var require_parser = __commonJS({
1795
2049
  return BindingProperty$0(state) || BindingProperty$1(state);
1796
2050
  }
1797
2051
  }
1798
- var BindingRestProperty$0 = $S(DotDotDot, BindingIdentifier);
2052
+ var NestedBindingRestProperty$0 = $TS($S(Nested, BindingRestProperty), function($skip, $loc, $0, $1, $2) {
2053
+ $2.children.unshift($1);
2054
+ return $2;
2055
+ });
2056
+ function NestedBindingRestProperty(state) {
2057
+ if (state.verbose)
2058
+ console.log("ENTER:", "NestedBindingRestProperty");
2059
+ if (state.tokenize) {
2060
+ return $TOKEN("NestedBindingRestProperty", state, NestedBindingRestProperty$0(state));
2061
+ } else {
2062
+ return NestedBindingRestProperty$0(state);
2063
+ }
2064
+ }
2065
+ var BindingRestProperty$0 = $TS($S(DotDotDot, BindingIdentifier), function($skip, $loc, $0, $1, $2) {
2066
+ $2.children.unshift($1);
2067
+ return $2;
2068
+ });
1799
2069
  function BindingRestProperty(state) {
1800
2070
  if (state.verbose)
1801
2071
  console.log("ENTER:", "BindingRestProperty");
@@ -1808,11 +2078,18 @@ var require_parser = __commonJS({
1808
2078
  var NestedBindingElements$0 = $TS($S(PushIndent, $Q(NestedBindingElement), $E($S(Nested, BindingRestElement)), PopIndent), function($skip, $loc, $0, $1, $2, $3, $4) {
1809
2079
  var props = $2;
1810
2080
  var rest = $3;
1811
- if (!props.length)
2081
+ if (!(props.length || rest))
1812
2082
  return $skip;
1813
- if (rest)
1814
- props.push(rest);
1815
- return props;
2083
+ const names = props.flatMap((p) => p.names);
2084
+ if (rest) {
2085
+ props.push(...rest);
2086
+ names.push(...rest[1].names);
2087
+ }
2088
+ return {
2089
+ type: "BindingPattern",
2090
+ children: props,
2091
+ names
2092
+ };
1816
2093
  });
1817
2094
  function NestedBindingElements(state) {
1818
2095
  if (state.verbose)
@@ -1823,7 +2100,10 @@ var require_parser = __commonJS({
1823
2100
  return NestedBindingElements$0(state);
1824
2101
  }
1825
2102
  }
1826
- var NestedBindingElement$0 = $S(Nested, BindingElement);
2103
+ var NestedBindingElement$0 = $TS($S(Nested, BindingElement), function($skip, $loc, $0, $1, $2) {
2104
+ $2.children.unshift($1);
2105
+ return $2;
2106
+ });
1827
2107
  function NestedBindingElement(state) {
1828
2108
  if (state.verbose)
1829
2109
  console.log("ENTER:", "NestedBindingElement");
@@ -1833,7 +2113,14 @@ var require_parser = __commonJS({
1833
2113
  return NestedBindingElement$0(state);
1834
2114
  }
1835
2115
  }
1836
- var BindingElement$0 = $S(__, $C(BindingIdentifier, BindingPattern), $E(Initializer), ArrayElementDelimiter);
2116
+ var BindingElement$0 = $TS($S($C(BindingIdentifier, BindingPattern), $E(Initializer), ArrayElementDelimiter), function($skip, $loc, $0, $1, $2, $3) {
2117
+ var binding = $1;
2118
+ return {
2119
+ type: "BindingPattern",
2120
+ names: binding.names,
2121
+ children: $0
2122
+ };
2123
+ });
1837
2124
  function BindingElement(state) {
1838
2125
  if (state.verbose)
1839
2126
  console.log("ENTER:", "BindingElement");
@@ -1843,7 +2130,11 @@ var require_parser = __commonJS({
1843
2130
  return BindingElement$0(state);
1844
2131
  }
1845
2132
  }
1846
- var BindingRestElement$0 = $S(DotDotDot, __, $C(BindingIdentifier, BindingPattern));
2133
+ var BindingRestElement$0 = $TS($S(DotDotDot, $C(BindingIdentifier, BindingPattern)), function($skip, $loc, $0, $1, $2) {
2134
+ var binding = $2;
2135
+ binding.children.unshift($1);
2136
+ return binding;
2137
+ });
1847
2138
  function BindingRestElement(state) {
1848
2139
  if (state.verbose)
1849
2140
  console.log("ENTER:", "BindingRestElement");
@@ -1863,7 +2154,21 @@ var require_parser = __commonJS({
1863
2154
  return FunctionDeclaration$0(state);
1864
2155
  }
1865
2156
  }
1866
- var FunctionSignature$0 = $S($E($S(Async, __)), Function, $E($S(Star, __)), $E(BindingIdentifier), __, Parameters, $E(ReturnTypeSuffix));
2157
+ var FunctionSignature$0 = $TS($S($E($S(Async, __)), Function, $E(Star), $E(BindingIdentifier), __, Parameters, $E(ReturnTypeSuffix)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
2158
+ var id = $4;
2159
+ var parameters = $6;
2160
+ id = id || [];
2161
+ $0[3] = id;
2162
+ return {
2163
+ type: "FunctionSignature",
2164
+ id,
2165
+ parameters,
2166
+ returnType: $7,
2167
+ ts: false,
2168
+ block: null,
2169
+ children: $0
2170
+ };
2171
+ });
1867
2172
  function FunctionSignature(state) {
1868
2173
  if (state.verbose)
1869
2174
  console.log("ENTER:", "FunctionSignature");
@@ -1873,25 +2178,28 @@ var require_parser = __commonJS({
1873
2178
  return FunctionSignature$0(state);
1874
2179
  }
1875
2180
  }
1876
- var FunctionExpression$0 = ThinArrowFunction;
1877
- var FunctionExpression$1 = $TS($S(FunctionSignature, $E(BracedBlock)), function($skip, $loc, $0, $1, $2) {
2181
+ var FunctionExpression$0 = $TS($S(FunctionSignature, $E(BracedBlock)), function($skip, $loc, $0, $1, $2) {
2182
+ var signature = $1;
1878
2183
  var block = $2;
1879
2184
  if (!block) {
1880
- return {
1881
- type: "FunctionDeclaration",
1882
- ts: true,
1883
- children: $1
1884
- };
2185
+ signature.ts = true;
2186
+ return signature;
1885
2187
  }
1886
- const suffix = $1[$1.length - 1];
2188
+ const suffix = signature.returnType;
1887
2189
  const isVoid = suffix?.children?.[1]?.[0]?.[1]?.token === "void";
1888
2190
  if (module2.config.implicitReturns && !isVoid) {
1889
2191
  module2.addImplicitReturns(block);
1890
2192
  }
1891
- $1.push(block);
2193
+ $1.block = block;
2194
+ $1.children.push(block);
2195
+ $1.type = "FunctionExpression";
2196
+ return $1;
2197
+ });
2198
+ var FunctionExpression$1 = $TS($S(Ampersand, $P(MemberExpressionRest)), function($skip, $loc, $0, $1, $2) {
2199
+ $1.token = "$ => $";
1892
2200
  return {
1893
2201
  type: "FunctionExpression",
1894
- children: $1
2202
+ children: [$1, $2]
1895
2203
  };
1896
2204
  });
1897
2205
  function FunctionExpression(state) {
@@ -1902,7 +2210,7 @@ var require_parser = __commonJS({
1902
2210
  }
1903
2211
  }
1904
2212
  var ThinArrowFunction$0 = $TS($S(Parameters, $E(ReturnTypeSuffix), $Q(_), Arrow, BracedOrEmptyBlock), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1905
- var params = $1;
2213
+ var parameters = $1;
1906
2214
  var suffix = $2;
1907
2215
  var arrow = $4;
1908
2216
  var block = $5;
@@ -1910,11 +2218,18 @@ var require_parser = __commonJS({
1910
2218
  if (module2.config.implicitReturns && !isVoid) {
1911
2219
  block = module2.addImplicitReturns(block);
1912
2220
  }
2221
+ const id = [];
1913
2222
  return {
1914
2223
  type: "FunctionExpression",
2224
+ id,
2225
+ parameters,
2226
+ returnType: suffix,
2227
+ ts: false,
2228
+ block,
1915
2229
  children: [
1916
2230
  { $loc: arrow.$loc, token: "function" },
1917
- params,
2231
+ id,
2232
+ parameters,
1918
2233
  suffix,
1919
2234
  block
1920
2235
  ]
@@ -1929,7 +2244,7 @@ var require_parser = __commonJS({
1929
2244
  return ThinArrowFunction$0(state);
1930
2245
  }
1931
2246
  }
1932
- var Arrow$0 = $TV($EXPECT($L16, fail, 'Arrow "->"'), function($skip, $loc, $0, $1) {
2247
+ var Arrow$0 = $TV($EXPECT($L17, fail, 'Arrow "->"'), function($skip, $loc, $0, $1) {
1933
2248
  return { $loc, token: $1 };
1934
2249
  });
1935
2250
  function Arrow(state) {
@@ -1941,16 +2256,20 @@ var require_parser = __commonJS({
1941
2256
  return Arrow$0(state);
1942
2257
  }
1943
2258
  }
1944
- var Block$0 = $T($S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace), function(value) {
2259
+ var Block$0 = $T($S(__, OpenBrace, EOS, NestedBlockStatements, __, CloseBrace), function(value) {
1945
2260
  var exps = value[3];
1946
2261
  return { "type": "BlockStatement", "expressions": exps, "children": value };
1947
2262
  });
1948
- var Block$1 = $T($S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace), function(value) {
2263
+ var Block$1 = $T($S(InsertOpenBrace, EOS, NestedBlockStatements, InsertNewline, InsertIndent, InsertCloseBrace), function(value) {
1949
2264
  var exps = value[2];
1950
2265
  return { "type": "BlockStatement", "expressions": exps, "children": value };
1951
2266
  });
1952
- var Block$2 = Statement;
1953
- var Block$3 = $S(__, Statement);
2267
+ var Block$2 = $T($S($E(Then), Statement), function(value) {
2268
+ return value[1];
2269
+ });
2270
+ var Block$3 = $T($S($E(Then), __, Statement), function(value) {
2271
+ return [value[1], value[2]];
2272
+ });
1954
2273
  function Block(state) {
1955
2274
  if (state.tokenize) {
1956
2275
  return $TOKEN("Block", state, Block$0(state) || Block$1(state) || Block$2(state) || Block$3(state));
@@ -1979,11 +2298,11 @@ var require_parser = __commonJS({
1979
2298
  return EmptyBlock$0(state);
1980
2299
  }
1981
2300
  }
1982
- var BracedBlock$0 = $T($S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace), function(value) {
1983
- var exps = value[3];
2301
+ var BracedBlock$0 = $T($S($Q(TrailingComment), OpenBrace, BracedContent, __, CloseBrace), function(value) {
2302
+ var exps = value[2];
1984
2303
  return { "type": "BlockStatement", "expressions": exps, "children": value };
1985
2304
  });
1986
- var BracedBlock$1 = $T($S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace), function(value) {
2305
+ var BracedBlock$1 = $T($S(InsertOpenBrace, EOS, NestedBlockStatements, InsertNewline, InsertIndent, InsertCloseBrace), function(value) {
1987
2306
  var exps = value[2];
1988
2307
  return { "type": "BlockStatement", "expressions": exps, "children": value };
1989
2308
  });
@@ -2002,58 +2321,69 @@ var require_parser = __commonJS({
2002
2321
  return BracedBlock$0(state) || BracedBlock$1(state) || BracedBlock$2(state);
2003
2322
  }
2004
2323
  }
2005
- 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) {
2006
- var exp = $2;
2007
- if (exp)
2008
- return exp;
2009
- return $skip;
2324
+ var BracedContent$0 = $T($S($Y(EOS), NestedBlockStatements), function(value) {
2325
+ return value[1];
2010
2326
  });
2011
- function SingleNestedExpression(state) {
2012
- if (state.verbose)
2013
- console.log("ENTER:", "SingleNestedExpression");
2327
+ var BracedContent$1 = $S($Q(TrailingComment), Statement);
2328
+ function BracedContent(state) {
2014
2329
  if (state.tokenize) {
2015
- return $TOKEN("SingleNestedExpression", state, SingleNestedExpression$0(state));
2330
+ return $TOKEN("BracedContent", state, BracedContent$0(state) || BracedContent$1(state));
2016
2331
  } else {
2017
- return SingleNestedExpression$0(state);
2332
+ return BracedContent$0(state) || BracedContent$1(state);
2018
2333
  }
2019
2334
  }
2020
- var NestedBlockExpressions$0 = $TS($S(PushIndent, $Q(BlockExpression), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
2021
- var exps = $2;
2022
- if (!exps.length)
2335
+ var NestedBlockStatements$0 = $TS($S(PushIndent, $Q(NestedBlockStatement), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
2336
+ var statements = $2;
2337
+ if (!statements.length)
2023
2338
  return $skip;
2024
- return exps;
2339
+ return statements;
2025
2340
  });
2026
- function NestedBlockExpressions(state) {
2341
+ function NestedBlockStatements(state) {
2027
2342
  if (state.verbose)
2028
- console.log("ENTER:", "NestedBlockExpressions");
2343
+ console.log("ENTER:", "NestedBlockStatements");
2029
2344
  if (state.tokenize) {
2030
- return $TOKEN("NestedBlockExpressions", state, NestedBlockExpressions$0(state));
2345
+ return $TOKEN("NestedBlockStatements", state, NestedBlockStatements$0(state));
2031
2346
  } else {
2032
- return NestedBlockExpressions$0(state);
2347
+ return NestedBlockStatements$0(state);
2033
2348
  }
2034
2349
  }
2035
- var BlockExpression$0 = $S(Nested, StatementListItem, StatementDelimiter);
2036
- function BlockExpression(state) {
2350
+ var NestedBlockStatement$0 = $S(Nested, StatementListItem, StatementDelimiter);
2351
+ function NestedBlockStatement(state) {
2037
2352
  if (state.verbose)
2038
- console.log("ENTER:", "BlockExpression");
2353
+ console.log("ENTER:", "NestedBlockStatement");
2039
2354
  if (state.tokenize) {
2040
- return $TOKEN("BlockExpression", state, BlockExpression$0(state));
2355
+ return $TOKEN("NestedBlockStatement", state, NestedBlockStatement$0(state));
2041
2356
  } else {
2042
- return BlockExpression$0(state);
2357
+ return NestedBlockStatement$0(state);
2043
2358
  }
2044
2359
  }
2045
- var Literal$0 = NullLiteral;
2046
- var Literal$1 = BooleanLiteral;
2047
- var Literal$2 = NumericLiteral;
2048
- var Literal$3 = StringLiteral;
2360
+ var Literal$0 = $TS($S(LiteralContent), function($skip, $loc, $0, $1) {
2361
+ return {
2362
+ type: "Literal",
2363
+ children: $0
2364
+ };
2365
+ });
2049
2366
  function Literal(state) {
2367
+ if (state.verbose)
2368
+ console.log("ENTER:", "Literal");
2369
+ if (state.tokenize) {
2370
+ return $TOKEN("Literal", state, Literal$0(state));
2371
+ } else {
2372
+ return Literal$0(state);
2373
+ }
2374
+ }
2375
+ var LiteralContent$0 = NullLiteral;
2376
+ var LiteralContent$1 = BooleanLiteral;
2377
+ var LiteralContent$2 = NumericLiteral;
2378
+ var LiteralContent$3 = StringLiteral;
2379
+ function LiteralContent(state) {
2050
2380
  if (state.tokenize) {
2051
- return $TOKEN("Literal", state, Literal$0(state) || Literal$1(state) || Literal$2(state) || Literal$3(state));
2381
+ return $TOKEN("LiteralContent", state, LiteralContent$0(state) || LiteralContent$1(state) || LiteralContent$2(state) || LiteralContent$3(state));
2052
2382
  } else {
2053
- return Literal$0(state) || Literal$1(state) || Literal$2(state) || Literal$3(state);
2383
+ return LiteralContent$0(state) || LiteralContent$1(state) || LiteralContent$2(state) || LiteralContent$3(state);
2054
2384
  }
2055
2385
  }
2056
- var NullLiteral$0 = $TV($EXPECT($L17, fail, 'NullLiteral "null"'), function($skip, $loc, $0, $1) {
2386
+ var NullLiteral$0 = $TV($EXPECT($L18, fail, 'NullLiteral "null"'), function($skip, $loc, $0, $1) {
2057
2387
  return { $loc, token: $1 };
2058
2388
  });
2059
2389
  function NullLiteral(state) {
@@ -2066,7 +2396,7 @@ var require_parser = __commonJS({
2066
2396
  }
2067
2397
  }
2068
2398
  var BooleanLiteral$0 = CoffeeScriptBooleanLiteral;
2069
- var BooleanLiteral$1 = $TV($C($EXPECT($L18, fail, 'BooleanLiteral "true"'), $EXPECT($L19, fail, 'BooleanLiteral "false"')), function($skip, $loc, $0, $1) {
2399
+ var BooleanLiteral$1 = $TV($C($EXPECT($L19, fail, 'BooleanLiteral "true"'), $EXPECT($L20, fail, 'BooleanLiteral "false"')), function($skip, $loc, $0, $1) {
2070
2400
  return { $loc, token: $1 };
2071
2401
  });
2072
2402
  function BooleanLiteral(state) {
@@ -2076,10 +2406,10 @@ var require_parser = __commonJS({
2076
2406
  return BooleanLiteral$0(state) || BooleanLiteral$1(state);
2077
2407
  }
2078
2408
  }
2079
- var CoffeeScriptBooleanLiteral$0 = $TV($C($EXPECT($L20, fail, 'CoffeeScriptBooleanLiteral "yes"'), $EXPECT($L21, fail, 'CoffeeScriptBooleanLiteral "on"')), function($skip, $loc, $0, $1) {
2409
+ var CoffeeScriptBooleanLiteral$0 = $TV($C($EXPECT($L21, fail, 'CoffeeScriptBooleanLiteral "yes"'), $EXPECT($L22, fail, 'CoffeeScriptBooleanLiteral "on"')), function($skip, $loc, $0, $1) {
2080
2410
  return { $loc, token: "true" };
2081
2411
  });
2082
- var CoffeeScriptBooleanLiteral$1 = $TV($C($EXPECT($L22, fail, 'CoffeeScriptBooleanLiteral "no"'), $EXPECT($L23, fail, 'CoffeeScriptBooleanLiteral "off"')), function($skip, $loc, $0, $1) {
2412
+ var CoffeeScriptBooleanLiteral$1 = $TV($C($EXPECT($L23, fail, 'CoffeeScriptBooleanLiteral "no"'), $EXPECT($L24, fail, 'CoffeeScriptBooleanLiteral "off"')), function($skip, $loc, $0, $1) {
2083
2413
  return { $loc, token: "false" };
2084
2414
  });
2085
2415
  function CoffeeScriptBooleanLiteral(state) {
@@ -2089,7 +2419,7 @@ var require_parser = __commonJS({
2089
2419
  return CoffeeScriptBooleanLiteral$0(state) || CoffeeScriptBooleanLiteral$1(state);
2090
2420
  }
2091
2421
  }
2092
- var Comma$0 = $TV($EXPECT($L24, fail, 'Comma ","'), function($skip, $loc, $0, $1) {
2422
+ var Comma$0 = $TV($EXPECT($L25, fail, 'Comma ","'), function($skip, $loc, $0, $1) {
2093
2423
  return { $loc, token: $1 };
2094
2424
  });
2095
2425
  function Comma(state) {
@@ -2116,8 +2446,12 @@ var require_parser = __commonJS({
2116
2446
  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) {
2117
2447
  return {
2118
2448
  type: "Identifier",
2119
- $loc,
2120
- token: $0
2449
+ name: $0,
2450
+ names: [$0],
2451
+ children: [{
2452
+ $loc,
2453
+ token: $0
2454
+ }]
2121
2455
  };
2122
2456
  });
2123
2457
  function IdentifierName(state) {
@@ -2139,19 +2473,44 @@ var require_parser = __commonJS({
2139
2473
  return IdentifierReference$0(state);
2140
2474
  }
2141
2475
  }
2142
- var ArrayLiteral$0 = $S(OpenBracket, NestedElementList, __, CloseBracket);
2143
- var ArrayLiteral$1 = $S(OpenBracket, ElementList, __, CloseBracket);
2476
+ var ArrayLiteral$0 = $TS($S(OpenBracket, ArrayLiteralContent, __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
2477
+ let children;
2478
+ if (Array.isArray($2)) {
2479
+ children = [$1, ...$2, ...$3, $4];
2480
+ } else {
2481
+ children = [$1, $2, ...$3, $4];
2482
+ }
2483
+ const names = children.flatMap((c) => {
2484
+ return c.names || [];
2485
+ });
2486
+ return {
2487
+ type: "ArrayExpression",
2488
+ children,
2489
+ names
2490
+ };
2491
+ });
2144
2492
  function ArrayLiteral(state) {
2493
+ if (state.verbose)
2494
+ console.log("ENTER:", "ArrayLiteral");
2145
2495
  if (state.tokenize) {
2146
- return $TOKEN("ArrayLiteral", state, ArrayLiteral$0(state) || ArrayLiteral$1(state));
2496
+ return $TOKEN("ArrayLiteral", state, ArrayLiteral$0(state));
2147
2497
  } else {
2148
- return ArrayLiteral$0(state) || ArrayLiteral$1(state);
2498
+ return ArrayLiteral$0(state);
2499
+ }
2500
+ }
2501
+ var ArrayLiteralContent$0 = NestedElementList;
2502
+ var ArrayLiteralContent$1 = ElementList;
2503
+ function ArrayLiteralContent(state) {
2504
+ if (state.tokenize) {
2505
+ return $TOKEN("ArrayLiteralContent", state, ArrayLiteralContent$0(state) || ArrayLiteralContent$1(state));
2506
+ } else {
2507
+ return ArrayLiteralContent$0(state) || ArrayLiteralContent$1(state);
2149
2508
  }
2150
2509
  }
2151
2510
  var NestedElementList$0 = $TS($S(PushIndent, $Q(NestedElement), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
2152
2511
  var elements = $2;
2153
2512
  if (elements.length)
2154
- return elements;
2513
+ return elements.flat();
2155
2514
  return $skip;
2156
2515
  });
2157
2516
  function NestedElementList(state) {
@@ -2163,7 +2522,13 @@ var require_parser = __commonJS({
2163
2522
  return NestedElementList$0(state);
2164
2523
  }
2165
2524
  }
2166
- var NestedElement$0 = $S(Nested, InlineElementList, ArrayElementDelimiter);
2525
+ var NestedElement$0 = $TS($S(Nested, ElementList, ArrayElementDelimiter), function($skip, $loc, $0, $1, $2, $3) {
2526
+ const result = [...$1, ...$2];
2527
+ if ($3) {
2528
+ result.push($3);
2529
+ }
2530
+ return result;
2531
+ });
2167
2532
  function NestedElement(state) {
2168
2533
  if (state.verbose)
2169
2534
  console.log("ENTER:", "NestedElement");
@@ -2174,7 +2539,7 @@ var require_parser = __commonJS({
2174
2539
  }
2175
2540
  }
2176
2541
  var ArrayElementDelimiter$0 = $S($Q(_), Comma);
2177
- var ArrayElementDelimiter$1 = $Y($S(__, $EXPECT($L25, fail, 'ArrayElementDelimiter "]"')));
2542
+ var ArrayElementDelimiter$1 = $Y($S(__, $EXPECT($L26, fail, 'ArrayElementDelimiter "]"')));
2178
2543
  var ArrayElementDelimiter$2 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
2179
2544
  return { $loc, token: "," };
2180
2545
  });
@@ -2185,7 +2550,15 @@ var require_parser = __commonJS({
2185
2550
  return ArrayElementDelimiter$0(state) || ArrayElementDelimiter$1(state) || ArrayElementDelimiter$2(state);
2186
2551
  }
2187
2552
  }
2188
- var ElementList$0 = $S(ArrayElementExpression, $Q($S(__, Comma, __, ArrayElementExpression)));
2553
+ var ElementList$0 = $TS($S(ArrayElementExpression, $Q(ElementListRest)), function($skip, $loc, $0, $1, $2) {
2554
+ if ($2.length) {
2555
+ return [].concat($1 || [], ...$2);
2556
+ }
2557
+ if ($1) {
2558
+ return [].concat($1);
2559
+ }
2560
+ return [];
2561
+ });
2189
2562
  function ElementList(state) {
2190
2563
  if (state.verbose)
2191
2564
  console.log("ENTER:", "ElementList");
@@ -2195,17 +2568,28 @@ var require_parser = __commonJS({
2195
2568
  return ElementList$0(state);
2196
2569
  }
2197
2570
  }
2198
- var InlineElementList$0 = $S(ArrayElementExpression, $Q($S($Q(_), Comma, $Q(_), ArrayElementExpression)));
2199
- function InlineElementList(state) {
2571
+ var ElementListRest$0 = $TS($S(__, Comma, __, ArrayElementExpression), function($skip, $loc, $0, $1, $2, $3, $4) {
2572
+ const result = [...$1, $2, ...$3];
2573
+ if ($4) {
2574
+ result.push($4);
2575
+ }
2576
+ return result;
2577
+ });
2578
+ function ElementListRest(state) {
2200
2579
  if (state.verbose)
2201
- console.log("ENTER:", "InlineElementList");
2580
+ console.log("ENTER:", "ElementListRest");
2202
2581
  if (state.tokenize) {
2203
- return $TOKEN("InlineElementList", state, InlineElementList$0(state));
2582
+ return $TOKEN("ElementListRest", state, ElementListRest$0(state));
2204
2583
  } else {
2205
- return InlineElementList$0(state);
2584
+ return ElementListRest$0(state);
2206
2585
  }
2207
2586
  }
2208
- var ArrayElementExpression$0 = $E($S($E($S(DotDotDot, __)), AssignmentExpression));
2587
+ var ArrayElementExpression$0 = $TV($E($S($E($S(DotDotDot, __)), ExtendedExpression)), function($skip, $loc, $0, $1) {
2588
+ if ($1 && !$1[0]) {
2589
+ return $1[1];
2590
+ }
2591
+ return $1;
2592
+ });
2209
2593
  function ArrayElementExpression(state) {
2210
2594
  if (state.verbose)
2211
2595
  console.log("ENTER:", "ArrayElementExpression");
@@ -2215,28 +2599,69 @@ var require_parser = __commonJS({
2215
2599
  return ArrayElementExpression$0(state);
2216
2600
  }
2217
2601
  }
2218
- var Elision$0 = $S(__, Comma);
2219
- function Elision(state) {
2602
+ var ObjectLiteral$0 = BracedObjectLiteral;
2603
+ var ObjectLiteral$1 = NestedObjectLiteral;
2604
+ function ObjectLiteral(state) {
2605
+ if (state.tokenize) {
2606
+ return $TOKEN("ObjectLiteral", state, ObjectLiteral$0(state) || ObjectLiteral$1(state));
2607
+ } else {
2608
+ return ObjectLiteral$0(state) || ObjectLiteral$1(state);
2609
+ }
2610
+ }
2611
+ var BracedObjectLiteral$0 = $TS($S(OpenBrace, $E(BracedObjectLiteralContent), __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
2612
+ if ($2) {
2613
+ $2.unshift($1);
2614
+ if ($3.length) {
2615
+ $2.push(...$3);
2616
+ }
2617
+ $2.push($4);
2618
+ return {
2619
+ type: "ObjectExpression",
2620
+ children: $2,
2621
+ names: $2.flatMap((c) => {
2622
+ return c.names || [];
2623
+ })
2624
+ };
2625
+ }
2626
+ return {
2627
+ type: "ObjectExpression",
2628
+ children: [$1, ...$3, $4],
2629
+ names: []
2630
+ };
2631
+ });
2632
+ function BracedObjectLiteral(state) {
2220
2633
  if (state.verbose)
2221
- console.log("ENTER:", "Elision");
2634
+ console.log("ENTER:", "BracedObjectLiteral");
2222
2635
  if (state.tokenize) {
2223
- return $TOKEN("Elision", state, Elision$0(state));
2636
+ return $TOKEN("BracedObjectLiteral", state, BracedObjectLiteral$0(state));
2224
2637
  } else {
2225
- return Elision$0(state);
2638
+ return BracedObjectLiteral$0(state);
2226
2639
  }
2227
2640
  }
2228
- var ObjectLiteral$0 = $S(OpenBrace, $Y(EOS), NestedPropertyDefinitions, __, CloseBrace);
2229
- var ObjectLiteral$1 = $S(OpenBrace, __, PropertyDefinitionList, __, $E($S(Comma, __)), CloseBrace);
2230
- var ObjectLiteral$2 = $S(OpenBrace, __, CloseBrace);
2231
- var ObjectLiteral$3 = NestedObjectLiteral;
2232
- function ObjectLiteral(state) {
2641
+ var BracedObjectLiteralContent$0 = $T($S($Y(EOS), NestedPropertyDefinitions), function(value) {
2642
+ return value[1];
2643
+ });
2644
+ var BracedObjectLiteralContent$1 = $TS($S(__, PropertyDefinitionList, $E($S(__, Comma))), function($skip, $loc, $0, $1, $2, $3) {
2645
+ if ($1.length) {
2646
+ $2.splice(0, 0, ...$1);
2647
+ }
2648
+ if ($3) {
2649
+ $2.push($3);
2650
+ }
2651
+ return $2;
2652
+ });
2653
+ function BracedObjectLiteralContent(state) {
2233
2654
  if (state.tokenize) {
2234
- return $TOKEN("ObjectLiteral", state, ObjectLiteral$0(state) || ObjectLiteral$1(state) || ObjectLiteral$2(state) || ObjectLiteral$3(state));
2655
+ return $TOKEN("BracedObjectLiteralContent", state, BracedObjectLiteralContent$0(state) || BracedObjectLiteralContent$1(state));
2235
2656
  } else {
2236
- return ObjectLiteral$0(state) || ObjectLiteral$1(state) || ObjectLiteral$2(state) || ObjectLiteral$3(state);
2657
+ return BracedObjectLiteralContent$0(state) || BracedObjectLiteralContent$1(state);
2237
2658
  }
2238
2659
  }
2239
- var NestedObjectLiteral$0 = $S(InsertOpenBrace, $Y(EOS), NestedPropertyDefinitions, InsertNewline, InsertIndent, InsertCloseBrace);
2660
+ var NestedObjectLiteral$0 = $TS($S(InsertOpenBrace, $Y(EOS), NestedPropertyDefinitions, InsertNewline, InsertIndent, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2661
+ $3.unshift($1);
2662
+ $3.push($4, $5, $6);
2663
+ return $3;
2664
+ });
2240
2665
  function NestedObjectLiteral(state) {
2241
2666
  if (state.verbose)
2242
2667
  console.log("ENTER:", "NestedObjectLiteral");
@@ -2250,7 +2675,7 @@ var require_parser = __commonJS({
2250
2675
  var defs = $2;
2251
2676
  if (!defs.length)
2252
2677
  return $skip;
2253
- return defs;
2678
+ return defs.flat();
2254
2679
  });
2255
2680
  function NestedPropertyDefinitions(state) {
2256
2681
  if (state.verbose)
@@ -2261,7 +2686,13 @@ var require_parser = __commonJS({
2261
2686
  return NestedPropertyDefinitions$0(state);
2262
2687
  }
2263
2688
  }
2264
- var NestedPropertyDefinition$0 = $S(Nested, PropertyDefinition, ObjectPropertyDelimiter);
2689
+ var NestedPropertyDefinition$0 = $TS($S(Nested, PropertyDefinition, ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3) {
2690
+ const result = [...$1, $2];
2691
+ if ($3) {
2692
+ result.push($3);
2693
+ }
2694
+ return result;
2695
+ });
2265
2696
  function NestedPropertyDefinition(state) {
2266
2697
  if (state.verbose)
2267
2698
  console.log("ENTER:", "NestedPropertyDefinition");
@@ -2272,7 +2703,7 @@ var require_parser = __commonJS({
2272
2703
  }
2273
2704
  }
2274
2705
  var ObjectPropertyDelimiter$0 = $S($Q(_), Comma);
2275
- var ObjectPropertyDelimiter$1 = $Y($S(__, $EXPECT($L26, fail, 'ObjectPropertyDelimiter "}"')));
2706
+ var ObjectPropertyDelimiter$1 = $Y($S(__, $EXPECT($L27, fail, 'ObjectPropertyDelimiter "}"')));
2276
2707
  var ObjectPropertyDelimiter$2 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
2277
2708
  return { $loc, token: "," };
2278
2709
  });
@@ -2283,7 +2714,15 @@ var require_parser = __commonJS({
2283
2714
  return ObjectPropertyDelimiter$0(state) || ObjectPropertyDelimiter$1(state) || ObjectPropertyDelimiter$2(state);
2284
2715
  }
2285
2716
  }
2286
- var PropertyDefinitionList$0 = $S(PropertyDefinition, $Q($S(__, Comma, __, PropertyDefinition)));
2717
+ var PropertyDefinitionList$0 = $TS($S(PropertyDefinition, $Q($S(__, Comma, __, PropertyDefinition))), function($skip, $loc, $0, $1, $2) {
2718
+ if ($2.length) {
2719
+ return [].concat($1 || [], ...$2);
2720
+ }
2721
+ if ($1) {
2722
+ return [].concat($1);
2723
+ }
2724
+ return [];
2725
+ });
2287
2726
  function PropertyDefinitionList(state) {
2288
2727
  if (state.verbose)
2289
2728
  console.log("ENTER:", "PropertyDefinitionList");
@@ -2293,9 +2732,16 @@ var require_parser = __commonJS({
2293
2732
  return PropertyDefinitionList$0(state);
2294
2733
  }
2295
2734
  }
2296
- var PropertyDefinition$0 = $S(PropertyName, __, Colon, AssignmentExpression);
2735
+ var PropertyDefinition$0 = $TS($S(PropertyName, __, Colon, ExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4) {
2736
+ var exp = $4;
2737
+ return {
2738
+ type: "Property",
2739
+ children: $0,
2740
+ names: exp.names || []
2741
+ };
2742
+ });
2297
2743
  var PropertyDefinition$1 = MethodDefinition;
2298
- var PropertyDefinition$2 = $S(DotDotDot, AssignmentExpression);
2744
+ var PropertyDefinition$2 = $S(DotDotDot, ExtendedExpression);
2299
2745
  var PropertyDefinition$3 = IdentifierReference;
2300
2746
  function PropertyDefinition(state) {
2301
2747
  if (state.tokenize) {
@@ -2307,7 +2753,7 @@ var require_parser = __commonJS({
2307
2753
  var PropertyName$0 = NumericLiteral;
2308
2754
  var PropertyName$1 = StringLiteral;
2309
2755
  var PropertyName$2 = IdentifierName;
2310
- var PropertyName$3 = $S(OpenBracket, AssignmentExpression, __, $EXPECT($L25, fail, 'PropertyName "]"'));
2756
+ var PropertyName$3 = $S(OpenBracket, ExtendedExpression, __, CloseBracket);
2311
2757
  function PropertyName(state) {
2312
2758
  if (state.tokenize) {
2313
2759
  return $TOKEN("PropertyName", state, PropertyName$0(state) || PropertyName$1(state) || PropertyName$2(state) || PropertyName$3(state));
@@ -2357,7 +2803,11 @@ var require_parser = __commonJS({
2357
2803
  var MethodSignature$1 = $TS($S($E(MethodModifier), ClassElementName, $Q(_), NonEmptyParameters, $E(ReturnTypeSuffix)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
2358
2804
  var name = $2;
2359
2805
  var suffix = $5;
2360
- name = name.token.match(/^(?:"|')/) ? name.token.slice(1, -1) : name.token;
2806
+ if (name.name) {
2807
+ name = name.name;
2808
+ } else if (name.token) {
2809
+ name = name.token.match(/^(?:"|')/) ? name.token.slice(1, -1) : name.token;
2810
+ }
2361
2811
  return {
2362
2812
  type: "MethodSignature",
2363
2813
  children: $0,
@@ -2384,8 +2834,13 @@ var require_parser = __commonJS({
2384
2834
  }
2385
2835
  var PrivateIdentifier$0 = $TV($TEXT($S($EXPECT($L7, fail, 'PrivateIdentifier "#"'), IdentifierName)), function($skip, $loc, $0, $1) {
2386
2836
  return {
2387
- $loc,
2388
- token: $1
2837
+ type: "Identifier",
2838
+ name: $0,
2839
+ names: [$0],
2840
+ children: [{
2841
+ $loc,
2842
+ token: $0
2843
+ }]
2389
2844
  };
2390
2845
  });
2391
2846
  function PrivateIdentifier(state) {
@@ -2409,25 +2864,25 @@ var require_parser = __commonJS({
2409
2864
  return AssignmentOp$0(state);
2410
2865
  }
2411
2866
  }
2412
- var AssignmentOpSymbol$0 = $EXPECT($L27, fail, 'AssignmentOpSymbol "**="');
2413
- var AssignmentOpSymbol$1 = $EXPECT($L28, fail, 'AssignmentOpSymbol "*="');
2414
- var AssignmentOpSymbol$2 = $EXPECT($L29, fail, 'AssignmentOpSymbol "/="');
2415
- var AssignmentOpSymbol$3 = $EXPECT($L30, fail, 'AssignmentOpSymbol "%="');
2416
- var AssignmentOpSymbol$4 = $EXPECT($L31, fail, 'AssignmentOpSymbol "+="');
2417
- var AssignmentOpSymbol$5 = $EXPECT($L32, fail, 'AssignmentOpSymbol "-="');
2418
- var AssignmentOpSymbol$6 = $EXPECT($L33, fail, 'AssignmentOpSymbol "<<="');
2419
- var AssignmentOpSymbol$7 = $EXPECT($L34, fail, 'AssignmentOpSymbol ">>>="');
2420
- var AssignmentOpSymbol$8 = $EXPECT($L35, fail, 'AssignmentOpSymbol ">>="');
2421
- var AssignmentOpSymbol$9 = $EXPECT($L36, fail, 'AssignmentOpSymbol "&&="');
2422
- var AssignmentOpSymbol$10 = $EXPECT($L37, fail, 'AssignmentOpSymbol "&="');
2423
- var AssignmentOpSymbol$11 = $EXPECT($L38, fail, 'AssignmentOpSymbol "^="');
2424
- var AssignmentOpSymbol$12 = $EXPECT($L39, fail, 'AssignmentOpSymbol "||="');
2425
- var AssignmentOpSymbol$13 = $EXPECT($L40, fail, 'AssignmentOpSymbol "|="');
2426
- var AssignmentOpSymbol$14 = $EXPECT($L41, fail, 'AssignmentOpSymbol "??="');
2427
- var AssignmentOpSymbol$15 = $T($EXPECT($L42, fail, 'AssignmentOpSymbol "?="'), function(value) {
2867
+ var AssignmentOpSymbol$0 = $EXPECT($L28, fail, 'AssignmentOpSymbol "**="');
2868
+ var AssignmentOpSymbol$1 = $EXPECT($L29, fail, 'AssignmentOpSymbol "*="');
2869
+ var AssignmentOpSymbol$2 = $EXPECT($L30, fail, 'AssignmentOpSymbol "/="');
2870
+ var AssignmentOpSymbol$3 = $EXPECT($L31, fail, 'AssignmentOpSymbol "%="');
2871
+ var AssignmentOpSymbol$4 = $EXPECT($L32, fail, 'AssignmentOpSymbol "+="');
2872
+ var AssignmentOpSymbol$5 = $EXPECT($L33, fail, 'AssignmentOpSymbol "-="');
2873
+ var AssignmentOpSymbol$6 = $EXPECT($L34, fail, 'AssignmentOpSymbol "<<="');
2874
+ var AssignmentOpSymbol$7 = $EXPECT($L35, fail, 'AssignmentOpSymbol ">>>="');
2875
+ var AssignmentOpSymbol$8 = $EXPECT($L36, fail, 'AssignmentOpSymbol ">>="');
2876
+ var AssignmentOpSymbol$9 = $EXPECT($L37, fail, 'AssignmentOpSymbol "&&="');
2877
+ var AssignmentOpSymbol$10 = $EXPECT($L38, fail, 'AssignmentOpSymbol "&="');
2878
+ var AssignmentOpSymbol$11 = $EXPECT($L39, fail, 'AssignmentOpSymbol "^="');
2879
+ var AssignmentOpSymbol$12 = $EXPECT($L40, fail, 'AssignmentOpSymbol "||="');
2880
+ var AssignmentOpSymbol$13 = $EXPECT($L41, fail, 'AssignmentOpSymbol "|="');
2881
+ var AssignmentOpSymbol$14 = $EXPECT($L42, fail, 'AssignmentOpSymbol "??="');
2882
+ var AssignmentOpSymbol$15 = $T($EXPECT($L43, fail, 'AssignmentOpSymbol "?="'), function(value) {
2428
2883
  return "??=";
2429
2884
  });
2430
- var AssignmentOpSymbol$16 = $EXPECT($L43, fail, 'AssignmentOpSymbol "="');
2885
+ var AssignmentOpSymbol$16 = $EXPECT($L44, fail, 'AssignmentOpSymbol "="');
2431
2886
  function AssignmentOpSymbol(state) {
2432
2887
  if (state.tokenize) {
2433
2888
  return $TOKEN("AssignmentOpSymbol", state, AssignmentOpSymbol$0(state) || AssignmentOpSymbol$1(state) || AssignmentOpSymbol$2(state) || AssignmentOpSymbol$3(state) || AssignmentOpSymbol$4(state) || AssignmentOpSymbol$5(state) || AssignmentOpSymbol$6(state) || AssignmentOpSymbol$7(state) || AssignmentOpSymbol$8(state) || AssignmentOpSymbol$9(state) || AssignmentOpSymbol$10(state) || AssignmentOpSymbol$11(state) || AssignmentOpSymbol$12(state) || AssignmentOpSymbol$13(state) || AssignmentOpSymbol$14(state) || AssignmentOpSymbol$15(state) || AssignmentOpSymbol$16(state));
@@ -2436,7 +2891,9 @@ var require_parser = __commonJS({
2436
2891
  }
2437
2892
  }
2438
2893
  var BinaryOp$0 = $TS($S(BinaryOpSymbol), function($skip, $loc, $0, $1) {
2439
- return { $loc, token: $1 };
2894
+ if (typeof $1 === "string")
2895
+ return { $loc, token: $1 };
2896
+ return $1;
2440
2897
  });
2441
2898
  function BinaryOp(state) {
2442
2899
  if (state.verbose)
@@ -2447,68 +2904,80 @@ var require_parser = __commonJS({
2447
2904
  return BinaryOp$0(state);
2448
2905
  }
2449
2906
  }
2450
- var BinaryOpSymbol$0 = $EXPECT($L44, fail, 'BinaryOpSymbol "**"');
2451
- var BinaryOpSymbol$1 = $EXPECT($L45, fail, 'BinaryOpSymbol "*"');
2452
- var BinaryOpSymbol$2 = $EXPECT($L46, fail, 'BinaryOpSymbol "/"');
2453
- var BinaryOpSymbol$3 = $EXPECT($L47, fail, 'BinaryOpSymbol "%"');
2454
- var BinaryOpSymbol$4 = $EXPECT($L48, fail, 'BinaryOpSymbol "+"');
2455
- var BinaryOpSymbol$5 = $EXPECT($L49, fail, 'BinaryOpSymbol "-"');
2456
- var BinaryOpSymbol$6 = $EXPECT($L50, fail, 'BinaryOpSymbol "<="');
2457
- var BinaryOpSymbol$7 = $EXPECT($L51, fail, 'BinaryOpSymbol ">="');
2458
- var BinaryOpSymbol$8 = $EXPECT($L52, fail, 'BinaryOpSymbol "<<"');
2907
+ var BinaryOpSymbol$0 = $EXPECT($L45, fail, 'BinaryOpSymbol "**"');
2908
+ var BinaryOpSymbol$1 = $EXPECT($L46, fail, 'BinaryOpSymbol "*"');
2909
+ var BinaryOpSymbol$2 = $EXPECT($L47, fail, 'BinaryOpSymbol "/"');
2910
+ var BinaryOpSymbol$3 = $EXPECT($L48, fail, 'BinaryOpSymbol "%"');
2911
+ var BinaryOpSymbol$4 = $EXPECT($L49, fail, 'BinaryOpSymbol "+"');
2912
+ var BinaryOpSymbol$5 = $EXPECT($L50, fail, 'BinaryOpSymbol "-"');
2913
+ var BinaryOpSymbol$6 = $EXPECT($L51, fail, 'BinaryOpSymbol "<="');
2914
+ var BinaryOpSymbol$7 = $EXPECT($L52, fail, 'BinaryOpSymbol ">="');
2915
+ var BinaryOpSymbol$8 = $EXPECT($L53, fail, 'BinaryOpSymbol "<<"');
2459
2916
  var BinaryOpSymbol$9 = $EXPECT($L4, fail, 'BinaryOpSymbol "<"');
2460
- var BinaryOpSymbol$10 = $EXPECT($L53, fail, 'BinaryOpSymbol ">>>"');
2461
- var BinaryOpSymbol$11 = $EXPECT($L54, fail, 'BinaryOpSymbol ">>"');
2462
- var BinaryOpSymbol$12 = $EXPECT($L55, fail, 'BinaryOpSymbol ">"');
2463
- var BinaryOpSymbol$13 = $EXPECT($L56, fail, 'BinaryOpSymbol "!=="');
2464
- var BinaryOpSymbol$14 = $TV($EXPECT($L57, fail, 'BinaryOpSymbol "!="'), function($skip, $loc, $0, $1) {
2917
+ var BinaryOpSymbol$10 = $EXPECT($L54, fail, 'BinaryOpSymbol ">>>"');
2918
+ var BinaryOpSymbol$11 = $EXPECT($L55, fail, 'BinaryOpSymbol ">>"');
2919
+ var BinaryOpSymbol$12 = $EXPECT($L56, fail, 'BinaryOpSymbol ">"');
2920
+ var BinaryOpSymbol$13 = $EXPECT($L57, fail, 'BinaryOpSymbol "!=="');
2921
+ var BinaryOpSymbol$14 = $TV($EXPECT($L58, fail, 'BinaryOpSymbol "!="'), function($skip, $loc, $0, $1) {
2465
2922
  if (module2.config.coffeeEq)
2466
2923
  return "!==";
2467
2924
  return $1;
2468
2925
  });
2469
- var BinaryOpSymbol$15 = $T($S($EXPECT($L58, fail, 'BinaryOpSymbol "is"'), NonIdContinue), function(value) {
2926
+ var BinaryOpSymbol$15 = $TS($S($EXPECT($L59, fail, 'BinaryOpSymbol "isnt"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2927
+ if (module2.config.coffeeIsnt)
2928
+ return "!==";
2929
+ return $skip;
2930
+ });
2931
+ var BinaryOpSymbol$16 = $T($S($EXPECT($L60, fail, 'BinaryOpSymbol "is"'), NonIdContinue), function(value) {
2470
2932
  return "===";
2471
2933
  });
2472
- var BinaryOpSymbol$16 = $EXPECT($L59, fail, 'BinaryOpSymbol "==="');
2473
- var BinaryOpSymbol$17 = $TV($EXPECT($L60, fail, 'BinaryOpSymbol "=="'), function($skip, $loc, $0, $1) {
2934
+ var BinaryOpSymbol$17 = $EXPECT($L61, fail, 'BinaryOpSymbol "==="');
2935
+ var BinaryOpSymbol$18 = $TV($EXPECT($L62, fail, 'BinaryOpSymbol "=="'), function($skip, $loc, $0, $1) {
2474
2936
  if (module2.config.coffeeEq)
2475
2937
  return "===";
2476
2938
  return $1;
2477
2939
  });
2478
- var BinaryOpSymbol$18 = $T($S($EXPECT($L61, fail, 'BinaryOpSymbol "and"'), NonIdContinue), function(value) {
2940
+ var BinaryOpSymbol$19 = $T($S($EXPECT($L63, fail, 'BinaryOpSymbol "and"'), NonIdContinue), function(value) {
2479
2941
  return "&&";
2480
2942
  });
2481
- var BinaryOpSymbol$19 = $EXPECT($L62, fail, 'BinaryOpSymbol "&&"');
2482
- var BinaryOpSymbol$20 = $T($S($EXPECT($L63, fail, 'BinaryOpSymbol "or"'), NonIdContinue), function(value) {
2943
+ var BinaryOpSymbol$20 = $EXPECT($L64, fail, 'BinaryOpSymbol "&&"');
2944
+ var BinaryOpSymbol$21 = $T($S(CoffeeOfEnabled, $EXPECT($L65, fail, 'BinaryOpSymbol "of"'), NonIdContinue), function(value) {
2945
+ return "in";
2946
+ });
2947
+ var BinaryOpSymbol$22 = $T($S($EXPECT($L66, fail, 'BinaryOpSymbol "or"'), NonIdContinue), function(value) {
2483
2948
  return "||";
2484
2949
  });
2485
- var BinaryOpSymbol$21 = $EXPECT($L64, fail, 'BinaryOpSymbol "||"');
2486
- var BinaryOpSymbol$22 = $EXPECT($L65, fail, 'BinaryOpSymbol "??"');
2487
- var BinaryOpSymbol$23 = $TS($S($EXPECT($L66, fail, 'BinaryOpSymbol "instanceof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2950
+ var BinaryOpSymbol$23 = $EXPECT($L67, fail, 'BinaryOpSymbol "||"');
2951
+ var BinaryOpSymbol$24 = $EXPECT($L68, fail, 'BinaryOpSymbol "??"');
2952
+ var BinaryOpSymbol$25 = $TS($S($EXPECT($L69, fail, 'BinaryOpSymbol "instanceof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2488
2953
  return $1;
2489
2954
  });
2490
- var BinaryOpSymbol$24 = $TS($S($EXPECT($L67, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2955
+ var BinaryOpSymbol$26 = $TS($S(CoffeeOfEnabled, $EXPECT($L70, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
2956
+ return module2.getIndexOfRef();
2957
+ });
2958
+ var BinaryOpSymbol$27 = $TS($S($EXPECT($L70, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2491
2959
  return $1;
2492
2960
  });
2493
- var BinaryOpSymbol$25 = $EXPECT($L68, fail, 'BinaryOpSymbol "&"');
2494
- var BinaryOpSymbol$26 = $EXPECT($L69, fail, 'BinaryOpSymbol "^"');
2495
- var BinaryOpSymbol$27 = $EXPECT($L70, fail, 'BinaryOpSymbol "|"');
2961
+ var BinaryOpSymbol$28 = $EXPECT($L71, fail, 'BinaryOpSymbol "&"');
2962
+ var BinaryOpSymbol$29 = $EXPECT($L72, fail, 'BinaryOpSymbol "^"');
2963
+ var BinaryOpSymbol$30 = $EXPECT($L73, fail, 'BinaryOpSymbol "|"');
2496
2964
  function BinaryOpSymbol(state) {
2497
2965
  if (state.tokenize) {
2498
- return $TOKEN("BinaryOpSymbol", state, BinaryOpSymbol$0(state) || BinaryOpSymbol$1(state) || BinaryOpSymbol$2(state) || BinaryOpSymbol$3(state) || BinaryOpSymbol$4(state) || BinaryOpSymbol$5(state) || BinaryOpSymbol$6(state) || BinaryOpSymbol$7(state) || BinaryOpSymbol$8(state) || BinaryOpSymbol$9(state) || BinaryOpSymbol$10(state) || BinaryOpSymbol$11(state) || BinaryOpSymbol$12(state) || BinaryOpSymbol$13(state) || BinaryOpSymbol$14(state) || BinaryOpSymbol$15(state) || BinaryOpSymbol$16(state) || BinaryOpSymbol$17(state) || BinaryOpSymbol$18(state) || BinaryOpSymbol$19(state) || BinaryOpSymbol$20(state) || BinaryOpSymbol$21(state) || BinaryOpSymbol$22(state) || BinaryOpSymbol$23(state) || BinaryOpSymbol$24(state) || BinaryOpSymbol$25(state) || BinaryOpSymbol$26(state) || BinaryOpSymbol$27(state));
2966
+ return $TOKEN("BinaryOpSymbol", state, BinaryOpSymbol$0(state) || BinaryOpSymbol$1(state) || BinaryOpSymbol$2(state) || BinaryOpSymbol$3(state) || BinaryOpSymbol$4(state) || BinaryOpSymbol$5(state) || BinaryOpSymbol$6(state) || BinaryOpSymbol$7(state) || BinaryOpSymbol$8(state) || BinaryOpSymbol$9(state) || BinaryOpSymbol$10(state) || BinaryOpSymbol$11(state) || BinaryOpSymbol$12(state) || BinaryOpSymbol$13(state) || BinaryOpSymbol$14(state) || BinaryOpSymbol$15(state) || BinaryOpSymbol$16(state) || BinaryOpSymbol$17(state) || BinaryOpSymbol$18(state) || BinaryOpSymbol$19(state) || BinaryOpSymbol$20(state) || BinaryOpSymbol$21(state) || BinaryOpSymbol$22(state) || BinaryOpSymbol$23(state) || BinaryOpSymbol$24(state) || BinaryOpSymbol$25(state) || BinaryOpSymbol$26(state) || BinaryOpSymbol$27(state) || BinaryOpSymbol$28(state) || BinaryOpSymbol$29(state) || BinaryOpSymbol$30(state));
2499
2967
  } else {
2500
- return BinaryOpSymbol$0(state) || BinaryOpSymbol$1(state) || BinaryOpSymbol$2(state) || BinaryOpSymbol$3(state) || BinaryOpSymbol$4(state) || BinaryOpSymbol$5(state) || BinaryOpSymbol$6(state) || BinaryOpSymbol$7(state) || BinaryOpSymbol$8(state) || BinaryOpSymbol$9(state) || BinaryOpSymbol$10(state) || BinaryOpSymbol$11(state) || BinaryOpSymbol$12(state) || BinaryOpSymbol$13(state) || BinaryOpSymbol$14(state) || BinaryOpSymbol$15(state) || BinaryOpSymbol$16(state) || BinaryOpSymbol$17(state) || BinaryOpSymbol$18(state) || BinaryOpSymbol$19(state) || BinaryOpSymbol$20(state) || BinaryOpSymbol$21(state) || BinaryOpSymbol$22(state) || BinaryOpSymbol$23(state) || BinaryOpSymbol$24(state) || BinaryOpSymbol$25(state) || BinaryOpSymbol$26(state) || BinaryOpSymbol$27(state);
2968
+ return BinaryOpSymbol$0(state) || BinaryOpSymbol$1(state) || BinaryOpSymbol$2(state) || BinaryOpSymbol$3(state) || BinaryOpSymbol$4(state) || BinaryOpSymbol$5(state) || BinaryOpSymbol$6(state) || BinaryOpSymbol$7(state) || BinaryOpSymbol$8(state) || BinaryOpSymbol$9(state) || BinaryOpSymbol$10(state) || BinaryOpSymbol$11(state) || BinaryOpSymbol$12(state) || BinaryOpSymbol$13(state) || BinaryOpSymbol$14(state) || BinaryOpSymbol$15(state) || BinaryOpSymbol$16(state) || BinaryOpSymbol$17(state) || BinaryOpSymbol$18(state) || BinaryOpSymbol$19(state) || BinaryOpSymbol$20(state) || BinaryOpSymbol$21(state) || BinaryOpSymbol$22(state) || BinaryOpSymbol$23(state) || BinaryOpSymbol$24(state) || BinaryOpSymbol$25(state) || BinaryOpSymbol$26(state) || BinaryOpSymbol$27(state) || BinaryOpSymbol$28(state) || BinaryOpSymbol$29(state) || BinaryOpSymbol$30(state);
2501
2969
  }
2502
2970
  }
2503
- var UnaryOp$0 = $TR($EXPECT($R2, fail, "UnaryOp /[!~+-]/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
2971
+ var UnaryOp$0 = $TR($EXPECT($R2, fail, "UnaryOp /[!~+-](?!\\s)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
2504
2972
  return { $loc, token: $0 };
2505
2973
  });
2506
- var UnaryOp$1 = $S($C(Delete, Void, Typeof), __);
2974
+ var UnaryOp$1 = $S($C(Await, Delete, Void, Typeof), __);
2975
+ var UnaryOp$2 = Not;
2507
2976
  function UnaryOp(state) {
2508
2977
  if (state.tokenize) {
2509
- return $TOKEN("UnaryOp", state, UnaryOp$0(state) || UnaryOp$1(state));
2978
+ return $TOKEN("UnaryOp", state, UnaryOp$0(state) || UnaryOp$1(state) || UnaryOp$2(state));
2510
2979
  } else {
2511
- return UnaryOp$0(state) || UnaryOp$1(state);
2980
+ return UnaryOp$0(state) || UnaryOp$1(state) || UnaryOp$2(state);
2512
2981
  }
2513
2982
  }
2514
2983
  var ModuleItem$0 = ImportDeclaration;
@@ -2527,7 +2996,18 @@ var require_parser = __commonJS({
2527
2996
  var ws = $2;
2528
2997
  var post = $3;
2529
2998
  if (post) {
2530
- post.children.push(statement);
2999
+ let block;
3000
+ if (post.type === "ForStatement") {
3001
+ if (post.blockPrefix?.length) {
3002
+ block = [" {", ...post.blockPrefix, ...statement, " }"];
3003
+ } else {
3004
+ block = statement;
3005
+ }
3006
+ } else {
3007
+ block = statement;
3008
+ }
3009
+ post.block = block;
3010
+ post.children.push(block);
2531
3011
  if (!module2.isWhitespaceOrEmpty(ws))
2532
3012
  post.children.push(ws);
2533
3013
  return post;
@@ -2569,7 +3049,7 @@ var require_parser = __commonJS({
2569
3049
  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);
2570
3050
  }
2571
3051
  }
2572
- var EmptyStatement$0 = $T($S($Q(TrailingComment), $Y($EXPECT($L71, fail, 'EmptyStatement ";"'))), function(value) {
3052
+ var EmptyStatement$0 = $T($S($Q(TrailingComment), $Y($EXPECT($L74, fail, 'EmptyStatement ";"'))), function(value) {
2573
3053
  return { "type": "EmptyStatement", "children": value[0] };
2574
3054
  });
2575
3055
  function EmptyStatement(state) {
@@ -2581,7 +3061,7 @@ var require_parser = __commonJS({
2581
3061
  return EmptyStatement$0(state);
2582
3062
  }
2583
3063
  }
2584
- var BlockStatement$0 = $T($S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace), function(value) {
3064
+ var BlockStatement$0 = $T($S(__, OpenBrace, EOS, NestedBlockStatements, __, CloseBrace, $N($S(__, $EXPECT($L44, fail, 'BlockStatement "="')))), function(value) {
2585
3065
  var exps = value[3];
2586
3066
  return { "type": "BlockStatement", "children": value, "expressions": exps };
2587
3067
  });
@@ -2594,7 +3074,7 @@ var require_parser = __commonJS({
2594
3074
  return BlockStatement$0(state);
2595
3075
  }
2596
3076
  }
2597
- var IfStatement$0 = $TS($S(IfClause, Block, $E($S(__, Else, Block))), function($skip, $loc, $0, $1, $2, $3) {
3077
+ var IfStatement$0 = $TS($S($C(IfClause, UnlessClause), Block, $E($S(__, Else, Block))), function($skip, $loc, $0, $1, $2, $3) {
2598
3078
  var clause = $1;
2599
3079
  var block = $2;
2600
3080
  var e = $3;
@@ -2603,17 +3083,13 @@ var require_parser = __commonJS({
2603
3083
  clause.children.push(e);
2604
3084
  return clause;
2605
3085
  });
2606
- var IfStatement$1 = $TS($S(UnlessClause, Block), function($skip, $loc, $0, $1, $2) {
2607
- var clause = $1;
2608
- var block = $2;
2609
- clause.children.push(block);
2610
- return clause;
2611
- });
2612
3086
  function IfStatement(state) {
3087
+ if (state.verbose)
3088
+ console.log("ENTER:", "IfStatement");
2613
3089
  if (state.tokenize) {
2614
- return $TOKEN("IfStatement", state, IfStatement$0(state) || IfStatement$1(state));
3090
+ return $TOKEN("IfStatement", state, IfStatement$0(state));
2615
3091
  } else {
2616
- return IfStatement$0(state) || IfStatement$1(state);
3092
+ return IfStatement$0(state);
2617
3093
  }
2618
3094
  }
2619
3095
  var IfClause$0 = $T($S(If, Condition), function(value) {
@@ -2654,6 +3130,72 @@ var require_parser = __commonJS({
2654
3130
  return UnlessClause$0(state);
2655
3131
  }
2656
3132
  }
3133
+ var IfExpression$0 = $TS($S(IfClause, ExpressionBlock, $E($S(__, Else, ExpressionBlock))), function($skip, $loc, $0, $1, $2, $3) {
3134
+ var clause = $1;
3135
+ var b = $2;
3136
+ var e = $3;
3137
+ clause.children.shift();
3138
+ clause.children.push("?", b, ":");
3139
+ if (e) {
3140
+ e.splice(1, 1);
3141
+ clause.children.push(e);
3142
+ } else {
3143
+ clause.children.push("void 0");
3144
+ }
3145
+ clause.type = "IfExpression";
3146
+ return clause;
3147
+ });
3148
+ function IfExpression(state) {
3149
+ if (state.verbose)
3150
+ console.log("ENTER:", "IfExpression");
3151
+ if (state.tokenize) {
3152
+ return $TOKEN("IfExpression", state, IfExpression$0(state));
3153
+ } else {
3154
+ return IfExpression$0(state);
3155
+ }
3156
+ }
3157
+ var ExpressionBlock$0 = $TS($S(InsertOpenParen, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
3158
+ var exps = $3;
3159
+ exps[exps.length - 1].pop();
3160
+ return {
3161
+ type: "BlockExpressions",
3162
+ expressions: exps,
3163
+ children: $0
3164
+ };
3165
+ });
3166
+ var ExpressionBlock$1 = $S($E(Then), ExtendedExpression);
3167
+ function ExpressionBlock(state) {
3168
+ if (state.tokenize) {
3169
+ return $TOKEN("ExpressionBlock", state, ExpressionBlock$0(state) || ExpressionBlock$1(state));
3170
+ } else {
3171
+ return ExpressionBlock$0(state) || ExpressionBlock$1(state);
3172
+ }
3173
+ }
3174
+ var NestedBlockExpressions$0 = $TS($S(PushIndent, $Q(NestedBlockExpression), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
3175
+ var exps = $2;
3176
+ if (!exps.length)
3177
+ return $skip;
3178
+ return exps;
3179
+ });
3180
+ function NestedBlockExpressions(state) {
3181
+ if (state.verbose)
3182
+ console.log("ENTER:", "NestedBlockExpressions");
3183
+ if (state.tokenize) {
3184
+ return $TOKEN("NestedBlockExpressions", state, NestedBlockExpressions$0(state));
3185
+ } else {
3186
+ return NestedBlockExpressions$0(state);
3187
+ }
3188
+ }
3189
+ var NestedBlockExpression$0 = $S(Nested, ExtendedExpression, ExpressionDelimiter);
3190
+ function NestedBlockExpression(state) {
3191
+ if (state.verbose)
3192
+ console.log("ENTER:", "NestedBlockExpression");
3193
+ if (state.tokenize) {
3194
+ return $TOKEN("NestedBlockExpression", state, NestedBlockExpression$0(state));
3195
+ } else {
3196
+ return NestedBlockExpression$0(state);
3197
+ }
3198
+ }
2657
3199
  var IterationStatement$0 = LoopStatement;
2658
3200
  var IterationStatement$1 = DoWhileStatement;
2659
3201
  var IterationStatement$2 = WhileStatement;
@@ -2728,61 +3270,219 @@ var require_parser = __commonJS({
2728
3270
  kind.token = "while";
2729
3271
  $0 = [kind, cond];
2730
3272
  }
2731
- return {
2732
- type: "IterationStatement",
2733
- children: $0
2734
- };
3273
+ return {
3274
+ type: "IterationStatement",
3275
+ children: $0
3276
+ };
3277
+ });
3278
+ function WhileClause(state) {
3279
+ if (state.verbose)
3280
+ console.log("ENTER:", "WhileClause");
3281
+ if (state.tokenize) {
3282
+ return $TOKEN("WhileClause", state, WhileClause$0(state));
3283
+ } else {
3284
+ return WhileClause$0(state);
3285
+ }
3286
+ }
3287
+ var ForStatement$0 = $TS($S(ForClause, Block), function($skip, $loc, $0, $1, $2) {
3288
+ var clause = $1;
3289
+ var block = $2;
3290
+ clause.children.push(block);
3291
+ clause.block = block;
3292
+ if (clause.blockPrefix) {
3293
+ block.expressions.splice(0, 0, ...clause.blockPrefix);
3294
+ }
3295
+ return clause;
3296
+ });
3297
+ function ForStatement(state) {
3298
+ if (state.verbose)
3299
+ console.log("ENTER:", "ForStatement");
3300
+ if (state.tokenize) {
3301
+ return $TOKEN("ForStatement", state, ForStatement$0(state));
3302
+ } else {
3303
+ return ForStatement$0(state);
3304
+ }
3305
+ }
3306
+ var ForClause$0 = $TS($S(For, __, ForStatementControl), function($skip, $loc, $0, $1, $2, $3) {
3307
+ var c = $3;
3308
+ const { children, declaration } = c;
3309
+ children.splice(0, 0, $1, ...$2);
3310
+ return {
3311
+ type: "ForStatement",
3312
+ children,
3313
+ declaration,
3314
+ block: null,
3315
+ blockPrefix: c.blockPrefix
3316
+ };
3317
+ });
3318
+ function ForClause(state) {
3319
+ if (state.verbose)
3320
+ console.log("ENTER:", "ForClause");
3321
+ if (state.tokenize) {
3322
+ return $TOKEN("ForClause", state, ForClause$0(state));
3323
+ } else {
3324
+ return ForClause$0(state);
3325
+ }
3326
+ }
3327
+ var ForStatementControl$0 = $T($S($N(CoffeeForLoopsEnabled), ForStatementParameters), function(value) {
3328
+ return value[1];
3329
+ });
3330
+ var ForStatementControl$1 = $TS($S(CoffeeForLoopsEnabled, CoffeeForStatementParameters, $E(WhenCondition)), function($skip, $loc, $0, $1, $2, $3) {
3331
+ if ($3) {
3332
+ const indent = "".padStart((module2.currentIndent + 1) * 2);
3333
+ module2.insertTrimmingSpace($3, "");
3334
+ $2.blockPrefix.push({
3335
+ type: "IfStatement",
3336
+ children: [indent, "if (!(", $3, ")) continue\n"]
3337
+ });
3338
+ }
3339
+ return $2;
2735
3340
  });
2736
- function WhileClause(state) {
3341
+ function ForStatementControl(state) {
3342
+ if (state.tokenize) {
3343
+ return $TOKEN("ForStatementControl", state, ForStatementControl$0(state) || ForStatementControl$1(state));
3344
+ } else {
3345
+ return ForStatementControl$0(state) || ForStatementControl$1(state);
3346
+ }
3347
+ }
3348
+ var WhenCondition$0 = $T($S(__, When, ExtendedExpression), function(value) {
3349
+ var exp = value[2];
3350
+ return exp;
3351
+ });
3352
+ function WhenCondition(state) {
2737
3353
  if (state.verbose)
2738
- console.log("ENTER:", "WhileClause");
3354
+ console.log("ENTER:", "WhenCondition");
2739
3355
  if (state.tokenize) {
2740
- return $TOKEN("WhileClause", state, WhileClause$0(state));
3356
+ return $TOKEN("WhenCondition", state, WhenCondition$0(state));
2741
3357
  } else {
2742
- return WhileClause$0(state);
3358
+ return WhenCondition$0(state);
2743
3359
  }
2744
3360
  }
2745
- var ForStatement$0 = $TS($S(ForClause, Block), function($skip, $loc, $0, $1, $2) {
2746
- var clause = $1;
2747
- var block = $2;
2748
- clause.children.push(block);
2749
- return clause;
3361
+ var CoffeeForStatementParameters$0 = $TS($S($E($S(Await, __)), InsertOpenParen, CoffeeForDeclaration, __, $C(In, Of, From), ExtendedExpression, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
3362
+ var declaration = $3;
3363
+ var kind = $5;
3364
+ var exp = $6;
3365
+ let blockPrefix = [];
3366
+ if (kind.token === "from") {
3367
+ kind.token = "of";
3368
+ } else if (kind.token === "of") {
3369
+ module2.insertTrimmingSpace(declaration, "");
3370
+ module2.insertTrimmingSpace(exp, "");
3371
+ if (declaration.own) {
3372
+ const indent = "".padStart((module2.currentIndent + 1) * 2);
3373
+ const hasPropRef = module2.getHasPropRef();
3374
+ blockPrefix.push([indent, "if (!", hasPropRef, ".call(", exp, ", ", declaration, ")) continue\n"]);
3375
+ }
3376
+ kind.token = "in ";
3377
+ } else if (kind.token === "in") {
3378
+ const counterRef = {
3379
+ type: "Ref",
3380
+ base: "i"
3381
+ };
3382
+ const lenRef = {
3383
+ type: "Ref",
3384
+ base: "len"
3385
+ };
3386
+ const expRef = exp.type === "Identifier" ? exp : {
3387
+ type: "Ref",
3388
+ base: "ref"
3389
+ };
3390
+ const varRef = declaration;
3391
+ module2.insertTrimmingSpace(exp, "");
3392
+ const expRefDec = expRef !== exp ? [expRef, " = ", exp, ", "] : [];
3393
+ declaration = {
3394
+ type: "Declaration",
3395
+ children: ["let ", ...expRefDec, counterRef, " = 0, ", lenRef, " = ", expRef, ".length"],
3396
+ names: []
3397
+ };
3398
+ const indent = "".padStart((module2.currentIndent + 1) * 2);
3399
+ blockPrefix.push([{
3400
+ type: "AssignmentExpression",
3401
+ children: [indent, varRef, " = ", expRef, "[", counterRef, "]\n"],
3402
+ names: varRef.names
3403
+ }]);
3404
+ return {
3405
+ declaration,
3406
+ children: [$1, $2, declaration, "; ", counterRef, " < ", lenRef, "; ", counterRef, "++", $7],
3407
+ blockPrefix
3408
+ };
3409
+ }
3410
+ return {
3411
+ declaration,
3412
+ children: $0,
3413
+ blockPrefix
3414
+ };
2750
3415
  });
2751
- function ForStatement(state) {
3416
+ function CoffeeForStatementParameters(state) {
2752
3417
  if (state.verbose)
2753
- console.log("ENTER:", "ForStatement");
3418
+ console.log("ENTER:", "CoffeeForStatementParameters");
2754
3419
  if (state.tokenize) {
2755
- return $TOKEN("ForStatement", state, ForStatement$0(state));
3420
+ return $TOKEN("CoffeeForStatementParameters", state, CoffeeForStatementParameters$0(state));
2756
3421
  } else {
2757
- return ForStatement$0(state);
3422
+ return CoffeeForStatementParameters$0(state);
2758
3423
  }
2759
3424
  }
2760
- var ForClause$0 = $T($S(For, __, ForStatementControl), function(value) {
2761
- return { "type": "IterationStatement", "children": value };
3425
+ var CoffeeForDeclaration$0 = $TS($S($E($S(__, $EXPECT($L75, fail, 'CoffeeForDeclaration "own"'))), ForBinding), function($skip, $loc, $0, $1, $2) {
3426
+ var own = $1;
3427
+ var binding = $2;
3428
+ if (own) {
3429
+ binding.own = true;
3430
+ }
3431
+ binding.type = "AssignmentExpression";
3432
+ return binding;
2762
3433
  });
2763
- function ForClause(state) {
3434
+ function CoffeeForDeclaration(state) {
2764
3435
  if (state.verbose)
2765
- console.log("ENTER:", "ForClause");
3436
+ console.log("ENTER:", "CoffeeForDeclaration");
2766
3437
  if (state.tokenize) {
2767
- return $TOKEN("ForClause", state, ForClause$0(state));
3438
+ return $TOKEN("CoffeeForDeclaration", state, CoffeeForDeclaration$0(state));
2768
3439
  } else {
2769
- return ForClause$0(state);
3440
+ return CoffeeForDeclaration$0(state);
2770
3441
  }
2771
3442
  }
2772
- var ForStatementControl$0 = $S(OpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, Semicolon, $E(Expression), Semicolon, $E(Expression), __, CloseParen);
2773
- var ForStatementControl$1 = $S(InsertOpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, Semicolon, $E(Expression), Semicolon, $E($S($N(EOS), Expression)), InsertCloseParen);
2774
- var ForStatementControl$2 = $S(OpenParen, __, ForInOfDeclaration, __, In, Expression, __, CloseParen);
2775
- var ForStatementControl$3 = $S(InsertOpenParen, ForInOfDeclaration, __, In, Expression, InsertCloseParen);
2776
- var ForStatementControl$4 = $S($E($S(Await, __)), OpenParen, __, ForInOfDeclaration, __, Of, AssignmentExpression, __, CloseParen);
2777
- var ForStatementControl$5 = $S($E($S(Await, __)), InsertOpenParen, ForInOfDeclaration, __, Of, AssignmentExpression, InsertCloseParen);
2778
- function ForStatementControl(state) {
3443
+ var ForStatementParameters$0 = $TS($S(OpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, Semicolon, $E(Expression), Semicolon, $E(Expression), __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
3444
+ var declaration = $3;
3445
+ return {
3446
+ declaration,
3447
+ children: $0
3448
+ };
3449
+ });
3450
+ var ForStatementParameters$1 = $TS($S(InsertOpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, Semicolon, $E(Expression), Semicolon, $E($S($N(EOS), Expression)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3451
+ var declaration = $3;
3452
+ return {
3453
+ declaration,
3454
+ children: $0
3455
+ };
3456
+ });
3457
+ var ForStatementParameters$2 = $TS($S($E($S(Await, __)), OpenParen, __, ForInOfDeclaration, __, $C(In, Of), ExtendedExpression, __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3458
+ var declaration = $4;
3459
+ return {
3460
+ declaration,
3461
+ children: $0
3462
+ };
3463
+ });
3464
+ var ForStatementParameters$3 = $TS($S($E($S(Await, __)), InsertOpenParen, ForInOfDeclaration, __, $C(In, Of), ExtendedExpression, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
3465
+ var declaration = $3;
3466
+ return {
3467
+ declaration,
3468
+ children: $0
3469
+ };
3470
+ });
3471
+ function ForStatementParameters(state) {
2779
3472
  if (state.tokenize) {
2780
- return $TOKEN("ForStatementControl", state, ForStatementControl$0(state) || ForStatementControl$1(state) || ForStatementControl$2(state) || ForStatementControl$3(state) || ForStatementControl$4(state) || ForStatementControl$5(state));
3473
+ return $TOKEN("ForStatementParameters", state, ForStatementParameters$0(state) || ForStatementParameters$1(state) || ForStatementParameters$2(state) || ForStatementParameters$3(state));
2781
3474
  } else {
2782
- return ForStatementControl$0(state) || ForStatementControl$1(state) || ForStatementControl$2(state) || ForStatementControl$3(state) || ForStatementControl$4(state) || ForStatementControl$5(state);
3475
+ return ForStatementParameters$0(state) || ForStatementParameters$1(state) || ForStatementParameters$2(state) || ForStatementParameters$3(state);
2783
3476
  }
2784
3477
  }
2785
- var ForInOfDeclaration$0 = $S(Var, ForBinding);
3478
+ var ForInOfDeclaration$0 = $TS($S(Var, ForBinding), function($skip, $loc, $0, $1, $2) {
3479
+ var binding = $2;
3480
+ return {
3481
+ type: "ForDeclaration",
3482
+ children: $0,
3483
+ names: binding.names
3484
+ };
3485
+ });
2786
3486
  var ForInOfDeclaration$1 = ForDeclaration;
2787
3487
  var ForInOfDeclaration$2 = LeftHandSideExpression;
2788
3488
  function ForInOfDeclaration(state) {
@@ -2792,8 +3492,24 @@ var require_parser = __commonJS({
2792
3492
  return ForInOfDeclaration$0(state) || ForInOfDeclaration$1(state) || ForInOfDeclaration$2(state);
2793
3493
  }
2794
3494
  }
2795
- var ForDeclaration$0 = $S(LetOrConst, NonIdContinue, ForBinding);
2796
- var ForDeclaration$1 = $S(InsertConst, ForBinding, $R$0($EXPECT($R3, fail, "ForDeclaration /(?=[\\s\\)])/")));
3495
+ var ForDeclaration$0 = $TS($S(LetOrConst, NonIdContinue, ForBinding), function($skip, $loc, $0, $1, $2, $3) {
3496
+ var c = $1;
3497
+ var binding = $3;
3498
+ return {
3499
+ type: "ForDeclaration",
3500
+ children: [c, binding],
3501
+ names: binding.names
3502
+ };
3503
+ });
3504
+ var ForDeclaration$1 = $TS($S(InsertConst, ForBinding, $EXPECT($R3, fail, "ForDeclaration /(?=[\\s\\)])/")), function($skip, $loc, $0, $1, $2, $3) {
3505
+ var c = $1;
3506
+ var binding = $2;
3507
+ return {
3508
+ type: "ForDeclaration",
3509
+ children: [c, binding],
3510
+ names: binding.names
3511
+ };
3512
+ });
2797
3513
  function ForDeclaration(state) {
2798
3514
  if (state.tokenize) {
2799
3515
  return $TOKEN("ForDeclaration", state, ForDeclaration$0(state) || ForDeclaration$1(state));
@@ -2822,6 +3538,22 @@ var require_parser = __commonJS({
2822
3538
  return SwitchStatement$0(state);
2823
3539
  }
2824
3540
  }
3541
+ var SwitchExpression$0 = $TV(SwitchStatement, function($skip, $loc, $0, $1) {
3542
+ var e = $0;
3543
+ module2.addImplicitReturns(e.children[2]);
3544
+ e.type = "SwitchExpression";
3545
+ e.children = ["($=>{", e.children, "})()"];
3546
+ return e;
3547
+ });
3548
+ function SwitchExpression(state) {
3549
+ if (state.verbose)
3550
+ console.log("ENTER:", "SwitchExpression");
3551
+ if (state.tokenize) {
3552
+ return $TOKEN("SwitchExpression", state, SwitchExpression$0(state));
3553
+ } else {
3554
+ return SwitchExpression$0(state);
3555
+ }
3556
+ }
2825
3557
  var CaseBlock$0 = $TS($S(__, OpenBrace, $Y(EOS), NestedCaseClauses, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2826
3558
  var clauses = $4;
2827
3559
  $0.splice(2, 1);
@@ -2875,19 +3607,19 @@ var require_parser = __commonJS({
2875
3607
  return NestedCaseClause$0(state);
2876
3608
  }
2877
3609
  }
2878
- var CaseClause$0 = $T($S(Case, CaseExpressionList, $C(NestedBlockExpressions, NoExpressions)), function(value) {
3610
+ var CaseClause$0 = $T($S(Case, CaseExpressionList, $C(NestedBlockStatements, NoExpressions)), function(value) {
2879
3611
  var exps = value[2];
2880
3612
  return { "type": "CaseClause", "expressions": exps, "children": value };
2881
3613
  });
2882
- var CaseClause$1 = $T($S(When, CaseExpressionList, NestedBlockExpressions, InsertBreak), function(value) {
3614
+ var CaseClause$1 = $T($S(When, CaseExpressionList, NestedBlockStatements, InsertBreak), function(value) {
2883
3615
  var exps = value[2];
2884
3616
  return { "type": "WhenClause", "expressions": exps, "children": value };
2885
3617
  });
2886
- var CaseClause$2 = $T($S(Default, ImpliedColon, $C(NestedBlockExpressions, NoExpressions)), function(value) {
3618
+ var CaseClause$2 = $T($S(Default, ImpliedColon, $C(NestedBlockStatements, NoExpressions)), function(value) {
2887
3619
  var exps = value[2];
2888
3620
  return { "type": "DefaultClause", "expressions": exps, "children": value };
2889
3621
  });
2890
- var CaseClause$3 = $TS($S(Else, ImpliedColon, NestedBlockExpressions), function($skip, $loc, $0, $1, $2, $3) {
3622
+ var CaseClause$3 = $TS($S(Else, ImpliedColon, NestedBlockStatements), function($skip, $loc, $0, $1, $2, $3) {
2891
3623
  var exps = $3;
2892
3624
  $1.token = "default";
2893
3625
  return {
@@ -2989,7 +3721,7 @@ var require_parser = __commonJS({
2989
3721
  return CatchBind$0(state) || CatchBind$1(state);
2990
3722
  }
2991
3723
  }
2992
- var Finally$0 = $S(__, $EXPECT($L72, fail, 'Finally "finally"'), BracedBlock);
3724
+ var Finally$0 = $S(__, $EXPECT($L76, fail, 'Finally "finally"'), BracedBlock);
2993
3725
  function Finally(state) {
2994
3726
  if (state.verbose)
2995
3727
  console.log("ENTER:", "Finally");
@@ -3008,7 +3740,7 @@ var require_parser = __commonJS({
3008
3740
  return CatchParameter$0(state) || CatchParameter$1(state);
3009
3741
  }
3010
3742
  }
3011
- var Condition$0 = $S(__, OpenParen, Expression, __, CloseParen);
3743
+ var Condition$0 = $S(__, OpenParen, ExtendedExpression, __, CloseParen);
3012
3744
  var Condition$1 = $TS($S($N(EOS), __, InsertOpenParen, ExpressionWithIndentedApplicationSuppressed, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
3013
3745
  $0.shift();
3014
3746
  return $0;
@@ -3020,7 +3752,7 @@ var require_parser = __commonJS({
3020
3752
  return Condition$0(state) || Condition$1(state);
3021
3753
  }
3022
3754
  }
3023
- var ExpressionWithIndentedApplicationSuppressed$0 = $TS($S(SuppressIndentedApplication, $E(AssignmentExpression)), function($skip, $loc, $0, $1, $2) {
3755
+ var ExpressionWithIndentedApplicationSuppressed$0 = $TS($S(SuppressIndentedApplication, $E(ExtendedExpression)), function($skip, $loc, $0, $1, $2) {
3024
3756
  var exp = $2;
3025
3757
  module2.suppressIndentedApplication = false;
3026
3758
  if (exp)
@@ -3058,19 +3790,19 @@ var require_parser = __commonJS({
3058
3790
  return ExpressionStatement$0(state);
3059
3791
  }
3060
3792
  }
3061
- var KeywordStatement$0 = $T($S($EXPECT($L73, fail, 'KeywordStatement "break"'), NonIdContinue), function(value) {
3793
+ var KeywordStatement$0 = $T($S($EXPECT($L77, fail, 'KeywordStatement "break"'), NonIdContinue), function(value) {
3062
3794
  return { "type": "BreakStatement", "children": value };
3063
3795
  });
3064
- var KeywordStatement$1 = $T($S($EXPECT($L74, fail, 'KeywordStatement "continue"'), NonIdContinue), function(value) {
3796
+ var KeywordStatement$1 = $T($S($EXPECT($L78, fail, 'KeywordStatement "continue"'), NonIdContinue), function(value) {
3065
3797
  return { "type": "ContinueStatement", "children": value };
3066
3798
  });
3067
- var KeywordStatement$2 = $T($S($EXPECT($L75, fail, 'KeywordStatement "debugger"'), NonIdContinue), function(value) {
3799
+ var KeywordStatement$2 = $T($S($EXPECT($L79, fail, 'KeywordStatement "debugger"'), NonIdContinue), function(value) {
3068
3800
  return { "type": "DebuggerStatement", "children": value };
3069
3801
  });
3070
3802
  var KeywordStatement$3 = $T($S(Return, $E(MaybeNestedExpression)), function(value) {
3071
3803
  return { "type": "ReturnStatement", "children": value };
3072
3804
  });
3073
- var KeywordStatement$4 = $T($S(Throw, Expression), function(value) {
3805
+ var KeywordStatement$4 = $T($S(Throw, ExtendedExpression), function(value) {
3074
3806
  return { "type": "ThrowStatement", "children": value };
3075
3807
  });
3076
3808
  function KeywordStatement(state) {
@@ -3080,8 +3812,42 @@ var require_parser = __commonJS({
3080
3812
  return KeywordStatement$0(state) || KeywordStatement$1(state) || KeywordStatement$2(state) || KeywordStatement$3(state) || KeywordStatement$4(state);
3081
3813
  }
3082
3814
  }
3083
- var MaybeNestedExpression$0 = $S($N(EOS), $Q(TrailingComment), Expression);
3084
- var MaybeNestedExpression$1 = $S($Y(EOS), ObjectLiteral);
3815
+ var DebuggerExpression$0 = $TS($S($EXPECT($L79, fail, 'DebuggerExpression "debugger"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3816
+ return {
3817
+ type: "DebuggerExpression",
3818
+ children: ["($=>{", $1, "})()"]
3819
+ };
3820
+ });
3821
+ function DebuggerExpression(state) {
3822
+ if (state.verbose)
3823
+ console.log("ENTER:", "DebuggerExpression");
3824
+ if (state.tokenize) {
3825
+ return $TOKEN("DebuggerExpression", state, DebuggerExpression$0(state));
3826
+ } else {
3827
+ return DebuggerExpression$0(state);
3828
+ }
3829
+ }
3830
+ var ThrowExpression$0 = $TS($S(Throw, ExtendedExpression), function($skip, $loc, $0, $1, $2) {
3831
+ return {
3832
+ type: "ThrowExpression",
3833
+ children: ["($=>{", ...$0, "})()"]
3834
+ };
3835
+ });
3836
+ function ThrowExpression(state) {
3837
+ if (state.verbose)
3838
+ console.log("ENTER:", "ThrowExpression");
3839
+ if (state.tokenize) {
3840
+ return $TOKEN("ThrowExpression", state, ThrowExpression$0(state));
3841
+ } else {
3842
+ return ThrowExpression$0(state);
3843
+ }
3844
+ }
3845
+ var MaybeNestedExpression$0 = $TS($S($N(EOS), $Q(TrailingComment), AssignmentExpression), function($skip, $loc, $0, $1, $2, $3) {
3846
+ return [...$2, $3];
3847
+ });
3848
+ var MaybeNestedExpression$1 = $T($S($Y(EOS), ObjectLiteral), function(value) {
3849
+ return value[1];
3850
+ });
3085
3851
  function MaybeNestedExpression(state) {
3086
3852
  if (state.tokenize) {
3087
3853
  return $TOKEN("MaybeNestedExpression", state, MaybeNestedExpression$0(state) || MaybeNestedExpression$1(state));
@@ -3089,7 +3855,7 @@ var require_parser = __commonJS({
3089
3855
  return MaybeNestedExpression$0(state) || MaybeNestedExpression$1(state);
3090
3856
  }
3091
3857
  }
3092
- var ImportDeclaration$0 = $T($S($EXPECT($L76, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
3858
+ var ImportDeclaration$0 = $T($S($EXPECT($L80, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
3093
3859
  return { "ts": true, "children": value };
3094
3860
  });
3095
3861
  var ImportDeclaration$1 = $S(Import, __, ImportClause, __, FromClause);
@@ -3124,7 +3890,19 @@ var require_parser = __commonJS({
3124
3890
  return ImpliedImport$0(state);
3125
3891
  }
3126
3892
  }
3127
- var ImportClause$0 = $S(ImportedBinding, $E($S(__, Comma, __, $C(NameSpaceImport, NamedImports))));
3893
+ var ImportClause$0 = $TS($S(ImportedBinding, $E($S(__, Comma, __, $C(NameSpaceImport, NamedImports)))), function($skip, $loc, $0, $1, $2) {
3894
+ var binding = $1;
3895
+ var rest = $2;
3896
+ if (rest) {
3897
+ return {
3898
+ type: "Declaration",
3899
+ children: $0,
3900
+ names: [...binding.names, ...rest[3].names]
3901
+ };
3902
+ }
3903
+ $1.type = "Declaration";
3904
+ return $1;
3905
+ });
3128
3906
  var ImportClause$1 = NameSpaceImport;
3129
3907
  var ImportClause$2 = NamedImports;
3130
3908
  function ImportClause(state) {
@@ -3134,7 +3912,14 @@ var require_parser = __commonJS({
3134
3912
  return ImportClause$0(state) || ImportClause$1(state) || ImportClause$2(state);
3135
3913
  }
3136
3914
  }
3137
- var NameSpaceImport$0 = $S(Star, __, As, NonIdContinue, __, ImportedBinding);
3915
+ var NameSpaceImport$0 = $TS($S(Star, __, As, __, ImportedBinding), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
3916
+ var binding = $5;
3917
+ return {
3918
+ type: "Declaration",
3919
+ children: $0,
3920
+ names: binding.names
3921
+ };
3922
+ });
3138
3923
  function NameSpaceImport(state) {
3139
3924
  if (state.verbose)
3140
3925
  console.log("ENTER:", "NameSpaceImport");
@@ -3144,7 +3929,17 @@ var require_parser = __commonJS({
3144
3929
  return NameSpaceImport$0(state);
3145
3930
  }
3146
3931
  }
3147
- var NamedImports$0 = $S(OpenBrace, $Q(ImportSpecifier), $E($S(__, Comma)), __, CloseBrace);
3932
+ var NamedImports$0 = $TS($S(OpenBrace, $Q(ImportSpecifier), $E($S(__, Comma)), __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
3933
+ var specifiers = $2;
3934
+ const names = specifiers.flatMap(({ binding }) => {
3935
+ return binding.names;
3936
+ });
3937
+ return {
3938
+ type: "Declaration",
3939
+ children: $0,
3940
+ names
3941
+ };
3942
+ });
3148
3943
  function NamedImports(state) {
3149
3944
  if (state.verbose)
3150
3945
  console.log("ENTER:", "NamedImports");
@@ -3164,8 +3959,20 @@ var require_parser = __commonJS({
3164
3959
  return FromClause$0(state);
3165
3960
  }
3166
3961
  }
3167
- var ImportSpecifier$0 = $S(__, ModuleExportName, __, As, NonIdContinue, __, ImportedBinding, ObjectPropertyDelimiter);
3168
- var ImportSpecifier$1 = $S(__, ImportedBinding, ObjectPropertyDelimiter);
3962
+ var ImportSpecifier$0 = $TS($S(__, ModuleExportName, __, As, __, ImportedBinding, ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
3963
+ var binding = $6;
3964
+ return {
3965
+ binding,
3966
+ children: $0
3967
+ };
3968
+ });
3969
+ var ImportSpecifier$1 = $TS($S(__, ImportedBinding, ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3) {
3970
+ var binding = $2;
3971
+ return {
3972
+ binding,
3973
+ children: $0
3974
+ };
3975
+ });
3169
3976
  function ImportSpecifier(state) {
3170
3977
  if (state.tokenize) {
3171
3978
  return $TOKEN("ImportSpecifier", state, ImportSpecifier$0(state) || ImportSpecifier$1(state));
@@ -3227,7 +4034,7 @@ var require_parser = __commonJS({
3227
4034
  return ImportedBinding$0(state);
3228
4035
  }
3229
4036
  }
3230
- var ExportDeclaration$0 = $S(Export, __, $EXPECT($L77, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, AssignmentExpression));
4037
+ var ExportDeclaration$0 = $S(Export, __, $EXPECT($L81, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, ExtendedExpression));
3231
4038
  var ExportDeclaration$1 = $S(Export, __, ExportFromClause, __, FromClause);
3232
4039
  var ExportDeclaration$2 = $S(Export, __, $C(NamedExports, VariableStatement, Declaration));
3233
4040
  function ExportDeclaration(state) {
@@ -3237,7 +4044,7 @@ var require_parser = __commonJS({
3237
4044
  return ExportDeclaration$0(state) || ExportDeclaration$1(state) || ExportDeclaration$2(state);
3238
4045
  }
3239
4046
  }
3240
- var ExportFromClause$0 = $S(Star, $E($S(__, As, NonIdContinue, __, ModuleExportName)));
4047
+ var ExportFromClause$0 = $S(Star, $E($S(__, As, __, ModuleExportName)));
3241
4048
  var ExportFromClause$1 = NamedExports;
3242
4049
  function ExportFromClause(state) {
3243
4050
  if (state.tokenize) {
@@ -3287,18 +4094,43 @@ var require_parser = __commonJS({
3287
4094
  return HoistableDeclaration$0(state);
3288
4095
  }
3289
4096
  }
3290
- var LexicalDeclaration$0 = $T($S(LetOrConst, __, LexicalBinding, $Q($S(__, Comma, __, LexicalBinding))), function(value) {
3291
- return { "type": "VariableDeclaration", "children": value };
4097
+ var LexicalDeclaration$0 = $TS($S(LetOrConst, LexicalBinding, $Q($S(__, Comma, LexicalBinding))), function($skip, $loc, $0, $1, $2, $3) {
4098
+ var binding = $2;
4099
+ var tail = $3;
4100
+ return {
4101
+ type: "Declaration",
4102
+ children: $0,
4103
+ names: [...binding.names].concat(tail.flatMap(([, , b]) => b.names))
4104
+ };
3292
4105
  });
3293
- var LexicalDeclaration$1 = $TS($S(InsertConst, $C(BindingPattern, BindingIdentifier), $E(TypeSuffix), __, ConstAssignment, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
4106
+ var LexicalDeclaration$1 = $TS($S(InsertConst, $C(BindingPattern, BindingIdentifier), $E(TypeSuffix), __, ConstAssignment, ExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
3294
4107
  var c = $1;
4108
+ var id = $2;
3295
4109
  var ca = $5;
4110
+ var e = $6;
3296
4111
  c.$loc = {
3297
4112
  pos: ca.$loc.pos - 1,
3298
4113
  length: ca.$loc.length + 1
3299
4114
  };
4115
+ let exp;
4116
+ if (e.type === "FunctionExpression") {
4117
+ exp = e;
4118
+ } else {
4119
+ exp = e[1];
4120
+ }
4121
+ if (exp?.children?.[0]?.token?.match(/^\s+$/))
4122
+ exp.children.shift();
4123
+ if (id.type === "Identifier" && exp?.type === "FunctionExpression") {
4124
+ if (exp.id.length === 0) {
4125
+ exp.id.push(" ", id, $3, $4);
4126
+ }
4127
+ exp.type = "Declaration";
4128
+ exp.names = id.names;
4129
+ return exp;
4130
+ }
3300
4131
  return {
3301
- type: "VariableDeclaration",
4132
+ type: "Declaration",
4133
+ names: id.names,
3302
4134
  children: $0
3303
4135
  };
3304
4136
  });
@@ -3309,7 +4141,7 @@ var require_parser = __commonJS({
3309
4141
  return LexicalDeclaration$0(state) || LexicalDeclaration$1(state);
3310
4142
  }
3311
4143
  }
3312
- var ConstAssignment$0 = $TV($EXPECT($L78, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
4144
+ var ConstAssignment$0 = $TV($EXPECT($L82, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
3313
4145
  return { $loc, token: "=" };
3314
4146
  });
3315
4147
  function ConstAssignment(state) {
@@ -3321,8 +4153,19 @@ var require_parser = __commonJS({
3321
4153
  return ConstAssignment$0(state);
3322
4154
  }
3323
4155
  }
3324
- var LexicalBinding$0 = $S(BindingPattern, $E(TypeSuffix), Initializer);
3325
- var LexicalBinding$1 = $S(BindingIdentifier, $E(TypeSuffix), $E(Initializer));
4156
+ var LexicalBinding$0 = $TS($S(BindingPattern, $E(TypeSuffix), Initializer), function($skip, $loc, $0, $1, $2, $3) {
4157
+ if ($2)
4158
+ $1.children.push($2);
4159
+ $1.children.push($3);
4160
+ return $1;
4161
+ });
4162
+ var LexicalBinding$1 = $TS($S(BindingIdentifier, $E(TypeSuffix), $E(Initializer)), function($skip, $loc, $0, $1, $2, $3) {
4163
+ if ($2)
4164
+ $1.children.push($2);
4165
+ if ($3)
4166
+ $1.children.push($3);
4167
+ return $1;
4168
+ });
3326
4169
  function LexicalBinding(state) {
3327
4170
  if (state.tokenize) {
3328
4171
  return $TOKEN("LexicalBinding", state, LexicalBinding$0(state) || LexicalBinding$1(state));
@@ -3330,7 +4173,7 @@ var require_parser = __commonJS({
3330
4173
  return LexicalBinding$0(state) || LexicalBinding$1(state);
3331
4174
  }
3332
4175
  }
3333
- var Initializer$0 = $S(__, Equals, AssignmentExpression);
4176
+ var Initializer$0 = $S(__, Equals, ExtendedExpression);
3334
4177
  function Initializer(state) {
3335
4178
  if (state.verbose)
3336
4179
  console.log("ENTER:", "Initializer");
@@ -3340,8 +4183,9 @@ var require_parser = __commonJS({
3340
4183
  return Initializer$0(state);
3341
4184
  }
3342
4185
  }
3343
- var VariableStatement$0 = $T($S(Var, __, VariableDeclarationList), function(value) {
3344
- return { "type": "VariableDeclaration", "children": value };
4186
+ var VariableStatement$0 = $TS($S(Var, __, VariableDeclarationList), function($skip, $loc, $0, $1, $2, $3) {
4187
+ $3.children.splice(0, 0, $1, ...$2);
4188
+ return $3;
3345
4189
  });
3346
4190
  function VariableStatement(state) {
3347
4191
  if (state.verbose)
@@ -3352,7 +4196,20 @@ var require_parser = __commonJS({
3352
4196
  return VariableStatement$0(state);
3353
4197
  }
3354
4198
  }
3355
- var VariableDeclarationList$0 = $S(VariableDeclaration, $Q($S(__, Comma, __, VariableDeclaration)));
4199
+ var VariableDeclarationList$0 = $TS($S(VariableDeclaration, $Q($S(__, Comma, __, VariableDeclaration))), function($skip, $loc, $0, $1, $2) {
4200
+ let children;
4201
+ if ($2.length) {
4202
+ children = [$1, ...$2];
4203
+ } else {
4204
+ children = [$1];
4205
+ }
4206
+ const names = children.flatMap((c) => c.names || []);
4207
+ return {
4208
+ type: "Declaration",
4209
+ children,
4210
+ names
4211
+ };
4212
+ });
3356
4213
  function VariableDeclarationList(state) {
3357
4214
  if (state.verbose)
3358
4215
  console.log("ENTER:", "VariableDeclarationList");
@@ -3362,8 +4219,19 @@ var require_parser = __commonJS({
3362
4219
  return VariableDeclarationList$0(state);
3363
4220
  }
3364
4221
  }
3365
- var VariableDeclaration$0 = $S(BindingPattern, $E(TypeSuffix), Initializer);
3366
- var VariableDeclaration$1 = $S(BindingIdentifier, $E(TypeSuffix), $E(Initializer));
4222
+ var VariableDeclaration$0 = $TS($S(BindingPattern, $E(TypeSuffix), Initializer), function($skip, $loc, $0, $1, $2, $3) {
4223
+ if ($2)
4224
+ $1.children.push($2);
4225
+ $1.children.push($3);
4226
+ return $1;
4227
+ });
4228
+ var VariableDeclaration$1 = $TS($S(BindingIdentifier, $E(TypeSuffix), $E(Initializer)), function($skip, $loc, $0, $1, $2, $3) {
4229
+ if ($2)
4230
+ $1.children.push($2);
4231
+ if ($3)
4232
+ $1.children.push($3);
4233
+ return $1;
4234
+ });
3367
4235
  function VariableDeclaration(state) {
3368
4236
  if (state.tokenize) {
3369
4237
  return $TOKEN("VariableDeclaration", state, VariableDeclaration$0(state) || VariableDeclaration$1(state));
@@ -3544,7 +4412,7 @@ var require_parser = __commonJS({
3544
4412
  return TripleSingleStringCharacters$0(state);
3545
4413
  }
3546
4414
  }
3547
- var CoffeeStringSubstitution$0 = $S(CoffeeSubstitutionStart, Expression, __, CloseBrace);
4415
+ var CoffeeStringSubstitution$0 = $S(CoffeeSubstitutionStart, ExtendedExpression, __, CloseBrace);
3548
4416
  function CoffeeStringSubstitution(state) {
3549
4417
  if (state.verbose)
3550
4418
  console.log("ENTER:", "CoffeeStringSubstitution");
@@ -3595,7 +4463,7 @@ var require_parser = __commonJS({
3595
4463
  return CoffeeDoubleQuotedStringCharacters$0(state);
3596
4464
  }
3597
4465
  }
3598
- var RegularExpressionLiteral$0 = $TV($TEXT($S($EXPECT($L46, fail, 'RegularExpressionLiteral "/"'), RegularExpressionBody, $EXPECT($L46, fail, 'RegularExpressionLiteral "/"'), RegularExpressionFlags)), function($skip, $loc, $0, $1) {
4466
+ var RegularExpressionLiteral$0 = $TV($TEXT($S($EXPECT($L47, fail, 'RegularExpressionLiteral "/"'), RegularExpressionBody, $EXPECT($L47, fail, 'RegularExpressionLiteral "/"'), RegularExpressionFlags)), function($skip, $loc, $0, $1) {
3599
4467
  return { $loc, token: $1 };
3600
4468
  });
3601
4469
  function RegularExpressionLiteral(state) {
@@ -3648,7 +4516,7 @@ var require_parser = __commonJS({
3648
4516
  return TemplateLiteral$0(state) || TemplateLiteral$1(state);
3649
4517
  }
3650
4518
  }
3651
- var TemplateSubstitution$0 = $S(SubstitutionStart, Expression, __, CloseBrace);
4519
+ var TemplateSubstitution$0 = $S(SubstitutionStart, ExtendedExpression, __, CloseBrace);
3652
4520
  function TemplateSubstitution(state) {
3653
4521
  if (state.verbose)
3654
4522
  console.log("ENTER:", "TemplateSubstitution");
@@ -3683,12 +4551,13 @@ var require_parser = __commonJS({
3683
4551
  }
3684
4552
  }
3685
4553
  var ReservedWord$0 = $S(CoffeeBooleansEnabled, $R$0($EXPECT($R23, fail, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")));
3686
- var ReservedWord$1 = $R$0($EXPECT($R24, fail, "ReservedWord /(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
4554
+ var ReservedWord$1 = $S(CoffeeIsntEnabled, $R$0($EXPECT($R24, fail, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")));
4555
+ var ReservedWord$2 = $R$0($EXPECT($R25, fail, "ReservedWord /(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
3687
4556
  function ReservedWord(state) {
3688
4557
  if (state.tokenize) {
3689
- return $TOKEN("ReservedWord", state, ReservedWord$0(state) || ReservedWord$1(state));
4558
+ return $TOKEN("ReservedWord", state, ReservedWord$0(state) || ReservedWord$1(state) || ReservedWord$2(state));
3690
4559
  } else {
3691
- return ReservedWord$0(state) || ReservedWord$1(state);
4560
+ return ReservedWord$0(state) || ReservedWord$1(state) || ReservedWord$2(state);
3692
4561
  }
3693
4562
  }
3694
4563
  var Comment$0 = MultiLineComment;
@@ -3700,7 +4569,7 @@ var require_parser = __commonJS({
3700
4569
  return Comment$0(state) || Comment$1(state);
3701
4570
  }
3702
4571
  }
3703
- var SingleLineComment$0 = $TR($EXPECT($R25, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4572
+ var SingleLineComment$0 = $TR($EXPECT($R26, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3704
4573
  return { $loc, token: $0 };
3705
4574
  });
3706
4575
  var SingleLineComment$1 = $S(CoffeeCommentEnabled, CoffeeSingleLineComment);
@@ -3720,7 +4589,7 @@ var require_parser = __commonJS({
3720
4589
  return MultiLineComment$0(state) || MultiLineComment$1(state);
3721
4590
  }
3722
4591
  }
3723
- var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L79, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L80, fail, 'JSMultiLineComment "*/"')), $EXPECT($R26, fail, "JSMultiLineComment /./"))), $EXPECT($L80, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
4592
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L84, fail, 'JSMultiLineComment "*/"')), $EXPECT($R27, fail, "JSMultiLineComment /./"))), $EXPECT($L84, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3724
4593
  return { $loc, token: $1 };
3725
4594
  });
3726
4595
  function JSMultiLineComment(state) {
@@ -3732,7 +4601,7 @@ var require_parser = __commonJS({
3732
4601
  return JSMultiLineComment$0(state);
3733
4602
  }
3734
4603
  }
3735
- var CoffeeSingleLineComment$0 = $TR($EXPECT($R27, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4604
+ var CoffeeSingleLineComment$0 = $TR($EXPECT($R28, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3736
4605
  return { $loc, token: `//${$1}` };
3737
4606
  });
3738
4607
  function CoffeeSingleLineComment(state) {
@@ -3744,7 +4613,7 @@ var require_parser = __commonJS({
3744
4613
  return CoffeeSingleLineComment$0(state);
3745
4614
  }
3746
4615
  }
3747
- var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L81, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L81, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L80, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R26, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L81, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
4616
+ var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L84, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R27, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L85, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3748
4617
  return { $loc, token: `/*${$2}*/` };
3749
4618
  });
3750
4619
  function CoffeeMultiLineComment(state) {
@@ -3756,7 +4625,7 @@ var require_parser = __commonJS({
3756
4625
  return CoffeeMultiLineComment$0(state);
3757
4626
  }
3758
4627
  }
3759
- var InlineComment$0 = $TV($TEXT($S($EXPECT($L79, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L80, fail, 'InlineComment "*/"')), $EXPECT($R28, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L80, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
4628
+ var InlineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L84, fail, 'InlineComment "*/"')), $EXPECT($R29, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L84, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3760
4629
  return { $loc, token: $1 };
3761
4630
  });
3762
4631
  function InlineComment(state) {
@@ -3798,7 +4667,7 @@ var require_parser = __commonJS({
3798
4667
  return _$0(state);
3799
4668
  }
3800
4669
  }
3801
- var NonNewlineWhitespace$0 = $TR($EXPECT($R29, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4670
+ var NonNewlineWhitespace$0 = $TR($EXPECT($R30, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3802
4671
  return { $loc, token: $0 };
3803
4672
  });
3804
4673
  function NonNewlineWhitespace(state) {
@@ -3820,7 +4689,7 @@ var require_parser = __commonJS({
3820
4689
  return __$0(state);
3821
4690
  }
3822
4691
  }
3823
- var Whitespace$0 = $TR($EXPECT($R30, fail, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4692
+ var Whitespace$0 = $TR($EXPECT($R31, fail, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3824
4693
  return { $loc, token: $0 };
3825
4694
  });
3826
4695
  function Whitespace(state) {
@@ -3832,6 +4701,20 @@ var require_parser = __commonJS({
3832
4701
  return Whitespace$0(state);
3833
4702
  }
3834
4703
  }
4704
+ var ExpressionDelimiter$0 = $TS($S($Q(TrailingComment), Semicolon, $Q(TrailingComment)), function($skip, $loc, $0, $1, $2, $3) {
4705
+ $2.token = ",";
4706
+ return $0;
4707
+ });
4708
+ var ExpressionDelimiter$1 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
4709
+ return { $loc, token: "," };
4710
+ });
4711
+ function ExpressionDelimiter(state) {
4712
+ if (state.tokenize) {
4713
+ return $TOKEN("ExpressionDelimiter", state, ExpressionDelimiter$0(state) || ExpressionDelimiter$1(state));
4714
+ } else {
4715
+ return ExpressionDelimiter$0(state) || ExpressionDelimiter$1(state);
4716
+ }
4717
+ }
3835
4718
  var StatementDelimiter$0 = $S($Q(TrailingComment), Semicolon, $Q(TrailingComment));
3836
4719
  var StatementDelimiter$1 = $Y(EOS);
3837
4720
  function StatementDelimiter(state) {
@@ -3841,7 +4724,7 @@ var require_parser = __commonJS({
3841
4724
  return StatementDelimiter$0(state) || StatementDelimiter$1(state);
3842
4725
  }
3843
4726
  }
3844
- var NonIdContinue$0 = $R$0($EXPECT($R31, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
4727
+ var NonIdContinue$0 = $R$0($EXPECT($R32, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
3845
4728
  function NonIdContinue(state) {
3846
4729
  if (state.verbose)
3847
4730
  console.log("ENTER:", "NonIdContinue");
@@ -3863,7 +4746,19 @@ var require_parser = __commonJS({
3863
4746
  return Loc$0(state);
3864
4747
  }
3865
4748
  }
3866
- var As$0 = $TS($S($EXPECT($L82, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4749
+ var Ampersand$0 = $TV($EXPECT($L71, fail, 'Ampersand "&"'), function($skip, $loc, $0, $1) {
4750
+ return { $loc, token: $1 };
4751
+ });
4752
+ function Ampersand(state) {
4753
+ if (state.verbose)
4754
+ console.log("ENTER:", "Ampersand");
4755
+ if (state.tokenize) {
4756
+ return $TOKEN("Ampersand", state, Ampersand$0(state));
4757
+ } else {
4758
+ return Ampersand$0(state);
4759
+ }
4760
+ }
4761
+ var As$0 = $TS($S($EXPECT($L86, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3867
4762
  return { $loc, token: $1 };
3868
4763
  });
3869
4764
  function As(state) {
@@ -3875,7 +4770,7 @@ var require_parser = __commonJS({
3875
4770
  return As$0(state);
3876
4771
  }
3877
4772
  }
3878
- var Async$0 = $TV($EXPECT($L83, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
4773
+ var Async$0 = $TV($EXPECT($L87, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3879
4774
  return { $loc, token: $1 };
3880
4775
  });
3881
4776
  function Async(state) {
@@ -3887,7 +4782,7 @@ var require_parser = __commonJS({
3887
4782
  return Async$0(state);
3888
4783
  }
3889
4784
  }
3890
- var Await$0 = $TS($S($EXPECT($L84, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4785
+ var Await$0 = $TS($S($EXPECT($L88, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3891
4786
  return { $loc, token: $1 };
3892
4787
  });
3893
4788
  function Await(state) {
@@ -3899,7 +4794,7 @@ var require_parser = __commonJS({
3899
4794
  return Await$0(state);
3900
4795
  }
3901
4796
  }
3902
- var Backtick$0 = $TV($EXPECT($L85, fail, 'Backtick "`"'), function($skip, $loc, $0, $1) {
4797
+ var Backtick$0 = $TV($EXPECT($L89, fail, 'Backtick "`"'), function($skip, $loc, $0, $1) {
3903
4798
  return { $loc, token: $1 };
3904
4799
  });
3905
4800
  function Backtick(state) {
@@ -3911,7 +4806,7 @@ var require_parser = __commonJS({
3911
4806
  return Backtick$0(state);
3912
4807
  }
3913
4808
  }
3914
- var Case$0 = $TS($S($EXPECT($L86, fail, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4809
+ var Case$0 = $TS($S($EXPECT($L90, fail, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3915
4810
  return { $loc, token: $1 };
3916
4811
  });
3917
4812
  function Case(state) {
@@ -3923,7 +4818,7 @@ var require_parser = __commonJS({
3923
4818
  return Case$0(state);
3924
4819
  }
3925
4820
  }
3926
- var Catch$0 = $TV($EXPECT($L87, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
4821
+ var Catch$0 = $TV($EXPECT($L91, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3927
4822
  return { $loc, token: $1 };
3928
4823
  });
3929
4824
  function Catch(state) {
@@ -3935,7 +4830,7 @@ var require_parser = __commonJS({
3935
4830
  return Catch$0(state);
3936
4831
  }
3937
4832
  }
3938
- var Class$0 = $TV($EXPECT($L88, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
4833
+ var Class$0 = $TV($EXPECT($L92, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3939
4834
  return { $loc, token: $1 };
3940
4835
  });
3941
4836
  function Class(state) {
@@ -3947,7 +4842,7 @@ var require_parser = __commonJS({
3947
4842
  return Class$0(state);
3948
4843
  }
3949
4844
  }
3950
- var CloseBrace$0 = $TV($EXPECT($L26, fail, 'CloseBrace "}"'), function($skip, $loc, $0, $1) {
4845
+ var CloseBrace$0 = $TV($EXPECT($L27, fail, 'CloseBrace "}"'), function($skip, $loc, $0, $1) {
3951
4846
  return { $loc, token: $1 };
3952
4847
  });
3953
4848
  function CloseBrace(state) {
@@ -3959,7 +4854,7 @@ var require_parser = __commonJS({
3959
4854
  return CloseBrace$0(state);
3960
4855
  }
3961
4856
  }
3962
- var CloseBracket$0 = $TV($EXPECT($L25, fail, 'CloseBracket "]"'), function($skip, $loc, $0, $1) {
4857
+ var CloseBracket$0 = $TV($EXPECT($L26, fail, 'CloseBracket "]"'), function($skip, $loc, $0, $1) {
3963
4858
  return { $loc, token: $1 };
3964
4859
  });
3965
4860
  function CloseBracket(state) {
@@ -3971,7 +4866,7 @@ var require_parser = __commonJS({
3971
4866
  return CloseBracket$0(state);
3972
4867
  }
3973
4868
  }
3974
- var CloseParen$0 = $TV($EXPECT($L15, fail, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
4869
+ var CloseParen$0 = $TV($EXPECT($L16, fail, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
3975
4870
  return { $loc, token: $1 };
3976
4871
  });
3977
4872
  function CloseParen(state) {
@@ -3983,7 +4878,7 @@ var require_parser = __commonJS({
3983
4878
  return CloseParen$0(state);
3984
4879
  }
3985
4880
  }
3986
- var CoffeeSubstitutionStart$0 = $TV($EXPECT($L89, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
4881
+ var CoffeeSubstitutionStart$0 = $TV($EXPECT($L93, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
3987
4882
  return { $loc, token: "${" };
3988
4883
  });
3989
4884
  function CoffeeSubstitutionStart(state) {
@@ -3995,7 +4890,7 @@ var require_parser = __commonJS({
3995
4890
  return CoffeeSubstitutionStart$0(state);
3996
4891
  }
3997
4892
  }
3998
- var Colon$0 = $TV($EXPECT($L90, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
4893
+ var Colon$0 = $TV($EXPECT($L94, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3999
4894
  return { $loc, token: $1 };
4000
4895
  });
4001
4896
  function Colon(state) {
@@ -4019,7 +4914,7 @@ var require_parser = __commonJS({
4019
4914
  return ConstructorShorthand$0(state);
4020
4915
  }
4021
4916
  }
4022
- var Default$0 = $TS($S($EXPECT($L77, fail, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4917
+ var Default$0 = $TS($S($EXPECT($L81, fail, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4023
4918
  return { $loc, token: $1 };
4024
4919
  });
4025
4920
  function Default(state) {
@@ -4031,7 +4926,7 @@ var require_parser = __commonJS({
4031
4926
  return Default$0(state);
4032
4927
  }
4033
4928
  }
4034
- var Delete$0 = $TS($S($EXPECT($L91, fail, 'Delete "delete"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4929
+ var Delete$0 = $TS($S($EXPECT($L95, fail, 'Delete "delete"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4035
4930
  return { $loc, token: $1 };
4036
4931
  });
4037
4932
  function Delete(state) {
@@ -4043,7 +4938,7 @@ var require_parser = __commonJS({
4043
4938
  return Delete$0(state);
4044
4939
  }
4045
4940
  }
4046
- var Do$0 = $TS($S($EXPECT($L92, fail, 'Do "do"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4941
+ var Do$0 = $TS($S($EXPECT($L96, fail, 'Do "do"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4047
4942
  return { $loc, token: $1 };
4048
4943
  });
4049
4944
  function Do(state) {
@@ -4055,7 +4950,7 @@ var require_parser = __commonJS({
4055
4950
  return Do$0(state);
4056
4951
  }
4057
4952
  }
4058
- var Dot$0 = $TV($EXPECT($L93, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
4953
+ var Dot$0 = $TV($EXPECT($L9, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
4059
4954
  return { $loc, token: $1 };
4060
4955
  });
4061
4956
  function Dot(state) {
@@ -4067,7 +4962,7 @@ var require_parser = __commonJS({
4067
4962
  return Dot$0(state);
4068
4963
  }
4069
4964
  }
4070
- var DotDot$0 = $TV($EXPECT($L94, fail, 'DotDot ".."'), function($skip, $loc, $0, $1) {
4965
+ var DotDot$0 = $TV($EXPECT($L97, fail, 'DotDot ".."'), function($skip, $loc, $0, $1) {
4071
4966
  return { $loc, token: $1 };
4072
4967
  });
4073
4968
  function DotDot(state) {
@@ -4079,7 +4974,7 @@ var require_parser = __commonJS({
4079
4974
  return DotDot$0(state);
4080
4975
  }
4081
4976
  }
4082
- var DotDotDot$0 = $TV($EXPECT($L95, fail, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
4977
+ var DotDotDot$0 = $TV($EXPECT($L98, fail, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
4083
4978
  return { $loc, token: $1 };
4084
4979
  });
4085
4980
  function DotDotDot(state) {
@@ -4091,7 +4986,7 @@ var require_parser = __commonJS({
4091
4986
  return DotDotDot$0(state);
4092
4987
  }
4093
4988
  }
4094
- var DoubleQuote$0 = $TV($EXPECT($L96, fail, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
4989
+ var DoubleQuote$0 = $TV($EXPECT($L99, fail, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
4095
4990
  return { $loc, token: $1 };
4096
4991
  });
4097
4992
  function DoubleQuote(state) {
@@ -4103,7 +4998,7 @@ var require_parser = __commonJS({
4103
4998
  return DoubleQuote$0(state);
4104
4999
  }
4105
5000
  }
4106
- var Else$0 = $TV($EXPECT($L97, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
5001
+ var Else$0 = $TV($EXPECT($L100, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
4107
5002
  return { $loc, token: $1 };
4108
5003
  });
4109
5004
  function Else(state) {
@@ -4115,7 +5010,7 @@ var require_parser = __commonJS({
4115
5010
  return Else$0(state);
4116
5011
  }
4117
5012
  }
4118
- var Equals$0 = $TV($EXPECT($L43, fail, 'Equals "="'), function($skip, $loc, $0, $1) {
5013
+ var Equals$0 = $TV($EXPECT($L44, fail, 'Equals "="'), function($skip, $loc, $0, $1) {
4119
5014
  return { $loc, token: $1 };
4120
5015
  });
4121
5016
  function Equals(state) {
@@ -4127,7 +5022,7 @@ var require_parser = __commonJS({
4127
5022
  return Equals$0(state);
4128
5023
  }
4129
5024
  }
4130
- var Export$0 = $TS($S($EXPECT($L98, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5025
+ var Export$0 = $TS($S($EXPECT($L101, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4131
5026
  return { $loc, token: $1 };
4132
5027
  });
4133
5028
  function Export(state) {
@@ -4139,7 +5034,7 @@ var require_parser = __commonJS({
4139
5034
  return Export$0(state);
4140
5035
  }
4141
5036
  }
4142
- var For$0 = $TS($S($EXPECT($L99, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5037
+ var For$0 = $TS($S($EXPECT($L102, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4143
5038
  return { $loc, token: $1 };
4144
5039
  });
4145
5040
  function For(state) {
@@ -4151,7 +5046,7 @@ var require_parser = __commonJS({
4151
5046
  return For$0(state);
4152
5047
  }
4153
5048
  }
4154
- var From$0 = $TS($S($EXPECT($L100, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5049
+ var From$0 = $TS($S($EXPECT($L103, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4155
5050
  return { $loc, token: $1 };
4156
5051
  });
4157
5052
  function From(state) {
@@ -4163,7 +5058,7 @@ var require_parser = __commonJS({
4163
5058
  return From$0(state);
4164
5059
  }
4165
5060
  }
4166
- var Function$0 = $TV($EXPECT($L101, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
5061
+ var Function$0 = $TV($EXPECT($L104, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
4167
5062
  return { $loc, token: $1 };
4168
5063
  });
4169
5064
  function Function(state) {
@@ -4175,7 +5070,7 @@ var require_parser = __commonJS({
4175
5070
  return Function$0(state);
4176
5071
  }
4177
5072
  }
4178
- var GetOrSet$0 = $TS($S($C($EXPECT($L102, fail, 'GetOrSet "get"'), $EXPECT($L103, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5073
+ var GetOrSet$0 = $TS($S($C($EXPECT($L105, fail, 'GetOrSet "get"'), $EXPECT($L106, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4179
5074
  return { $loc, token: $1 };
4180
5075
  });
4181
5076
  function GetOrSet(state) {
@@ -4187,7 +5082,7 @@ var require_parser = __commonJS({
4187
5082
  return GetOrSet$0(state);
4188
5083
  }
4189
5084
  }
4190
- var If$0 = $TV($EXPECT($L104, fail, 'If "if"'), function($skip, $loc, $0, $1) {
5085
+ var If$0 = $TV($TEXT($S($EXPECT($L107, fail, 'If "if"'), $E($EXPECT($L108, fail, 'If " "')))), function($skip, $loc, $0, $1) {
4191
5086
  return { $loc, token: $1 };
4192
5087
  });
4193
5088
  function If(state) {
@@ -4199,7 +5094,7 @@ var require_parser = __commonJS({
4199
5094
  return If$0(state);
4200
5095
  }
4201
5096
  }
4202
- var Import$0 = $TS($S($EXPECT($L10, fail, 'Import "import"'), $Y($EXPECT($R32, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
5097
+ var Import$0 = $TS($S($EXPECT($L11, fail, 'Import "import"'), $Y($EXPECT($R33, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
4203
5098
  return { $loc, token: $1 };
4204
5099
  });
4205
5100
  function Import(state) {
@@ -4211,7 +5106,7 @@ var require_parser = __commonJS({
4211
5106
  return Import$0(state);
4212
5107
  }
4213
5108
  }
4214
- var In$0 = $TV($EXPECT($L67, fail, 'In "in"'), function($skip, $loc, $0, $1) {
5109
+ var In$0 = $TV($EXPECT($L70, fail, 'In "in"'), function($skip, $loc, $0, $1) {
4215
5110
  return { $loc, token: $1 };
4216
5111
  });
4217
5112
  function In(state) {
@@ -4223,7 +5118,7 @@ var require_parser = __commonJS({
4223
5118
  return In$0(state);
4224
5119
  }
4225
5120
  }
4226
- var LetOrConst$0 = $TV($C($EXPECT($L105, fail, 'LetOrConst "let"'), $EXPECT($L106, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
5121
+ var LetOrConst$0 = $TV($C($EXPECT($L109, fail, 'LetOrConst "let"'), $EXPECT($L110, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
4227
5122
  return { $loc, token: $1 };
4228
5123
  });
4229
5124
  function LetOrConst(state) {
@@ -4235,7 +5130,7 @@ var require_parser = __commonJS({
4235
5130
  return LetOrConst$0(state);
4236
5131
  }
4237
5132
  }
4238
- var Loop$0 = $TS($S($EXPECT($L107, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5133
+ var Loop$0 = $TS($S($EXPECT($L111, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4239
5134
  return { $loc, token: "while(true)" };
4240
5135
  });
4241
5136
  function Loop(state) {
@@ -4247,7 +5142,7 @@ var require_parser = __commonJS({
4247
5142
  return Loop$0(state);
4248
5143
  }
4249
5144
  }
4250
- var New$0 = $TV($EXPECT($L108, fail, 'New "new"'), function($skip, $loc, $0, $1) {
5145
+ var New$0 = $TV($EXPECT($L112, fail, 'New "new"'), function($skip, $loc, $0, $1) {
4251
5146
  return { $loc, token: $1 };
4252
5147
  });
4253
5148
  function New(state) {
@@ -4259,7 +5154,19 @@ var require_parser = __commonJS({
4259
5154
  return New$0(state);
4260
5155
  }
4261
5156
  }
4262
- var Of$0 = $TV($EXPECT($L109, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
5157
+ var Not$0 = $TS($S(CoffeeNotEnabled, $EXPECT($L113, fail, 'Not "not"'), NonIdContinue, $E($EXPECT($L108, fail, 'Not " "'))), function($skip, $loc, $0, $1, $2, $3, $4) {
5158
+ return { $loc, token: "!" };
5159
+ });
5160
+ function Not(state) {
5161
+ if (state.verbose)
5162
+ console.log("ENTER:", "Not");
5163
+ if (state.tokenize) {
5164
+ return $TOKEN("Not", state, Not$0(state));
5165
+ } else {
5166
+ return Not$0(state);
5167
+ }
5168
+ }
5169
+ var Of$0 = $TV($EXPECT($L65, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
4263
5170
  return { $loc, token: $1 };
4264
5171
  });
4265
5172
  function Of(state) {
@@ -4271,7 +5178,7 @@ var require_parser = __commonJS({
4271
5178
  return Of$0(state);
4272
5179
  }
4273
5180
  }
4274
- var OpenBrace$0 = $TV($EXPECT($L110, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
5181
+ var OpenBrace$0 = $TV($EXPECT($L114, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
4275
5182
  return { $loc, token: $1 };
4276
5183
  });
4277
5184
  function OpenBrace(state) {
@@ -4283,7 +5190,7 @@ var require_parser = __commonJS({
4283
5190
  return OpenBrace$0(state);
4284
5191
  }
4285
5192
  }
4286
- var OpenBracket$0 = $TV($EXPECT($L111, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
5193
+ var OpenBracket$0 = $TV($EXPECT($L115, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
4287
5194
  return { $loc, token: $1 };
4288
5195
  });
4289
5196
  function OpenBracket(state) {
@@ -4295,7 +5202,7 @@ var require_parser = __commonJS({
4295
5202
  return OpenBracket$0(state);
4296
5203
  }
4297
5204
  }
4298
- var OpenParen$0 = $TV($EXPECT($L112, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
5205
+ var OpenParen$0 = $TV($EXPECT($L116, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
4299
5206
  return { $loc, token: $1 };
4300
5207
  });
4301
5208
  function OpenParen(state) {
@@ -4307,7 +5214,7 @@ var require_parser = __commonJS({
4307
5214
  return OpenParen$0(state);
4308
5215
  }
4309
5216
  }
4310
- var QuestionMark$0 = $TV($EXPECT($L113, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
5217
+ var QuestionMark$0 = $TV($EXPECT($L117, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
4311
5218
  return { $loc, token: $1 };
4312
5219
  });
4313
5220
  function QuestionMark(state) {
@@ -4319,7 +5226,7 @@ var require_parser = __commonJS({
4319
5226
  return QuestionMark$0(state);
4320
5227
  }
4321
5228
  }
4322
- var Return$0 = $TS($S($EXPECT($L114, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5229
+ var Return$0 = $TS($S($EXPECT($L118, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4323
5230
  return { $loc, token: $1 };
4324
5231
  });
4325
5232
  function Return(state) {
@@ -4331,7 +5238,7 @@ var require_parser = __commonJS({
4331
5238
  return Return$0(state);
4332
5239
  }
4333
5240
  }
4334
- var Semicolon$0 = $TV($EXPECT($L71, fail, 'Semicolon ";"'), function($skip, $loc, $0, $1) {
5241
+ var Semicolon$0 = $TV($EXPECT($L74, fail, 'Semicolon ";"'), function($skip, $loc, $0, $1) {
4335
5242
  return { $loc, token: $1 };
4336
5243
  });
4337
5244
  function Semicolon(state) {
@@ -4343,7 +5250,7 @@ var require_parser = __commonJS({
4343
5250
  return Semicolon$0(state);
4344
5251
  }
4345
5252
  }
4346
- var SingleQuote$0 = $TV($EXPECT($L115, fail, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
5253
+ var SingleQuote$0 = $TV($EXPECT($L119, fail, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
4347
5254
  return { $loc, token: $1 };
4348
5255
  });
4349
5256
  function SingleQuote(state) {
@@ -4355,7 +5262,7 @@ var require_parser = __commonJS({
4355
5262
  return SingleQuote$0(state);
4356
5263
  }
4357
5264
  }
4358
- var Star$0 = $TV($EXPECT($L45, fail, 'Star "*"'), function($skip, $loc, $0, $1) {
5265
+ var Star$0 = $TV($EXPECT($L46, fail, 'Star "*"'), function($skip, $loc, $0, $1) {
4359
5266
  return { $loc, token: $1 };
4360
5267
  });
4361
5268
  function Star(state) {
@@ -4367,10 +5274,10 @@ var require_parser = __commonJS({
4367
5274
  return Star$0(state);
4368
5275
  }
4369
5276
  }
4370
- var Static$0 = $TV($EXPECT($L116, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
5277
+ var Static$0 = $TV($EXPECT($L120, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
4371
5278
  return { $loc, token: $1 };
4372
5279
  });
4373
- var Static$1 = $TS($S($EXPECT($L8, fail, 'Static "@"'), $N($EXPECT($L112, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
5280
+ var Static$1 = $TS($S($EXPECT($L8, fail, 'Static "@"'), $N($EXPECT($L116, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
4374
5281
  return { $loc, token: "static " };
4375
5282
  });
4376
5283
  function Static(state) {
@@ -4380,7 +5287,7 @@ var require_parser = __commonJS({
4380
5287
  return Static$0(state) || Static$1(state);
4381
5288
  }
4382
5289
  }
4383
- var SubstitutionStart$0 = $TV($EXPECT($L117, fail, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
5290
+ var SubstitutionStart$0 = $TV($EXPECT($L121, fail, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
4384
5291
  return { $loc, token: $1 };
4385
5292
  });
4386
5293
  function SubstitutionStart(state) {
@@ -4392,7 +5299,7 @@ var require_parser = __commonJS({
4392
5299
  return SubstitutionStart$0(state);
4393
5300
  }
4394
5301
  }
4395
- var Switch$0 = $TS($S($EXPECT($L118, fail, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5302
+ var Switch$0 = $TS($S($EXPECT($L122, fail, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4396
5303
  return { $loc, token: $1 };
4397
5304
  });
4398
5305
  function Switch(state) {
@@ -4404,7 +5311,7 @@ var require_parser = __commonJS({
4404
5311
  return Switch$0(state);
4405
5312
  }
4406
5313
  }
4407
- var Target$0 = $TV($EXPECT($L119, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
5314
+ var Target$0 = $TV($EXPECT($L123, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
4408
5315
  return { $loc, token: $1 };
4409
5316
  });
4410
5317
  function Target(state) {
@@ -4416,7 +5323,19 @@ var require_parser = __commonJS({
4416
5323
  return Target$0(state);
4417
5324
  }
4418
5325
  }
4419
- var Throw$0 = $TS($S($EXPECT($L120, fail, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5326
+ var Then$0 = $TS($S(__, $EXPECT($L124, fail, 'Then "then"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
5327
+ return { $loc, token: "" };
5328
+ });
5329
+ function Then(state) {
5330
+ if (state.verbose)
5331
+ console.log("ENTER:", "Then");
5332
+ if (state.tokenize) {
5333
+ return $TOKEN("Then", state, Then$0(state));
5334
+ } else {
5335
+ return Then$0(state);
5336
+ }
5337
+ }
5338
+ var Throw$0 = $TS($S($EXPECT($L125, fail, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4420
5339
  return { $loc, token: $1 };
4421
5340
  });
4422
5341
  function Throw(state) {
@@ -4428,7 +5347,7 @@ var require_parser = __commonJS({
4428
5347
  return Throw$0(state);
4429
5348
  }
4430
5349
  }
4431
- var TripleDoubleQuote$0 = $TV($EXPECT($L121, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
5350
+ var TripleDoubleQuote$0 = $TV($EXPECT($L126, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
4432
5351
  return { $loc, token: "`" };
4433
5352
  });
4434
5353
  function TripleDoubleQuote(state) {
@@ -4440,7 +5359,7 @@ var require_parser = __commonJS({
4440
5359
  return TripleDoubleQuote$0(state);
4441
5360
  }
4442
5361
  }
4443
- var TripleSingleQuote$0 = $TV($EXPECT($L122, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
5362
+ var TripleSingleQuote$0 = $TV($EXPECT($L127, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
4444
5363
  return { $loc, token: "`" };
4445
5364
  });
4446
5365
  function TripleSingleQuote(state) {
@@ -4452,7 +5371,7 @@ var require_parser = __commonJS({
4452
5371
  return TripleSingleQuote$0(state);
4453
5372
  }
4454
5373
  }
4455
- var TripleTick$0 = $TV($EXPECT($L123, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
5374
+ var TripleTick$0 = $TV($EXPECT($L128, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
4456
5375
  return { $loc, token: "`" };
4457
5376
  });
4458
5377
  function TripleTick(state) {
@@ -4464,7 +5383,7 @@ var require_parser = __commonJS({
4464
5383
  return TripleTick$0(state);
4465
5384
  }
4466
5385
  }
4467
- var Try$0 = $TV($EXPECT($L124, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
5386
+ var Try$0 = $TV($EXPECT($L129, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
4468
5387
  return { $loc, token: $1 };
4469
5388
  });
4470
5389
  function Try(state) {
@@ -4476,7 +5395,7 @@ var require_parser = __commonJS({
4476
5395
  return Try$0(state);
4477
5396
  }
4478
5397
  }
4479
- var Typeof$0 = $TS($S($EXPECT($L125, fail, 'Typeof "typeof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5398
+ var Typeof$0 = $TS($S($EXPECT($L130, fail, 'Typeof "typeof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4480
5399
  return { $loc, token: $1 };
4481
5400
  });
4482
5401
  function Typeof(state) {
@@ -4488,7 +5407,7 @@ var require_parser = __commonJS({
4488
5407
  return Typeof$0(state);
4489
5408
  }
4490
5409
  }
4491
- var Unless$0 = $TV($EXPECT($L126, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
5410
+ var Unless$0 = $TV($EXPECT($L131, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
4492
5411
  return { $loc, token: $1 };
4493
5412
  });
4494
5413
  function Unless(state) {
@@ -4500,7 +5419,7 @@ var require_parser = __commonJS({
4500
5419
  return Unless$0(state);
4501
5420
  }
4502
5421
  }
4503
- var Until$0 = $TS($S($EXPECT($L127, fail, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5422
+ var Until$0 = $TS($S($EXPECT($L132, fail, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4504
5423
  return { $loc, token: $1 };
4505
5424
  });
4506
5425
  function Until(state) {
@@ -4512,7 +5431,7 @@ var require_parser = __commonJS({
4512
5431
  return Until$0(state);
4513
5432
  }
4514
5433
  }
4515
- var Var$0 = $TV($EXPECT($L128, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
5434
+ var Var$0 = $TV($EXPECT($L133, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
4516
5435
  return { $loc, token: $1 };
4517
5436
  });
4518
5437
  function Var(state) {
@@ -4524,7 +5443,7 @@ var require_parser = __commonJS({
4524
5443
  return Var$0(state);
4525
5444
  }
4526
5445
  }
4527
- var Void$0 = $TS($S($EXPECT($L129, fail, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5446
+ var Void$0 = $TS($S($EXPECT($L134, fail, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4528
5447
  return { $loc, token: $1 };
4529
5448
  });
4530
5449
  function Void(state) {
@@ -4536,7 +5455,7 @@ var require_parser = __commonJS({
4536
5455
  return Void$0(state);
4537
5456
  }
4538
5457
  }
4539
- var When$0 = $TS($S($EXPECT($L130, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5458
+ var When$0 = $TS($S($EXPECT($L135, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4540
5459
  return { $loc, token: "case" };
4541
5460
  });
4542
5461
  function When(state) {
@@ -4548,7 +5467,7 @@ var require_parser = __commonJS({
4548
5467
  return When$0(state);
4549
5468
  }
4550
5469
  }
4551
- var While$0 = $TS($S($EXPECT($L131, fail, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5470
+ var While$0 = $TS($S($EXPECT($L136, fail, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4552
5471
  return { $loc, token: $1 };
4553
5472
  });
4554
5473
  function While(state) {
@@ -4560,7 +5479,7 @@ var require_parser = __commonJS({
4560
5479
  return While$0(state);
4561
5480
  }
4562
5481
  }
4563
- var Yield$0 = $TS($S($EXPECT($L132, fail, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5482
+ var Yield$0 = $TS($S($EXPECT($L137, fail, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4564
5483
  return { $loc, token: $1 };
4565
5484
  });
4566
5485
  function Yield(state) {
@@ -4586,7 +5505,7 @@ var require_parser = __commonJS({
4586
5505
  return JSXElement$0(state) || JSXElement$1(state);
4587
5506
  }
4588
5507
  }
4589
- var JSXSelfClosingElement$0 = $S($EXPECT($L4, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L133, fail, 'JSXSelfClosingElement "/>"'));
5508
+ var JSXSelfClosingElement$0 = $S($EXPECT($L4, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L138, fail, 'JSXSelfClosingElement "/>"'));
4590
5509
  function JSXSelfClosingElement(state) {
4591
5510
  if (state.verbose)
4592
5511
  console.log("ENTER:", "JSXSelfClosingElement");
@@ -4596,7 +5515,7 @@ var require_parser = __commonJS({
4596
5515
  return JSXSelfClosingElement$0(state);
4597
5516
  }
4598
5517
  }
4599
- var JSXOpeningElement$0 = $S($EXPECT($L4, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L55, fail, 'JSXOpeningElement ">"'));
5518
+ var JSXOpeningElement$0 = $S($EXPECT($L4, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L56, fail, 'JSXOpeningElement ">"'));
4600
5519
  function JSXOpeningElement(state) {
4601
5520
  if (state.verbose)
4602
5521
  console.log("ENTER:", "JSXOpeningElement");
@@ -4606,7 +5525,7 @@ var require_parser = __commonJS({
4606
5525
  return JSXOpeningElement$0(state);
4607
5526
  }
4608
5527
  }
4609
- var JSXClosingElement$0 = $S($EXPECT($L134, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L55, fail, 'JSXClosingElement ">"'));
5528
+ var JSXClosingElement$0 = $S($EXPECT($L139, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L56, fail, 'JSXClosingElement ">"'));
4610
5529
  function JSXClosingElement(state) {
4611
5530
  if (state.verbose)
4612
5531
  console.log("ENTER:", "JSXClosingElement");
@@ -4616,7 +5535,7 @@ var require_parser = __commonJS({
4616
5535
  return JSXClosingElement$0(state);
4617
5536
  }
4618
5537
  }
4619
- var JSXFragment$0 = $S($EXPECT($L135, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L136, fail, 'JSXFragment "</>"'));
5538
+ var JSXFragment$0 = $S($EXPECT($L140, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L141, fail, 'JSXFragment "</>"'));
4620
5539
  function JSXFragment(state) {
4621
5540
  if (state.verbose)
4622
5541
  console.log("ENTER:", "JSXFragment");
@@ -4636,7 +5555,7 @@ var require_parser = __commonJS({
4636
5555
  return JSXElementName$0(state);
4637
5556
  }
4638
5557
  }
4639
- var JSXIdentifierName$0 = $R$0($EXPECT($R33, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
5558
+ var JSXIdentifierName$0 = $R$0($EXPECT($R34, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
4640
5559
  function JSXIdentifierName(state) {
4641
5560
  if (state.verbose)
4642
5561
  console.log("ENTER:", "JSXIdentifierName");
@@ -4656,7 +5575,7 @@ var require_parser = __commonJS({
4656
5575
  return JSXAttributes$0(state);
4657
5576
  }
4658
5577
  }
4659
- var JSXAttribute$0 = $S(OpenBrace, __, DotDotDot, __, AssignmentExpression, __, CloseBrace);
5578
+ var JSXAttribute$0 = $S(OpenBrace, __, DotDotDot, ExtendedExpression, __, CloseBrace);
4660
5579
  var JSXAttribute$1 = $S(JSXAttributeName, $E(JSXAttributeInitializer));
4661
5580
  function JSXAttribute(state) {
4662
5581
  if (state.tokenize) {
@@ -4685,9 +5604,9 @@ var require_parser = __commonJS({
4685
5604
  return JSXAttributeInitializer$0(state);
4686
5605
  }
4687
5606
  }
4688
- var JSXAttributeValue$0 = $R$0($EXPECT($R34, fail, 'JSXAttributeValue /"[^"]*"/'));
4689
- var JSXAttributeValue$1 = $R$0($EXPECT($R35, fail, "JSXAttributeValue /'[^']*'/"));
4690
- var JSXAttributeValue$2 = $S(OpenBrace, __, AssignmentExpression, __, CloseBrace);
5607
+ var JSXAttributeValue$0 = $R$0($EXPECT($R35, fail, 'JSXAttributeValue /"[^"]*"/'));
5608
+ var JSXAttributeValue$1 = $R$0($EXPECT($R36, fail, "JSXAttributeValue /'[^']*'/"));
5609
+ var JSXAttributeValue$2 = $S(OpenBrace, ExtendedExpression, __, CloseBrace);
4691
5610
  var JSXAttributeValue$3 = JSXElement;
4692
5611
  var JSXAttributeValue$4 = JSXFragment;
4693
5612
  function JSXAttributeValue(state) {
@@ -4718,7 +5637,7 @@ var require_parser = __commonJS({
4718
5637
  return JSXChild$0(state) || JSXChild$1(state) || JSXChild$2(state) || JSXChild$3(state);
4719
5638
  }
4720
5639
  }
4721
- var JSXText$0 = $R$0($EXPECT($R36, fail, "JSXText /[^{}<>]+/"));
5640
+ var JSXText$0 = $R$0($EXPECT($R37, fail, "JSXText /[^{}<>]+/"));
4722
5641
  function JSXText(state) {
4723
5642
  if (state.verbose)
4724
5643
  console.log("ENTER:", "JSXText");
@@ -4728,7 +5647,7 @@ var require_parser = __commonJS({
4728
5647
  return JSXText$0(state);
4729
5648
  }
4730
5649
  }
4731
- var JSXChildExpression$0 = $S(__, $E($S(DotDotDot, __)), AssignmentExpression);
5650
+ var JSXChildExpression$0 = $S(__, $E($S(DotDotDot, __)), ExtendedExpression);
4732
5651
  function JSXChildExpression(state) {
4733
5652
  if (state.verbose)
4734
5653
  console.log("ENTER:", "JSXChildExpression");
@@ -4750,7 +5669,7 @@ var require_parser = __commonJS({
4750
5669
  return TypeDeclaration$0(state);
4751
5670
  }
4752
5671
  }
4753
- var TypeDeclarationModifier$0 = $S($EXPECT($L137, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
5672
+ var TypeDeclarationModifier$0 = $S($EXPECT($L142, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
4754
5673
  var TypeDeclarationModifier$1 = Export;
4755
5674
  function TypeDeclarationModifier(state) {
4756
5675
  if (state.tokenize) {
@@ -4770,7 +5689,7 @@ var require_parser = __commonJS({
4770
5689
  return TypeDeclarationRest$0(state) || TypeDeclarationRest$1(state) || TypeDeclarationRest$2(state) || TypeDeclarationRest$3(state);
4771
5690
  }
4772
5691
  }
4773
- var TypeKeyword$0 = $S($EXPECT($L138, fail, 'TypeKeyword "type"'), NonIdContinue);
5692
+ var TypeKeyword$0 = $S($EXPECT($L143, fail, 'TypeKeyword "type"'), NonIdContinue);
4774
5693
  function TypeKeyword(state) {
4775
5694
  if (state.verbose)
4776
5695
  console.log("ENTER:", "TypeKeyword");
@@ -4780,7 +5699,7 @@ var require_parser = __commonJS({
4780
5699
  return TypeKeyword$0(state);
4781
5700
  }
4782
5701
  }
4783
- var Interface$0 = $S($EXPECT($L139, fail, 'Interface "interface"'), NonIdContinue);
5702
+ var Interface$0 = $S($EXPECT($L144, fail, 'Interface "interface"'), NonIdContinue);
4784
5703
  function Interface(state) {
4785
5704
  if (state.verbose)
4786
5705
  console.log("ENTER:", "Interface");
@@ -4790,7 +5709,7 @@ var require_parser = __commonJS({
4790
5709
  return Interface$0(state);
4791
5710
  }
4792
5711
  }
4793
- var Namespace$0 = $S($EXPECT($L140, fail, 'Namespace "namespace"'), NonIdContinue);
5712
+ var Namespace$0 = $S($EXPECT($L145, fail, 'Namespace "namespace"'), NonIdContinue);
4794
5713
  function Namespace(state) {
4795
5714
  if (state.verbose)
4796
5715
  console.log("ENTER:", "Namespace");
@@ -4890,7 +5809,7 @@ var require_parser = __commonJS({
4890
5809
  return NestedTypeDeclaration$0(state);
4891
5810
  }
4892
5811
  }
4893
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R37, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L141, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R38, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
5812
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R38, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L146, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R39, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
4894
5813
  function TypeIndexSignature(state) {
4895
5814
  if (state.verbose)
4896
5815
  console.log("ENTER:", "TypeIndexSignature");
@@ -4921,7 +5840,7 @@ var require_parser = __commonJS({
4921
5840
  return TypeSuffix$0(state);
4922
5841
  }
4923
5842
  }
4924
- var ReturnTypeSuffix$0 = $TS($S(__, Colon, $E($S(__, $EXPECT($L142, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2, $3, $4) {
5843
+ var ReturnTypeSuffix$0 = $TS($S(__, Colon, $E($S(__, $EXPECT($L147, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2, $3, $4) {
4925
5844
  if (!$3)
4926
5845
  $0.splice(2, 1);
4927
5846
  if ($1.length === 0)
@@ -4941,7 +5860,7 @@ var require_parser = __commonJS({
4941
5860
  return ReturnTypeSuffix$0(state);
4942
5861
  }
4943
5862
  }
4944
- var TypePredicate$0 = $TS($S(Type, $E($S(__, $EXPECT($L58, fail, 'TypePredicate "is"'), NonIdContinue, Type))), function($skip, $loc, $0, $1, $2) {
5863
+ var TypePredicate$0 = $TS($S(Type, $E($S(__, $EXPECT($L60, fail, 'TypePredicate "is"'), NonIdContinue, Type))), function($skip, $loc, $0, $1, $2) {
4945
5864
  if (!$2)
4946
5865
  return $1;
4947
5866
  return $0;
@@ -5004,9 +5923,9 @@ var require_parser = __commonJS({
5004
5923
  return TypeUnarySuffix$0(state) || TypeUnarySuffix$1(state);
5005
5924
  }
5006
5925
  }
5007
- var TypeUnaryOp$0 = $EXPECT($L143, fail, 'TypeUnaryOp "keyof"');
5008
- var TypeUnaryOp$1 = $EXPECT($L125, fail, 'TypeUnaryOp "typeof"');
5009
- var TypeUnaryOp$2 = $EXPECT($L144, fail, 'TypeUnaryOp "infer"');
5926
+ var TypeUnaryOp$0 = $EXPECT($L148, fail, 'TypeUnaryOp "keyof"');
5927
+ var TypeUnaryOp$1 = $EXPECT($L130, fail, 'TypeUnaryOp "typeof"');
5928
+ var TypeUnaryOp$2 = $EXPECT($L149, fail, 'TypeUnaryOp "infer"');
5010
5929
  function TypeUnaryOp(state) {
5011
5930
  if (state.tokenize) {
5012
5931
  return $TOKEN("TypeUnaryOp", state, TypeUnaryOp$0(state) || TypeUnaryOp$1(state) || TypeUnaryOp$2(state));
@@ -5096,10 +6015,10 @@ var require_parser = __commonJS({
5096
6015
  }
5097
6016
  }
5098
6017
  var TypeLiteral$0 = Literal;
5099
- var TypeLiteral$1 = $TV($EXPECT($L129, fail, 'TypeLiteral "void"'), function($skip, $loc, $0, $1) {
6018
+ var TypeLiteral$1 = $TV($EXPECT($L134, fail, 'TypeLiteral "void"'), function($skip, $loc, $0, $1) {
5100
6019
  return { $loc, token: "void" };
5101
6020
  });
5102
- var TypeLiteral$2 = $TV($EXPECT($L145, fail, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
6021
+ var TypeLiteral$2 = $TV($EXPECT($L150, fail, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
5103
6022
  return { $loc, token: "[]" };
5104
6023
  });
5105
6024
  function TypeLiteral(state) {
@@ -5109,10 +6028,10 @@ var require_parser = __commonJS({
5109
6028
  return TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state);
5110
6029
  }
5111
6030
  }
5112
- var TypeBinaryOp$0 = $TV($EXPECT($L70, fail, 'TypeBinaryOp "|"'), function($skip, $loc, $0, $1) {
6031
+ var TypeBinaryOp$0 = $TV($EXPECT($L73, fail, 'TypeBinaryOp "|"'), function($skip, $loc, $0, $1) {
5113
6032
  return { $loc, token: "|" };
5114
6033
  });
5115
- var TypeBinaryOp$1 = $TV($EXPECT($L68, fail, 'TypeBinaryOp "&"'), function($skip, $loc, $0, $1) {
6034
+ var TypeBinaryOp$1 = $TV($EXPECT($L71, fail, 'TypeBinaryOp "&"'), function($skip, $loc, $0, $1) {
5116
6035
  return { $loc, token: "&" };
5117
6036
  });
5118
6037
  function TypeBinaryOp(state) {
@@ -5132,7 +6051,7 @@ var require_parser = __commonJS({
5132
6051
  return FunctionType$0(state);
5133
6052
  }
5134
6053
  }
5135
- var TypeArguments$0 = $S(__, $EXPECT($L4, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L55, fail, 'TypeArguments ">"'));
6054
+ var TypeArguments$0 = $S(__, $EXPECT($L4, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L56, fail, 'TypeArguments ">"'));
5136
6055
  function TypeArguments(state) {
5137
6056
  if (state.verbose)
5138
6057
  console.log("ENTER:", "TypeArguments");
@@ -5142,7 +6061,7 @@ var require_parser = __commonJS({
5142
6061
  return TypeArguments$0(state);
5143
6062
  }
5144
6063
  }
5145
- var TypeParameters$0 = $TS($S(__, $EXPECT($L4, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L55, fail, 'TypeParameters ">"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
6064
+ var TypeParameters$0 = $TS($S(__, $EXPECT($L4, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L56, fail, 'TypeParameters ">"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
5146
6065
  return { ts: true, children: $0 };
5147
6066
  });
5148
6067
  function TypeParameters(state) {
@@ -5175,8 +6094,8 @@ var require_parser = __commonJS({
5175
6094
  }
5176
6095
  }
5177
6096
  var TypeParameterDelimiter$0 = $S($Q(_), Comma);
5178
- var TypeParameterDelimiter$1 = $Y($S($Q(_), $EXPECT($L55, fail, 'TypeParameterDelimiter ">"')));
5179
- var TypeParameterDelimiter$2 = $TV($Y($S(__, $EXPECT($L55, fail, 'TypeParameterDelimiter ">"'))), function($skip, $loc, $0, $1) {
6097
+ var TypeParameterDelimiter$1 = $Y($S($Q(_), $EXPECT($L56, fail, 'TypeParameterDelimiter ">"')));
6098
+ var TypeParameterDelimiter$2 = $TV($Y($S(__, $EXPECT($L56, fail, 'TypeParameterDelimiter ">"'))), function($skip, $loc, $0, $1) {
5180
6099
  return { $loc, token: "," };
5181
6100
  });
5182
6101
  var TypeParameterDelimiter$3 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
@@ -5189,7 +6108,7 @@ var require_parser = __commonJS({
5189
6108
  return TypeParameterDelimiter$0(state) || TypeParameterDelimiter$1(state) || TypeParameterDelimiter$2(state) || TypeParameterDelimiter$3(state);
5190
6109
  }
5191
6110
  }
5192
- var Shebang$0 = $S($R$0($EXPECT($R39, fail, "Shebang /#![^\\r\\n]*/")), EOL);
6111
+ var Shebang$0 = $S($R$0($EXPECT($R40, fail, "Shebang /#![^\\r\\n]*/")), EOL);
5193
6112
  function Shebang(state) {
5194
6113
  if (state.verbose)
5195
6114
  console.log("ENTER:", "Shebang");
@@ -5199,11 +6118,11 @@ var require_parser = __commonJS({
5199
6118
  return Shebang$0(state);
5200
6119
  }
5201
6120
  }
5202
- var CivetPrologue$0 = $T($S($EXPECT($R40, fail, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
6121
+ var CivetPrologue$0 = $T($S($EXPECT($R41, fail, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
5203
6122
  var content = value[2];
5204
6123
  return content;
5205
6124
  });
5206
- var CivetPrologue$1 = $T($S($EXPECT($R40, fail, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
6125
+ var CivetPrologue$1 = $T($S($EXPECT($R41, fail, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
5207
6126
  var content = value[2];
5208
6127
  return content;
5209
6128
  });
@@ -5214,7 +6133,7 @@ var require_parser = __commonJS({
5214
6133
  return CivetPrologue$0(state) || CivetPrologue$1(state);
5215
6134
  }
5216
6135
  }
5217
- var CivetPrologueContent$0 = $TS($S($EXPECT($L146, fail, 'CivetPrologueContent "civet"'), $Q(CivetOption), $EXPECT($R41, fail, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3) {
6136
+ var CivetPrologueContent$0 = $TS($S($EXPECT($L151, fail, 'CivetPrologueContent "civet"'), $Q(CivetOption), $EXPECT($R42, fail, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3) {
5218
6137
  var options = $2;
5219
6138
  return {
5220
6139
  type: "CivetPrologue",
@@ -5231,7 +6150,7 @@ var require_parser = __commonJS({
5231
6150
  return CivetPrologueContent$0(state);
5232
6151
  }
5233
6152
  }
5234
- var CivetOption$0 = $TR($EXPECT($R42, fail, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
6153
+ var CivetOption$0 = $TR($EXPECT($R43, fail, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
5235
6154
  const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
5236
6155
  if (l)
5237
6156
  return l.toUpperCase();
@@ -5249,7 +6168,7 @@ var require_parser = __commonJS({
5249
6168
  return CivetOption$0(state);
5250
6169
  }
5251
6170
  }
5252
- var UnknownPrologue$0 = $S($R$0($EXPECT($R40, fail, "UnknownPrologue /[\\t ]*/")), BasicStringLiteral, $TEXT(StatementDelimiter), EOS);
6171
+ var UnknownPrologue$0 = $S($R$0($EXPECT($R41, fail, "UnknownPrologue /[\\t ]*/")), BasicStringLiteral, $TEXT(StatementDelimiter), EOS);
5253
6172
  function UnknownPrologue(state) {
5254
6173
  if (state.verbose)
5255
6174
  console.log("ENTER:", "UnknownPrologue");
@@ -5278,7 +6197,7 @@ var require_parser = __commonJS({
5278
6197
  return EOS$0(state);
5279
6198
  }
5280
6199
  }
5281
- var EOL$0 = $TR($EXPECT($R43, fail, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
6200
+ var EOL$0 = $TR($EXPECT($R44, fail, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
5282
6201
  return { $loc, token: $0 };
5283
6202
  });
5284
6203
  function EOL(state) {
@@ -5462,6 +6381,20 @@ var require_parser = __commonJS({
5462
6381
  return CoffeeBooleansEnabled$0(state);
5463
6382
  }
5464
6383
  }
6384
+ var CoffeeForLoopsEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeForLoopsEnabled ""'), function($skip, $loc, $0, $1) {
6385
+ if (module2.config.coffeeForLoops)
6386
+ return;
6387
+ return $skip;
6388
+ });
6389
+ function CoffeeForLoopsEnabled(state) {
6390
+ if (state.verbose)
6391
+ console.log("ENTER:", "CoffeeForLoopsEnabled");
6392
+ if (state.tokenize) {
6393
+ return $TOKEN("CoffeeForLoopsEnabled", state, CoffeeForLoopsEnabled$0(state));
6394
+ } else {
6395
+ return CoffeeForLoopsEnabled$0(state);
6396
+ }
6397
+ }
5465
6398
  var CoffeeInterpolationEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeInterpolationEnabled ""'), function($skip, $loc, $0, $1) {
5466
6399
  if (module2.config.coffeeInterpolation)
5467
6400
  return;
@@ -5476,6 +6409,48 @@ var require_parser = __commonJS({
5476
6409
  return CoffeeInterpolationEnabled$0(state);
5477
6410
  }
5478
6411
  }
6412
+ var CoffeeIsntEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeIsntEnabled ""'), function($skip, $loc, $0, $1) {
6413
+ if (module2.config.coffeeIsnt)
6414
+ return;
6415
+ return $skip;
6416
+ });
6417
+ function CoffeeIsntEnabled(state) {
6418
+ if (state.verbose)
6419
+ console.log("ENTER:", "CoffeeIsntEnabled");
6420
+ if (state.tokenize) {
6421
+ return $TOKEN("CoffeeIsntEnabled", state, CoffeeIsntEnabled$0(state));
6422
+ } else {
6423
+ return CoffeeIsntEnabled$0(state);
6424
+ }
6425
+ }
6426
+ var CoffeeNotEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeNotEnabled ""'), function($skip, $loc, $0, $1) {
6427
+ if (module2.config.coffeeNot)
6428
+ return;
6429
+ return $skip;
6430
+ });
6431
+ function CoffeeNotEnabled(state) {
6432
+ if (state.verbose)
6433
+ console.log("ENTER:", "CoffeeNotEnabled");
6434
+ if (state.tokenize) {
6435
+ return $TOKEN("CoffeeNotEnabled", state, CoffeeNotEnabled$0(state));
6436
+ } else {
6437
+ return CoffeeNotEnabled$0(state);
6438
+ }
6439
+ }
6440
+ var CoffeeOfEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeOfEnabled ""'), function($skip, $loc, $0, $1) {
6441
+ if (module2.config.coffeeOf)
6442
+ return;
6443
+ return $skip;
6444
+ });
6445
+ function CoffeeOfEnabled(state) {
6446
+ if (state.verbose)
6447
+ console.log("ENTER:", "CoffeeOfEnabled");
6448
+ if (state.tokenize) {
6449
+ return $TOKEN("CoffeeOfEnabled", state, CoffeeOfEnabled$0(state));
6450
+ } else {
6451
+ return CoffeeOfEnabled$0(state);
6452
+ }
6453
+ }
5479
6454
  var Reset$0 = $TV($EXPECT($L0, fail, 'Reset ""'), function($skip, $loc, $0, $1) {
5480
6455
  module2.currentIndent = 0;
5481
6456
  module2.indentLevels = [0];
@@ -5485,9 +6460,51 @@ var require_parser = __commonJS({
5485
6460
  coffeeBooleans: false,
5486
6461
  coffeeComment: false,
5487
6462
  coffeeEq: false,
6463
+ coffeeForLoops: false,
5488
6464
  coffeeInterpolation: false,
6465
+ coffeeIsnt: false,
6466
+ coffeeNot: false,
6467
+ coffeeOf: false,
5489
6468
  implicitReturns: true
5490
6469
  };
6470
+ let indexOfRef, hasPropRef;
6471
+ module2.prelude = [];
6472
+ module2.getIndexOfRef = function() {
6473
+ if (indexOfRef)
6474
+ return indexOfRef;
6475
+ indexOfRef = {
6476
+ type: "Ref",
6477
+ base: "indexOf"
6478
+ };
6479
+ const typeSuffix = {
6480
+ ts: true,
6481
+ children: [": <T>(this: T[], searchElement: T) => boolean"]
6482
+ };
6483
+ const asAny = {
6484
+ ts: true,
6485
+ children: [" as any"]
6486
+ };
6487
+ module2.prelude.push(["", "const ", indexOfRef, typeSuffix, " = [].indexOf", asAny, "\n"]);
6488
+ return indexOfRef;
6489
+ };
6490
+ module2.getHasPropRef = function() {
6491
+ if (hasPropRef)
6492
+ return hasPropRef;
6493
+ hasPropRef = {
6494
+ type: "Ref",
6495
+ base: "hasProp"
6496
+ };
6497
+ const typeSuffix = {
6498
+ ts: true,
6499
+ children: [": <T>(this: T, prop: keyof T) => boolean"]
6500
+ };
6501
+ const asAny = {
6502
+ ts: true,
6503
+ children: [" as any"]
6504
+ };
6505
+ module2.prelude.push(["", "const ", hasPropRef, typeSuffix, " = {}.hasOwnProperty", asAny, "\n"]);
6506
+ return hasPropRef;
6507
+ };
5491
6508
  Object.defineProperty(module2.config, "coffeeCompat", {
5492
6509
  set(b) {
5493
6510
  if (b) {
@@ -5495,15 +6512,21 @@ var require_parser = __commonJS({
5495
6512
  this.coffeeBooleans = true;
5496
6513
  this.coffeeComment = true;
5497
6514
  this.coffeeEq = true;
6515
+ this.coffeeForLoops = true;
5498
6516
  this.coffeeInterpolation = true;
5499
- this.implicitReturns = true;
6517
+ this.coffeeIsnt = true;
6518
+ this.coffeeNot = true;
6519
+ this.coffeeOf = true;
5500
6520
  } else {
5501
6521
  this.autoVar = false;
5502
6522
  this.coffeeBooleans = false;
5503
6523
  this.coffeeComment = false;
5504
6524
  this.coffeeEq = false;
6525
+ this.coffeeForLoops = false;
5505
6526
  this.coffeeInterpolation = false;
5506
- this.implicitReturns = false;
6527
+ this.coffeeIsnt = false;
6528
+ this.coffeeNot = false;
6529
+ this.coffeeOf = false;
5507
6530
  }
5508
6531
  }
5509
6532
  });
@@ -5535,7 +6558,7 @@ var require_parser = __commonJS({
5535
6558
  node.children.unshift("return ");
5536
6559
  return;
5537
6560
  case "Identifier":
5538
- node.token = "return " + node.token;
6561
+ node.children.unshift("return ");
5539
6562
  return;
5540
6563
  case "BlockStatement":
5541
6564
  insertReturn(node.expressions[node.expressions.length - 1]);
@@ -5568,10 +6591,11 @@ var require_parser = __commonJS({
5568
6591
  case "ContinueStatement":
5569
6592
  case "DebuggerStatement":
5570
6593
  case "EmptyStatement":
6594
+ case "ForStatement":
5571
6595
  case "IterationStatement":
5572
6596
  case "ReturnStatement":
5573
6597
  case "ThrowStatement":
5574
- case "VariableDeclaration":
6598
+ case "Declaration":
5575
6599
  return;
5576
6600
  case "BlockStatement":
5577
6601
  insertReturn(exp.expressions[exp.expressions.length - 1]);
@@ -5617,7 +6641,7 @@ var require_parser = __commonJS({
5617
6641
  let chains = [];
5618
6642
  while (i < l) {
5619
6643
  const [, op] = binops[i];
5620
- if (relationalOps.includes(op.token)) {
6644
+ if (relationalOps.includes(op.token) || op.type === "Ref") {
5621
6645
  chains.push(i);
5622
6646
  } else if (lowerPrecedenceOps.includes(op.token)) {
5623
6647
  processChains();
@@ -5631,7 +6655,7 @@ var require_parser = __commonJS({
5631
6655
  if (chains.length > 1) {
5632
6656
  chains.forEach((index, k) => {
5633
6657
  if (k > 0) {
5634
- results.push(" && ");
6658
+ results.push(" ", "&&", " ");
5635
6659
  }
5636
6660
  const [pre, op, post, exp] = binops[index];
5637
6661
  let endIndex;
@@ -5679,9 +6703,12 @@ var require_parser = __commonJS({
5679
6703
  };
5680
6704
  module2.insertTrimmingSpace = function(spacing, c) {
5681
6705
  let target = spacing;
5682
- while (Array.isArray(target)) {
5683
- target = target[0];
5684
- }
6706
+ if (!target)
6707
+ return;
6708
+ if (Array.isArray(target))
6709
+ return module2.insertTrimmingSpace(target[0], c);
6710
+ if (target.children)
6711
+ return module2.insertTrimmingSpace(target.children[0], c);
5685
6712
  if (target.token) {
5686
6713
  target.token = target.token.replace(/^ ?/, c);
5687
6714
  }
@@ -5737,6 +6764,137 @@ var require_parser = __commonJS({
5737
6764
  token: str
5738
6765
  };
5739
6766
  };
6767
+ function gatherNodes(node, predicate) {
6768
+ if (node == null)
6769
+ return [];
6770
+ if (Array.isArray(node)) {
6771
+ return node.flatMap((n) => gatherNodes(n, predicate));
6772
+ }
6773
+ if (predicate(node)) {
6774
+ return [node];
6775
+ }
6776
+ switch (node.type) {
6777
+ case "BlockStatement":
6778
+ return [];
6779
+ case "ForStatement":
6780
+ const isDec = node.declaration?.type === "Declaration";
6781
+ return node.children.flatMap((n) => {
6782
+ if (isDec && n === node.declaration)
6783
+ return [];
6784
+ return gatherNodes(n, predicate);
6785
+ });
6786
+ default:
6787
+ return gatherNodes(node.children, predicate);
6788
+ }
6789
+ return [];
6790
+ }
6791
+ function gatherRecursive(node, predicate) {
6792
+ if (node == null)
6793
+ return [];
6794
+ if (Array.isArray(node)) {
6795
+ return node.flatMap((n) => gatherNodes(n, predicate));
6796
+ }
6797
+ if (predicate(node)) {
6798
+ return [node];
6799
+ }
6800
+ return gatherNodes(node.children, predicate);
6801
+ }
6802
+ module2.processProgram = function(statements) {
6803
+ statements.unshift(...module2.prelude);
6804
+ if (module2.config.autoVar) {
6805
+ createVarDecs(statements, []);
6806
+ }
6807
+ populateRefs(statements);
6808
+ };
6809
+ function findDecs(statements) {
6810
+ const declarationNames = gatherNodes(statements, (node) => {
6811
+ if (node.type === "Declaration") {
6812
+ return true;
6813
+ }
6814
+ }).flatMap((d) => d.names);
6815
+ return new Set(declarationNames);
6816
+ }
6817
+ function populateRefs(statements) {
6818
+ const refNodes = gatherNodes(statements, ({ type }) => type === "Ref");
6819
+ const blockNodes = new Set(gatherNodes(statements, ({ type }) => type === "BlockStatement"));
6820
+ const forNodes = gatherNodes(statements, ({ type }) => type === "ForStatement");
6821
+ forNodes.forEach(({ declaration, block }) => {
6822
+ if (block.type === "BlockStatement") {
6823
+ populateRefs([declaration, ...block.children]);
6824
+ } else {
6825
+ populateRefs([declaration, ...block]);
6826
+ }
6827
+ blockNodes.delete(block);
6828
+ });
6829
+ blockNodes.forEach(({ expressions }) => populateRefs(expressions));
6830
+ if (refNodes.length) {
6831
+ const ids = gatherRecursive(statements, (s) => s.type === "Identifier");
6832
+ const names = new Set(ids.flatMap(({ names: names2 }) => names2 || []));
6833
+ refNodes.forEach((ref) => {
6834
+ const { type, base } = ref;
6835
+ if (type !== "Ref")
6836
+ return;
6837
+ ref.type = "Identifier";
6838
+ let n = 0;
6839
+ let name = base;
6840
+ while (names.has(name)) {
6841
+ n++;
6842
+ name = `${base}${n}`;
6843
+ }
6844
+ names.add(name);
6845
+ ref.children = ref.names = [name];
6846
+ });
6847
+ }
6848
+ }
6849
+ function createVarDecs(statements, scopes, pushVar) {
6850
+ function hasDec(name) {
6851
+ return scopes.some((s) => s.has(name));
6852
+ }
6853
+ function findAssignments(statements2, decs2) {
6854
+ const assignmentStatements = gatherNodes(statements2, (node) => {
6855
+ return node.type === "AssignmentExpression";
6856
+ });
6857
+ const undeclaredIdentifiers = assignmentStatements.flatMap((a) => {
6858
+ return a.names;
6859
+ });
6860
+ return undeclaredIdentifiers.filter((x, i, a) => {
6861
+ if (!hasDec(x))
6862
+ return a.indexOf(x) === i;
6863
+ });
6864
+ }
6865
+ if (!pushVar) {
6866
+ pushVar = function(name) {
6867
+ varIds.push(name);
6868
+ decs.add(name);
6869
+ };
6870
+ }
6871
+ const decs = findDecs(statements);
6872
+ scopes.push(decs);
6873
+ const varIds = [];
6874
+ findAssignments(statements, scopes).forEach(pushVar);
6875
+ const fnNodes = gatherNodes(statements, (s) => s.type === "FunctionExpression");
6876
+ const forNodes = gatherNodes(statements, (s) => s.type === "ForStatement");
6877
+ const blockNodes = new Set(gatherNodes(statements, (s) => s.type === "BlockStatement"));
6878
+ fnNodes.forEach(({ block }) => blockNodes.delete(block));
6879
+ forNodes.forEach(({ block }) => blockNodes.delete(block));
6880
+ blockNodes.forEach((block) => {
6881
+ createVarDecs(block.expressions, scopes, pushVar);
6882
+ });
6883
+ forNodes.forEach(({ block, declaration }) => {
6884
+ scopes.push(new Set(declaration.names));
6885
+ createVarDecs(block.expressions, scopes, pushVar);
6886
+ scopes.pop();
6887
+ });
6888
+ fnNodes.forEach(({ block, parameters }) => {
6889
+ scopes.push(new Set(parameters.names));
6890
+ createVarDecs(block.expressions, scopes);
6891
+ scopes.pop();
6892
+ });
6893
+ if (varIds.length) {
6894
+ const indent = statements[0][0];
6895
+ statements.unshift([indent, "var ", varIds.join(", "), "\n"]);
6896
+ }
6897
+ }
5740
6898
  return $0;
5741
6899
  });
5742
6900
  function Init(state) {
@@ -5748,7 +6906,7 @@ var require_parser = __commonJS({
5748
6906
  return Init$0(state);
5749
6907
  }
5750
6908
  }
5751
- var Indent$0 = $TV($Q($C($EXPECT($L147, fail, 'Indent " "'), $EXPECT($L148, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
6909
+ var Indent$0 = $TV($Q($C($EXPECT($L152, fail, 'Indent " "'), $EXPECT($L153, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
5752
6910
  const level = $1.length;
5753
6911
  return {
5754
6912
  $loc,