@danielx/civet 0.4.20 → 0.4.22

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.
Files changed (4) hide show
  1. package/README.md +20 -16
  2. package/dist/browser.js +866 -571
  3. package/dist/main.js +866 -571
  4. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -400,6 +400,7 @@ ${input.slice(result.pos)}
400
400
  Expression,
401
401
  Arguments,
402
402
  ApplicationStart,
403
+ IndentedApplicationAllowed,
403
404
  ArgumentsWithTrailingCallExpressions,
404
405
  ArgumentList,
405
406
  NestedArgumentList,
@@ -438,7 +439,7 @@ ${input.slice(result.pos)}
438
439
  NestedClassElement,
439
440
  ClassElement,
440
441
  FieldDefinition,
441
- This,
442
+ ThisLiteral,
442
443
  LeftHandSideExpression,
443
444
  CallExpression,
444
445
  CallExpressionRest,
@@ -458,6 +459,7 @@ ${input.slice(result.pos)}
458
459
  ParameterElement,
459
460
  ParameterElementDelimiter,
460
461
  BindingIdentifier,
462
+ AtIdentifierRef,
461
463
  BindingPattern,
462
464
  ObjectBindingPattern,
463
465
  ObjectBindingPatternContent,
@@ -499,6 +501,7 @@ ${input.slice(result.pos)}
499
501
  Identifier,
500
502
  IdentifierName,
501
503
  IdentifierReference,
504
+ UpcomingAssignment,
502
505
  ArrayLiteral,
503
506
  RangeExpression,
504
507
  ArrayLiteralContent,
@@ -586,6 +589,8 @@ ${input.slice(result.pos)}
586
589
  Finally,
587
590
  CatchParameter,
588
591
  Condition,
592
+ ExpressionWithIndentedApplicationSuppressed,
593
+ SuppressIndentedApplication,
589
594
  ExpressionStatement,
590
595
  KeywordStatement,
591
596
  DebuggerExpression,
@@ -607,6 +612,7 @@ ${input.slice(result.pos)}
607
612
  ExportFromClause,
608
613
  NamedExports,
609
614
  ExportSpecifier,
615
+ ImplicitExportSpecifier,
610
616
  Declaration,
611
617
  HoistableDeclaration,
612
618
  LexicalDeclaration,
@@ -655,6 +661,7 @@ ${input.slice(result.pos)}
655
661
  JSMultiLineComment,
656
662
  CoffeeSingleLineComment,
657
663
  CoffeeMultiLineComment,
664
+ CoffeeHereCommentStart,
658
665
  InlineComment,
659
666
  RestOfLine,
660
667
  TrailingComment,
@@ -718,6 +725,7 @@ ${input.slice(result.pos)}
718
725
  Switch,
719
726
  Target,
720
727
  Then,
728
+ This,
721
729
  Throw,
722
730
  TripleDoubleQuote,
723
731
  TripleSingleQuote,
@@ -799,6 +807,7 @@ ${input.slice(result.pos)}
799
807
  InsertOpenParen,
800
808
  InsertCloseParen,
801
809
  InsertOpenBrace,
810
+ InsertInlineOpenBrace,
802
811
  InsertCloseBrace,
803
812
  InsertConst,
804
813
  InsertReadonly,
@@ -828,13 +837,13 @@ ${input.slice(result.pos)}
828
837
  PopIndent,
829
838
  Nested
830
839
  });
831
- var $L0 = $L("++");
832
- var $L1 = $L("--");
833
- var $L2 = $L("=>");
834
- var $L3 = $L(" ");
835
- var $L4 = $L("<");
836
- var $L5 = $L("extends");
837
- var $L6 = $L("this");
840
+ var $L0 = $L("");
841
+ var $L1 = $L("++");
842
+ var $L2 = $L("--");
843
+ var $L3 = $L("=>");
844
+ var $L4 = $L(" ");
845
+ var $L5 = $L("<");
846
+ var $L6 = $L("extends");
838
847
  var $L7 = $L("#");
839
848
  var $L8 = $L(".");
840
849
  var $L9 = $L("super");
@@ -842,37 +851,37 @@ ${input.slice(result.pos)}
842
851
  var $L11 = $L("!");
843
852
  var $L12 = $L("super[");
844
853
  var $L13 = $L("import.meta");
845
- var $L14 = $L("");
846
- var $L15 = $L(")");
847
- var $L16 = $L("->");
848
- var $L17 = $L("null");
849
- var $L18 = $L("true");
850
- var $L19 = $L("false");
851
- var $L20 = $L("yes");
852
- var $L21 = $L("on");
853
- var $L22 = $L("no");
854
- var $L23 = $L("off");
855
- var $L24 = $L(",");
856
- var $L25 = $L("]");
857
- var $L26 = $L(":");
858
- var $L27 = $L("}");
859
- var $L28 = $L("**=");
860
- var $L29 = $L("*=");
861
- var $L30 = $L("/=");
862
- var $L31 = $L("%=");
863
- var $L32 = $L("+=");
864
- var $L33 = $L("-=");
865
- var $L34 = $L("<<=");
866
- var $L35 = $L(">>>=");
867
- var $L36 = $L(">>=");
868
- var $L37 = $L("&&=");
869
- var $L38 = $L("&=");
870
- var $L39 = $L("^=");
871
- var $L40 = $L("||=");
872
- var $L41 = $L("|=");
873
- var $L42 = $L("??=");
874
- var $L43 = $L("?=");
875
- var $L44 = $L("=");
854
+ var $L14 = $L(")");
855
+ var $L15 = $L("->");
856
+ var $L16 = $L("null");
857
+ var $L17 = $L("true");
858
+ var $L18 = $L("false");
859
+ var $L19 = $L("yes");
860
+ var $L20 = $L("on");
861
+ var $L21 = $L("no");
862
+ var $L22 = $L("off");
863
+ var $L23 = $L(",");
864
+ var $L24 = $L("=");
865
+ var $L25 = $L(">");
866
+ var $L26 = $L("]");
867
+ var $L27 = $L(":");
868
+ var $L28 = $L("}");
869
+ var $L29 = $L("**=");
870
+ var $L30 = $L("*=");
871
+ var $L31 = $L("/=");
872
+ var $L32 = $L("%=");
873
+ var $L33 = $L("+=");
874
+ var $L34 = $L("-=");
875
+ var $L35 = $L("<<=");
876
+ var $L36 = $L(">>>=");
877
+ var $L37 = $L(">>=");
878
+ var $L38 = $L("&&=");
879
+ var $L39 = $L("&=");
880
+ var $L40 = $L("^=");
881
+ var $L41 = $L("||=");
882
+ var $L42 = $L("|=");
883
+ var $L43 = $L("??=");
884
+ var $L44 = $L("?=");
876
885
  var $L45 = $L("and=");
877
886
  var $L46 = $L("or=");
878
887
  var $L47 = $L("**");
@@ -886,107 +895,106 @@ ${input.slice(result.pos)}
886
895
  var $L55 = $L("<<");
887
896
  var $L56 = $L(">>>");
888
897
  var $L57 = $L(">>");
889
- var $L58 = $L(">");
890
- var $L59 = $L("!==");
891
- var $L60 = $L("!=");
892
- var $L61 = $L("isnt");
893
- var $L62 = $L("is");
894
- var $L63 = $L("===");
895
- var $L64 = $L("==");
896
- var $L65 = $L("and");
897
- var $L66 = $L("&&");
898
- var $L67 = $L("of");
899
- var $L68 = $L("or");
900
- var $L69 = $L("||");
901
- var $L70 = $L("??");
902
- var $L71 = $L("?");
903
- var $L72 = $L("instanceof");
898
+ var $L58 = $L("!==");
899
+ var $L59 = $L("!=");
900
+ var $L60 = $L("isnt");
901
+ var $L61 = $L("is");
902
+ var $L62 = $L("===");
903
+ var $L63 = $L("==");
904
+ var $L64 = $L("and");
905
+ var $L65 = $L("&&");
906
+ var $L66 = $L("of");
907
+ var $L67 = $L("or");
908
+ var $L68 = $L("||");
909
+ var $L69 = $L("??");
910
+ var $L70 = $L("?");
911
+ var $L71 = $L("instanceof");
912
+ var $L72 = $L("not");
904
913
  var $L73 = $L("in");
905
- var $L74 = $L("not");
906
- var $L75 = $L("&");
907
- var $L76 = $L("^");
908
- var $L77 = $L("|");
909
- var $L78 = $L(";");
910
- var $L79 = $L("own");
911
- var $L80 = $L("finally");
912
- var $L81 = $L("break");
913
- var $L82 = $L("continue");
914
- var $L83 = $L("debugger");
915
- var $L84 = $L("import type");
916
- var $L85 = $L("default");
917
- var $L86 = $L(":=");
918
- var $L87 = $L("/*");
919
- var $L88 = $L("*/");
920
- var $L89 = $L("###");
921
- var $L90 = $L("\\");
922
- var $L91 = $L("as");
923
- var $L92 = $L("@");
924
- var $L93 = $L("async");
925
- var $L94 = $L("await");
926
- var $L95 = $L("`");
927
- var $L96 = $L("by");
928
- var $L97 = $L("case");
929
- var $L98 = $L("catch");
930
- var $L99 = $L("class");
931
- var $L100 = $L("#{");
932
- var $L101 = $L("delete");
933
- var $L102 = $L("do");
934
- var $L103 = $L("..");
935
- var $L104 = $L("...");
936
- var $L105 = $L("::");
937
- var $L106 = $L('"');
938
- var $L107 = $L("else");
939
- var $L108 = $L("export");
940
- var $L109 = $L("for");
941
- var $L110 = $L("from");
942
- var $L111 = $L("function");
943
- var $L112 = $L("get");
944
- var $L113 = $L("set");
945
- var $L114 = $L("if");
946
- var $L115 = $L("let");
947
- var $L116 = $L("const");
948
- var $L117 = $L("loop");
949
- var $L118 = $L("new");
950
- var $L119 = $L("{");
951
- var $L120 = $L("[");
952
- var $L121 = $L("(");
953
- var $L122 = $L("return");
954
- var $L123 = $L("'");
955
- var $L124 = $L("static");
956
- var $L125 = $L("${");
957
- var $L126 = $L("switch");
958
- var $L127 = $L("target");
959
- var $L128 = $L("then");
960
- var $L129 = $L("throw");
961
- var $L130 = $L('"""');
962
- var $L131 = $L("'''");
963
- var $L132 = $L("///");
964
- var $L133 = $L("```");
965
- var $L134 = $L("try");
966
- var $L135 = $L("typeof");
967
- var $L136 = $L("unless");
968
- var $L137 = $L("until");
969
- var $L138 = $L("var");
970
- var $L139 = $L("void");
971
- var $L140 = $L("when");
972
- var $L141 = $L("while");
973
- var $L142 = $L("yield");
974
- var $L143 = $L("/>");
975
- var $L144 = $L("</");
976
- var $L145 = $L("<>");
977
- var $L146 = $L("</>");
978
- var $L147 = $L("declare");
979
- var $L148 = $L("type");
980
- var $L149 = $L("interface");
981
- var $L150 = $L("namespace");
982
- var $L151 = $L("readonly");
983
- var $L152 = $L("asserts");
984
- var $L153 = $L("keyof");
985
- var $L154 = $L("infer");
986
- var $L155 = $L("[]");
987
- var $L156 = $L("civet");
988
- var $L157 = $L(" ");
989
- var $L158 = $L(" ");
914
+ var $L74 = $L("&");
915
+ var $L75 = $L("^");
916
+ var $L76 = $L("|");
917
+ var $L77 = $L(";");
918
+ var $L78 = $L("own");
919
+ var $L79 = $L("finally");
920
+ var $L80 = $L("break");
921
+ var $L81 = $L("continue");
922
+ var $L82 = $L("debugger");
923
+ var $L83 = $L("import type");
924
+ var $L84 = $L("default");
925
+ var $L85 = $L(":=");
926
+ var $L86 = $L("/*");
927
+ var $L87 = $L("*/");
928
+ var $L88 = $L("\\");
929
+ var $L89 = $L("as");
930
+ var $L90 = $L("@");
931
+ var $L91 = $L("async");
932
+ var $L92 = $L("await");
933
+ var $L93 = $L("`");
934
+ var $L94 = $L("by");
935
+ var $L95 = $L("case");
936
+ var $L96 = $L("catch");
937
+ var $L97 = $L("class");
938
+ var $L98 = $L("#{");
939
+ var $L99 = $L("delete");
940
+ var $L100 = $L("do");
941
+ var $L101 = $L("..");
942
+ var $L102 = $L("...");
943
+ var $L103 = $L("::");
944
+ var $L104 = $L('"');
945
+ var $L105 = $L("else");
946
+ var $L106 = $L("export");
947
+ var $L107 = $L("for");
948
+ var $L108 = $L("from");
949
+ var $L109 = $L("function");
950
+ var $L110 = $L("get");
951
+ var $L111 = $L("set");
952
+ var $L112 = $L("if");
953
+ var $L113 = $L("let");
954
+ var $L114 = $L("const");
955
+ var $L115 = $L("loop");
956
+ var $L116 = $L("new");
957
+ var $L117 = $L("{");
958
+ var $L118 = $L("[");
959
+ var $L119 = $L("(");
960
+ var $L120 = $L("return");
961
+ var $L121 = $L("'");
962
+ var $L122 = $L("static");
963
+ var $L123 = $L("${");
964
+ var $L124 = $L("switch");
965
+ var $L125 = $L("target");
966
+ var $L126 = $L("then");
967
+ var $L127 = $L("this");
968
+ var $L128 = $L("throw");
969
+ var $L129 = $L('"""');
970
+ var $L130 = $L("'''");
971
+ var $L131 = $L("///");
972
+ var $L132 = $L("```");
973
+ var $L133 = $L("try");
974
+ var $L134 = $L("typeof");
975
+ var $L135 = $L("unless");
976
+ var $L136 = $L("until");
977
+ var $L137 = $L("var");
978
+ var $L138 = $L("void");
979
+ var $L139 = $L("when");
980
+ var $L140 = $L("while");
981
+ var $L141 = $L("yield");
982
+ var $L142 = $L("/>");
983
+ var $L143 = $L("</");
984
+ var $L144 = $L("<>");
985
+ var $L145 = $L("</>");
986
+ var $L146 = $L("declare");
987
+ var $L147 = $L("type");
988
+ var $L148 = $L("interface");
989
+ var $L149 = $L("namespace");
990
+ var $L150 = $L("readonly");
991
+ var $L151 = $L("asserts");
992
+ var $L152 = $L("keyof");
993
+ var $L153 = $L("infer");
994
+ var $L154 = $L("[]");
995
+ var $L155 = $L("civet");
996
+ var $L156 = $L(" ");
997
+ var $L157 = $L(" ");
990
998
  var $R0 = $R(new RegExp("(for|of|then|when)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
991
999
  var $R1 = $R(new RegExp("[&]", "suy"));
992
1000
  var $R2 = $R(new RegExp("[!~+-]+", "suy"));
@@ -1020,25 +1028,27 @@ ${input.slice(result.pos)}
1020
1028
  var $R30 = $R(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
1021
1029
  var $R31 = $R(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
1022
1030
  var $R32 = $R(new RegExp("(?:by)(?!\\p{ID_Continue})", "suy"));
1023
- var $R33 = $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|let|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
1024
- var $R34 = $R(new RegExp("\\/\\/(?!\\/)[^\\r\\n]*", "suy"));
1025
- var $R35 = $R(new RegExp(".", "suy"));
1026
- var $R36 = $R(new RegExp("#(?!##)([^\\r\\n]*)", "suy"));
1027
- var $R37 = $R(new RegExp("[^\\r\\n]", "suy"));
1028
- var $R38 = $R(new RegExp("[ \\t]+", "suy"));
1029
- var $R39 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
1030
- var $R40 = $R(new RegExp("\\s", "suy"));
1031
- var $R41 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
1032
- var $R42 = $R(new RegExp('"[^"]*"', "suy"));
1033
- var $R43 = $R(new RegExp("'[^']*'", "suy"));
1034
- var $R44 = $R(new RegExp("[^{}<>]+", "suy"));
1035
- var $R45 = $R(new RegExp("[+-]?", "suy"));
1036
- var $R46 = $R(new RegExp("[+-]", "suy"));
1037
- var $R47 = $R(new RegExp("#![^\\r\\n]*", "suy"));
1038
- var $R48 = $R(new RegExp("[\\t ]*", "suy"));
1039
- var $R49 = $R(new RegExp("[\\s]*", "suy"));
1040
- var $R50 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)", "suy"));
1041
- var $R51 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
1031
+ var $R33 = $R(new RegExp("(?:of)(?!\\p{ID_Continue})", "suy"));
1032
+ var $R34 = $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|let|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
1033
+ var $R35 = $R(new RegExp("\\/\\/(?!\\/)[^\\r\\n]*", "suy"));
1034
+ var $R36 = $R(new RegExp(".", "suy"));
1035
+ var $R37 = $R(new RegExp("#(?!##(?!#))([^\\r\\n]*)", "suy"));
1036
+ var $R38 = $R(new RegExp("###(?!#)", "suy"));
1037
+ var $R39 = $R(new RegExp("[^\\r\\n]", "suy"));
1038
+ var $R40 = $R(new RegExp("[ \\t]+", "suy"));
1039
+ var $R41 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
1040
+ var $R42 = $R(new RegExp("\\s", "suy"));
1041
+ var $R43 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
1042
+ var $R44 = $R(new RegExp('"[^"]*"', "suy"));
1043
+ var $R45 = $R(new RegExp("'[^']*'", "suy"));
1044
+ var $R46 = $R(new RegExp("[^{}<>]+", "suy"));
1045
+ var $R47 = $R(new RegExp("[+-]?", "suy"));
1046
+ var $R48 = $R(new RegExp("[+-]", "suy"));
1047
+ var $R49 = $R(new RegExp("#![^\\r\\n]*", "suy"));
1048
+ var $R50 = $R(new RegExp("[\\t ]*", "suy"));
1049
+ var $R51 = $R(new RegExp("[\\s]*", "suy"));
1050
+ var $R52 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)", "suy"));
1051
+ var $R53 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
1042
1052
  var Program$0 = $TS($S(Reset, Init, __, $Q(TopLevelStatement), __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1043
1053
  var statements = $4;
1044
1054
  module2.processProgram(statements);
@@ -1088,9 +1098,10 @@ ${input.slice(result.pos)}
1088
1098
  return $skip;
1089
1099
  });
1090
1100
  var ExtendedExpression$1 = $TS($S(__, ExpressionizedStatement), function($skip, $loc, $0, $1, $2) {
1091
- return Object.assign({}, $2, {
1101
+ return {
1102
+ ...$2,
1092
1103
  children: [...$1, ...$2.children]
1093
- });
1104
+ };
1094
1105
  });
1095
1106
  var ExtendedExpression$2 = AssignmentExpression;
1096
1107
  function ExtendedExpression(state) {
@@ -1184,7 +1195,7 @@ ${input.slice(result.pos)}
1184
1195
  return result;
1185
1196
  }
1186
1197
  }
1187
- var ApplicationStart$0 = $Y(NestedImplicitObjectLiteral);
1198
+ var ApplicationStart$0 = $S(IndentedApplicationAllowed, $Y(NestedImplicitObjectLiteral));
1188
1199
  var ApplicationStart$1 = $S($N(EOS), $Y($S($P(_), $N(AdditionalReservedWords))));
1189
1200
  function ApplicationStart(state) {
1190
1201
  if (state.events) {
@@ -1204,6 +1215,29 @@ ${input.slice(result.pos)}
1204
1215
  return result;
1205
1216
  }
1206
1217
  }
1218
+ var IndentedApplicationAllowed$0 = $TV($EXPECT($L0, fail, 'IndentedApplicationAllowed ""'), function($skip, $loc, $0, $1) {
1219
+ if (module2.suppressIndentedApplication)
1220
+ return $skip;
1221
+ return;
1222
+ });
1223
+ function IndentedApplicationAllowed(state) {
1224
+ if (state.events) {
1225
+ const result = state.events.enter?.("IndentedApplicationAllowed", state);
1226
+ if (result)
1227
+ return result.cache;
1228
+ }
1229
+ if (state.tokenize) {
1230
+ const result = $TOKEN("IndentedApplicationAllowed", state, IndentedApplicationAllowed$0(state));
1231
+ if (state.events)
1232
+ state.events.exit?.("IndentedApplicationAllowed", state, result);
1233
+ return result;
1234
+ } else {
1235
+ const result = IndentedApplicationAllowed$0(state);
1236
+ if (state.events)
1237
+ state.events.exit?.("IndentedApplicationAllowed", state, result);
1238
+ return result;
1239
+ }
1240
+ }
1207
1241
  var ArgumentsWithTrailingCallExpressions$0 = $S(Arguments, $Q($S(Samedent, $N(Backtick), CallExpressionRest)));
1208
1242
  function ArgumentsWithTrailingCallExpressions(state) {
1209
1243
  if (state.events) {
@@ -1426,9 +1460,10 @@ ${input.slice(result.pos)}
1426
1460
  switch (exp.type) {
1427
1461
  case "Identifier":
1428
1462
  case "Literal":
1429
- return Object.assign({}, exp, {
1463
+ return {
1464
+ ...exp,
1430
1465
  children: [...pre, ...exp.children, post]
1431
- });
1466
+ };
1432
1467
  default:
1433
1468
  return {
1434
1469
  type: "ParenthesizedExpression",
@@ -1535,7 +1570,7 @@ ${input.slice(result.pos)}
1535
1570
  return result;
1536
1571
  }
1537
1572
  }
1538
- var UpdateExpressionSymbol$0 = $TV($C($EXPECT($L0, fail, 'UpdateExpressionSymbol "++"'), $EXPECT($L1, fail, 'UpdateExpressionSymbol "--"')), function($skip, $loc, $0, $1) {
1573
+ var UpdateExpressionSymbol$0 = $TV($C($EXPECT($L1, fail, 'UpdateExpressionSymbol "++"'), $EXPECT($L2, fail, 'UpdateExpressionSymbol "--"')), function($skip, $loc, $0, $1) {
1539
1574
  return { $loc, token: $1 };
1540
1575
  });
1541
1576
  function UpdateExpressionSymbol(state) {
@@ -1615,7 +1650,9 @@ ${input.slice(result.pos)}
1615
1650
  return {
1616
1651
  type: "AssignmentExpression",
1617
1652
  children: $0,
1618
- names: null
1653
+ names: null,
1654
+ lhs: $1,
1655
+ exp: $2
1619
1656
  };
1620
1657
  });
1621
1658
  function ActualAssignment(state) {
@@ -1677,9 +1714,10 @@ ${input.slice(result.pos)}
1677
1714
  }
1678
1715
  var ArrowFunction$0 = $TS($S($E($S(Async, __)), ArrowFunctionTail), function($skip, $loc, $0, $1, $2) {
1679
1716
  var tail = $2;
1680
- return Object.assign({}, tail, {
1717
+ return {
1718
+ ...tail,
1681
1719
  children: [...$1 || [], ...tail.children]
1682
- });
1720
+ };
1683
1721
  });
1684
1722
  function ArrowFunction(state) {
1685
1723
  if (state.events) {
@@ -1731,7 +1769,7 @@ ${input.slice(result.pos)}
1731
1769
  return result;
1732
1770
  }
1733
1771
  }
1734
- var FatArrow$0 = $TS($S(__, $EXPECT($L2, fail, 'FatArrow "=>"')), function($skip, $loc, $0, $1, $2) {
1772
+ var FatArrow$0 = $TS($S(__, $EXPECT($L3, fail, 'FatArrow "=>"')), function($skip, $loc, $0, $1, $2) {
1735
1773
  var ws = $1;
1736
1774
  if (!ws.length)
1737
1775
  return " =>";
@@ -1802,7 +1840,7 @@ ${input.slice(result.pos)}
1802
1840
  }
1803
1841
  }
1804
1842
  var TernaryRest$0 = NestedTernaryRest;
1805
- var TernaryRest$1 = $TS($S($N(CoffeeBinaryExistentialEnabled), $Y($EXPECT($L3, fail, 'TernaryRest " "')), $Q(TrailingComment), QuestionMark, ExtendedExpression, __, Colon, ExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
1843
+ var TernaryRest$1 = $TS($S($N(CoffeeBinaryExistentialEnabled), $Y($EXPECT($L4, fail, 'TernaryRest " "')), $Q(TrailingComment), QuestionMark, ExtendedExpression, __, Colon, ExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
1806
1844
  return $0.slice(2);
1807
1845
  });
1808
1846
  function TernaryRest(state) {
@@ -1865,7 +1903,7 @@ ${input.slice(result.pos)}
1865
1903
  return result;
1866
1904
  }
1867
1905
  }
1868
- var PrimaryExpression$0 = This;
1906
+ var PrimaryExpression$0 = ThisLiteral;
1869
1907
  var PrimaryExpression$1 = Literal;
1870
1908
  var PrimaryExpression$2 = ArrayLiteral;
1871
1909
  var PrimaryExpression$3 = ObjectLiteral;
@@ -1899,20 +1937,7 @@ ${input.slice(result.pos)}
1899
1937
  var exp = $2;
1900
1938
  var post = $3;
1901
1939
  if (post) {
1902
- let clause;
1903
- switch (post[1].type) {
1904
- case "IterationStatement":
1905
- case "ForStatement":
1906
- clause = module2.addPostfixStatement(exp, ...post);
1907
- return {
1908
- type: "IterationExpression",
1909
- children: [clause],
1910
- block: clause.block
1911
- };
1912
- case "IfStatement":
1913
- clause = module2.expressionizeIfClause(post[1], exp);
1914
- return clause;
1915
- }
1940
+ return module2.attachPostfixStatementAsExpression(exp, post);
1916
1941
  }
1917
1942
  return {
1918
1943
  type: "ParenthesizedExpression",
@@ -1995,10 +2020,10 @@ ${input.slice(result.pos)}
1995
2020
  return result;
1996
2021
  }
1997
2022
  }
1998
- var ExtendsToken$0 = $TV($EXPECT($L4, fail, 'ExtendsToken "<"'), function($skip, $loc, $0, $1) {
2023
+ var ExtendsToken$0 = $TV($EXPECT($L5, fail, 'ExtendsToken "<"'), function($skip, $loc, $0, $1) {
1999
2024
  return { $loc, token: "extends" };
2000
2025
  });
2001
- var ExtendsToken$1 = $TV($EXPECT($L5, fail, 'ExtendsToken "extends"'), function($skip, $loc, $0, $1) {
2026
+ var ExtendsToken$1 = $TV($EXPECT($L6, fail, 'ExtendsToken "extends"'), function($skip, $loc, $0, $1) {
2002
2027
  return { $loc, token: $1 };
2003
2028
  });
2004
2029
  function ExtendsToken(state) {
@@ -2020,7 +2045,7 @@ ${input.slice(result.pos)}
2020
2045
  }
2021
2046
  }
2022
2047
  var ClassBody$0 = $S(__, OpenBrace, $E(NestedClassElements), __, CloseBrace);
2023
- var ClassBody$1 = $S(InsertOpenBrace, NestedClassElements, InsertNewline, InsertIndent, InsertCloseBrace);
2048
+ var ClassBody$1 = $S(InsertOpenBrace, $E(NestedClassElements), InsertNewline, InsertIndent, InsertCloseBrace);
2024
2049
  function ClassBody(state) {
2025
2050
  if (state.events) {
2026
2051
  const result = state.events.enter?.("ClassBody", state);
@@ -2143,33 +2168,31 @@ ${input.slice(result.pos)}
2143
2168
  return result;
2144
2169
  }
2145
2170
  }
2146
- var This$0 = $TV($EXPECT($L6, fail, 'This "this"'), function($skip, $loc, $0, $1) {
2147
- return { $loc, token: $1 };
2148
- });
2149
- var This$1 = $TS($S(At, $TEXT($S($E($EXPECT($L7, fail, 'This "#"')), IdentifierName))), function($skip, $loc, $0, $1, $2) {
2171
+ var ThisLiteral$0 = This;
2172
+ var ThisLiteral$1 = $TS($S(At, $TEXT($S($E($EXPECT($L7, fail, 'ThisLiteral "#"')), IdentifierName))), function($skip, $loc, $0, $1, $2) {
2150
2173
  var t = $1;
2151
2174
  var id = $2;
2152
2175
  return [{ ...t, token: "this." }, id];
2153
2176
  });
2154
- var This$2 = $TS($S(At), function($skip, $loc, $0, $1) {
2177
+ var ThisLiteral$2 = $TS($S(At), function($skip, $loc, $0, $1) {
2155
2178
  $1.token = "this";
2156
2179
  return $1;
2157
2180
  });
2158
- function This(state) {
2181
+ function ThisLiteral(state) {
2159
2182
  if (state.events) {
2160
- const result = state.events.enter?.("This", state);
2183
+ const result = state.events.enter?.("ThisLiteral", state);
2161
2184
  if (result)
2162
2185
  return result.cache;
2163
2186
  }
2164
2187
  if (state.tokenize) {
2165
- const result = $TOKEN("This", state, This$0(state) || This$1(state) || This$2(state));
2188
+ const result = $TOKEN("ThisLiteral", state, ThisLiteral$0(state) || ThisLiteral$1(state) || ThisLiteral$2(state));
2166
2189
  if (state.events)
2167
- state.events.exit?.("This", state, result);
2190
+ state.events.exit?.("ThisLiteral", state, result);
2168
2191
  return result;
2169
2192
  } else {
2170
- const result = This$0(state) || This$1(state) || This$2(state);
2193
+ const result = ThisLiteral$0(state) || ThisLiteral$1(state) || ThisLiteral$2(state);
2171
2194
  if (state.events)
2172
- state.events.exit?.("This", state, result);
2195
+ state.events.exit?.("ThisLiteral", state, result);
2173
2196
  return result;
2174
2197
  }
2175
2198
  }
@@ -2543,7 +2566,7 @@ ${input.slice(result.pos)}
2543
2566
  }
2544
2567
  }
2545
2568
  var Parameters$0 = NonEmptyParameters;
2546
- var Parameters$1 = $TV($EXPECT($L14, fail, 'Parameters ""'), function($skip, $loc, $0, $1) {
2569
+ var Parameters$1 = $TV($EXPECT($L0, fail, 'Parameters ""'), function($skip, $loc, $0, $1) {
2547
2570
  return {
2548
2571
  type: "Parameters",
2549
2572
  children: [{ $loc, token: "()" }],
@@ -2588,8 +2611,7 @@ ${input.slice(result.pos)}
2588
2611
  if (after.length) {
2589
2612
  const spliceRef = module2.getSpliceRef();
2590
2613
  blockPrefix = {
2591
- type: "AssignmentExpression",
2592
- children: ["let [", module2.insertTrimmingSpace(after, ""), "] = ", spliceRef, ".call(", restIdentifier, ", -", after.length.toString(), ")"],
2614
+ children: ["[", module2.insertTrimmingSpace(after, ""), "] = ", spliceRef, ".call(", restIdentifier, ", -", after.length.toString(), ")"],
2593
2615
  names: after.flatMap((p) => p.names)
2594
2616
  };
2595
2617
  }
@@ -2683,7 +2705,7 @@ ${input.slice(result.pos)}
2683
2705
  }
2684
2706
  }
2685
2707
  var ParameterElementDelimiter$0 = $S($Q(_), Comma);
2686
- var ParameterElementDelimiter$1 = $Y($S(__, $EXPECT($L15, fail, 'ParameterElementDelimiter ")"')));
2708
+ var ParameterElementDelimiter$1 = $Y($S(__, $EXPECT($L14, fail, 'ParameterElementDelimiter ")"')));
2687
2709
  var ParameterElementDelimiter$2 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
2688
2710
  return { $loc, token: "," };
2689
2711
  });
@@ -2705,21 +2727,18 @@ ${input.slice(result.pos)}
2705
2727
  return result;
2706
2728
  }
2707
2729
  }
2708
- var BindingIdentifier$0 = $TS($S(__, $E(At), Identifier), function($skip, $loc, $0, $1, $2, $3) {
2730
+ var BindingIdentifier$0 = $TS($S(__, At, AtIdentifierRef), function($skip, $loc, $0, $1, $2, $3) {
2709
2731
  var ws = $1;
2710
- var at = $2;
2711
- var id = $3;
2712
- if (at) {
2713
- const ref = {
2714
- type: "Ref",
2715
- base: id.name
2716
- };
2717
- return {
2718
- type: "AtBinding",
2719
- children: [...ws, ref],
2720
- ref
2721
- };
2722
- }
2732
+ var ref = $3;
2733
+ return {
2734
+ type: "AtBinding",
2735
+ children: [...ws, ref],
2736
+ ref
2737
+ };
2738
+ });
2739
+ var BindingIdentifier$1 = $TS($S(__, Identifier), function($skip, $loc, $0, $1, $2) {
2740
+ var ws = $1;
2741
+ var id = $2;
2723
2742
  return {
2724
2743
  ...id,
2725
2744
  children: [...ws, ...id.children]
@@ -2732,17 +2751,51 @@ ${input.slice(result.pos)}
2732
2751
  return result.cache;
2733
2752
  }
2734
2753
  if (state.tokenize) {
2735
- const result = $TOKEN("BindingIdentifier", state, BindingIdentifier$0(state));
2754
+ const result = $TOKEN("BindingIdentifier", state, BindingIdentifier$0(state) || BindingIdentifier$1(state));
2736
2755
  if (state.events)
2737
2756
  state.events.exit?.("BindingIdentifier", state, result);
2738
2757
  return result;
2739
2758
  } else {
2740
- const result = BindingIdentifier$0(state);
2759
+ const result = BindingIdentifier$0(state) || BindingIdentifier$1(state);
2741
2760
  if (state.events)
2742
2761
  state.events.exit?.("BindingIdentifier", state, result);
2743
2762
  return result;
2744
2763
  }
2745
2764
  }
2765
+ var AtIdentifierRef$0 = $TV(ReservedWord, function($skip, $loc, $0, $1) {
2766
+ var r = $0;
2767
+ return {
2768
+ type: "Ref",
2769
+ base: `_${r}`,
2770
+ id: r
2771
+ };
2772
+ });
2773
+ var AtIdentifierRef$1 = $TV(IdentifierName, function($skip, $loc, $0, $1) {
2774
+ var id = $0;
2775
+ return {
2776
+ type: "Ref",
2777
+ base: id.name,
2778
+ id: id.name
2779
+ };
2780
+ });
2781
+ function AtIdentifierRef(state) {
2782
+ if (state.events) {
2783
+ const result = state.events.enter?.("AtIdentifierRef", state);
2784
+ if (result)
2785
+ return result.cache;
2786
+ }
2787
+ if (state.tokenize) {
2788
+ const result = $TOKEN("AtIdentifierRef", state, AtIdentifierRef$0(state) || AtIdentifierRef$1(state));
2789
+ if (state.events)
2790
+ state.events.exit?.("AtIdentifierRef", state, result);
2791
+ return result;
2792
+ } else {
2793
+ const result = AtIdentifierRef$0(state) || AtIdentifierRef$1(state);
2794
+ if (state.events)
2795
+ state.events.exit?.("AtIdentifierRef", state, result);
2796
+ return result;
2797
+ }
2798
+ }
2746
2799
  var BindingPattern$0 = $TS($S(__, ObjectBindingPattern), function($skip, $loc, $0, $1, $2) {
2747
2800
  var p = $2;
2748
2801
  return {
@@ -2753,7 +2806,7 @@ ${input.slice(result.pos)}
2753
2806
  var BindingPattern$1 = $TS($S(__, ArrayBindingPattern), function($skip, $loc, $0, $1, $2) {
2754
2807
  var p = $2;
2755
2808
  return {
2756
- children: [...$1, p],
2809
+ children: [...$1, p.children],
2757
2810
  names: p.names
2758
2811
  };
2759
2812
  });
@@ -2778,6 +2831,7 @@ ${input.slice(result.pos)}
2778
2831
  var ObjectBindingPattern$0 = $TS($S(OpenBrace, ObjectBindingPatternContent, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
2779
2832
  var c = $2;
2780
2833
  return {
2834
+ type: "ObjectBindingPattern",
2781
2835
  children: [$1, ...c.children, ...$3, $4],
2782
2836
  names: c.names
2783
2837
  };
@@ -2838,6 +2892,7 @@ ${input.slice(result.pos)}
2838
2892
  var ArrayBindingPattern$0 = $TS($S(OpenBracket, ArrayBindingPatternContent, __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
2839
2893
  var c = $2;
2840
2894
  return {
2895
+ type: "ArrayBindingPattern",
2841
2896
  names: c.names,
2842
2897
  children: $0
2843
2898
  };
@@ -2881,8 +2936,7 @@ ${input.slice(result.pos)}
2881
2936
  if (after.length) {
2882
2937
  const spliceRef = module2.getSpliceRef();
2883
2938
  blockPrefix = {
2884
- type: "AssignmentExpression",
2885
- children: ["let [", module2.insertTrimmingSpace(after, ""), "] = ", spliceRef, ".call(", restIdentifier, ", -", after.length.toString(), ")"],
2939
+ children: ["[", module2.insertTrimmingSpace(after, ""), "] = ", spliceRef, ".call(", restIdentifier, ", -", after.length.toString(), ")"],
2886
2940
  names: after.flatMap((p) => p.names)
2887
2941
  };
2888
2942
  }
@@ -3115,8 +3169,7 @@ ${input.slice(result.pos)}
3115
3169
  if (after.length) {
3116
3170
  const spliceRef = module2.getSpliceRef();
3117
3171
  blockPrefix = {
3118
- type: "AssignmentExpression",
3119
- children: ["let [", module2.insertTrimmingSpace(after, ""), "] = ", spliceRef, ".call(", restIdentifier, ", -", after.length.toString(), ")"],
3172
+ children: ["[", module2.insertTrimmingSpace(after, ""), "] = ", spliceRef, ".call(", restIdentifier, ", -", after.length.toString(), ")"],
3120
3173
  names: after.flatMap((p) => p.names)
3121
3174
  };
3122
3175
  }
@@ -3234,8 +3287,12 @@ ${input.slice(result.pos)}
3234
3287
  return result;
3235
3288
  }
3236
3289
  }
3237
- var EmptyBindingPattern$0 = $TV($EXPECT($L14, fail, 'EmptyBindingPattern ""'), function($skip, $loc, $0, $1) {
3238
- const ref = { type: "Ref", base: "ref" };
3290
+ var EmptyBindingPattern$0 = $TV($EXPECT($L0, fail, 'EmptyBindingPattern ""'), function($skip, $loc, $0, $1) {
3291
+ const ref = {
3292
+ type: "Ref",
3293
+ base: "ref",
3294
+ id: "ref"
3295
+ };
3239
3296
  return {
3240
3297
  type: "EmptyBinding",
3241
3298
  children: [ref],
@@ -3403,7 +3460,7 @@ ${input.slice(result.pos)}
3403
3460
  return result;
3404
3461
  }
3405
3462
  }
3406
- var Arrow$0 = $TV($EXPECT($L16, fail, 'Arrow "->"'), function($skip, $loc, $0, $1) {
3463
+ var Arrow$0 = $TV($EXPECT($L15, fail, 'Arrow "->"'), function($skip, $loc, $0, $1) {
3407
3464
  return { $loc, token: $1 };
3408
3465
  });
3409
3466
  function Arrow(state) {
@@ -3783,7 +3840,7 @@ ${input.slice(result.pos)}
3783
3840
  return result;
3784
3841
  }
3785
3842
  }
3786
- var NullLiteral$0 = $TV($EXPECT($L17, fail, 'NullLiteral "null"'), function($skip, $loc, $0, $1) {
3843
+ var NullLiteral$0 = $TV($EXPECT($L16, fail, 'NullLiteral "null"'), function($skip, $loc, $0, $1) {
3787
3844
  return { $loc, token: $1 };
3788
3845
  });
3789
3846
  function NullLiteral(state) {
@@ -3807,7 +3864,7 @@ ${input.slice(result.pos)}
3807
3864
  var BooleanLiteral$0 = $T($S(CoffeeBooleansEnabled, CoffeeScriptBooleanLiteral), function(value) {
3808
3865
  return value[1];
3809
3866
  });
3810
- var BooleanLiteral$1 = $TS($S($C($EXPECT($L18, fail, 'BooleanLiteral "true"'), $EXPECT($L19, fail, 'BooleanLiteral "false"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3867
+ var BooleanLiteral$1 = $TS($S($C($EXPECT($L17, fail, 'BooleanLiteral "true"'), $EXPECT($L18, fail, 'BooleanLiteral "false"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3811
3868
  return { $loc, token: $1 };
3812
3869
  });
3813
3870
  function BooleanLiteral(state) {
@@ -3828,10 +3885,10 @@ ${input.slice(result.pos)}
3828
3885
  return result;
3829
3886
  }
3830
3887
  }
3831
- var CoffeeScriptBooleanLiteral$0 = $TS($S($C($EXPECT($L20, fail, 'CoffeeScriptBooleanLiteral "yes"'), $EXPECT($L21, fail, 'CoffeeScriptBooleanLiteral "on"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3888
+ var CoffeeScriptBooleanLiteral$0 = $TS($S($C($EXPECT($L19, fail, 'CoffeeScriptBooleanLiteral "yes"'), $EXPECT($L20, fail, 'CoffeeScriptBooleanLiteral "on"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3832
3889
  return { $loc, token: "true" };
3833
3890
  });
3834
- var CoffeeScriptBooleanLiteral$1 = $TS($S($C($EXPECT($L22, fail, 'CoffeeScriptBooleanLiteral "no"'), $EXPECT($L23, fail, 'CoffeeScriptBooleanLiteral "off"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3891
+ var CoffeeScriptBooleanLiteral$1 = $TS($S($C($EXPECT($L21, fail, 'CoffeeScriptBooleanLiteral "no"'), $EXPECT($L22, fail, 'CoffeeScriptBooleanLiteral "off"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3835
3892
  return { $loc, token: "false" };
3836
3893
  });
3837
3894
  function CoffeeScriptBooleanLiteral(state) {
@@ -3852,7 +3909,7 @@ ${input.slice(result.pos)}
3852
3909
  return result;
3853
3910
  }
3854
3911
  }
3855
- var Comma$0 = $TV($EXPECT($L24, fail, 'Comma ","'), function($skip, $loc, $0, $1) {
3912
+ var Comma$0 = $TV($EXPECT($L23, fail, 'Comma ","'), function($skip, $loc, $0, $1) {
3856
3913
  return { $loc, token: $1 };
3857
3914
  });
3858
3915
  function Comma(state) {
@@ -3942,7 +3999,29 @@ ${input.slice(result.pos)}
3942
3999
  return result;
3943
4000
  }
3944
4001
  }
3945
- var ArrayLiteral$0 = $TS($S(OpenBracket, ArrayLiteralContent, __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
4002
+ var UpcomingAssignment$0 = $Y($S(__, $EXPECT($L24, fail, 'UpcomingAssignment "="'), $N($C($EXPECT($L24, fail, 'UpcomingAssignment "="'), $EXPECT($L25, fail, 'UpcomingAssignment ">"')))));
4003
+ function UpcomingAssignment(state) {
4004
+ if (state.events) {
4005
+ const result = state.events.enter?.("UpcomingAssignment", state);
4006
+ if (result)
4007
+ return result.cache;
4008
+ }
4009
+ if (state.tokenize) {
4010
+ const result = $TOKEN("UpcomingAssignment", state, UpcomingAssignment$0(state));
4011
+ if (state.events)
4012
+ state.events.exit?.("UpcomingAssignment", state, result);
4013
+ return result;
4014
+ } else {
4015
+ const result = UpcomingAssignment$0(state);
4016
+ if (state.events)
4017
+ state.events.exit?.("UpcomingAssignment", state, result);
4018
+ return result;
4019
+ }
4020
+ }
4021
+ var ArrayLiteral$0 = $T($S(ArrayBindingPattern, UpcomingAssignment), function(value) {
4022
+ return value[0];
4023
+ });
4024
+ var ArrayLiteral$1 = $TS($S(OpenBracket, ArrayLiteralContent, __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
3946
4025
  var content = $2;
3947
4026
  var ws = $3;
3948
4027
  if (content.type === "RangeExpression") {
@@ -3973,12 +4052,12 @@ ${input.slice(result.pos)}
3973
4052
  return result.cache;
3974
4053
  }
3975
4054
  if (state.tokenize) {
3976
- const result = $TOKEN("ArrayLiteral", state, ArrayLiteral$0(state));
4055
+ const result = $TOKEN("ArrayLiteral", state, ArrayLiteral$0(state) || ArrayLiteral$1(state));
3977
4056
  if (state.events)
3978
4057
  state.events.exit?.("ArrayLiteral", state, result);
3979
4058
  return result;
3980
4059
  } else {
3981
- const result = ArrayLiteral$0(state);
4060
+ const result = ArrayLiteral$0(state) || ArrayLiteral$1(state);
3982
4061
  if (state.events)
3983
4062
  state.events.exit?.("ArrayLiteral", state, result);
3984
4063
  return result;
@@ -4158,8 +4237,8 @@ ${input.slice(result.pos)}
4158
4237
  return result;
4159
4238
  }
4160
4239
  }
4161
- var ArrayElementDelimiter$0 = $S($Q(_), Comma);
4162
- var ArrayElementDelimiter$1 = $Y($S(__, $EXPECT($L25, fail, 'ArrayElementDelimiter "]"')));
4240
+ var ArrayElementDelimiter$0 = $S(__, Comma);
4241
+ var ArrayElementDelimiter$1 = $Y($S(__, $EXPECT($L26, fail, 'ArrayElementDelimiter "]"')));
4163
4242
  var ArrayElementDelimiter$2 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
4164
4243
  return { $loc, token: "," };
4165
4244
  });
@@ -4216,7 +4295,7 @@ ${input.slice(result.pos)}
4216
4295
  return result;
4217
4296
  }
4218
4297
  }
4219
- var ElementListRest$0 = $S($S(__, Comma, __), ArrayElementExpression);
4298
+ var ElementListRest$0 = $S($S(__, Comma), ArrayElementExpression);
4220
4299
  function ElementListRest(state) {
4221
4300
  if (state.events) {
4222
4301
  const result = state.events.enter?.("ElementListRest", state);
@@ -4235,10 +4314,18 @@ ${input.slice(result.pos)}
4235
4314
  return result;
4236
4315
  }
4237
4316
  }
4238
- var ArrayElementExpression$0 = $TS($S(ExtendedExpression, __, DotDotDot), function($skip, $loc, $0, $1, $2, $3) {
4317
+ var ArrayElementExpression$0 = $TS($S($E(ExtendedExpression), __, DotDotDot, $Y(ArrayElementDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
4239
4318
  var exp = $1;
4240
4319
  var ws = $2;
4241
4320
  var dots = $3;
4321
+ if (!exp) {
4322
+ exp = {
4323
+ type: "Ref",
4324
+ base: "ref",
4325
+ id: "ref",
4326
+ names: []
4327
+ };
4328
+ }
4242
4329
  return {
4243
4330
  type: "SpreadElement",
4244
4331
  children: [...ws, dots, exp],
@@ -4286,9 +4373,12 @@ ${input.slice(result.pos)}
4286
4373
  return result;
4287
4374
  }
4288
4375
  }
4289
- var ObjectLiteral$0 = BracedObjectLiteral;
4290
- var ObjectLiteral$1 = NestedImplicitObjectLiteral;
4291
- var ObjectLiteral$2 = InlineObjectLiteral;
4376
+ var ObjectLiteral$0 = $T($S(ObjectBindingPattern, UpcomingAssignment), function(value) {
4377
+ return value[0];
4378
+ });
4379
+ var ObjectLiteral$1 = BracedObjectLiteral;
4380
+ var ObjectLiteral$2 = NestedImplicitObjectLiteral;
4381
+ var ObjectLiteral$3 = InlineObjectLiteral;
4292
4382
  function ObjectLiteral(state) {
4293
4383
  if (state.events) {
4294
4384
  const result = state.events.enter?.("ObjectLiteral", state);
@@ -4296,12 +4386,12 @@ ${input.slice(result.pos)}
4296
4386
  return result.cache;
4297
4387
  }
4298
4388
  if (state.tokenize) {
4299
- const result = $TOKEN("ObjectLiteral", state, ObjectLiteral$0(state) || ObjectLiteral$1(state) || ObjectLiteral$2(state));
4389
+ const result = $TOKEN("ObjectLiteral", state, ObjectLiteral$0(state) || ObjectLiteral$1(state) || ObjectLiteral$2(state) || ObjectLiteral$3(state));
4300
4390
  if (state.events)
4301
4391
  state.events.exit?.("ObjectLiteral", state, result);
4302
4392
  return result;
4303
4393
  } else {
4304
- const result = ObjectLiteral$0(state) || ObjectLiteral$1(state) || ObjectLiteral$2(state);
4394
+ const result = ObjectLiteral$0(state) || ObjectLiteral$1(state) || ObjectLiteral$2(state) || ObjectLiteral$3(state);
4305
4395
  if (state.events)
4306
4396
  state.events.exit?.("ObjectLiteral", state, result);
4307
4397
  return result;
@@ -4464,14 +4554,13 @@ ${input.slice(result.pos)}
4464
4554
  return result;
4465
4555
  }
4466
4556
  }
4467
- var NestedPropertyDefinition$0 = $TS($S(Nested, PropertyDefinition, ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3) {
4557
+ var NestedPropertyDefinition$0 = $TS($S(Nested, $P($S(PropertyDefinition, ObjectPropertyDelimiter))), function($skip, $loc, $0, $1, $2) {
4468
4558
  var ws = $1;
4469
- var prop = $2;
4470
- var delimiter = $3;
4471
- return {
4559
+ var inlineProps = $2;
4560
+ return inlineProps.map(([prop, delimiter], i) => ({
4472
4561
  ...prop,
4473
- children: [...ws, ...prop.children, delimiter]
4474
- };
4562
+ children: [...i === 0 ? ws : [], ...prop.children, delimiter]
4563
+ }));
4475
4564
  });
4476
4565
  function NestedPropertyDefinition(state) {
4477
4566
  if (state.events) {
@@ -4491,10 +4580,10 @@ ${input.slice(result.pos)}
4491
4580
  return result;
4492
4581
  }
4493
4582
  }
4494
- var InlineObjectLiteral$0 = $TS($S(InsertOpenBrace, SnugNamedProperty, ImplicitInlineObjectPropertyDelimiter, $Q($S(NamedProperty, ImplicitInlineObjectPropertyDelimiter)), InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
4583
+ var InlineObjectLiteral$0 = $TS($S(InsertInlineOpenBrace, SnugNamedProperty, ImplicitInlineObjectPropertyDelimiter, $Q($S(NamedProperty, ImplicitInlineObjectPropertyDelimiter)), InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
4495
4584
  var open = $1;
4496
4585
  var close = $5;
4497
- return [open[1], $2, $3, ...$4, close];
4586
+ return [open, $2, $3, ...$4, close];
4498
4587
  });
4499
4588
  function InlineObjectLiteral(state) {
4500
4589
  if (state.events) {
@@ -4514,13 +4603,14 @@ ${input.slice(result.pos)}
4514
4603
  return result;
4515
4604
  }
4516
4605
  }
4517
- var ImplicitInlineObjectPropertyDelimiter$0 = $T($Y($S(EOS, NamedProperty)), function(value) {
4606
+ var ImplicitInlineObjectPropertyDelimiter$0 = $S($Q(TrailingComment), $EXPECT($L23, fail, 'ImplicitInlineObjectPropertyDelimiter ","'));
4607
+ var ImplicitInlineObjectPropertyDelimiter$1 = $T($Y($S(EOS, NamedProperty)), function(value) {
4518
4608
  return ",";
4519
4609
  });
4520
- var ImplicitInlineObjectPropertyDelimiter$1 = $T($Y($S(__, $EXPECT($L26, fail, 'ImplicitInlineObjectPropertyDelimiter ":"'))), function(value) {
4610
+ var ImplicitInlineObjectPropertyDelimiter$2 = $T($Y($S(__, $C($EXPECT($L27, fail, 'ImplicitInlineObjectPropertyDelimiter ":"'), $EXPECT($L14, fail, 'ImplicitInlineObjectPropertyDelimiter ")"'), $EXPECT($L26, fail, 'ImplicitInlineObjectPropertyDelimiter "]"'), $EXPECT($L28, fail, 'ImplicitInlineObjectPropertyDelimiter "}"'), ReservedWord))), function(value) {
4521
4611
  return "";
4522
4612
  });
4523
- var ImplicitInlineObjectPropertyDelimiter$2 = $T($Y(EOS), function(value) {
4613
+ var ImplicitInlineObjectPropertyDelimiter$3 = $T($Y(EOS), function(value) {
4524
4614
  return "";
4525
4615
  });
4526
4616
  function ImplicitInlineObjectPropertyDelimiter(state) {
@@ -4530,19 +4620,19 @@ ${input.slice(result.pos)}
4530
4620
  return result.cache;
4531
4621
  }
4532
4622
  if (state.tokenize) {
4533
- const result = $TOKEN("ImplicitInlineObjectPropertyDelimiter", state, ImplicitInlineObjectPropertyDelimiter$0(state) || ImplicitInlineObjectPropertyDelimiter$1(state) || ImplicitInlineObjectPropertyDelimiter$2(state));
4623
+ const result = $TOKEN("ImplicitInlineObjectPropertyDelimiter", state, ImplicitInlineObjectPropertyDelimiter$0(state) || ImplicitInlineObjectPropertyDelimiter$1(state) || ImplicitInlineObjectPropertyDelimiter$2(state) || ImplicitInlineObjectPropertyDelimiter$3(state));
4534
4624
  if (state.events)
4535
4625
  state.events.exit?.("ImplicitInlineObjectPropertyDelimiter", state, result);
4536
4626
  return result;
4537
4627
  } else {
4538
- const result = ImplicitInlineObjectPropertyDelimiter$0(state) || ImplicitInlineObjectPropertyDelimiter$1(state) || ImplicitInlineObjectPropertyDelimiter$2(state);
4628
+ const result = ImplicitInlineObjectPropertyDelimiter$0(state) || ImplicitInlineObjectPropertyDelimiter$1(state) || ImplicitInlineObjectPropertyDelimiter$2(state) || ImplicitInlineObjectPropertyDelimiter$3(state);
4539
4629
  if (state.events)
4540
4630
  state.events.exit?.("ImplicitInlineObjectPropertyDelimiter", state, result);
4541
4631
  return result;
4542
4632
  }
4543
4633
  }
4544
4634
  var ObjectPropertyDelimiter$0 = $S($Q(_), Comma);
4545
- var ObjectPropertyDelimiter$1 = $Y($S(__, $EXPECT($L27, fail, 'ObjectPropertyDelimiter "}"')));
4635
+ var ObjectPropertyDelimiter$1 = $Y($S(__, $EXPECT($L28, fail, 'ObjectPropertyDelimiter "}"')));
4546
4636
  var ObjectPropertyDelimiter$2 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
4547
4637
  return { $loc, token: "," };
4548
4638
  });
@@ -4875,25 +4965,25 @@ ${input.slice(result.pos)}
4875
4965
  return result;
4876
4966
  }
4877
4967
  }
4878
- var AssignmentOpSymbol$0 = $EXPECT($L28, fail, 'AssignmentOpSymbol "**="');
4879
- var AssignmentOpSymbol$1 = $EXPECT($L29, fail, 'AssignmentOpSymbol "*="');
4880
- var AssignmentOpSymbol$2 = $EXPECT($L30, fail, 'AssignmentOpSymbol "/="');
4881
- var AssignmentOpSymbol$3 = $EXPECT($L31, fail, 'AssignmentOpSymbol "%="');
4882
- var AssignmentOpSymbol$4 = $EXPECT($L32, fail, 'AssignmentOpSymbol "+="');
4883
- var AssignmentOpSymbol$5 = $EXPECT($L33, fail, 'AssignmentOpSymbol "-="');
4884
- var AssignmentOpSymbol$6 = $EXPECT($L34, fail, 'AssignmentOpSymbol "<<="');
4885
- var AssignmentOpSymbol$7 = $EXPECT($L35, fail, 'AssignmentOpSymbol ">>>="');
4886
- var AssignmentOpSymbol$8 = $EXPECT($L36, fail, 'AssignmentOpSymbol ">>="');
4887
- var AssignmentOpSymbol$9 = $EXPECT($L37, fail, 'AssignmentOpSymbol "&&="');
4888
- var AssignmentOpSymbol$10 = $EXPECT($L38, fail, 'AssignmentOpSymbol "&="');
4889
- var AssignmentOpSymbol$11 = $EXPECT($L39, fail, 'AssignmentOpSymbol "^="');
4890
- var AssignmentOpSymbol$12 = $EXPECT($L40, fail, 'AssignmentOpSymbol "||="');
4891
- var AssignmentOpSymbol$13 = $EXPECT($L41, fail, 'AssignmentOpSymbol "|="');
4892
- var AssignmentOpSymbol$14 = $EXPECT($L42, fail, 'AssignmentOpSymbol "??="');
4893
- var AssignmentOpSymbol$15 = $T($EXPECT($L43, fail, 'AssignmentOpSymbol "?="'), function(value) {
4968
+ var AssignmentOpSymbol$0 = $EXPECT($L29, fail, 'AssignmentOpSymbol "**="');
4969
+ var AssignmentOpSymbol$1 = $EXPECT($L30, fail, 'AssignmentOpSymbol "*="');
4970
+ var AssignmentOpSymbol$2 = $EXPECT($L31, fail, 'AssignmentOpSymbol "/="');
4971
+ var AssignmentOpSymbol$3 = $EXPECT($L32, fail, 'AssignmentOpSymbol "%="');
4972
+ var AssignmentOpSymbol$4 = $EXPECT($L33, fail, 'AssignmentOpSymbol "+="');
4973
+ var AssignmentOpSymbol$5 = $EXPECT($L34, fail, 'AssignmentOpSymbol "-="');
4974
+ var AssignmentOpSymbol$6 = $EXPECT($L35, fail, 'AssignmentOpSymbol "<<="');
4975
+ var AssignmentOpSymbol$7 = $EXPECT($L36, fail, 'AssignmentOpSymbol ">>>="');
4976
+ var AssignmentOpSymbol$8 = $EXPECT($L37, fail, 'AssignmentOpSymbol ">>="');
4977
+ var AssignmentOpSymbol$9 = $EXPECT($L38, fail, 'AssignmentOpSymbol "&&="');
4978
+ var AssignmentOpSymbol$10 = $EXPECT($L39, fail, 'AssignmentOpSymbol "&="');
4979
+ var AssignmentOpSymbol$11 = $EXPECT($L40, fail, 'AssignmentOpSymbol "^="');
4980
+ var AssignmentOpSymbol$12 = $EXPECT($L41, fail, 'AssignmentOpSymbol "||="');
4981
+ var AssignmentOpSymbol$13 = $EXPECT($L42, fail, 'AssignmentOpSymbol "|="');
4982
+ var AssignmentOpSymbol$14 = $EXPECT($L43, fail, 'AssignmentOpSymbol "??="');
4983
+ var AssignmentOpSymbol$15 = $T($EXPECT($L44, fail, 'AssignmentOpSymbol "?="'), function(value) {
4894
4984
  return "??=";
4895
4985
  });
4896
- var AssignmentOpSymbol$16 = $EXPECT($L44, fail, 'AssignmentOpSymbol "="');
4986
+ var AssignmentOpSymbol$16 = $EXPECT($L24, fail, 'AssignmentOpSymbol "="');
4897
4987
  var AssignmentOpSymbol$17 = $T($S(CoffeeWordAssignmentOp), function(value) {
4898
4988
  return value[0];
4899
4989
  });
@@ -4971,66 +5061,82 @@ ${input.slice(result.pos)}
4971
5061
  var BinaryOpSymbol$6 = $EXPECT($L53, fail, 'BinaryOpSymbol "<="');
4972
5062
  var BinaryOpSymbol$7 = $EXPECT($L54, fail, 'BinaryOpSymbol ">="');
4973
5063
  var BinaryOpSymbol$8 = $EXPECT($L55, fail, 'BinaryOpSymbol "<<"');
4974
- var BinaryOpSymbol$9 = $EXPECT($L4, fail, 'BinaryOpSymbol "<"');
5064
+ var BinaryOpSymbol$9 = $EXPECT($L5, fail, 'BinaryOpSymbol "<"');
4975
5065
  var BinaryOpSymbol$10 = $EXPECT($L56, fail, 'BinaryOpSymbol ">>>"');
4976
5066
  var BinaryOpSymbol$11 = $EXPECT($L57, fail, 'BinaryOpSymbol ">>"');
4977
- var BinaryOpSymbol$12 = $EXPECT($L58, fail, 'BinaryOpSymbol ">"');
4978
- var BinaryOpSymbol$13 = $EXPECT($L59, fail, 'BinaryOpSymbol "!=="');
4979
- var BinaryOpSymbol$14 = $TV($EXPECT($L60, fail, 'BinaryOpSymbol "!="'), function($skip, $loc, $0, $1) {
5067
+ var BinaryOpSymbol$12 = $EXPECT($L25, fail, 'BinaryOpSymbol ">"');
5068
+ var BinaryOpSymbol$13 = $EXPECT($L58, fail, 'BinaryOpSymbol "!=="');
5069
+ var BinaryOpSymbol$14 = $TV($EXPECT($L59, fail, 'BinaryOpSymbol "!="'), function($skip, $loc, $0, $1) {
4980
5070
  if (module2.config.coffeeEq)
4981
5071
  return "!==";
4982
5072
  return $1;
4983
5073
  });
4984
- var BinaryOpSymbol$15 = $TS($S($EXPECT($L61, fail, 'BinaryOpSymbol "isnt"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5074
+ var BinaryOpSymbol$15 = $TS($S($EXPECT($L60, fail, 'BinaryOpSymbol "isnt"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4985
5075
  if (module2.config.coffeeIsnt)
4986
5076
  return "!==";
4987
5077
  return $skip;
4988
5078
  });
4989
- var BinaryOpSymbol$16 = $T($S($EXPECT($L62, fail, 'BinaryOpSymbol "is"'), NonIdContinue), function(value) {
5079
+ var BinaryOpSymbol$16 = $T($S($EXPECT($L61, fail, 'BinaryOpSymbol "is"'), NonIdContinue), function(value) {
4990
5080
  return "===";
4991
5081
  });
4992
- var BinaryOpSymbol$17 = $EXPECT($L63, fail, 'BinaryOpSymbol "==="');
4993
- var BinaryOpSymbol$18 = $TV($EXPECT($L64, fail, 'BinaryOpSymbol "=="'), function($skip, $loc, $0, $1) {
5082
+ var BinaryOpSymbol$17 = $EXPECT($L62, fail, 'BinaryOpSymbol "==="');
5083
+ var BinaryOpSymbol$18 = $TV($EXPECT($L63, fail, 'BinaryOpSymbol "=="'), function($skip, $loc, $0, $1) {
4994
5084
  if (module2.config.coffeeEq)
4995
5085
  return "===";
4996
5086
  return $1;
4997
5087
  });
4998
- var BinaryOpSymbol$19 = $T($S($EXPECT($L65, fail, 'BinaryOpSymbol "and"'), NonIdContinue), function(value) {
5088
+ var BinaryOpSymbol$19 = $T($S($EXPECT($L64, fail, 'BinaryOpSymbol "and"'), NonIdContinue), function(value) {
4999
5089
  return "&&";
5000
5090
  });
5001
- var BinaryOpSymbol$20 = $EXPECT($L66, fail, 'BinaryOpSymbol "&&"');
5002
- var BinaryOpSymbol$21 = $T($S(CoffeeOfEnabled, $EXPECT($L67, fail, 'BinaryOpSymbol "of"'), NonIdContinue), function(value) {
5091
+ var BinaryOpSymbol$20 = $EXPECT($L65, fail, 'BinaryOpSymbol "&&"');
5092
+ var BinaryOpSymbol$21 = $T($S(CoffeeOfEnabled, $EXPECT($L66, fail, 'BinaryOpSymbol "of"'), NonIdContinue), function(value) {
5003
5093
  return "in";
5004
5094
  });
5005
- var BinaryOpSymbol$22 = $T($S($EXPECT($L68, fail, 'BinaryOpSymbol "or"'), NonIdContinue), function(value) {
5095
+ var BinaryOpSymbol$22 = $T($S($EXPECT($L67, fail, 'BinaryOpSymbol "or"'), NonIdContinue), function(value) {
5006
5096
  return "||";
5007
5097
  });
5008
- var BinaryOpSymbol$23 = $EXPECT($L69, fail, 'BinaryOpSymbol "||"');
5009
- var BinaryOpSymbol$24 = $EXPECT($L70, fail, 'BinaryOpSymbol "??"');
5010
- var BinaryOpSymbol$25 = $T($S(CoffeeBinaryExistentialEnabled, $EXPECT($L71, fail, 'BinaryOpSymbol "?"')), function(value) {
5098
+ var BinaryOpSymbol$23 = $EXPECT($L68, fail, 'BinaryOpSymbol "||"');
5099
+ var BinaryOpSymbol$24 = $EXPECT($L69, fail, 'BinaryOpSymbol "??"');
5100
+ var BinaryOpSymbol$25 = $T($S(CoffeeBinaryExistentialEnabled, $EXPECT($L70, fail, 'BinaryOpSymbol "?"')), function(value) {
5011
5101
  return "??";
5012
5102
  });
5013
- var BinaryOpSymbol$26 = $TS($S($EXPECT($L72, fail, 'BinaryOpSymbol "instanceof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5103
+ var BinaryOpSymbol$26 = $TS($S($EXPECT($L71, fail, 'BinaryOpSymbol "instanceof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5014
5104
  return $1;
5015
5105
  });
5016
- var BinaryOpSymbol$27 = $TS($S(CoffeeOfEnabled, $EXPECT($L73, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
5106
+ var BinaryOpSymbol$27 = $TS($S(CoffeeNotEnabled, $EXPECT($L72, fail, 'BinaryOpSymbol "not"'), NonIdContinue, __, $EXPECT($L71, fail, 'BinaryOpSymbol "instanceof"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
5107
+ return {
5108
+ $loc,
5109
+ token: "instanceof",
5110
+ special: true
5111
+ };
5112
+ });
5113
+ var BinaryOpSymbol$28 = $TS($S(CoffeeNotEnabled, $EXPECT($L72, fail, 'BinaryOpSymbol "not"'), NonIdContinue, __, $EXPECT($L66, fail, 'BinaryOpSymbol "of"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
5114
+ return {
5115
+ $loc,
5116
+ token: "in",
5117
+ special: true
5118
+ };
5119
+ });
5120
+ var BinaryOpSymbol$29 = $TS($S(CoffeeOfEnabled, $EXPECT($L73, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
5017
5121
  return {
5018
5122
  ref: module2.getIndexOfRef(),
5019
- suffix: " >= 0"
5123
+ suffix: " >= 0",
5124
+ special: true
5020
5125
  };
5021
5126
  });
5022
- var BinaryOpSymbol$28 = $TS($S(CoffeeOfEnabled, $EXPECT($L74, fail, 'BinaryOpSymbol "not"'), NonIdContinue, __, $EXPECT($L73, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
5127
+ var BinaryOpSymbol$30 = $TS($S(CoffeeOfEnabled, $EXPECT($L72, fail, 'BinaryOpSymbol "not"'), NonIdContinue, __, $EXPECT($L73, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
5023
5128
  return {
5024
5129
  ref: module2.getIndexOfRef(),
5025
- suffix: " < 0"
5130
+ suffix: " < 0",
5131
+ special: true
5026
5132
  };
5027
5133
  });
5028
- var BinaryOpSymbol$29 = $TS($S($EXPECT($L73, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5134
+ var BinaryOpSymbol$31 = $TS($S($EXPECT($L73, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5029
5135
  return $1;
5030
5136
  });
5031
- var BinaryOpSymbol$30 = $EXPECT($L75, fail, 'BinaryOpSymbol "&"');
5032
- var BinaryOpSymbol$31 = $EXPECT($L76, fail, 'BinaryOpSymbol "^"');
5033
- var BinaryOpSymbol$32 = $EXPECT($L77, fail, 'BinaryOpSymbol "|"');
5137
+ var BinaryOpSymbol$32 = $EXPECT($L74, fail, 'BinaryOpSymbol "&"');
5138
+ var BinaryOpSymbol$33 = $EXPECT($L75, fail, 'BinaryOpSymbol "^"');
5139
+ var BinaryOpSymbol$34 = $EXPECT($L76, fail, 'BinaryOpSymbol "|"');
5034
5140
  function BinaryOpSymbol(state) {
5035
5141
  if (state.events) {
5036
5142
  const result = state.events.enter?.("BinaryOpSymbol", state);
@@ -5038,12 +5144,12 @@ ${input.slice(result.pos)}
5038
5144
  return result.cache;
5039
5145
  }
5040
5146
  if (state.tokenize) {
5041
- const result = $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) || BinaryOpSymbol$31(state) || BinaryOpSymbol$32(state));
5147
+ const result = $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) || BinaryOpSymbol$31(state) || BinaryOpSymbol$32(state) || BinaryOpSymbol$33(state) || BinaryOpSymbol$34(state));
5042
5148
  if (state.events)
5043
5149
  state.events.exit?.("BinaryOpSymbol", state, result);
5044
5150
  return result;
5045
5151
  } else {
5046
- const result = 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) || BinaryOpSymbol$31(state) || BinaryOpSymbol$32(state);
5152
+ const result = 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) || BinaryOpSymbol$31(state) || BinaryOpSymbol$32(state) || BinaryOpSymbol$33(state) || BinaryOpSymbol$34(state);
5047
5153
  if (state.events)
5048
5154
  state.events.exit?.("BinaryOpSymbol", state, result);
5049
5155
  return result;
@@ -5169,7 +5275,7 @@ ${input.slice(result.pos)}
5169
5275
  return result;
5170
5276
  }
5171
5277
  }
5172
- var EmptyStatement$0 = $T($S($Q(TrailingComment), $Y($EXPECT($L78, fail, 'EmptyStatement ";"'))), function(value) {
5278
+ var EmptyStatement$0 = $T($S($Q(TrailingComment), $Y($EXPECT($L77, fail, 'EmptyStatement ";"'))), function(value) {
5173
5279
  return { "type": "EmptyStatement", "children": value[0] };
5174
5280
  });
5175
5281
  function EmptyStatement(state) {
@@ -5190,7 +5296,7 @@ ${input.slice(result.pos)}
5190
5296
  return result;
5191
5297
  }
5192
5298
  }
5193
- var BlockStatement$0 = $T($S(ExplicitBlock, $N($S(__, $EXPECT($L44, fail, 'BlockStatement "="')))), function(value) {
5299
+ var BlockStatement$0 = $T($S(ExplicitBlock, $N($S(__, $EXPECT($L24, fail, 'BlockStatement "="')))), function(value) {
5194
5300
  return value[0];
5195
5301
  });
5196
5302
  function BlockStatement(state) {
@@ -5488,7 +5594,16 @@ ${input.slice(result.pos)}
5488
5594
  return result;
5489
5595
  }
5490
5596
  }
5491
- var NestedBlockExpression$0 = $S(Nested, ExtendedExpression, ExpressionDelimiter);
5597
+ var NestedBlockExpression$0 = $TS($S(Nested, ExtendedExpression, $E($S($Q(TrailingComment), PostfixStatement)), ExpressionDelimiter), function($skip, $loc, $0, $1, $2, $3, $4) {
5598
+ var ws = $1;
5599
+ var exp = $2;
5600
+ var post = $3;
5601
+ var d = $4;
5602
+ if (post) {
5603
+ return [ws, module2.attachPostfixStatementAsExpression(exp, post), d];
5604
+ }
5605
+ return [ws, exp, d];
5606
+ });
5492
5607
  function NestedBlockExpression(state) {
5493
5608
  if (state.events) {
5494
5609
  const result = state.events.enter?.("NestedBlockExpression", state);
@@ -5829,11 +5944,13 @@ ${input.slice(result.pos)}
5829
5944
  } else if (kind.token === "in") {
5830
5945
  const counterRef = {
5831
5946
  type: "Ref",
5832
- base: "i"
5947
+ base: "i",
5948
+ id: "i"
5833
5949
  };
5834
5950
  const lenRef = {
5835
5951
  type: "Ref",
5836
- base: "len"
5952
+ base: "len",
5953
+ id: "len"
5837
5954
  };
5838
5955
  let expRef;
5839
5956
  switch (exp.type) {
@@ -5851,7 +5968,8 @@ ${input.slice(result.pos)}
5851
5968
  } else {
5852
5969
  stepRef = {
5853
5970
  type: "Ref",
5854
- base: "step"
5971
+ base: "step",
5972
+ id: "step"
5855
5973
  };
5856
5974
  }
5857
5975
  }
@@ -5863,7 +5981,8 @@ ${input.slice(result.pos)}
5863
5981
  } else {
5864
5982
  startRef = {
5865
5983
  type: "Ref",
5866
- base: "ref"
5984
+ base: "ref",
5985
+ id: "ref"
5867
5986
  };
5868
5987
  }
5869
5988
  if (end.type === "Literal") {
@@ -5873,7 +5992,8 @@ ${input.slice(result.pos)}
5873
5992
  } else {
5874
5993
  endRef = {
5875
5994
  type: "Ref",
5876
- base: "ref"
5995
+ base: "ref",
5996
+ id: "ref"
5877
5997
  };
5878
5998
  }
5879
5999
  const startRefDec = startRef !== start ? [startRef, " = ", start, ", "] : [];
@@ -5891,45 +6011,65 @@ ${input.slice(result.pos)}
5891
6011
  names: varRef2.names
5892
6012
  }]);
5893
6013
  const counterPart = inclusive ? [counterRef, " <= ", endRef, " : ", counterRef, " >= ", endRef] : [counterRef, " < ", endRef, " : ", counterRef, " > ", endRef];
5894
- const condition = stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : ["asc ? ", ...counterPart];
5895
- const increment = stepRef ? [varRef2, " = ", counterRef, " += ", stepRef] : [varRef2, " = asc ? ++", counterRef, " : --", counterRef];
6014
+ const condition2 = stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : ["asc ? ", ...counterPart];
6015
+ const increment2 = stepRef ? [varRef2, " = ", counterRef, " += ", stepRef] : [varRef2, " = asc ? ++", counterRef, " : --", counterRef];
5896
6016
  return {
5897
6017
  declaration,
5898
- children: [$1, open, declaration, "; ", ...condition, "; ", ...increment, close],
6018
+ children: [$1, open, declaration, "; ", ...condition2, "; ", ...increment2, close],
5899
6019
  blockPrefix
5900
6020
  };
5901
6021
  }
5902
6022
  default:
5903
6023
  expRef = {
5904
6024
  type: "Ref",
5905
- base: "ref"
6025
+ base: "ref",
6026
+ id: "ref"
5906
6027
  };
5907
6028
  }
5908
- if (step) {
5909
- throw new Error("by clause not yet implement in non-range for in loops");
5910
- }
5911
6029
  const varRef = declaration;
5912
- const expRefDec = expRef !== exp ? [expRef, " = ", module2.insertTrimmingSpace(exp, ""), ", "] : [];
5913
- declaration = {
5914
- type: "Declaration",
5915
- children: ["let ", ...expRefDec, counterRef, " = 0, ", lenRef, " = ", expRef, ".length"],
5916
- names: []
5917
- };
5918
- let indexAssignment;
5919
- let assignmentNames = [...varRef.names];
6030
+ let increment = "++", indexAssignment, assignmentNames = [...varRef.names];
5920
6031
  if (index) {
5921
6032
  index = module2.insertTrimmingSpace(index, "");
5922
6033
  indexAssignment = [index, "="];
5923
6034
  assignmentNames.push(...index.names);
5924
6035
  }
6036
+ const expRefDec = expRef !== exp ? [expRef, " = ", module2.insertTrimmingSpace(exp, ""), ", "] : [];
5925
6037
  blockPrefix.push([indent, {
5926
6038
  type: "AssignmentExpression",
5927
6039
  children: [varRef, " = ", expRef, "[", indexAssignment, counterRef, "]\n"],
5928
6040
  names: assignmentNames
5929
6041
  }]);
6042
+ declaration = {
6043
+ type: "Declaration",
6044
+ children: ["let ", ...expRefDec, counterRef, " = 0, ", lenRef, " = ", expRef, ".length"],
6045
+ names: []
6046
+ };
6047
+ let condition = [counterRef, " < ", lenRef, "; "];
6048
+ if (step) {
6049
+ let [stepWs, , stepExp] = step;
6050
+ stepWs = module2.insertTrimmingSpace(stepWs, "");
6051
+ if (stepExp.type === "Literal") {
6052
+ increment = [" +=", ...stepWs, stepExp];
6053
+ if (stepExp.raw[0] === "-") {
6054
+ declaration = {
6055
+ type: "Declaration",
6056
+ children: ["let ", ...expRefDec, counterRef, " = ", expRef, ".length - 1"],
6057
+ names: []
6058
+ };
6059
+ condition = [counterRef, " >= 0; "];
6060
+ }
6061
+ } else {
6062
+ throw new Error("TODO: Support non-literal step in CoffeeScript for loops");
6063
+ }
6064
+ return {
6065
+ declaration,
6066
+ children: [$1, open, declaration, "; ", ...condition, counterRef, increment, close],
6067
+ blockPrefix
6068
+ };
6069
+ }
5930
6070
  return {
5931
6071
  declaration,
5932
- children: [$1, open, declaration, "; ", counterRef, " < ", lenRef, "; ", counterRef, "++", close],
6072
+ children: [$1, open, declaration, "; ", ...condition, counterRef, increment, close],
5933
6073
  blockPrefix
5934
6074
  };
5935
6075
  }
@@ -5983,7 +6123,7 @@ ${input.slice(result.pos)}
5983
6123
  return result;
5984
6124
  }
5985
6125
  }
5986
- var CoffeeForDeclaration$0 = $TS($S($E($S(__, $EXPECT($L79, fail, 'CoffeeForDeclaration "own"'))), ForBinding), function($skip, $loc, $0, $1, $2) {
6126
+ var CoffeeForDeclaration$0 = $TS($S($E($S(__, $EXPECT($L78, fail, 'CoffeeForDeclaration "own"'))), ForBinding), function($skip, $loc, $0, $1, $2) {
5987
6127
  var own = $1;
5988
6128
  var binding = $2;
5989
6129
  if (own) {
@@ -6024,14 +6164,14 @@ ${input.slice(result.pos)}
6024
6164
  children: $0
6025
6165
  };
6026
6166
  });
6027
- 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) {
6167
+ var ForStatementParameters$2 = $TS($S($E($S(Await, __)), OpenParen, __, ForInOfDeclaration, __, $C(In, Of), ExpressionWithIndentedApplicationSuppressed, __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
6028
6168
  var declaration = $4;
6029
6169
  return {
6030
6170
  declaration,
6031
6171
  children: $0
6032
6172
  };
6033
6173
  });
6034
- 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) {
6174
+ var ForStatementParameters$3 = $TS($S($E($S(Await, __)), InsertOpenParen, ForInOfDeclaration, __, $C(In, Of), ExpressionWithIndentedApplicationSuppressed, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
6035
6175
  var declaration = $3;
6036
6176
  return {
6037
6177
  declaration,
@@ -6376,7 +6516,7 @@ ${input.slice(result.pos)}
6376
6516
  return result;
6377
6517
  }
6378
6518
  }
6379
- var CaseExpressionList$0 = $TS($S($S($Q(_), ExtendedExpression, ImpliedColon), $Q($S(__, Comma, ExtendedExpression, ImpliedColon))), function($skip, $loc, $0, $1, $2) {
6519
+ var CaseExpressionList$0 = $TS($S($S($Q(_), ExpressionWithIndentedApplicationSuppressed, ImpliedColon), $Q($S(__, Comma, ExpressionWithIndentedApplicationSuppressed, ImpliedColon))), function($skip, $loc, $0, $1, $2) {
6380
6520
  const result = $2.map(([ws, _comma, exp, col]) => {
6381
6521
  exp = module2.insertTrimmingSpace(exp, "");
6382
6522
  if (ws.length)
@@ -6404,7 +6544,7 @@ ${input.slice(result.pos)}
6404
6544
  return result;
6405
6545
  }
6406
6546
  }
6407
- var NoExpressions$0 = $T($EXPECT($L14, fail, 'NoExpressions ""'), function(value) {
6547
+ var NoExpressions$0 = $T($EXPECT($L0, fail, 'NoExpressions ""'), function(value) {
6408
6548
  return [];
6409
6549
  });
6410
6550
  function NoExpressions(state) {
@@ -6426,7 +6566,7 @@ ${input.slice(result.pos)}
6426
6566
  }
6427
6567
  }
6428
6568
  var ImpliedColon$0 = $S(__, Colon);
6429
- var ImpliedColon$1 = $TV($EXPECT($L14, fail, 'ImpliedColon ""'), function($skip, $loc, $0, $1) {
6569
+ var ImpliedColon$1 = $TV($EXPECT($L0, fail, 'ImpliedColon ""'), function($skip, $loc, $0, $1) {
6430
6570
  return { $loc, token: ":" };
6431
6571
  });
6432
6572
  function ImpliedColon(state) {
@@ -6520,7 +6660,7 @@ ${input.slice(result.pos)}
6520
6660
  return result;
6521
6661
  }
6522
6662
  }
6523
- var Finally$0 = $S(__, $EXPECT($L80, fail, 'Finally "finally"'), BracedBlock);
6663
+ var Finally$0 = $S(__, $EXPECT($L79, fail, 'Finally "finally"'), BracedBlock);
6524
6664
  function Finally(state) {
6525
6665
  if (state.events) {
6526
6666
  const result = state.events.enter?.("Finally", state);
@@ -6559,10 +6699,10 @@ ${input.slice(result.pos)}
6559
6699
  return result;
6560
6700
  }
6561
6701
  }
6562
- var Condition$0 = $T($S(ParenthesizedExpression, $N($S($Q(TrailingComment), $C(BinaryOp, AssignmentOp)))), function(value) {
6702
+ var Condition$0 = $T($S(ParenthesizedExpression, $N($S($Q(TrailingComment), $C(BinaryOp, AssignmentOp, Dot, QuestionMark)))), function(value) {
6563
6703
  return value[0];
6564
6704
  });
6565
- var Condition$1 = $TS($S(InsertOpenParen, ExtendedExpression, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3) {
6705
+ var Condition$1 = $TS($S(InsertOpenParen, ExpressionWithIndentedApplicationSuppressed, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3) {
6566
6706
  var open = $1;
6567
6707
  var exp = $2;
6568
6708
  var close = $3;
@@ -6591,6 +6731,52 @@ ${input.slice(result.pos)}
6591
6731
  return result;
6592
6732
  }
6593
6733
  }
6734
+ var ExpressionWithIndentedApplicationSuppressed$0 = $TS($S(SuppressIndentedApplication, $E(ExtendedExpression)), function($skip, $loc, $0, $1, $2) {
6735
+ var exp = $2;
6736
+ module2.suppressIndentedApplication = false;
6737
+ if (exp)
6738
+ return exp;
6739
+ return $skip;
6740
+ });
6741
+ function ExpressionWithIndentedApplicationSuppressed(state) {
6742
+ if (state.events) {
6743
+ const result = state.events.enter?.("ExpressionWithIndentedApplicationSuppressed", state);
6744
+ if (result)
6745
+ return result.cache;
6746
+ }
6747
+ if (state.tokenize) {
6748
+ const result = $TOKEN("ExpressionWithIndentedApplicationSuppressed", state, ExpressionWithIndentedApplicationSuppressed$0(state));
6749
+ if (state.events)
6750
+ state.events.exit?.("ExpressionWithIndentedApplicationSuppressed", state, result);
6751
+ return result;
6752
+ } else {
6753
+ const result = ExpressionWithIndentedApplicationSuppressed$0(state);
6754
+ if (state.events)
6755
+ state.events.exit?.("ExpressionWithIndentedApplicationSuppressed", state, result);
6756
+ return result;
6757
+ }
6758
+ }
6759
+ var SuppressIndentedApplication$0 = $TV($EXPECT($L0, fail, 'SuppressIndentedApplication ""'), function($skip, $loc, $0, $1) {
6760
+ module2.suppressIndentedApplication = true;
6761
+ });
6762
+ function SuppressIndentedApplication(state) {
6763
+ if (state.events) {
6764
+ const result = state.events.enter?.("SuppressIndentedApplication", state);
6765
+ if (result)
6766
+ return result.cache;
6767
+ }
6768
+ if (state.tokenize) {
6769
+ const result = $TOKEN("SuppressIndentedApplication", state, SuppressIndentedApplication$0(state));
6770
+ if (state.events)
6771
+ state.events.exit?.("SuppressIndentedApplication", state, result);
6772
+ return result;
6773
+ } else {
6774
+ const result = SuppressIndentedApplication$0(state);
6775
+ if (state.events)
6776
+ state.events.exit?.("SuppressIndentedApplication", state, result);
6777
+ return result;
6778
+ }
6779
+ }
6594
6780
  var ExpressionStatement$0 = Expression;
6595
6781
  function ExpressionStatement(state) {
6596
6782
  if (state.events) {
@@ -6610,13 +6796,13 @@ ${input.slice(result.pos)}
6610
6796
  return result;
6611
6797
  }
6612
6798
  }
6613
- var KeywordStatement$0 = $T($S($EXPECT($L81, fail, 'KeywordStatement "break"'), NonIdContinue), function(value) {
6799
+ var KeywordStatement$0 = $T($S($EXPECT($L80, fail, 'KeywordStatement "break"'), NonIdContinue), function(value) {
6614
6800
  return { "type": "BreakStatement", "children": value };
6615
6801
  });
6616
- var KeywordStatement$1 = $T($S($EXPECT($L82, fail, 'KeywordStatement "continue"'), NonIdContinue), function(value) {
6802
+ var KeywordStatement$1 = $T($S($EXPECT($L81, fail, 'KeywordStatement "continue"'), NonIdContinue), function(value) {
6617
6803
  return { "type": "ContinueStatement", "children": value };
6618
6804
  });
6619
- var KeywordStatement$2 = $T($S($EXPECT($L83, fail, 'KeywordStatement "debugger"'), NonIdContinue), function(value) {
6805
+ var KeywordStatement$2 = $T($S($EXPECT($L82, fail, 'KeywordStatement "debugger"'), NonIdContinue), function(value) {
6620
6806
  return { "type": "DebuggerStatement", "children": value };
6621
6807
  });
6622
6808
  var KeywordStatement$3 = $T($S(Return, $E(MaybeNestedExpression)), function(value) {
@@ -6643,7 +6829,7 @@ ${input.slice(result.pos)}
6643
6829
  return result;
6644
6830
  }
6645
6831
  }
6646
- var DebuggerExpression$0 = $TS($S($EXPECT($L83, fail, 'DebuggerExpression "debugger"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
6832
+ var DebuggerExpression$0 = $TS($S($EXPECT($L82, fail, 'DebuggerExpression "debugger"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
6647
6833
  return {
6648
6834
  type: "DebuggerExpression",
6649
6835
  children: ["(()=>{", $1, "})()"]
@@ -6691,7 +6877,7 @@ ${input.slice(result.pos)}
6691
6877
  return result;
6692
6878
  }
6693
6879
  }
6694
- var MaybeNestedExpression$0 = $TS($S($N(EOS), AssignmentExpression), function($skip, $loc, $0, $1, $2) {
6880
+ var MaybeNestedExpression$0 = $TS($S($N(EOS), ExtendedExpression), function($skip, $loc, $0, $1, $2) {
6695
6881
  return $2;
6696
6882
  });
6697
6883
  var MaybeNestedExpression$1 = $T($S($Y(EOS), ObjectLiteral), function(value) {
@@ -6715,7 +6901,7 @@ ${input.slice(result.pos)}
6715
6901
  return result;
6716
6902
  }
6717
6903
  }
6718
- var ImportDeclaration$0 = $T($S($EXPECT($L84, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
6904
+ var ImportDeclaration$0 = $T($S($EXPECT($L83, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
6719
6905
  return { "ts": true, "children": value };
6720
6906
  });
6721
6907
  var ImportDeclaration$1 = $S(Import, __, ImportClause, __, FromClause);
@@ -6749,7 +6935,7 @@ ${input.slice(result.pos)}
6749
6935
  return result;
6750
6936
  }
6751
6937
  }
6752
- var ImpliedImport$0 = $TV($EXPECT($L14, fail, 'ImpliedImport ""'), function($skip, $loc, $0, $1) {
6938
+ var ImpliedImport$0 = $TV($EXPECT($L0, fail, 'ImpliedImport ""'), function($skip, $loc, $0, $1) {
6753
6939
  return { $loc, token: "import " };
6754
6940
  });
6755
6941
  function ImpliedImport(state) {
@@ -7015,9 +7201,9 @@ ${input.slice(result.pos)}
7015
7201
  return result;
7016
7202
  }
7017
7203
  }
7018
- var ExportDeclaration$0 = $S(Export, __, $EXPECT($L85, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, ExtendedExpression));
7204
+ var ExportDeclaration$0 = $S(Export, __, $EXPECT($L84, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, ExtendedExpression));
7019
7205
  var ExportDeclaration$1 = $S(Export, __, ExportFromClause, __, FromClause);
7020
- var ExportDeclaration$2 = $S(Export, __, $C(NamedExports, VariableStatement, Declaration));
7206
+ var ExportDeclaration$2 = $S(Export, __, $C(Declaration, NamedExports, VariableStatement));
7021
7207
  function ExportDeclaration(state) {
7022
7208
  if (state.events) {
7023
7209
  const result = state.events.enter?.("ExportDeclaration", state);
@@ -7057,6 +7243,11 @@ ${input.slice(result.pos)}
7057
7243
  }
7058
7244
  }
7059
7245
  var NamedExports$0 = $S(OpenBrace, $Q(ExportSpecifier), $E($S(__, Comma)), __, CloseBrace);
7246
+ var NamedExports$1 = $TS($S(InsertInlineOpenBrace, ImplicitExportSpecifier, $Q($S(_, ImplicitExportSpecifier)), InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
7247
+ var open = $1;
7248
+ var close = $4;
7249
+ return [open, $2, ...$3, close];
7250
+ });
7060
7251
  function NamedExports(state) {
7061
7252
  if (state.events) {
7062
7253
  const result = state.events.enter?.("NamedExports", state);
@@ -7064,12 +7255,12 @@ ${input.slice(result.pos)}
7064
7255
  return result.cache;
7065
7256
  }
7066
7257
  if (state.tokenize) {
7067
- const result = $TOKEN("NamedExports", state, NamedExports$0(state));
7258
+ const result = $TOKEN("NamedExports", state, NamedExports$0(state) || NamedExports$1(state));
7068
7259
  if (state.events)
7069
7260
  state.events.exit?.("NamedExports", state, result);
7070
7261
  return result;
7071
7262
  } else {
7072
- const result = NamedExports$0(state);
7263
+ const result = NamedExports$0(state) || NamedExports$1(state);
7073
7264
  if (state.events)
7074
7265
  state.events.exit?.("NamedExports", state, result);
7075
7266
  return result;
@@ -7094,6 +7285,25 @@ ${input.slice(result.pos)}
7094
7285
  return result;
7095
7286
  }
7096
7287
  }
7288
+ var ImplicitExportSpecifier$0 = $S($N($EXPECT($L84, fail, 'ImplicitExportSpecifier "default"')), ModuleExportName, $E($S(__, As, __, ModuleExportName)), ImplicitInlineObjectPropertyDelimiter);
7289
+ function ImplicitExportSpecifier(state) {
7290
+ if (state.events) {
7291
+ const result = state.events.enter?.("ImplicitExportSpecifier", state);
7292
+ if (result)
7293
+ return result.cache;
7294
+ }
7295
+ if (state.tokenize) {
7296
+ const result = $TOKEN("ImplicitExportSpecifier", state, ImplicitExportSpecifier$0(state));
7297
+ if (state.events)
7298
+ state.events.exit?.("ImplicitExportSpecifier", state, result);
7299
+ return result;
7300
+ } else {
7301
+ const result = ImplicitExportSpecifier$0(state);
7302
+ if (state.events)
7303
+ state.events.exit?.("ImplicitExportSpecifier", state, result);
7304
+ return result;
7305
+ }
7306
+ }
7097
7307
  var Declaration$0 = HoistableDeclaration;
7098
7308
  var Declaration$1 = ClassDeclaration;
7099
7309
  var Declaration$2 = LexicalDeclaration;
@@ -7147,6 +7357,8 @@ ${input.slice(result.pos)}
7147
7357
  var LexicalDeclaration$1 = $TS($S(InsertConst, $C(BindingPattern, BindingIdentifier), $E(TypeSuffix), __, ConstAssignment, ExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
7148
7358
  var c = $1;
7149
7359
  var id = $2;
7360
+ var suffix = $3;
7361
+ var ws = $4;
7150
7362
  var ca = $5;
7151
7363
  var e = $6;
7152
7364
  c = {
@@ -7176,10 +7388,14 @@ ${input.slice(result.pos)}
7176
7388
  names: id.names
7177
7389
  };
7178
7390
  }
7391
+ let [splices, thisAssignments] = module2.gatherBindingCode(id);
7392
+ splices = splices.map((s) => [", ", s]);
7393
+ thisAssignments = thisAssignments.map((a) => [";", a]);
7394
+ const children = [c, id, suffix, ...ws, ca, e, ...splices, ...thisAssignments];
7179
7395
  return {
7180
7396
  type: "Declaration",
7181
7397
  names: id.names,
7182
- children: $0
7398
+ children
7183
7399
  };
7184
7400
  });
7185
7401
  function LexicalDeclaration(state) {
@@ -7200,7 +7416,7 @@ ${input.slice(result.pos)}
7200
7416
  return result;
7201
7417
  }
7202
7418
  }
7203
- var ConstAssignment$0 = $TV($EXPECT($L86, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
7419
+ var ConstAssignment$0 = $TV($EXPECT($L85, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
7204
7420
  return { $loc, token: "=" };
7205
7421
  });
7206
7422
  function ConstAssignment(state) {
@@ -8104,7 +8320,8 @@ ${input.slice(result.pos)}
8104
8320
  var ReservedWord$0 = $S(CoffeeBooleansEnabled, $R$0($EXPECT($R30, fail, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")));
8105
8321
  var ReservedWord$1 = $S(CoffeeIsntEnabled, $R$0($EXPECT($R31, fail, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")));
8106
8322
  var ReservedWord$2 = $S(CoffeeForLoopsEnabled, $R$0($EXPECT($R32, fail, "ReservedWord /(?:by)(?!\\p{ID_Continue})/")));
8107
- var ReservedWord$3 = $R$0($EXPECT($R33, 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|let|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
8323
+ var ReservedWord$3 = $S(CoffeeOfEnabled, $R$0($EXPECT($R33, fail, "ReservedWord /(?:of)(?!\\p{ID_Continue})/")));
8324
+ var ReservedWord$4 = $R$0($EXPECT($R34, 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|let|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
8108
8325
  function ReservedWord(state) {
8109
8326
  if (state.events) {
8110
8327
  const result = state.events.enter?.("ReservedWord", state);
@@ -8112,12 +8329,12 @@ ${input.slice(result.pos)}
8112
8329
  return result.cache;
8113
8330
  }
8114
8331
  if (state.tokenize) {
8115
- const result = $TOKEN("ReservedWord", state, ReservedWord$0(state) || ReservedWord$1(state) || ReservedWord$2(state) || ReservedWord$3(state));
8332
+ const result = $TOKEN("ReservedWord", state, ReservedWord$0(state) || ReservedWord$1(state) || ReservedWord$2(state) || ReservedWord$3(state) || ReservedWord$4(state));
8116
8333
  if (state.events)
8117
8334
  state.events.exit?.("ReservedWord", state, result);
8118
8335
  return result;
8119
8336
  } else {
8120
- const result = ReservedWord$0(state) || ReservedWord$1(state) || ReservedWord$2(state) || ReservedWord$3(state);
8337
+ const result = ReservedWord$0(state) || ReservedWord$1(state) || ReservedWord$2(state) || ReservedWord$3(state) || ReservedWord$4(state);
8121
8338
  if (state.events)
8122
8339
  state.events.exit?.("ReservedWord", state, result);
8123
8340
  return result;
@@ -8163,7 +8380,7 @@ ${input.slice(result.pos)}
8163
8380
  return result;
8164
8381
  }
8165
8382
  }
8166
- var JSSingleLineComment$0 = $TR($EXPECT($R34, fail, "JSSingleLineComment /\\/\\/(?!\\/)[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
8383
+ var JSSingleLineComment$0 = $TR($EXPECT($R35, fail, "JSSingleLineComment /\\/\\/(?!\\/)[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
8167
8384
  return { $loc, token: $0 };
8168
8385
  });
8169
8386
  function JSSingleLineComment(state) {
@@ -8204,7 +8421,7 @@ ${input.slice(result.pos)}
8204
8421
  return result;
8205
8422
  }
8206
8423
  }
8207
- var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L87, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L88, fail, 'JSMultiLineComment "*/"')), $EXPECT($R35, fail, "JSMultiLineComment /./"))), $EXPECT($L88, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
8424
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L86, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L87, fail, 'JSMultiLineComment "*/"')), $EXPECT($R36, fail, "JSMultiLineComment /./"))), $EXPECT($L87, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
8208
8425
  return { $loc, token: $1 };
8209
8426
  });
8210
8427
  function JSMultiLineComment(state) {
@@ -8225,7 +8442,7 @@ ${input.slice(result.pos)}
8225
8442
  return result;
8226
8443
  }
8227
8444
  }
8228
- var CoffeeSingleLineComment$0 = $TR($EXPECT($R36, fail, "CoffeeSingleLineComment /#(?!##)([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
8445
+ var CoffeeSingleLineComment$0 = $TR($EXPECT($R37, fail, "CoffeeSingleLineComment /#(?!##(?!#))([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
8229
8446
  return { $loc, token: `//${$1}` };
8230
8447
  });
8231
8448
  function CoffeeSingleLineComment(state) {
@@ -8246,7 +8463,7 @@ ${input.slice(result.pos)}
8246
8463
  return result;
8247
8464
  }
8248
8465
  }
8249
- var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L89, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L89, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L88, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R35, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L89, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
8466
+ var CoffeeMultiLineComment$0 = $TS($S(CoffeeHereCommentStart, $TEXT($Q($S($N($C(CoffeeHereCommentStart, $EXPECT($L87, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R36, fail, "CoffeeMultiLineComment /./")))), CoffeeHereCommentStart), function($skip, $loc, $0, $1, $2, $3) {
8250
8467
  return { $loc, token: `/*${$2}*/` };
8251
8468
  });
8252
8469
  function CoffeeMultiLineComment(state) {
@@ -8267,7 +8484,26 @@ ${input.slice(result.pos)}
8267
8484
  return result;
8268
8485
  }
8269
8486
  }
8270
- var InlineComment$0 = $TV($TEXT($S($EXPECT($L87, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L88, fail, 'InlineComment "*/"')), $EXPECT($R37, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L88, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
8487
+ var CoffeeHereCommentStart$0 = $R$0($EXPECT($R38, fail, "CoffeeHereCommentStart /###(?!#)/"));
8488
+ function CoffeeHereCommentStart(state) {
8489
+ if (state.events) {
8490
+ const result = state.events.enter?.("CoffeeHereCommentStart", state);
8491
+ if (result)
8492
+ return result.cache;
8493
+ }
8494
+ if (state.tokenize) {
8495
+ const result = $TOKEN("CoffeeHereCommentStart", state, CoffeeHereCommentStart$0(state));
8496
+ if (state.events)
8497
+ state.events.exit?.("CoffeeHereCommentStart", state, result);
8498
+ return result;
8499
+ } else {
8500
+ const result = CoffeeHereCommentStart$0(state);
8501
+ if (state.events)
8502
+ state.events.exit?.("CoffeeHereCommentStart", state, result);
8503
+ return result;
8504
+ }
8505
+ }
8506
+ var InlineComment$0 = $TV($TEXT($S($EXPECT($L86, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L87, fail, 'InlineComment "*/"')), $EXPECT($R39, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L87, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
8271
8507
  return { $loc, token: $1 };
8272
8508
  });
8273
8509
  function InlineComment(state) {
@@ -8347,10 +8583,10 @@ ${input.slice(result.pos)}
8347
8583
  return result;
8348
8584
  }
8349
8585
  }
8350
- var NonNewlineWhitespace$0 = $TR($EXPECT($R38, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
8586
+ var NonNewlineWhitespace$0 = $TR($EXPECT($R40, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
8351
8587
  return { $loc, token: $0 };
8352
8588
  });
8353
- var NonNewlineWhitespace$1 = $T($S(CoffeeLineContinuationEnabled, $EXPECT($L90, fail, 'NonNewlineWhitespace "\\\\\\\\"'), EOL), function(value) {
8589
+ var NonNewlineWhitespace$1 = $T($S(CoffeeLineContinuationEnabled, $EXPECT($L88, fail, 'NonNewlineWhitespace "\\\\\\\\"'), EOL), function(value) {
8354
8590
  return "";
8355
8591
  });
8356
8592
  function NonNewlineWhitespace(state) {
@@ -8456,7 +8692,7 @@ ${input.slice(result.pos)}
8456
8692
  return result;
8457
8693
  }
8458
8694
  }
8459
- var NonIdContinue$0 = $R$0($EXPECT($R39, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
8695
+ var NonIdContinue$0 = $R$0($EXPECT($R41, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
8460
8696
  function NonIdContinue(state) {
8461
8697
  if (state.events) {
8462
8698
  const result = state.events.enter?.("NonIdContinue", state);
@@ -8475,7 +8711,7 @@ ${input.slice(result.pos)}
8475
8711
  return result;
8476
8712
  }
8477
8713
  }
8478
- var Loc$0 = $TV($EXPECT($L14, fail, 'Loc ""'), function($skip, $loc, $0, $1) {
8714
+ var Loc$0 = $TV($EXPECT($L0, fail, 'Loc ""'), function($skip, $loc, $0, $1) {
8479
8715
  return { $loc, token: "" };
8480
8716
  });
8481
8717
  function Loc(state) {
@@ -8496,7 +8732,7 @@ ${input.slice(result.pos)}
8496
8732
  return result;
8497
8733
  }
8498
8734
  }
8499
- var Ampersand$0 = $TV($EXPECT($L75, fail, 'Ampersand "&"'), function($skip, $loc, $0, $1) {
8735
+ var Ampersand$0 = $TV($EXPECT($L74, fail, 'Ampersand "&"'), function($skip, $loc, $0, $1) {
8500
8736
  return { $loc, token: $1 };
8501
8737
  });
8502
8738
  function Ampersand(state) {
@@ -8517,7 +8753,7 @@ ${input.slice(result.pos)}
8517
8753
  return result;
8518
8754
  }
8519
8755
  }
8520
- var As$0 = $TS($S($EXPECT($L91, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8756
+ var As$0 = $TS($S($EXPECT($L89, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8521
8757
  return { $loc, token: $1 };
8522
8758
  });
8523
8759
  function As(state) {
@@ -8538,7 +8774,7 @@ ${input.slice(result.pos)}
8538
8774
  return result;
8539
8775
  }
8540
8776
  }
8541
- var At$0 = $TV($EXPECT($L92, fail, 'At "@"'), function($skip, $loc, $0, $1) {
8777
+ var At$0 = $TV($EXPECT($L90, fail, 'At "@"'), function($skip, $loc, $0, $1) {
8542
8778
  return { $loc, token: $1 };
8543
8779
  });
8544
8780
  function At(state) {
@@ -8559,7 +8795,7 @@ ${input.slice(result.pos)}
8559
8795
  return result;
8560
8796
  }
8561
8797
  }
8562
- var Async$0 = $TV($EXPECT($L93, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
8798
+ var Async$0 = $TV($EXPECT($L91, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
8563
8799
  return { $loc, token: $1 };
8564
8800
  });
8565
8801
  function Async(state) {
@@ -8580,7 +8816,7 @@ ${input.slice(result.pos)}
8580
8816
  return result;
8581
8817
  }
8582
8818
  }
8583
- var Await$0 = $TS($S($EXPECT($L94, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8819
+ var Await$0 = $TS($S($EXPECT($L92, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8584
8820
  return { $loc, token: $1 };
8585
8821
  });
8586
8822
  function Await(state) {
@@ -8601,7 +8837,7 @@ ${input.slice(result.pos)}
8601
8837
  return result;
8602
8838
  }
8603
8839
  }
8604
- var Backtick$0 = $TV($EXPECT($L95, fail, 'Backtick "`"'), function($skip, $loc, $0, $1) {
8840
+ var Backtick$0 = $TV($EXPECT($L93, fail, 'Backtick "`"'), function($skip, $loc, $0, $1) {
8605
8841
  return { $loc, token: $1 };
8606
8842
  });
8607
8843
  function Backtick(state) {
@@ -8622,7 +8858,7 @@ ${input.slice(result.pos)}
8622
8858
  return result;
8623
8859
  }
8624
8860
  }
8625
- var By$0 = $TS($S($EXPECT($L96, fail, 'By "by"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8861
+ var By$0 = $TS($S($EXPECT($L94, fail, 'By "by"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8626
8862
  return { $loc, token: $1 };
8627
8863
  });
8628
8864
  function By(state) {
@@ -8643,7 +8879,7 @@ ${input.slice(result.pos)}
8643
8879
  return result;
8644
8880
  }
8645
8881
  }
8646
- var Case$0 = $TS($S($EXPECT($L97, fail, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8882
+ var Case$0 = $TS($S($EXPECT($L95, fail, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8647
8883
  return { $loc, token: $1 };
8648
8884
  });
8649
8885
  function Case(state) {
@@ -8664,7 +8900,7 @@ ${input.slice(result.pos)}
8664
8900
  return result;
8665
8901
  }
8666
8902
  }
8667
- var Catch$0 = $TV($EXPECT($L98, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
8903
+ var Catch$0 = $TV($EXPECT($L96, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
8668
8904
  return { $loc, token: $1 };
8669
8905
  });
8670
8906
  function Catch(state) {
@@ -8685,7 +8921,7 @@ ${input.slice(result.pos)}
8685
8921
  return result;
8686
8922
  }
8687
8923
  }
8688
- var Class$0 = $TV($EXPECT($L99, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
8924
+ var Class$0 = $TV($EXPECT($L97, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
8689
8925
  return { $loc, token: $1 };
8690
8926
  });
8691
8927
  function Class(state) {
@@ -8706,7 +8942,7 @@ ${input.slice(result.pos)}
8706
8942
  return result;
8707
8943
  }
8708
8944
  }
8709
- var CloseBrace$0 = $TV($EXPECT($L27, fail, 'CloseBrace "}"'), function($skip, $loc, $0, $1) {
8945
+ var CloseBrace$0 = $TV($EXPECT($L28, fail, 'CloseBrace "}"'), function($skip, $loc, $0, $1) {
8710
8946
  return { $loc, token: $1 };
8711
8947
  });
8712
8948
  function CloseBrace(state) {
@@ -8727,7 +8963,7 @@ ${input.slice(result.pos)}
8727
8963
  return result;
8728
8964
  }
8729
8965
  }
8730
- var CloseBracket$0 = $TV($EXPECT($L25, fail, 'CloseBracket "]"'), function($skip, $loc, $0, $1) {
8966
+ var CloseBracket$0 = $TV($EXPECT($L26, fail, 'CloseBracket "]"'), function($skip, $loc, $0, $1) {
8731
8967
  return { $loc, token: $1 };
8732
8968
  });
8733
8969
  function CloseBracket(state) {
@@ -8748,7 +8984,7 @@ ${input.slice(result.pos)}
8748
8984
  return result;
8749
8985
  }
8750
8986
  }
8751
- var CloseParen$0 = $TV($EXPECT($L15, fail, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
8987
+ var CloseParen$0 = $TV($EXPECT($L14, fail, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
8752
8988
  return { $loc, token: $1 };
8753
8989
  });
8754
8990
  function CloseParen(state) {
@@ -8769,7 +9005,7 @@ ${input.slice(result.pos)}
8769
9005
  return result;
8770
9006
  }
8771
9007
  }
8772
- var CoffeeSubstitutionStart$0 = $TV($EXPECT($L100, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
9008
+ var CoffeeSubstitutionStart$0 = $TV($EXPECT($L98, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
8773
9009
  return { $loc, token: "${" };
8774
9010
  });
8775
9011
  function CoffeeSubstitutionStart(state) {
@@ -8790,7 +9026,7 @@ ${input.slice(result.pos)}
8790
9026
  return result;
8791
9027
  }
8792
9028
  }
8793
- var Colon$0 = $TV($EXPECT($L26, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
9029
+ var Colon$0 = $TV($EXPECT($L27, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
8794
9030
  return { $loc, token: $1 };
8795
9031
  });
8796
9032
  function Colon(state) {
@@ -8811,7 +9047,7 @@ ${input.slice(result.pos)}
8811
9047
  return result;
8812
9048
  }
8813
9049
  }
8814
- var ConstructorShorthand$0 = $TV($EXPECT($L92, fail, 'ConstructorShorthand "@"'), function($skip, $loc, $0, $1) {
9050
+ var ConstructorShorthand$0 = $TV($EXPECT($L90, fail, 'ConstructorShorthand "@"'), function($skip, $loc, $0, $1) {
8815
9051
  return { $loc, token: "constructor" };
8816
9052
  });
8817
9053
  function ConstructorShorthand(state) {
@@ -8832,7 +9068,7 @@ ${input.slice(result.pos)}
8832
9068
  return result;
8833
9069
  }
8834
9070
  }
8835
- var Default$0 = $TS($S($EXPECT($L85, fail, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9071
+ var Default$0 = $TS($S($EXPECT($L84, fail, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8836
9072
  return { $loc, token: $1 };
8837
9073
  });
8838
9074
  function Default(state) {
@@ -8853,7 +9089,7 @@ ${input.slice(result.pos)}
8853
9089
  return result;
8854
9090
  }
8855
9091
  }
8856
- var Delete$0 = $TS($S($EXPECT($L101, fail, 'Delete "delete"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9092
+ var Delete$0 = $TS($S($EXPECT($L99, fail, 'Delete "delete"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8857
9093
  return { $loc, token: $1 };
8858
9094
  });
8859
9095
  function Delete(state) {
@@ -8874,7 +9110,7 @@ ${input.slice(result.pos)}
8874
9110
  return result;
8875
9111
  }
8876
9112
  }
8877
- var Do$0 = $TS($S($EXPECT($L102, fail, 'Do "do"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9113
+ var Do$0 = $TS($S($EXPECT($L100, fail, 'Do "do"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8878
9114
  return { $loc, token: $1 };
8879
9115
  });
8880
9116
  function Do(state) {
@@ -8916,7 +9152,7 @@ ${input.slice(result.pos)}
8916
9152
  return result;
8917
9153
  }
8918
9154
  }
8919
- var DotDot$0 = $TV($EXPECT($L103, fail, 'DotDot ".."'), function($skip, $loc, $0, $1) {
9155
+ var DotDot$0 = $TV($EXPECT($L101, fail, 'DotDot ".."'), function($skip, $loc, $0, $1) {
8920
9156
  return { $loc, token: $1 };
8921
9157
  });
8922
9158
  function DotDot(state) {
@@ -8937,7 +9173,7 @@ ${input.slice(result.pos)}
8937
9173
  return result;
8938
9174
  }
8939
9175
  }
8940
- var DotDotDot$0 = $TV($EXPECT($L104, fail, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
9176
+ var DotDotDot$0 = $TV($EXPECT($L102, fail, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
8941
9177
  return { $loc, token: $1 };
8942
9178
  });
8943
9179
  function DotDotDot(state) {
@@ -8958,7 +9194,7 @@ ${input.slice(result.pos)}
8958
9194
  return result;
8959
9195
  }
8960
9196
  }
8961
- var DoubleColon$0 = $TV($EXPECT($L105, fail, 'DoubleColon "::"'), function($skip, $loc, $0, $1) {
9197
+ var DoubleColon$0 = $TV($EXPECT($L103, fail, 'DoubleColon "::"'), function($skip, $loc, $0, $1) {
8962
9198
  return { $loc, token: $1 };
8963
9199
  });
8964
9200
  function DoubleColon(state) {
@@ -8979,7 +9215,7 @@ ${input.slice(result.pos)}
8979
9215
  return result;
8980
9216
  }
8981
9217
  }
8982
- var DoubleQuote$0 = $TV($EXPECT($L106, fail, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
9218
+ var DoubleQuote$0 = $TV($EXPECT($L104, fail, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
8983
9219
  return { $loc, token: $1 };
8984
9220
  });
8985
9221
  function DoubleQuote(state) {
@@ -9000,7 +9236,7 @@ ${input.slice(result.pos)}
9000
9236
  return result;
9001
9237
  }
9002
9238
  }
9003
- var Else$0 = $TV($EXPECT($L107, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
9239
+ var Else$0 = $TV($EXPECT($L105, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
9004
9240
  return { $loc, token: $1 };
9005
9241
  });
9006
9242
  function Else(state) {
@@ -9021,7 +9257,7 @@ ${input.slice(result.pos)}
9021
9257
  return result;
9022
9258
  }
9023
9259
  }
9024
- var Equals$0 = $TV($EXPECT($L44, fail, 'Equals "="'), function($skip, $loc, $0, $1) {
9260
+ var Equals$0 = $TV($EXPECT($L24, fail, 'Equals "="'), function($skip, $loc, $0, $1) {
9025
9261
  return { $loc, token: $1 };
9026
9262
  });
9027
9263
  function Equals(state) {
@@ -9042,7 +9278,7 @@ ${input.slice(result.pos)}
9042
9278
  return result;
9043
9279
  }
9044
9280
  }
9045
- var Export$0 = $TS($S($EXPECT($L108, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9281
+ var Export$0 = $TS($S($EXPECT($L106, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9046
9282
  return { $loc, token: $1 };
9047
9283
  });
9048
9284
  function Export(state) {
@@ -9063,7 +9299,7 @@ ${input.slice(result.pos)}
9063
9299
  return result;
9064
9300
  }
9065
9301
  }
9066
- var For$0 = $TS($S($EXPECT($L109, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9302
+ var For$0 = $TS($S($EXPECT($L107, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9067
9303
  return { $loc, token: $1 };
9068
9304
  });
9069
9305
  function For(state) {
@@ -9084,7 +9320,7 @@ ${input.slice(result.pos)}
9084
9320
  return result;
9085
9321
  }
9086
9322
  }
9087
- var From$0 = $TS($S($EXPECT($L110, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9323
+ var From$0 = $TS($S($EXPECT($L108, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9088
9324
  return { $loc, token: $1 };
9089
9325
  });
9090
9326
  function From(state) {
@@ -9105,7 +9341,7 @@ ${input.slice(result.pos)}
9105
9341
  return result;
9106
9342
  }
9107
9343
  }
9108
- var Function$0 = $TV($EXPECT($L111, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
9344
+ var Function$0 = $TV($EXPECT($L109, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
9109
9345
  return { $loc, token: $1 };
9110
9346
  });
9111
9347
  function Function(state) {
@@ -9126,7 +9362,7 @@ ${input.slice(result.pos)}
9126
9362
  return result;
9127
9363
  }
9128
9364
  }
9129
- var GetOrSet$0 = $TS($S($C($EXPECT($L112, fail, 'GetOrSet "get"'), $EXPECT($L113, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9365
+ var GetOrSet$0 = $TS($S($C($EXPECT($L110, fail, 'GetOrSet "get"'), $EXPECT($L111, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9130
9366
  return { $loc, token: $1 };
9131
9367
  });
9132
9368
  function GetOrSet(state) {
@@ -9147,7 +9383,7 @@ ${input.slice(result.pos)}
9147
9383
  return result;
9148
9384
  }
9149
9385
  }
9150
- var If$0 = $TV($TEXT($S($EXPECT($L114, fail, 'If "if"'), $E($EXPECT($L3, fail, 'If " "')))), function($skip, $loc, $0, $1) {
9386
+ var If$0 = $TV($TEXT($S($EXPECT($L112, fail, 'If "if"'), $E($EXPECT($L4, fail, 'If " "')))), function($skip, $loc, $0, $1) {
9151
9387
  return { $loc, token: $1 };
9152
9388
  });
9153
9389
  function If(state) {
@@ -9168,7 +9404,7 @@ ${input.slice(result.pos)}
9168
9404
  return result;
9169
9405
  }
9170
9406
  }
9171
- var Import$0 = $TS($S($EXPECT($L10, fail, 'Import "import"'), $Y($EXPECT($R40, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
9407
+ var Import$0 = $TS($S($EXPECT($L10, fail, 'Import "import"'), $Y($EXPECT($R42, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
9172
9408
  return { $loc, token: $1 };
9173
9409
  });
9174
9410
  function Import(state) {
@@ -9210,7 +9446,7 @@ ${input.slice(result.pos)}
9210
9446
  return result;
9211
9447
  }
9212
9448
  }
9213
- var LetOrConst$0 = $TV($C($EXPECT($L115, fail, 'LetOrConst "let"'), $EXPECT($L116, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
9449
+ var LetOrConst$0 = $TS($S($C($EXPECT($L113, fail, 'LetOrConst "let"'), $EXPECT($L114, fail, 'LetOrConst "const"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9214
9450
  return { $loc, token: $1 };
9215
9451
  });
9216
9452
  function LetOrConst(state) {
@@ -9231,7 +9467,7 @@ ${input.slice(result.pos)}
9231
9467
  return result;
9232
9468
  }
9233
9469
  }
9234
- var Loop$0 = $TS($S($EXPECT($L117, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9470
+ var Loop$0 = $TS($S($EXPECT($L115, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9235
9471
  return { $loc, token: "while(true)" };
9236
9472
  });
9237
9473
  function Loop(state) {
@@ -9252,7 +9488,7 @@ ${input.slice(result.pos)}
9252
9488
  return result;
9253
9489
  }
9254
9490
  }
9255
- var New$0 = $TV($EXPECT($L118, fail, 'New "new"'), function($skip, $loc, $0, $1) {
9491
+ var New$0 = $TS($S($EXPECT($L116, fail, 'New "new"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9256
9492
  return { $loc, token: $1 };
9257
9493
  });
9258
9494
  function New(state) {
@@ -9273,7 +9509,7 @@ ${input.slice(result.pos)}
9273
9509
  return result;
9274
9510
  }
9275
9511
  }
9276
- var Not$0 = $TS($S(CoffeeNotEnabled, $EXPECT($L74, fail, 'Not "not"'), NonIdContinue, $E($EXPECT($L3, fail, 'Not " "'))), function($skip, $loc, $0, $1, $2, $3, $4) {
9512
+ var Not$0 = $TS($S(CoffeeNotEnabled, $EXPECT($L72, fail, 'Not "not"'), NonIdContinue, $E($EXPECT($L4, fail, 'Not " "'))), function($skip, $loc, $0, $1, $2, $3, $4) {
9277
9513
  return { $loc, token: "!" };
9278
9514
  });
9279
9515
  function Not(state) {
@@ -9294,7 +9530,7 @@ ${input.slice(result.pos)}
9294
9530
  return result;
9295
9531
  }
9296
9532
  }
9297
- var Of$0 = $TV($EXPECT($L67, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
9533
+ var Of$0 = $TV($EXPECT($L66, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
9298
9534
  return { $loc, token: $1 };
9299
9535
  });
9300
9536
  function Of(state) {
@@ -9315,7 +9551,7 @@ ${input.slice(result.pos)}
9315
9551
  return result;
9316
9552
  }
9317
9553
  }
9318
- var OpenBrace$0 = $TV($EXPECT($L119, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
9554
+ var OpenBrace$0 = $TV($EXPECT($L117, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
9319
9555
  return { $loc, token: $1 };
9320
9556
  });
9321
9557
  function OpenBrace(state) {
@@ -9336,7 +9572,7 @@ ${input.slice(result.pos)}
9336
9572
  return result;
9337
9573
  }
9338
9574
  }
9339
- var OpenBracket$0 = $TV($EXPECT($L120, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
9575
+ var OpenBracket$0 = $TV($EXPECT($L118, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
9340
9576
  return { $loc, token: $1 };
9341
9577
  });
9342
9578
  function OpenBracket(state) {
@@ -9357,7 +9593,7 @@ ${input.slice(result.pos)}
9357
9593
  return result;
9358
9594
  }
9359
9595
  }
9360
- var OpenParen$0 = $TV($EXPECT($L121, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
9596
+ var OpenParen$0 = $TV($EXPECT($L119, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
9361
9597
  return { $loc, token: $1 };
9362
9598
  });
9363
9599
  function OpenParen(state) {
@@ -9378,7 +9614,7 @@ ${input.slice(result.pos)}
9378
9614
  return result;
9379
9615
  }
9380
9616
  }
9381
- var QuestionMark$0 = $TV($EXPECT($L71, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
9617
+ var QuestionMark$0 = $TV($EXPECT($L70, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
9382
9618
  return { $loc, token: $1 };
9383
9619
  });
9384
9620
  function QuestionMark(state) {
@@ -9399,7 +9635,7 @@ ${input.slice(result.pos)}
9399
9635
  return result;
9400
9636
  }
9401
9637
  }
9402
- var Return$0 = $TS($S($EXPECT($L122, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9638
+ var Return$0 = $TS($S($EXPECT($L120, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9403
9639
  return { $loc, token: $1 };
9404
9640
  });
9405
9641
  function Return(state) {
@@ -9420,7 +9656,7 @@ ${input.slice(result.pos)}
9420
9656
  return result;
9421
9657
  }
9422
9658
  }
9423
- var Semicolon$0 = $TV($EXPECT($L78, fail, 'Semicolon ";"'), function($skip, $loc, $0, $1) {
9659
+ var Semicolon$0 = $TV($EXPECT($L77, fail, 'Semicolon ";"'), function($skip, $loc, $0, $1) {
9424
9660
  return { $loc, token: $1 };
9425
9661
  });
9426
9662
  function Semicolon(state) {
@@ -9441,7 +9677,7 @@ ${input.slice(result.pos)}
9441
9677
  return result;
9442
9678
  }
9443
9679
  }
9444
- var SingleQuote$0 = $TV($EXPECT($L123, fail, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
9680
+ var SingleQuote$0 = $TV($EXPECT($L121, fail, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
9445
9681
  return { $loc, token: $1 };
9446
9682
  });
9447
9683
  function SingleQuote(state) {
@@ -9483,10 +9719,10 @@ ${input.slice(result.pos)}
9483
9719
  return result;
9484
9720
  }
9485
9721
  }
9486
- var Static$0 = $TV($EXPECT($L124, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
9722
+ var Static$0 = $TV($EXPECT($L122, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
9487
9723
  return { $loc, token: $1 };
9488
9724
  });
9489
- var Static$1 = $TS($S($EXPECT($L92, fail, 'Static "@"'), $N($EXPECT($L121, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
9725
+ var Static$1 = $TS($S($EXPECT($L90, fail, 'Static "@"'), $N($EXPECT($L119, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
9490
9726
  return { $loc, token: "static " };
9491
9727
  });
9492
9728
  function Static(state) {
@@ -9507,7 +9743,7 @@ ${input.slice(result.pos)}
9507
9743
  return result;
9508
9744
  }
9509
9745
  }
9510
- var SubstitutionStart$0 = $TV($EXPECT($L125, fail, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
9746
+ var SubstitutionStart$0 = $TV($EXPECT($L123, fail, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
9511
9747
  return { $loc, token: $1 };
9512
9748
  });
9513
9749
  function SubstitutionStart(state) {
@@ -9528,7 +9764,7 @@ ${input.slice(result.pos)}
9528
9764
  return result;
9529
9765
  }
9530
9766
  }
9531
- var Switch$0 = $TS($S($EXPECT($L126, fail, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9767
+ var Switch$0 = $TS($S($EXPECT($L124, fail, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9532
9768
  return { $loc, token: $1 };
9533
9769
  });
9534
9770
  function Switch(state) {
@@ -9549,7 +9785,7 @@ ${input.slice(result.pos)}
9549
9785
  return result;
9550
9786
  }
9551
9787
  }
9552
- var Target$0 = $TV($EXPECT($L127, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
9788
+ var Target$0 = $TS($S($EXPECT($L125, fail, 'Target "target"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9553
9789
  return { $loc, token: $1 };
9554
9790
  });
9555
9791
  function Target(state) {
@@ -9570,7 +9806,7 @@ ${input.slice(result.pos)}
9570
9806
  return result;
9571
9807
  }
9572
9808
  }
9573
- var Then$0 = $TS($S(__, $EXPECT($L128, fail, 'Then "then"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
9809
+ var Then$0 = $TS($S(__, $EXPECT($L126, fail, 'Then "then"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
9574
9810
  return { $loc, token: "" };
9575
9811
  });
9576
9812
  function Then(state) {
@@ -9591,7 +9827,28 @@ ${input.slice(result.pos)}
9591
9827
  return result;
9592
9828
  }
9593
9829
  }
9594
- var Throw$0 = $TS($S($EXPECT($L129, fail, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9830
+ var This$0 = $TS($S($EXPECT($L127, fail, 'This "this"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9831
+ return { $loc, token: $1 };
9832
+ });
9833
+ function This(state) {
9834
+ if (state.events) {
9835
+ const result = state.events.enter?.("This", state);
9836
+ if (result)
9837
+ return result.cache;
9838
+ }
9839
+ if (state.tokenize) {
9840
+ const result = $TOKEN("This", state, This$0(state));
9841
+ if (state.events)
9842
+ state.events.exit?.("This", state, result);
9843
+ return result;
9844
+ } else {
9845
+ const result = This$0(state);
9846
+ if (state.events)
9847
+ state.events.exit?.("This", state, result);
9848
+ return result;
9849
+ }
9850
+ }
9851
+ var Throw$0 = $TS($S($EXPECT($L128, fail, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9595
9852
  return { $loc, token: $1 };
9596
9853
  });
9597
9854
  function Throw(state) {
@@ -9612,7 +9869,7 @@ ${input.slice(result.pos)}
9612
9869
  return result;
9613
9870
  }
9614
9871
  }
9615
- var TripleDoubleQuote$0 = $TV($EXPECT($L130, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
9872
+ var TripleDoubleQuote$0 = $TV($EXPECT($L129, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
9616
9873
  return { $loc, token: "`" };
9617
9874
  });
9618
9875
  function TripleDoubleQuote(state) {
@@ -9633,7 +9890,7 @@ ${input.slice(result.pos)}
9633
9890
  return result;
9634
9891
  }
9635
9892
  }
9636
- var TripleSingleQuote$0 = $TV($EXPECT($L131, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
9893
+ var TripleSingleQuote$0 = $TV($EXPECT($L130, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
9637
9894
  return { $loc, token: "`" };
9638
9895
  });
9639
9896
  function TripleSingleQuote(state) {
@@ -9654,7 +9911,7 @@ ${input.slice(result.pos)}
9654
9911
  return result;
9655
9912
  }
9656
9913
  }
9657
- var TripleSlash$0 = $TV($EXPECT($L132, fail, 'TripleSlash "///"'), function($skip, $loc, $0, $1) {
9914
+ var TripleSlash$0 = $TV($EXPECT($L131, fail, 'TripleSlash "///"'), function($skip, $loc, $0, $1) {
9658
9915
  return { $loc, token: "/" };
9659
9916
  });
9660
9917
  function TripleSlash(state) {
@@ -9675,7 +9932,7 @@ ${input.slice(result.pos)}
9675
9932
  return result;
9676
9933
  }
9677
9934
  }
9678
- var TripleTick$0 = $TV($EXPECT($L133, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
9935
+ var TripleTick$0 = $TV($EXPECT($L132, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
9679
9936
  return { $loc, token: "`" };
9680
9937
  });
9681
9938
  function TripleTick(state) {
@@ -9696,7 +9953,7 @@ ${input.slice(result.pos)}
9696
9953
  return result;
9697
9954
  }
9698
9955
  }
9699
- var Try$0 = $TV($EXPECT($L134, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
9956
+ var Try$0 = $TS($S($EXPECT($L133, fail, 'Try "try"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9700
9957
  return { $loc, token: $1 };
9701
9958
  });
9702
9959
  function Try(state) {
@@ -9717,7 +9974,7 @@ ${input.slice(result.pos)}
9717
9974
  return result;
9718
9975
  }
9719
9976
  }
9720
- var Typeof$0 = $TS($S($EXPECT($L135, fail, 'Typeof "typeof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9977
+ var Typeof$0 = $TS($S($EXPECT($L134, fail, 'Typeof "typeof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9721
9978
  return { $loc, token: $1 };
9722
9979
  });
9723
9980
  function Typeof(state) {
@@ -9738,7 +9995,7 @@ ${input.slice(result.pos)}
9738
9995
  return result;
9739
9996
  }
9740
9997
  }
9741
- var Unless$0 = $TV($EXPECT($L136, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
9998
+ var Unless$0 = $TS($S($EXPECT($L135, fail, 'Unless "unless"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9742
9999
  return { $loc, token: $1 };
9743
10000
  });
9744
10001
  function Unless(state) {
@@ -9759,7 +10016,7 @@ ${input.slice(result.pos)}
9759
10016
  return result;
9760
10017
  }
9761
10018
  }
9762
- var Until$0 = $TS($S($EXPECT($L137, fail, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
10019
+ var Until$0 = $TS($S($EXPECT($L136, fail, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9763
10020
  return { $loc, token: $1 };
9764
10021
  });
9765
10022
  function Until(state) {
@@ -9780,7 +10037,7 @@ ${input.slice(result.pos)}
9780
10037
  return result;
9781
10038
  }
9782
10039
  }
9783
- var Var$0 = $TV($EXPECT($L138, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
10040
+ var Var$0 = $TS($S($EXPECT($L137, fail, 'Var "var"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9784
10041
  return { $loc, token: $1 };
9785
10042
  });
9786
10043
  function Var(state) {
@@ -9801,7 +10058,7 @@ ${input.slice(result.pos)}
9801
10058
  return result;
9802
10059
  }
9803
10060
  }
9804
- var Void$0 = $TS($S($EXPECT($L139, fail, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
10061
+ var Void$0 = $TS($S($EXPECT($L138, fail, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9805
10062
  return { $loc, token: $1 };
9806
10063
  });
9807
10064
  function Void(state) {
@@ -9822,7 +10079,7 @@ ${input.slice(result.pos)}
9822
10079
  return result;
9823
10080
  }
9824
10081
  }
9825
- var When$0 = $TS($S($EXPECT($L140, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
10082
+ var When$0 = $TS($S($EXPECT($L139, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9826
10083
  return { $loc, token: "case" };
9827
10084
  });
9828
10085
  function When(state) {
@@ -9843,7 +10100,7 @@ ${input.slice(result.pos)}
9843
10100
  return result;
9844
10101
  }
9845
10102
  }
9846
- var While$0 = $TS($S($EXPECT($L141, fail, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
10103
+ var While$0 = $TS($S($EXPECT($L140, fail, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9847
10104
  return { $loc, token: $1 };
9848
10105
  });
9849
10106
  function While(state) {
@@ -9864,7 +10121,7 @@ ${input.slice(result.pos)}
9864
10121
  return result;
9865
10122
  }
9866
10123
  }
9867
- var Yield$0 = $TS($S($EXPECT($L142, fail, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
10124
+ var Yield$0 = $TS($S($EXPECT($L141, fail, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9868
10125
  return { $loc, token: $1 };
9869
10126
  });
9870
10127
  function Yield(state) {
@@ -9910,7 +10167,7 @@ ${input.slice(result.pos)}
9910
10167
  return result;
9911
10168
  }
9912
10169
  }
9913
- var JSXSelfClosingElement$0 = $S($EXPECT($L4, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L143, fail, 'JSXSelfClosingElement "/>"'));
10170
+ var JSXSelfClosingElement$0 = $S($EXPECT($L5, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L142, fail, 'JSXSelfClosingElement "/>"'));
9914
10171
  function JSXSelfClosingElement(state) {
9915
10172
  if (state.events) {
9916
10173
  const result = state.events.enter?.("JSXSelfClosingElement", state);
@@ -9929,7 +10186,7 @@ ${input.slice(result.pos)}
9929
10186
  return result;
9930
10187
  }
9931
10188
  }
9932
- var JSXOpeningElement$0 = $S($EXPECT($L4, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L58, fail, 'JSXOpeningElement ">"'));
10189
+ var JSXOpeningElement$0 = $S($EXPECT($L5, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L25, fail, 'JSXOpeningElement ">"'));
9933
10190
  function JSXOpeningElement(state) {
9934
10191
  if (state.events) {
9935
10192
  const result = state.events.enter?.("JSXOpeningElement", state);
@@ -9948,7 +10205,7 @@ ${input.slice(result.pos)}
9948
10205
  return result;
9949
10206
  }
9950
10207
  }
9951
- var JSXClosingElement$0 = $S($EXPECT($L144, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L58, fail, 'JSXClosingElement ">"'));
10208
+ var JSXClosingElement$0 = $S($EXPECT($L143, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L25, fail, 'JSXClosingElement ">"'));
9952
10209
  function JSXClosingElement(state) {
9953
10210
  if (state.events) {
9954
10211
  const result = state.events.enter?.("JSXClosingElement", state);
@@ -9967,7 +10224,7 @@ ${input.slice(result.pos)}
9967
10224
  return result;
9968
10225
  }
9969
10226
  }
9970
- var JSXFragment$0 = $S($EXPECT($L145, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L146, fail, 'JSXFragment "</>"'));
10227
+ var JSXFragment$0 = $S($EXPECT($L144, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L145, fail, 'JSXFragment "</>"'));
9971
10228
  function JSXFragment(state) {
9972
10229
  if (state.events) {
9973
10230
  const result = state.events.enter?.("JSXFragment", state);
@@ -10005,7 +10262,7 @@ ${input.slice(result.pos)}
10005
10262
  return result;
10006
10263
  }
10007
10264
  }
10008
- var JSXIdentifierName$0 = $R$0($EXPECT($R41, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
10265
+ var JSXIdentifierName$0 = $R$0($EXPECT($R43, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
10009
10266
  function JSXIdentifierName(state) {
10010
10267
  if (state.events) {
10011
10268
  const result = state.events.enter?.("JSXIdentifierName", state);
@@ -10101,8 +10358,8 @@ ${input.slice(result.pos)}
10101
10358
  return result;
10102
10359
  }
10103
10360
  }
10104
- var JSXAttributeValue$0 = $R$0($EXPECT($R42, fail, 'JSXAttributeValue /"[^"]*"/'));
10105
- var JSXAttributeValue$1 = $R$0($EXPECT($R43, fail, "JSXAttributeValue /'[^']*'/"));
10361
+ var JSXAttributeValue$0 = $R$0($EXPECT($R44, fail, 'JSXAttributeValue /"[^"]*"/'));
10362
+ var JSXAttributeValue$1 = $R$0($EXPECT($R45, fail, "JSXAttributeValue /'[^']*'/"));
10106
10363
  var JSXAttributeValue$2 = $S(OpenBrace, ExtendedExpression, __, CloseBrace);
10107
10364
  var JSXAttributeValue$3 = JSXElement;
10108
10365
  var JSXAttributeValue$4 = JSXFragment;
@@ -10165,7 +10422,7 @@ ${input.slice(result.pos)}
10165
10422
  return result;
10166
10423
  }
10167
10424
  }
10168
- var JSXText$0 = $R$0($EXPECT($R44, fail, "JSXText /[^{}<>]+/"));
10425
+ var JSXText$0 = $R$0($EXPECT($R46, fail, "JSXText /[^{}<>]+/"));
10169
10426
  function JSXText(state) {
10170
10427
  if (state.events) {
10171
10428
  const result = state.events.enter?.("JSXText", state);
@@ -10224,7 +10481,7 @@ ${input.slice(result.pos)}
10224
10481
  return result;
10225
10482
  }
10226
10483
  }
10227
- var TypeDeclarationModifier$0 = $S($EXPECT($L147, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
10484
+ var TypeDeclarationModifier$0 = $S($EXPECT($L146, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
10228
10485
  var TypeDeclarationModifier$1 = Export;
10229
10486
  function TypeDeclarationModifier(state) {
10230
10487
  if (state.events) {
@@ -10266,7 +10523,7 @@ ${input.slice(result.pos)}
10266
10523
  return result;
10267
10524
  }
10268
10525
  }
10269
- var TypeKeyword$0 = $S($EXPECT($L148, fail, 'TypeKeyword "type"'), NonIdContinue);
10526
+ var TypeKeyword$0 = $S($EXPECT($L147, fail, 'TypeKeyword "type"'), NonIdContinue);
10270
10527
  function TypeKeyword(state) {
10271
10528
  if (state.events) {
10272
10529
  const result = state.events.enter?.("TypeKeyword", state);
@@ -10285,7 +10542,7 @@ ${input.slice(result.pos)}
10285
10542
  return result;
10286
10543
  }
10287
10544
  }
10288
- var Interface$0 = $S($EXPECT($L149, fail, 'Interface "interface"'), NonIdContinue);
10545
+ var Interface$0 = $S($EXPECT($L148, fail, 'Interface "interface"'), NonIdContinue);
10289
10546
  function Interface(state) {
10290
10547
  if (state.events) {
10291
10548
  const result = state.events.enter?.("Interface", state);
@@ -10304,7 +10561,7 @@ ${input.slice(result.pos)}
10304
10561
  return result;
10305
10562
  }
10306
10563
  }
10307
- var Namespace$0 = $S($EXPECT($L150, fail, 'Namespace "namespace"'), NonIdContinue);
10564
+ var Namespace$0 = $S($EXPECT($L149, fail, 'Namespace "namespace"'), NonIdContinue);
10308
10565
  function Namespace(state) {
10309
10566
  if (state.events) {
10310
10567
  const result = state.events.enter?.("Namespace", state);
@@ -10493,7 +10750,7 @@ ${input.slice(result.pos)}
10493
10750
  return result;
10494
10751
  }
10495
10752
  }
10496
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R45, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L151, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R46, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
10753
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R47, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L150, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R48, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
10497
10754
  function TypeIndexSignature(state) {
10498
10755
  if (state.events) {
10499
10756
  const result = state.events.enter?.("TypeIndexSignature", state);
@@ -10553,7 +10810,7 @@ ${input.slice(result.pos)}
10553
10810
  return result;
10554
10811
  }
10555
10812
  }
10556
- var ReturnTypeSuffix$0 = $TS($S(__, Colon, $E($S(__, $EXPECT($L152, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2, $3, $4) {
10813
+ var ReturnTypeSuffix$0 = $TS($S(__, Colon, $E($S(__, $EXPECT($L151, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2, $3, $4) {
10557
10814
  const children = [...$1, $2];
10558
10815
  if ($3)
10559
10816
  children.push($3);
@@ -10582,7 +10839,7 @@ ${input.slice(result.pos)}
10582
10839
  return result;
10583
10840
  }
10584
10841
  }
10585
- var TypePredicate$0 = $TS($S(Type, $E($S(__, $EXPECT($L62, fail, 'TypePredicate "is"'), NonIdContinue, Type))), function($skip, $loc, $0, $1, $2) {
10842
+ var TypePredicate$0 = $TS($S(Type, $E($S(__, $EXPECT($L61, fail, 'TypePredicate "is"'), NonIdContinue, Type))), function($skip, $loc, $0, $1, $2) {
10586
10843
  if (!$2)
10587
10844
  return $1;
10588
10845
  return $0;
@@ -10688,9 +10945,9 @@ ${input.slice(result.pos)}
10688
10945
  return result;
10689
10946
  }
10690
10947
  }
10691
- var TypeUnaryOp$0 = $EXPECT($L153, fail, 'TypeUnaryOp "keyof"');
10692
- var TypeUnaryOp$1 = $EXPECT($L135, fail, 'TypeUnaryOp "typeof"');
10693
- var TypeUnaryOp$2 = $EXPECT($L154, fail, 'TypeUnaryOp "infer"');
10948
+ var TypeUnaryOp$0 = $EXPECT($L152, fail, 'TypeUnaryOp "keyof"');
10949
+ var TypeUnaryOp$1 = $EXPECT($L134, fail, 'TypeUnaryOp "typeof"');
10950
+ var TypeUnaryOp$2 = $EXPECT($L153, fail, 'TypeUnaryOp "infer"');
10694
10951
  function TypeUnaryOp(state) {
10695
10952
  if (state.events) {
10696
10953
  const result = state.events.enter?.("TypeUnaryOp", state);
@@ -10834,7 +11091,7 @@ ${input.slice(result.pos)}
10834
11091
  return result;
10835
11092
  }
10836
11093
  }
10837
- var TypeConditional$0 = $TS($S(TypeBinary, $E($S(__, $EXPECT($L5, fail, 'TypeConditional "extends"'), Type, $E($S(__, QuestionMark, Type, __, Colon, Type))))), function($skip, $loc, $0, $1, $2) {
11094
+ var TypeConditional$0 = $TS($S(TypeBinary, $E($S(__, $EXPECT($L6, fail, 'TypeConditional "extends"'), Type, $E($S(__, QuestionMark, Type, __, Colon, Type))))), function($skip, $loc, $0, $1, $2) {
10838
11095
  if ($2)
10839
11096
  return $0;
10840
11097
  return $1;
@@ -10858,10 +11115,10 @@ ${input.slice(result.pos)}
10858
11115
  }
10859
11116
  }
10860
11117
  var TypeLiteral$0 = Literal;
10861
- var TypeLiteral$1 = $TV($EXPECT($L139, fail, 'TypeLiteral "void"'), function($skip, $loc, $0, $1) {
11118
+ var TypeLiteral$1 = $TV($EXPECT($L138, fail, 'TypeLiteral "void"'), function($skip, $loc, $0, $1) {
10862
11119
  return { $loc, token: "void" };
10863
11120
  });
10864
- var TypeLiteral$2 = $TV($EXPECT($L155, fail, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
11121
+ var TypeLiteral$2 = $TV($EXPECT($L154, fail, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
10865
11122
  return { $loc, token: "[]" };
10866
11123
  });
10867
11124
  function TypeLiteral(state) {
@@ -10882,10 +11139,10 @@ ${input.slice(result.pos)}
10882
11139
  return result;
10883
11140
  }
10884
11141
  }
10885
- var TypeBinaryOp$0 = $TV($EXPECT($L77, fail, 'TypeBinaryOp "|"'), function($skip, $loc, $0, $1) {
11142
+ var TypeBinaryOp$0 = $TV($EXPECT($L76, fail, 'TypeBinaryOp "|"'), function($skip, $loc, $0, $1) {
10886
11143
  return { $loc, token: "|" };
10887
11144
  });
10888
- var TypeBinaryOp$1 = $TV($EXPECT($L75, fail, 'TypeBinaryOp "&"'), function($skip, $loc, $0, $1) {
11145
+ var TypeBinaryOp$1 = $TV($EXPECT($L74, fail, 'TypeBinaryOp "&"'), function($skip, $loc, $0, $1) {
10889
11146
  return { $loc, token: "&" };
10890
11147
  });
10891
11148
  function TypeBinaryOp(state) {
@@ -10906,7 +11163,7 @@ ${input.slice(result.pos)}
10906
11163
  return result;
10907
11164
  }
10908
11165
  }
10909
- var FunctionType$0 = $S(Parameters, __, $EXPECT($L2, fail, 'FunctionType "=>"'), Type);
11166
+ var FunctionType$0 = $S(Parameters, __, $EXPECT($L3, fail, 'FunctionType "=>"'), Type);
10910
11167
  function FunctionType(state) {
10911
11168
  if (state.events) {
10912
11169
  const result = state.events.enter?.("FunctionType", state);
@@ -10925,7 +11182,7 @@ ${input.slice(result.pos)}
10925
11182
  return result;
10926
11183
  }
10927
11184
  }
10928
- var TypeArguments$0 = $S(__, $EXPECT($L4, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L58, fail, 'TypeArguments ">"'));
11185
+ var TypeArguments$0 = $S(__, $EXPECT($L5, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L25, fail, 'TypeArguments ">"'));
10929
11186
  function TypeArguments(state) {
10930
11187
  if (state.events) {
10931
11188
  const result = state.events.enter?.("TypeArguments", state);
@@ -10944,7 +11201,7 @@ ${input.slice(result.pos)}
10944
11201
  return result;
10945
11202
  }
10946
11203
  }
10947
- var TypeParameters$0 = $TS($S(__, $EXPECT($L4, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L58, fail, 'TypeParameters ">"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
11204
+ var TypeParameters$0 = $TS($S(__, $EXPECT($L5, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L25, fail, 'TypeParameters ">"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
10948
11205
  return { ts: true, children: $0 };
10949
11206
  });
10950
11207
  function TypeParameters(state) {
@@ -10984,7 +11241,7 @@ ${input.slice(result.pos)}
10984
11241
  return result;
10985
11242
  }
10986
11243
  }
10987
- var TypeConstraint$0 = $S(__, $EXPECT($L5, fail, 'TypeConstraint "extends"'), Type);
11244
+ var TypeConstraint$0 = $S(__, $EXPECT($L6, fail, 'TypeConstraint "extends"'), Type);
10988
11245
  function TypeConstraint(state) {
10989
11246
  if (state.events) {
10990
11247
  const result = state.events.enter?.("TypeConstraint", state);
@@ -11004,8 +11261,8 @@ ${input.slice(result.pos)}
11004
11261
  }
11005
11262
  }
11006
11263
  var TypeParameterDelimiter$0 = $S($Q(_), Comma);
11007
- var TypeParameterDelimiter$1 = $Y($S($Q(_), $EXPECT($L58, fail, 'TypeParameterDelimiter ">"')));
11008
- var TypeParameterDelimiter$2 = $TV($Y($S(__, $EXPECT($L58, fail, 'TypeParameterDelimiter ">"'))), function($skip, $loc, $0, $1) {
11264
+ var TypeParameterDelimiter$1 = $Y($S($Q(_), $EXPECT($L25, fail, 'TypeParameterDelimiter ">"')));
11265
+ var TypeParameterDelimiter$2 = $TV($Y($S(__, $EXPECT($L25, fail, 'TypeParameterDelimiter ">"'))), function($skip, $loc, $0, $1) {
11009
11266
  return { $loc, token: "," };
11010
11267
  });
11011
11268
  var TypeParameterDelimiter$3 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
@@ -11029,7 +11286,7 @@ ${input.slice(result.pos)}
11029
11286
  return result;
11030
11287
  }
11031
11288
  }
11032
- var Shebang$0 = $S($R$0($EXPECT($R47, fail, "Shebang /#![^\\r\\n]*/")), EOL);
11289
+ var Shebang$0 = $S($R$0($EXPECT($R49, fail, "Shebang /#![^\\r\\n]*/")), EOL);
11033
11290
  function Shebang(state) {
11034
11291
  if (state.events) {
11035
11292
  const result = state.events.enter?.("Shebang", state);
@@ -11048,11 +11305,11 @@ ${input.slice(result.pos)}
11048
11305
  return result;
11049
11306
  }
11050
11307
  }
11051
- var CivetPrologue$0 = $T($S($EXPECT($R48, fail, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
11308
+ var CivetPrologue$0 = $T($S($EXPECT($R50, fail, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
11052
11309
  var content = value[2];
11053
11310
  return content;
11054
11311
  });
11055
- var CivetPrologue$1 = $T($S($EXPECT($R48, fail, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
11312
+ var CivetPrologue$1 = $T($S($EXPECT($R50, fail, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
11056
11313
  var content = value[2];
11057
11314
  return content;
11058
11315
  });
@@ -11074,7 +11331,7 @@ ${input.slice(result.pos)}
11074
11331
  return result;
11075
11332
  }
11076
11333
  }
11077
- var CivetPrologueContent$0 = $TS($S($EXPECT($L156, fail, 'CivetPrologueContent "civet"'), $Q(CivetOption), $EXPECT($R49, fail, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3) {
11334
+ var CivetPrologueContent$0 = $TS($S($EXPECT($L155, fail, 'CivetPrologueContent "civet"'), $Q(CivetOption), $EXPECT($R51, fail, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3) {
11078
11335
  var options = $2;
11079
11336
  return {
11080
11337
  type: "CivetPrologue",
@@ -11100,7 +11357,7 @@ ${input.slice(result.pos)}
11100
11357
  return result;
11101
11358
  }
11102
11359
  }
11103
- var CivetOption$0 = $TR($EXPECT($R50, fail, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
11360
+ var CivetOption$0 = $TR($EXPECT($R52, fail, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
11104
11361
  const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
11105
11362
  if (l)
11106
11363
  return l.toUpperCase();
@@ -11127,7 +11384,7 @@ ${input.slice(result.pos)}
11127
11384
  return result;
11128
11385
  }
11129
11386
  }
11130
- var UnknownPrologue$0 = $S($R$0($EXPECT($R48, fail, "UnknownPrologue /[\\t ]*/")), BasicStringLiteral, $TEXT(StatementDelimiter), EOS);
11387
+ var UnknownPrologue$0 = $S($R$0($EXPECT($R50, fail, "UnknownPrologue /[\\t ]*/")), BasicStringLiteral, $TEXT(StatementDelimiter), EOS);
11131
11388
  function UnknownPrologue(state) {
11132
11389
  if (state.events) {
11133
11390
  const result = state.events.enter?.("UnknownPrologue", state);
@@ -11185,7 +11442,7 @@ ${input.slice(result.pos)}
11185
11442
  return result;
11186
11443
  }
11187
11444
  }
11188
- var EOL$0 = $TR($EXPECT($R51, fail, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
11445
+ var EOL$0 = $TR($EXPECT($R53, fail, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
11189
11446
  return { $loc, token: $0 };
11190
11447
  });
11191
11448
  function EOL(state) {
@@ -11206,7 +11463,7 @@ ${input.slice(result.pos)}
11206
11463
  return result;
11207
11464
  }
11208
11465
  }
11209
- var Debugger$0 = $TV($EXPECT($L14, fail, 'Debugger ""'), function($skip, $loc, $0, $1) {
11466
+ var Debugger$0 = $TV($EXPECT($L0, fail, 'Debugger ""'), function($skip, $loc, $0, $1) {
11210
11467
  debugger;
11211
11468
  });
11212
11469
  function Debugger(state) {
@@ -11227,7 +11484,7 @@ ${input.slice(result.pos)}
11227
11484
  return result;
11228
11485
  }
11229
11486
  }
11230
- var InsertOpenParen$0 = $TV($EXPECT($L14, fail, 'InsertOpenParen ""'), function($skip, $loc, $0, $1) {
11487
+ var InsertOpenParen$0 = $TV($EXPECT($L0, fail, 'InsertOpenParen ""'), function($skip, $loc, $0, $1) {
11231
11488
  return { $loc, token: "(" };
11232
11489
  });
11233
11490
  function InsertOpenParen(state) {
@@ -11248,7 +11505,7 @@ ${input.slice(result.pos)}
11248
11505
  return result;
11249
11506
  }
11250
11507
  }
11251
- var InsertCloseParen$0 = $TV($EXPECT($L14, fail, 'InsertCloseParen ""'), function($skip, $loc, $0, $1) {
11508
+ var InsertCloseParen$0 = $TV($EXPECT($L0, fail, 'InsertCloseParen ""'), function($skip, $loc, $0, $1) {
11252
11509
  return { $loc, token: ")" };
11253
11510
  });
11254
11511
  function InsertCloseParen(state) {
@@ -11269,7 +11526,7 @@ ${input.slice(result.pos)}
11269
11526
  return result;
11270
11527
  }
11271
11528
  }
11272
- var InsertOpenBrace$0 = $TV($EXPECT($L14, fail, 'InsertOpenBrace ""'), function($skip, $loc, $0, $1) {
11529
+ var InsertOpenBrace$0 = $TV($EXPECT($L0, fail, 'InsertOpenBrace ""'), function($skip, $loc, $0, $1) {
11273
11530
  return [{ $loc, token: " " }, { $loc, token: "{" }];
11274
11531
  });
11275
11532
  function InsertOpenBrace(state) {
@@ -11290,7 +11547,28 @@ ${input.slice(result.pos)}
11290
11547
  return result;
11291
11548
  }
11292
11549
  }
11293
- var InsertCloseBrace$0 = $TV($EXPECT($L14, fail, 'InsertCloseBrace ""'), function($skip, $loc, $0, $1) {
11550
+ var InsertInlineOpenBrace$0 = $TV($EXPECT($L0, fail, 'InsertInlineOpenBrace ""'), function($skip, $loc, $0, $1) {
11551
+ return [{ $loc, token: "{" }];
11552
+ });
11553
+ function InsertInlineOpenBrace(state) {
11554
+ if (state.events) {
11555
+ const result = state.events.enter?.("InsertInlineOpenBrace", state);
11556
+ if (result)
11557
+ return result.cache;
11558
+ }
11559
+ if (state.tokenize) {
11560
+ const result = $TOKEN("InsertInlineOpenBrace", state, InsertInlineOpenBrace$0(state));
11561
+ if (state.events)
11562
+ state.events.exit?.("InsertInlineOpenBrace", state, result);
11563
+ return result;
11564
+ } else {
11565
+ const result = InsertInlineOpenBrace$0(state);
11566
+ if (state.events)
11567
+ state.events.exit?.("InsertInlineOpenBrace", state, result);
11568
+ return result;
11569
+ }
11570
+ }
11571
+ var InsertCloseBrace$0 = $TV($EXPECT($L0, fail, 'InsertCloseBrace ""'), function($skip, $loc, $0, $1) {
11294
11572
  return { $loc, token: "}" };
11295
11573
  });
11296
11574
  function InsertCloseBrace(state) {
@@ -11311,7 +11589,7 @@ ${input.slice(result.pos)}
11311
11589
  return result;
11312
11590
  }
11313
11591
  }
11314
- var InsertConst$0 = $TV($EXPECT($L14, fail, 'InsertConst ""'), function($skip, $loc, $0, $1) {
11592
+ var InsertConst$0 = $TV($EXPECT($L0, fail, 'InsertConst ""'), function($skip, $loc, $0, $1) {
11315
11593
  return { $loc, token: "const " };
11316
11594
  });
11317
11595
  function InsertConst(state) {
@@ -11332,7 +11610,7 @@ ${input.slice(result.pos)}
11332
11610
  return result;
11333
11611
  }
11334
11612
  }
11335
- var InsertReadonly$0 = $TV($EXPECT($L14, fail, 'InsertReadonly ""'), function($skip, $loc, $0, $1) {
11613
+ var InsertReadonly$0 = $TV($EXPECT($L0, fail, 'InsertReadonly ""'), function($skip, $loc, $0, $1) {
11336
11614
  return { ts: true, children: [{ $loc, token: "readonly " }] };
11337
11615
  });
11338
11616
  function InsertReadonly(state) {
@@ -11353,7 +11631,7 @@ ${input.slice(result.pos)}
11353
11631
  return result;
11354
11632
  }
11355
11633
  }
11356
- var InsertNewline$0 = $TV($EXPECT($L14, fail, 'InsertNewline ""'), function($skip, $loc, $0, $1) {
11634
+ var InsertNewline$0 = $TV($EXPECT($L0, fail, 'InsertNewline ""'), function($skip, $loc, $0, $1) {
11357
11635
  return "\n";
11358
11636
  });
11359
11637
  function InsertNewline(state) {
@@ -11374,7 +11652,7 @@ ${input.slice(result.pos)}
11374
11652
  return result;
11375
11653
  }
11376
11654
  }
11377
- var InsertIndent$0 = $TV($EXPECT($L14, fail, 'InsertIndent ""'), function($skip, $loc, $0, $1) {
11655
+ var InsertIndent$0 = $TV($EXPECT($L0, fail, 'InsertIndent ""'), function($skip, $loc, $0, $1) {
11378
11656
  return module2.currentIndent.token;
11379
11657
  });
11380
11658
  function InsertIndent(state) {
@@ -11395,7 +11673,7 @@ ${input.slice(result.pos)}
11395
11673
  return result;
11396
11674
  }
11397
11675
  }
11398
- var InsertSpace$0 = $TV($EXPECT($L14, fail, 'InsertSpace ""'), function($skip, $loc, $0, $1) {
11676
+ var InsertSpace$0 = $TV($EXPECT($L0, fail, 'InsertSpace ""'), function($skip, $loc, $0, $1) {
11399
11677
  return { $loc, token: " " };
11400
11678
  });
11401
11679
  function InsertSpace(state) {
@@ -11416,7 +11694,7 @@ ${input.slice(result.pos)}
11416
11694
  return result;
11417
11695
  }
11418
11696
  }
11419
- var InsertDot$0 = $TV($EXPECT($L14, fail, 'InsertDot ""'), function($skip, $loc, $0, $1) {
11697
+ var InsertDot$0 = $TV($EXPECT($L0, fail, 'InsertDot ""'), function($skip, $loc, $0, $1) {
11420
11698
  return { $loc, token: "." };
11421
11699
  });
11422
11700
  function InsertDot(state) {
@@ -11437,7 +11715,7 @@ ${input.slice(result.pos)}
11437
11715
  return result;
11438
11716
  }
11439
11717
  }
11440
- var InsertBreak$0 = $TV($EXPECT($L14, fail, 'InsertBreak ""'), function($skip, $loc, $0, $1) {
11718
+ var InsertBreak$0 = $TV($EXPECT($L0, fail, 'InsertBreak ""'), function($skip, $loc, $0, $1) {
11441
11719
  return { $loc, token: ";break;" };
11442
11720
  });
11443
11721
  function InsertBreak(state) {
@@ -11458,7 +11736,7 @@ ${input.slice(result.pos)}
11458
11736
  return result;
11459
11737
  }
11460
11738
  }
11461
- var CoffeeBinaryExistentialEnabled$0 = $TV($EXPECT($L14, fail, 'CoffeeBinaryExistentialEnabled ""'), function($skip, $loc, $0, $1) {
11739
+ var CoffeeBinaryExistentialEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeBinaryExistentialEnabled ""'), function($skip, $loc, $0, $1) {
11462
11740
  if (module2.config.coffeeBinaryExistential)
11463
11741
  return;
11464
11742
  return $skip;
@@ -11481,7 +11759,7 @@ ${input.slice(result.pos)}
11481
11759
  return result;
11482
11760
  }
11483
11761
  }
11484
- var CoffeeBooleansEnabled$0 = $TV($EXPECT($L14, fail, 'CoffeeBooleansEnabled ""'), function($skip, $loc, $0, $1) {
11762
+ var CoffeeBooleansEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeBooleansEnabled ""'), function($skip, $loc, $0, $1) {
11485
11763
  if (module2.config.coffeeBooleans)
11486
11764
  return;
11487
11765
  return $skip;
@@ -11504,7 +11782,7 @@ ${input.slice(result.pos)}
11504
11782
  return result;
11505
11783
  }
11506
11784
  }
11507
- var CoffeeClassesEnabled$0 = $TV($EXPECT($L14, fail, 'CoffeeClassesEnabled ""'), function($skip, $loc, $0, $1) {
11785
+ var CoffeeClassesEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeClassesEnabled ""'), function($skip, $loc, $0, $1) {
11508
11786
  if (module2.config.coffeeClasses)
11509
11787
  return;
11510
11788
  return $skip;
@@ -11527,7 +11805,7 @@ ${input.slice(result.pos)}
11527
11805
  return result;
11528
11806
  }
11529
11807
  }
11530
- var CoffeeCommentEnabled$0 = $TV($EXPECT($L14, fail, 'CoffeeCommentEnabled ""'), function($skip, $loc, $0, $1) {
11808
+ var CoffeeCommentEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeCommentEnabled ""'), function($skip, $loc, $0, $1) {
11531
11809
  if (module2.config.coffeeComment)
11532
11810
  return;
11533
11811
  return $skip;
@@ -11550,7 +11828,7 @@ ${input.slice(result.pos)}
11550
11828
  return result;
11551
11829
  }
11552
11830
  }
11553
- var CoffeeDoEnabled$0 = $TV($EXPECT($L14, fail, 'CoffeeDoEnabled ""'), function($skip, $loc, $0, $1) {
11831
+ var CoffeeDoEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeDoEnabled ""'), function($skip, $loc, $0, $1) {
11554
11832
  if (module2.config.coffeeDo)
11555
11833
  return;
11556
11834
  return $skip;
@@ -11573,7 +11851,7 @@ ${input.slice(result.pos)}
11573
11851
  return result;
11574
11852
  }
11575
11853
  }
11576
- var CoffeeForLoopsEnabled$0 = $TV($EXPECT($L14, fail, 'CoffeeForLoopsEnabled ""'), function($skip, $loc, $0, $1) {
11854
+ var CoffeeForLoopsEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeForLoopsEnabled ""'), function($skip, $loc, $0, $1) {
11577
11855
  if (module2.config.coffeeForLoops)
11578
11856
  return;
11579
11857
  return $skip;
@@ -11596,7 +11874,7 @@ ${input.slice(result.pos)}
11596
11874
  return result;
11597
11875
  }
11598
11876
  }
11599
- var CoffeeInterpolationEnabled$0 = $TV($EXPECT($L14, fail, 'CoffeeInterpolationEnabled ""'), function($skip, $loc, $0, $1) {
11877
+ var CoffeeInterpolationEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeInterpolationEnabled ""'), function($skip, $loc, $0, $1) {
11600
11878
  if (module2.config.coffeeInterpolation)
11601
11879
  return;
11602
11880
  return $skip;
@@ -11619,7 +11897,7 @@ ${input.slice(result.pos)}
11619
11897
  return result;
11620
11898
  }
11621
11899
  }
11622
- var CoffeeIsntEnabled$0 = $TV($EXPECT($L14, fail, 'CoffeeIsntEnabled ""'), function($skip, $loc, $0, $1) {
11900
+ var CoffeeIsntEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeIsntEnabled ""'), function($skip, $loc, $0, $1) {
11623
11901
  if (module2.config.coffeeIsnt)
11624
11902
  return;
11625
11903
  return $skip;
@@ -11642,7 +11920,7 @@ ${input.slice(result.pos)}
11642
11920
  return result;
11643
11921
  }
11644
11922
  }
11645
- var CoffeeLineContinuationEnabled$0 = $TV($EXPECT($L14, fail, 'CoffeeLineContinuationEnabled ""'), function($skip, $loc, $0, $1) {
11923
+ var CoffeeLineContinuationEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeLineContinuationEnabled ""'), function($skip, $loc, $0, $1) {
11646
11924
  if (module2.config.coffeeLineContinuation)
11647
11925
  return;
11648
11926
  return $skip;
@@ -11665,7 +11943,7 @@ ${input.slice(result.pos)}
11665
11943
  return result;
11666
11944
  }
11667
11945
  }
11668
- var CoffeeNotEnabled$0 = $TV($EXPECT($L14, fail, 'CoffeeNotEnabled ""'), function($skip, $loc, $0, $1) {
11946
+ var CoffeeNotEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeNotEnabled ""'), function($skip, $loc, $0, $1) {
11669
11947
  if (module2.config.coffeeNot)
11670
11948
  return;
11671
11949
  return $skip;
@@ -11688,7 +11966,7 @@ ${input.slice(result.pos)}
11688
11966
  return result;
11689
11967
  }
11690
11968
  }
11691
- var CoffeeOfEnabled$0 = $TV($EXPECT($L14, fail, 'CoffeeOfEnabled ""'), function($skip, $loc, $0, $1) {
11969
+ var CoffeeOfEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeOfEnabled ""'), function($skip, $loc, $0, $1) {
11692
11970
  if (module2.config.coffeeOf)
11693
11971
  return;
11694
11972
  return $skip;
@@ -11711,7 +11989,7 @@ ${input.slice(result.pos)}
11711
11989
  return result;
11712
11990
  }
11713
11991
  }
11714
- var Reset$0 = $TV($EXPECT($L14, fail, 'Reset ""'), function($skip, $loc, $0, $1) {
11992
+ var Reset$0 = $TV($EXPECT($L0, fail, 'Reset ""'), function($skip, $loc, $0, $1) {
11715
11993
  module2.indentLevels = [{
11716
11994
  level: 0,
11717
11995
  token: ""
@@ -11754,7 +12032,8 @@ ${input.slice(result.pos)}
11754
12032
  return spliceRef;
11755
12033
  spliceRef = {
11756
12034
  type: "Ref",
11757
- base: "splice"
12035
+ base: "splice",
12036
+ id: "splice"
11758
12037
  };
11759
12038
  return spliceRef;
11760
12039
  };
@@ -11763,7 +12042,8 @@ ${input.slice(result.pos)}
11763
12042
  return indexOfRef;
11764
12043
  indexOfRef = {
11765
12044
  type: "Ref",
11766
- base: "indexOf"
12045
+ base: "indexOf",
12046
+ id: "indexOf"
11767
12047
  };
11768
12048
  const typeSuffix = {
11769
12049
  ts: true,
@@ -11777,7 +12057,8 @@ ${input.slice(result.pos)}
11777
12057
  return hasPropRef;
11778
12058
  hasPropRef = {
11779
12059
  type: "Ref",
11780
- base: "hasProp"
12060
+ base: "hasProp",
12061
+ id: "hasProp"
11781
12062
  };
11782
12063
  const typeSuffix = {
11783
12064
  ts: true,
@@ -11841,7 +12122,7 @@ ${input.slice(result.pos)}
11841
12122
  return result;
11842
12123
  }
11843
12124
  }
11844
- var Init$0 = $TS($S($E(Shebang), $Q(DirectivePrologue), $EXPECT($L14, fail, 'Init ""')), function($skip, $loc, $0, $1, $2, $3) {
12125
+ var Init$0 = $TS($S($E(Shebang), $Q(DirectivePrologue), $EXPECT($L0, fail, 'Init ""')), function($skip, $loc, $0, $1, $2, $3) {
11845
12126
  var directives = $2;
11846
12127
  directives.forEach((directive) => {
11847
12128
  if (directive.type === "CivetPrologue") {
@@ -11888,7 +12169,8 @@ ${input.slice(result.pos)}
11888
12169
  function expressionizeIteration(exp) {
11889
12170
  const resultsRef = {
11890
12171
  type: "Ref",
11891
- base: "results"
12172
+ base: "results",
12173
+ id: "results"
11892
12174
  };
11893
12175
  insertPush(exp.block, resultsRef);
11894
12176
  exp.children = ["(", resultsRef, "=>{", ...exp.children, "; return ", resultsRef, "})([])"];
@@ -11896,7 +12178,8 @@ ${input.slice(result.pos)}
11896
12178
  function wrapIterationReturningResults(statement, outerRef) {
11897
12179
  const resultsRef = {
11898
12180
  type: "Ref",
11899
- base: "results"
12181
+ base: "results",
12182
+ id: "results"
11900
12183
  };
11901
12184
  const declaration = {
11902
12185
  type: "Declaration",
@@ -11925,6 +12208,7 @@ ${input.slice(result.pos)}
11925
12208
  case "BlockStatement":
11926
12209
  insertPush(node.expressions[node.expressions.length - 1], ref);
11927
12210
  return;
12211
+ case "ObjectBindingPattern":
11928
12212
  case "ObjectExpression":
11929
12213
  module2.insertTrimmingSpace(node.children[0], "");
11930
12214
  node.children.unshift(ref, ".push(");
@@ -11980,7 +12264,8 @@ ${input.slice(result.pos)}
11980
12264
  return;
11981
12265
  case "TryStatement":
11982
12266
  insertPush(exp.children[1], ref);
11983
- insertPush(exp.children[2][3], ref);
12267
+ if (exp.children[2])
12268
+ insertPush(exp.children[2][2], ref);
11984
12269
  return;
11985
12270
  }
11986
12271
  node.splice(1, 0, ref, ".push(");
@@ -11999,6 +12284,7 @@ ${input.slice(result.pos)}
11999
12284
  case "BlockStatement":
12000
12285
  insertReturn(node.expressions[node.expressions.length - 1]);
12001
12286
  return;
12287
+ case "ObjectBindingPattern":
12002
12288
  case "ObjectExpression":
12003
12289
  module2.insertTrimmingSpace(node.children[0], "");
12004
12290
  node.children.unshift("return ");
@@ -12054,7 +12340,8 @@ ${input.slice(result.pos)}
12054
12340
  return;
12055
12341
  case "TryStatement":
12056
12342
  insertReturn(exp.children[1]);
12057
- insertReturn(exp.children[2][3]);
12343
+ if (exp.children[2])
12344
+ insertReturn(exp.children[2][3]);
12058
12345
  return;
12059
12346
  }
12060
12347
  node.splice(1, 0, "return ");
@@ -12074,13 +12361,20 @@ ${input.slice(result.pos)}
12074
12361
  let i = 2;
12075
12362
  while (i < expandedOps.length) {
12076
12363
  const op = expandedOps[i];
12077
- if (op.ref) {
12364
+ if (op.special) {
12078
12365
  let [a, wsOp, op2, wsB, b] = expandedOps.slice(i - 2, i + 3);
12079
- wsOp = module2.insertTrimmingSpace(wsOp, "");
12080
- wsB = module2.insertTrimmingSpace(wsB, "");
12366
+ let children;
12367
+ if (op2.ref) {
12368
+ wsOp = module2.insertTrimmingSpace(wsOp, "");
12369
+ wsB = module2.insertTrimmingSpace(wsB, "");
12370
+ children = [wsOp, op2.ref, ".call(", wsB, b, ", ", a, ")", op2.suffix];
12371
+ } else if (op2.token === "instanceof" || op2.token === "in") {
12372
+ children = ["!(", a, wsOp, op2, wsB, b, ")"];
12373
+ } else {
12374
+ throw new Error("Unknown operator: " + JSON.stringify(op2));
12375
+ }
12081
12376
  expandedOps.splice(i - 2, 5, {
12082
- type: "Call",
12083
- children: [wsOp, op2.ref, ".call(", wsB, b, ", ", a, ")", op2.suffix]
12377
+ children
12084
12378
  });
12085
12379
  } else {
12086
12380
  i += 4;
@@ -12287,7 +12581,6 @@ ${input.slice(result.pos)}
12287
12581
  return nodes;
12288
12582
  }
12289
12583
  function processParams(f) {
12290
- processAtParams(f);
12291
12584
  const { parameters, block } = f;
12292
12585
  if (!block)
12293
12586
  return;
@@ -12301,44 +12594,22 @@ ${input.slice(result.pos)}
12301
12594
  } else {
12302
12595
  indent = expressions[0][0];
12303
12596
  }
12304
- const thisAssignments = [];
12305
- const splices = [];
12306
- function insertRestSplices(s, p, thisAssignments2) {
12307
- gatherRecursiveAll(s, (n) => n.blockPrefix).forEach(({ blockPrefix: blockPrefix2 }) => {
12308
- p.push([indent, blockPrefix2, ";\n"]);
12309
- gatherRecursiveAll(blockPrefix2, (n) => n.type === "AtBinding").map(({ ref }) => {
12310
- const { base: name } = ref;
12311
- thisAssignments2.push([indent, [`this.${name} = `, ref], ";\n"]);
12312
- });
12313
- insertRestSplices(blockPrefix2, p, thisAssignments2);
12314
- });
12315
- return p;
12316
- }
12317
- insertRestSplices(parameters, splices, thisAssignments);
12318
- expressions.unshift(...splices, ...thisAssignments);
12319
- }
12320
- function processAtParams(f) {
12321
- const { parameters, block } = f;
12322
- if (!block)
12323
- return;
12324
- const { expressions } = block;
12325
- if (!expressions)
12326
- return;
12327
- let indent;
12328
- if (expressions.length === 0) {
12329
- indent = "";
12330
- } else {
12331
- indent = expressions[0][0];
12332
- }
12333
- const thisAssignments = gatherRecursiveAll(parameters, (n) => n.type === "AtBinding").map(({ ref }) => {
12334
- const { base: name } = ref;
12335
- return [indent, [`this.${name} = `, ref], ";\n"];
12336
- });
12337
- block.expressions.unshift(...thisAssignments);
12597
+ const [splices, thisAssignments] = gatherBindingCode(parameters);
12598
+ const prefix = splices.map((s) => ["let ", s]).concat(thisAssignments).map((s) => [indent, s, ";\n"]);
12599
+ expressions.unshift(...prefix);
12338
12600
  }
12339
- function adjustAtBindings(statements) {
12601
+ function adjustAtBindings(statements, asThis = false) {
12340
12602
  gatherRecursiveAll(statements, (n) => n.type === "AtBindingProperty").forEach((binding) => {
12341
12603
  const { ref } = binding;
12604
+ if (asThis) {
12605
+ const atBinding = binding.children[0];
12606
+ atBinding.children.pop();
12607
+ atBinding.type = void 0;
12608
+ binding.children.unshift(ref.id, ": this.", ref.base);
12609
+ binding.type = "Property";
12610
+ binding.ref = void 0;
12611
+ return;
12612
+ }
12342
12613
  if (ref.names[0] !== ref.base) {
12343
12614
  binding.children.unshift(ref.base, ": ");
12344
12615
  }
@@ -12378,16 +12649,21 @@ ${input.slice(result.pos)}
12378
12649
  });
12379
12650
  }
12380
12651
  }
12652
+ function processBindingPatternLHS(lhs, tail) {
12653
+ adjustAtBindings(lhs, true);
12654
+ const [splices, thisAssignments] = module2.gatherBindingCode(lhs);
12655
+ tail.push(...splices.map((s) => [", ", s]), ...thisAssignments.map((a) => [", ", a]));
12656
+ }
12381
12657
  function processAssignments(statements) {
12382
12658
  gatherRecursiveAll(statements, (n) => n.type === "AssignmentExpression" && n.names === null).forEach((exp) => {
12383
- let $02 = exp.children, [$12, $22] = $02, tail = [], i = 0, len = $12.length;
12659
+ let { lhs: $12, exp: $22 } = exp, tail = [], i = 0, len = $12.length;
12384
12660
  let wrapped = false;
12385
12661
  while (i < len) {
12386
12662
  const lastAssignment = $12[i++];
12387
12663
  const [, lhs, , op] = lastAssignment;
12388
12664
  if (op.token !== "=")
12389
12665
  continue;
12390
- if (lhs.type === "ObjectExpression") {
12666
+ if (lhs.type === "ObjectExpression" || lhs.type === "ObjectBindingPattern") {
12391
12667
  if (!wrapped) {
12392
12668
  wrapped = true;
12393
12669
  lhs.children.splice(0, 0, "(");
@@ -12426,33 +12702,8 @@ ${input.slice(result.pos)}
12426
12702
  return;
12427
12703
  }
12428
12704
  }
12429
- } else if (lhs.type === "ObjectExpression") {
12430
- const spreadIndex = lhs.children.findIndex((child) => child.type === "SpreadProperty"), hasSpread = spreadIndex >= 0;
12431
- if (hasSpread) {
12432
- const len2 = lhs.children.length, after = lhs.children.splice(spreadIndex + 1, len2 - spreadIndex - 2);
12433
- if (after.length) {
12434
- if (after.some((child) => child.type === "SpreadProperty")) {
12435
- throw new Error("Cannot have multiple spread properties in object destructuring");
12436
- }
12437
- const lastAfterChildren = after[after.length - 1].children, afterDelimiter = lastAfterChildren.pop(), spread = lhs.children[spreadIndex], spreadDelimiter = spread.children.pop();
12438
- spread.children.push(afterDelimiter);
12439
- lastAfterChildren.push(spreadDelimiter);
12440
- lhs.children.splice(spreadIndex, 0, ...after);
12441
- }
12442
- }
12443
- } else if (lhs.type === "ArrayExpression") {
12444
- const spreadIndex = lhs.children.findIndex((child) => child.type === "SpreadElement"), hasSpread = spreadIndex >= 0;
12445
- if (hasSpread) {
12446
- const len2 = lhs.children.length, after = lhs.children.splice(spreadIndex + 1, len2 - spreadIndex - 2);
12447
- if (after.length) {
12448
- if (after.some((child) => child.type === "SpreadElement")) {
12449
- throw new Error("Cannot have multiple spread elements in array destructuring");
12450
- }
12451
- const spread = lhs.children[spreadIndex], spreadDelimiter = spread.children.pop();
12452
- const spliceRef = module2.getSpliceRef();
12453
- tail.push(["\n[", after, "] = ", spliceRef, ".call(", spread.names[0], ", -", after.length.toString(), ")"]);
12454
- }
12455
- }
12705
+ } else if (lhs.type === "ObjectBindingPattern" || lhs.type === "ArrayBindingPattern") {
12706
+ processBindingPatternLHS(lhs, tail);
12456
12707
  }
12457
12708
  }
12458
12709
  i--;
@@ -12476,6 +12727,24 @@ ${input.slice(result.pos)}
12476
12727
  module2.prelude.push(["", ["const ", spliceRef, typeSuffix, " = [].splice", asAny, "\n"]]);
12477
12728
  }
12478
12729
  }
12730
+ module2.attachPostfixStatementAsExpression = function(exp, post) {
12731
+ let clause;
12732
+ switch (post[1].type) {
12733
+ case "IterationStatement":
12734
+ case "ForStatement":
12735
+ clause = module2.addPostfixStatement(exp, ...post);
12736
+ return {
12737
+ type: "IterationExpression",
12738
+ children: [clause],
12739
+ block: clause.block
12740
+ };
12741
+ case "IfStatement":
12742
+ clause = module2.expressionizeIfClause(post[1], exp);
12743
+ return clause;
12744
+ default:
12745
+ throw new Error("Unknown postfix statement");
12746
+ }
12747
+ };
12479
12748
  module2.processProgram = function(statements) {
12480
12749
  processAssignments(statements);
12481
12750
  processFunctions(statements);
@@ -12534,16 +12803,13 @@ ${input.slice(result.pos)}
12534
12803
  return scopes.some((s) => s.has(name));
12535
12804
  }
12536
12805
  function findAssignments(statements2, decs2) {
12537
- const assignmentStatements = gatherNodes(statements2, (node) => {
12806
+ let assignmentStatements2 = gatherNodes(statements2, (node) => {
12538
12807
  return node.type === "AssignmentExpression";
12539
12808
  });
12540
- const undeclaredIdentifiers = assignmentStatements.flatMap((a) => {
12541
- return a.names;
12542
- });
12543
- return undeclaredIdentifiers.filter((x, i, a) => {
12544
- if (!hasDec(x))
12545
- return a.indexOf(x) === i;
12546
- });
12809
+ if (assignmentStatements2.length) {
12810
+ assignmentStatements2 = assignmentStatements2.concat(findAssignments(assignmentStatements2.map((s) => s.children), decs2));
12811
+ }
12812
+ return assignmentStatements2;
12547
12813
  }
12548
12814
  if (!pushVar) {
12549
12815
  pushVar = function(name) {
@@ -12554,7 +12820,14 @@ ${input.slice(result.pos)}
12554
12820
  const decs = findDecs(statements);
12555
12821
  scopes.push(decs);
12556
12822
  const varIds = [];
12557
- findAssignments(statements, scopes).forEach(pushVar);
12823
+ const assignmentStatements = findAssignments(statements, scopes);
12824
+ const undeclaredIdentifiers = assignmentStatements.flatMap((a) => {
12825
+ return a.names;
12826
+ });
12827
+ undeclaredIdentifiers.filter((x, i, a) => {
12828
+ if (!hasDec(x))
12829
+ return a.indexOf(x) === i;
12830
+ }).forEach(pushVar);
12558
12831
  const fnNodes = gatherNodes(statements, (s) => s.type === "FunctionExpression");
12559
12832
  const forNodes = gatherNodes(statements, (s) => s.type === "ForStatement");
12560
12833
  const blockNodes = new Set(gatherNodes(statements, (s) => s.type === "BlockStatement"));
@@ -12580,6 +12853,25 @@ ${input.slice(result.pos)}
12580
12853
  statements.unshift([indent, "var ", varIds.join(", "), "\n"]);
12581
12854
  }
12582
12855
  }
12856
+ function gatherBindingCode(statements) {
12857
+ const thisAssignments = [];
12858
+ const splices = [];
12859
+ function insertRestSplices(s, p, thisAssignments2) {
12860
+ gatherRecursiveAll(s, (n) => n.blockPrefix || n.type === "AtBinding").forEach((n) => {
12861
+ if (n.type === "AtBinding") {
12862
+ const { ref } = n, { id } = ref;
12863
+ thisAssignments2.push([`this.${id} = `, ref]);
12864
+ return;
12865
+ }
12866
+ const { blockPrefix } = n;
12867
+ p.push(blockPrefix);
12868
+ insertRestSplices(blockPrefix, p, thisAssignments2);
12869
+ });
12870
+ }
12871
+ insertRestSplices(statements, splices, thisAssignments);
12872
+ return [splices, thisAssignments];
12873
+ }
12874
+ module2.gatherBindingCode = gatherBindingCode;
12583
12875
  return $0;
12584
12876
  });
12585
12877
  function Init(state) {
@@ -12600,7 +12892,7 @@ ${input.slice(result.pos)}
12600
12892
  return result;
12601
12893
  }
12602
12894
  }
12603
- var Indent$0 = $TV($Q($C($EXPECT($L157, fail, 'Indent " "'), $EXPECT($L158, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
12895
+ var Indent$0 = $TV($Q($C($EXPECT($L156, fail, 'Indent " "'), $EXPECT($L157, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
12604
12896
  const level = $1.length;
12605
12897
  return {
12606
12898
  $loc,
@@ -12725,7 +13017,7 @@ ${input.slice(result.pos)}
12725
13017
  return result;
12726
13018
  }
12727
13019
  }
12728
- var PopIndent$0 = $TV($EXPECT($L14, fail, 'PopIndent ""'), function($skip, $loc, $0, $1) {
13020
+ var PopIndent$0 = $TV($EXPECT($L0, fail, 'PopIndent ""'), function($skip, $loc, $0, $1) {
12729
13021
  if (module2.verbose) {
12730
13022
  console.log("popping indent", module2.indentLevels[module2.indentLevels.length - 1], "->", module2.indentLevels[module2.indentLevels.length - 2]);
12731
13023
  }
@@ -13287,6 +13579,9 @@ makeCache = function() {
13287
13579
  case "NestedImplicitPropertyDefinitions":
13288
13580
  case "NestedBlockStatement":
13289
13581
  case "NestedInterfaceProperty":
13582
+ case "IndentedApplicationAllowed":
13583
+ case "ExpressionWithIndentedApplicationSuppressed":
13584
+ case "SuppressIndentedApplication":
13290
13585
  case "AssignmentExpressionTail":
13291
13586
  case "AssignmentExpression":
13292
13587
  case "ExtendedExpression":