@danielx/civet 0.4.3 → 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/README.md CHANGED
@@ -168,7 +168,7 @@ Things Added that CoffeeScript didn't
168
168
  - `<` as `extends` shorthand
169
169
  - `@#id` -> `this.#id` shorthand for private identifiers
170
170
  - `import` shorthand `x from ./x` -> `import x from "./x"`
171
- - [ ] TODO `\`\`\`` Block Template Strings
171
+ - `\`\`\`` Block Template Strings
172
172
  - Class constructor shorthand `@( ... )`
173
173
  - ClassStaticBlock
174
174
  - `get`/`set` method definitions
package/dist/browser.js CHANGED
@@ -593,6 +593,7 @@ var Civet = (() => {
593
593
  TemplateLiteral,
594
594
  TemplateSubstitution,
595
595
  TemplateCharacters,
596
+ TemplateBlockCharacters,
596
597
  ReservedWord,
597
598
  Comment,
598
599
  SingleLineComment,
@@ -887,26 +888,27 @@ var Civet = (() => {
887
888
  var $R14 = $R(new RegExp("(?:\\\\.|[^\\/\\r\\n])+", "suy"));
888
889
  var $R15 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
889
890
  var $R16 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
890
- 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"));
891
- var $R18 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
892
- var $R19 = $R(new RegExp(".", "suy"));
893
- var $R20 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
894
- var $R21 = $R(new RegExp("[^\\r\\n]", "suy"));
895
- var $R22 = $R(new RegExp("[ \\t]+", "suy"));
896
- var $R23 = $R(new RegExp("[\\t ]+", "suy"));
897
- var $R24 = $R(new RegExp("[\\s]+", "suy"));
898
- var $R25 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
899
- var $R26 = $R(new RegExp("\\s", "suy"));
900
- var $R27 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
901
- var $R28 = $R(new RegExp('"[^"]*"', "suy"));
902
- var $R29 = $R(new RegExp("'[^']*'", "suy"));
903
- var $R30 = $R(new RegExp("[^{}<>]+", "suy"));
904
- var $R31 = $R(new RegExp("[+-]?", "suy"));
905
- var $R32 = $R(new RegExp("[+-]", "suy"));
906
- var $R33 = $R(new RegExp("#![^\\r\\n]*", "suy"));
907
- var $R34 = $R(new RegExp("[\\t ]*", "suy"));
908
- var $R35 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
909
- 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"));
910
912
  var Program$0 = $S(Init, __, $Q(TopLevelStatement), __);
911
913
  function Program(state) {
912
914
  if (state.verbose)
@@ -2949,37 +2951,7 @@ var Civet = (() => {
2949
2951
  }
2950
2952
  }
2951
2953
  var StringLiteral$0 = $TS($S(TripleDoubleQuote, $Q($C(TripleDoubleStringCharacters, CoffeeStringSubstitution)), TripleDoubleQuote), function($skip, $loc, $0, $1, $2, $3) {
2952
- var s = $1;
2953
- var strWithSubstitutions = $2;
2954
- var e = $3;
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;
2954
+ return module.dedentBlockSubstitutions($0);
2983
2955
  });
2984
2956
  var StringLiteral$1 = $TS($S(TripleSingleQuote, TripleSingleStringCharacters, TripleSingleQuote), function($skip, $loc, $0, $1, $2, $3) {
2985
2957
  var s = $1;
@@ -3108,14 +3080,15 @@ var Civet = (() => {
3108
3080
  return RegularExpressionFlags$0(state);
3109
3081
  }
3110
3082
  }
3111
- 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 "`"'));
3112
3087
  function TemplateLiteral(state) {
3113
- if (state.verbose)
3114
- console.log("ENTER:", "TemplateLiteral");
3115
3088
  if (state.tokenize) {
3116
- return $TOKEN("TemplateLiteral", state, TemplateLiteral$0(state));
3089
+ return $TOKEN("TemplateLiteral", state, TemplateLiteral$0(state) || TemplateLiteral$1(state));
3117
3090
  } else {
3118
- return TemplateLiteral$0(state);
3091
+ return TemplateLiteral$0(state) || TemplateLiteral$1(state);
3119
3092
  }
3120
3093
  }
3121
3094
  var TemplateSubstitution$0 = $S($EXPECT($L89, fail, 'TemplateSubstitution "${"'), Expression, __, CloseBrace);
@@ -3128,7 +3101,9 @@ var Civet = (() => {
3128
3101
  return TemplateSubstitution$0(state);
3129
3102
  }
3130
3103
  }
3131
- 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
+ });
3132
3107
  function TemplateCharacters(state) {
3133
3108
  if (state.verbose)
3134
3109
  console.log("ENTER:", "TemplateCharacters");
@@ -3138,7 +3113,19 @@ var Civet = (() => {
3138
3113
  return TemplateCharacters$0(state);
3139
3114
  }
3140
3115
  }
3141
- 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})/"));
3142
3129
  function ReservedWord(state) {
3143
3130
  if (state.verbose)
3144
3131
  console.log("ENTER:", "ReservedWord");
@@ -3157,7 +3144,7 @@ var Civet = (() => {
3157
3144
  return Comment$0(state) || Comment$1(state);
3158
3145
  }
3159
3146
  }
3160
- 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) {
3161
3148
  return { $loc, token: $0 };
3162
3149
  });
3163
3150
  var SingleLineComment$1 = CoffeeSingleLineComment;
@@ -3177,7 +3164,7 @@ var Civet = (() => {
3177
3164
  return MultiLineComment$0(state) || MultiLineComment$1(state);
3178
3165
  }
3179
3166
  }
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) {
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) {
3181
3168
  return { $loc, token: $1 };
3182
3169
  });
3183
3170
  function JSMultiLineComment(state) {
@@ -3189,7 +3176,7 @@ var Civet = (() => {
3189
3176
  return JSMultiLineComment$0(state);
3190
3177
  }
3191
3178
  }
3192
- 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) {
3193
3180
  if (!module.coffeeCompat)
3194
3181
  return $skip;
3195
3182
  return { $loc, token: `//${$1}` };
@@ -3203,7 +3190,7 @@ var Civet = (() => {
3203
3190
  return CoffeeSingleLineComment$0(state);
3204
3191
  }
3205
3192
  }
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) {
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) {
3207
3194
  return { $loc, token: `/*${$2}*/` };
3208
3195
  });
3209
3196
  function CoffeeMultiLineComment(state) {
@@ -3215,7 +3202,7 @@ var Civet = (() => {
3215
3202
  return CoffeeMultiLineComment$0(state);
3216
3203
  }
3217
3204
  }
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) {
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) {
3219
3206
  return { $loc, token: $1 };
3220
3207
  });
3221
3208
  function InlineComment(state) {
@@ -3227,7 +3214,7 @@ var Civet = (() => {
3227
3214
  return InlineComment$0(state);
3228
3215
  }
3229
3216
  }
3230
- 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);
3231
3218
  function RestOfLine(state) {
3232
3219
  if (state.verbose)
3233
3220
  console.log("ENTER:", "RestOfLine");
@@ -3237,7 +3224,7 @@ var Civet = (() => {
3237
3224
  return RestOfLine$0(state);
3238
3225
  }
3239
3226
  }
3240
- var TrailingComment$0 = $R$0($EXPECT($R23, fail, "TrailingComment /[\\t ]+/"));
3227
+ var TrailingComment$0 = $R$0($EXPECT($R24, fail, "TrailingComment /[\\t ]+/"));
3241
3228
  var TrailingComment$1 = InlineComment;
3242
3229
  var TrailingComment$2 = SingleLineComment;
3243
3230
  function TrailingComment(state) {
@@ -3257,7 +3244,7 @@ var Civet = (() => {
3257
3244
  return _$0(state);
3258
3245
  }
3259
3246
  }
3260
- 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) {
3261
3248
  return { $loc, token: $0 };
3262
3249
  });
3263
3250
  function NonNewlineWhitespace(state) {
@@ -3279,7 +3266,7 @@ var Civet = (() => {
3279
3266
  return __$0(state);
3280
3267
  }
3281
3268
  }
3282
- 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) {
3283
3270
  return { $loc, token: $0 };
3284
3271
  });
3285
3272
  function Whitespace(state) {
@@ -3302,7 +3289,7 @@ var Civet = (() => {
3302
3289
  return StatementDelimiter$0(state) || StatementDelimiter$1(state);
3303
3290
  }
3304
3291
  }
3305
- 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})/"));
3306
3293
  function NonIdContinue(state) {
3307
3294
  if (state.verbose)
3308
3295
  console.log("ENTER:", "NonIdContinue");
@@ -3540,7 +3527,7 @@ var Civet = (() => {
3540
3527
  return If$0(state);
3541
3528
  }
3542
3529
  }
3543
- 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) {
3544
3531
  return { $loc, token: $1 };
3545
3532
  });
3546
3533
  function Import(state) {
@@ -3869,7 +3856,7 @@ var Civet = (() => {
3869
3856
  return JSXElementName$0(state);
3870
3857
  }
3871
3858
  }
3872
- 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$-])*/"));
3873
3860
  function JSXIdentifierName(state) {
3874
3861
  if (state.verbose)
3875
3862
  console.log("ENTER:", "JSXIdentifierName");
@@ -3918,8 +3905,8 @@ var Civet = (() => {
3918
3905
  return JSXAttributeInitializer$0(state);
3919
3906
  }
3920
3907
  }
3921
- var JSXAttributeValue$0 = $R$0($EXPECT($R28, fail, 'JSXAttributeValue /"[^"]*"/'));
3922
- 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 /'[^']*'/"));
3923
3910
  var JSXAttributeValue$2 = $S(OpenBrace, __, AssignmentExpression, __, CloseBrace);
3924
3911
  var JSXAttributeValue$3 = JSXElement;
3925
3912
  var JSXAttributeValue$4 = JSXFragment;
@@ -3951,7 +3938,7 @@ var Civet = (() => {
3951
3938
  return JSXChild$0(state) || JSXChild$1(state) || JSXChild$2(state) || JSXChild$3(state);
3952
3939
  }
3953
3940
  }
3954
- var JSXText$0 = $R$0($EXPECT($R30, fail, "JSXText /[^{}<>]+/"));
3941
+ var JSXText$0 = $R$0($EXPECT($R31, fail, "JSXText /[^{}<>]+/"));
3955
3942
  function JSXText(state) {
3956
3943
  if (state.verbose)
3957
3944
  console.log("ENTER:", "JSXText");
@@ -4126,7 +4113,7 @@ var Civet = (() => {
4126
4113
  return NestedTypeDeclaration$0(state);
4127
4114
  }
4128
4115
  }
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)));
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)));
4130
4117
  function TypeIndexSignature(state) {
4131
4118
  if (state.verbose)
4132
4119
  console.log("ENTER:", "TypeIndexSignature");
@@ -4347,7 +4334,7 @@ var Civet = (() => {
4347
4334
  return TypeParameterDelimiter$0(state) || TypeParameterDelimiter$1(state) || TypeParameterDelimiter$2(state) || TypeParameterDelimiter$3(state);
4348
4335
  }
4349
4336
  }
4350
- 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);
4351
4338
  function Shebang(state) {
4352
4339
  if (state.verbose)
4353
4340
  console.log("ENTER:", "Shebang");
@@ -4357,7 +4344,7 @@ var Civet = (() => {
4357
4344
  return Shebang$0(state);
4358
4345
  }
4359
4346
  }
4360
- 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));
4361
4348
  function DirectivePrologue(state) {
4362
4349
  if (state.verbose)
4363
4350
  console.log("ENTER:", "DirectivePrologue");
@@ -4377,7 +4364,7 @@ var Civet = (() => {
4377
4364
  return EOS$0(state);
4378
4365
  }
4379
4366
  }
4380
- 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|$/"));
4381
4368
  function EOL(state) {
4382
4369
  if (state.verbose)
4383
4370
  console.log("ENTER:", "EOL");
@@ -4387,7 +4374,7 @@ var Civet = (() => {
4387
4374
  return EOL$0(state);
4388
4375
  }
4389
4376
  }
4390
- var EOF$0 = $R$0($EXPECT($R36, fail, "EOF /$/"));
4377
+ var EOF$0 = $R$0($EXPECT($R37, fail, "EOF /$/"));
4391
4378
  function EOF(state) {
4392
4379
  if (state.verbose)
4393
4380
  console.log("ENTER:", "EOF");
@@ -4550,6 +4537,44 @@ var Civet = (() => {
4550
4537
  const compatRe = /use coffee-compat/;
4551
4538
  module.coffeeCompat = directives.some((d) => d[1].token?.match(compatRe));
4552
4539
  }
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
+ };
4553
4578
  module.dedentBlockString = function({ $loc: $loc2, token: str }, spacing, trim = true) {
4554
4579
  if (spacing == null)
4555
4580
  spacing = str.match(/^(\r?\n|\n)[ \t]+/);
package/dist/main.js CHANGED
@@ -592,6 +592,7 @@ var require_parser = __commonJS({
592
592
  TemplateLiteral,
593
593
  TemplateSubstitution,
594
594
  TemplateCharacters,
595
+ TemplateBlockCharacters,
595
596
  ReservedWord,
596
597
  Comment,
597
598
  SingleLineComment,
@@ -886,26 +887,27 @@ var require_parser = __commonJS({
886
887
  var $R14 = $R(new RegExp("(?:\\\\.|[^\\/\\r\\n])+", "suy"));
887
888
  var $R15 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
888
889
  var $R16 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
889
- 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"));
890
- var $R18 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
891
- var $R19 = $R(new RegExp(".", "suy"));
892
- var $R20 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
893
- var $R21 = $R(new RegExp("[^\\r\\n]", "suy"));
894
- var $R22 = $R(new RegExp("[ \\t]+", "suy"));
895
- var $R23 = $R(new RegExp("[\\t ]+", "suy"));
896
- var $R24 = $R(new RegExp("[\\s]+", "suy"));
897
- var $R25 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
898
- var $R26 = $R(new RegExp("\\s", "suy"));
899
- var $R27 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
900
- var $R28 = $R(new RegExp('"[^"]*"', "suy"));
901
- var $R29 = $R(new RegExp("'[^']*'", "suy"));
902
- var $R30 = $R(new RegExp("[^{}<>]+", "suy"));
903
- var $R31 = $R(new RegExp("[+-]?", "suy"));
904
- var $R32 = $R(new RegExp("[+-]", "suy"));
905
- var $R33 = $R(new RegExp("#![^\\r\\n]*", "suy"));
906
- var $R34 = $R(new RegExp("[\\t ]*", "suy"));
907
- var $R35 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
908
- var $R36 = $R(new RegExp("$", "suy"));
890
+ var $R17 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
891
+ 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"));
892
+ var $R19 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
893
+ var $R20 = $R(new RegExp(".", "suy"));
894
+ var $R21 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
895
+ var $R22 = $R(new RegExp("[^\\r\\n]", "suy"));
896
+ var $R23 = $R(new RegExp("[ \\t]+", "suy"));
897
+ var $R24 = $R(new RegExp("[\\t ]+", "suy"));
898
+ var $R25 = $R(new RegExp("[\\s]+", "suy"));
899
+ var $R26 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
900
+ var $R27 = $R(new RegExp("\\s", "suy"));
901
+ var $R28 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
902
+ var $R29 = $R(new RegExp('"[^"]*"', "suy"));
903
+ var $R30 = $R(new RegExp("'[^']*'", "suy"));
904
+ var $R31 = $R(new RegExp("[^{}<>]+", "suy"));
905
+ var $R32 = $R(new RegExp("[+-]?", "suy"));
906
+ var $R33 = $R(new RegExp("[+-]", "suy"));
907
+ var $R34 = $R(new RegExp("#![^\\r\\n]*", "suy"));
908
+ var $R35 = $R(new RegExp("[\\t ]*", "suy"));
909
+ var $R36 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
910
+ var $R37 = $R(new RegExp("$", "suy"));
909
911
  var Program$0 = $S(Init, __, $Q(TopLevelStatement), __);
910
912
  function Program(state) {
911
913
  if (state.verbose)
@@ -2948,37 +2950,7 @@ var require_parser = __commonJS({
2948
2950
  }
2949
2951
  }
2950
2952
  var StringLiteral$0 = $TS($S(TripleDoubleQuote, $Q($C(TripleDoubleStringCharacters, CoffeeStringSubstitution)), TripleDoubleQuote), function($skip, $loc, $0, $1, $2, $3) {
2951
- var s = $1;
2952
- var strWithSubstitutions = $2;
2953
- var e = $3;
2954
- if (strWithSubstitutions.length === 0) {
2955
- return $0;
2956
- }
2957
- let initialSpacing, i = 0, l = strWithSubstitutions.length, results = [s];
2958
- const { token } = strWithSubstitutions[0];
2959
- if (token) {
2960
- initialSpacing = token.match(/^(\r?\n|\n)\s+/);
2961
- } else {
2962
- initialSpacing = false;
2963
- }
2964
- while (i < l) {
2965
- let segment = strWithSubstitutions[i];
2966
- if (segment.token) {
2967
- segment = module2.dedentBlockString(segment, initialSpacing, false);
2968
- if (i === 0) {
2969
- segment.token = segment.token.replace(/^(\r?\n|\n)/, "");
2970
- }
2971
- if (i === l - 1) {
2972
- segment.token = segment.token.replace(/(\r?\n|\n)[ \t]*$/, "");
2973
- }
2974
- results.push(segment);
2975
- } else {
2976
- results.push(segment);
2977
- }
2978
- i++;
2979
- }
2980
- results.push(e);
2981
- return results;
2953
+ return module2.dedentBlockSubstitutions($0);
2982
2954
  });
2983
2955
  var StringLiteral$1 = $TS($S(TripleSingleQuote, TripleSingleStringCharacters, TripleSingleQuote), function($skip, $loc, $0, $1, $2, $3) {
2984
2956
  var s = $1;
@@ -3107,14 +3079,15 @@ var require_parser = __commonJS({
3107
3079
  return RegularExpressionFlags$0(state);
3108
3080
  }
3109
3081
  }
3110
- var TemplateLiteral$0 = $S($EXPECT($L0, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L0, fail, 'TemplateLiteral "`"'));
3082
+ var TemplateLiteral$0 = $TS($S(TripleTick, $Q($C(TemplateBlockCharacters, TemplateSubstitution)), TripleTick), function($skip, $loc, $0, $1, $2, $3) {
3083
+ return module2.dedentBlockSubstitutions($0);
3084
+ });
3085
+ var TemplateLiteral$1 = $S($EXPECT($L0, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L0, fail, 'TemplateLiteral "`"'));
3111
3086
  function TemplateLiteral(state) {
3112
- if (state.verbose)
3113
- console.log("ENTER:", "TemplateLiteral");
3114
3087
  if (state.tokenize) {
3115
- return $TOKEN("TemplateLiteral", state, TemplateLiteral$0(state));
3088
+ return $TOKEN("TemplateLiteral", state, TemplateLiteral$0(state) || TemplateLiteral$1(state));
3116
3089
  } else {
3117
- return TemplateLiteral$0(state);
3090
+ return TemplateLiteral$0(state) || TemplateLiteral$1(state);
3118
3091
  }
3119
3092
  }
3120
3093
  var TemplateSubstitution$0 = $S($EXPECT($L89, fail, 'TemplateSubstitution "${"'), Expression, __, CloseBrace);
@@ -3127,7 +3100,9 @@ var require_parser = __commonJS({
3127
3100
  return TemplateSubstitution$0(state);
3128
3101
  }
3129
3102
  }
3130
- var TemplateCharacters$0 = $R$0($EXPECT($R16, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"));
3103
+ var TemplateCharacters$0 = $TR($EXPECT($R16, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3104
+ return { $loc, token: $0 };
3105
+ });
3131
3106
  function TemplateCharacters(state) {
3132
3107
  if (state.verbose)
3133
3108
  console.log("ENTER:", "TemplateCharacters");
@@ -3137,7 +3112,19 @@ var require_parser = __commonJS({
3137
3112
  return TemplateCharacters$0(state);
3138
3113
  }
3139
3114
  }
3140
- 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})/"));
3115
+ var TemplateBlockCharacters$0 = $TR($EXPECT($R17, fail, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3116
+ return { $loc, token: $0 };
3117
+ });
3118
+ function TemplateBlockCharacters(state) {
3119
+ if (state.verbose)
3120
+ console.log("ENTER:", "TemplateBlockCharacters");
3121
+ if (state.tokenize) {
3122
+ return $TOKEN("TemplateBlockCharacters", state, TemplateBlockCharacters$0(state));
3123
+ } else {
3124
+ return TemplateBlockCharacters$0(state);
3125
+ }
3126
+ }
3127
+ 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})/"));
3141
3128
  function ReservedWord(state) {
3142
3129
  if (state.verbose)
3143
3130
  console.log("ENTER:", "ReservedWord");
@@ -3156,7 +3143,7 @@ var require_parser = __commonJS({
3156
3143
  return Comment$0(state) || Comment$1(state);
3157
3144
  }
3158
3145
  }
3159
- var SingleLineComment$0 = $TR($EXPECT($R18, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3146
+ var SingleLineComment$0 = $TR($EXPECT($R19, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3160
3147
  return { $loc, token: $0 };
3161
3148
  });
3162
3149
  var SingleLineComment$1 = CoffeeSingleLineComment;
@@ -3176,7 +3163,7 @@ var require_parser = __commonJS({
3176
3163
  return MultiLineComment$0(state) || MultiLineComment$1(state);
3177
3164
  }
3178
3165
  }
3179
- 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) {
3166
+ 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) {
3180
3167
  return { $loc, token: $1 };
3181
3168
  });
3182
3169
  function JSMultiLineComment(state) {
@@ -3188,7 +3175,7 @@ var require_parser = __commonJS({
3188
3175
  return JSMultiLineComment$0(state);
3189
3176
  }
3190
3177
  }
3191
- var CoffeeSingleLineComment$0 = $TR($EXPECT($R20, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3178
+ var CoffeeSingleLineComment$0 = $TR($EXPECT($R21, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3192
3179
  if (!module2.coffeeCompat)
3193
3180
  return $skip;
3194
3181
  return { $loc, token: `//${$1}` };
@@ -3202,7 +3189,7 @@ var require_parser = __commonJS({
3202
3189
  return CoffeeSingleLineComment$0(state);
3203
3190
  }
3204
3191
  }
3205
- 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) {
3192
+ 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) {
3206
3193
  return { $loc, token: `/*${$2}*/` };
3207
3194
  });
3208
3195
  function CoffeeMultiLineComment(state) {
@@ -3214,7 +3201,7 @@ var require_parser = __commonJS({
3214
3201
  return CoffeeMultiLineComment$0(state);
3215
3202
  }
3216
3203
  }
3217
- 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) {
3204
+ 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) {
3218
3205
  return { $loc, token: $1 };
3219
3206
  });
3220
3207
  function InlineComment(state) {
@@ -3226,7 +3213,7 @@ var require_parser = __commonJS({
3226
3213
  return InlineComment$0(state);
3227
3214
  }
3228
3215
  }
3229
- var RestOfLine$0 = $S($Q($C($R$0($EXPECT($R22, fail, "RestOfLine /[ \\t]+/")), SingleLineComment, MultiLineComment)), EOL);
3216
+ var RestOfLine$0 = $S($Q($C($R$0($EXPECT($R23, fail, "RestOfLine /[ \\t]+/")), SingleLineComment, MultiLineComment)), EOL);
3230
3217
  function RestOfLine(state) {
3231
3218
  if (state.verbose)
3232
3219
  console.log("ENTER:", "RestOfLine");
@@ -3236,7 +3223,7 @@ var require_parser = __commonJS({
3236
3223
  return RestOfLine$0(state);
3237
3224
  }
3238
3225
  }
3239
- var TrailingComment$0 = $R$0($EXPECT($R23, fail, "TrailingComment /[\\t ]+/"));
3226
+ var TrailingComment$0 = $R$0($EXPECT($R24, fail, "TrailingComment /[\\t ]+/"));
3240
3227
  var TrailingComment$1 = InlineComment;
3241
3228
  var TrailingComment$2 = SingleLineComment;
3242
3229
  function TrailingComment(state) {
@@ -3256,7 +3243,7 @@ var require_parser = __commonJS({
3256
3243
  return _$0(state);
3257
3244
  }
3258
3245
  }
3259
- var NonNewlineWhitespace$0 = $TR($EXPECT($R22, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3246
+ var NonNewlineWhitespace$0 = $TR($EXPECT($R23, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3260
3247
  return { $loc, token: $0 };
3261
3248
  });
3262
3249
  function NonNewlineWhitespace(state) {
@@ -3278,7 +3265,7 @@ var require_parser = __commonJS({
3278
3265
  return __$0(state);
3279
3266
  }
3280
3267
  }
3281
- var Whitespace$0 = $TR($EXPECT($R24, fail, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3268
+ var Whitespace$0 = $TR($EXPECT($R25, fail, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3282
3269
  return { $loc, token: $0 };
3283
3270
  });
3284
3271
  function Whitespace(state) {
@@ -3301,7 +3288,7 @@ var require_parser = __commonJS({
3301
3288
  return StatementDelimiter$0(state) || StatementDelimiter$1(state);
3302
3289
  }
3303
3290
  }
3304
- var NonIdContinue$0 = $R$0($EXPECT($R25, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
3291
+ var NonIdContinue$0 = $R$0($EXPECT($R26, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
3305
3292
  function NonIdContinue(state) {
3306
3293
  if (state.verbose)
3307
3294
  console.log("ENTER:", "NonIdContinue");
@@ -3539,7 +3526,7 @@ var require_parser = __commonJS({
3539
3526
  return If$0(state);
3540
3527
  }
3541
3528
  }
3542
- var Import$0 = $TS($S($EXPECT($L13, fail, 'Import "import"'), $Y($EXPECT($R26, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
3529
+ var Import$0 = $TS($S($EXPECT($L13, fail, 'Import "import"'), $Y($EXPECT($R27, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
3543
3530
  return { $loc, token: $1 };
3544
3531
  });
3545
3532
  function Import(state) {
@@ -3868,7 +3855,7 @@ var require_parser = __commonJS({
3868
3855
  return JSXElementName$0(state);
3869
3856
  }
3870
3857
  }
3871
- var JSXIdentifierName$0 = $R$0($EXPECT($R27, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
3858
+ var JSXIdentifierName$0 = $R$0($EXPECT($R28, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
3872
3859
  function JSXIdentifierName(state) {
3873
3860
  if (state.verbose)
3874
3861
  console.log("ENTER:", "JSXIdentifierName");
@@ -3917,8 +3904,8 @@ var require_parser = __commonJS({
3917
3904
  return JSXAttributeInitializer$0(state);
3918
3905
  }
3919
3906
  }
3920
- var JSXAttributeValue$0 = $R$0($EXPECT($R28, fail, 'JSXAttributeValue /"[^"]*"/'));
3921
- var JSXAttributeValue$1 = $R$0($EXPECT($R29, fail, "JSXAttributeValue /'[^']*'/"));
3907
+ var JSXAttributeValue$0 = $R$0($EXPECT($R29, fail, 'JSXAttributeValue /"[^"]*"/'));
3908
+ var JSXAttributeValue$1 = $R$0($EXPECT($R30, fail, "JSXAttributeValue /'[^']*'/"));
3922
3909
  var JSXAttributeValue$2 = $S(OpenBrace, __, AssignmentExpression, __, CloseBrace);
3923
3910
  var JSXAttributeValue$3 = JSXElement;
3924
3911
  var JSXAttributeValue$4 = JSXFragment;
@@ -3950,7 +3937,7 @@ var require_parser = __commonJS({
3950
3937
  return JSXChild$0(state) || JSXChild$1(state) || JSXChild$2(state) || JSXChild$3(state);
3951
3938
  }
3952
3939
  }
3953
- var JSXText$0 = $R$0($EXPECT($R30, fail, "JSXText /[^{}<>]+/"));
3940
+ var JSXText$0 = $R$0($EXPECT($R31, fail, "JSXText /[^{}<>]+/"));
3954
3941
  function JSXText(state) {
3955
3942
  if (state.verbose)
3956
3943
  console.log("ENTER:", "JSXText");
@@ -4125,7 +4112,7 @@ var require_parser = __commonJS({
4125
4112
  return NestedTypeDeclaration$0(state);
4126
4113
  }
4127
4114
  }
4128
- 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)));
4115
+ 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)));
4129
4116
  function TypeIndexSignature(state) {
4130
4117
  if (state.verbose)
4131
4118
  console.log("ENTER:", "TypeIndexSignature");
@@ -4346,7 +4333,7 @@ var require_parser = __commonJS({
4346
4333
  return TypeParameterDelimiter$0(state) || TypeParameterDelimiter$1(state) || TypeParameterDelimiter$2(state) || TypeParameterDelimiter$3(state);
4347
4334
  }
4348
4335
  }
4349
- var Shebang$0 = $S($R$0($EXPECT($R33, fail, "Shebang /#![^\\r\\n]*/")), EOL);
4336
+ var Shebang$0 = $S($R$0($EXPECT($R34, fail, "Shebang /#![^\\r\\n]*/")), EOL);
4350
4337
  function Shebang(state) {
4351
4338
  if (state.verbose)
4352
4339
  console.log("ENTER:", "Shebang");
@@ -4356,7 +4343,7 @@ var require_parser = __commonJS({
4356
4343
  return Shebang$0(state);
4357
4344
  }
4358
4345
  }
4359
- var DirectivePrologue$0 = $Q($S($R$0($EXPECT($R34, fail, "DirectivePrologue /[\\t ]*/")), StringLiteral, $TEXT(StatementDelimiter), EOS));
4346
+ var DirectivePrologue$0 = $Q($S($R$0($EXPECT($R35, fail, "DirectivePrologue /[\\t ]*/")), StringLiteral, $TEXT(StatementDelimiter), EOS));
4360
4347
  function DirectivePrologue(state) {
4361
4348
  if (state.verbose)
4362
4349
  console.log("ENTER:", "DirectivePrologue");
@@ -4376,7 +4363,7 @@ var require_parser = __commonJS({
4376
4363
  return EOS$0(state);
4377
4364
  }
4378
4365
  }
4379
- var EOL$0 = $R$0($EXPECT($R35, fail, "EOL /\\r\\n|\\n|\\r|$/"));
4366
+ var EOL$0 = $R$0($EXPECT($R36, fail, "EOL /\\r\\n|\\n|\\r|$/"));
4380
4367
  function EOL(state) {
4381
4368
  if (state.verbose)
4382
4369
  console.log("ENTER:", "EOL");
@@ -4386,7 +4373,7 @@ var require_parser = __commonJS({
4386
4373
  return EOL$0(state);
4387
4374
  }
4388
4375
  }
4389
- var EOF$0 = $R$0($EXPECT($R36, fail, "EOF /$/"));
4376
+ var EOF$0 = $R$0($EXPECT($R37, fail, "EOF /$/"));
4390
4377
  function EOF(state) {
4391
4378
  if (state.verbose)
4392
4379
  console.log("ENTER:", "EOF");
@@ -4549,6 +4536,44 @@ var require_parser = __commonJS({
4549
4536
  const compatRe = /use coffee-compat/;
4550
4537
  module2.coffeeCompat = directives.some((d) => d[1].token?.match(compatRe));
4551
4538
  }
4539
+ module2.parsePosition = function() {
4540
+ let s = Error().stack.split(/\n at /);
4541
+ s.shift();
4542
+ s = s.filter((e) => !e.match(/^eval/)).map((e) => e.split(" ")[0]);
4543
+ s = s.slice(1, s.indexOf("Program") + 1);
4544
+ return s;
4545
+ };
4546
+ module2.dedentBlockSubstitutions = function($02) {
4547
+ const [s, strWithSubstitutions, e] = $02;
4548
+ if (strWithSubstitutions.length === 0) {
4549
+ return $02;
4550
+ }
4551
+ let initialSpacing, i = 0, l = strWithSubstitutions.length, results = [s];
4552
+ const { token } = strWithSubstitutions[0];
4553
+ if (token) {
4554
+ initialSpacing = token.match(/^(\r?\n|\n)\s+/);
4555
+ } else {
4556
+ initialSpacing = false;
4557
+ }
4558
+ while (i < l) {
4559
+ let segment = strWithSubstitutions[i];
4560
+ if (segment.token) {
4561
+ segment = module2.dedentBlockString(segment, initialSpacing, false);
4562
+ if (i === 0) {
4563
+ segment.token = segment.token.replace(/^(\r?\n|\n)/, "");
4564
+ }
4565
+ if (i === l - 1) {
4566
+ segment.token = segment.token.replace(/(\r?\n|\n)[ \t]*$/, "");
4567
+ }
4568
+ results.push(segment);
4569
+ } else {
4570
+ results.push(segment);
4571
+ }
4572
+ i++;
4573
+ }
4574
+ results.push(e);
4575
+ return results;
4576
+ };
4552
4577
  module2.dedentBlockString = function({ $loc: $loc2, token: str }, spacing, trim = true) {
4553
4578
  if (spacing == null)
4554
4579
  spacing = str.match(/^(\r?\n|\n)[ \t]+/);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danielx/civet",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "CoffeeScript style syntax for TypeScript",
5
5
  "main": "dist/main.js",
6
6
  "exports": {