@danielx/civet 0.6.13 → 0.6.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
@@ -209,7 +209,7 @@ var Civet = (() => {
209
209
  ref.children = [makeLeftHandSideExpression(arg)];
210
210
  return {
211
211
  type: "UnwrappedExpression",
212
- children: [skipIfOnlyWS(fn.leadingComment), ...body, skipIfOnlyWS(fn.trailingComment)]
212
+ children: [skipIfOnlyWS(fn.leadingComment), body, skipIfOnlyWS(fn.trailingComment)]
213
213
  };
214
214
  }
215
215
  expr = fn.expr;
@@ -631,12 +631,20 @@ var Civet = (() => {
631
631
  children
632
632
  };
633
633
  }
634
+ function isExistence(exp) {
635
+ if (exp.type === "ParenthesizedExpression" && exp.implicit) {
636
+ exp = exp.expression;
637
+ }
638
+ if (exp.type === "Existence") {
639
+ return exp;
640
+ }
641
+ }
634
642
  function expandChainedComparisons([first, binops]) {
635
643
  const relationalOps = ["==", "===", "!=", "!==", "<", "<=", ">", ">=", "in"];
636
644
  const lowerPrecedenceOps = ["??", "&&", "||", "&", "|", "^"];
637
645
  let results = [];
638
646
  let i = 0;
639
- let l = binops.length;
647
+ const l = binops.length;
640
648
  let start = 0;
641
649
  let chains = [];
642
650
  while (i < l) {
@@ -652,12 +660,15 @@ var Civet = (() => {
652
660
  processChains();
653
661
  return results;
654
662
  function processChains() {
663
+ first = expandExistence(first);
655
664
  if (chains.length > 1) {
656
665
  chains.forEach((index, k) => {
657
666
  if (k > 0) {
658
667
  results.push(" ", "&&", " ");
659
668
  }
660
- const [pre, op, post, exp] = binops[index];
669
+ const binop = binops[index];
670
+ let [pre, op, post, exp] = binop;
671
+ exp = binop[3] = expandExistence(exp);
661
672
  let endIndex;
662
673
  if (k < chains.length - 1) {
663
674
  endIndex = chains[k + 1];
@@ -674,6 +685,14 @@ var Civet = (() => {
674
685
  }
675
686
  chains.length = 0;
676
687
  }
688
+ function expandExistence(exp) {
689
+ const existence = isExistence(exp);
690
+ if (existence) {
691
+ results.push(existence, " ", "&&", " ");
692
+ return existence.expression;
693
+ }
694
+ return exp;
695
+ }
677
696
  }
678
697
  function processParams(f) {
679
698
  const { type, parameters, block } = f;
@@ -1126,8 +1145,10 @@ var Civet = (() => {
1126
1145
  function makeLeftHandSideExpression(expression) {
1127
1146
  switch (expression.type) {
1128
1147
  case "Ref":
1148
+ case "AmpersandRef":
1129
1149
  case "Identifier":
1130
1150
  case "Literal":
1151
+ case "IterationExpression":
1131
1152
  case "CallExpression":
1132
1153
  case "MemberExpression":
1133
1154
  case "ParenthesizedExpression":
@@ -1140,7 +1161,8 @@ var Civet = (() => {
1140
1161
  return {
1141
1162
  type: "ParenthesizedExpression",
1142
1163
  children: ["(", expression, ")"],
1143
- expression
1164
+ expression,
1165
+ implicit: true
1144
1166
  };
1145
1167
  }
1146
1168
  }
@@ -1403,6 +1425,46 @@ var Civet = (() => {
1403
1425
  tail.push(...splices.map((s) => [", ", s]), ...thisAssignments.map((a) => [", ", a]));
1404
1426
  }
1405
1427
  function processAssignments(statements) {
1428
+ gatherRecursiveAll(statements, (n) => n.type === "AssignmentExpression" || n.type === "UpdateExpression").forEach((exp) => {
1429
+ function extractAssignment(lhs) {
1430
+ let expr = lhs;
1431
+ while (expr.type === "ParenthesizedExpression") {
1432
+ expr = expr.expression;
1433
+ }
1434
+ if (expr.type === "AssignmentExpression" || expr.type === "UpdateExpression") {
1435
+ if (expr.type === "UpdateExpression" && expr.children[0] === expr.assigned) {
1436
+ post.push([", ", lhs]);
1437
+ } else {
1438
+ pre.push([lhs, ", "]);
1439
+ }
1440
+ return expr.assigned;
1441
+ }
1442
+ }
1443
+ const pre = [], post = [];
1444
+ switch (exp.type) {
1445
+ case "AssignmentExpression":
1446
+ if (!exp.lhs)
1447
+ return;
1448
+ exp.lhs.forEach((lhsPart, i) => {
1449
+ let newLhs2 = extractAssignment(lhsPart[1]);
1450
+ if (newLhs2) {
1451
+ lhsPart[1] = newLhs2;
1452
+ }
1453
+ });
1454
+ break;
1455
+ case "UpdateExpression":
1456
+ let newLhs = extractAssignment(exp.assigned);
1457
+ if (newLhs) {
1458
+ const i = exp.children.indexOf(exp.assigned);
1459
+ exp.assigned = exp.children[i] = newLhs;
1460
+ }
1461
+ break;
1462
+ }
1463
+ if (pre.length)
1464
+ exp.children.unshift(...pre);
1465
+ if (post.length)
1466
+ exp.children.push(...post);
1467
+ });
1406
1468
  gatherRecursiveAll(statements, (n) => n.type === "AssignmentExpression" && n.names === null).forEach((exp) => {
1407
1469
  let { lhs: $1, exp: $2 } = exp, tail = [], i = 0, len = $1.length;
1408
1470
  if ($1.some((left) => left[left.length - 1].special)) {
@@ -1412,7 +1474,14 @@ var Civet = (() => {
1412
1474
  const [, lhs, , op] = $1[0];
1413
1475
  const { call } = op;
1414
1476
  op[op.length - 1] = "=";
1415
- $2 = [call, "(", lhs, ", ", $2, ")"];
1477
+ const index2 = exp.children.indexOf($2);
1478
+ if (index2 < 0)
1479
+ throw new Error("Assertion error: exp not in AssignmentExpression");
1480
+ exp.children.splice(
1481
+ index2,
1482
+ 1,
1483
+ exp.exp = $2 = [call, "(", lhs, ", ", $2, ")"]
1484
+ );
1416
1485
  }
1417
1486
  let wrapped = false;
1418
1487
  while (i < len) {
@@ -1463,49 +1532,11 @@ var Civet = (() => {
1463
1532
  }
1464
1533
  i--;
1465
1534
  }
1466
- const names = $1.flatMap(([, l]) => l.names || []);
1467
- exp.children = [$1, $2, ...tail];
1468
- exp.names = names;
1469
- });
1470
- gatherRecursiveAll(statements, (n) => n.type === "AssignmentExpression" || n.type === "UpdateExpression").forEach((exp) => {
1471
- function extractAssignment(lhs) {
1472
- let expr = lhs;
1473
- while (expr.type === "ParenthesizedExpression") {
1474
- expr = expr.expression;
1475
- }
1476
- if (expr.type === "AssignmentExpression" || expr.type === "UpdateExpression") {
1477
- if (expr.type === "UpdateExpression" && expr.children[0] === expr.assigned) {
1478
- post.push([", ", lhs]);
1479
- } else {
1480
- pre.push([lhs, ", "]);
1481
- }
1482
- return expr.assigned;
1483
- }
1484
- }
1485
- const pre = [], post = [];
1486
- switch (exp.type) {
1487
- case "AssignmentExpression":
1488
- if (!exp.lhs)
1489
- return;
1490
- exp.lhs.forEach((lhsPart, i) => {
1491
- let newLhs2 = extractAssignment(lhsPart[1]);
1492
- if (newLhs2) {
1493
- lhsPart[1] = newLhs2;
1494
- }
1495
- });
1496
- break;
1497
- case "UpdateExpression":
1498
- let newLhs = extractAssignment(exp.assigned);
1499
- if (newLhs) {
1500
- const i = exp.children.indexOf(exp.assigned);
1501
- exp.assigned = exp.children[i] = newLhs;
1502
- }
1503
- break;
1504
- }
1505
- if (pre.length)
1506
- exp.children.unshift(...pre);
1507
- if (post.length)
1508
- exp.children.push(...post);
1535
+ exp.names = $1.flatMap(([, l]) => l.names || []);
1536
+ const index = exp.children.indexOf($2);
1537
+ if (index < 0)
1538
+ throw new Error("Assertion error: exp not in AssignmentExpression");
1539
+ exp.children.splice(index + 1, 0, ...tail);
1509
1540
  });
1510
1541
  }
1511
1542
  function attachPostfixStatementAsExpression(exp, post) {
@@ -1952,7 +1983,8 @@ var Civet = (() => {
1952
1983
  });
1953
1984
  }
1954
1985
  } else {
1955
- s.children = children;
1986
+ if (i === 0)
1987
+ s.children = children;
1956
1988
  }
1957
1989
  if (returns && (ref = needsRef(arg))) {
1958
1990
  usingRef = usingRef || ref;
@@ -2248,27 +2280,20 @@ var Civet = (() => {
2248
2280
  if (post?.token === "?") {
2249
2281
  post = {
2250
2282
  $loc: post.$loc,
2251
- token: " != null"
2283
+ token: "!="
2252
2284
  };
2253
- switch (exp.type) {
2254
- case "Identifier":
2255
- case "Literal":
2256
- case "AmpersandRef":
2257
- return {
2258
- ...exp,
2259
- children: [...pre, ...exp.children, post]
2260
- };
2261
- default:
2262
- const expression = {
2263
- ...exp,
2264
- children: [...pre, "(", exp.children, ")", post]
2265
- };
2266
- return {
2267
- type: "ParenthesizedExpression",
2268
- children: ["(", expression, ")"],
2269
- expression
2270
- };
2285
+ if (pre.length) {
2286
+ exp = {
2287
+ type: "UnaryExpression",
2288
+ children: [...pre, exp, void 0]
2289
+ };
2271
2290
  }
2291
+ const existence = {
2292
+ type: "Existence",
2293
+ expression: exp,
2294
+ children: [exp, " ", post, " ", "null"]
2295
+ };
2296
+ return makeLeftHandSideExpression(existence);
2272
2297
  }
2273
2298
  if (exp.type === "Literal") {
2274
2299
  if (pre.length === 1 && pre[0].token === "-") {
@@ -2949,6 +2974,7 @@ ${input.slice(result.pos)}
2949
2974
  NonPipelineExtendedExpression,
2950
2975
  NonAssignmentExtendedExpression,
2951
2976
  NestedNonAssignmentExtendedExpression,
2977
+ ExpressionizedStatementWithTrailingCallExpressions,
2952
2978
  ExpressionizedStatement,
2953
2979
  Expression,
2954
2980
  Arguments,
@@ -2959,6 +2985,8 @@ ${input.slice(result.pos)}
2959
2985
  ArgumentsWithTrailingMemberExpressions,
2960
2986
  TrailingMemberExpressions,
2961
2987
  AllowedTrailingMemberExpressions,
2988
+ TrailingCallExpressions,
2989
+ AllowedTrailingCallExpressions,
2962
2990
  CommaDelimiter,
2963
2991
  ArgumentList,
2964
2992
  NonPipelineArgumentList,
@@ -3141,6 +3169,7 @@ ${input.slice(result.pos)}
3141
3169
  OperatorAssignmentOp,
3142
3170
  AssignmentOpSymbol,
3143
3171
  CoffeeWordAssignmentOp,
3172
+ NotDedentedBinaryOp,
3144
3173
  BinaryOp,
3145
3174
  BinaryOpSymbol,
3146
3175
  Xor,
@@ -3499,6 +3528,7 @@ ${input.slice(result.pos)}
3499
3528
  TypeIndex,
3500
3529
  TypeSuffix,
3501
3530
  ReturnTypeSuffix,
3531
+ ReturnType,
3502
3532
  TypePredicate,
3503
3533
  Type,
3504
3534
  TypeBinary,
@@ -3803,7 +3833,7 @@ ${input.slice(result.pos)}
3803
3833
  var $R6 = $R(new RegExp("[!+-]", "suy"));
3804
3834
  var $R7 = $R(new RegExp("<(?!\\p{ID_Start}|[_$])", "suy"));
3805
3835
  var $R8 = $R(new RegExp("!\\^\\^?", "suy"));
3806
- var $R9 = $R(new RegExp("(?!\\+\\+|--)[!~+-](?!\\s|[!~+-]*&)", "suy"));
3836
+ var $R9 = $R(new RegExp("(?!\\+\\+|--)[!~+-](?!\\s|[!~+-]*[&.])", "suy"));
3807
3837
  var $R10 = $R(new RegExp("(?=[\\s\\)])", "suy"));
3808
3838
  var $R11 = $R(new RegExp('[^;"\\s]+', "suy"));
3809
3839
  var $R12 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
@@ -4096,7 +4126,10 @@ ${input.slice(result.pos)}
4096
4126
  }
4097
4127
  }
4098
4128
  var NonAssignmentExtendedExpression$0 = NestedNonAssignmentExtendedExpression;
4099
- var NonAssignmentExtendedExpression$1 = $TS($S(__, ExpressionizedStatement), function($skip, $loc, $0, $1, $2) {
4129
+ var NonAssignmentExtendedExpression$1 = $TS($S(__, ExpressionizedStatementWithTrailingCallExpressions), function($skip, $loc, $0, $1, $2) {
4130
+ if ($2.length) {
4131
+ return [...$1, ...$2];
4132
+ }
4100
4133
  return {
4101
4134
  ...$2,
4102
4135
  children: [...$1, ...$2.children]
@@ -4124,11 +4157,17 @@ ${input.slice(result.pos)}
4124
4157
  return result;
4125
4158
  }
4126
4159
  }
4127
- var NestedNonAssignmentExtendedExpression$0 = $TS($S($Y(EOS), PushIndent, $E($S(Nested, ExpressionizedStatement)), PopIndent), function($skip, $loc, $0, $1, $2, $3, $4) {
4160
+ var NestedNonAssignmentExtendedExpression$0 = $TS($S($Y(EOS), PushIndent, $E($S(Nested, ExpressionizedStatementWithTrailingCallExpressions)), PopIndent, $E(AllowedTrailingCallExpressions)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
4128
4161
  var expression = $3;
4129
- if (expression)
4162
+ var trailing = $5;
4163
+ if (!expression)
4164
+ return $skip;
4165
+ if (!trailing)
4130
4166
  return expression;
4131
- return $skip;
4167
+ return {
4168
+ type: "CallExpression",
4169
+ children: [expression, ...trailing.flat()]
4170
+ };
4132
4171
  });
4133
4172
  function NestedNonAssignmentExtendedExpression(state) {
4134
4173
  let eventData;
@@ -4152,6 +4191,39 @@ ${input.slice(result.pos)}
4152
4191
  return result;
4153
4192
  }
4154
4193
  }
4194
+ var ExpressionizedStatementWithTrailingCallExpressions$0 = $TS($S(ExpressionizedStatement, $E(AllowedTrailingCallExpressions)), function($skip, $loc, $0, $1, $2) {
4195
+ if (!$2)
4196
+ return $1;
4197
+ return {
4198
+ type: "CallExpression",
4199
+ children: [
4200
+ makeLeftHandSideExpression($1),
4201
+ $2
4202
+ ]
4203
+ };
4204
+ });
4205
+ function ExpressionizedStatementWithTrailingCallExpressions(state) {
4206
+ let eventData;
4207
+ if (state.events) {
4208
+ const result = state.events.enter?.("ExpressionizedStatementWithTrailingCallExpressions", state);
4209
+ if (result) {
4210
+ if (result.cache)
4211
+ return result.cache;
4212
+ eventData = result.data;
4213
+ }
4214
+ }
4215
+ if (state.tokenize) {
4216
+ const result = $TOKEN("ExpressionizedStatementWithTrailingCallExpressions", state, ExpressionizedStatementWithTrailingCallExpressions$0(state));
4217
+ if (state.events)
4218
+ state.events.exit?.("ExpressionizedStatementWithTrailingCallExpressions", state, result, eventData);
4219
+ return result;
4220
+ } else {
4221
+ const result = ExpressionizedStatementWithTrailingCallExpressions$0(state);
4222
+ if (state.events)
4223
+ state.events.exit?.("ExpressionizedStatementWithTrailingCallExpressions", state, result, eventData);
4224
+ return result;
4225
+ }
4226
+ }
4155
4227
  var ExpressionizedStatement$0 = DebuggerExpression;
4156
4228
  var ExpressionizedStatement$1 = IfExpression;
4157
4229
  var ExpressionizedStatement$2 = UnlessExpression;
@@ -4437,6 +4509,54 @@ ${input.slice(result.pos)}
4437
4509
  return result;
4438
4510
  }
4439
4511
  }
4512
+ var TrailingCallExpressions$0 = $P($S($C(Samedent, IndentedFurther), $Y($S($E($EXPECT($L5, fail, 'TrailingCallExpressions "?"')), $EXPECT($L6, fail, 'TrailingCallExpressions "."'), $N($R$0($EXPECT($R1, fail, "TrailingCallExpressions /[0-9]/"))))), $P(CallExpressionRest)));
4513
+ function TrailingCallExpressions(state) {
4514
+ let eventData;
4515
+ if (state.events) {
4516
+ const result = state.events.enter?.("TrailingCallExpressions", state);
4517
+ if (result) {
4518
+ if (result.cache)
4519
+ return result.cache;
4520
+ eventData = result.data;
4521
+ }
4522
+ }
4523
+ if (state.tokenize) {
4524
+ const result = $TOKEN("TrailingCallExpressions", state, TrailingCallExpressions$0(state));
4525
+ if (state.events)
4526
+ state.events.exit?.("TrailingCallExpressions", state, result, eventData);
4527
+ return result;
4528
+ } else {
4529
+ const result = TrailingCallExpressions$0(state);
4530
+ if (state.events)
4531
+ state.events.exit?.("TrailingCallExpressions", state, result, eventData);
4532
+ return result;
4533
+ }
4534
+ }
4535
+ var AllowedTrailingCallExpressions$0 = $T($S(TrailingMemberPropertyAllowed, TrailingCallExpressions), function(value) {
4536
+ return value[1];
4537
+ });
4538
+ function AllowedTrailingCallExpressions(state) {
4539
+ let eventData;
4540
+ if (state.events) {
4541
+ const result = state.events.enter?.("AllowedTrailingCallExpressions", state);
4542
+ if (result) {
4543
+ if (result.cache)
4544
+ return result.cache;
4545
+ eventData = result.data;
4546
+ }
4547
+ }
4548
+ if (state.tokenize) {
4549
+ const result = $TOKEN("AllowedTrailingCallExpressions", state, AllowedTrailingCallExpressions$0(state));
4550
+ if (state.events)
4551
+ state.events.exit?.("AllowedTrailingCallExpressions", state, result, eventData);
4552
+ return result;
4553
+ } else {
4554
+ const result = AllowedTrailingCallExpressions$0(state);
4555
+ if (state.events)
4556
+ state.events.exit?.("AllowedTrailingCallExpressions", state, result, eventData);
4557
+ return result;
4558
+ }
4559
+ }
4440
4560
  var CommaDelimiter$0 = $S($E($C(Samedent, IndentedFurther)), $Q(_), Comma);
4441
4561
  function CommaDelimiter(state) {
4442
4562
  let eventData;
@@ -4684,9 +4804,9 @@ ${input.slice(result.pos)}
4684
4804
  var rhs = $2;
4685
4805
  return [[], op, [], rhs];
4686
4806
  });
4687
- var BinaryOpRHS$1 = $T($S(NewlineBinaryOpAllowed, $S(NotDedented, BinaryOp, $C(_, $S(EOS, __)), RHS)), function(value) {
4688
- var rhs = value[1];
4689
- return rhs;
4807
+ var BinaryOpRHS$1 = $TS($S(NewlineBinaryOpAllowed, $S(NotDedentedBinaryOp, $C(_, $S(EOS, __)), RHS)), function($skip, $loc, $0, $1, $2) {
4808
+ var rhs = $2;
4809
+ return [...rhs[0], ...rhs.slice(1)];
4690
4810
  });
4691
4811
  var BinaryOpRHS$2 = $T($S($N(NewlineBinaryOpAllowed), SingleLineBinaryOpRHS), function(value) {
4692
4812
  return value[1];
@@ -4744,7 +4864,7 @@ ${input.slice(result.pos)}
4744
4864
  }
4745
4865
  var RHS$0 = ParenthesizedAssignment;
4746
4866
  var RHS$1 = UnaryExpression;
4747
- var RHS$2 = ExpressionizedStatement;
4867
+ var RHS$2 = ExpressionizedStatementWithTrailingCallExpressions;
4748
4868
  function RHS(state) {
4749
4869
  let eventData;
4750
4870
  if (state.events) {
@@ -4825,10 +4945,7 @@ ${input.slice(result.pos)}
4825
4945
  }
4826
4946
  }
4827
4947
  var UnaryPostfix$0 = QuestionMark;
4828
- var UnaryPostfix$1 = $T($P($S(__, As, Type)), function(value) {
4829
- return { "ts": true, "children": value };
4830
- });
4831
- var UnaryPostfix$2 = $T($P($S(__, Satisfies, Type)), function(value) {
4948
+ var UnaryPostfix$1 = $T($P($S(__, $C(As, Satisfies), Type)), function(value) {
4832
4949
  return { "ts": true, "children": value };
4833
4950
  });
4834
4951
  function UnaryPostfix(state) {
@@ -4842,12 +4959,12 @@ ${input.slice(result.pos)}
4842
4959
  }
4843
4960
  }
4844
4961
  if (state.tokenize) {
4845
- const result = $TOKEN("UnaryPostfix", state, UnaryPostfix$0(state) || UnaryPostfix$1(state) || UnaryPostfix$2(state));
4962
+ const result = $TOKEN("UnaryPostfix", state, UnaryPostfix$0(state) || UnaryPostfix$1(state));
4846
4963
  if (state.events)
4847
4964
  state.events.exit?.("UnaryPostfix", state, result, eventData);
4848
4965
  return result;
4849
4966
  } else {
4850
- const result = UnaryPostfix$0(state) || UnaryPostfix$1(state) || UnaryPostfix$2(state);
4967
+ const result = UnaryPostfix$0(state) || UnaryPostfix$1(state);
4851
4968
  if (state.events)
4852
4969
  state.events.exit?.("UnaryPostfix", state, result, eventData);
4853
4970
  return result;
@@ -5458,6 +5575,15 @@ ${input.slice(result.pos)}
5458
5575
  switch (exp.type) {
5459
5576
  case "IterationExpression":
5460
5577
  return exp;
5578
+ case "ParenthesizedExpression":
5579
+ if (exp.implicit) {
5580
+ return {
5581
+ ...exp,
5582
+ children: [open, exp.expression, ws, close],
5583
+ implicit: false
5584
+ };
5585
+ }
5586
+ break;
5461
5587
  }
5462
5588
  return {
5463
5589
  type: "ParenthesizedExpression",
@@ -7898,17 +8024,29 @@ ${input.slice(result.pos)}
7898
8024
  return $skip;
7899
8025
  let body, ref;
7900
8026
  if (!rhs) {
7901
- ref = {
8027
+ body = ref = {
7902
8028
  type: "Ref",
7903
8029
  base: "$",
7904
8030
  id: "$"
7905
8031
  };
7906
- body = [prefix, ref];
7907
8032
  } else {
7908
- ({ ref } = rhs);
7909
- body = [prefix, rhs];
8033
+ let exp = rhs;
8034
+ while (!exp.ref && exp.expression) {
8035
+ exp = exp.expression;
8036
+ }
8037
+ ({ ref } = exp);
8038
+ if (!ref) {
8039
+ throw new Error("Could not find ref in ampersand shorthand block");
8040
+ }
8041
+ body = rhs;
8042
+ }
8043
+ if (prefix) {
8044
+ body = {
8045
+ type: "UnaryExpression",
8046
+ children: [prefix, body, void 0]
8047
+ };
7910
8048
  }
7911
- const children = [ref, " => ", ...body];
8049
+ const children = [ref, " => ", body];
7912
8050
  if (hasAwait(body)) {
7913
8051
  children.unshift("async ");
7914
8052
  }
@@ -8068,7 +8206,7 @@ ${input.slice(result.pos)}
8068
8206
  var callExpRest = $1;
8069
8207
  var unaryPostfix = $2;
8070
8208
  var binopRHS = $3;
8071
- if (!callExpRest && !binopRHS)
8209
+ if (!callExpRest && !binopRHS && !unaryPostfix)
8072
8210
  return $skip;
8073
8211
  const ref = {
8074
8212
  type: "Ref",
@@ -10572,6 +10710,42 @@ ${input.slice(result.pos)}
10572
10710
  return result;
10573
10711
  }
10574
10712
  }
10713
+ var NotDedentedBinaryOp$0 = $TS($S($E(IndentedFurther), $E(_), BinaryOp), function($skip, $loc, $0, $1, $2, $3) {
10714
+ const ws = [];
10715
+ if ($1)
10716
+ ws.push(...$1);
10717
+ if ($2)
10718
+ ws.push(...$2);
10719
+ return [ws, $3];
10720
+ });
10721
+ var NotDedentedBinaryOp$1 = $TS($S(Samedent, $E(_), $N(Identifier), BinaryOp), function($skip, $loc, $0, $1, $2, $3, $4) {
10722
+ const ws = [...$1];
10723
+ if ($2)
10724
+ ws.push(...$2);
10725
+ return [ws, $4];
10726
+ });
10727
+ function NotDedentedBinaryOp(state) {
10728
+ let eventData;
10729
+ if (state.events) {
10730
+ const result = state.events.enter?.("NotDedentedBinaryOp", state);
10731
+ if (result) {
10732
+ if (result.cache)
10733
+ return result.cache;
10734
+ eventData = result.data;
10735
+ }
10736
+ }
10737
+ if (state.tokenize) {
10738
+ const result = $TOKEN("NotDedentedBinaryOp", state, NotDedentedBinaryOp$0(state) || NotDedentedBinaryOp$1(state));
10739
+ if (state.events)
10740
+ state.events.exit?.("NotDedentedBinaryOp", state, result, eventData);
10741
+ return result;
10742
+ } else {
10743
+ const result = NotDedentedBinaryOp$0(state) || NotDedentedBinaryOp$1(state);
10744
+ if (state.events)
10745
+ state.events.exit?.("NotDedentedBinaryOp", state, result, eventData);
10746
+ return result;
10747
+ }
10748
+ }
10575
10749
  var BinaryOp$0 = $TS($S(BinaryOpSymbol), function($skip, $loc, $0, $1) {
10576
10750
  if (typeof $1 === "string")
10577
10751
  return { $loc, token: $1 };
@@ -10901,7 +11075,7 @@ ${input.slice(result.pos)}
10901
11075
  return result;
10902
11076
  }
10903
11077
  }
10904
- var UnaryOp$0 = $TR($EXPECT($R9, fail, "UnaryOp /(?!\\+\\+|--)[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
11078
+ var UnaryOp$0 = $TR($EXPECT($R9, fail, "UnaryOp /(?!\\+\\+|--)[!~+-](?!\\s|[!~+-]*[&.])/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
10905
11079
  return { $loc, token: $0 };
10906
11080
  });
10907
11081
  var UnaryOp$1 = AwaitOp;
@@ -11390,6 +11564,8 @@ ${input.slice(result.pos)}
11390
11564
  var kind = $1;
11391
11565
  var condition = $2;
11392
11566
  kind = { ...kind, token: "if" };
11567
+ kind.token += getTrimmingSpace(condition);
11568
+ condition = insertTrimmingSpace(condition, "");
11393
11569
  return {
11394
11570
  type: "IfStatement",
11395
11571
  children: [kind, ["(!", condition, ")"]],
@@ -21159,27 +21335,54 @@ ${input.slice(result.pos)}
21159
21335
  return result;
21160
21336
  }
21161
21337
  }
21162
- var ReturnTypeSuffix$0 = $TS($S($E(_), Colon, $E($S(__, $EXPECT($L202, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2, $3, $4) {
21163
- var asserts = $3;
21164
- var t = $4;
21338
+ var ReturnTypeSuffix$0 = $TS($S($E(_), Colon, ReturnType), function($skip, $loc, $0, $1, $2, $3) {
21339
+ var t = $3;
21340
+ return { ...t, children: [$1, $2, ...t.children] };
21341
+ });
21342
+ function ReturnTypeSuffix(state) {
21343
+ let eventData;
21344
+ if (state.events) {
21345
+ const result = state.events.enter?.("ReturnTypeSuffix", state);
21346
+ if (result) {
21347
+ if (result.cache)
21348
+ return result.cache;
21349
+ eventData = result.data;
21350
+ }
21351
+ }
21352
+ if (state.tokenize) {
21353
+ const result = $TOKEN("ReturnTypeSuffix", state, ReturnTypeSuffix$0(state));
21354
+ if (state.events)
21355
+ state.events.exit?.("ReturnTypeSuffix", state, result, eventData);
21356
+ return result;
21357
+ } else {
21358
+ const result = ReturnTypeSuffix$0(state);
21359
+ if (state.events)
21360
+ state.events.exit?.("ReturnTypeSuffix", state, result, eventData);
21361
+ return result;
21362
+ }
21363
+ }
21364
+ var ReturnType$0 = $TS($S($E($S(__, $EXPECT($L202, fail, 'ReturnType "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2) {
21365
+ var asserts = $1;
21366
+ var t = $2;
21165
21367
  if (asserts) {
21166
21368
  t = {
21167
21369
  type: "AssertsType",
21168
21370
  t,
21169
- children: [asserts[0], asserts[1], t]
21371
+ children: [asserts[0], asserts[1], t],
21372
+ ts: true
21170
21373
  };
21171
21374
  }
21172
21375
  return {
21173
21376
  type: "ReturnTypeAnnotation",
21174
- children: [$1, $2, t],
21377
+ children: [t],
21175
21378
  t,
21176
21379
  ts: true
21177
21380
  };
21178
21381
  });
21179
- function ReturnTypeSuffix(state) {
21382
+ function ReturnType(state) {
21180
21383
  let eventData;
21181
21384
  if (state.events) {
21182
- const result = state.events.enter?.("ReturnTypeSuffix", state);
21385
+ const result = state.events.enter?.("ReturnType", state);
21183
21386
  if (result) {
21184
21387
  if (result.cache)
21185
21388
  return result.cache;
@@ -21187,14 +21390,14 @@ ${input.slice(result.pos)}
21187
21390
  }
21188
21391
  }
21189
21392
  if (state.tokenize) {
21190
- const result = $TOKEN("ReturnTypeSuffix", state, ReturnTypeSuffix$0(state));
21393
+ const result = $TOKEN("ReturnType", state, ReturnType$0(state));
21191
21394
  if (state.events)
21192
- state.events.exit?.("ReturnTypeSuffix", state, result, eventData);
21395
+ state.events.exit?.("ReturnType", state, result, eventData);
21193
21396
  return result;
21194
21397
  } else {
21195
- const result = ReturnTypeSuffix$0(state);
21398
+ const result = ReturnType$0(state);
21196
21399
  if (state.events)
21197
- state.events.exit?.("ReturnTypeSuffix", state, result, eventData);
21400
+ state.events.exit?.("ReturnType", state, result, eventData);
21198
21401
  return result;
21199
21402
  }
21200
21403
  }
@@ -21851,7 +22054,7 @@ ${input.slice(result.pos)}
21851
22054
  return result;
21852
22055
  }
21853
22056
  }
21854
- var FunctionType$0 = $TS($S($E($S(New, $E(_))), Parameters, __, TypeArrowFunction, $E(Type)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
22057
+ var FunctionType$0 = $TS($S($E($S($E($S(Abstract, $E(_))), New, $E(_))), Parameters, __, TypeArrowFunction, $E(ReturnType)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
21855
22058
  var type = $5;
21856
22059
  if (type) {
21857
22060
  return $0;