@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/browser.js CHANGED
@@ -819,18 +819,31 @@ ${body}`;
819
819
  if (target.length === 0) {
820
820
  return c;
821
821
  }
822
- return target.map((e, i) => {
822
+ const results = [];
823
+ for (let i3 = 0, len3 = target.length; i3 < len3; i3++) {
824
+ const i = i3;
825
+ const e = target[i3];
823
826
  if (i === 0) {
824
- return insertTrimmingSpace(e, c);
827
+ results.push(insertTrimmingSpace(e, c));
825
828
  } else {
826
- return e;
829
+ results.push(e);
827
830
  }
828
- });
831
+ }
832
+ ;
833
+ return results;
829
834
  } else if (isParent(target)) {
830
- return {
835
+ const oldChildren = target.children;
836
+ target = {
831
837
  ...target,
832
838
  children: insertTrimmingSpace(target.children, c)
833
839
  };
840
+ for (const key in target) {
841
+ const i = oldChildren.indexOf(target[key]);
842
+ if (i >= 0) {
843
+ target[key] = target.children[i];
844
+ }
845
+ }
846
+ return target;
834
847
  } else if (isToken(target)) {
835
848
  return {
836
849
  ...target,
@@ -1005,8 +1018,8 @@ ${body}`;
1005
1018
  return void 0;
1006
1019
  }
1007
1020
  if (Array.isArray(node)) {
1008
- for (let i3 = 0, len3 = node.length; i3 < len3; i3++) {
1009
- const child = node[i3];
1021
+ for (let i4 = 0, len4 = node.length; i4 < len4; i4++) {
1022
+ const child = node[i4];
1010
1023
  if (skip(child)) {
1011
1024
  continue;
1012
1025
  }
@@ -1045,9 +1058,9 @@ ${body}`;
1045
1058
  if (Array.isArray(node)) {
1046
1059
  const array = new Array(node.length);
1047
1060
  copied.set(node, array);
1048
- for (let i4 = 0, len4 = node.length; i4 < len4; i4++) {
1049
- const i = i4;
1050
- const item = node[i4];
1061
+ for (let i5 = 0, len5 = node.length; i5 < len5; i5++) {
1062
+ const i = i5;
1063
+ const item = node[i5];
1051
1064
  array[i] = recurse(item);
1052
1065
  }
1053
1066
  } else if (node?.type === "Ref") {
@@ -1074,9 +1087,9 @@ ${body}`;
1074
1087
  throw new Error("replaceNode failed: node has no parent");
1075
1088
  }
1076
1089
  function recurse(children) {
1077
- for (let i5 = 0, len5 = children.length; i5 < len5; i5++) {
1078
- const i = i5;
1079
- const child = children[i5];
1090
+ for (let i6 = 0, len6 = children.length; i6 < len6; i6++) {
1091
+ const i = i6;
1092
+ const child = children[i6];
1080
1093
  if (child === node) {
1081
1094
  children[i] = newNode;
1082
1095
  return true;
@@ -1113,9 +1126,9 @@ ${body}`;
1113
1126
  return root;
1114
1127
  }
1115
1128
  }
1116
- for (let i6 = 0, len6 = array.length; i6 < len6; i6++) {
1117
- const i = i6;
1118
- const node = array[i6];
1129
+ for (let i7 = 0, len7 = array.length; i7 < len7; i7++) {
1130
+ const i = i7;
1131
+ const node = array[i7];
1119
1132
  if (!(node != null)) {
1120
1133
  return;
1121
1134
  }
@@ -1239,8 +1252,8 @@ ${body}`;
1239
1252
  return;
1240
1253
  }
1241
1254
  if (Array.isArray(node)) {
1242
- for (let i7 = 0, len7 = node.length; i7 < len7; i7++) {
1243
- const child = node[i7];
1255
+ for (let i8 = 0, len8 = node.length; i8 < len8; i8++) {
1256
+ const child = node[i8];
1244
1257
  updateParentPointers(child, parent, depth);
1245
1258
  }
1246
1259
  return;
@@ -1250,8 +1263,8 @@ ${body}`;
1250
1263
  node.parent = parent;
1251
1264
  }
1252
1265
  if (depth && isParent(node)) {
1253
- for (let ref5 = node.children, i8 = 0, len8 = ref5.length; i8 < len8; i8++) {
1254
- const child = ref5[i8];
1266
+ for (let ref5 = node.children, i9 = 0, len9 = ref5.length; i9 < len9; i9++) {
1267
+ const child = ref5[i9];
1255
1268
  updateParentPointers(child, node, depth - 1);
1256
1269
  }
1257
1270
  }
@@ -1427,9 +1440,9 @@ ${body}`;
1427
1440
  }
1428
1441
  function flatJoin(array, separator) {
1429
1442
  const result = [];
1430
- for (let i9 = 0, len9 = array.length; i9 < len9; i9++) {
1431
- const i = i9;
1432
- const items = array[i9];
1443
+ for (let i10 = 0, len10 = array.length; i10 < len10; i10++) {
1444
+ const i = i10;
1445
+ const items = array[i10];
1433
1446
  if (i) {
1434
1447
  result.push(separator);
1435
1448
  }
@@ -3146,6 +3159,8 @@ ${js}`
3146
3159
  }
3147
3160
  }
3148
3161
  })());
3162
+ } else if (statement.object) {
3163
+ declaration.children.push("={}");
3149
3164
  } else {
3150
3165
  if (decl === "const") {
3151
3166
  declaration.children.push("=[]");
@@ -3161,6 +3176,9 @@ ${js}`
3161
3176
  }
3162
3177
  if (!block.empty) {
3163
3178
  assignResults(block, (node) => {
3179
+ if (statement.object) {
3180
+ return ["Object.assign(", resultsRef, ",", node, ")"];
3181
+ }
3164
3182
  if (!reduction) {
3165
3183
  return [resultsRef, ".push(", node, ")"];
3166
3184
  }
@@ -4765,8 +4783,8 @@ ${js}`
4765
4783
  return;
4766
4784
  }
4767
4785
  let { expression } = condition;
4768
- 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]) {
4769
- const { type: type1, children: [, { type: type2, expression: expression2 }] } = expression;
4786
+ 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]) {
4787
+ const { type: type1, children: [[], { type: type2, expression: expression2 }] } = expression;
4770
4788
  const type = [type1, type2];
4771
4789
  expression = expression2;
4772
4790
  }
@@ -4785,7 +4803,7 @@ ${js}`
4785
4803
  let children = condition.children;
4786
4804
  if (s.negated) {
4787
4805
  let m;
4788
- 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")) {
4806
+ 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")) {
4789
4807
  throw new Error("Unsupported negated condition");
4790
4808
  }
4791
4809
  ;
@@ -5089,7 +5107,9 @@ ${js}`
5089
5107
  if (pre.length) {
5090
5108
  return {
5091
5109
  type: "UnaryExpression",
5092
- children: [...pre, exp]
5110
+ children: [pre, exp],
5111
+ pre,
5112
+ expression: exp
5093
5113
  };
5094
5114
  }
5095
5115
  return exp;
@@ -5141,7 +5161,10 @@ ${js}`
5141
5161
  }
5142
5162
  return {
5143
5163
  type: "UnaryExpression",
5144
- children: [...pre, exp, post]
5164
+ children: [pre, exp, post],
5165
+ pre,
5166
+ expression: exp,
5167
+ post
5145
5168
  };
5146
5169
  }
5147
5170
  function processUnaryNestedExpression(pre, args, post) {
@@ -5609,9 +5632,12 @@ ${js}`
5609
5632
  ascDec = [", ", ascRef, " = ", startRef, " <= ", endRef];
5610
5633
  }
5611
5634
  let varAssign = [], varLetAssign = varAssign, varLet = varAssign, blockPrefix;
5612
- let names = forDeclaration?.names;
5613
- if (forDeclaration?.decl) {
5614
- if (forDeclaration.decl === "let") {
5635
+ let names = forDeclaration?.names ?? [];
5636
+ if (forDeclaration != null) {
5637
+ if (forDeclaration.type === "AssignmentExpression") {
5638
+ varAssign = varLetAssign = [forDeclaration, " = "];
5639
+ names = [];
5640
+ } else if (forDeclaration.decl === "let") {
5615
5641
  const varName = forDeclaration.children.splice(1);
5616
5642
  varAssign = [...trimFirstSpace(varName), " = "];
5617
5643
  varLet = [",", ...varName, " = ", counterRef];
@@ -5621,14 +5647,6 @@ ${js}`
5621
5647
  ["", [forDeclaration, " = ", value], ";"]
5622
5648
  ];
5623
5649
  }
5624
- } else if (forDeclaration) {
5625
- assert.equal(
5626
- forDeclaration.type,
5627
- "AssignmentExpression",
5628
- "Internal error: Coffee-style for loop must be an assignment expression"
5629
- );
5630
- varAssign = varLetAssign = [forDeclaration, " = "];
5631
- names = [];
5632
5650
  }
5633
5651
  const declaration = {
5634
5652
  type: "Declaration",
@@ -6148,7 +6166,8 @@ ${js}`
6148
6166
  const block = makeNode({
6149
6167
  type: "BlockStatement",
6150
6168
  children: [" { ", expressions, " }"],
6151
- expressions
6169
+ expressions,
6170
+ bare: false
6152
6171
  });
6153
6172
  const children = [...post.children, block];
6154
6173
  if (!isWhitespaceOrEmpty(ws))
@@ -6181,12 +6200,16 @@ ${js}`
6181
6200
  if (i < 0) {
6182
6201
  throw new Error(`Could not find expression in condition`);
6183
6202
  }
6203
+ const pre = ["!"];
6204
+ expression = makeLeftHandSideExpression(expression);
6184
6205
  children[i] = expression = {
6185
6206
  type: "UnaryExpression",
6186
6207
  children: [
6187
- "!",
6188
- makeLeftHandSideExpression(expression)
6189
- ]
6208
+ pre,
6209
+ expression
6210
+ ],
6211
+ pre,
6212
+ expression
6190
6213
  };
6191
6214
  return { ...condition, expression, children };
6192
6215
  }
@@ -6753,7 +6776,7 @@ ${js}`
6753
6776
  return [comma, makeExpressionStatement(exp)];
6754
6777
  })
6755
6778
  ];
6756
- } else if (expression?.type === "ObjectExpression" || expression?.type === "FunctionExpression" && !expression.id) {
6779
+ } else if (expression?.type === "ObjectExpression" || expression?.type === "FunctionExpression" && !expression.id || expression?.type === "UnaryExpression" && !expression.pre?.length && expression.expression !== makeExpressionStatement(expression.expression)) {
6757
6780
  return makeLeftHandSideExpression(expression);
6758
6781
  } else {
6759
6782
  return expression;
@@ -7466,12 +7489,12 @@ ${js}`
7466
7489
  } else if (config2.autoVar) {
7467
7490
  createVarDecs(root, []);
7468
7491
  }
7469
- processBlocks(statements);
7470
- populateRefs(statements);
7471
- adjustAtBindings(statements);
7472
7492
  if (config2.repl) {
7473
7493
  processRepl(root, rootIIFE);
7474
7494
  }
7495
+ processBlocks(statements);
7496
+ populateRefs(statements);
7497
+ adjustAtBindings(statements);
7475
7498
  if (getSync()) {
7476
7499
  processComptime(statements);
7477
7500
  }
@@ -7490,7 +7513,11 @@ ${js}`
7490
7513
  }
7491
7514
  if (decl.parent === topBlock || decl.decl === "var") {
7492
7515
  decl.children.shift();
7493
- root.expressions.splice(i++, 0, ["", `var ${decl.names.join(",")};`]);
7516
+ if (decl.bindings[0]?.pattern?.type === "ObjectBindingPattern") {
7517
+ decl.children.unshift("(");
7518
+ decl.children.push(")");
7519
+ }
7520
+ root.expressions.splice(i++, 0, ["", `var ${decl.names.join(",")}`, ";"]);
7494
7521
  }
7495
7522
  }
7496
7523
  for (let ref27 = gatherRecursive(topBlock, ($15) => $15.type === "FunctionExpression"), i10 = 0, len9 = ref27.length; i10 < len9; i10++) {
@@ -7502,7 +7529,7 @@ ${js}`
7502
7529
  func.parent = root;
7503
7530
  } else {
7504
7531
  func.children.unshift(func.name, "=");
7505
- root.expressions.splice(i++, 0, ["", `var ${func.name};`]);
7532
+ root.expressions.splice(i++, 0, ["", `var ${func.name}`, ";"]);
7506
7533
  }
7507
7534
  }
7508
7535
  }
@@ -7511,7 +7538,7 @@ ${js}`
7511
7538
  let m5;
7512
7539
  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)) {
7513
7540
  classExp.children.unshift(classExp.name, "=");
7514
- root.expressions.splice(i++, 0, ["", `var ${classExp.name};`]);
7541
+ root.expressions.splice(i++, 0, ["", `var ${classExp.name}`, ";"]);
7515
7542
  }
7516
7543
  }
7517
7544
  }
@@ -7839,9 +7866,12 @@ ${js}`
7839
7866
  ReservedBinary,
7840
7867
  ArgumentsWithTrailingMemberExpressions,
7841
7868
  TrailingMemberExpressions,
7842
- IndentedTrailingMemberExpression,
7869
+ IndentedTrailingMemberExpressions,
7870
+ NestedTrailingMemberExpression,
7843
7871
  AllowedTrailingMemberExpressions,
7844
7872
  TrailingCallExpressions,
7873
+ IndentedTrailingCallExpressions,
7874
+ NestedTrailingCallExpression,
7845
7875
  AllowedTrailingCallExpressions,
7846
7876
  CommaDelimiter,
7847
7877
  OptionalCommaDelimiter,
@@ -7899,6 +7929,7 @@ ${js}`
7899
7929
  PipelineHeadItem,
7900
7930
  PipelineTailItem,
7901
7931
  PrimaryExpression,
7932
+ OptimizedParenthesizedExpression,
7902
7933
  ParenthesizedExpression,
7903
7934
  Placeholder,
7904
7935
  PlaceholderTypeSuffix,
@@ -8347,6 +8378,7 @@ ${js}`
8347
8378
  Dot,
8348
8379
  DotDot,
8349
8380
  DotDotDot,
8381
+ InsertDotDotDot,
8350
8382
  DoubleColon,
8351
8383
  DoubleColonAsColon,
8352
8384
  DoubleQuote,
@@ -8907,7 +8939,7 @@ ${js}`
8907
8939
  var $R12 = (0, import_lib2.$R)(new RegExp("[.\\s]", "suy"));
8908
8940
  var $R13 = (0, import_lib2.$R)(new RegExp("[)}]", "suy"));
8909
8941
  var $R14 = (0, import_lib2.$R)(new RegExp("[+-]", "suy"));
8910
- var $R15 = (0, import_lib2.$R)(new RegExp("\\+\\+|--|[\\+\\-&]\\S", "suy"));
8942
+ var $R15 = (0, import_lib2.$R)(new RegExp("\\+\\+|--|\u29FA|\u2014|[\\+\\-&]\\S", "suy"));
8911
8943
  var $R16 = (0, import_lib2.$R)(new RegExp(`(?=[0-9.'"tfyno])`, "suy"));
8912
8944
  var $R17 = (0, import_lib2.$R)(new RegExp("(?=true|false|yes|no|on|off)", "suy"));
8913
8945
  var $R18 = (0, import_lib2.$R)(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
@@ -9085,7 +9117,7 @@ ${js}`
9085
9117
  return expression;
9086
9118
  return {
9087
9119
  type: "CallExpression",
9088
- children: [expression, ...trailing.flat()]
9120
+ children: [expression, ...trailing]
9089
9121
  };
9090
9122
  });
9091
9123
  function NestedExpressionizedStatement(ctx, state2) {
@@ -9098,7 +9130,7 @@ ${js}`
9098
9130
  type: "CallExpression",
9099
9131
  children: [
9100
9132
  makeLeftHandSideExpression($1),
9101
- $2
9133
+ ...$2
9102
9134
  ]
9103
9135
  };
9104
9136
  });
@@ -9190,7 +9222,7 @@ ${js}`
9190
9222
  function ExplicitArguments(ctx, state2) {
9191
9223
  return (0, import_lib2.$EVENT)(ctx, state2, "ExplicitArguments", ExplicitArguments$0);
9192
9224
  }
9193
- 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));
9225
+ 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));
9194
9226
  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))));
9195
9227
  var ApplicationStart$$ = [ApplicationStart$0, ApplicationStart$1];
9196
9228
  function ApplicationStart(ctx, state2) {
@@ -9231,19 +9263,34 @@ ${js}`
9231
9263
  function ArgumentsWithTrailingMemberExpressions(ctx, state2) {
9232
9264
  return (0, import_lib2.$EVENT)(ctx, state2, "ArgumentsWithTrailingMemberExpressions", ArgumentsWithTrailingMemberExpressions$0);
9233
9265
  }
9234
- 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) {
9266
+ 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) {
9267
+ if (!$2)
9268
+ return $1;
9235
9269
  return [...$1, ...$2];
9236
9270
  });
9237
9271
  function TrailingMemberExpressions(ctx, state2) {
9238
9272
  return (0, import_lib2.$EVENT)(ctx, state2, "TrailingMemberExpressions", TrailingMemberExpressions$0);
9239
9273
  }
9240
- 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) {
9274
+ 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) {
9275
+ if (!$2.length)
9276
+ return $skip;
9277
+ return $2.flat();
9278
+ });
9279
+ var IndentedTrailingMemberExpressions$1 = (0, import_lib2.$TV)((0, import_lib2.$P)(NestedTrailingMemberExpression), function($skip, $loc, $0, $1) {
9280
+ return $1.flat();
9281
+ });
9282
+ var IndentedTrailingMemberExpressions$$ = [IndentedTrailingMemberExpressions$0, IndentedTrailingMemberExpressions$1];
9283
+ function IndentedTrailingMemberExpressions(ctx, state2) {
9284
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "IndentedTrailingMemberExpressions", IndentedTrailingMemberExpressions$$);
9285
+ }
9286
+ 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) {
9241
9287
  var ws = $1;
9242
- var rest = $3;
9243
- return prepend(ws, rest);
9288
+ var rests = $3;
9289
+ const [first, ...rest] = rests;
9290
+ return [prepend(ws, first), ...rest];
9244
9291
  });
9245
- function IndentedTrailingMemberExpression(ctx, state2) {
9246
- return (0, import_lib2.$EVENT)(ctx, state2, "IndentedTrailingMemberExpression", IndentedTrailingMemberExpression$0);
9292
+ function NestedTrailingMemberExpression(ctx, state2) {
9293
+ return (0, import_lib2.$EVENT)(ctx, state2, "NestedTrailingMemberExpression", NestedTrailingMemberExpression$0);
9247
9294
  }
9248
9295
  var AllowedTrailingMemberExpressions$0 = (0, import_lib2.$T)((0, import_lib2.$S)(TrailingMemberPropertyAllowed, TrailingMemberExpressions), function(value) {
9249
9296
  return value[1];
@@ -9253,10 +9300,37 @@ ${js}`
9253
9300
  function AllowedTrailingMemberExpressions(ctx, state2) {
9254
9301
  return (0, import_lib2.$EVENT_C)(ctx, state2, "AllowedTrailingMemberExpressions", AllowedTrailingMemberExpressions$$);
9255
9302
  }
9256
- 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)));
9303
+ 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) {
9304
+ if (!$1.length && !$2)
9305
+ return $skip;
9306
+ if (!$2)
9307
+ return $1;
9308
+ return [...$1, ...$2];
9309
+ });
9257
9310
  function TrailingCallExpressions(ctx, state2) {
9258
9311
  return (0, import_lib2.$EVENT)(ctx, state2, "TrailingCallExpressions", TrailingCallExpressions$0);
9259
9312
  }
9313
+ 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) {
9314
+ if (!$2.length)
9315
+ return $skip;
9316
+ return $2.flat();
9317
+ });
9318
+ var IndentedTrailingCallExpressions$1 = (0, import_lib2.$TV)((0, import_lib2.$P)(NestedTrailingCallExpression), function($skip, $loc, $0, $1) {
9319
+ return $1.flat();
9320
+ });
9321
+ var IndentedTrailingCallExpressions$$ = [IndentedTrailingCallExpressions$0, IndentedTrailingCallExpressions$1];
9322
+ function IndentedTrailingCallExpressions(ctx, state2) {
9323
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "IndentedTrailingCallExpressions", IndentedTrailingCallExpressions$$);
9324
+ }
9325
+ 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) {
9326
+ var ws = $1;
9327
+ var rests = $3;
9328
+ const [first, ...rest] = rests.flat();
9329
+ return [prepend(ws, first), ...rest];
9330
+ });
9331
+ function NestedTrailingCallExpression(ctx, state2) {
9332
+ return (0, import_lib2.$EVENT)(ctx, state2, "NestedTrailingCallExpression", NestedTrailingCallExpression$0);
9333
+ }
9260
9334
  var AllowedTrailingCallExpressions$0 = (0, import_lib2.$T)((0, import_lib2.$S)(TrailingMemberPropertyAllowed, TrailingCallExpressions), function(value) {
9261
9335
  return value[1];
9262
9336
  });
@@ -9769,9 +9843,7 @@ ${js}`
9769
9843
  }
9770
9844
  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) {
9771
9845
  var exp = $3;
9772
- if (exp.type === "ObjectExpression") {
9773
- exp = makeLeftHandSideExpression(exp);
9774
- }
9846
+ exp = makeExpressionStatement(exp);
9775
9847
  const expressions = [["", exp]];
9776
9848
  return {
9777
9849
  type: "BlockStatement",
@@ -9862,7 +9934,7 @@ ${js}`
9862
9934
  return (0, import_lib2.$EVENT)(ctx, state2, "PipelineExpressionBodySameLine", PipelineExpressionBodySameLine$0);
9863
9935
  }
9864
9936
  var PipelineHeadItem$0 = NonPipelineExpression;
9865
- var PipelineHeadItem$1 = ParenthesizedExpression;
9937
+ var PipelineHeadItem$1 = OptimizedParenthesizedExpression;
9866
9938
  var PipelineHeadItem$$ = [PipelineHeadItem$0, PipelineHeadItem$1];
9867
9939
  function PipelineHeadItem(ctx, state2) {
9868
9940
  return (0, import_lib2.$EVENT_C)(ctx, state2, "PipelineHeadItem", PipelineHeadItem$$);
@@ -9897,7 +9969,7 @@ ${js}`
9897
9969
  var PrimaryExpression$6 = IdentifierReference;
9898
9970
  var PrimaryExpression$7 = ClassExpression;
9899
9971
  var PrimaryExpression$8 = RegularExpressionLiteral;
9900
- var PrimaryExpression$9 = ParenthesizedExpression;
9972
+ var PrimaryExpression$9 = OptimizedParenthesizedExpression;
9901
9973
  var PrimaryExpression$10 = Placeholder;
9902
9974
  var PrimaryExpression$11 = SymbolLiteral;
9903
9975
  var PrimaryExpression$12 = JSXImplicitFragment;
@@ -9905,31 +9977,36 @@ ${js}`
9905
9977
  function PrimaryExpression(ctx, state2) {
9906
9978
  return (0, import_lib2.$EVENT_C)(ctx, state2, "PrimaryExpression", PrimaryExpression$$);
9907
9979
  }
9980
+ var OptimizedParenthesizedExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(ParenthesizedExpression), function($skip, $loc, $0, $1) {
9981
+ const { expression } = $1;
9982
+ switch (expression.type) {
9983
+ case "StatementExpression":
9984
+ if (expression.statement.type !== "IterationExpression")
9985
+ break;
9986
+ case "IterationExpression":
9987
+ return expression;
9988
+ }
9989
+ return $1;
9990
+ });
9991
+ function OptimizedParenthesizedExpression(ctx, state2) {
9992
+ return (0, import_lib2.$EVENT)(ctx, state2, "OptimizedParenthesizedExpression", OptimizedParenthesizedExpression$0);
9993
+ }
9908
9994
  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) {
9909
9995
  var open = $1;
9910
9996
  if (!$3)
9911
9997
  return $skip;
9912
- const [exp, ws, close] = $3;
9913
- switch (exp.type) {
9914
- case "StatementExpression":
9915
- if (exp.statement.type !== "IterationExpression")
9916
- break;
9917
- case "IterationExpression":
9918
- return exp;
9919
- case "ParenthesizedExpression":
9920
- if (exp.implicit) {
9921
- return {
9922
- ...exp,
9923
- children: [open, exp.expression, ws, close],
9924
- implicit: false
9925
- };
9926
- }
9927
- break;
9998
+ const [expression, ws, close] = $3;
9999
+ if (expression.type === "ParenthesizedExpression" && expression.implicit) {
10000
+ return {
10001
+ ...expression,
10002
+ children: [open, expression.expression, ws, close],
10003
+ implicit: false
10004
+ };
9928
10005
  }
9929
10006
  return {
9930
10007
  type: "ParenthesizedExpression",
9931
- children: [open, exp, ws, close],
9932
- expression: exp
10008
+ children: [open, expression, ws, close],
10009
+ expression
9933
10010
  };
9934
10011
  });
9935
10012
  function ParenthesizedExpression(ctx, state2) {
@@ -10467,15 +10544,15 @@ ${js}`
10467
10544
  children: [$1, ...$2, ...rest.flat()]
10468
10545
  });
10469
10546
  });
10470
- 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) {
10547
+ 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) {
10471
10548
  var member = $1;
10472
- var trailing = $2;
10473
- var rest = $3;
10474
- if (rest.length || trailing.length) {
10549
+ var rest = $2;
10550
+ var trailing = $3;
10551
+ if (rest.length || trailing) {
10475
10552
  rest = rest.flat();
10476
10553
  return processCallMemberExpression({
10477
10554
  type: "CallExpression",
10478
- children: [member, ...trailing, ...rest]
10555
+ children: [member, ...rest, ...trailing ?? []]
10479
10556
  });
10480
10557
  }
10481
10558
  return member;
@@ -11705,7 +11782,7 @@ ${js}`
11705
11782
  expression: fn
11706
11783
  };
11707
11784
  });
11708
- 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) {
11785
+ 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) {
11709
11786
  var open = $1;
11710
11787
  var ws1 = $2;
11711
11788
  var op = $5;
@@ -13024,12 +13101,41 @@ ${js}`
13024
13101
  function ObjectPropertyDelimiter(ctx, state2) {
13025
13102
  return (0, import_lib2.$EVENT_C)(ctx, state2, "ObjectPropertyDelimiter", ObjectPropertyDelimiter$$);
13026
13103
  }
13027
- var PropertyDefinition$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), NamedProperty), function($skip, $loc, $0, $1, $2) {
13104
+ var PropertyDefinition$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), InsertDotDotDot, IterationExpression), function($skip, $loc, $0, $1, $2, $3) {
13105
+ var ws = $1;
13106
+ var dots = $2;
13107
+ var exp = $3;
13108
+ let { statement } = exp;
13109
+ if (exp.block.implicit && (statement.type === "DoStatement" || statement.subtype === "loop")) {
13110
+ return $skip;
13111
+ }
13112
+ statement = { ...statement, object: true };
13113
+ exp = {
13114
+ ...exp,
13115
+ statement,
13116
+ children: exp.children.map(($) => $ === exp.statement ? statement : $)
13117
+ };
13118
+ const children = [ws, dots, exp];
13119
+ if (statement.reduction) {
13120
+ children.unshift({
13121
+ type: "Error",
13122
+ message: "Reduction loops are forbidden in object literals"
13123
+ });
13124
+ }
13125
+ return {
13126
+ type: "SpreadProperty",
13127
+ children,
13128
+ names: exp.names,
13129
+ dots,
13130
+ value: exp
13131
+ };
13132
+ });
13133
+ var PropertyDefinition$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), NamedProperty), function($skip, $loc, $0, $1, $2) {
13028
13134
  var ws = $1;
13029
13135
  var prop = $2;
13030
13136
  return prepend(ws, prop);
13031
13137
  });
13032
- 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) {
13138
+ 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) {
13033
13139
  var ws = $1;
13034
13140
  var toggle = $2;
13035
13141
  var id = $3;
@@ -13051,7 +13157,7 @@ ${js}`
13051
13157
  value: id
13052
13158
  };
13053
13159
  });
13054
- var PropertyDefinition$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), MethodDefinition), function($skip, $loc, $0, $1, $2) {
13160
+ var PropertyDefinition$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), MethodDefinition), function($skip, $loc, $0, $1, $2) {
13055
13161
  var ws = $1;
13056
13162
  var def = $2;
13057
13163
  if (def.type === "MultiMethodDefinition") {
@@ -13063,7 +13169,7 @@ ${js}`
13063
13169
  return $skip;
13064
13170
  return prepend(ws, def);
13065
13171
  });
13066
- var PropertyDefinition$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, Expression), function($skip, $loc, $0, $1, $2, $3) {
13172
+ var PropertyDefinition$4 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, Expression), function($skip, $loc, $0, $1, $2, $3) {
13067
13173
  var ws = $1;
13068
13174
  var dots = $2;
13069
13175
  var exp = $3;
@@ -13075,7 +13181,7 @@ ${js}`
13075
13181
  value: exp
13076
13182
  };
13077
13183
  });
13078
- 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) {
13184
+ 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) {
13079
13185
  var ws = $1;
13080
13186
  var pre = $3;
13081
13187
  var value = $4;
@@ -13140,7 +13246,7 @@ ${js}`
13140
13246
  value
13141
13247
  };
13142
13248
  });
13143
- var PropertyDefinition$$ = [PropertyDefinition$0, PropertyDefinition$1, PropertyDefinition$2, PropertyDefinition$3, PropertyDefinition$4];
13249
+ var PropertyDefinition$$ = [PropertyDefinition$0, PropertyDefinition$1, PropertyDefinition$2, PropertyDefinition$3, PropertyDefinition$4, PropertyDefinition$5];
13144
13250
  function PropertyDefinition(ctx, state2) {
13145
13251
  return (0, import_lib2.$EVENT_C)(ctx, state2, "PropertyDefinition", PropertyDefinition$$);
13146
13252
  }
@@ -16121,7 +16227,7 @@ ${js}`
16121
16227
  function DecimalBigIntegerLiteral(ctx, state2) {
16122
16228
  return (0, import_lib2.$EVENT)(ctx, state2, "DecimalBigIntegerLiteral", DecimalBigIntegerLiteral$0);
16123
16229
  }
16124
- 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) {
16230
+ 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) {
16125
16231
  return $1 + ".";
16126
16232
  });
16127
16233
  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)));
@@ -16760,6 +16866,12 @@ ${js}`
16760
16866
  function DotDotDot(ctx, state2) {
16761
16867
  return (0, import_lib2.$EVENT_C)(ctx, state2, "DotDotDot", DotDotDot$$);
16762
16868
  }
16869
+ var InsertDotDotDot$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L0, 'InsertDotDotDot ""'), function($skip, $loc, $0, $1) {
16870
+ return { $loc, token: "..." };
16871
+ });
16872
+ function InsertDotDotDot(ctx, state2) {
16873
+ return (0, import_lib2.$EVENT)(ctx, state2, "InsertDotDotDot", InsertDotDotDot$0);
16874
+ }
16763
16875
  var DoubleColon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L162, 'DoubleColon "::"'), function($skip, $loc, $0, $1) {
16764
16876
  return { $loc, token: $1 };
16765
16877
  });
@@ -17755,7 +17867,7 @@ ${js}`
17755
17867
  var InlineJSXPrimaryExpression$6 = BracedObjectLiteral;
17756
17868
  var InlineJSXPrimaryExpression$7 = IdentifierReference;
17757
17869
  var InlineJSXPrimaryExpression$8 = RegularExpressionLiteral;
17758
- var InlineJSXPrimaryExpression$9 = ParenthesizedExpression;
17870
+ var InlineJSXPrimaryExpression$9 = OptimizedParenthesizedExpression;
17759
17871
  var InlineJSXPrimaryExpression$$ = [InlineJSXPrimaryExpression$0, InlineJSXPrimaryExpression$1, InlineJSXPrimaryExpression$2, InlineJSXPrimaryExpression$3, InlineJSXPrimaryExpression$4, InlineJSXPrimaryExpression$5, InlineJSXPrimaryExpression$6, InlineJSXPrimaryExpression$7, InlineJSXPrimaryExpression$8, InlineJSXPrimaryExpression$9];
17760
17872
  function InlineJSXPrimaryExpression(ctx, state2) {
17761
17873
  return (0, import_lib2.$EVENT_C)(ctx, state2, "InlineJSXPrimaryExpression", InlineJSXPrimaryExpression$$);
@@ -18921,7 +19033,7 @@ ${js}`
18921
19033
  function TypeBullet(ctx, state2) {
18922
19034
  return (0, import_lib2.$EVENT)(ctx, state2, "TypeBullet", TypeBullet$0);
18923
19035
  }
18924
- 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) {
19036
+ 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) {
18925
19037
  var t = $1;
18926
19038
  var postfix = $2;
18927
19039
  if (!postfix)