@danielx/civet 0.4.2 → 0.4.3

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,
@@ -642,6 +645,7 @@ var Civet = (() => {
642
645
  Target,
643
646
  TripleDoubleQuote,
644
647
  TripleSingleQuote,
648
+ TripleTick,
645
649
  Try,
646
650
  Unless,
647
651
  Var,
@@ -811,59 +815,61 @@ var Civet = (() => {
811
815
  var $L85 = $L(":=");
812
816
  var $L86 = $L('"');
813
817
  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(" ");
818
+ var $L88 = $L("#{");
819
+ var $L89 = $L("${");
820
+ var $L90 = $L("/*");
821
+ var $L91 = $L("*/");
822
+ var $L92 = $L("###");
823
+ var $L93 = $L("as");
824
+ var $L94 = $L("async");
825
+ var $L95 = $L("await");
826
+ var $L96 = $L("catch");
827
+ var $L97 = $L("class");
828
+ var $L98 = $L(":");
829
+ var $L99 = $L(".");
830
+ var $L100 = $L("else");
831
+ var $L101 = $L("export");
832
+ var $L102 = $L("for");
833
+ var $L103 = $L("from");
834
+ var $L104 = $L("function");
835
+ var $L105 = $L("get");
836
+ var $L106 = $L("set");
837
+ var $L107 = $L("if");
838
+ var $L108 = $L("let");
839
+ var $L109 = $L("const");
840
+ var $L110 = $L("loop");
841
+ var $L111 = $L("new");
842
+ var $L112 = $L("of");
843
+ var $L113 = $L("{");
844
+ var $L114 = $L("[");
845
+ var $L115 = $L("(");
846
+ var $L116 = $L("?");
847
+ var $L117 = $L("return");
848
+ var $L118 = $L("static");
849
+ var $L119 = $L("switch");
850
+ var $L120 = $L("target");
851
+ var $L121 = $L('"""');
852
+ var $L122 = $L("'''");
853
+ var $L123 = $L("```");
854
+ var $L124 = $L("try");
855
+ var $L125 = $L("unless");
856
+ var $L126 = $L("var");
857
+ var $L127 = $L("when");
858
+ var $L128 = $L("/>");
859
+ var $L129 = $L("</");
860
+ var $L130 = $L("<>");
861
+ var $L131 = $L("</>");
862
+ var $L132 = $L("declare");
863
+ var $L133 = $L("type");
864
+ var $L134 = $L("interface");
865
+ var $L135 = $L("namespace");
866
+ var $L136 = $L("readonly");
867
+ var $L137 = $L("asserts");
868
+ var $L138 = $L("keyof");
869
+ var $L139 = $L("infer");
870
+ var $L140 = $L("[]");
871
+ var $L141 = $L(" ");
872
+ var $L142 = $L(" ");
867
873
  var $R0 = $R(new RegExp("(of)(?!\\p{ID_Continue})", "suy"));
868
874
  var $R1 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
869
875
  var $R2 = $R(new RegExp("[!~+-]", "suy"));
@@ -875,7 +881,7 @@ var Civet = (() => {
875
881
  var $R8 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*", "suy"));
876
882
  var $R9 = $R(new RegExp('(?:\\\\.|[^"])+', "suy"));
877
883
  var $R10 = $R(new RegExp("(?:\\\\.|[^'])+", "suy"));
878
- var $R11 = $R(new RegExp('(?:"(?!"")|\\\\.|[^"])*', "suy"));
884
+ var $R11 = $R(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
879
885
  var $R12 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
880
886
  var $R13 = $R(new RegExp("[*\\/\\r\\n]", "suy"));
881
887
  var $R14 = $R(new RegExp("(?:\\\\.|[^\\/\\r\\n])+", "suy"));
@@ -2037,14 +2043,25 @@ var Civet = (() => {
2037
2043
  return MethodModifier$0(state) || MethodModifier$1(state) || MethodModifier$2(state) || MethodModifier$3(state);
2038
2044
  }
2039
2045
  }
2040
- var MethodSignature$0 = $S($E(MethodModifier), ClassElementName, $Q(_), Parameters);
2041
- function MethodSignature(state) {
2046
+ var ConstructorShorthand$0 = $TV($EXPECT($L11, fail, 'ConstructorShorthand "@"'), function($skip, $loc, $0, $1) {
2047
+ return { $loc, token: "constructor" };
2048
+ });
2049
+ function ConstructorShorthand(state) {
2042
2050
  if (state.verbose)
2043
- console.log("ENTER:", "MethodSignature");
2051
+ console.log("ENTER:", "ConstructorShorthand");
2052
+ if (state.tokenize) {
2053
+ return $TOKEN("ConstructorShorthand", state, ConstructorShorthand$0(state));
2054
+ } else {
2055
+ return ConstructorShorthand$0(state);
2056
+ }
2057
+ }
2058
+ var MethodSignature$0 = $S(ConstructorShorthand, Parameters);
2059
+ var MethodSignature$1 = $S($E(MethodModifier), ClassElementName, $Q(_), Parameters);
2060
+ function MethodSignature(state) {
2044
2061
  if (state.tokenize) {
2045
- return $TOKEN("MethodSignature", state, MethodSignature$0(state));
2062
+ return $TOKEN("MethodSignature", state, MethodSignature$0(state) || MethodSignature$1(state));
2046
2063
  } else {
2047
- return MethodSignature$0(state);
2064
+ return MethodSignature$0(state) || MethodSignature$1(state);
2048
2065
  }
2049
2066
  }
2050
2067
  var ClassElementName$0 = PropertyName;
@@ -2931,11 +2948,38 @@ var Civet = (() => {
2931
2948
  return HexLiteral$0(state);
2932
2949
  }
2933
2950
  }
2934
- var StringLiteral$0 = $TS($S(TripleDoubleQuote, TripleDoubleStringCharacters, TripleDoubleQuote), function($skip, $loc, $0, $1, $2, $3) {
2951
+ var StringLiteral$0 = $TS($S(TripleDoubleQuote, $Q($C(TripleDoubleStringCharacters, CoffeeStringSubstitution)), TripleDoubleQuote), function($skip, $loc, $0, $1, $2, $3) {
2935
2952
  var s = $1;
2936
- var str = $2;
2953
+ var strWithSubstitutions = $2;
2937
2954
  var e = $3;
2938
- return [s, module.dedentBlockString(str), e];
2955
+ if (strWithSubstitutions.length === 0) {
2956
+ return $0;
2957
+ }
2958
+ let initialSpacing, i = 0, l = strWithSubstitutions.length, results = [s];
2959
+ const { token } = strWithSubstitutions[0];
2960
+ if (token) {
2961
+ initialSpacing = token.match(/^(\r?\n|\n)\s+/);
2962
+ } else {
2963
+ initialSpacing = false;
2964
+ }
2965
+ while (i < l) {
2966
+ let segment = strWithSubstitutions[i];
2967
+ if (segment.token) {
2968
+ segment = module.dedentBlockString(segment, initialSpacing, false);
2969
+ if (i === 0) {
2970
+ segment.token = segment.token.replace(/^(\r?\n|\n)/, "");
2971
+ }
2972
+ if (i === l - 1) {
2973
+ segment.token = segment.token.replace(/(\r?\n|\n)[ \t]*$/, "");
2974
+ }
2975
+ results.push(segment);
2976
+ } else {
2977
+ results.push(segment);
2978
+ }
2979
+ i++;
2980
+ }
2981
+ results.push(e);
2982
+ return results;
2939
2983
  });
2940
2984
  var StringLiteral$1 = $TS($S(TripleSingleQuote, TripleSingleStringCharacters, TripleSingleQuote), function($skip, $loc, $0, $1, $2, $3) {
2941
2985
  var s = $1;
@@ -2976,7 +3020,7 @@ var Civet = (() => {
2976
3020
  return SingleStringCharacter$0(state);
2977
3021
  }
2978
3022
  }
2979
- var TripleDoubleStringCharacters$0 = $TR($EXPECT($R11, fail, 'TripleDoubleStringCharacters /(?:"(?!"")|\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3023
+ var TripleDoubleStringCharacters$0 = $TR($EXPECT($R11, fail, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
2980
3024
  return { $loc, token: $0 };
2981
3025
  });
2982
3026
  function TripleDoubleStringCharacters(state) {
@@ -3000,6 +3044,28 @@ var Civet = (() => {
3000
3044
  return TripleSingleStringCharacters$0(state);
3001
3045
  }
3002
3046
  }
3047
+ var CoffeeStringSubstitution$0 = $S(CoffeeSubstitutionStart, Expression, __, CloseBrace);
3048
+ function CoffeeStringSubstitution(state) {
3049
+ if (state.verbose)
3050
+ console.log("ENTER:", "CoffeeStringSubstitution");
3051
+ if (state.tokenize) {
3052
+ return $TOKEN("CoffeeStringSubstitution", state, CoffeeStringSubstitution$0(state));
3053
+ } else {
3054
+ return CoffeeStringSubstitution$0(state);
3055
+ }
3056
+ }
3057
+ var CoffeeSubstitutionStart$0 = $TV($EXPECT($L88, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
3058
+ return { $loc, token: "${" };
3059
+ });
3060
+ function CoffeeSubstitutionStart(state) {
3061
+ if (state.verbose)
3062
+ console.log("ENTER:", "CoffeeSubstitutionStart");
3063
+ if (state.tokenize) {
3064
+ return $TOKEN("CoffeeSubstitutionStart", state, CoffeeSubstitutionStart$0(state));
3065
+ } else {
3066
+ return CoffeeSubstitutionStart$0(state);
3067
+ }
3068
+ }
3003
3069
  var RegularExpressionLiteral$0 = $TV($TEXT($S($EXPECT($L45, fail, 'RegularExpressionLiteral "/"'), RegularExpressionBody, $EXPECT($L45, fail, 'RegularExpressionLiteral "/"'), RegularExpressionFlags)), function($skip, $loc, $0, $1) {
3004
3070
  return { $loc, token: $1 };
3005
3071
  });
@@ -3052,7 +3118,7 @@ var Civet = (() => {
3052
3118
  return TemplateLiteral$0(state);
3053
3119
  }
3054
3120
  }
3055
- var TemplateSubstitution$0 = $S($EXPECT($L88, fail, 'TemplateSubstitution "${"'), Expression, __, CloseBrace);
3121
+ var TemplateSubstitution$0 = $S($EXPECT($L89, fail, 'TemplateSubstitution "${"'), Expression, __, CloseBrace);
3056
3122
  function TemplateSubstitution(state) {
3057
3123
  if (state.verbose)
3058
3124
  console.log("ENTER:", "TemplateSubstitution");
@@ -3111,7 +3177,7 @@ var Civet = (() => {
3111
3177
  return MultiLineComment$0(state) || MultiLineComment$1(state);
3112
3178
  }
3113
3179
  }
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) {
3180
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L90, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L91, fail, 'JSMultiLineComment "*/"')), $EXPECT($R19, fail, "JSMultiLineComment /./"))), $EXPECT($L91, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3115
3181
  return { $loc, token: $1 };
3116
3182
  });
3117
3183
  function JSMultiLineComment(state) {
@@ -3137,7 +3203,7 @@ var Civet = (() => {
3137
3203
  return CoffeeSingleLineComment$0(state);
3138
3204
  }
3139
3205
  }
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) {
3206
+ var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L92, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L92, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L91, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R19, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L92, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3141
3207
  return { $loc, token: `/*${$2}*/` };
3142
3208
  });
3143
3209
  function CoffeeMultiLineComment(state) {
@@ -3149,7 +3215,7 @@ var Civet = (() => {
3149
3215
  return CoffeeMultiLineComment$0(state);
3150
3216
  }
3151
3217
  }
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) {
3218
+ var InlineComment$0 = $TV($TEXT($S($EXPECT($L90, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L91, fail, 'InlineComment "*/"')), $EXPECT($R21, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L91, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3153
3219
  return { $loc, token: $1 };
3154
3220
  });
3155
3221
  function InlineComment(state) {
@@ -3258,7 +3324,7 @@ var Civet = (() => {
3258
3324
  return Loc$0(state);
3259
3325
  }
3260
3326
  }
3261
- var As$0 = $TS($S($EXPECT($L92, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3327
+ var As$0 = $TS($S($EXPECT($L93, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3262
3328
  return { $loc, token: $1 };
3263
3329
  });
3264
3330
  function As(state) {
@@ -3270,7 +3336,7 @@ var Civet = (() => {
3270
3336
  return As$0(state);
3271
3337
  }
3272
3338
  }
3273
- var Async$0 = $TV($EXPECT($L93, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3339
+ var Async$0 = $TV($EXPECT($L94, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3274
3340
  return { $loc, token: $1 };
3275
3341
  });
3276
3342
  function Async(state) {
@@ -3282,7 +3348,7 @@ var Civet = (() => {
3282
3348
  return Async$0(state);
3283
3349
  }
3284
3350
  }
3285
- var Await$0 = $TS($S($EXPECT($L94, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3351
+ var Await$0 = $TS($S($EXPECT($L95, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3286
3352
  return { $loc, token: $1 };
3287
3353
  });
3288
3354
  function Await(state) {
@@ -3294,7 +3360,7 @@ var Civet = (() => {
3294
3360
  return Await$0(state);
3295
3361
  }
3296
3362
  }
3297
- var Catch$0 = $TV($EXPECT($L95, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3363
+ var Catch$0 = $TV($EXPECT($L96, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3298
3364
  return { $loc, token: $1 };
3299
3365
  });
3300
3366
  function Catch(state) {
@@ -3306,7 +3372,7 @@ var Civet = (() => {
3306
3372
  return Catch$0(state);
3307
3373
  }
3308
3374
  }
3309
- var Class$0 = $TV($EXPECT($L96, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3375
+ var Class$0 = $TV($EXPECT($L97, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3310
3376
  return { $loc, token: $1 };
3311
3377
  });
3312
3378
  function Class(state) {
@@ -3354,7 +3420,7 @@ var Civet = (() => {
3354
3420
  return CloseParen$0(state);
3355
3421
  }
3356
3422
  }
3357
- var Colon$0 = $TV($EXPECT($L97, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3423
+ var Colon$0 = $TV($EXPECT($L98, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3358
3424
  return { $loc, token: $1 };
3359
3425
  });
3360
3426
  function Colon(state) {
@@ -3366,7 +3432,7 @@ var Civet = (() => {
3366
3432
  return Colon$0(state);
3367
3433
  }
3368
3434
  }
3369
- var Dot$0 = $TV($EXPECT($L98, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3435
+ var Dot$0 = $TV($EXPECT($L99, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3370
3436
  return { $loc, token: $1 };
3371
3437
  });
3372
3438
  function Dot(state) {
@@ -3378,7 +3444,7 @@ var Civet = (() => {
3378
3444
  return Dot$0(state);
3379
3445
  }
3380
3446
  }
3381
- var Else$0 = $TV($EXPECT($L99, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3447
+ var Else$0 = $TV($EXPECT($L100, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3382
3448
  return { $loc, token: $1 };
3383
3449
  });
3384
3450
  function Else(state) {
@@ -3402,7 +3468,7 @@ var Civet = (() => {
3402
3468
  return Equals$0(state);
3403
3469
  }
3404
3470
  }
3405
- var Export$0 = $TS($S($EXPECT($L100, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3471
+ var Export$0 = $TS($S($EXPECT($L101, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3406
3472
  return { $loc, token: $1 };
3407
3473
  });
3408
3474
  function Export(state) {
@@ -3414,7 +3480,7 @@ var Civet = (() => {
3414
3480
  return Export$0(state);
3415
3481
  }
3416
3482
  }
3417
- var For$0 = $TS($S($EXPECT($L101, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3483
+ var For$0 = $TS($S($EXPECT($L102, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3418
3484
  return { $loc, token: $1 };
3419
3485
  });
3420
3486
  function For(state) {
@@ -3426,7 +3492,7 @@ var Civet = (() => {
3426
3492
  return For$0(state);
3427
3493
  }
3428
3494
  }
3429
- var From$0 = $TS($S($EXPECT($L102, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3495
+ var From$0 = $TS($S($EXPECT($L103, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3430
3496
  return { $loc, token: $1 };
3431
3497
  });
3432
3498
  function From(state) {
@@ -3438,7 +3504,7 @@ var Civet = (() => {
3438
3504
  return From$0(state);
3439
3505
  }
3440
3506
  }
3441
- var Function$0 = $TV($EXPECT($L103, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
3507
+ var Function$0 = $TV($EXPECT($L104, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
3442
3508
  return { $loc, token: $1 };
3443
3509
  });
3444
3510
  function Function(state) {
@@ -3450,7 +3516,7 @@ var Civet = (() => {
3450
3516
  return Function$0(state);
3451
3517
  }
3452
3518
  }
3453
- var GetOrSet$0 = $TS($S($C($EXPECT($L104, fail, 'GetOrSet "get"'), $EXPECT($L105, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3519
+ var GetOrSet$0 = $TS($S($C($EXPECT($L105, fail, 'GetOrSet "get"'), $EXPECT($L106, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3454
3520
  return { $loc, token: $1 };
3455
3521
  });
3456
3522
  function GetOrSet(state) {
@@ -3462,7 +3528,7 @@ var Civet = (() => {
3462
3528
  return GetOrSet$0(state);
3463
3529
  }
3464
3530
  }
3465
- var If$0 = $TV($EXPECT($L106, fail, 'If "if"'), function($skip, $loc, $0, $1) {
3531
+ var If$0 = $TV($EXPECT($L107, fail, 'If "if"'), function($skip, $loc, $0, $1) {
3466
3532
  return { $loc, token: $1 };
3467
3533
  });
3468
3534
  function If(state) {
@@ -3498,7 +3564,7 @@ var Civet = (() => {
3498
3564
  return In$0(state);
3499
3565
  }
3500
3566
  }
3501
- var LetOrConst$0 = $TV($C($EXPECT($L107, fail, 'LetOrConst "let"'), $EXPECT($L108, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
3567
+ var LetOrConst$0 = $TV($C($EXPECT($L108, fail, 'LetOrConst "let"'), $EXPECT($L109, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
3502
3568
  return { $loc, token: $1 };
3503
3569
  });
3504
3570
  function LetOrConst(state) {
@@ -3510,7 +3576,7 @@ var Civet = (() => {
3510
3576
  return LetOrConst$0(state);
3511
3577
  }
3512
3578
  }
3513
- var Loop$0 = $TS($S($EXPECT($L109, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3579
+ var Loop$0 = $TS($S($EXPECT($L110, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3514
3580
  return { $loc, token: "while(true)" };
3515
3581
  });
3516
3582
  function Loop(state) {
@@ -3522,7 +3588,7 @@ var Civet = (() => {
3522
3588
  return Loop$0(state);
3523
3589
  }
3524
3590
  }
3525
- var New$0 = $TV($EXPECT($L110, fail, 'New "new"'), function($skip, $loc, $0, $1) {
3591
+ var New$0 = $TV($EXPECT($L111, fail, 'New "new"'), function($skip, $loc, $0, $1) {
3526
3592
  return { $loc, token: $1 };
3527
3593
  });
3528
3594
  function New(state) {
@@ -3534,7 +3600,7 @@ var Civet = (() => {
3534
3600
  return New$0(state);
3535
3601
  }
3536
3602
  }
3537
- var Of$0 = $TV($EXPECT($L111, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
3603
+ var Of$0 = $TV($EXPECT($L112, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
3538
3604
  return { $loc, token: $1 };
3539
3605
  });
3540
3606
  function Of(state) {
@@ -3546,7 +3612,7 @@ var Civet = (() => {
3546
3612
  return Of$0(state);
3547
3613
  }
3548
3614
  }
3549
- var OpenBrace$0 = $TV($EXPECT($L112, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
3615
+ var OpenBrace$0 = $TV($EXPECT($L113, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
3550
3616
  return { $loc, token: $1 };
3551
3617
  });
3552
3618
  function OpenBrace(state) {
@@ -3558,7 +3624,7 @@ var Civet = (() => {
3558
3624
  return OpenBrace$0(state);
3559
3625
  }
3560
3626
  }
3561
- var OpenBracket$0 = $TV($EXPECT($L113, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
3627
+ var OpenBracket$0 = $TV($EXPECT($L114, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
3562
3628
  return { $loc, token: $1 };
3563
3629
  });
3564
3630
  function OpenBracket(state) {
@@ -3570,7 +3636,7 @@ var Civet = (() => {
3570
3636
  return OpenBracket$0(state);
3571
3637
  }
3572
3638
  }
3573
- var OpenParen$0 = $TV($EXPECT($L114, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
3639
+ var OpenParen$0 = $TV($EXPECT($L115, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
3574
3640
  return { $loc, token: $1 };
3575
3641
  });
3576
3642
  function OpenParen(state) {
@@ -3582,7 +3648,7 @@ var Civet = (() => {
3582
3648
  return OpenParen$0(state);
3583
3649
  }
3584
3650
  }
3585
- var QuestionMark$0 = $TV($EXPECT($L115, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
3651
+ var QuestionMark$0 = $TV($EXPECT($L116, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
3586
3652
  return { $loc, token: $1 };
3587
3653
  });
3588
3654
  function QuestionMark(state) {
@@ -3594,7 +3660,7 @@ var Civet = (() => {
3594
3660
  return QuestionMark$0(state);
3595
3661
  }
3596
3662
  }
3597
- var Return$0 = $TS($S($EXPECT($L116, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3663
+ var Return$0 = $TS($S($EXPECT($L117, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3598
3664
  return { $loc, token: $1 };
3599
3665
  });
3600
3666
  function Return(state) {
@@ -3618,10 +3684,10 @@ var Civet = (() => {
3618
3684
  return Semicolon$0(state);
3619
3685
  }
3620
3686
  }
3621
- var Static$0 = $TV($EXPECT($L117, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
3687
+ var Static$0 = $TV($EXPECT($L118, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
3622
3688
  return { $loc, token: $1 };
3623
3689
  });
3624
- var Static$1 = $TV($EXPECT($L11, fail, 'Static "@"'), function($skip, $loc, $0, $1) {
3690
+ var Static$1 = $TS($S($EXPECT($L11, fail, 'Static "@"'), $N($EXPECT($L115, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
3625
3691
  return { $loc, token: "static " };
3626
3692
  });
3627
3693
  function Static(state) {
@@ -3631,7 +3697,7 @@ var Civet = (() => {
3631
3697
  return Static$0(state) || Static$1(state);
3632
3698
  }
3633
3699
  }
3634
- var Switch$0 = $TV($EXPECT($L118, fail, 'Switch "switch"'), function($skip, $loc, $0, $1) {
3700
+ var Switch$0 = $TV($EXPECT($L119, fail, 'Switch "switch"'), function($skip, $loc, $0, $1) {
3635
3701
  return { $loc, token: $1 };
3636
3702
  });
3637
3703
  function Switch(state) {
@@ -3643,7 +3709,7 @@ var Civet = (() => {
3643
3709
  return Switch$0(state);
3644
3710
  }
3645
3711
  }
3646
- var Target$0 = $TV($EXPECT($L119, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
3712
+ var Target$0 = $TV($EXPECT($L120, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
3647
3713
  return { $loc, token: $1 };
3648
3714
  });
3649
3715
  function Target(state) {
@@ -3655,7 +3721,7 @@ var Civet = (() => {
3655
3721
  return Target$0(state);
3656
3722
  }
3657
3723
  }
3658
- var TripleDoubleQuote$0 = $TV($EXPECT($L120, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
3724
+ var TripleDoubleQuote$0 = $TV($EXPECT($L121, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
3659
3725
  return { $loc, token: "`" };
3660
3726
  });
3661
3727
  function TripleDoubleQuote(state) {
@@ -3667,7 +3733,7 @@ var Civet = (() => {
3667
3733
  return TripleDoubleQuote$0(state);
3668
3734
  }
3669
3735
  }
3670
- var TripleSingleQuote$0 = $TV($EXPECT($L121, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
3736
+ var TripleSingleQuote$0 = $TV($EXPECT($L122, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
3671
3737
  return { $loc, token: "`" };
3672
3738
  });
3673
3739
  function TripleSingleQuote(state) {
@@ -3679,7 +3745,19 @@ var Civet = (() => {
3679
3745
  return TripleSingleQuote$0(state);
3680
3746
  }
3681
3747
  }
3682
- var Try$0 = $TV($EXPECT($L122, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
3748
+ var TripleTick$0 = $TV($EXPECT($L123, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
3749
+ return { $loc, token: "`" };
3750
+ });
3751
+ function TripleTick(state) {
3752
+ if (state.verbose)
3753
+ console.log("ENTER:", "TripleTick");
3754
+ if (state.tokenize) {
3755
+ return $TOKEN("TripleTick", state, TripleTick$0(state));
3756
+ } else {
3757
+ return TripleTick$0(state);
3758
+ }
3759
+ }
3760
+ var Try$0 = $TV($EXPECT($L124, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
3683
3761
  return { $loc, token: $1 };
3684
3762
  });
3685
3763
  function Try(state) {
@@ -3691,7 +3769,7 @@ var Civet = (() => {
3691
3769
  return Try$0(state);
3692
3770
  }
3693
3771
  }
3694
- var Unless$0 = $TV($EXPECT($L123, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
3772
+ var Unless$0 = $TV($EXPECT($L125, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
3695
3773
  return { $loc, token: $1 };
3696
3774
  });
3697
3775
  function Unless(state) {
@@ -3703,7 +3781,7 @@ var Civet = (() => {
3703
3781
  return Unless$0(state);
3704
3782
  }
3705
3783
  }
3706
- var Var$0 = $TV($EXPECT($L124, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
3784
+ var Var$0 = $TV($EXPECT($L126, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
3707
3785
  return { $loc, token: $1 };
3708
3786
  });
3709
3787
  function Var(state) {
@@ -3715,7 +3793,7 @@ var Civet = (() => {
3715
3793
  return Var$0(state);
3716
3794
  }
3717
3795
  }
3718
- var When$0 = $TS($S($EXPECT($L125, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3796
+ var When$0 = $TS($S($EXPECT($L127, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3719
3797
  return { $loc, token: "case" };
3720
3798
  });
3721
3799
  function When(state) {
@@ -3741,7 +3819,7 @@ var Civet = (() => {
3741
3819
  return JSXElement$0(state) || JSXElement$1(state);
3742
3820
  }
3743
3821
  }
3744
- var JSXSelfClosingElement$0 = $S($EXPECT($L7, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L126, fail, 'JSXSelfClosingElement "/>"'));
3822
+ var JSXSelfClosingElement$0 = $S($EXPECT($L7, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L128, fail, 'JSXSelfClosingElement "/>"'));
3745
3823
  function JSXSelfClosingElement(state) {
3746
3824
  if (state.verbose)
3747
3825
  console.log("ENTER:", "JSXSelfClosingElement");
@@ -3761,7 +3839,7 @@ var Civet = (() => {
3761
3839
  return JSXOpeningElement$0(state);
3762
3840
  }
3763
3841
  }
3764
- var JSXClosingElement$0 = $S($EXPECT($L127, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L54, fail, 'JSXClosingElement ">"'));
3842
+ var JSXClosingElement$0 = $S($EXPECT($L129, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L54, fail, 'JSXClosingElement ">"'));
3765
3843
  function JSXClosingElement(state) {
3766
3844
  if (state.verbose)
3767
3845
  console.log("ENTER:", "JSXClosingElement");
@@ -3771,7 +3849,7 @@ var Civet = (() => {
3771
3849
  return JSXClosingElement$0(state);
3772
3850
  }
3773
3851
  }
3774
- var JSXFragment$0 = $S($EXPECT($L128, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L129, fail, 'JSXFragment "</>"'));
3852
+ var JSXFragment$0 = $S($EXPECT($L130, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L131, fail, 'JSXFragment "</>"'));
3775
3853
  function JSXFragment(state) {
3776
3854
  if (state.verbose)
3777
3855
  console.log("ENTER:", "JSXFragment");
@@ -3905,7 +3983,7 @@ var Civet = (() => {
3905
3983
  return TypeDeclaration$0(state);
3906
3984
  }
3907
3985
  }
3908
- var TypeDeclarationModifier$0 = $S($EXPECT($L130, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
3986
+ var TypeDeclarationModifier$0 = $S($EXPECT($L132, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
3909
3987
  var TypeDeclarationModifier$1 = Export;
3910
3988
  function TypeDeclarationModifier(state) {
3911
3989
  if (state.tokenize) {
@@ -3924,7 +4002,7 @@ var Civet = (() => {
3924
4002
  return TypeDeclarationRest$0(state) || TypeDeclarationRest$1(state) || TypeDeclarationRest$2(state);
3925
4003
  }
3926
4004
  }
3927
- var TypeKeyword$0 = $S($EXPECT($L131, fail, 'TypeKeyword "type"'), NonIdContinue);
4005
+ var TypeKeyword$0 = $S($EXPECT($L133, fail, 'TypeKeyword "type"'), NonIdContinue);
3928
4006
  function TypeKeyword(state) {
3929
4007
  if (state.verbose)
3930
4008
  console.log("ENTER:", "TypeKeyword");
@@ -3934,7 +4012,7 @@ var Civet = (() => {
3934
4012
  return TypeKeyword$0(state);
3935
4013
  }
3936
4014
  }
3937
- var Interface$0 = $S($EXPECT($L132, fail, 'Interface "interface"'), NonIdContinue);
4015
+ var Interface$0 = $S($EXPECT($L134, fail, 'Interface "interface"'), NonIdContinue);
3938
4016
  function Interface(state) {
3939
4017
  if (state.verbose)
3940
4018
  console.log("ENTER:", "Interface");
@@ -3944,7 +4022,7 @@ var Civet = (() => {
3944
4022
  return Interface$0(state);
3945
4023
  }
3946
4024
  }
3947
- var Namespace$0 = $S($EXPECT($L133, fail, 'Namespace "namespace"'), NonIdContinue);
4025
+ var Namespace$0 = $S($EXPECT($L135, fail, 'Namespace "namespace"'), NonIdContinue);
3948
4026
  function Namespace(state) {
3949
4027
  if (state.verbose)
3950
4028
  console.log("ENTER:", "Namespace");
@@ -4048,7 +4126,7 @@ var Civet = (() => {
4048
4126
  return NestedTypeDeclaration$0(state);
4049
4127
  }
4050
4128
  }
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)));
4129
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R31, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L136, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R32, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
4052
4130
  function TypeIndexSignature(state) {
4053
4131
  if (state.verbose)
4054
4132
  console.log("ENTER:", "TypeIndexSignature");
@@ -4079,7 +4157,7 @@ var Civet = (() => {
4079
4157
  return TypeSuffix$0(state);
4080
4158
  }
4081
4159
  }
4082
- var ReturnTypeSuffix$0 = $T($S(__, Colon, $E($S(__, $EXPECT($L135, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function(value) {
4160
+ var ReturnTypeSuffix$0 = $T($S(__, Colon, $E($S(__, $EXPECT($L137, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function(value) {
4083
4161
  return { "ts": true, "children": value };
4084
4162
  });
4085
4163
  function ReturnTypeSuffix(state) {
@@ -4141,9 +4219,9 @@ var Civet = (() => {
4141
4219
  return TypeUnarySuffix$0(state);
4142
4220
  }
4143
4221
  }
4144
- var TypeUnaryOp$0 = $EXPECT($L136, fail, 'TypeUnaryOp "keyof"');
4222
+ var TypeUnaryOp$0 = $EXPECT($L138, fail, 'TypeUnaryOp "keyof"');
4145
4223
  var TypeUnaryOp$1 = $EXPECT($L72, fail, 'TypeUnaryOp "typeof"');
4146
- var TypeUnaryOp$2 = $EXPECT($L137, fail, 'TypeUnaryOp "infer"');
4224
+ var TypeUnaryOp$2 = $EXPECT($L139, fail, 'TypeUnaryOp "infer"');
4147
4225
  function TypeUnaryOp(state) {
4148
4226
  if (state.tokenize) {
4149
4227
  return $TOKEN("TypeUnaryOp", state, TypeUnaryOp$0(state) || TypeUnaryOp$1(state) || TypeUnaryOp$2(state));
@@ -4185,7 +4263,7 @@ var Civet = (() => {
4185
4263
  }
4186
4264
  var TypeLiteral$0 = Literal;
4187
4265
  var TypeLiteral$1 = $EXPECT($L71, fail, 'TypeLiteral "void"');
4188
- var TypeLiteral$2 = $EXPECT($L138, fail, 'TypeLiteral "[]"');
4266
+ var TypeLiteral$2 = $EXPECT($L140, fail, 'TypeLiteral "[]"');
4189
4267
  function TypeLiteral(state) {
4190
4268
  if (state.tokenize) {
4191
4269
  return $TOKEN("TypeLiteral", state, TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state));
@@ -4472,15 +4550,19 @@ var Civet = (() => {
4472
4550
  const compatRe = /use coffee-compat/;
4473
4551
  module.coffeeCompat = directives.some((d) => d[1].token?.match(compatRe));
4474
4552
  }
4475
- module.dedentBlockString = function({ $loc: $loc2, token: str }) {
4476
- const spacing = str.match(/^(\r?\n|\n)\s+/);
4553
+ module.dedentBlockString = function({ $loc: $loc2, token: str }, spacing, trim = true) {
4554
+ if (spacing == null)
4555
+ spacing = str.match(/^(\r?\n|\n)[ \t]+/);
4477
4556
  if (spacing) {
4478
4557
  str = str.replaceAll(spacing[0], "\n");
4479
4558
  const l = spacing.length;
4480
4559
  $loc2.pos += l;
4481
4560
  $loc2.length -= l;
4482
4561
  }
4483
- str = str.replace(/^(\r?\n|\n)/, "").replace(/(\r?\n|\n)[ \t]*$/, "").replace(/(`|\$)/g, "\\$1");
4562
+ if (trim) {
4563
+ str = str.replace(/^(\r?\n|\n)/, "").replace(/(\r?\n|\n)[ \t]*$/, "");
4564
+ }
4565
+ str = str.replace(/(`|\$)/g, "\\$1");
4484
4566
  return {
4485
4567
  $loc: $loc2,
4486
4568
  token: str
@@ -4497,7 +4579,7 @@ var Civet = (() => {
4497
4579
  return Init$0(state);
4498
4580
  }
4499
4581
  }
4500
- var Indent$0 = $TV($Q($C($EXPECT($L139, fail, 'Indent " "'), $EXPECT($L140, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
4582
+ var Indent$0 = $TV($Q($C($EXPECT($L141, fail, 'Indent " "'), $EXPECT($L142, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
4501
4583
  const level = $1.length;
4502
4584
  return {
4503
4585
  $loc,