@danielx/civet 0.6.85 → 0.6.86

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
@@ -3142,6 +3142,7 @@ var Civet = (() => {
3142
3142
  __export(lib_exports, {
3143
3143
  addPostfixStatement: () => addPostfixStatement,
3144
3144
  adjustBindingElements: () => adjustBindingElements,
3145
+ adjustIndexAccess: () => adjustIndexAccess,
3145
3146
  attachPostfixStatementAsExpression: () => attachPostfixStatementAsExpression,
3146
3147
  blockWithPrefix: () => blockWithPrefix,
3147
3148
  convertObjectToJSXAttributes: () => convertObjectToJSXAttributes,
@@ -3205,6 +3206,18 @@ var Civet = (() => {
3205
3206
  }
3206
3207
  return post;
3207
3208
  }
3209
+ function adjustIndexAccess(dot) {
3210
+ if (gatherRecursive(dot, (node) => node.token === "?").length) {
3211
+ dot = [...dot, "["];
3212
+ } else {
3213
+ dot = replaceNodes(
3214
+ deepCopy(dot),
3215
+ (node) => node.token === ".",
3216
+ (node) => ({ ...node, token: "[" })
3217
+ );
3218
+ }
3219
+ return dot;
3220
+ }
3208
3221
  function negateCondition(condition) {
3209
3222
  let { expression } = condition;
3210
3223
  const children = condition.children.slice();
@@ -3911,6 +3924,40 @@ var Civet = (() => {
3911
3924
  return;
3912
3925
  });
3913
3926
  }
3927
+ function processNegativeIndexAccess(statements) {
3928
+ gatherRecursiveAll(statements, (n) => n.type === "NegativeIndex").forEach((exp) => {
3929
+ const { parent } = exp;
3930
+ const index = parent.children.indexOf(exp);
3931
+ let ref, subexp;
3932
+ if (index === 1) {
3933
+ const child = parent.children[0];
3934
+ ref = maybeRef(child);
3935
+ if (ref !== child) {
3936
+ subexp = parent.children.splice(0, 1);
3937
+ }
3938
+ } else if (index > 1) {
3939
+ ref = makeRef();
3940
+ subexp = parent.children.splice(0, index);
3941
+ } else {
3942
+ throw new Error("Invalid parse tree for negative index access");
3943
+ }
3944
+ if (subexp) {
3945
+ exp.hoistDec = {
3946
+ type: "Declaration",
3947
+ children: ["let ", ref],
3948
+ names: []
3949
+ };
3950
+ parent.children.unshift(makeLeftHandSideExpression({
3951
+ type: "AssignmentExpression",
3952
+ children: [ref, " = ", subexp]
3953
+ }));
3954
+ }
3955
+ return exp.len.children = [
3956
+ ref,
3957
+ ".length"
3958
+ ];
3959
+ });
3960
+ }
3914
3961
  function processProgram(root, config, m, ReservedWord) {
3915
3962
  assert.equal(m.forbidBracedApplication.length, 1, "forbidBracedApplication");
3916
3963
  assert.equal(m.forbidClassImplicitCall.length, 1, "forbidClassImplicitCall");
@@ -3920,6 +3967,7 @@ var Civet = (() => {
3920
3967
  assert.equal(m.JSXTagStack.length, 1, "JSXTagStack");
3921
3968
  addParentPointers(root);
3922
3969
  const { expressions: statements } = root;
3970
+ processNegativeIndexAccess(statements);
3923
3971
  processTypes(statements);
3924
3972
  processDeclarationConditions(statements, m.getRef);
3925
3973
  processPipelineExpressions(statements);
@@ -5600,7 +5648,7 @@ ${input.slice(result.pos)}
5600
5648
  var $R13 = $R(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
5601
5649
  var $R14 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
5602
5650
  var $R15 = $R(new RegExp("(?=\\[)", "suy"));
5603
- var $R16 = $R(new RegExp("[!+-]", "suy"));
5651
+ var $R16 = $R(new RegExp("[!+-]?", "suy"));
5604
5652
  var $R17 = $R(new RegExp("[+-]", "suy"));
5605
5653
  var $R18 = $R(new RegExp("(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2016\u2047&|*\\/!?%<>\u29FA+-])", "suy"));
5606
5654
  var $R19 = $R(new RegExp("!\\^\\^?", "suy"));
@@ -5657,24 +5705,25 @@ ${input.slice(result.pos)}
5657
5705
  var $R70 = $R(new RegExp("\\s", "suy"));
5658
5706
  var $R71 = $R(new RegExp("(?=[<])", "suy"));
5659
5707
  var $R72 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
5660
- var $R73 = $R(new RegExp("[\\s>]|\\/>", "suy"));
5661
- var $R74 = $R(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
5662
- var $R75 = $R(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
5663
- var $R76 = $R(new RegExp("[<>]", "suy"));
5664
- var $R77 = $R(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
5665
- var $R78 = $R(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
5666
- var $R79 = $R(new RegExp("[^{}<>\\r\\n]+", "suy"));
5667
- var $R80 = $R(new RegExp("[+-]?", "suy"));
5668
- var $R81 = $R(new RegExp("(?=if|unless)", "suy"));
5669
- var $R82 = $R(new RegExp("#![^\\r\\n]*", "suy"));
5670
- var $R83 = $R(new RegExp("[\\t ]*", "suy"));
5671
- var $R84 = $R(new RegExp("[ \\t]*", "suy"));
5672
- var $R85 = $R(new RegExp("[\\s]*", "suy"));
5673
- var $R86 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
5674
- var $R87 = $R(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
5675
- var $R88 = $R(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
5676
- var $R89 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
5677
- var $R90 = $R(new RegExp("[^]*", "suy"));
5708
+ var $R73 = $R(new RegExp("[!+-]", "suy"));
5709
+ var $R74 = $R(new RegExp("[\\s>]|\\/>", "suy"));
5710
+ var $R75 = $R(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
5711
+ var $R76 = $R(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
5712
+ var $R77 = $R(new RegExp("[<>]", "suy"));
5713
+ var $R78 = $R(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
5714
+ var $R79 = $R(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
5715
+ var $R80 = $R(new RegExp("[^{}<>\\r\\n]+", "suy"));
5716
+ var $R81 = $R(new RegExp("[+-]?", "suy"));
5717
+ var $R82 = $R(new RegExp("(?=if|unless)", "suy"));
5718
+ var $R83 = $R(new RegExp("#![^\\r\\n]*", "suy"));
5719
+ var $R84 = $R(new RegExp("[\\t ]*", "suy"));
5720
+ var $R85 = $R(new RegExp("[ \\t]*", "suy"));
5721
+ var $R86 = $R(new RegExp("[\\s]*", "suy"));
5722
+ var $R87 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
5723
+ var $R88 = $R(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
5724
+ var $R89 = $R(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
5725
+ var $R90 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
5726
+ var $R91 = $R(new RegExp("[^]*", "suy"));
5678
5727
  var Program$0 = $TS($S(Reset, Init, $E(EOS), TopLevelStatements, __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
5679
5728
  var statements = $4;
5680
5729
  processProgram({
@@ -7125,19 +7174,10 @@ ${input.slice(result.pos)}
7125
7174
  var PropertyAccess$0 = $TS($S(AccessStart, $C(TemplateLiteral, StringLiteral, IntegerLiteral)), function($skip, $loc, $0, $1, $2) {
7126
7175
  var dot = $1;
7127
7176
  var literal = $2;
7128
- if (gatherRecursive(dot, (node) => node.token === "?").length) {
7129
- dot = [...dot, "["];
7130
- } else {
7131
- dot = replaceNodes(
7132
- deepCopy(dot),
7133
- (node) => node.token === ".",
7134
- (node) => ({ ...node, token: "[" })
7135
- );
7136
- }
7137
7177
  return {
7138
7178
  type: "Index",
7139
7179
  children: [
7140
- dot,
7180
+ adjustIndexAccess(dot),
7141
7181
  literal,
7142
7182
  "]"
7143
7183
  ]
@@ -7147,11 +7187,20 @@ ${input.slice(result.pos)}
7147
7187
  var dot = $1;
7148
7188
  var neg = $2;
7149
7189
  var num = $3;
7150
- return [
7151
- { type: "PropertyAccess", children: [dot, "at"] },
7152
- // not including `name` so that `{x.-1}` doesn't use it
7153
- { type: "Call", children: ["(", neg, num, ")"] }
7190
+ const len = {
7191
+ children: []
7192
+ }, children = [
7193
+ adjustIndexAccess(dot),
7194
+ len,
7195
+ neg,
7196
+ num,
7197
+ "]"
7154
7198
  ];
7199
+ return {
7200
+ type: "NegativeIndex",
7201
+ children,
7202
+ len
7203
+ };
7155
7204
  });
7156
7205
  var PropertyAccess$2 = $TS($S(AccessStart, $Q(InlineComment), $C(IdentifierName, PrivateIdentifier, LengthShorthand)), function($skip, $loc, $0, $1, $2, $3) {
7157
7206
  var access = $1;
@@ -9096,17 +9145,26 @@ ${input.slice(result.pos)}
9096
9145
  children: [ws, ...prop.children]
9097
9146
  };
9098
9147
  });
9099
- var PropertyDefinition$1 = $TS($S($E(_), $TEXT($EXPECT($R16, "PropertyDefinition /[!+-]/")), PropertyName), function($skip, $loc, $0, $1, $2, $3) {
9148
+ var PropertyDefinition$1 = $TS($S($E(_), $TEXT($EXPECT($R16, "PropertyDefinition /[!+-]?/")), PropertyName, $Y(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
9100
9149
  var ws = $1;
9101
9150
  var toggle = $2;
9102
9151
  var id = $3;
9103
- const value = toggle === "+" ? "true" : "false";
9152
+ if (toggle) {
9153
+ const value = toggle === "+" ? "true" : "false";
9154
+ return {
9155
+ type: "Property",
9156
+ children: [ws, id, ": ", value],
9157
+ name: id,
9158
+ names: id.names,
9159
+ value
9160
+ };
9161
+ }
9104
9162
  return {
9105
9163
  type: "Property",
9106
- children: [ws, id, ": ", value],
9164
+ children: [ws, id],
9107
9165
  name: id,
9108
9166
  names: id.names,
9109
- value
9167
+ value: id
9110
9168
  };
9111
9169
  });
9112
9170
  var PropertyDefinition$2 = $TS($S($E(_), MethodDefinition), function($skip, $loc, $0, $1, $2) {
@@ -12983,7 +13041,7 @@ ${input.slice(result.pos)}
12983
13041
  class: $2
12984
13042
  };
12985
13043
  });
12986
- var JSXAttribute$7 = $TS($S($TEXT($EXPECT($R16, "JSXAttribute /[!+-]/")), JSXAttributeName, $Y(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
13044
+ var JSXAttribute$7 = $TS($S($TEXT($EXPECT($R73, "JSXAttribute /[!+-]/")), JSXAttributeName, $Y(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
12987
13045
  var toggle = $1;
12988
13046
  var id = $2;
12989
13047
  const value = toggle === "+" ? "true" : "false";
@@ -12993,11 +13051,11 @@ ${input.slice(result.pos)}
12993
13051
  function JSXAttribute(ctx, state) {
12994
13052
  return $EVENT_C(ctx, state, "JSXAttribute", JSXAttribute$$);
12995
13053
  }
12996
- var JSXAttributeSpace$0 = $R$0($EXPECT($R73, "JSXAttributeSpace /[\\s>]|\\/>/"));
13054
+ var JSXAttributeSpace$0 = $R$0($EXPECT($R74, "JSXAttributeSpace /[\\s>]|\\/>/"));
12997
13055
  function JSXAttributeSpace(ctx, state) {
12998
13056
  return $EVENT(ctx, state, "JSXAttributeSpace", JSXAttributeSpace$0);
12999
13057
  }
13000
- var JSXShorthandString$0 = $TR($EXPECT($R74, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13058
+ var JSXShorthandString$0 = $TR($EXPECT($R75, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13001
13059
  return quoteString($0);
13002
13060
  });
13003
13061
  var JSXShorthandString$1 = $TS($S(TemplateLiteral), function($skip, $loc, $0, $1) {
@@ -13031,7 +13089,7 @@ ${input.slice(result.pos)}
13031
13089
  }
13032
13090
  return [open, value, close];
13033
13091
  });
13034
- var JSXAttributeValue$4 = $R$0($EXPECT($R75, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
13092
+ var JSXAttributeValue$4 = $R$0($EXPECT($R76, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
13035
13093
  var JSXAttributeValue$$ = [JSXAttributeValue$0, JSXAttributeValue$1, JSXAttributeValue$2, JSXAttributeValue$3, JSXAttributeValue$4];
13036
13094
  function JSXAttributeValue(ctx, state) {
13037
13095
  return $EVENT_C(ctx, state, "JSXAttributeValue", JSXAttributeValue$$);
@@ -13044,7 +13102,7 @@ ${input.slice(result.pos)}
13044
13102
  function InlineJSXAttributeValue(ctx, state) {
13045
13103
  return $EVENT(ctx, state, "InlineJSXAttributeValue", InlineJSXAttributeValue$0);
13046
13104
  }
13047
- var InlineJSXBinaryOpRHS$0 = $TS($S($N($EXPECT($R76, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
13105
+ var InlineJSXBinaryOpRHS$0 = $TS($S($N($EXPECT($R77, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
13048
13106
  var op = $2;
13049
13107
  var rhs = $3;
13050
13108
  return [[], op, [], rhs];
@@ -13061,7 +13119,7 @@ ${input.slice(result.pos)}
13061
13119
  function InlineJSXUnaryExpression(ctx, state) {
13062
13120
  return $EVENT(ctx, state, "InlineJSXUnaryExpression", InlineJSXUnaryExpression$0);
13063
13121
  }
13064
- var InlineJSXUnaryOp$0 = $TR($EXPECT($R77, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13122
+ var InlineJSXUnaryOp$0 = $TR($EXPECT($R78, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13065
13123
  return { $loc, token: $0 };
13066
13124
  });
13067
13125
  function InlineJSXUnaryOp(ctx, state) {
@@ -13277,13 +13335,13 @@ ${input.slice(result.pos)}
13277
13335
  function JSXComment(ctx, state) {
13278
13336
  return $EVENT(ctx, state, "JSXComment", JSXComment$0);
13279
13337
  }
13280
- var JSXCommentContent$0 = $TR($EXPECT($R78, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13338
+ var JSXCommentContent$0 = $TR($EXPECT($R79, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13281
13339
  return { $loc, token: $0.replace(/\*\//g, "* /") };
13282
13340
  });
13283
13341
  function JSXCommentContent(ctx, state) {
13284
13342
  return $EVENT(ctx, state, "JSXCommentContent", JSXCommentContent$0);
13285
13343
  }
13286
- var JSXText$0 = $TR($EXPECT($R79, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13344
+ var JSXText$0 = $TR($EXPECT($R80, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13287
13345
  return {
13288
13346
  type: "JSXText",
13289
13347
  token: $0,
@@ -13704,7 +13762,7 @@ ${input.slice(result.pos)}
13704
13762
  function TypeProperty(ctx, state) {
13705
13763
  return $EVENT(ctx, state, "TypeProperty", TypeProperty$0);
13706
13764
  }
13707
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R80, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R17, "TypeIndexSignature /[+-]/")), $Y($S($E(_), QuestionMark)))));
13765
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R81, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R17, "TypeIndexSignature /[+-]/")), $Y($S($E(_), QuestionMark)))));
13708
13766
  function TypeIndexSignature(ctx, state) {
13709
13767
  return $EVENT(ctx, state, "TypeIndexSignature", TypeIndexSignature$0);
13710
13768
  }
@@ -13998,7 +14056,7 @@ ${input.slice(result.pos)}
13998
14056
  function NestedType(ctx, state) {
13999
14057
  return $EVENT(ctx, state, "NestedType", NestedType$0);
14000
14058
  }
14001
- var TypeConditional$0 = $TS($S($E(_), $EXPECT($R81, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
14059
+ var TypeConditional$0 = $TS($S($E(_), $EXPECT($R82, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
14002
14060
  return [$1, expressionizeTypeIf($3)];
14003
14061
  });
14004
14062
  var TypeConditional$1 = $TS($S(TypeCondition, NotDedented, QuestionMark, Type, __, Colon, Type), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
@@ -14191,15 +14249,15 @@ ${input.slice(result.pos)}
14191
14249
  function ThisType(ctx, state) {
14192
14250
  return $EVENT(ctx, state, "ThisType", ThisType$0);
14193
14251
  }
14194
- var Shebang$0 = $S($R$0($EXPECT($R82, "Shebang /#![^\\r\\n]*/")), EOL);
14252
+ var Shebang$0 = $S($R$0($EXPECT($R83, "Shebang /#![^\\r\\n]*/")), EOL);
14195
14253
  function Shebang(ctx, state) {
14196
14254
  return $EVENT(ctx, state, "Shebang", Shebang$0);
14197
14255
  }
14198
- var CivetPrologue$0 = $T($S($EXPECT($R83, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, $EXPECT($R84, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14256
+ var CivetPrologue$0 = $T($S($EXPECT($R84, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, $EXPECT($R85, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14199
14257
  var content = value[2];
14200
14258
  return content;
14201
14259
  });
14202
- var CivetPrologue$1 = $T($S($EXPECT($R83, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, $EXPECT($R84, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14260
+ var CivetPrologue$1 = $T($S($EXPECT($R84, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, $EXPECT($R85, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14203
14261
  var content = value[2];
14204
14262
  return content;
14205
14263
  });
@@ -14207,7 +14265,7 @@ ${input.slice(result.pos)}
14207
14265
  function CivetPrologue(ctx, state) {
14208
14266
  return $EVENT_C(ctx, state, "CivetPrologue", CivetPrologue$$);
14209
14267
  }
14210
- var CivetPrologueContent$0 = $TS($S($EXPECT($L225, 'CivetPrologueContent "civet"'), NonIdContinue, $Q(CivetOption), $EXPECT($R85, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
14268
+ var CivetPrologueContent$0 = $TS($S($EXPECT($L225, 'CivetPrologueContent "civet"'), NonIdContinue, $Q(CivetOption), $EXPECT($R86, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
14211
14269
  var options = $3;
14212
14270
  return {
14213
14271
  type: "CivetPrologue",
@@ -14218,7 +14276,7 @@ ${input.slice(result.pos)}
14218
14276
  function CivetPrologueContent(ctx, state) {
14219
14277
  return $EVENT(ctx, state, "CivetPrologueContent", CivetPrologueContent$0);
14220
14278
  }
14221
- var CivetOption$0 = $TR($EXPECT($R86, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14279
+ var CivetOption$0 = $TR($EXPECT($R87, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14222
14280
  const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
14223
14281
  if (l)
14224
14282
  return l.toUpperCase();
@@ -14235,11 +14293,11 @@ ${input.slice(result.pos)}
14235
14293
  function CivetOption(ctx, state) {
14236
14294
  return $EVENT(ctx, state, "CivetOption", CivetOption$0);
14237
14295
  }
14238
- var UnknownPrologue$0 = $S($R$0($EXPECT($R83, "UnknownPrologue /[\\t ]*/")), StringLiteral, $TEXT(SimpleStatementDelimiter), EOS);
14296
+ var UnknownPrologue$0 = $S($R$0($EXPECT($R84, "UnknownPrologue /[\\t ]*/")), StringLiteral, $TEXT(SimpleStatementDelimiter), EOS);
14239
14297
  function UnknownPrologue(ctx, state) {
14240
14298
  return $EVENT(ctx, state, "UnknownPrologue", UnknownPrologue$0);
14241
14299
  }
14242
- var TripleSlashDirective$0 = $S($R$0($EXPECT($R87, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), $E(EOS));
14300
+ var TripleSlashDirective$0 = $S($R$0($EXPECT($R88, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), $E(EOS));
14243
14301
  function TripleSlashDirective(ctx, state) {
14244
14302
  return $EVENT(ctx, state, "TripleSlashDirective", TripleSlashDirective$0);
14245
14303
  }
@@ -14255,13 +14313,13 @@ ${input.slice(result.pos)}
14255
14313
  function PrologueString(ctx, state) {
14256
14314
  return $EVENT_C(ctx, state, "PrologueString", PrologueString$$);
14257
14315
  }
14258
- var EOS$0 = $T($S($EXPECT($R88, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), $P(RestOfLine)), function(value) {
14316
+ var EOS$0 = $T($S($EXPECT($R89, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), $P(RestOfLine)), function(value) {
14259
14317
  return value[1];
14260
14318
  });
14261
14319
  function EOS(ctx, state) {
14262
14320
  return $EVENT(ctx, state, "EOS", EOS$0);
14263
14321
  }
14264
- var EOL$0 = $TR($EXPECT($R89, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14322
+ var EOL$0 = $TR($EXPECT($R90, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14265
14323
  return { $loc, token: $0 };
14266
14324
  });
14267
14325
  function EOL(ctx, state) {
@@ -14833,11 +14891,11 @@ ${input.slice(result.pos)}
14833
14891
  function Prologue(ctx, state) {
14834
14892
  return $EVENT(ctx, state, "Prologue", Prologue$0);
14835
14893
  }
14836
- var ProloguePrefix$0 = $S(Prologue, $R$0($EXPECT($R90, "ProloguePrefix /[^]*/")));
14894
+ var ProloguePrefix$0 = $S(Prologue, $R$0($EXPECT($R91, "ProloguePrefix /[^]*/")));
14837
14895
  function ProloguePrefix(ctx, state) {
14838
14896
  return $EVENT(ctx, state, "ProloguePrefix", ProloguePrefix$0);
14839
14897
  }
14840
- var Indent$0 = $TR($EXPECT($R84, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14898
+ var Indent$0 = $TR($EXPECT($R85, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14841
14899
  const level = getIndentLevel($0, module.config.tab);
14842
14900
  return {
14843
14901
  $loc,
package/dist/main.js CHANGED
@@ -3134,6 +3134,7 @@ var lib_exports = {};
3134
3134
  __export(lib_exports, {
3135
3135
  addPostfixStatement: () => addPostfixStatement,
3136
3136
  adjustBindingElements: () => adjustBindingElements,
3137
+ adjustIndexAccess: () => adjustIndexAccess,
3137
3138
  attachPostfixStatementAsExpression: () => attachPostfixStatementAsExpression,
3138
3139
  blockWithPrefix: () => blockWithPrefix,
3139
3140
  convertObjectToJSXAttributes: () => convertObjectToJSXAttributes,
@@ -3197,6 +3198,18 @@ function addPostfixStatement(statement, ws, post) {
3197
3198
  }
3198
3199
  return post;
3199
3200
  }
3201
+ function adjustIndexAccess(dot) {
3202
+ if (gatherRecursive(dot, (node) => node.token === "?").length) {
3203
+ dot = [...dot, "["];
3204
+ } else {
3205
+ dot = replaceNodes(
3206
+ deepCopy(dot),
3207
+ (node) => node.token === ".",
3208
+ (node) => ({ ...node, token: "[" })
3209
+ );
3210
+ }
3211
+ return dot;
3212
+ }
3200
3213
  function negateCondition(condition) {
3201
3214
  let { expression } = condition;
3202
3215
  const children = condition.children.slice();
@@ -3903,6 +3916,40 @@ function processStatementExpressions(statements) {
3903
3916
  return;
3904
3917
  });
3905
3918
  }
3919
+ function processNegativeIndexAccess(statements) {
3920
+ gatherRecursiveAll(statements, (n) => n.type === "NegativeIndex").forEach((exp) => {
3921
+ const { parent } = exp;
3922
+ const index = parent.children.indexOf(exp);
3923
+ let ref, subexp;
3924
+ if (index === 1) {
3925
+ const child = parent.children[0];
3926
+ ref = maybeRef(child);
3927
+ if (ref !== child) {
3928
+ subexp = parent.children.splice(0, 1);
3929
+ }
3930
+ } else if (index > 1) {
3931
+ ref = makeRef();
3932
+ subexp = parent.children.splice(0, index);
3933
+ } else {
3934
+ throw new Error("Invalid parse tree for negative index access");
3935
+ }
3936
+ if (subexp) {
3937
+ exp.hoistDec = {
3938
+ type: "Declaration",
3939
+ children: ["let ", ref],
3940
+ names: []
3941
+ };
3942
+ parent.children.unshift(makeLeftHandSideExpression({
3943
+ type: "AssignmentExpression",
3944
+ children: [ref, " = ", subexp]
3945
+ }));
3946
+ }
3947
+ return exp.len.children = [
3948
+ ref,
3949
+ ".length"
3950
+ ];
3951
+ });
3952
+ }
3906
3953
  function processProgram(root, config, m, ReservedWord) {
3907
3954
  assert.equal(m.forbidBracedApplication.length, 1, "forbidBracedApplication");
3908
3955
  assert.equal(m.forbidClassImplicitCall.length, 1, "forbidClassImplicitCall");
@@ -3912,6 +3959,7 @@ function processProgram(root, config, m, ReservedWord) {
3912
3959
  assert.equal(m.JSXTagStack.length, 1, "JSXTagStack");
3913
3960
  addParentPointers(root);
3914
3961
  const { expressions: statements } = root;
3962
+ processNegativeIndexAccess(statements);
3915
3963
  processTypes(statements);
3916
3964
  processDeclarationConditions(statements, m.getRef);
3917
3965
  processPipelineExpressions(statements);
@@ -5592,7 +5640,7 @@ var require_parser = __commonJS({
5592
5640
  var $R13 = $R(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
5593
5641
  var $R14 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
5594
5642
  var $R15 = $R(new RegExp("(?=\\[)", "suy"));
5595
- var $R16 = $R(new RegExp("[!+-]", "suy"));
5643
+ var $R16 = $R(new RegExp("[!+-]?", "suy"));
5596
5644
  var $R17 = $R(new RegExp("[+-]", "suy"));
5597
5645
  var $R18 = $R(new RegExp("(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2016\u2047&|*\\/!?%<>\u29FA+-])", "suy"));
5598
5646
  var $R19 = $R(new RegExp("!\\^\\^?", "suy"));
@@ -5649,24 +5697,25 @@ var require_parser = __commonJS({
5649
5697
  var $R70 = $R(new RegExp("\\s", "suy"));
5650
5698
  var $R71 = $R(new RegExp("(?=[<])", "suy"));
5651
5699
  var $R72 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
5652
- var $R73 = $R(new RegExp("[\\s>]|\\/>", "suy"));
5653
- var $R74 = $R(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
5654
- var $R75 = $R(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
5655
- var $R76 = $R(new RegExp("[<>]", "suy"));
5656
- var $R77 = $R(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
5657
- var $R78 = $R(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
5658
- var $R79 = $R(new RegExp("[^{}<>\\r\\n]+", "suy"));
5659
- var $R80 = $R(new RegExp("[+-]?", "suy"));
5660
- var $R81 = $R(new RegExp("(?=if|unless)", "suy"));
5661
- var $R82 = $R(new RegExp("#![^\\r\\n]*", "suy"));
5662
- var $R83 = $R(new RegExp("[\\t ]*", "suy"));
5663
- var $R84 = $R(new RegExp("[ \\t]*", "suy"));
5664
- var $R85 = $R(new RegExp("[\\s]*", "suy"));
5665
- var $R86 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
5666
- var $R87 = $R(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
5667
- var $R88 = $R(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
5668
- var $R89 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
5669
- var $R90 = $R(new RegExp("[^]*", "suy"));
5700
+ var $R73 = $R(new RegExp("[!+-]", "suy"));
5701
+ var $R74 = $R(new RegExp("[\\s>]|\\/>", "suy"));
5702
+ var $R75 = $R(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
5703
+ var $R76 = $R(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
5704
+ var $R77 = $R(new RegExp("[<>]", "suy"));
5705
+ var $R78 = $R(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
5706
+ var $R79 = $R(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
5707
+ var $R80 = $R(new RegExp("[^{}<>\\r\\n]+", "suy"));
5708
+ var $R81 = $R(new RegExp("[+-]?", "suy"));
5709
+ var $R82 = $R(new RegExp("(?=if|unless)", "suy"));
5710
+ var $R83 = $R(new RegExp("#![^\\r\\n]*", "suy"));
5711
+ var $R84 = $R(new RegExp("[\\t ]*", "suy"));
5712
+ var $R85 = $R(new RegExp("[ \\t]*", "suy"));
5713
+ var $R86 = $R(new RegExp("[\\s]*", "suy"));
5714
+ var $R87 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
5715
+ var $R88 = $R(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
5716
+ var $R89 = $R(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
5717
+ var $R90 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
5718
+ var $R91 = $R(new RegExp("[^]*", "suy"));
5670
5719
  var Program$0 = $TS($S(Reset, Init, $E(EOS), TopLevelStatements, __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
5671
5720
  var statements = $4;
5672
5721
  processProgram({
@@ -7117,19 +7166,10 @@ var require_parser = __commonJS({
7117
7166
  var PropertyAccess$0 = $TS($S(AccessStart, $C(TemplateLiteral, StringLiteral, IntegerLiteral)), function($skip, $loc, $0, $1, $2) {
7118
7167
  var dot = $1;
7119
7168
  var literal = $2;
7120
- if (gatherRecursive(dot, (node) => node.token === "?").length) {
7121
- dot = [...dot, "["];
7122
- } else {
7123
- dot = replaceNodes(
7124
- deepCopy(dot),
7125
- (node) => node.token === ".",
7126
- (node) => ({ ...node, token: "[" })
7127
- );
7128
- }
7129
7169
  return {
7130
7170
  type: "Index",
7131
7171
  children: [
7132
- dot,
7172
+ adjustIndexAccess(dot),
7133
7173
  literal,
7134
7174
  "]"
7135
7175
  ]
@@ -7139,11 +7179,20 @@ var require_parser = __commonJS({
7139
7179
  var dot = $1;
7140
7180
  var neg = $2;
7141
7181
  var num = $3;
7142
- return [
7143
- { type: "PropertyAccess", children: [dot, "at"] },
7144
- // not including `name` so that `{x.-1}` doesn't use it
7145
- { type: "Call", children: ["(", neg, num, ")"] }
7182
+ const len = {
7183
+ children: []
7184
+ }, children = [
7185
+ adjustIndexAccess(dot),
7186
+ len,
7187
+ neg,
7188
+ num,
7189
+ "]"
7146
7190
  ];
7191
+ return {
7192
+ type: "NegativeIndex",
7193
+ children,
7194
+ len
7195
+ };
7147
7196
  });
7148
7197
  var PropertyAccess$2 = $TS($S(AccessStart, $Q(InlineComment), $C(IdentifierName, PrivateIdentifier, LengthShorthand)), function($skip, $loc, $0, $1, $2, $3) {
7149
7198
  var access = $1;
@@ -9088,17 +9137,26 @@ var require_parser = __commonJS({
9088
9137
  children: [ws, ...prop.children]
9089
9138
  };
9090
9139
  });
9091
- var PropertyDefinition$1 = $TS($S($E(_), $TEXT($EXPECT($R16, "PropertyDefinition /[!+-]/")), PropertyName), function($skip, $loc, $0, $1, $2, $3) {
9140
+ var PropertyDefinition$1 = $TS($S($E(_), $TEXT($EXPECT($R16, "PropertyDefinition /[!+-]?/")), PropertyName, $Y(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
9092
9141
  var ws = $1;
9093
9142
  var toggle = $2;
9094
9143
  var id = $3;
9095
- const value = toggle === "+" ? "true" : "false";
9144
+ if (toggle) {
9145
+ const value = toggle === "+" ? "true" : "false";
9146
+ return {
9147
+ type: "Property",
9148
+ children: [ws, id, ": ", value],
9149
+ name: id,
9150
+ names: id.names,
9151
+ value
9152
+ };
9153
+ }
9096
9154
  return {
9097
9155
  type: "Property",
9098
- children: [ws, id, ": ", value],
9156
+ children: [ws, id],
9099
9157
  name: id,
9100
9158
  names: id.names,
9101
- value
9159
+ value: id
9102
9160
  };
9103
9161
  });
9104
9162
  var PropertyDefinition$2 = $TS($S($E(_), MethodDefinition), function($skip, $loc, $0, $1, $2) {
@@ -12975,7 +13033,7 @@ var require_parser = __commonJS({
12975
13033
  class: $2
12976
13034
  };
12977
13035
  });
12978
- var JSXAttribute$7 = $TS($S($TEXT($EXPECT($R16, "JSXAttribute /[!+-]/")), JSXAttributeName, $Y(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
13036
+ var JSXAttribute$7 = $TS($S($TEXT($EXPECT($R73, "JSXAttribute /[!+-]/")), JSXAttributeName, $Y(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
12979
13037
  var toggle = $1;
12980
13038
  var id = $2;
12981
13039
  const value = toggle === "+" ? "true" : "false";
@@ -12985,11 +13043,11 @@ var require_parser = __commonJS({
12985
13043
  function JSXAttribute(ctx, state) {
12986
13044
  return $EVENT_C(ctx, state, "JSXAttribute", JSXAttribute$$);
12987
13045
  }
12988
- var JSXAttributeSpace$0 = $R$0($EXPECT($R73, "JSXAttributeSpace /[\\s>]|\\/>/"));
13046
+ var JSXAttributeSpace$0 = $R$0($EXPECT($R74, "JSXAttributeSpace /[\\s>]|\\/>/"));
12989
13047
  function JSXAttributeSpace(ctx, state) {
12990
13048
  return $EVENT(ctx, state, "JSXAttributeSpace", JSXAttributeSpace$0);
12991
13049
  }
12992
- var JSXShorthandString$0 = $TR($EXPECT($R74, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13050
+ var JSXShorthandString$0 = $TR($EXPECT($R75, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12993
13051
  return quoteString($0);
12994
13052
  });
12995
13053
  var JSXShorthandString$1 = $TS($S(TemplateLiteral), function($skip, $loc, $0, $1) {
@@ -13023,7 +13081,7 @@ var require_parser = __commonJS({
13023
13081
  }
13024
13082
  return [open, value, close];
13025
13083
  });
13026
- var JSXAttributeValue$4 = $R$0($EXPECT($R75, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
13084
+ var JSXAttributeValue$4 = $R$0($EXPECT($R76, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
13027
13085
  var JSXAttributeValue$$ = [JSXAttributeValue$0, JSXAttributeValue$1, JSXAttributeValue$2, JSXAttributeValue$3, JSXAttributeValue$4];
13028
13086
  function JSXAttributeValue(ctx, state) {
13029
13087
  return $EVENT_C(ctx, state, "JSXAttributeValue", JSXAttributeValue$$);
@@ -13036,7 +13094,7 @@ var require_parser = __commonJS({
13036
13094
  function InlineJSXAttributeValue(ctx, state) {
13037
13095
  return $EVENT(ctx, state, "InlineJSXAttributeValue", InlineJSXAttributeValue$0);
13038
13096
  }
13039
- var InlineJSXBinaryOpRHS$0 = $TS($S($N($EXPECT($R76, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
13097
+ var InlineJSXBinaryOpRHS$0 = $TS($S($N($EXPECT($R77, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
13040
13098
  var op = $2;
13041
13099
  var rhs = $3;
13042
13100
  return [[], op, [], rhs];
@@ -13053,7 +13111,7 @@ var require_parser = __commonJS({
13053
13111
  function InlineJSXUnaryExpression(ctx, state) {
13054
13112
  return $EVENT(ctx, state, "InlineJSXUnaryExpression", InlineJSXUnaryExpression$0);
13055
13113
  }
13056
- var InlineJSXUnaryOp$0 = $TR($EXPECT($R77, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13114
+ var InlineJSXUnaryOp$0 = $TR($EXPECT($R78, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13057
13115
  return { $loc, token: $0 };
13058
13116
  });
13059
13117
  function InlineJSXUnaryOp(ctx, state) {
@@ -13269,13 +13327,13 @@ var require_parser = __commonJS({
13269
13327
  function JSXComment(ctx, state) {
13270
13328
  return $EVENT(ctx, state, "JSXComment", JSXComment$0);
13271
13329
  }
13272
- var JSXCommentContent$0 = $TR($EXPECT($R78, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13330
+ var JSXCommentContent$0 = $TR($EXPECT($R79, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13273
13331
  return { $loc, token: $0.replace(/\*\//g, "* /") };
13274
13332
  });
13275
13333
  function JSXCommentContent(ctx, state) {
13276
13334
  return $EVENT(ctx, state, "JSXCommentContent", JSXCommentContent$0);
13277
13335
  }
13278
- var JSXText$0 = $TR($EXPECT($R79, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13336
+ var JSXText$0 = $TR($EXPECT($R80, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13279
13337
  return {
13280
13338
  type: "JSXText",
13281
13339
  token: $0,
@@ -13696,7 +13754,7 @@ var require_parser = __commonJS({
13696
13754
  function TypeProperty(ctx, state) {
13697
13755
  return $EVENT(ctx, state, "TypeProperty", TypeProperty$0);
13698
13756
  }
13699
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R80, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R17, "TypeIndexSignature /[+-]/")), $Y($S($E(_), QuestionMark)))));
13757
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R81, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R17, "TypeIndexSignature /[+-]/")), $Y($S($E(_), QuestionMark)))));
13700
13758
  function TypeIndexSignature(ctx, state) {
13701
13759
  return $EVENT(ctx, state, "TypeIndexSignature", TypeIndexSignature$0);
13702
13760
  }
@@ -13990,7 +14048,7 @@ var require_parser = __commonJS({
13990
14048
  function NestedType(ctx, state) {
13991
14049
  return $EVENT(ctx, state, "NestedType", NestedType$0);
13992
14050
  }
13993
- var TypeConditional$0 = $TS($S($E(_), $EXPECT($R81, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
14051
+ var TypeConditional$0 = $TS($S($E(_), $EXPECT($R82, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
13994
14052
  return [$1, expressionizeTypeIf($3)];
13995
14053
  });
13996
14054
  var TypeConditional$1 = $TS($S(TypeCondition, NotDedented, QuestionMark, Type, __, Colon, Type), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
@@ -14183,15 +14241,15 @@ var require_parser = __commonJS({
14183
14241
  function ThisType(ctx, state) {
14184
14242
  return $EVENT(ctx, state, "ThisType", ThisType$0);
14185
14243
  }
14186
- var Shebang$0 = $S($R$0($EXPECT($R82, "Shebang /#![^\\r\\n]*/")), EOL);
14244
+ var Shebang$0 = $S($R$0($EXPECT($R83, "Shebang /#![^\\r\\n]*/")), EOL);
14187
14245
  function Shebang(ctx, state) {
14188
14246
  return $EVENT(ctx, state, "Shebang", Shebang$0);
14189
14247
  }
14190
- var CivetPrologue$0 = $T($S($EXPECT($R83, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, $EXPECT($R84, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14248
+ var CivetPrologue$0 = $T($S($EXPECT($R84, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, $EXPECT($R85, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14191
14249
  var content = value[2];
14192
14250
  return content;
14193
14251
  });
14194
- var CivetPrologue$1 = $T($S($EXPECT($R83, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, $EXPECT($R84, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14252
+ var CivetPrologue$1 = $T($S($EXPECT($R84, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, $EXPECT($R85, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14195
14253
  var content = value[2];
14196
14254
  return content;
14197
14255
  });
@@ -14199,7 +14257,7 @@ var require_parser = __commonJS({
14199
14257
  function CivetPrologue(ctx, state) {
14200
14258
  return $EVENT_C(ctx, state, "CivetPrologue", CivetPrologue$$);
14201
14259
  }
14202
- var CivetPrologueContent$0 = $TS($S($EXPECT($L225, 'CivetPrologueContent "civet"'), NonIdContinue, $Q(CivetOption), $EXPECT($R85, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
14260
+ var CivetPrologueContent$0 = $TS($S($EXPECT($L225, 'CivetPrologueContent "civet"'), NonIdContinue, $Q(CivetOption), $EXPECT($R86, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
14203
14261
  var options = $3;
14204
14262
  return {
14205
14263
  type: "CivetPrologue",
@@ -14210,7 +14268,7 @@ var require_parser = __commonJS({
14210
14268
  function CivetPrologueContent(ctx, state) {
14211
14269
  return $EVENT(ctx, state, "CivetPrologueContent", CivetPrologueContent$0);
14212
14270
  }
14213
- var CivetOption$0 = $TR($EXPECT($R86, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14271
+ var CivetOption$0 = $TR($EXPECT($R87, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14214
14272
  const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
14215
14273
  if (l)
14216
14274
  return l.toUpperCase();
@@ -14227,11 +14285,11 @@ var require_parser = __commonJS({
14227
14285
  function CivetOption(ctx, state) {
14228
14286
  return $EVENT(ctx, state, "CivetOption", CivetOption$0);
14229
14287
  }
14230
- var UnknownPrologue$0 = $S($R$0($EXPECT($R83, "UnknownPrologue /[\\t ]*/")), StringLiteral, $TEXT(SimpleStatementDelimiter), EOS);
14288
+ var UnknownPrologue$0 = $S($R$0($EXPECT($R84, "UnknownPrologue /[\\t ]*/")), StringLiteral, $TEXT(SimpleStatementDelimiter), EOS);
14231
14289
  function UnknownPrologue(ctx, state) {
14232
14290
  return $EVENT(ctx, state, "UnknownPrologue", UnknownPrologue$0);
14233
14291
  }
14234
- var TripleSlashDirective$0 = $S($R$0($EXPECT($R87, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), $E(EOS));
14292
+ var TripleSlashDirective$0 = $S($R$0($EXPECT($R88, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), $E(EOS));
14235
14293
  function TripleSlashDirective(ctx, state) {
14236
14294
  return $EVENT(ctx, state, "TripleSlashDirective", TripleSlashDirective$0);
14237
14295
  }
@@ -14247,13 +14305,13 @@ var require_parser = __commonJS({
14247
14305
  function PrologueString(ctx, state) {
14248
14306
  return $EVENT_C(ctx, state, "PrologueString", PrologueString$$);
14249
14307
  }
14250
- var EOS$0 = $T($S($EXPECT($R88, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), $P(RestOfLine)), function(value) {
14308
+ var EOS$0 = $T($S($EXPECT($R89, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), $P(RestOfLine)), function(value) {
14251
14309
  return value[1];
14252
14310
  });
14253
14311
  function EOS(ctx, state) {
14254
14312
  return $EVENT(ctx, state, "EOS", EOS$0);
14255
14313
  }
14256
- var EOL$0 = $TR($EXPECT($R89, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14314
+ var EOL$0 = $TR($EXPECT($R90, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14257
14315
  return { $loc, token: $0 };
14258
14316
  });
14259
14317
  function EOL(ctx, state) {
@@ -14825,11 +14883,11 @@ var require_parser = __commonJS({
14825
14883
  function Prologue(ctx, state) {
14826
14884
  return $EVENT(ctx, state, "Prologue", Prologue$0);
14827
14885
  }
14828
- var ProloguePrefix$0 = $S(Prologue, $R$0($EXPECT($R90, "ProloguePrefix /[^]*/")));
14886
+ var ProloguePrefix$0 = $S(Prologue, $R$0($EXPECT($R91, "ProloguePrefix /[^]*/")));
14829
14887
  function ProloguePrefix(ctx, state) {
14830
14888
  return $EVENT(ctx, state, "ProloguePrefix", ProloguePrefix$0);
14831
14889
  }
14832
- var Indent$0 = $TR($EXPECT($R84, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14890
+ var Indent$0 = $TR($EXPECT($R85, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14833
14891
  const level = getIndentLevel($0, module2.config.tab);
14834
14892
  return {
14835
14893
  $loc,
package/dist/main.mjs CHANGED
@@ -3132,6 +3132,7 @@ var lib_exports = {};
3132
3132
  __export(lib_exports, {
3133
3133
  addPostfixStatement: () => addPostfixStatement,
3134
3134
  adjustBindingElements: () => adjustBindingElements,
3135
+ adjustIndexAccess: () => adjustIndexAccess,
3135
3136
  attachPostfixStatementAsExpression: () => attachPostfixStatementAsExpression,
3136
3137
  blockWithPrefix: () => blockWithPrefix,
3137
3138
  convertObjectToJSXAttributes: () => convertObjectToJSXAttributes,
@@ -3195,6 +3196,18 @@ function addPostfixStatement(statement, ws, post) {
3195
3196
  }
3196
3197
  return post;
3197
3198
  }
3199
+ function adjustIndexAccess(dot) {
3200
+ if (gatherRecursive(dot, (node) => node.token === "?").length) {
3201
+ dot = [...dot, "["];
3202
+ } else {
3203
+ dot = replaceNodes(
3204
+ deepCopy(dot),
3205
+ (node) => node.token === ".",
3206
+ (node) => ({ ...node, token: "[" })
3207
+ );
3208
+ }
3209
+ return dot;
3210
+ }
3198
3211
  function negateCondition(condition) {
3199
3212
  let { expression } = condition;
3200
3213
  const children = condition.children.slice();
@@ -3901,6 +3914,40 @@ function processStatementExpressions(statements) {
3901
3914
  return;
3902
3915
  });
3903
3916
  }
3917
+ function processNegativeIndexAccess(statements) {
3918
+ gatherRecursiveAll(statements, (n) => n.type === "NegativeIndex").forEach((exp) => {
3919
+ const { parent } = exp;
3920
+ const index = parent.children.indexOf(exp);
3921
+ let ref, subexp;
3922
+ if (index === 1) {
3923
+ const child = parent.children[0];
3924
+ ref = maybeRef(child);
3925
+ if (ref !== child) {
3926
+ subexp = parent.children.splice(0, 1);
3927
+ }
3928
+ } else if (index > 1) {
3929
+ ref = makeRef();
3930
+ subexp = parent.children.splice(0, index);
3931
+ } else {
3932
+ throw new Error("Invalid parse tree for negative index access");
3933
+ }
3934
+ if (subexp) {
3935
+ exp.hoistDec = {
3936
+ type: "Declaration",
3937
+ children: ["let ", ref],
3938
+ names: []
3939
+ };
3940
+ parent.children.unshift(makeLeftHandSideExpression({
3941
+ type: "AssignmentExpression",
3942
+ children: [ref, " = ", subexp]
3943
+ }));
3944
+ }
3945
+ return exp.len.children = [
3946
+ ref,
3947
+ ".length"
3948
+ ];
3949
+ });
3950
+ }
3904
3951
  function processProgram(root, config, m, ReservedWord) {
3905
3952
  assert.equal(m.forbidBracedApplication.length, 1, "forbidBracedApplication");
3906
3953
  assert.equal(m.forbidClassImplicitCall.length, 1, "forbidClassImplicitCall");
@@ -3910,6 +3957,7 @@ function processProgram(root, config, m, ReservedWord) {
3910
3957
  assert.equal(m.JSXTagStack.length, 1, "JSXTagStack");
3911
3958
  addParentPointers(root);
3912
3959
  const { expressions: statements } = root;
3960
+ processNegativeIndexAccess(statements);
3913
3961
  processTypes(statements);
3914
3962
  processDeclarationConditions(statements, m.getRef);
3915
3963
  processPipelineExpressions(statements);
@@ -5590,7 +5638,7 @@ var require_parser = __commonJS({
5590
5638
  var $R13 = $R(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
5591
5639
  var $R14 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
5592
5640
  var $R15 = $R(new RegExp("(?=\\[)", "suy"));
5593
- var $R16 = $R(new RegExp("[!+-]", "suy"));
5641
+ var $R16 = $R(new RegExp("[!+-]?", "suy"));
5594
5642
  var $R17 = $R(new RegExp("[+-]", "suy"));
5595
5643
  var $R18 = $R(new RegExp("(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2016\u2047&|*\\/!?%<>\u29FA+-])", "suy"));
5596
5644
  var $R19 = $R(new RegExp("!\\^\\^?", "suy"));
@@ -5647,24 +5695,25 @@ var require_parser = __commonJS({
5647
5695
  var $R70 = $R(new RegExp("\\s", "suy"));
5648
5696
  var $R71 = $R(new RegExp("(?=[<])", "suy"));
5649
5697
  var $R72 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
5650
- var $R73 = $R(new RegExp("[\\s>]|\\/>", "suy"));
5651
- var $R74 = $R(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
5652
- var $R75 = $R(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
5653
- var $R76 = $R(new RegExp("[<>]", "suy"));
5654
- var $R77 = $R(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
5655
- var $R78 = $R(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
5656
- var $R79 = $R(new RegExp("[^{}<>\\r\\n]+", "suy"));
5657
- var $R80 = $R(new RegExp("[+-]?", "suy"));
5658
- var $R81 = $R(new RegExp("(?=if|unless)", "suy"));
5659
- var $R82 = $R(new RegExp("#![^\\r\\n]*", "suy"));
5660
- var $R83 = $R(new RegExp("[\\t ]*", "suy"));
5661
- var $R84 = $R(new RegExp("[ \\t]*", "suy"));
5662
- var $R85 = $R(new RegExp("[\\s]*", "suy"));
5663
- var $R86 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
5664
- var $R87 = $R(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
5665
- var $R88 = $R(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
5666
- var $R89 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
5667
- var $R90 = $R(new RegExp("[^]*", "suy"));
5698
+ var $R73 = $R(new RegExp("[!+-]", "suy"));
5699
+ var $R74 = $R(new RegExp("[\\s>]|\\/>", "suy"));
5700
+ var $R75 = $R(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
5701
+ var $R76 = $R(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
5702
+ var $R77 = $R(new RegExp("[<>]", "suy"));
5703
+ var $R78 = $R(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
5704
+ var $R79 = $R(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
5705
+ var $R80 = $R(new RegExp("[^{}<>\\r\\n]+", "suy"));
5706
+ var $R81 = $R(new RegExp("[+-]?", "suy"));
5707
+ var $R82 = $R(new RegExp("(?=if|unless)", "suy"));
5708
+ var $R83 = $R(new RegExp("#![^\\r\\n]*", "suy"));
5709
+ var $R84 = $R(new RegExp("[\\t ]*", "suy"));
5710
+ var $R85 = $R(new RegExp("[ \\t]*", "suy"));
5711
+ var $R86 = $R(new RegExp("[\\s]*", "suy"));
5712
+ var $R87 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
5713
+ var $R88 = $R(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
5714
+ var $R89 = $R(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
5715
+ var $R90 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
5716
+ var $R91 = $R(new RegExp("[^]*", "suy"));
5668
5717
  var Program$0 = $TS($S(Reset, Init, $E(EOS), TopLevelStatements, __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
5669
5718
  var statements = $4;
5670
5719
  processProgram({
@@ -7115,19 +7164,10 @@ var require_parser = __commonJS({
7115
7164
  var PropertyAccess$0 = $TS($S(AccessStart, $C(TemplateLiteral, StringLiteral, IntegerLiteral)), function($skip, $loc, $0, $1, $2) {
7116
7165
  var dot = $1;
7117
7166
  var literal = $2;
7118
- if (gatherRecursive(dot, (node) => node.token === "?").length) {
7119
- dot = [...dot, "["];
7120
- } else {
7121
- dot = replaceNodes(
7122
- deepCopy(dot),
7123
- (node) => node.token === ".",
7124
- (node) => ({ ...node, token: "[" })
7125
- );
7126
- }
7127
7167
  return {
7128
7168
  type: "Index",
7129
7169
  children: [
7130
- dot,
7170
+ adjustIndexAccess(dot),
7131
7171
  literal,
7132
7172
  "]"
7133
7173
  ]
@@ -7137,11 +7177,20 @@ var require_parser = __commonJS({
7137
7177
  var dot = $1;
7138
7178
  var neg = $2;
7139
7179
  var num = $3;
7140
- return [
7141
- { type: "PropertyAccess", children: [dot, "at"] },
7142
- // not including `name` so that `{x.-1}` doesn't use it
7143
- { type: "Call", children: ["(", neg, num, ")"] }
7180
+ const len = {
7181
+ children: []
7182
+ }, children = [
7183
+ adjustIndexAccess(dot),
7184
+ len,
7185
+ neg,
7186
+ num,
7187
+ "]"
7144
7188
  ];
7189
+ return {
7190
+ type: "NegativeIndex",
7191
+ children,
7192
+ len
7193
+ };
7145
7194
  });
7146
7195
  var PropertyAccess$2 = $TS($S(AccessStart, $Q(InlineComment), $C(IdentifierName, PrivateIdentifier, LengthShorthand)), function($skip, $loc, $0, $1, $2, $3) {
7147
7196
  var access = $1;
@@ -9086,17 +9135,26 @@ var require_parser = __commonJS({
9086
9135
  children: [ws, ...prop.children]
9087
9136
  };
9088
9137
  });
9089
- var PropertyDefinition$1 = $TS($S($E(_), $TEXT($EXPECT($R16, "PropertyDefinition /[!+-]/")), PropertyName), function($skip, $loc, $0, $1, $2, $3) {
9138
+ var PropertyDefinition$1 = $TS($S($E(_), $TEXT($EXPECT($R16, "PropertyDefinition /[!+-]?/")), PropertyName, $Y(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
9090
9139
  var ws = $1;
9091
9140
  var toggle = $2;
9092
9141
  var id = $3;
9093
- const value = toggle === "+" ? "true" : "false";
9142
+ if (toggle) {
9143
+ const value = toggle === "+" ? "true" : "false";
9144
+ return {
9145
+ type: "Property",
9146
+ children: [ws, id, ": ", value],
9147
+ name: id,
9148
+ names: id.names,
9149
+ value
9150
+ };
9151
+ }
9094
9152
  return {
9095
9153
  type: "Property",
9096
- children: [ws, id, ": ", value],
9154
+ children: [ws, id],
9097
9155
  name: id,
9098
9156
  names: id.names,
9099
- value
9157
+ value: id
9100
9158
  };
9101
9159
  });
9102
9160
  var PropertyDefinition$2 = $TS($S($E(_), MethodDefinition), function($skip, $loc, $0, $1, $2) {
@@ -12973,7 +13031,7 @@ var require_parser = __commonJS({
12973
13031
  class: $2
12974
13032
  };
12975
13033
  });
12976
- var JSXAttribute$7 = $TS($S($TEXT($EXPECT($R16, "JSXAttribute /[!+-]/")), JSXAttributeName, $Y(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
13034
+ var JSXAttribute$7 = $TS($S($TEXT($EXPECT($R73, "JSXAttribute /[!+-]/")), JSXAttributeName, $Y(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
12977
13035
  var toggle = $1;
12978
13036
  var id = $2;
12979
13037
  const value = toggle === "+" ? "true" : "false";
@@ -12983,11 +13041,11 @@ var require_parser = __commonJS({
12983
13041
  function JSXAttribute(ctx, state) {
12984
13042
  return $EVENT_C(ctx, state, "JSXAttribute", JSXAttribute$$);
12985
13043
  }
12986
- var JSXAttributeSpace$0 = $R$0($EXPECT($R73, "JSXAttributeSpace /[\\s>]|\\/>/"));
13044
+ var JSXAttributeSpace$0 = $R$0($EXPECT($R74, "JSXAttributeSpace /[\\s>]|\\/>/"));
12987
13045
  function JSXAttributeSpace(ctx, state) {
12988
13046
  return $EVENT(ctx, state, "JSXAttributeSpace", JSXAttributeSpace$0);
12989
13047
  }
12990
- var JSXShorthandString$0 = $TR($EXPECT($R74, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13048
+ var JSXShorthandString$0 = $TR($EXPECT($R75, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12991
13049
  return quoteString($0);
12992
13050
  });
12993
13051
  var JSXShorthandString$1 = $TS($S(TemplateLiteral), function($skip, $loc, $0, $1) {
@@ -13021,7 +13079,7 @@ var require_parser = __commonJS({
13021
13079
  }
13022
13080
  return [open, value, close];
13023
13081
  });
13024
- var JSXAttributeValue$4 = $R$0($EXPECT($R75, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
13082
+ var JSXAttributeValue$4 = $R$0($EXPECT($R76, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
13025
13083
  var JSXAttributeValue$$ = [JSXAttributeValue$0, JSXAttributeValue$1, JSXAttributeValue$2, JSXAttributeValue$3, JSXAttributeValue$4];
13026
13084
  function JSXAttributeValue(ctx, state) {
13027
13085
  return $EVENT_C(ctx, state, "JSXAttributeValue", JSXAttributeValue$$);
@@ -13034,7 +13092,7 @@ var require_parser = __commonJS({
13034
13092
  function InlineJSXAttributeValue(ctx, state) {
13035
13093
  return $EVENT(ctx, state, "InlineJSXAttributeValue", InlineJSXAttributeValue$0);
13036
13094
  }
13037
- var InlineJSXBinaryOpRHS$0 = $TS($S($N($EXPECT($R76, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
13095
+ var InlineJSXBinaryOpRHS$0 = $TS($S($N($EXPECT($R77, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
13038
13096
  var op = $2;
13039
13097
  var rhs = $3;
13040
13098
  return [[], op, [], rhs];
@@ -13051,7 +13109,7 @@ var require_parser = __commonJS({
13051
13109
  function InlineJSXUnaryExpression(ctx, state) {
13052
13110
  return $EVENT(ctx, state, "InlineJSXUnaryExpression", InlineJSXUnaryExpression$0);
13053
13111
  }
13054
- var InlineJSXUnaryOp$0 = $TR($EXPECT($R77, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13112
+ var InlineJSXUnaryOp$0 = $TR($EXPECT($R78, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13055
13113
  return { $loc, token: $0 };
13056
13114
  });
13057
13115
  function InlineJSXUnaryOp(ctx, state) {
@@ -13267,13 +13325,13 @@ var require_parser = __commonJS({
13267
13325
  function JSXComment(ctx, state) {
13268
13326
  return $EVENT(ctx, state, "JSXComment", JSXComment$0);
13269
13327
  }
13270
- var JSXCommentContent$0 = $TR($EXPECT($R78, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13328
+ var JSXCommentContent$0 = $TR($EXPECT($R79, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13271
13329
  return { $loc, token: $0.replace(/\*\//g, "* /") };
13272
13330
  });
13273
13331
  function JSXCommentContent(ctx, state) {
13274
13332
  return $EVENT(ctx, state, "JSXCommentContent", JSXCommentContent$0);
13275
13333
  }
13276
- var JSXText$0 = $TR($EXPECT($R79, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13334
+ var JSXText$0 = $TR($EXPECT($R80, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13277
13335
  return {
13278
13336
  type: "JSXText",
13279
13337
  token: $0,
@@ -13694,7 +13752,7 @@ var require_parser = __commonJS({
13694
13752
  function TypeProperty(ctx, state) {
13695
13753
  return $EVENT(ctx, state, "TypeProperty", TypeProperty$0);
13696
13754
  }
13697
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R80, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R17, "TypeIndexSignature /[+-]/")), $Y($S($E(_), QuestionMark)))));
13755
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R81, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R17, "TypeIndexSignature /[+-]/")), $Y($S($E(_), QuestionMark)))));
13698
13756
  function TypeIndexSignature(ctx, state) {
13699
13757
  return $EVENT(ctx, state, "TypeIndexSignature", TypeIndexSignature$0);
13700
13758
  }
@@ -13988,7 +14046,7 @@ var require_parser = __commonJS({
13988
14046
  function NestedType(ctx, state) {
13989
14047
  return $EVENT(ctx, state, "NestedType", NestedType$0);
13990
14048
  }
13991
- var TypeConditional$0 = $TS($S($E(_), $EXPECT($R81, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
14049
+ var TypeConditional$0 = $TS($S($E(_), $EXPECT($R82, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
13992
14050
  return [$1, expressionizeTypeIf($3)];
13993
14051
  });
13994
14052
  var TypeConditional$1 = $TS($S(TypeCondition, NotDedented, QuestionMark, Type, __, Colon, Type), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
@@ -14181,15 +14239,15 @@ var require_parser = __commonJS({
14181
14239
  function ThisType(ctx, state) {
14182
14240
  return $EVENT(ctx, state, "ThisType", ThisType$0);
14183
14241
  }
14184
- var Shebang$0 = $S($R$0($EXPECT($R82, "Shebang /#![^\\r\\n]*/")), EOL);
14242
+ var Shebang$0 = $S($R$0($EXPECT($R83, "Shebang /#![^\\r\\n]*/")), EOL);
14185
14243
  function Shebang(ctx, state) {
14186
14244
  return $EVENT(ctx, state, "Shebang", Shebang$0);
14187
14245
  }
14188
- var CivetPrologue$0 = $T($S($EXPECT($R83, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, $EXPECT($R84, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14246
+ var CivetPrologue$0 = $T($S($EXPECT($R84, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, $EXPECT($R85, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14189
14247
  var content = value[2];
14190
14248
  return content;
14191
14249
  });
14192
- var CivetPrologue$1 = $T($S($EXPECT($R83, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, $EXPECT($R84, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14250
+ var CivetPrologue$1 = $T($S($EXPECT($R84, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, $EXPECT($R85, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14193
14251
  var content = value[2];
14194
14252
  return content;
14195
14253
  });
@@ -14197,7 +14255,7 @@ var require_parser = __commonJS({
14197
14255
  function CivetPrologue(ctx, state) {
14198
14256
  return $EVENT_C(ctx, state, "CivetPrologue", CivetPrologue$$);
14199
14257
  }
14200
- var CivetPrologueContent$0 = $TS($S($EXPECT($L225, 'CivetPrologueContent "civet"'), NonIdContinue, $Q(CivetOption), $EXPECT($R85, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
14258
+ var CivetPrologueContent$0 = $TS($S($EXPECT($L225, 'CivetPrologueContent "civet"'), NonIdContinue, $Q(CivetOption), $EXPECT($R86, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
14201
14259
  var options = $3;
14202
14260
  return {
14203
14261
  type: "CivetPrologue",
@@ -14208,7 +14266,7 @@ var require_parser = __commonJS({
14208
14266
  function CivetPrologueContent(ctx, state) {
14209
14267
  return $EVENT(ctx, state, "CivetPrologueContent", CivetPrologueContent$0);
14210
14268
  }
14211
- var CivetOption$0 = $TR($EXPECT($R86, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14269
+ var CivetOption$0 = $TR($EXPECT($R87, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14212
14270
  const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
14213
14271
  if (l)
14214
14272
  return l.toUpperCase();
@@ -14225,11 +14283,11 @@ var require_parser = __commonJS({
14225
14283
  function CivetOption(ctx, state) {
14226
14284
  return $EVENT(ctx, state, "CivetOption", CivetOption$0);
14227
14285
  }
14228
- var UnknownPrologue$0 = $S($R$0($EXPECT($R83, "UnknownPrologue /[\\t ]*/")), StringLiteral, $TEXT(SimpleStatementDelimiter), EOS);
14286
+ var UnknownPrologue$0 = $S($R$0($EXPECT($R84, "UnknownPrologue /[\\t ]*/")), StringLiteral, $TEXT(SimpleStatementDelimiter), EOS);
14229
14287
  function UnknownPrologue(ctx, state) {
14230
14288
  return $EVENT(ctx, state, "UnknownPrologue", UnknownPrologue$0);
14231
14289
  }
14232
- var TripleSlashDirective$0 = $S($R$0($EXPECT($R87, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), $E(EOS));
14290
+ var TripleSlashDirective$0 = $S($R$0($EXPECT($R88, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), $E(EOS));
14233
14291
  function TripleSlashDirective(ctx, state) {
14234
14292
  return $EVENT(ctx, state, "TripleSlashDirective", TripleSlashDirective$0);
14235
14293
  }
@@ -14245,13 +14303,13 @@ var require_parser = __commonJS({
14245
14303
  function PrologueString(ctx, state) {
14246
14304
  return $EVENT_C(ctx, state, "PrologueString", PrologueString$$);
14247
14305
  }
14248
- var EOS$0 = $T($S($EXPECT($R88, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), $P(RestOfLine)), function(value) {
14306
+ var EOS$0 = $T($S($EXPECT($R89, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), $P(RestOfLine)), function(value) {
14249
14307
  return value[1];
14250
14308
  });
14251
14309
  function EOS(ctx, state) {
14252
14310
  return $EVENT(ctx, state, "EOS", EOS$0);
14253
14311
  }
14254
- var EOL$0 = $TR($EXPECT($R89, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14312
+ var EOL$0 = $TR($EXPECT($R90, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14255
14313
  return { $loc, token: $0 };
14256
14314
  });
14257
14315
  function EOL(ctx, state) {
@@ -14823,11 +14881,11 @@ var require_parser = __commonJS({
14823
14881
  function Prologue(ctx, state) {
14824
14882
  return $EVENT(ctx, state, "Prologue", Prologue$0);
14825
14883
  }
14826
- var ProloguePrefix$0 = $S(Prologue, $R$0($EXPECT($R90, "ProloguePrefix /[^]*/")));
14884
+ var ProloguePrefix$0 = $S(Prologue, $R$0($EXPECT($R91, "ProloguePrefix /[^]*/")));
14827
14885
  function ProloguePrefix(ctx, state) {
14828
14886
  return $EVENT(ctx, state, "ProloguePrefix", ProloguePrefix$0);
14829
14887
  }
14830
- var Indent$0 = $TR($EXPECT($R84, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14888
+ var Indent$0 = $TR($EXPECT($R85, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14831
14889
  const level = getIndentLevel($0, module.config.tab);
14832
14890
  return {
14833
14891
  $loc,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@danielx/civet",
3
3
  "type": "commonjs",
4
- "version": "0.6.85",
4
+ "version": "0.6.86",
5
5
  "description": "CoffeeScript style syntax for TypeScript",
6
6
  "main": "dist/main.js",
7
7
  "module": "dist/main.mjs",