@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.mjs CHANGED
@@ -790,18 +790,31 @@ function insertTrimmingSpace(target, c) {
790
790
  if (target.length === 0) {
791
791
  return c;
792
792
  }
793
- return target.map((e, i) => {
793
+ const results = [];
794
+ for (let i3 = 0, len3 = target.length; i3 < len3; i3++) {
795
+ const i = i3;
796
+ const e = target[i3];
794
797
  if (i === 0) {
795
- return insertTrimmingSpace(e, c);
798
+ results.push(insertTrimmingSpace(e, c));
796
799
  } else {
797
- return e;
800
+ results.push(e);
798
801
  }
799
- });
802
+ }
803
+ ;
804
+ return results;
800
805
  } else if (isParent(target)) {
801
- return {
806
+ const oldChildren = target.children;
807
+ target = {
802
808
  ...target,
803
809
  children: insertTrimmingSpace(target.children, c)
804
810
  };
811
+ for (const key in target) {
812
+ const i = oldChildren.indexOf(target[key]);
813
+ if (i >= 0) {
814
+ target[key] = target.children[i];
815
+ }
816
+ }
817
+ return target;
805
818
  } else if (isToken(target)) {
806
819
  return {
807
820
  ...target,
@@ -976,8 +989,8 @@ function startsWithPredicate(node, predicate, skip = isWhitespaceOrEmpty) {
976
989
  return void 0;
977
990
  }
978
991
  if (Array.isArray(node)) {
979
- for (let i3 = 0, len3 = node.length; i3 < len3; i3++) {
980
- const child = node[i3];
992
+ for (let i4 = 0, len4 = node.length; i4 < len4; i4++) {
993
+ const child = node[i4];
981
994
  if (skip(child)) {
982
995
  continue;
983
996
  }
@@ -1016,9 +1029,9 @@ function deepCopy(root) {
1016
1029
  if (Array.isArray(node)) {
1017
1030
  const array = new Array(node.length);
1018
1031
  copied.set(node, array);
1019
- for (let i4 = 0, len4 = node.length; i4 < len4; i4++) {
1020
- const i = i4;
1021
- const item = node[i4];
1032
+ for (let i5 = 0, len5 = node.length; i5 < len5; i5++) {
1033
+ const i = i5;
1034
+ const item = node[i5];
1022
1035
  array[i] = recurse(item);
1023
1036
  }
1024
1037
  } else if (node?.type === "Ref") {
@@ -1045,9 +1058,9 @@ function replaceNode(node, newNode, parent) {
1045
1058
  throw new Error("replaceNode failed: node has no parent");
1046
1059
  }
1047
1060
  function recurse(children) {
1048
- for (let i5 = 0, len5 = children.length; i5 < len5; i5++) {
1049
- const i = i5;
1050
- const child = children[i5];
1061
+ for (let i6 = 0, len6 = children.length; i6 < len6; i6++) {
1062
+ const i = i6;
1063
+ const child = children[i6];
1051
1064
  if (child === node) {
1052
1065
  children[i] = newNode;
1053
1066
  return true;
@@ -1084,9 +1097,9 @@ function replaceNodes(root, predicate, replacer) {
1084
1097
  return root;
1085
1098
  }
1086
1099
  }
1087
- for (let i6 = 0, len6 = array.length; i6 < len6; i6++) {
1088
- const i = i6;
1089
- const node = array[i6];
1100
+ for (let i7 = 0, len7 = array.length; i7 < len7; i7++) {
1101
+ const i = i7;
1102
+ const node = array[i7];
1090
1103
  if (!(node != null)) {
1091
1104
  return;
1092
1105
  }
@@ -1210,8 +1223,8 @@ function updateParentPointers(node, parent, depth = 1) {
1210
1223
  return;
1211
1224
  }
1212
1225
  if (Array.isArray(node)) {
1213
- for (let i7 = 0, len7 = node.length; i7 < len7; i7++) {
1214
- const child = node[i7];
1226
+ for (let i8 = 0, len8 = node.length; i8 < len8; i8++) {
1227
+ const child = node[i8];
1215
1228
  updateParentPointers(child, parent, depth);
1216
1229
  }
1217
1230
  return;
@@ -1221,8 +1234,8 @@ function updateParentPointers(node, parent, depth = 1) {
1221
1234
  node.parent = parent;
1222
1235
  }
1223
1236
  if (depth && isParent(node)) {
1224
- for (let ref5 = node.children, i8 = 0, len8 = ref5.length; i8 < len8; i8++) {
1225
- const child = ref5[i8];
1237
+ for (let ref5 = node.children, i9 = 0, len9 = ref5.length; i9 < len9; i9++) {
1238
+ const child = ref5[i9];
1226
1239
  updateParentPointers(child, node, depth - 1);
1227
1240
  }
1228
1241
  }
@@ -1398,9 +1411,9 @@ function wrapWithReturn(expression) {
1398
1411
  }
1399
1412
  function flatJoin(array, separator) {
1400
1413
  const result = [];
1401
- for (let i9 = 0, len9 = array.length; i9 < len9; i9++) {
1402
- const i = i9;
1403
- const items = array[i9];
1414
+ for (let i10 = 0, len10 = array.length; i10 < len10; i10++) {
1415
+ const i = i10;
1416
+ const items = array[i10];
1404
1417
  if (i) {
1405
1418
  result.push(separator);
1406
1419
  }
@@ -3102,6 +3115,8 @@ function iterationDeclaration(statement) {
3102
3115
  }
3103
3116
  }
3104
3117
  })());
3118
+ } else if (statement.object) {
3119
+ declaration.children.push("={}");
3105
3120
  } else {
3106
3121
  if (decl === "const") {
3107
3122
  declaration.children.push("=[]");
@@ -3117,6 +3132,9 @@ function iterationDeclaration(statement) {
3117
3132
  }
3118
3133
  if (!block.empty) {
3119
3134
  assignResults(block, (node) => {
3135
+ if (statement.object) {
3136
+ return ["Object.assign(", resultsRef, ",", node, ")"];
3137
+ }
3120
3138
  if (!reduction) {
3121
3139
  return [resultsRef, ".push(", node, ")"];
3122
3140
  }
@@ -4721,8 +4739,8 @@ function processDeclarationConditionStatement(s) {
4721
4739
  return;
4722
4740
  }
4723
4741
  let { expression } = condition;
4724
- 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]) {
4725
- const { type: type1, children: [, { type: type2, expression: expression2 }] } = expression;
4742
+ 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]) {
4743
+ const { type: type1, children: [[], { type: type2, expression: expression2 }] } = expression;
4726
4744
  const type = [type1, type2];
4727
4745
  expression = expression2;
4728
4746
  }
@@ -4741,7 +4759,7 @@ function processDeclarationConditionStatement(s) {
4741
4759
  let children = condition.children;
4742
4760
  if (s.negated) {
4743
4761
  let m;
4744
- 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")) {
4762
+ 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")) {
4745
4763
  throw new Error("Unsupported negated condition");
4746
4764
  }
4747
4765
  ;
@@ -5045,7 +5063,9 @@ function processUnaryExpression(pre, exp, post) {
5045
5063
  if (pre.length) {
5046
5064
  return {
5047
5065
  type: "UnaryExpression",
5048
- children: [...pre, exp]
5066
+ children: [pre, exp],
5067
+ pre,
5068
+ expression: exp
5049
5069
  };
5050
5070
  }
5051
5071
  return exp;
@@ -5097,7 +5117,10 @@ function processUnaryExpression(pre, exp, post) {
5097
5117
  }
5098
5118
  return {
5099
5119
  type: "UnaryExpression",
5100
- children: [...pre, exp, post]
5120
+ children: [pre, exp, post],
5121
+ pre,
5122
+ expression: exp,
5123
+ post
5101
5124
  };
5102
5125
  }
5103
5126
  function processUnaryNestedExpression(pre, args, post) {
@@ -5565,9 +5588,12 @@ function forRange(open, forDeclaration, range, stepExp, close) {
5565
5588
  ascDec = [", ", ascRef, " = ", startRef, " <= ", endRef];
5566
5589
  }
5567
5590
  let varAssign = [], varLetAssign = varAssign, varLet = varAssign, blockPrefix;
5568
- let names = forDeclaration?.names;
5569
- if (forDeclaration?.decl) {
5570
- if (forDeclaration.decl === "let") {
5591
+ let names = forDeclaration?.names ?? [];
5592
+ if (forDeclaration != null) {
5593
+ if (forDeclaration.type === "AssignmentExpression") {
5594
+ varAssign = varLetAssign = [forDeclaration, " = "];
5595
+ names = [];
5596
+ } else if (forDeclaration.decl === "let") {
5571
5597
  const varName = forDeclaration.children.splice(1);
5572
5598
  varAssign = [...trimFirstSpace(varName), " = "];
5573
5599
  varLet = [",", ...varName, " = ", counterRef];
@@ -5577,14 +5603,6 @@ function forRange(open, forDeclaration, range, stepExp, close) {
5577
5603
  ["", [forDeclaration, " = ", value], ";"]
5578
5604
  ];
5579
5605
  }
5580
- } else if (forDeclaration) {
5581
- assert.equal(
5582
- forDeclaration.type,
5583
- "AssignmentExpression",
5584
- "Internal error: Coffee-style for loop must be an assignment expression"
5585
- );
5586
- varAssign = varLetAssign = [forDeclaration, " = "];
5587
- names = [];
5588
5606
  }
5589
5607
  const declaration = {
5590
5608
  type: "Declaration",
@@ -6104,7 +6122,8 @@ function addPostfixStatement(statement, ws, post) {
6104
6122
  const block = makeNode({
6105
6123
  type: "BlockStatement",
6106
6124
  children: [" { ", expressions, " }"],
6107
- expressions
6125
+ expressions,
6126
+ bare: false
6108
6127
  });
6109
6128
  const children = [...post.children, block];
6110
6129
  if (!isWhitespaceOrEmpty(ws))
@@ -6137,12 +6156,16 @@ function negateCondition(condition) {
6137
6156
  if (i < 0) {
6138
6157
  throw new Error(`Could not find expression in condition`);
6139
6158
  }
6159
+ const pre = ["!"];
6160
+ expression = makeLeftHandSideExpression(expression);
6140
6161
  children[i] = expression = {
6141
6162
  type: "UnaryExpression",
6142
6163
  children: [
6143
- "!",
6144
- makeLeftHandSideExpression(expression)
6145
- ]
6164
+ pre,
6165
+ expression
6166
+ ],
6167
+ pre,
6168
+ expression
6146
6169
  };
6147
6170
  return { ...condition, expression, children };
6148
6171
  }
@@ -6709,7 +6732,7 @@ function makeExpressionStatement(expression) {
6709
6732
  return [comma, makeExpressionStatement(exp)];
6710
6733
  })
6711
6734
  ];
6712
- } else if (expression?.type === "ObjectExpression" || expression?.type === "FunctionExpression" && !expression.id) {
6735
+ } else if (expression?.type === "ObjectExpression" || expression?.type === "FunctionExpression" && !expression.id || expression?.type === "UnaryExpression" && !expression.pre?.length && expression.expression !== makeExpressionStatement(expression.expression)) {
6713
6736
  return makeLeftHandSideExpression(expression);
6714
6737
  } else {
6715
6738
  return expression;
@@ -7422,12 +7445,12 @@ function processProgram(root) {
7422
7445
  } else if (config2.autoVar) {
7423
7446
  createVarDecs(root, []);
7424
7447
  }
7425
- processBlocks(statements);
7426
- populateRefs(statements);
7427
- adjustAtBindings(statements);
7428
7448
  if (config2.repl) {
7429
7449
  processRepl(root, rootIIFE);
7430
7450
  }
7451
+ processBlocks(statements);
7452
+ populateRefs(statements);
7453
+ adjustAtBindings(statements);
7431
7454
  if (getSync()) {
7432
7455
  processComptime(statements);
7433
7456
  }
@@ -7446,7 +7469,11 @@ function processRepl(root, rootIIFE) {
7446
7469
  }
7447
7470
  if (decl.parent === topBlock || decl.decl === "var") {
7448
7471
  decl.children.shift();
7449
- root.expressions.splice(i++, 0, ["", `var ${decl.names.join(",")};`]);
7472
+ if (decl.bindings[0]?.pattern?.type === "ObjectBindingPattern") {
7473
+ decl.children.unshift("(");
7474
+ decl.children.push(")");
7475
+ }
7476
+ root.expressions.splice(i++, 0, ["", `var ${decl.names.join(",")}`, ";"]);
7450
7477
  }
7451
7478
  }
7452
7479
  for (let ref27 = gatherRecursive(topBlock, ($15) => $15.type === "FunctionExpression"), i10 = 0, len9 = ref27.length; i10 < len9; i10++) {
@@ -7458,7 +7485,7 @@ function processRepl(root, rootIIFE) {
7458
7485
  func.parent = root;
7459
7486
  } else {
7460
7487
  func.children.unshift(func.name, "=");
7461
- root.expressions.splice(i++, 0, ["", `var ${func.name};`]);
7488
+ root.expressions.splice(i++, 0, ["", `var ${func.name}`, ";"]);
7462
7489
  }
7463
7490
  }
7464
7491
  }
@@ -7467,7 +7494,7 @@ function processRepl(root, rootIIFE) {
7467
7494
  let m5;
7468
7495
  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)) {
7469
7496
  classExp.children.unshift(classExp.name, "=");
7470
- root.expressions.splice(i++, 0, ["", `var ${classExp.name};`]);
7497
+ root.expressions.splice(i++, 0, ["", `var ${classExp.name}`, ";"]);
7471
7498
  }
7472
7499
  }
7473
7500
  }
@@ -7795,9 +7822,12 @@ var grammar = {
7795
7822
  ReservedBinary,
7796
7823
  ArgumentsWithTrailingMemberExpressions,
7797
7824
  TrailingMemberExpressions,
7798
- IndentedTrailingMemberExpression,
7825
+ IndentedTrailingMemberExpressions,
7826
+ NestedTrailingMemberExpression,
7799
7827
  AllowedTrailingMemberExpressions,
7800
7828
  TrailingCallExpressions,
7829
+ IndentedTrailingCallExpressions,
7830
+ NestedTrailingCallExpression,
7801
7831
  AllowedTrailingCallExpressions,
7802
7832
  CommaDelimiter,
7803
7833
  OptionalCommaDelimiter,
@@ -7855,6 +7885,7 @@ var grammar = {
7855
7885
  PipelineHeadItem,
7856
7886
  PipelineTailItem,
7857
7887
  PrimaryExpression,
7888
+ OptimizedParenthesizedExpression,
7858
7889
  ParenthesizedExpression,
7859
7890
  Placeholder,
7860
7891
  PlaceholderTypeSuffix,
@@ -8303,6 +8334,7 @@ var grammar = {
8303
8334
  Dot,
8304
8335
  DotDot,
8305
8336
  DotDotDot,
8337
+ InsertDotDotDot,
8306
8338
  DoubleColon,
8307
8339
  DoubleColonAsColon,
8308
8340
  DoubleQuote,
@@ -8863,7 +8895,7 @@ var $R11 = (0, import_lib2.$R)(new RegExp("%%?", "suy"));
8863
8895
  var $R12 = (0, import_lib2.$R)(new RegExp("[.\\s]", "suy"));
8864
8896
  var $R13 = (0, import_lib2.$R)(new RegExp("[)}]", "suy"));
8865
8897
  var $R14 = (0, import_lib2.$R)(new RegExp("[+-]", "suy"));
8866
- var $R15 = (0, import_lib2.$R)(new RegExp("\\+\\+|--|[\\+\\-&]\\S", "suy"));
8898
+ var $R15 = (0, import_lib2.$R)(new RegExp("\\+\\+|--|\u29FA|\u2014|[\\+\\-&]\\S", "suy"));
8867
8899
  var $R16 = (0, import_lib2.$R)(new RegExp(`(?=[0-9.'"tfyno])`, "suy"));
8868
8900
  var $R17 = (0, import_lib2.$R)(new RegExp("(?=true|false|yes|no|on|off)", "suy"));
8869
8901
  var $R18 = (0, import_lib2.$R)(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
@@ -9041,7 +9073,7 @@ var NestedExpressionizedStatement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((
9041
9073
  return expression;
9042
9074
  return {
9043
9075
  type: "CallExpression",
9044
- children: [expression, ...trailing.flat()]
9076
+ children: [expression, ...trailing]
9045
9077
  };
9046
9078
  });
9047
9079
  function NestedExpressionizedStatement(ctx, state2) {
@@ -9054,7 +9086,7 @@ var ExpressionizedStatementWithTrailingCallExpressions$0 = (0, import_lib2.$TS)(
9054
9086
  type: "CallExpression",
9055
9087
  children: [
9056
9088
  makeLeftHandSideExpression($1),
9057
- $2
9089
+ ...$2
9058
9090
  ]
9059
9091
  };
9060
9092
  });
@@ -9146,7 +9178,7 @@ var ExplicitArguments$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenParen, Al
9146
9178
  function ExplicitArguments(ctx, state2) {
9147
9179
  return (0, import_lib2.$EVENT)(ctx, state2, "ExplicitArguments", ExplicitArguments$0);
9148
9180
  }
9149
- 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));
9181
+ 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));
9150
9182
  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))));
9151
9183
  var ApplicationStart$$ = [ApplicationStart$0, ApplicationStart$1];
9152
9184
  function ApplicationStart(ctx, state2) {
@@ -9187,19 +9219,34 @@ var ArgumentsWithTrailingMemberExpressions$0 = (0, import_lib2.$TS)((0, import_l
9187
9219
  function ArgumentsWithTrailingMemberExpressions(ctx, state2) {
9188
9220
  return (0, import_lib2.$EVENT)(ctx, state2, "ArgumentsWithTrailingMemberExpressions", ArgumentsWithTrailingMemberExpressions$0);
9189
9221
  }
9190
- 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) {
9222
+ 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) {
9223
+ if (!$2)
9224
+ return $1;
9191
9225
  return [...$1, ...$2];
9192
9226
  });
9193
9227
  function TrailingMemberExpressions(ctx, state2) {
9194
9228
  return (0, import_lib2.$EVENT)(ctx, state2, "TrailingMemberExpressions", TrailingMemberExpressions$0);
9195
9229
  }
9196
- 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) {
9230
+ 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) {
9231
+ if (!$2.length)
9232
+ return $skip;
9233
+ return $2.flat();
9234
+ });
9235
+ var IndentedTrailingMemberExpressions$1 = (0, import_lib2.$TV)((0, import_lib2.$P)(NestedTrailingMemberExpression), function($skip, $loc, $0, $1) {
9236
+ return $1.flat();
9237
+ });
9238
+ var IndentedTrailingMemberExpressions$$ = [IndentedTrailingMemberExpressions$0, IndentedTrailingMemberExpressions$1];
9239
+ function IndentedTrailingMemberExpressions(ctx, state2) {
9240
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "IndentedTrailingMemberExpressions", IndentedTrailingMemberExpressions$$);
9241
+ }
9242
+ 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) {
9197
9243
  var ws = $1;
9198
- var rest = $3;
9199
- return prepend(ws, rest);
9244
+ var rests = $3;
9245
+ const [first, ...rest] = rests;
9246
+ return [prepend(ws, first), ...rest];
9200
9247
  });
9201
- function IndentedTrailingMemberExpression(ctx, state2) {
9202
- return (0, import_lib2.$EVENT)(ctx, state2, "IndentedTrailingMemberExpression", IndentedTrailingMemberExpression$0);
9248
+ function NestedTrailingMemberExpression(ctx, state2) {
9249
+ return (0, import_lib2.$EVENT)(ctx, state2, "NestedTrailingMemberExpression", NestedTrailingMemberExpression$0);
9203
9250
  }
9204
9251
  var AllowedTrailingMemberExpressions$0 = (0, import_lib2.$T)((0, import_lib2.$S)(TrailingMemberPropertyAllowed, TrailingMemberExpressions), function(value) {
9205
9252
  return value[1];
@@ -9209,10 +9256,37 @@ var AllowedTrailingMemberExpressions$$ = [AllowedTrailingMemberExpressions$0, Al
9209
9256
  function AllowedTrailingMemberExpressions(ctx, state2) {
9210
9257
  return (0, import_lib2.$EVENT_C)(ctx, state2, "AllowedTrailingMemberExpressions", AllowedTrailingMemberExpressions$$);
9211
9258
  }
9212
- 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)));
9259
+ 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) {
9260
+ if (!$1.length && !$2)
9261
+ return $skip;
9262
+ if (!$2)
9263
+ return $1;
9264
+ return [...$1, ...$2];
9265
+ });
9213
9266
  function TrailingCallExpressions(ctx, state2) {
9214
9267
  return (0, import_lib2.$EVENT)(ctx, state2, "TrailingCallExpressions", TrailingCallExpressions$0);
9215
9268
  }
9269
+ 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) {
9270
+ if (!$2.length)
9271
+ return $skip;
9272
+ return $2.flat();
9273
+ });
9274
+ var IndentedTrailingCallExpressions$1 = (0, import_lib2.$TV)((0, import_lib2.$P)(NestedTrailingCallExpression), function($skip, $loc, $0, $1) {
9275
+ return $1.flat();
9276
+ });
9277
+ var IndentedTrailingCallExpressions$$ = [IndentedTrailingCallExpressions$0, IndentedTrailingCallExpressions$1];
9278
+ function IndentedTrailingCallExpressions(ctx, state2) {
9279
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "IndentedTrailingCallExpressions", IndentedTrailingCallExpressions$$);
9280
+ }
9281
+ 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) {
9282
+ var ws = $1;
9283
+ var rests = $3;
9284
+ const [first, ...rest] = rests.flat();
9285
+ return [prepend(ws, first), ...rest];
9286
+ });
9287
+ function NestedTrailingCallExpression(ctx, state2) {
9288
+ return (0, import_lib2.$EVENT)(ctx, state2, "NestedTrailingCallExpression", NestedTrailingCallExpression$0);
9289
+ }
9216
9290
  var AllowedTrailingCallExpressions$0 = (0, import_lib2.$T)((0, import_lib2.$S)(TrailingMemberPropertyAllowed, TrailingCallExpressions), function(value) {
9217
9291
  return value[1];
9218
9292
  });
@@ -9725,9 +9799,7 @@ function TrailingPostfix(ctx, state2) {
9725
9799
  }
9726
9800
  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) {
9727
9801
  var exp = $3;
9728
- if (exp.type === "ObjectExpression") {
9729
- exp = makeLeftHandSideExpression(exp);
9730
- }
9802
+ exp = makeExpressionStatement(exp);
9731
9803
  const expressions = [["", exp]];
9732
9804
  return {
9733
9805
  type: "BlockStatement",
@@ -9818,7 +9890,7 @@ function PipelineExpressionBodySameLine(ctx, state2) {
9818
9890
  return (0, import_lib2.$EVENT)(ctx, state2, "PipelineExpressionBodySameLine", PipelineExpressionBodySameLine$0);
9819
9891
  }
9820
9892
  var PipelineHeadItem$0 = NonPipelineExpression;
9821
- var PipelineHeadItem$1 = ParenthesizedExpression;
9893
+ var PipelineHeadItem$1 = OptimizedParenthesizedExpression;
9822
9894
  var PipelineHeadItem$$ = [PipelineHeadItem$0, PipelineHeadItem$1];
9823
9895
  function PipelineHeadItem(ctx, state2) {
9824
9896
  return (0, import_lib2.$EVENT_C)(ctx, state2, "PipelineHeadItem", PipelineHeadItem$$);
@@ -9853,7 +9925,7 @@ var PrimaryExpression$5 = FunctionExpression;
9853
9925
  var PrimaryExpression$6 = IdentifierReference;
9854
9926
  var PrimaryExpression$7 = ClassExpression;
9855
9927
  var PrimaryExpression$8 = RegularExpressionLiteral;
9856
- var PrimaryExpression$9 = ParenthesizedExpression;
9928
+ var PrimaryExpression$9 = OptimizedParenthesizedExpression;
9857
9929
  var PrimaryExpression$10 = Placeholder;
9858
9930
  var PrimaryExpression$11 = SymbolLiteral;
9859
9931
  var PrimaryExpression$12 = JSXImplicitFragment;
@@ -9861,31 +9933,36 @@ var PrimaryExpression$$ = [PrimaryExpression$0, PrimaryExpression$1, PrimaryExpr
9861
9933
  function PrimaryExpression(ctx, state2) {
9862
9934
  return (0, import_lib2.$EVENT_C)(ctx, state2, "PrimaryExpression", PrimaryExpression$$);
9863
9935
  }
9936
+ var OptimizedParenthesizedExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(ParenthesizedExpression), function($skip, $loc, $0, $1) {
9937
+ const { expression } = $1;
9938
+ switch (expression.type) {
9939
+ case "StatementExpression":
9940
+ if (expression.statement.type !== "IterationExpression")
9941
+ break;
9942
+ case "IterationExpression":
9943
+ return expression;
9944
+ }
9945
+ return $1;
9946
+ });
9947
+ function OptimizedParenthesizedExpression(ctx, state2) {
9948
+ return (0, import_lib2.$EVENT)(ctx, state2, "OptimizedParenthesizedExpression", OptimizedParenthesizedExpression$0);
9949
+ }
9864
9950
  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) {
9865
9951
  var open = $1;
9866
9952
  if (!$3)
9867
9953
  return $skip;
9868
- const [exp, ws, close] = $3;
9869
- switch (exp.type) {
9870
- case "StatementExpression":
9871
- if (exp.statement.type !== "IterationExpression")
9872
- break;
9873
- case "IterationExpression":
9874
- return exp;
9875
- case "ParenthesizedExpression":
9876
- if (exp.implicit) {
9877
- return {
9878
- ...exp,
9879
- children: [open, exp.expression, ws, close],
9880
- implicit: false
9881
- };
9882
- }
9883
- break;
9954
+ const [expression, ws, close] = $3;
9955
+ if (expression.type === "ParenthesizedExpression" && expression.implicit) {
9956
+ return {
9957
+ ...expression,
9958
+ children: [open, expression.expression, ws, close],
9959
+ implicit: false
9960
+ };
9884
9961
  }
9885
9962
  return {
9886
9963
  type: "ParenthesizedExpression",
9887
- children: [open, exp, ws, close],
9888
- expression: exp
9964
+ children: [open, expression, ws, close],
9965
+ expression
9889
9966
  };
9890
9967
  });
9891
9968
  function ParenthesizedExpression(ctx, state2) {
@@ -10423,15 +10500,15 @@ var CallExpression$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.
10423
10500
  children: [$1, ...$2, ...rest.flat()]
10424
10501
  });
10425
10502
  });
10426
- 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) {
10503
+ 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) {
10427
10504
  var member = $1;
10428
- var trailing = $2;
10429
- var rest = $3;
10430
- if (rest.length || trailing.length) {
10505
+ var rest = $2;
10506
+ var trailing = $3;
10507
+ if (rest.length || trailing) {
10431
10508
  rest = rest.flat();
10432
10509
  return processCallMemberExpression({
10433
10510
  type: "CallExpression",
10434
- children: [member, ...trailing, ...rest]
10511
+ children: [member, ...rest, ...trailing ?? []]
10435
10512
  });
10436
10513
  }
10437
10514
  return member;
@@ -11661,7 +11738,7 @@ var FunctionExpression$4 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenParen, _
11661
11738
  expression: fn
11662
11739
  };
11663
11740
  });
11664
- 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) {
11741
+ 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) {
11665
11742
  var open = $1;
11666
11743
  var ws1 = $2;
11667
11744
  var op = $5;
@@ -12980,12 +13057,41 @@ var ObjectPropertyDelimiter$$ = [ObjectPropertyDelimiter$0, ObjectPropertyDelimi
12980
13057
  function ObjectPropertyDelimiter(ctx, state2) {
12981
13058
  return (0, import_lib2.$EVENT_C)(ctx, state2, "ObjectPropertyDelimiter", ObjectPropertyDelimiter$$);
12982
13059
  }
12983
- var PropertyDefinition$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), NamedProperty), function($skip, $loc, $0, $1, $2) {
13060
+ var PropertyDefinition$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), InsertDotDotDot, IterationExpression), function($skip, $loc, $0, $1, $2, $3) {
13061
+ var ws = $1;
13062
+ var dots = $2;
13063
+ var exp = $3;
13064
+ let { statement } = exp;
13065
+ if (exp.block.implicit && (statement.type === "DoStatement" || statement.subtype === "loop")) {
13066
+ return $skip;
13067
+ }
13068
+ statement = { ...statement, object: true };
13069
+ exp = {
13070
+ ...exp,
13071
+ statement,
13072
+ children: exp.children.map(($) => $ === exp.statement ? statement : $)
13073
+ };
13074
+ const children = [ws, dots, exp];
13075
+ if (statement.reduction) {
13076
+ children.unshift({
13077
+ type: "Error",
13078
+ message: "Reduction loops are forbidden in object literals"
13079
+ });
13080
+ }
13081
+ return {
13082
+ type: "SpreadProperty",
13083
+ children,
13084
+ names: exp.names,
13085
+ dots,
13086
+ value: exp
13087
+ };
13088
+ });
13089
+ var PropertyDefinition$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), NamedProperty), function($skip, $loc, $0, $1, $2) {
12984
13090
  var ws = $1;
12985
13091
  var prop = $2;
12986
13092
  return prepend(ws, prop);
12987
13093
  });
12988
- 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) {
13094
+ 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) {
12989
13095
  var ws = $1;
12990
13096
  var toggle = $2;
12991
13097
  var id = $3;
@@ -13007,7 +13113,7 @@ var PropertyDefinition$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_l
13007
13113
  value: id
13008
13114
  };
13009
13115
  });
13010
- var PropertyDefinition$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), MethodDefinition), function($skip, $loc, $0, $1, $2) {
13116
+ var PropertyDefinition$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), MethodDefinition), function($skip, $loc, $0, $1, $2) {
13011
13117
  var ws = $1;
13012
13118
  var def = $2;
13013
13119
  if (def.type === "MultiMethodDefinition") {
@@ -13019,7 +13125,7 @@ var PropertyDefinition$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_l
13019
13125
  return $skip;
13020
13126
  return prepend(ws, def);
13021
13127
  });
13022
- var PropertyDefinition$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, Expression), function($skip, $loc, $0, $1, $2, $3) {
13128
+ var PropertyDefinition$4 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, Expression), function($skip, $loc, $0, $1, $2, $3) {
13023
13129
  var ws = $1;
13024
13130
  var dots = $2;
13025
13131
  var exp = $3;
@@ -13031,7 +13137,7 @@ var PropertyDefinition$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_l
13031
13137
  value: exp
13032
13138
  };
13033
13139
  });
13034
- 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) {
13140
+ 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) {
13035
13141
  var ws = $1;
13036
13142
  var pre = $3;
13037
13143
  var value = $4;
@@ -13096,7 +13202,7 @@ var PropertyDefinition$4 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_l
13096
13202
  value
13097
13203
  };
13098
13204
  });
13099
- var PropertyDefinition$$ = [PropertyDefinition$0, PropertyDefinition$1, PropertyDefinition$2, PropertyDefinition$3, PropertyDefinition$4];
13205
+ var PropertyDefinition$$ = [PropertyDefinition$0, PropertyDefinition$1, PropertyDefinition$2, PropertyDefinition$3, PropertyDefinition$4, PropertyDefinition$5];
13100
13206
  function PropertyDefinition(ctx, state2) {
13101
13207
  return (0, import_lib2.$EVENT_C)(ctx, state2, "PropertyDefinition", PropertyDefinition$$);
13102
13208
  }
@@ -16077,7 +16183,7 @@ var DecimalBigIntegerLiteral$0 = (0, import_lib2.$R$0)((0, import_lib2.$EXPECT)(
16077
16183
  function DecimalBigIntegerLiteral(ctx, state2) {
16078
16184
  return (0, import_lib2.$EVENT)(ctx, state2, "DecimalBigIntegerLiteral", DecimalBigIntegerLiteral$0);
16079
16185
  }
16080
- 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) {
16186
+ 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) {
16081
16187
  return $1 + ".";
16082
16188
  });
16083
16189
  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)));
@@ -16716,6 +16822,12 @@ var DotDotDot$$ = [DotDotDot$0, DotDotDot$1];
16716
16822
  function DotDotDot(ctx, state2) {
16717
16823
  return (0, import_lib2.$EVENT_C)(ctx, state2, "DotDotDot", DotDotDot$$);
16718
16824
  }
16825
+ var InsertDotDotDot$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L0, 'InsertDotDotDot ""'), function($skip, $loc, $0, $1) {
16826
+ return { $loc, token: "..." };
16827
+ });
16828
+ function InsertDotDotDot(ctx, state2) {
16829
+ return (0, import_lib2.$EVENT)(ctx, state2, "InsertDotDotDot", InsertDotDotDot$0);
16830
+ }
16719
16831
  var DoubleColon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L162, 'DoubleColon "::"'), function($skip, $loc, $0, $1) {
16720
16832
  return { $loc, token: $1 };
16721
16833
  });
@@ -17711,7 +17823,7 @@ var InlineJSXPrimaryExpression$5 = ArrayLiteral;
17711
17823
  var InlineJSXPrimaryExpression$6 = BracedObjectLiteral;
17712
17824
  var InlineJSXPrimaryExpression$7 = IdentifierReference;
17713
17825
  var InlineJSXPrimaryExpression$8 = RegularExpressionLiteral;
17714
- var InlineJSXPrimaryExpression$9 = ParenthesizedExpression;
17826
+ var InlineJSXPrimaryExpression$9 = OptimizedParenthesizedExpression;
17715
17827
  var InlineJSXPrimaryExpression$$ = [InlineJSXPrimaryExpression$0, InlineJSXPrimaryExpression$1, InlineJSXPrimaryExpression$2, InlineJSXPrimaryExpression$3, InlineJSXPrimaryExpression$4, InlineJSXPrimaryExpression$5, InlineJSXPrimaryExpression$6, InlineJSXPrimaryExpression$7, InlineJSXPrimaryExpression$8, InlineJSXPrimaryExpression$9];
17716
17828
  function InlineJSXPrimaryExpression(ctx, state2) {
17717
17829
  return (0, import_lib2.$EVENT_C)(ctx, state2, "InlineJSXPrimaryExpression", InlineJSXPrimaryExpression$$);
@@ -18877,7 +18989,7 @@ var TypeBullet$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(BulletIndent, (0, im
18877
18989
  function TypeBullet(ctx, state2) {
18878
18990
  return (0, import_lib2.$EVENT)(ctx, state2, "TypeBullet", TypeBullet$0);
18879
18991
  }
18880
- 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) {
18992
+ 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) {
18881
18993
  var t = $1;
18882
18994
  var postfix = $2;
18883
18995
  if (!postfix)