@danielx/civet 0.4.2 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/browser.js CHANGED
@@ -505,6 +505,7 @@ var Civet = (() => {
505
505
  PropertyName,
506
506
  MethodDefinition,
507
507
  MethodModifier,
508
+ ConstructorShorthand,
508
509
  MethodSignature,
509
510
  ClassElementName,
510
511
  PrivateIdentifier,
@@ -583,6 +584,8 @@ var Civet = (() => {
583
584
  SingleStringCharacter,
584
585
  TripleDoubleStringCharacters,
585
586
  TripleSingleStringCharacters,
587
+ CoffeeStringSubstitution,
588
+ CoffeeSubstitutionStart,
586
589
  RegularExpressionLiteral,
587
590
  RegularExpressionBody,
588
591
  RegExpCharacter,
@@ -590,6 +593,7 @@ var Civet = (() => {
590
593
  TemplateLiteral,
591
594
  TemplateSubstitution,
592
595
  TemplateCharacters,
596
+ TemplateBlockCharacters,
593
597
  ReservedWord,
594
598
  Comment,
595
599
  SingleLineComment,
@@ -642,6 +646,7 @@ var Civet = (() => {
642
646
  Target,
643
647
  TripleDoubleQuote,
644
648
  TripleSingleQuote,
649
+ TripleTick,
645
650
  Try,
646
651
  Unless,
647
652
  Var,
@@ -811,59 +816,61 @@ var Civet = (() => {
811
816
  var $L85 = $L(":=");
812
817
  var $L86 = $L('"');
813
818
  var $L87 = $L("'");
814
- var $L88 = $L("${");
815
- var $L89 = $L("/*");
816
- var $L90 = $L("*/");
817
- var $L91 = $L("###");
818
- var $L92 = $L("as");
819
- var $L93 = $L("async");
820
- var $L94 = $L("await");
821
- var $L95 = $L("catch");
822
- var $L96 = $L("class");
823
- var $L97 = $L(":");
824
- var $L98 = $L(".");
825
- var $L99 = $L("else");
826
- var $L100 = $L("export");
827
- var $L101 = $L("for");
828
- var $L102 = $L("from");
829
- var $L103 = $L("function");
830
- var $L104 = $L("get");
831
- var $L105 = $L("set");
832
- var $L106 = $L("if");
833
- var $L107 = $L("let");
834
- var $L108 = $L("const");
835
- var $L109 = $L("loop");
836
- var $L110 = $L("new");
837
- var $L111 = $L("of");
838
- var $L112 = $L("{");
839
- var $L113 = $L("[");
840
- var $L114 = $L("(");
841
- var $L115 = $L("?");
842
- var $L116 = $L("return");
843
- var $L117 = $L("static");
844
- var $L118 = $L("switch");
845
- var $L119 = $L("target");
846
- var $L120 = $L('"""');
847
- var $L121 = $L("'''");
848
- var $L122 = $L("try");
849
- var $L123 = $L("unless");
850
- var $L124 = $L("var");
851
- var $L125 = $L("when");
852
- var $L126 = $L("/>");
853
- var $L127 = $L("</");
854
- var $L128 = $L("<>");
855
- var $L129 = $L("</>");
856
- var $L130 = $L("declare");
857
- var $L131 = $L("type");
858
- var $L132 = $L("interface");
859
- var $L133 = $L("namespace");
860
- var $L134 = $L("readonly");
861
- var $L135 = $L("asserts");
862
- var $L136 = $L("keyof");
863
- var $L137 = $L("infer");
864
- var $L138 = $L("[]");
865
- var $L139 = $L(" ");
866
- var $L140 = $L(" ");
819
+ var $L88 = $L("#{");
820
+ var $L89 = $L("${");
821
+ var $L90 = $L("/*");
822
+ var $L91 = $L("*/");
823
+ var $L92 = $L("###");
824
+ var $L93 = $L("as");
825
+ var $L94 = $L("async");
826
+ var $L95 = $L("await");
827
+ var $L96 = $L("catch");
828
+ var $L97 = $L("class");
829
+ var $L98 = $L(":");
830
+ var $L99 = $L(".");
831
+ var $L100 = $L("else");
832
+ var $L101 = $L("export");
833
+ var $L102 = $L("for");
834
+ var $L103 = $L("from");
835
+ var $L104 = $L("function");
836
+ var $L105 = $L("get");
837
+ var $L106 = $L("set");
838
+ var $L107 = $L("if");
839
+ var $L108 = $L("let");
840
+ var $L109 = $L("const");
841
+ var $L110 = $L("loop");
842
+ var $L111 = $L("new");
843
+ var $L112 = $L("of");
844
+ var $L113 = $L("{");
845
+ var $L114 = $L("[");
846
+ var $L115 = $L("(");
847
+ var $L116 = $L("?");
848
+ var $L117 = $L("return");
849
+ var $L118 = $L("static");
850
+ var $L119 = $L("switch");
851
+ var $L120 = $L("target");
852
+ var $L121 = $L('"""');
853
+ var $L122 = $L("'''");
854
+ var $L123 = $L("```");
855
+ var $L124 = $L("try");
856
+ var $L125 = $L("unless");
857
+ var $L126 = $L("var");
858
+ var $L127 = $L("when");
859
+ var $L128 = $L("/>");
860
+ var $L129 = $L("</");
861
+ var $L130 = $L("<>");
862
+ var $L131 = $L("</>");
863
+ var $L132 = $L("declare");
864
+ var $L133 = $L("type");
865
+ var $L134 = $L("interface");
866
+ var $L135 = $L("namespace");
867
+ var $L136 = $L("readonly");
868
+ var $L137 = $L("asserts");
869
+ var $L138 = $L("keyof");
870
+ var $L139 = $L("infer");
871
+ var $L140 = $L("[]");
872
+ var $L141 = $L(" ");
873
+ var $L142 = $L(" ");
867
874
  var $R0 = $R(new RegExp("(of)(?!\\p{ID_Continue})", "suy"));
868
875
  var $R1 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
869
876
  var $R2 = $R(new RegExp("[!~+-]", "suy"));
@@ -875,32 +882,33 @@ var Civet = (() => {
875
882
  var $R8 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*", "suy"));
876
883
  var $R9 = $R(new RegExp('(?:\\\\.|[^"])+', "suy"));
877
884
  var $R10 = $R(new RegExp("(?:\\\\.|[^'])+", "suy"));
878
- var $R11 = $R(new RegExp('(?:"(?!"")|\\\\.|[^"])*', "suy"));
885
+ var $R11 = $R(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
879
886
  var $R12 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
880
887
  var $R13 = $R(new RegExp("[*\\/\\r\\n]", "suy"));
881
888
  var $R14 = $R(new RegExp("(?:\\\\.|[^\\/\\r\\n])+", "suy"));
882
889
  var $R15 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
883
890
  var $R16 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
884
- var $R17 = $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|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
885
- var $R18 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
886
- var $R19 = $R(new RegExp(".", "suy"));
887
- var $R20 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
888
- var $R21 = $R(new RegExp("[^\\r\\n]", "suy"));
889
- var $R22 = $R(new RegExp("[ \\t]+", "suy"));
890
- var $R23 = $R(new RegExp("[\\t ]+", "suy"));
891
- var $R24 = $R(new RegExp("[\\s]+", "suy"));
892
- var $R25 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
893
- var $R26 = $R(new RegExp("\\s", "suy"));
894
- var $R27 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
895
- var $R28 = $R(new RegExp('"[^"]*"', "suy"));
896
- var $R29 = $R(new RegExp("'[^']*'", "suy"));
897
- var $R30 = $R(new RegExp("[^{}<>]+", "suy"));
898
- var $R31 = $R(new RegExp("[+-]?", "suy"));
899
- var $R32 = $R(new RegExp("[+-]", "suy"));
900
- var $R33 = $R(new RegExp("#![^\\r\\n]*", "suy"));
901
- var $R34 = $R(new RegExp("[\\t ]*", "suy"));
902
- var $R35 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
903
- var $R36 = $R(new RegExp("$", "suy"));
891
+ var $R17 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
892
+ var $R18 = $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|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
893
+ var $R19 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
894
+ var $R20 = $R(new RegExp(".", "suy"));
895
+ var $R21 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
896
+ var $R22 = $R(new RegExp("[^\\r\\n]", "suy"));
897
+ var $R23 = $R(new RegExp("[ \\t]+", "suy"));
898
+ var $R24 = $R(new RegExp("[\\t ]+", "suy"));
899
+ var $R25 = $R(new RegExp("[\\s]+", "suy"));
900
+ var $R26 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
901
+ var $R27 = $R(new RegExp("\\s", "suy"));
902
+ var $R28 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
903
+ var $R29 = $R(new RegExp('"[^"]*"', "suy"));
904
+ var $R30 = $R(new RegExp("'[^']*'", "suy"));
905
+ var $R31 = $R(new RegExp("[^{}<>]+", "suy"));
906
+ var $R32 = $R(new RegExp("[+-]?", "suy"));
907
+ var $R33 = $R(new RegExp("[+-]", "suy"));
908
+ var $R34 = $R(new RegExp("#![^\\r\\n]*", "suy"));
909
+ var $R35 = $R(new RegExp("[\\t ]*", "suy"));
910
+ var $R36 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
911
+ var $R37 = $R(new RegExp("$", "suy"));
904
912
  var Program$0 = $S(Init, __, $Q(TopLevelStatement), __);
905
913
  function Program(state) {
906
914
  if (state.verbose)
@@ -2037,14 +2045,25 @@ var Civet = (() => {
2037
2045
  return MethodModifier$0(state) || MethodModifier$1(state) || MethodModifier$2(state) || MethodModifier$3(state);
2038
2046
  }
2039
2047
  }
2040
- var MethodSignature$0 = $S($E(MethodModifier), ClassElementName, $Q(_), Parameters);
2041
- function MethodSignature(state) {
2048
+ var ConstructorShorthand$0 = $TV($EXPECT($L11, fail, 'ConstructorShorthand "@"'), function($skip, $loc, $0, $1) {
2049
+ return { $loc, token: "constructor" };
2050
+ });
2051
+ function ConstructorShorthand(state) {
2042
2052
  if (state.verbose)
2043
- console.log("ENTER:", "MethodSignature");
2053
+ console.log("ENTER:", "ConstructorShorthand");
2054
+ if (state.tokenize) {
2055
+ return $TOKEN("ConstructorShorthand", state, ConstructorShorthand$0(state));
2056
+ } else {
2057
+ return ConstructorShorthand$0(state);
2058
+ }
2059
+ }
2060
+ var MethodSignature$0 = $S(ConstructorShorthand, Parameters);
2061
+ var MethodSignature$1 = $S($E(MethodModifier), ClassElementName, $Q(_), Parameters);
2062
+ function MethodSignature(state) {
2044
2063
  if (state.tokenize) {
2045
- return $TOKEN("MethodSignature", state, MethodSignature$0(state));
2064
+ return $TOKEN("MethodSignature", state, MethodSignature$0(state) || MethodSignature$1(state));
2046
2065
  } else {
2047
- return MethodSignature$0(state);
2066
+ return MethodSignature$0(state) || MethodSignature$1(state);
2048
2067
  }
2049
2068
  }
2050
2069
  var ClassElementName$0 = PropertyName;
@@ -2931,11 +2950,8 @@ var Civet = (() => {
2931
2950
  return HexLiteral$0(state);
2932
2951
  }
2933
2952
  }
2934
- var StringLiteral$0 = $TS($S(TripleDoubleQuote, TripleDoubleStringCharacters, TripleDoubleQuote), function($skip, $loc, $0, $1, $2, $3) {
2935
- var s = $1;
2936
- var str = $2;
2937
- var e = $3;
2938
- return [s, module.dedentBlockString(str), e];
2953
+ var StringLiteral$0 = $TS($S(TripleDoubleQuote, $Q($C(TripleDoubleStringCharacters, CoffeeStringSubstitution)), TripleDoubleQuote), function($skip, $loc, $0, $1, $2, $3) {
2954
+ return module.dedentBlockSubstitutions($0);
2939
2955
  });
2940
2956
  var StringLiteral$1 = $TS($S(TripleSingleQuote, TripleSingleStringCharacters, TripleSingleQuote), function($skip, $loc, $0, $1, $2, $3) {
2941
2957
  var s = $1;
@@ -2976,7 +2992,7 @@ var Civet = (() => {
2976
2992
  return SingleStringCharacter$0(state);
2977
2993
  }
2978
2994
  }
2979
- var TripleDoubleStringCharacters$0 = $TR($EXPECT($R11, fail, 'TripleDoubleStringCharacters /(?:"(?!"")|\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
2995
+ var TripleDoubleStringCharacters$0 = $TR($EXPECT($R11, fail, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
2980
2996
  return { $loc, token: $0 };
2981
2997
  });
2982
2998
  function TripleDoubleStringCharacters(state) {
@@ -3000,6 +3016,28 @@ var Civet = (() => {
3000
3016
  return TripleSingleStringCharacters$0(state);
3001
3017
  }
3002
3018
  }
3019
+ var CoffeeStringSubstitution$0 = $S(CoffeeSubstitutionStart, Expression, __, CloseBrace);
3020
+ function CoffeeStringSubstitution(state) {
3021
+ if (state.verbose)
3022
+ console.log("ENTER:", "CoffeeStringSubstitution");
3023
+ if (state.tokenize) {
3024
+ return $TOKEN("CoffeeStringSubstitution", state, CoffeeStringSubstitution$0(state));
3025
+ } else {
3026
+ return CoffeeStringSubstitution$0(state);
3027
+ }
3028
+ }
3029
+ var CoffeeSubstitutionStart$0 = $TV($EXPECT($L88, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
3030
+ return { $loc, token: "${" };
3031
+ });
3032
+ function CoffeeSubstitutionStart(state) {
3033
+ if (state.verbose)
3034
+ console.log("ENTER:", "CoffeeSubstitutionStart");
3035
+ if (state.tokenize) {
3036
+ return $TOKEN("CoffeeSubstitutionStart", state, CoffeeSubstitutionStart$0(state));
3037
+ } else {
3038
+ return CoffeeSubstitutionStart$0(state);
3039
+ }
3040
+ }
3003
3041
  var RegularExpressionLiteral$0 = $TV($TEXT($S($EXPECT($L45, fail, 'RegularExpressionLiteral "/"'), RegularExpressionBody, $EXPECT($L45, fail, 'RegularExpressionLiteral "/"'), RegularExpressionFlags)), function($skip, $loc, $0, $1) {
3004
3042
  return { $loc, token: $1 };
3005
3043
  });
@@ -3042,17 +3080,18 @@ var Civet = (() => {
3042
3080
  return RegularExpressionFlags$0(state);
3043
3081
  }
3044
3082
  }
3045
- var TemplateLiteral$0 = $S($EXPECT($L0, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L0, fail, 'TemplateLiteral "`"'));
3083
+ var TemplateLiteral$0 = $TS($S(TripleTick, $Q($C(TemplateBlockCharacters, TemplateSubstitution)), TripleTick), function($skip, $loc, $0, $1, $2, $3) {
3084
+ return module.dedentBlockSubstitutions($0);
3085
+ });
3086
+ var TemplateLiteral$1 = $S($EXPECT($L0, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L0, fail, 'TemplateLiteral "`"'));
3046
3087
  function TemplateLiteral(state) {
3047
- if (state.verbose)
3048
- console.log("ENTER:", "TemplateLiteral");
3049
3088
  if (state.tokenize) {
3050
- return $TOKEN("TemplateLiteral", state, TemplateLiteral$0(state));
3089
+ return $TOKEN("TemplateLiteral", state, TemplateLiteral$0(state) || TemplateLiteral$1(state));
3051
3090
  } else {
3052
- return TemplateLiteral$0(state);
3091
+ return TemplateLiteral$0(state) || TemplateLiteral$1(state);
3053
3092
  }
3054
3093
  }
3055
- var TemplateSubstitution$0 = $S($EXPECT($L88, fail, 'TemplateSubstitution "${"'), Expression, __, CloseBrace);
3094
+ var TemplateSubstitution$0 = $S($EXPECT($L89, fail, 'TemplateSubstitution "${"'), Expression, __, CloseBrace);
3056
3095
  function TemplateSubstitution(state) {
3057
3096
  if (state.verbose)
3058
3097
  console.log("ENTER:", "TemplateSubstitution");
@@ -3062,7 +3101,9 @@ var Civet = (() => {
3062
3101
  return TemplateSubstitution$0(state);
3063
3102
  }
3064
3103
  }
3065
- var TemplateCharacters$0 = $R$0($EXPECT($R16, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"));
3104
+ var TemplateCharacters$0 = $TR($EXPECT($R16, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3105
+ return { $loc, token: $0 };
3106
+ });
3066
3107
  function TemplateCharacters(state) {
3067
3108
  if (state.verbose)
3068
3109
  console.log("ENTER:", "TemplateCharacters");
@@ -3072,7 +3113,19 @@ var Civet = (() => {
3072
3113
  return TemplateCharacters$0(state);
3073
3114
  }
3074
3115
  }
3075
- var ReservedWord$0 = $R$0($EXPECT($R17, 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|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
3116
+ var TemplateBlockCharacters$0 = $TR($EXPECT($R17, fail, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3117
+ return { $loc, token: $0 };
3118
+ });
3119
+ function TemplateBlockCharacters(state) {
3120
+ if (state.verbose)
3121
+ console.log("ENTER:", "TemplateBlockCharacters");
3122
+ if (state.tokenize) {
3123
+ return $TOKEN("TemplateBlockCharacters", state, TemplateBlockCharacters$0(state));
3124
+ } else {
3125
+ return TemplateBlockCharacters$0(state);
3126
+ }
3127
+ }
3128
+ var ReservedWord$0 = $R$0($EXPECT($R18, 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|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
3076
3129
  function ReservedWord(state) {
3077
3130
  if (state.verbose)
3078
3131
  console.log("ENTER:", "ReservedWord");
@@ -3091,7 +3144,7 @@ var Civet = (() => {
3091
3144
  return Comment$0(state) || Comment$1(state);
3092
3145
  }
3093
3146
  }
3094
- var SingleLineComment$0 = $TR($EXPECT($R18, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3147
+ var SingleLineComment$0 = $TR($EXPECT($R19, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3095
3148
  return { $loc, token: $0 };
3096
3149
  });
3097
3150
  var SingleLineComment$1 = CoffeeSingleLineComment;
@@ -3111,7 +3164,7 @@ var Civet = (() => {
3111
3164
  return MultiLineComment$0(state) || MultiLineComment$1(state);
3112
3165
  }
3113
3166
  }
3114
- var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L89, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L90, fail, 'JSMultiLineComment "*/"')), $EXPECT($R19, fail, "JSMultiLineComment /./"))), $EXPECT($L90, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3167
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L90, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L91, fail, 'JSMultiLineComment "*/"')), $EXPECT($R20, fail, "JSMultiLineComment /./"))), $EXPECT($L91, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3115
3168
  return { $loc, token: $1 };
3116
3169
  });
3117
3170
  function JSMultiLineComment(state) {
@@ -3123,7 +3176,7 @@ var Civet = (() => {
3123
3176
  return JSMultiLineComment$0(state);
3124
3177
  }
3125
3178
  }
3126
- var CoffeeSingleLineComment$0 = $TR($EXPECT($R20, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3179
+ var CoffeeSingleLineComment$0 = $TR($EXPECT($R21, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3127
3180
  if (!module.coffeeCompat)
3128
3181
  return $skip;
3129
3182
  return { $loc, token: `//${$1}` };
@@ -3137,7 +3190,7 @@ var Civet = (() => {
3137
3190
  return CoffeeSingleLineComment$0(state);
3138
3191
  }
3139
3192
  }
3140
- var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L91, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L91, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L90, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R19, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L91, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3193
+ var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L92, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L92, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L91, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R20, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L92, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3141
3194
  return { $loc, token: `/*${$2}*/` };
3142
3195
  });
3143
3196
  function CoffeeMultiLineComment(state) {
@@ -3149,7 +3202,7 @@ var Civet = (() => {
3149
3202
  return CoffeeMultiLineComment$0(state);
3150
3203
  }
3151
3204
  }
3152
- var InlineComment$0 = $TV($TEXT($S($EXPECT($L89, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L90, fail, 'InlineComment "*/"')), $EXPECT($R21, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L90, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3205
+ var InlineComment$0 = $TV($TEXT($S($EXPECT($L90, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L91, fail, 'InlineComment "*/"')), $EXPECT($R22, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L91, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3153
3206
  return { $loc, token: $1 };
3154
3207
  });
3155
3208
  function InlineComment(state) {
@@ -3161,7 +3214,7 @@ var Civet = (() => {
3161
3214
  return InlineComment$0(state);
3162
3215
  }
3163
3216
  }
3164
- var RestOfLine$0 = $S($Q($C($R$0($EXPECT($R22, fail, "RestOfLine /[ \\t]+/")), SingleLineComment, MultiLineComment)), EOL);
3217
+ var RestOfLine$0 = $S($Q($C($R$0($EXPECT($R23, fail, "RestOfLine /[ \\t]+/")), SingleLineComment, MultiLineComment)), EOL);
3165
3218
  function RestOfLine(state) {
3166
3219
  if (state.verbose)
3167
3220
  console.log("ENTER:", "RestOfLine");
@@ -3171,7 +3224,7 @@ var Civet = (() => {
3171
3224
  return RestOfLine$0(state);
3172
3225
  }
3173
3226
  }
3174
- var TrailingComment$0 = $R$0($EXPECT($R23, fail, "TrailingComment /[\\t ]+/"));
3227
+ var TrailingComment$0 = $R$0($EXPECT($R24, fail, "TrailingComment /[\\t ]+/"));
3175
3228
  var TrailingComment$1 = InlineComment;
3176
3229
  var TrailingComment$2 = SingleLineComment;
3177
3230
  function TrailingComment(state) {
@@ -3191,7 +3244,7 @@ var Civet = (() => {
3191
3244
  return _$0(state);
3192
3245
  }
3193
3246
  }
3194
- var NonNewlineWhitespace$0 = $TR($EXPECT($R22, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3247
+ var NonNewlineWhitespace$0 = $TR($EXPECT($R23, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3195
3248
  return { $loc, token: $0 };
3196
3249
  });
3197
3250
  function NonNewlineWhitespace(state) {
@@ -3213,7 +3266,7 @@ var Civet = (() => {
3213
3266
  return __$0(state);
3214
3267
  }
3215
3268
  }
3216
- var Whitespace$0 = $TR($EXPECT($R24, fail, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3269
+ var Whitespace$0 = $TR($EXPECT($R25, fail, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3217
3270
  return { $loc, token: $0 };
3218
3271
  });
3219
3272
  function Whitespace(state) {
@@ -3236,7 +3289,7 @@ var Civet = (() => {
3236
3289
  return StatementDelimiter$0(state) || StatementDelimiter$1(state);
3237
3290
  }
3238
3291
  }
3239
- var NonIdContinue$0 = $R$0($EXPECT($R25, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
3292
+ var NonIdContinue$0 = $R$0($EXPECT($R26, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
3240
3293
  function NonIdContinue(state) {
3241
3294
  if (state.verbose)
3242
3295
  console.log("ENTER:", "NonIdContinue");
@@ -3258,7 +3311,7 @@ var Civet = (() => {
3258
3311
  return Loc$0(state);
3259
3312
  }
3260
3313
  }
3261
- var As$0 = $TS($S($EXPECT($L92, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3314
+ var As$0 = $TS($S($EXPECT($L93, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3262
3315
  return { $loc, token: $1 };
3263
3316
  });
3264
3317
  function As(state) {
@@ -3270,7 +3323,7 @@ var Civet = (() => {
3270
3323
  return As$0(state);
3271
3324
  }
3272
3325
  }
3273
- var Async$0 = $TV($EXPECT($L93, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3326
+ var Async$0 = $TV($EXPECT($L94, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3274
3327
  return { $loc, token: $1 };
3275
3328
  });
3276
3329
  function Async(state) {
@@ -3282,7 +3335,7 @@ var Civet = (() => {
3282
3335
  return Async$0(state);
3283
3336
  }
3284
3337
  }
3285
- var Await$0 = $TS($S($EXPECT($L94, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3338
+ var Await$0 = $TS($S($EXPECT($L95, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3286
3339
  return { $loc, token: $1 };
3287
3340
  });
3288
3341
  function Await(state) {
@@ -3294,7 +3347,7 @@ var Civet = (() => {
3294
3347
  return Await$0(state);
3295
3348
  }
3296
3349
  }
3297
- var Catch$0 = $TV($EXPECT($L95, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3350
+ var Catch$0 = $TV($EXPECT($L96, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3298
3351
  return { $loc, token: $1 };
3299
3352
  });
3300
3353
  function Catch(state) {
@@ -3306,7 +3359,7 @@ var Civet = (() => {
3306
3359
  return Catch$0(state);
3307
3360
  }
3308
3361
  }
3309
- var Class$0 = $TV($EXPECT($L96, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3362
+ var Class$0 = $TV($EXPECT($L97, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3310
3363
  return { $loc, token: $1 };
3311
3364
  });
3312
3365
  function Class(state) {
@@ -3354,7 +3407,7 @@ var Civet = (() => {
3354
3407
  return CloseParen$0(state);
3355
3408
  }
3356
3409
  }
3357
- var Colon$0 = $TV($EXPECT($L97, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3410
+ var Colon$0 = $TV($EXPECT($L98, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3358
3411
  return { $loc, token: $1 };
3359
3412
  });
3360
3413
  function Colon(state) {
@@ -3366,7 +3419,7 @@ var Civet = (() => {
3366
3419
  return Colon$0(state);
3367
3420
  }
3368
3421
  }
3369
- var Dot$0 = $TV($EXPECT($L98, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3422
+ var Dot$0 = $TV($EXPECT($L99, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3370
3423
  return { $loc, token: $1 };
3371
3424
  });
3372
3425
  function Dot(state) {
@@ -3378,7 +3431,7 @@ var Civet = (() => {
3378
3431
  return Dot$0(state);
3379
3432
  }
3380
3433
  }
3381
- var Else$0 = $TV($EXPECT($L99, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3434
+ var Else$0 = $TV($EXPECT($L100, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3382
3435
  return { $loc, token: $1 };
3383
3436
  });
3384
3437
  function Else(state) {
@@ -3402,7 +3455,7 @@ var Civet = (() => {
3402
3455
  return Equals$0(state);
3403
3456
  }
3404
3457
  }
3405
- var Export$0 = $TS($S($EXPECT($L100, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3458
+ var Export$0 = $TS($S($EXPECT($L101, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3406
3459
  return { $loc, token: $1 };
3407
3460
  });
3408
3461
  function Export(state) {
@@ -3414,7 +3467,7 @@ var Civet = (() => {
3414
3467
  return Export$0(state);
3415
3468
  }
3416
3469
  }
3417
- var For$0 = $TS($S($EXPECT($L101, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3470
+ var For$0 = $TS($S($EXPECT($L102, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3418
3471
  return { $loc, token: $1 };
3419
3472
  });
3420
3473
  function For(state) {
@@ -3426,7 +3479,7 @@ var Civet = (() => {
3426
3479
  return For$0(state);
3427
3480
  }
3428
3481
  }
3429
- var From$0 = $TS($S($EXPECT($L102, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3482
+ var From$0 = $TS($S($EXPECT($L103, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3430
3483
  return { $loc, token: $1 };
3431
3484
  });
3432
3485
  function From(state) {
@@ -3438,7 +3491,7 @@ var Civet = (() => {
3438
3491
  return From$0(state);
3439
3492
  }
3440
3493
  }
3441
- var Function$0 = $TV($EXPECT($L103, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
3494
+ var Function$0 = $TV($EXPECT($L104, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
3442
3495
  return { $loc, token: $1 };
3443
3496
  });
3444
3497
  function Function(state) {
@@ -3450,7 +3503,7 @@ var Civet = (() => {
3450
3503
  return Function$0(state);
3451
3504
  }
3452
3505
  }
3453
- var GetOrSet$0 = $TS($S($C($EXPECT($L104, fail, 'GetOrSet "get"'), $EXPECT($L105, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3506
+ var GetOrSet$0 = $TS($S($C($EXPECT($L105, fail, 'GetOrSet "get"'), $EXPECT($L106, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3454
3507
  return { $loc, token: $1 };
3455
3508
  });
3456
3509
  function GetOrSet(state) {
@@ -3462,7 +3515,7 @@ var Civet = (() => {
3462
3515
  return GetOrSet$0(state);
3463
3516
  }
3464
3517
  }
3465
- var If$0 = $TV($EXPECT($L106, fail, 'If "if"'), function($skip, $loc, $0, $1) {
3518
+ var If$0 = $TV($EXPECT($L107, fail, 'If "if"'), function($skip, $loc, $0, $1) {
3466
3519
  return { $loc, token: $1 };
3467
3520
  });
3468
3521
  function If(state) {
@@ -3474,7 +3527,7 @@ var Civet = (() => {
3474
3527
  return If$0(state);
3475
3528
  }
3476
3529
  }
3477
- var Import$0 = $TS($S($EXPECT($L13, fail, 'Import "import"'), $Y($EXPECT($R26, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
3530
+ var Import$0 = $TS($S($EXPECT($L13, fail, 'Import "import"'), $Y($EXPECT($R27, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
3478
3531
  return { $loc, token: $1 };
3479
3532
  });
3480
3533
  function Import(state) {
@@ -3498,7 +3551,7 @@ var Civet = (() => {
3498
3551
  return In$0(state);
3499
3552
  }
3500
3553
  }
3501
- var LetOrConst$0 = $TV($C($EXPECT($L107, fail, 'LetOrConst "let"'), $EXPECT($L108, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
3554
+ var LetOrConst$0 = $TV($C($EXPECT($L108, fail, 'LetOrConst "let"'), $EXPECT($L109, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
3502
3555
  return { $loc, token: $1 };
3503
3556
  });
3504
3557
  function LetOrConst(state) {
@@ -3510,7 +3563,7 @@ var Civet = (() => {
3510
3563
  return LetOrConst$0(state);
3511
3564
  }
3512
3565
  }
3513
- var Loop$0 = $TS($S($EXPECT($L109, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3566
+ var Loop$0 = $TS($S($EXPECT($L110, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3514
3567
  return { $loc, token: "while(true)" };
3515
3568
  });
3516
3569
  function Loop(state) {
@@ -3522,7 +3575,7 @@ var Civet = (() => {
3522
3575
  return Loop$0(state);
3523
3576
  }
3524
3577
  }
3525
- var New$0 = $TV($EXPECT($L110, fail, 'New "new"'), function($skip, $loc, $0, $1) {
3578
+ var New$0 = $TV($EXPECT($L111, fail, 'New "new"'), function($skip, $loc, $0, $1) {
3526
3579
  return { $loc, token: $1 };
3527
3580
  });
3528
3581
  function New(state) {
@@ -3534,7 +3587,7 @@ var Civet = (() => {
3534
3587
  return New$0(state);
3535
3588
  }
3536
3589
  }
3537
- var Of$0 = $TV($EXPECT($L111, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
3590
+ var Of$0 = $TV($EXPECT($L112, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
3538
3591
  return { $loc, token: $1 };
3539
3592
  });
3540
3593
  function Of(state) {
@@ -3546,7 +3599,7 @@ var Civet = (() => {
3546
3599
  return Of$0(state);
3547
3600
  }
3548
3601
  }
3549
- var OpenBrace$0 = $TV($EXPECT($L112, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
3602
+ var OpenBrace$0 = $TV($EXPECT($L113, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
3550
3603
  return { $loc, token: $1 };
3551
3604
  });
3552
3605
  function OpenBrace(state) {
@@ -3558,7 +3611,7 @@ var Civet = (() => {
3558
3611
  return OpenBrace$0(state);
3559
3612
  }
3560
3613
  }
3561
- var OpenBracket$0 = $TV($EXPECT($L113, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
3614
+ var OpenBracket$0 = $TV($EXPECT($L114, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
3562
3615
  return { $loc, token: $1 };
3563
3616
  });
3564
3617
  function OpenBracket(state) {
@@ -3570,7 +3623,7 @@ var Civet = (() => {
3570
3623
  return OpenBracket$0(state);
3571
3624
  }
3572
3625
  }
3573
- var OpenParen$0 = $TV($EXPECT($L114, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
3626
+ var OpenParen$0 = $TV($EXPECT($L115, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
3574
3627
  return { $loc, token: $1 };
3575
3628
  });
3576
3629
  function OpenParen(state) {
@@ -3582,7 +3635,7 @@ var Civet = (() => {
3582
3635
  return OpenParen$0(state);
3583
3636
  }
3584
3637
  }
3585
- var QuestionMark$0 = $TV($EXPECT($L115, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
3638
+ var QuestionMark$0 = $TV($EXPECT($L116, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
3586
3639
  return { $loc, token: $1 };
3587
3640
  });
3588
3641
  function QuestionMark(state) {
@@ -3594,7 +3647,7 @@ var Civet = (() => {
3594
3647
  return QuestionMark$0(state);
3595
3648
  }
3596
3649
  }
3597
- var Return$0 = $TS($S($EXPECT($L116, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3650
+ var Return$0 = $TS($S($EXPECT($L117, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3598
3651
  return { $loc, token: $1 };
3599
3652
  });
3600
3653
  function Return(state) {
@@ -3618,10 +3671,10 @@ var Civet = (() => {
3618
3671
  return Semicolon$0(state);
3619
3672
  }
3620
3673
  }
3621
- var Static$0 = $TV($EXPECT($L117, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
3674
+ var Static$0 = $TV($EXPECT($L118, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
3622
3675
  return { $loc, token: $1 };
3623
3676
  });
3624
- var Static$1 = $TV($EXPECT($L11, fail, 'Static "@"'), function($skip, $loc, $0, $1) {
3677
+ var Static$1 = $TS($S($EXPECT($L11, fail, 'Static "@"'), $N($EXPECT($L115, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
3625
3678
  return { $loc, token: "static " };
3626
3679
  });
3627
3680
  function Static(state) {
@@ -3631,7 +3684,7 @@ var Civet = (() => {
3631
3684
  return Static$0(state) || Static$1(state);
3632
3685
  }
3633
3686
  }
3634
- var Switch$0 = $TV($EXPECT($L118, fail, 'Switch "switch"'), function($skip, $loc, $0, $1) {
3687
+ var Switch$0 = $TV($EXPECT($L119, fail, 'Switch "switch"'), function($skip, $loc, $0, $1) {
3635
3688
  return { $loc, token: $1 };
3636
3689
  });
3637
3690
  function Switch(state) {
@@ -3643,7 +3696,7 @@ var Civet = (() => {
3643
3696
  return Switch$0(state);
3644
3697
  }
3645
3698
  }
3646
- var Target$0 = $TV($EXPECT($L119, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
3699
+ var Target$0 = $TV($EXPECT($L120, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
3647
3700
  return { $loc, token: $1 };
3648
3701
  });
3649
3702
  function Target(state) {
@@ -3655,7 +3708,7 @@ var Civet = (() => {
3655
3708
  return Target$0(state);
3656
3709
  }
3657
3710
  }
3658
- var TripleDoubleQuote$0 = $TV($EXPECT($L120, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
3711
+ var TripleDoubleQuote$0 = $TV($EXPECT($L121, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
3659
3712
  return { $loc, token: "`" };
3660
3713
  });
3661
3714
  function TripleDoubleQuote(state) {
@@ -3667,7 +3720,7 @@ var Civet = (() => {
3667
3720
  return TripleDoubleQuote$0(state);
3668
3721
  }
3669
3722
  }
3670
- var TripleSingleQuote$0 = $TV($EXPECT($L121, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
3723
+ var TripleSingleQuote$0 = $TV($EXPECT($L122, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
3671
3724
  return { $loc, token: "`" };
3672
3725
  });
3673
3726
  function TripleSingleQuote(state) {
@@ -3679,7 +3732,19 @@ var Civet = (() => {
3679
3732
  return TripleSingleQuote$0(state);
3680
3733
  }
3681
3734
  }
3682
- var Try$0 = $TV($EXPECT($L122, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
3735
+ var TripleTick$0 = $TV($EXPECT($L123, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
3736
+ return { $loc, token: "`" };
3737
+ });
3738
+ function TripleTick(state) {
3739
+ if (state.verbose)
3740
+ console.log("ENTER:", "TripleTick");
3741
+ if (state.tokenize) {
3742
+ return $TOKEN("TripleTick", state, TripleTick$0(state));
3743
+ } else {
3744
+ return TripleTick$0(state);
3745
+ }
3746
+ }
3747
+ var Try$0 = $TV($EXPECT($L124, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
3683
3748
  return { $loc, token: $1 };
3684
3749
  });
3685
3750
  function Try(state) {
@@ -3691,7 +3756,7 @@ var Civet = (() => {
3691
3756
  return Try$0(state);
3692
3757
  }
3693
3758
  }
3694
- var Unless$0 = $TV($EXPECT($L123, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
3759
+ var Unless$0 = $TV($EXPECT($L125, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
3695
3760
  return { $loc, token: $1 };
3696
3761
  });
3697
3762
  function Unless(state) {
@@ -3703,7 +3768,7 @@ var Civet = (() => {
3703
3768
  return Unless$0(state);
3704
3769
  }
3705
3770
  }
3706
- var Var$0 = $TV($EXPECT($L124, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
3771
+ var Var$0 = $TV($EXPECT($L126, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
3707
3772
  return { $loc, token: $1 };
3708
3773
  });
3709
3774
  function Var(state) {
@@ -3715,7 +3780,7 @@ var Civet = (() => {
3715
3780
  return Var$0(state);
3716
3781
  }
3717
3782
  }
3718
- var When$0 = $TS($S($EXPECT($L125, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3783
+ var When$0 = $TS($S($EXPECT($L127, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3719
3784
  return { $loc, token: "case" };
3720
3785
  });
3721
3786
  function When(state) {
@@ -3741,7 +3806,7 @@ var Civet = (() => {
3741
3806
  return JSXElement$0(state) || JSXElement$1(state);
3742
3807
  }
3743
3808
  }
3744
- var JSXSelfClosingElement$0 = $S($EXPECT($L7, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L126, fail, 'JSXSelfClosingElement "/>"'));
3809
+ var JSXSelfClosingElement$0 = $S($EXPECT($L7, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L128, fail, 'JSXSelfClosingElement "/>"'));
3745
3810
  function JSXSelfClosingElement(state) {
3746
3811
  if (state.verbose)
3747
3812
  console.log("ENTER:", "JSXSelfClosingElement");
@@ -3761,7 +3826,7 @@ var Civet = (() => {
3761
3826
  return JSXOpeningElement$0(state);
3762
3827
  }
3763
3828
  }
3764
- var JSXClosingElement$0 = $S($EXPECT($L127, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L54, fail, 'JSXClosingElement ">"'));
3829
+ var JSXClosingElement$0 = $S($EXPECT($L129, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L54, fail, 'JSXClosingElement ">"'));
3765
3830
  function JSXClosingElement(state) {
3766
3831
  if (state.verbose)
3767
3832
  console.log("ENTER:", "JSXClosingElement");
@@ -3771,7 +3836,7 @@ var Civet = (() => {
3771
3836
  return JSXClosingElement$0(state);
3772
3837
  }
3773
3838
  }
3774
- var JSXFragment$0 = $S($EXPECT($L128, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L129, fail, 'JSXFragment "</>"'));
3839
+ var JSXFragment$0 = $S($EXPECT($L130, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L131, fail, 'JSXFragment "</>"'));
3775
3840
  function JSXFragment(state) {
3776
3841
  if (state.verbose)
3777
3842
  console.log("ENTER:", "JSXFragment");
@@ -3791,7 +3856,7 @@ var Civet = (() => {
3791
3856
  return JSXElementName$0(state);
3792
3857
  }
3793
3858
  }
3794
- var JSXIdentifierName$0 = $R$0($EXPECT($R27, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
3859
+ var JSXIdentifierName$0 = $R$0($EXPECT($R28, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
3795
3860
  function JSXIdentifierName(state) {
3796
3861
  if (state.verbose)
3797
3862
  console.log("ENTER:", "JSXIdentifierName");
@@ -3840,8 +3905,8 @@ var Civet = (() => {
3840
3905
  return JSXAttributeInitializer$0(state);
3841
3906
  }
3842
3907
  }
3843
- var JSXAttributeValue$0 = $R$0($EXPECT($R28, fail, 'JSXAttributeValue /"[^"]*"/'));
3844
- var JSXAttributeValue$1 = $R$0($EXPECT($R29, fail, "JSXAttributeValue /'[^']*'/"));
3908
+ var JSXAttributeValue$0 = $R$0($EXPECT($R29, fail, 'JSXAttributeValue /"[^"]*"/'));
3909
+ var JSXAttributeValue$1 = $R$0($EXPECT($R30, fail, "JSXAttributeValue /'[^']*'/"));
3845
3910
  var JSXAttributeValue$2 = $S(OpenBrace, __, AssignmentExpression, __, CloseBrace);
3846
3911
  var JSXAttributeValue$3 = JSXElement;
3847
3912
  var JSXAttributeValue$4 = JSXFragment;
@@ -3873,7 +3938,7 @@ var Civet = (() => {
3873
3938
  return JSXChild$0(state) || JSXChild$1(state) || JSXChild$2(state) || JSXChild$3(state);
3874
3939
  }
3875
3940
  }
3876
- var JSXText$0 = $R$0($EXPECT($R30, fail, "JSXText /[^{}<>]+/"));
3941
+ var JSXText$0 = $R$0($EXPECT($R31, fail, "JSXText /[^{}<>]+/"));
3877
3942
  function JSXText(state) {
3878
3943
  if (state.verbose)
3879
3944
  console.log("ENTER:", "JSXText");
@@ -3905,7 +3970,7 @@ var Civet = (() => {
3905
3970
  return TypeDeclaration$0(state);
3906
3971
  }
3907
3972
  }
3908
- var TypeDeclarationModifier$0 = $S($EXPECT($L130, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
3973
+ var TypeDeclarationModifier$0 = $S($EXPECT($L132, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
3909
3974
  var TypeDeclarationModifier$1 = Export;
3910
3975
  function TypeDeclarationModifier(state) {
3911
3976
  if (state.tokenize) {
@@ -3924,7 +3989,7 @@ var Civet = (() => {
3924
3989
  return TypeDeclarationRest$0(state) || TypeDeclarationRest$1(state) || TypeDeclarationRest$2(state);
3925
3990
  }
3926
3991
  }
3927
- var TypeKeyword$0 = $S($EXPECT($L131, fail, 'TypeKeyword "type"'), NonIdContinue);
3992
+ var TypeKeyword$0 = $S($EXPECT($L133, fail, 'TypeKeyword "type"'), NonIdContinue);
3928
3993
  function TypeKeyword(state) {
3929
3994
  if (state.verbose)
3930
3995
  console.log("ENTER:", "TypeKeyword");
@@ -3934,7 +3999,7 @@ var Civet = (() => {
3934
3999
  return TypeKeyword$0(state);
3935
4000
  }
3936
4001
  }
3937
- var Interface$0 = $S($EXPECT($L132, fail, 'Interface "interface"'), NonIdContinue);
4002
+ var Interface$0 = $S($EXPECT($L134, fail, 'Interface "interface"'), NonIdContinue);
3938
4003
  function Interface(state) {
3939
4004
  if (state.verbose)
3940
4005
  console.log("ENTER:", "Interface");
@@ -3944,7 +4009,7 @@ var Civet = (() => {
3944
4009
  return Interface$0(state);
3945
4010
  }
3946
4011
  }
3947
- var Namespace$0 = $S($EXPECT($L133, fail, 'Namespace "namespace"'), NonIdContinue);
4012
+ var Namespace$0 = $S($EXPECT($L135, fail, 'Namespace "namespace"'), NonIdContinue);
3948
4013
  function Namespace(state) {
3949
4014
  if (state.verbose)
3950
4015
  console.log("ENTER:", "Namespace");
@@ -4048,7 +4113,7 @@ var Civet = (() => {
4048
4113
  return NestedTypeDeclaration$0(state);
4049
4114
  }
4050
4115
  }
4051
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R31, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L134, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R32, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
4116
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R32, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L136, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R33, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
4052
4117
  function TypeIndexSignature(state) {
4053
4118
  if (state.verbose)
4054
4119
  console.log("ENTER:", "TypeIndexSignature");
@@ -4079,7 +4144,7 @@ var Civet = (() => {
4079
4144
  return TypeSuffix$0(state);
4080
4145
  }
4081
4146
  }
4082
- var ReturnTypeSuffix$0 = $T($S(__, Colon, $E($S(__, $EXPECT($L135, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function(value) {
4147
+ var ReturnTypeSuffix$0 = $T($S(__, Colon, $E($S(__, $EXPECT($L137, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function(value) {
4083
4148
  return { "ts": true, "children": value };
4084
4149
  });
4085
4150
  function ReturnTypeSuffix(state) {
@@ -4141,9 +4206,9 @@ var Civet = (() => {
4141
4206
  return TypeUnarySuffix$0(state);
4142
4207
  }
4143
4208
  }
4144
- var TypeUnaryOp$0 = $EXPECT($L136, fail, 'TypeUnaryOp "keyof"');
4209
+ var TypeUnaryOp$0 = $EXPECT($L138, fail, 'TypeUnaryOp "keyof"');
4145
4210
  var TypeUnaryOp$1 = $EXPECT($L72, fail, 'TypeUnaryOp "typeof"');
4146
- var TypeUnaryOp$2 = $EXPECT($L137, fail, 'TypeUnaryOp "infer"');
4211
+ var TypeUnaryOp$2 = $EXPECT($L139, fail, 'TypeUnaryOp "infer"');
4147
4212
  function TypeUnaryOp(state) {
4148
4213
  if (state.tokenize) {
4149
4214
  return $TOKEN("TypeUnaryOp", state, TypeUnaryOp$0(state) || TypeUnaryOp$1(state) || TypeUnaryOp$2(state));
@@ -4185,7 +4250,7 @@ var Civet = (() => {
4185
4250
  }
4186
4251
  var TypeLiteral$0 = Literal;
4187
4252
  var TypeLiteral$1 = $EXPECT($L71, fail, 'TypeLiteral "void"');
4188
- var TypeLiteral$2 = $EXPECT($L138, fail, 'TypeLiteral "[]"');
4253
+ var TypeLiteral$2 = $EXPECT($L140, fail, 'TypeLiteral "[]"');
4189
4254
  function TypeLiteral(state) {
4190
4255
  if (state.tokenize) {
4191
4256
  return $TOKEN("TypeLiteral", state, TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state));
@@ -4269,7 +4334,7 @@ var Civet = (() => {
4269
4334
  return TypeParameterDelimiter$0(state) || TypeParameterDelimiter$1(state) || TypeParameterDelimiter$2(state) || TypeParameterDelimiter$3(state);
4270
4335
  }
4271
4336
  }
4272
- var Shebang$0 = $S($R$0($EXPECT($R33, fail, "Shebang /#![^\\r\\n]*/")), EOL);
4337
+ var Shebang$0 = $S($R$0($EXPECT($R34, fail, "Shebang /#![^\\r\\n]*/")), EOL);
4273
4338
  function Shebang(state) {
4274
4339
  if (state.verbose)
4275
4340
  console.log("ENTER:", "Shebang");
@@ -4279,7 +4344,7 @@ var Civet = (() => {
4279
4344
  return Shebang$0(state);
4280
4345
  }
4281
4346
  }
4282
- var DirectivePrologue$0 = $Q($S($R$0($EXPECT($R34, fail, "DirectivePrologue /[\\t ]*/")), StringLiteral, $TEXT(StatementDelimiter), EOS));
4347
+ var DirectivePrologue$0 = $Q($S($R$0($EXPECT($R35, fail, "DirectivePrologue /[\\t ]*/")), StringLiteral, $TEXT(StatementDelimiter), EOS));
4283
4348
  function DirectivePrologue(state) {
4284
4349
  if (state.verbose)
4285
4350
  console.log("ENTER:", "DirectivePrologue");
@@ -4299,7 +4364,7 @@ var Civet = (() => {
4299
4364
  return EOS$0(state);
4300
4365
  }
4301
4366
  }
4302
- var EOL$0 = $R$0($EXPECT($R35, fail, "EOL /\\r\\n|\\n|\\r|$/"));
4367
+ var EOL$0 = $R$0($EXPECT($R36, fail, "EOL /\\r\\n|\\n|\\r|$/"));
4303
4368
  function EOL(state) {
4304
4369
  if (state.verbose)
4305
4370
  console.log("ENTER:", "EOL");
@@ -4309,7 +4374,7 @@ var Civet = (() => {
4309
4374
  return EOL$0(state);
4310
4375
  }
4311
4376
  }
4312
- var EOF$0 = $R$0($EXPECT($R36, fail, "EOF /$/"));
4377
+ var EOF$0 = $R$0($EXPECT($R37, fail, "EOF /$/"));
4313
4378
  function EOF(state) {
4314
4379
  if (state.verbose)
4315
4380
  console.log("ENTER:", "EOF");
@@ -4472,15 +4537,57 @@ var Civet = (() => {
4472
4537
  const compatRe = /use coffee-compat/;
4473
4538
  module.coffeeCompat = directives.some((d) => d[1].token?.match(compatRe));
4474
4539
  }
4475
- module.dedentBlockString = function({ $loc: $loc2, token: str }) {
4476
- const spacing = str.match(/^(\r?\n|\n)\s+/);
4540
+ module.parsePosition = function() {
4541
+ let s = Error().stack.split(/\n at /);
4542
+ s.shift();
4543
+ s = s.filter((e) => !e.match(/^eval/)).map((e) => e.split(" ")[0]);
4544
+ s = s.slice(1, s.indexOf("Program") + 1);
4545
+ return s;
4546
+ };
4547
+ module.dedentBlockSubstitutions = function($02) {
4548
+ const [s, strWithSubstitutions, e] = $02;
4549
+ if (strWithSubstitutions.length === 0) {
4550
+ return $02;
4551
+ }
4552
+ let initialSpacing, i = 0, l = strWithSubstitutions.length, results = [s];
4553
+ const { token } = strWithSubstitutions[0];
4554
+ if (token) {
4555
+ initialSpacing = token.match(/^(\r?\n|\n)\s+/);
4556
+ } else {
4557
+ initialSpacing = false;
4558
+ }
4559
+ while (i < l) {
4560
+ let segment = strWithSubstitutions[i];
4561
+ if (segment.token) {
4562
+ segment = module.dedentBlockString(segment, initialSpacing, false);
4563
+ if (i === 0) {
4564
+ segment.token = segment.token.replace(/^(\r?\n|\n)/, "");
4565
+ }
4566
+ if (i === l - 1) {
4567
+ segment.token = segment.token.replace(/(\r?\n|\n)[ \t]*$/, "");
4568
+ }
4569
+ results.push(segment);
4570
+ } else {
4571
+ results.push(segment);
4572
+ }
4573
+ i++;
4574
+ }
4575
+ results.push(e);
4576
+ return results;
4577
+ };
4578
+ module.dedentBlockString = function({ $loc: $loc2, token: str }, spacing, trim = true) {
4579
+ if (spacing == null)
4580
+ spacing = str.match(/^(\r?\n|\n)[ \t]+/);
4477
4581
  if (spacing) {
4478
4582
  str = str.replaceAll(spacing[0], "\n");
4479
4583
  const l = spacing.length;
4480
4584
  $loc2.pos += l;
4481
4585
  $loc2.length -= l;
4482
4586
  }
4483
- str = str.replace(/^(\r?\n|\n)/, "").replace(/(\r?\n|\n)[ \t]*$/, "").replace(/(`|\$)/g, "\\$1");
4587
+ if (trim) {
4588
+ str = str.replace(/^(\r?\n|\n)/, "").replace(/(\r?\n|\n)[ \t]*$/, "");
4589
+ }
4590
+ str = str.replace(/(`|\$)/g, "\\$1");
4484
4591
  return {
4485
4592
  $loc: $loc2,
4486
4593
  token: str
@@ -4497,7 +4604,7 @@ var Civet = (() => {
4497
4604
  return Init$0(state);
4498
4605
  }
4499
4606
  }
4500
- var Indent$0 = $TV($Q($C($EXPECT($L139, fail, 'Indent " "'), $EXPECT($L140, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
4607
+ var Indent$0 = $TV($Q($C($EXPECT($L141, fail, 'Indent " "'), $EXPECT($L142, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
4501
4608
  const level = $1.length;
4502
4609
  return {
4503
4610
  $loc,