@danielx/civet 0.8.13 → 0.8.15

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/main.js CHANGED
@@ -810,18 +810,31 @@ function insertTrimmingSpace(target, c) {
810
810
  if (target.length === 0) {
811
811
  return c;
812
812
  }
813
- return target.map((e, i) => {
813
+ const results = [];
814
+ for (let i3 = 0, len3 = target.length; i3 < len3; i3++) {
815
+ const i = i3;
816
+ const e = target[i3];
814
817
  if (i === 0) {
815
- return insertTrimmingSpace(e, c);
818
+ results.push(insertTrimmingSpace(e, c));
816
819
  } else {
817
- return e;
820
+ results.push(e);
818
821
  }
819
- });
822
+ }
823
+ ;
824
+ return results;
820
825
  } else if (isParent(target)) {
821
- return {
826
+ const oldChildren = target.children;
827
+ target = {
822
828
  ...target,
823
829
  children: insertTrimmingSpace(target.children, c)
824
830
  };
831
+ for (const key in target) {
832
+ const i = oldChildren.indexOf(target[key]);
833
+ if (i >= 0) {
834
+ target[key] = target.children[i];
835
+ }
836
+ }
837
+ return target;
825
838
  } else if (isToken(target)) {
826
839
  return {
827
840
  ...target,
@@ -996,8 +1009,8 @@ function startsWithPredicate(node, predicate, skip = isWhitespaceOrEmpty) {
996
1009
  return void 0;
997
1010
  }
998
1011
  if (Array.isArray(node)) {
999
- for (let i3 = 0, len3 = node.length; i3 < len3; i3++) {
1000
- const child = node[i3];
1012
+ for (let i4 = 0, len4 = node.length; i4 < len4; i4++) {
1013
+ const child = node[i4];
1001
1014
  if (skip(child)) {
1002
1015
  continue;
1003
1016
  }
@@ -1036,9 +1049,9 @@ function deepCopy(root) {
1036
1049
  if (Array.isArray(node)) {
1037
1050
  const array = new Array(node.length);
1038
1051
  copied.set(node, array);
1039
- for (let i4 = 0, len4 = node.length; i4 < len4; i4++) {
1040
- const i = i4;
1041
- const item = node[i4];
1052
+ for (let i5 = 0, len5 = node.length; i5 < len5; i5++) {
1053
+ const i = i5;
1054
+ const item = node[i5];
1042
1055
  array[i] = recurse(item);
1043
1056
  }
1044
1057
  } else if (node?.type === "Ref") {
@@ -1065,9 +1078,9 @@ function replaceNode(node, newNode, parent) {
1065
1078
  throw new Error("replaceNode failed: node has no parent");
1066
1079
  }
1067
1080
  function recurse(children) {
1068
- for (let i5 = 0, len5 = children.length; i5 < len5; i5++) {
1069
- const i = i5;
1070
- const child = children[i5];
1081
+ for (let i6 = 0, len6 = children.length; i6 < len6; i6++) {
1082
+ const i = i6;
1083
+ const child = children[i6];
1071
1084
  if (child === node) {
1072
1085
  children[i] = newNode;
1073
1086
  return true;
@@ -1104,9 +1117,9 @@ function replaceNodes(root, predicate, replacer) {
1104
1117
  return root;
1105
1118
  }
1106
1119
  }
1107
- for (let i6 = 0, len6 = array.length; i6 < len6; i6++) {
1108
- const i = i6;
1109
- const node = array[i6];
1120
+ for (let i7 = 0, len7 = array.length; i7 < len7; i7++) {
1121
+ const i = i7;
1122
+ const node = array[i7];
1110
1123
  if (!(node != null)) {
1111
1124
  return;
1112
1125
  }
@@ -1230,8 +1243,8 @@ function updateParentPointers(node, parent, depth = 1) {
1230
1243
  return;
1231
1244
  }
1232
1245
  if (Array.isArray(node)) {
1233
- for (let i7 = 0, len7 = node.length; i7 < len7; i7++) {
1234
- const child = node[i7];
1246
+ for (let i8 = 0, len8 = node.length; i8 < len8; i8++) {
1247
+ const child = node[i8];
1235
1248
  updateParentPointers(child, parent, depth);
1236
1249
  }
1237
1250
  return;
@@ -1241,8 +1254,8 @@ function updateParentPointers(node, parent, depth = 1) {
1241
1254
  node.parent = parent;
1242
1255
  }
1243
1256
  if (depth && isParent(node)) {
1244
- for (let ref5 = node.children, i8 = 0, len8 = ref5.length; i8 < len8; i8++) {
1245
- const child = ref5[i8];
1257
+ for (let ref5 = node.children, i9 = 0, len9 = ref5.length; i9 < len9; i9++) {
1258
+ const child = ref5[i9];
1246
1259
  updateParentPointers(child, node, depth - 1);
1247
1260
  }
1248
1261
  }
@@ -1418,9 +1431,9 @@ function wrapWithReturn(expression) {
1418
1431
  }
1419
1432
  function flatJoin(array, separator) {
1420
1433
  const result = [];
1421
- for (let i9 = 0, len9 = array.length; i9 < len9; i9++) {
1422
- const i = i9;
1423
- const items = array[i9];
1434
+ for (let i10 = 0, len10 = array.length; i10 < len10; i10++) {
1435
+ const i = i10;
1436
+ const items = array[i10];
1424
1437
  if (i) {
1425
1438
  result.push(separator);
1426
1439
  }
@@ -3122,6 +3135,8 @@ function iterationDeclaration(statement) {
3122
3135
  }
3123
3136
  }
3124
3137
  })());
3138
+ } else if (statement.object) {
3139
+ declaration.children.push("={}");
3125
3140
  } else {
3126
3141
  if (decl === "const") {
3127
3142
  declaration.children.push("=[]");
@@ -3137,6 +3152,9 @@ function iterationDeclaration(statement) {
3137
3152
  }
3138
3153
  if (!block.empty) {
3139
3154
  assignResults(block, (node) => {
3155
+ if (statement.object) {
3156
+ return ["Object.assign(", resultsRef, ",", node, ")"];
3157
+ }
3140
3158
  if (!reduction) {
3141
3159
  return [resultsRef, ".push(", node, ")"];
3142
3160
  }
@@ -4741,8 +4759,8 @@ function processDeclarationConditionStatement(s) {
4741
4759
  return;
4742
4760
  }
4743
4761
  let { expression } = condition;
4744
- if (expression && typeof expression === "object" && "type" in expression && expression.type === "UnaryExpression" && "children" in expression && Array.isArray(expression.children) && len2(expression.children, 2) && expression.children[0] === "!" && typeof expression.children[1] === "object" && expression.children[1] != null && "type" in expression.children[1] && expression.children[1].type === "ParenthesizedExpression" && "expression" in expression.children[1]) {
4745
- const { type: type1, children: [, { type: type2, expression: expression2 }] } = expression;
4762
+ if (expression && typeof expression === "object" && "type" in expression && expression.type === "UnaryExpression" && "children" in expression && Array.isArray(expression.children) && len2(expression.children, 2) && Array.isArray(expression.children[0]) && len2(expression.children[0], 1) && expression.children[0][0] === "!" && typeof expression.children[1] === "object" && expression.children[1] != null && "type" in expression.children[1] && expression.children[1].type === "ParenthesizedExpression" && "expression" in expression.children[1]) {
4763
+ const { type: type1, children: [[], { type: type2, expression: expression2 }] } = expression;
4746
4764
  const type = [type1, type2];
4747
4765
  expression = expression2;
4748
4766
  }
@@ -4761,7 +4779,7 @@ function processDeclarationConditionStatement(s) {
4761
4779
  let children = condition.children;
4762
4780
  if (s.negated) {
4763
4781
  let m;
4764
- if (!(m = condition.expression, typeof m === "object" && m != null && "type" in m && m.type === "UnaryExpression" && "children" in m && Array.isArray(m.children) && len2(m.children, 2) && m.children[0] === "!" && typeof m.children[1] === "object" && m.children[1] != null && "type" in m.children[1] && m.children[1].type === "ParenthesizedExpression")) {
4782
+ if (!(m = condition.expression, typeof m === "object" && m != null && "type" in m && m.type === "UnaryExpression" && "children" in m && Array.isArray(m.children) && len2(m.children, 2) && Array.isArray(m.children[0]) && len2(m.children[0], 1) && m.children[0][0] === "!" && typeof m.children[1] === "object" && m.children[1] != null && "type" in m.children[1] && m.children[1].type === "ParenthesizedExpression")) {
4765
4783
  throw new Error("Unsupported negated condition");
4766
4784
  }
4767
4785
  ;
@@ -5065,7 +5083,9 @@ function processUnaryExpression(pre, exp, post) {
5065
5083
  if (pre.length) {
5066
5084
  return {
5067
5085
  type: "UnaryExpression",
5068
- children: [...pre, exp]
5086
+ children: [pre, exp],
5087
+ pre,
5088
+ expression: exp
5069
5089
  };
5070
5090
  }
5071
5091
  return exp;
@@ -5117,7 +5137,10 @@ function processUnaryExpression(pre, exp, post) {
5117
5137
  }
5118
5138
  return {
5119
5139
  type: "UnaryExpression",
5120
- children: [...pre, exp, post]
5140
+ children: [pre, exp, post],
5141
+ pre,
5142
+ expression: exp,
5143
+ post
5121
5144
  };
5122
5145
  }
5123
5146
  function processUnaryNestedExpression(pre, args, post) {
@@ -5585,9 +5608,12 @@ function forRange(open, forDeclaration, range, stepExp, close) {
5585
5608
  ascDec = [", ", ascRef, " = ", startRef, " <= ", endRef];
5586
5609
  }
5587
5610
  let varAssign = [], varLetAssign = varAssign, varLet = varAssign, blockPrefix;
5588
- let names = forDeclaration?.names;
5589
- if (forDeclaration?.decl) {
5590
- if (forDeclaration.decl === "let") {
5611
+ let names = forDeclaration?.names ?? [];
5612
+ if (forDeclaration != null) {
5613
+ if (forDeclaration.type === "AssignmentExpression") {
5614
+ varAssign = varLetAssign = [forDeclaration, " = "];
5615
+ names = [];
5616
+ } else if (forDeclaration.decl === "let") {
5591
5617
  const varName = forDeclaration.children.splice(1);
5592
5618
  varAssign = [...trimFirstSpace(varName), " = "];
5593
5619
  varLet = [",", ...varName, " = ", counterRef];
@@ -5597,14 +5623,6 @@ function forRange(open, forDeclaration, range, stepExp, close) {
5597
5623
  ["", [forDeclaration, " = ", value], ";"]
5598
5624
  ];
5599
5625
  }
5600
- } else if (forDeclaration) {
5601
- assert.equal(
5602
- forDeclaration.type,
5603
- "AssignmentExpression",
5604
- "Internal error: Coffee-style for loop must be an assignment expression"
5605
- );
5606
- varAssign = varLetAssign = [forDeclaration, " = "];
5607
- names = [];
5608
5626
  }
5609
5627
  const declaration = {
5610
5628
  type: "Declaration",
@@ -6124,7 +6142,8 @@ function addPostfixStatement(statement, ws, post) {
6124
6142
  const block = makeNode({
6125
6143
  type: "BlockStatement",
6126
6144
  children: [" { ", expressions, " }"],
6127
- expressions
6145
+ expressions,
6146
+ bare: false
6128
6147
  });
6129
6148
  const children = [...post.children, block];
6130
6149
  if (!isWhitespaceOrEmpty(ws))
@@ -6157,12 +6176,16 @@ function negateCondition(condition) {
6157
6176
  if (i < 0) {
6158
6177
  throw new Error(`Could not find expression in condition`);
6159
6178
  }
6179
+ const pre = ["!"];
6180
+ expression = makeLeftHandSideExpression(expression);
6160
6181
  children[i] = expression = {
6161
6182
  type: "UnaryExpression",
6162
6183
  children: [
6163
- "!",
6164
- makeLeftHandSideExpression(expression)
6165
- ]
6184
+ pre,
6185
+ expression
6186
+ ],
6187
+ pre,
6188
+ expression
6166
6189
  };
6167
6190
  return { ...condition, expression, children };
6168
6191
  }
@@ -6729,7 +6752,7 @@ function makeExpressionStatement(expression) {
6729
6752
  return [comma, makeExpressionStatement(exp)];
6730
6753
  })
6731
6754
  ];
6732
- } else if (expression?.type === "ObjectExpression" || expression?.type === "FunctionExpression" && !expression.id) {
6755
+ } else if (expression?.type === "ObjectExpression" || expression?.type === "FunctionExpression" && !expression.id || expression?.type === "UnaryExpression" && !expression.pre?.length && expression.expression !== makeExpressionStatement(expression.expression)) {
6733
6756
  return makeLeftHandSideExpression(expression);
6734
6757
  } else {
6735
6758
  return expression;
@@ -7442,12 +7465,12 @@ function processProgram(root) {
7442
7465
  } else if (config2.autoVar) {
7443
7466
  createVarDecs(root, []);
7444
7467
  }
7445
- processBlocks(statements);
7446
- populateRefs(statements);
7447
- adjustAtBindings(statements);
7448
7468
  if (config2.repl) {
7449
7469
  processRepl(root, rootIIFE);
7450
7470
  }
7471
+ processBlocks(statements);
7472
+ populateRefs(statements);
7473
+ adjustAtBindings(statements);
7451
7474
  if (getSync()) {
7452
7475
  processComptime(statements);
7453
7476
  }
@@ -7466,7 +7489,11 @@ function processRepl(root, rootIIFE) {
7466
7489
  }
7467
7490
  if (decl.parent === topBlock || decl.decl === "var") {
7468
7491
  decl.children.shift();
7469
- root.expressions.splice(i++, 0, ["", `var ${decl.names.join(",")};`]);
7492
+ if (decl.bindings[0]?.pattern?.type === "ObjectBindingPattern") {
7493
+ decl.children.unshift("(");
7494
+ decl.children.push(")");
7495
+ }
7496
+ root.expressions.splice(i++, 0, ["", `var ${decl.names.join(",")}`, ";"]);
7470
7497
  }
7471
7498
  }
7472
7499
  for (let ref27 = gatherRecursive(topBlock, ($15) => $15.type === "FunctionExpression"), i10 = 0, len9 = ref27.length; i10 < len9; i10++) {
@@ -7478,7 +7505,7 @@ function processRepl(root, rootIIFE) {
7478
7505
  func.parent = root;
7479
7506
  } else {
7480
7507
  func.children.unshift(func.name, "=");
7481
- root.expressions.splice(i++, 0, ["", `var ${func.name};`]);
7508
+ root.expressions.splice(i++, 0, ["", `var ${func.name}`, ";"]);
7482
7509
  }
7483
7510
  }
7484
7511
  }
@@ -7487,7 +7514,7 @@ function processRepl(root, rootIIFE) {
7487
7514
  let m5;
7488
7515
  if (classExp.name && classExp.parent === topBlock || (m5 = classExp.parent, typeof m5 === "object" && m5 != null && "type" in m5 && m5.type === "ReturnStatement" && "parent" in m5 && m5.parent === topBlock)) {
7489
7516
  classExp.children.unshift(classExp.name, "=");
7490
- root.expressions.splice(i++, 0, ["", `var ${classExp.name};`]);
7517
+ root.expressions.splice(i++, 0, ["", `var ${classExp.name}`, ";"]);
7491
7518
  }
7492
7519
  }
7493
7520
  }
@@ -7815,9 +7842,12 @@ var grammar = {
7815
7842
  ReservedBinary,
7816
7843
  ArgumentsWithTrailingMemberExpressions,
7817
7844
  TrailingMemberExpressions,
7818
- IndentedTrailingMemberExpression,
7845
+ IndentedTrailingMemberExpressions,
7846
+ NestedTrailingMemberExpression,
7819
7847
  AllowedTrailingMemberExpressions,
7820
7848
  TrailingCallExpressions,
7849
+ IndentedTrailingCallExpressions,
7850
+ NestedTrailingCallExpression,
7821
7851
  AllowedTrailingCallExpressions,
7822
7852
  CommaDelimiter,
7823
7853
  OptionalCommaDelimiter,
@@ -7875,6 +7905,7 @@ var grammar = {
7875
7905
  PipelineHeadItem,
7876
7906
  PipelineTailItem,
7877
7907
  PrimaryExpression,
7908
+ OptimizedParenthesizedExpression,
7878
7909
  ParenthesizedExpression,
7879
7910
  Placeholder,
7880
7911
  PlaceholderTypeSuffix,
@@ -8323,6 +8354,7 @@ var grammar = {
8323
8354
  Dot,
8324
8355
  DotDot,
8325
8356
  DotDotDot,
8357
+ InsertDotDotDot,
8326
8358
  DoubleColon,
8327
8359
  DoubleColonAsColon,
8328
8360
  DoubleQuote,
@@ -8883,7 +8915,7 @@ var $R11 = (0, import_lib2.$R)(new RegExp("%%?", "suy"));
8883
8915
  var $R12 = (0, import_lib2.$R)(new RegExp("[.\\s]", "suy"));
8884
8916
  var $R13 = (0, import_lib2.$R)(new RegExp("[)}]", "suy"));
8885
8917
  var $R14 = (0, import_lib2.$R)(new RegExp("[+-]", "suy"));
8886
- var $R15 = (0, import_lib2.$R)(new RegExp("\\+\\+|--|[\\+\\-&]\\S", "suy"));
8918
+ var $R15 = (0, import_lib2.$R)(new RegExp("\\+\\+|--|\u29FA|\u2014|[\\+\\-&]\\S", "suy"));
8887
8919
  var $R16 = (0, import_lib2.$R)(new RegExp(`(?=[0-9.'"tfyno])`, "suy"));
8888
8920
  var $R17 = (0, import_lib2.$R)(new RegExp("(?=true|false|yes|no|on|off)", "suy"));
8889
8921
  var $R18 = (0, import_lib2.$R)(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
@@ -9061,7 +9093,7 @@ var NestedExpressionizedStatement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((
9061
9093
  return expression;
9062
9094
  return {
9063
9095
  type: "CallExpression",
9064
- children: [expression, ...trailing.flat()]
9096
+ children: [expression, ...trailing]
9065
9097
  };
9066
9098
  });
9067
9099
  function NestedExpressionizedStatement(ctx, state2) {
@@ -9074,7 +9106,7 @@ var ExpressionizedStatementWithTrailingCallExpressions$0 = (0, import_lib2.$TS)(
9074
9106
  type: "CallExpression",
9075
9107
  children: [
9076
9108
  makeLeftHandSideExpression($1),
9077
- $2
9109
+ ...$2
9078
9110
  ]
9079
9111
  };
9080
9112
  });
@@ -9166,7 +9198,7 @@ var ExplicitArguments$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenParen, Al
9166
9198
  function ExplicitArguments(ctx, state2) {
9167
9199
  return (0, import_lib2.$EVENT)(ctx, state2, "ExplicitArguments", ExplicitArguments$0);
9168
9200
  }
9169
- var ApplicationStart$0 = (0, import_lib2.$S)(IndentedApplicationAllowed, (0, import_lib2.$Y)((0, import_lib2.$S)(IndentedFurther, (0, import_lib2.$N)(IdentifierBinaryOp), (0, import_lib2.$N)(ReservedBinary))), (0, import_lib2.$N)(IndentedTrailingMemberExpression));
9201
+ var ApplicationStart$0 = (0, import_lib2.$S)(IndentedApplicationAllowed, (0, import_lib2.$Y)((0, import_lib2.$S)(IndentedFurther, (0, import_lib2.$N)(IdentifierBinaryOp), (0, import_lib2.$N)(ReservedBinary))), (0, import_lib2.$N)(IndentedTrailingMemberExpressions));
9170
9202
  var ApplicationStart$1 = (0, import_lib2.$S)((0, import_lib2.$N)(EOS), (0, import_lib2.$Y)((0, import_lib2.$S)(_, (0, import_lib2.$C)(BracedApplicationAllowed, (0, import_lib2.$N)((0, import_lib2.$EXPECT)($L1, 'ApplicationStart "{"'))), (0, import_lib2.$N)(ForbiddenImplicitCalls))));
9171
9203
  var ApplicationStart$$ = [ApplicationStart$0, ApplicationStart$1];
9172
9204
  function ApplicationStart(ctx, state2) {
@@ -9207,19 +9239,34 @@ var ArgumentsWithTrailingMemberExpressions$0 = (0, import_lib2.$TS)((0, import_l
9207
9239
  function ArgumentsWithTrailingMemberExpressions(ctx, state2) {
9208
9240
  return (0, import_lib2.$EVENT)(ctx, state2, "ArgumentsWithTrailingMemberExpressions", ArgumentsWithTrailingMemberExpressions$0);
9209
9241
  }
9210
- var TrailingMemberExpressions$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$Q)(MemberExpressionRest), (0, import_lib2.$Q)(IndentedTrailingMemberExpression)), function($skip, $loc, $0, $1, $2) {
9242
+ var TrailingMemberExpressions$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$Q)(MemberExpressionRest), (0, import_lib2.$E)(IndentedTrailingMemberExpressions)), function($skip, $loc, $0, $1, $2) {
9243
+ if (!$2)
9244
+ return $1;
9211
9245
  return [...$1, ...$2];
9212
9246
  });
9213
9247
  function TrailingMemberExpressions(ctx, state2) {
9214
9248
  return (0, import_lib2.$EVENT)(ctx, state2, "TrailingMemberExpressions", TrailingMemberExpressions$0);
9215
9249
  }
9216
- var IndentedTrailingMemberExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(IndentedAtLeast, (0, import_lib2.$Y)((0, import_lib2.$S)((0, import_lib2.$E)((0, import_lib2.$EXPECT)($L6, 'IndentedTrailingMemberExpression "?"')), (0, import_lib2.$EXPECT)($L7, 'IndentedTrailingMemberExpression "."'), (0, import_lib2.$N)((0, import_lib2.$EXPECT)($R3, "IndentedTrailingMemberExpression /[0-9]/")))), MemberExpressionRest), function($skip, $loc, $0, $1, $2, $3) {
9250
+ var IndentedTrailingMemberExpressions$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(PushIndent, (0, import_lib2.$Q)(NestedTrailingMemberExpression), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
9251
+ if (!$2.length)
9252
+ return $skip;
9253
+ return $2.flat();
9254
+ });
9255
+ var IndentedTrailingMemberExpressions$1 = (0, import_lib2.$TV)((0, import_lib2.$P)(NestedTrailingMemberExpression), function($skip, $loc, $0, $1) {
9256
+ return $1.flat();
9257
+ });
9258
+ var IndentedTrailingMemberExpressions$$ = [IndentedTrailingMemberExpressions$0, IndentedTrailingMemberExpressions$1];
9259
+ function IndentedTrailingMemberExpressions(ctx, state2) {
9260
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "IndentedTrailingMemberExpressions", IndentedTrailingMemberExpressions$$);
9261
+ }
9262
+ var NestedTrailingMemberExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(Nested, (0, import_lib2.$Y)((0, import_lib2.$S)((0, import_lib2.$E)((0, import_lib2.$EXPECT)($L6, 'NestedTrailingMemberExpression "?"')), (0, import_lib2.$EXPECT)($L7, 'NestedTrailingMemberExpression "."'), (0, import_lib2.$N)((0, import_lib2.$EXPECT)($R3, "NestedTrailingMemberExpression /[0-9]/")))), (0, import_lib2.$P)(MemberExpressionRest)), function($skip, $loc, $0, $1, $2, $3) {
9217
9263
  var ws = $1;
9218
- var rest = $3;
9219
- return prepend(ws, rest);
9264
+ var rests = $3;
9265
+ const [first, ...rest] = rests;
9266
+ return [prepend(ws, first), ...rest];
9220
9267
  });
9221
- function IndentedTrailingMemberExpression(ctx, state2) {
9222
- return (0, import_lib2.$EVENT)(ctx, state2, "IndentedTrailingMemberExpression", IndentedTrailingMemberExpression$0);
9268
+ function NestedTrailingMemberExpression(ctx, state2) {
9269
+ return (0, import_lib2.$EVENT)(ctx, state2, "NestedTrailingMemberExpression", NestedTrailingMemberExpression$0);
9223
9270
  }
9224
9271
  var AllowedTrailingMemberExpressions$0 = (0, import_lib2.$T)((0, import_lib2.$S)(TrailingMemberPropertyAllowed, TrailingMemberExpressions), function(value) {
9225
9272
  return value[1];
@@ -9229,10 +9276,37 @@ var AllowedTrailingMemberExpressions$$ = [AllowedTrailingMemberExpressions$0, Al
9229
9276
  function AllowedTrailingMemberExpressions(ctx, state2) {
9230
9277
  return (0, import_lib2.$EVENT_C)(ctx, state2, "AllowedTrailingMemberExpressions", AllowedTrailingMemberExpressions$$);
9231
9278
  }
9232
- var TrailingCallExpressions$0 = (0, import_lib2.$P)((0, import_lib2.$S)(IndentedAtLeast, (0, import_lib2.$Y)((0, import_lib2.$S)((0, import_lib2.$E)((0, import_lib2.$EXPECT)($L6, 'TrailingCallExpressions "?"')), (0, import_lib2.$EXPECT)($L7, 'TrailingCallExpressions "."'), (0, import_lib2.$N)((0, import_lib2.$R$0)((0, import_lib2.$EXPECT)($R3, "TrailingCallExpressions /[0-9]/"))))), (0, import_lib2.$P)(CallExpressionRest)));
9279
+ var TrailingCallExpressions$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$Q)(CallExpressionRest), (0, import_lib2.$E)(IndentedTrailingCallExpressions)), function($skip, $loc, $0, $1, $2) {
9280
+ if (!$1.length && !$2)
9281
+ return $skip;
9282
+ if (!$2)
9283
+ return $1;
9284
+ return [...$1, ...$2];
9285
+ });
9233
9286
  function TrailingCallExpressions(ctx, state2) {
9234
9287
  return (0, import_lib2.$EVENT)(ctx, state2, "TrailingCallExpressions", TrailingCallExpressions$0);
9235
9288
  }
9289
+ var IndentedTrailingCallExpressions$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(PushIndent, (0, import_lib2.$Q)(NestedTrailingCallExpression), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
9290
+ if (!$2.length)
9291
+ return $skip;
9292
+ return $2.flat();
9293
+ });
9294
+ var IndentedTrailingCallExpressions$1 = (0, import_lib2.$TV)((0, import_lib2.$P)(NestedTrailingCallExpression), function($skip, $loc, $0, $1) {
9295
+ return $1.flat();
9296
+ });
9297
+ var IndentedTrailingCallExpressions$$ = [IndentedTrailingCallExpressions$0, IndentedTrailingCallExpressions$1];
9298
+ function IndentedTrailingCallExpressions(ctx, state2) {
9299
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "IndentedTrailingCallExpressions", IndentedTrailingCallExpressions$$);
9300
+ }
9301
+ var NestedTrailingCallExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(Nested, (0, import_lib2.$Y)((0, import_lib2.$S)((0, import_lib2.$E)((0, import_lib2.$EXPECT)($L6, 'NestedTrailingCallExpression "?"')), (0, import_lib2.$EXPECT)($L7, 'NestedTrailingCallExpression "."'), (0, import_lib2.$N)((0, import_lib2.$EXPECT)($R3, "NestedTrailingCallExpression /[0-9]/")))), (0, import_lib2.$P)(CallExpressionRest)), function($skip, $loc, $0, $1, $2, $3) {
9302
+ var ws = $1;
9303
+ var rests = $3;
9304
+ const [first, ...rest] = rests.flat();
9305
+ return [prepend(ws, first), ...rest];
9306
+ });
9307
+ function NestedTrailingCallExpression(ctx, state2) {
9308
+ return (0, import_lib2.$EVENT)(ctx, state2, "NestedTrailingCallExpression", NestedTrailingCallExpression$0);
9309
+ }
9236
9310
  var AllowedTrailingCallExpressions$0 = (0, import_lib2.$T)((0, import_lib2.$S)(TrailingMemberPropertyAllowed, TrailingCallExpressions), function(value) {
9237
9311
  return value[1];
9238
9312
  });
@@ -9745,9 +9819,7 @@ function TrailingPostfix(ctx, state2) {
9745
9819
  }
9746
9820
  var FatArrowBody$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$N)(EOS), (0, import_lib2.$N)((0, import_lib2.$S)((0, import_lib2.$E)(_), ExpressionizedStatement)), NonPipelineExpression, (0, import_lib2.$N)(TrailingDeclaration), (0, import_lib2.$N)(TrailingPipe), (0, import_lib2.$N)(TrailingPostfix), (0, import_lib2.$N)(SemicolonDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
9747
9821
  var exp = $3;
9748
- if (exp.type === "ObjectExpression") {
9749
- exp = makeLeftHandSideExpression(exp);
9750
- }
9822
+ exp = makeExpressionStatement(exp);
9751
9823
  const expressions = [["", exp]];
9752
9824
  return {
9753
9825
  type: "BlockStatement",
@@ -9838,7 +9910,7 @@ function PipelineExpressionBodySameLine(ctx, state2) {
9838
9910
  return (0, import_lib2.$EVENT)(ctx, state2, "PipelineExpressionBodySameLine", PipelineExpressionBodySameLine$0);
9839
9911
  }
9840
9912
  var PipelineHeadItem$0 = NonPipelineExpression;
9841
- var PipelineHeadItem$1 = ParenthesizedExpression;
9913
+ var PipelineHeadItem$1 = OptimizedParenthesizedExpression;
9842
9914
  var PipelineHeadItem$$ = [PipelineHeadItem$0, PipelineHeadItem$1];
9843
9915
  function PipelineHeadItem(ctx, state2) {
9844
9916
  return (0, import_lib2.$EVENT_C)(ctx, state2, "PipelineHeadItem", PipelineHeadItem$$);
@@ -9873,7 +9945,7 @@ var PrimaryExpression$5 = FunctionExpression;
9873
9945
  var PrimaryExpression$6 = IdentifierReference;
9874
9946
  var PrimaryExpression$7 = ClassExpression;
9875
9947
  var PrimaryExpression$8 = RegularExpressionLiteral;
9876
- var PrimaryExpression$9 = ParenthesizedExpression;
9948
+ var PrimaryExpression$9 = OptimizedParenthesizedExpression;
9877
9949
  var PrimaryExpression$10 = Placeholder;
9878
9950
  var PrimaryExpression$11 = SymbolLiteral;
9879
9951
  var PrimaryExpression$12 = JSXImplicitFragment;
@@ -9881,31 +9953,36 @@ var PrimaryExpression$$ = [PrimaryExpression$0, PrimaryExpression$1, PrimaryExpr
9881
9953
  function PrimaryExpression(ctx, state2) {
9882
9954
  return (0, import_lib2.$EVENT_C)(ctx, state2, "PrimaryExpression", PrimaryExpression$$);
9883
9955
  }
9956
+ var OptimizedParenthesizedExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(ParenthesizedExpression), function($skip, $loc, $0, $1) {
9957
+ const { expression } = $1;
9958
+ switch (expression.type) {
9959
+ case "StatementExpression":
9960
+ if (expression.statement.type !== "IterationExpression")
9961
+ break;
9962
+ case "IterationExpression":
9963
+ return expression;
9964
+ }
9965
+ return $1;
9966
+ });
9967
+ function OptimizedParenthesizedExpression(ctx, state2) {
9968
+ return (0, import_lib2.$EVENT)(ctx, state2, "OptimizedParenthesizedExpression", OptimizedParenthesizedExpression$0);
9969
+ }
9884
9970
  var ParenthesizedExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenParen, AllowAll, (0, import_lib2.$E)((0, import_lib2.$S)(PostfixedCommaExpression, __, CloseParen)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
9885
9971
  var open = $1;
9886
9972
  if (!$3)
9887
9973
  return $skip;
9888
- const [exp, ws, close] = $3;
9889
- switch (exp.type) {
9890
- case "StatementExpression":
9891
- if (exp.statement.type !== "IterationExpression")
9892
- break;
9893
- case "IterationExpression":
9894
- return exp;
9895
- case "ParenthesizedExpression":
9896
- if (exp.implicit) {
9897
- return {
9898
- ...exp,
9899
- children: [open, exp.expression, ws, close],
9900
- implicit: false
9901
- };
9902
- }
9903
- break;
9974
+ const [expression, ws, close] = $3;
9975
+ if (expression.type === "ParenthesizedExpression" && expression.implicit) {
9976
+ return {
9977
+ ...expression,
9978
+ children: [open, expression.expression, ws, close],
9979
+ implicit: false
9980
+ };
9904
9981
  }
9905
9982
  return {
9906
9983
  type: "ParenthesizedExpression",
9907
- children: [open, exp, ws, close],
9908
- expression: exp
9984
+ children: [open, expression, ws, close],
9985
+ expression
9909
9986
  };
9910
9987
  });
9911
9988
  function ParenthesizedExpression(ctx, state2) {
@@ -10443,15 +10520,15 @@ var CallExpression$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.
10443
10520
  children: [$1, ...$2, ...rest.flat()]
10444
10521
  });
10445
10522
  });
10446
- var CallExpression$4 = (0, import_lib2.$TS)((0, import_lib2.$S)(MemberExpression, AllowedTrailingMemberExpressions, (0, import_lib2.$Q)(CallExpressionRest)), function($skip, $loc, $0, $1, $2, $3) {
10523
+ var CallExpression$4 = (0, import_lib2.$TS)((0, import_lib2.$S)(MemberExpression, (0, import_lib2.$Q)(CallExpressionRest), (0, import_lib2.$E)(AllowedTrailingCallExpressions)), function($skip, $loc, $0, $1, $2, $3) {
10447
10524
  var member = $1;
10448
- var trailing = $2;
10449
- var rest = $3;
10450
- if (rest.length || trailing.length) {
10525
+ var rest = $2;
10526
+ var trailing = $3;
10527
+ if (rest.length || trailing) {
10451
10528
  rest = rest.flat();
10452
10529
  return processCallMemberExpression({
10453
10530
  type: "CallExpression",
10454
- children: [member, ...trailing, ...rest]
10531
+ children: [member, ...rest, ...trailing ?? []]
10455
10532
  });
10456
10533
  }
10457
10534
  return member;
@@ -11681,7 +11758,7 @@ var FunctionExpression$4 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenParen, _
11681
11758
  expression: fn
11682
11759
  };
11683
11760
  });
11684
- var FunctionExpression$5 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenParen, __, (0, import_lib2.$N)((0, import_lib2.$EXPECT)($R15, "FunctionExpression /\\+\\+|--|[\\+\\-&]\\S/")), (0, import_lib2.$N)((0, import_lib2.$S)(Placeholder, (0, import_lib2.$C)(TypePostfix, BinaryOpRHS))), BinaryOp, __, NonPipelineAssignmentExpression, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
11761
+ var FunctionExpression$5 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenParen, __, (0, import_lib2.$N)((0, import_lib2.$EXPECT)($R15, "FunctionExpression /\\+\\+|--|\u29FA|\u2014|[\\+\\-&]\\S/")), (0, import_lib2.$N)((0, import_lib2.$S)(Placeholder, (0, import_lib2.$C)(TypePostfix, BinaryOpRHS))), BinaryOp, __, NonPipelineAssignmentExpression, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
11685
11762
  var open = $1;
11686
11763
  var ws1 = $2;
11687
11764
  var op = $5;
@@ -13000,12 +13077,41 @@ var ObjectPropertyDelimiter$$ = [ObjectPropertyDelimiter$0, ObjectPropertyDelimi
13000
13077
  function ObjectPropertyDelimiter(ctx, state2) {
13001
13078
  return (0, import_lib2.$EVENT_C)(ctx, state2, "ObjectPropertyDelimiter", ObjectPropertyDelimiter$$);
13002
13079
  }
13003
- var PropertyDefinition$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), NamedProperty), function($skip, $loc, $0, $1, $2) {
13080
+ var PropertyDefinition$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), InsertDotDotDot, IterationExpression), function($skip, $loc, $0, $1, $2, $3) {
13081
+ var ws = $1;
13082
+ var dots = $2;
13083
+ var exp = $3;
13084
+ let { statement } = exp;
13085
+ if (exp.block.implicit && (statement.type === "DoStatement" || statement.subtype === "loop")) {
13086
+ return $skip;
13087
+ }
13088
+ statement = { ...statement, object: true };
13089
+ exp = {
13090
+ ...exp,
13091
+ statement,
13092
+ children: exp.children.map(($) => $ === exp.statement ? statement : $)
13093
+ };
13094
+ const children = [ws, dots, exp];
13095
+ if (statement.reduction) {
13096
+ children.unshift({
13097
+ type: "Error",
13098
+ message: "Reduction loops are forbidden in object literals"
13099
+ });
13100
+ }
13101
+ return {
13102
+ type: "SpreadProperty",
13103
+ children,
13104
+ names: exp.names,
13105
+ dots,
13106
+ value: exp
13107
+ };
13108
+ });
13109
+ var PropertyDefinition$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), NamedProperty), function($skip, $loc, $0, $1, $2) {
13004
13110
  var ws = $1;
13005
13111
  var prop = $2;
13006
13112
  return prepend(ws, prop);
13007
13113
  });
13008
- var PropertyDefinition$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$TEXT)((0, import_lib2.$EXPECT)($R24, "PropertyDefinition /[!+-]?/")), PropertyName, (0, import_lib2.$Y)(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
13114
+ var PropertyDefinition$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$TEXT)((0, import_lib2.$EXPECT)($R24, "PropertyDefinition /[!+-]?/")), PropertyName, (0, import_lib2.$Y)(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
13009
13115
  var ws = $1;
13010
13116
  var toggle = $2;
13011
13117
  var id = $3;
@@ -13027,7 +13133,7 @@ var PropertyDefinition$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_l
13027
13133
  value: id
13028
13134
  };
13029
13135
  });
13030
- var PropertyDefinition$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), MethodDefinition), function($skip, $loc, $0, $1, $2) {
13136
+ var PropertyDefinition$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), MethodDefinition), function($skip, $loc, $0, $1, $2) {
13031
13137
  var ws = $1;
13032
13138
  var def = $2;
13033
13139
  if (def.type === "MultiMethodDefinition") {
@@ -13039,7 +13145,7 @@ var PropertyDefinition$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_l
13039
13145
  return $skip;
13040
13146
  return prepend(ws, def);
13041
13147
  });
13042
- var PropertyDefinition$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, Expression), function($skip, $loc, $0, $1, $2, $3) {
13148
+ var PropertyDefinition$4 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, Expression), function($skip, $loc, $0, $1, $2, $3) {
13043
13149
  var ws = $1;
13044
13150
  var dots = $2;
13045
13151
  var exp = $3;
@@ -13051,7 +13157,7 @@ var PropertyDefinition$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_l
13051
13157
  value: exp
13052
13158
  };
13053
13159
  });
13054
- var PropertyDefinition$4 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$N)((0, import_lib2.$C)(EOS, (0, import_lib2.$EXPECT)($L7, 'PropertyDefinition "."'))), (0, import_lib2.$Q)(UnaryOp), CallExpression, (0, import_lib2.$E)(UnaryPostfix)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13160
+ var PropertyDefinition$5 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$N)((0, import_lib2.$C)(EOS, (0, import_lib2.$EXPECT)($L7, 'PropertyDefinition "."'))), (0, import_lib2.$Q)(UnaryOp), CallExpression, (0, import_lib2.$E)(UnaryPostfix)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13055
13161
  var ws = $1;
13056
13162
  var pre = $3;
13057
13163
  var value = $4;
@@ -13116,7 +13222,7 @@ var PropertyDefinition$4 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_l
13116
13222
  value
13117
13223
  };
13118
13224
  });
13119
- var PropertyDefinition$$ = [PropertyDefinition$0, PropertyDefinition$1, PropertyDefinition$2, PropertyDefinition$3, PropertyDefinition$4];
13225
+ var PropertyDefinition$$ = [PropertyDefinition$0, PropertyDefinition$1, PropertyDefinition$2, PropertyDefinition$3, PropertyDefinition$4, PropertyDefinition$5];
13120
13226
  function PropertyDefinition(ctx, state2) {
13121
13227
  return (0, import_lib2.$EVENT_C)(ctx, state2, "PropertyDefinition", PropertyDefinition$$);
13122
13228
  }
@@ -16097,7 +16203,7 @@ var DecimalBigIntegerLiteral$0 = (0, import_lib2.$R$0)((0, import_lib2.$EXPECT)(
16097
16203
  function DecimalBigIntegerLiteral(ctx, state2) {
16098
16204
  return (0, import_lib2.$EVENT)(ctx, state2, "DecimalBigIntegerLiteral", DecimalBigIntegerLiteral$0);
16099
16205
  }
16100
- var DecimalLiteral$0 = (0, import_lib2.$TV)((0, import_lib2.$TEXT)((0, import_lib2.$EXPECT)($R36, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))/")), function($skip, $loc, $0, $1) {
16206
+ var DecimalLiteral$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$TEXT)((0, import_lib2.$EXPECT)($R36, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))/")), (0, import_lib2.$N)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L7, 'DecimalLiteral "."'), ExponentPart))), function($skip, $loc, $0, $1, $2) {
16101
16207
  return $1 + ".";
16102
16208
  });
16103
16209
  var DecimalLiteral$1 = (0, import_lib2.$TEXT)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($R37, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?/"), (0, import_lib2.$E)(ExponentPart)));
@@ -16736,6 +16842,12 @@ var DotDotDot$$ = [DotDotDot$0, DotDotDot$1];
16736
16842
  function DotDotDot(ctx, state2) {
16737
16843
  return (0, import_lib2.$EVENT_C)(ctx, state2, "DotDotDot", DotDotDot$$);
16738
16844
  }
16845
+ var InsertDotDotDot$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L0, 'InsertDotDotDot ""'), function($skip, $loc, $0, $1) {
16846
+ return { $loc, token: "..." };
16847
+ });
16848
+ function InsertDotDotDot(ctx, state2) {
16849
+ return (0, import_lib2.$EVENT)(ctx, state2, "InsertDotDotDot", InsertDotDotDot$0);
16850
+ }
16739
16851
  var DoubleColon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L162, 'DoubleColon "::"'), function($skip, $loc, $0, $1) {
16740
16852
  return { $loc, token: $1 };
16741
16853
  });
@@ -17731,7 +17843,7 @@ var InlineJSXPrimaryExpression$5 = ArrayLiteral;
17731
17843
  var InlineJSXPrimaryExpression$6 = BracedObjectLiteral;
17732
17844
  var InlineJSXPrimaryExpression$7 = IdentifierReference;
17733
17845
  var InlineJSXPrimaryExpression$8 = RegularExpressionLiteral;
17734
- var InlineJSXPrimaryExpression$9 = ParenthesizedExpression;
17846
+ var InlineJSXPrimaryExpression$9 = OptimizedParenthesizedExpression;
17735
17847
  var InlineJSXPrimaryExpression$$ = [InlineJSXPrimaryExpression$0, InlineJSXPrimaryExpression$1, InlineJSXPrimaryExpression$2, InlineJSXPrimaryExpression$3, InlineJSXPrimaryExpression$4, InlineJSXPrimaryExpression$5, InlineJSXPrimaryExpression$6, InlineJSXPrimaryExpression$7, InlineJSXPrimaryExpression$8, InlineJSXPrimaryExpression$9];
17736
17848
  function InlineJSXPrimaryExpression(ctx, state2) {
17737
17849
  return (0, import_lib2.$EVENT_C)(ctx, state2, "InlineJSXPrimaryExpression", InlineJSXPrimaryExpression$$);
@@ -18897,7 +19009,7 @@ var TypeBullet$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(BulletIndent, (0, im
18897
19009
  function TypeBullet(ctx, state2) {
18898
19010
  return (0, import_lib2.$EVENT)(ctx, state2, "TypeBullet", TypeBullet$0);
18899
19011
  }
18900
- var TypeWithPostfix$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(TypeConditional, (0, import_lib2.$E)((0, import_lib2.$S)(SameLineOrIndentedFurther, TypeIfClause))), function($skip, $loc, $0, $1, $2) {
19012
+ var TypeWithPostfix$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(TypeConditional, (0, import_lib2.$E)((0, import_lib2.$S)((0, import_lib2.$E)(_), TypeIfClause))), function($skip, $loc, $0, $1, $2) {
18901
19013
  var t = $1;
18902
19014
  var postfix = $2;
18903
19015
  if (!postfix)