@danielx/civet 0.7.27 → 0.7.29

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
@@ -70,7 +70,7 @@ var Civet = (() => {
70
70
  $N: () => $N2,
71
71
  $P: () => $P2,
72
72
  $Q: () => $Q2,
73
- $R: () => $R98,
73
+ $R: () => $R100,
74
74
  $R$0: () => $R$02,
75
75
  $S: () => $S2,
76
76
  $T: () => $T2,
@@ -107,7 +107,7 @@ var Civet = (() => {
107
107
  return;
108
108
  };
109
109
  }
110
- function $R98(regExp) {
110
+ function $R100(regExp) {
111
111
  return function(_ctx, state2) {
112
112
  const { input, pos } = state2;
113
113
  regExp.lastIndex = state2.pos;
@@ -518,6 +518,7 @@ ${body}`;
518
518
  addPostfixStatement: () => addPostfixStatement,
519
519
  adjustBindingElements: () => adjustBindingElements,
520
520
  adjustIndexAccess: () => adjustIndexAccess,
521
+ append: () => append,
521
522
  attachPostfixStatementAsExpression: () => attachPostfixStatementAsExpression,
522
523
  blockWithPrefix: () => blockWithPrefix,
523
524
  convertNamedImportsToObject: () => convertNamedImportsToObject,
@@ -806,7 +807,7 @@ ${body}`;
806
807
  return;
807
808
  }
808
809
  function prepend(prefix, node) {
809
- if (!(prefix && prefix.length)) {
810
+ if (!prefix || Array.isArray(prefix) && len(prefix, 0)) {
810
811
  return node;
811
812
  }
812
813
  if (Array.isArray(node)) {
@@ -820,6 +821,21 @@ ${body}`;
820
821
  return [prefix, node];
821
822
  }
822
823
  }
824
+ function append(node, suffix) {
825
+ if (!suffix || Array.isArray(suffix) && len(suffix, 0)) {
826
+ return node;
827
+ }
828
+ if (Array.isArray(node)) {
829
+ return [...node, suffix];
830
+ } else if (isParent(node)) {
831
+ return {
832
+ ...node,
833
+ children: [...node.children, suffix]
834
+ };
835
+ } else {
836
+ return [node, suffix];
837
+ }
838
+ }
823
839
  function inplacePrepend(prefix, node) {
824
840
  if (!prefix) {
825
841
  return;
@@ -3058,12 +3074,14 @@ ${body}`;
3058
3074
  });
3059
3075
  const { blockPrefix } = pattern;
3060
3076
  if (blockPrefix) {
3061
- const postElements = blockPrefix.children[1], { length: postLength } = postElements;
3077
+ const postElements = blockPrefix.children[1];
3078
+ const { length: postLength } = postElements;
3062
3079
  postElements.forEach(({ children: [, e] }, i) => {
3063
3080
  const subRef = [ref, "[", ref, ".length - ", (postLength + i).toString(), "]"];
3064
3081
  return getPatternConditions(e, subRef, conditions);
3065
3082
  });
3066
3083
  }
3084
+ ;
3067
3085
  break;
3068
3086
  }
3069
3087
  case "ObjectBindingPattern": {
@@ -3071,34 +3089,46 @@ ${body}`;
3071
3089
  ["typeof ", ref, " === 'object'"],
3072
3090
  [ref, " != null"]
3073
3091
  );
3074
- pattern.properties.forEach((p) => {
3092
+ for (let ref1 = pattern.properties, i4 = 0, len3 = ref1.length; i4 < len3; i4++) {
3093
+ const p = ref1[i4];
3075
3094
  switch (p.type) {
3076
3095
  case "PinProperty":
3077
3096
  case "BindingProperty": {
3078
3097
  const { name, value } = p;
3079
3098
  let subRef;
3080
3099
  switch (name.type) {
3081
- case "ComputedPropertyName":
3100
+ case "ComputedPropertyName": {
3082
3101
  conditions.push([name.expression, " in ", ref]);
3083
3102
  subRef = [ref, name];
3084
3103
  break;
3104
+ }
3085
3105
  case "Literal":
3086
3106
  case "StringLiteral":
3087
- case "NumericLiteral":
3107
+ case "NumericLiteral": {
3088
3108
  conditions.push([name, " in ", ref]);
3089
3109
  subRef = [ref, "[", name, "]"];
3090
3110
  break;
3091
- default:
3092
- conditions.push(["'", name, "' in ", ref]);
3093
- subRef = [ref, ".", name];
3111
+ }
3112
+ case "Identifier": {
3113
+ conditions.push(["'", name.name, "' in ", ref]);
3114
+ subRef = [ref, ".", name.name];
3115
+ break;
3116
+ }
3117
+ case "AtBinding": {
3118
+ conditions.push(["'", name.ref.id, "' in ", ref]);
3119
+ subRef = [ref, ".", name.ref.id];
3120
+ break;
3121
+ }
3094
3122
  }
3095
3123
  if (value) {
3096
3124
  getPatternConditions(value, subRef, conditions);
3097
3125
  }
3126
+ ;
3098
3127
  break;
3099
3128
  }
3100
3129
  }
3101
- });
3130
+ }
3131
+ ;
3102
3132
  break;
3103
3133
  }
3104
3134
  case "ConditionFragment": {
@@ -3122,22 +3152,22 @@ ${body}`;
3122
3152
  );
3123
3153
  break;
3124
3154
  }
3125
- case "PinPattern":
3155
+ case "PinPattern": {
3126
3156
  conditions.push([
3127
3157
  ref,
3128
3158
  " === ",
3129
3159
  pattern.expression
3130
3160
  ]);
3131
3161
  break;
3132
- case "Literal":
3162
+ }
3163
+ case "Literal": {
3133
3164
  conditions.push([
3134
3165
  ref,
3135
3166
  " === ",
3136
3167
  pattern
3137
3168
  ]);
3138
3169
  break;
3139
- default:
3140
- break;
3170
+ }
3141
3171
  }
3142
3172
  return conditions;
3143
3173
  }
@@ -3270,26 +3300,24 @@ ${body}`;
3270
3300
  function aggregateDuplicateBindings(bindings) {
3271
3301
  const props = gatherRecursiveAll(bindings, ($10) => $10.type === "BindingProperty");
3272
3302
  const arrayBindings = gatherRecursiveAll(bindings, ($11) => $11.type === "ArrayBindingPattern");
3273
- arrayBindings.forEach((a) => {
3274
- const { elements } = a;
3275
- return elements.forEach((element) => {
3303
+ for (let i5 = 0, len4 = arrayBindings.length; i5 < len4; i5++) {
3304
+ const { elements } = arrayBindings[i5];
3305
+ for (let i6 = 0, len5 = elements.length; i6 < len5; i6++) {
3306
+ const element = elements[i6];
3276
3307
  if (Array.isArray(element)) {
3277
3308
  const [, e] = element;
3278
3309
  if (e.type === "Identifier") {
3279
- return props.push(e);
3310
+ props.push(e);
3280
3311
  } else if (e.type === "BindingRestElement") {
3281
- return props.push(e);
3312
+ props.push(e);
3282
3313
  }
3283
- ;
3284
- return;
3285
3314
  }
3286
- ;
3287
- return;
3288
- });
3289
- });
3315
+ }
3316
+ }
3290
3317
  const declarations = [];
3291
3318
  const propsGroupedByName = /* @__PURE__ */ new Map();
3292
- for (const p of props) {
3319
+ for (let i7 = 0, len6 = props.length; i7 < len6; i7++) {
3320
+ const p = props[i7];
3293
3321
  const { name, value } = p;
3294
3322
  let m1;
3295
3323
  if (m1 = value?.type, m1 === "ArrayBindingPattern" || m1 === "ObjectBindingPattern") {
@@ -3311,9 +3339,10 @@ ${body}`;
3311
3339
  pos: 0,
3312
3340
  input: key
3313
3341
  })) {
3314
- shared.forEach((p) => {
3315
- return aliasBinding(p, makeRef(`_${key}`, key));
3316
- });
3342
+ for (let i8 = 0, len7 = shared.length; i8 < len7; i8++) {
3343
+ const p = shared[i8];
3344
+ aliasBinding(p, makeRef(`_${key}`, key));
3345
+ }
3317
3346
  return;
3318
3347
  }
3319
3348
  if (shared.length === 1) {
@@ -5206,9 +5235,8 @@ ${js}`
5206
5235
  children
5207
5236
  });
5208
5237
  }
5209
- function expressionizeTypeIf([ws, ifOp, condition, t, e]) {
5238
+ function expressionizeTypeIf([ifOp, condition, t, e]) {
5210
5239
  const children = [
5211
- ws,
5212
5240
  "(",
5213
5241
  insertTrimmingSpace(condition, ""),
5214
5242
  "?"
@@ -7098,11 +7126,15 @@ ${js}`
7098
7126
  InlineJSXMemberExpressionRest,
7099
7127
  InlineJSXPrimaryExpression,
7100
7128
  JSXMixedChildren,
7129
+ JSXSameLineChildren,
7101
7130
  JSXChildren,
7102
7131
  JSXNestedChildren,
7103
7132
  JSXEOS,
7104
7133
  JSXNested,
7105
7134
  JSXChild,
7135
+ JSXChildForcedCode,
7136
+ JSXChildForcedNoCode,
7137
+ JSXChildGeneral,
7106
7138
  JSXComment,
7107
7139
  JSXCommentContent,
7108
7140
  JSXText,
@@ -7110,7 +7142,8 @@ ${js}`
7110
7142
  IndentedJSXChildExpression,
7111
7143
  NestedJSXChildExpression,
7112
7144
  JSXAngleChild,
7113
- JSXAngleChildExpression,
7145
+ JSXCodeChild,
7146
+ JSXCodeChildExpression,
7114
7147
  UsingDeclaration,
7115
7148
  UsingBinding,
7116
7149
  UsingJSModeError,
@@ -7160,6 +7193,8 @@ ${js}`
7160
7193
  TypePredicate,
7161
7194
  Type,
7162
7195
  TypeBinary,
7196
+ NestedTypeBinaryChain,
7197
+ NestedTypeBinary,
7163
7198
  TypeUnary,
7164
7199
  TypeUnarySuffix,
7165
7200
  TypeUnaryOp,
@@ -7168,13 +7203,21 @@ ${js}`
7168
7203
  TypePrimary,
7169
7204
  ImportType,
7170
7205
  TypeTuple,
7171
- TypeList,
7206
+ TypeTupleContent,
7207
+ TypeElementListWithIndentedApplicationForbidden,
7208
+ TypeElementList,
7172
7209
  TypeElement,
7173
- NestedTypeList,
7174
- NestedType,
7210
+ NestedTypeElementList,
7211
+ NestedTypeElement,
7212
+ NestedTypeBulletedTuple,
7213
+ TypeBulletedTuple,
7214
+ NestedTypeBullet,
7215
+ TypeBullet,
7216
+ TypeWithPostfix,
7175
7217
  TypeConditional,
7176
7218
  TypeCondition,
7177
7219
  TypeIfThenElse,
7220
+ TypeIfClause,
7178
7221
  TypeElse,
7179
7222
  TypeBlock,
7180
7223
  TypeTemplateSubstitution,
@@ -7189,6 +7232,14 @@ ${js}`
7189
7232
  TypeFunction,
7190
7233
  TypeArrowFunction,
7191
7234
  TypeArguments,
7235
+ ImplicitTypeArguments,
7236
+ TypeApplicationStart,
7237
+ ForbiddenImplicitTypeCalls,
7238
+ TypeArgumentList,
7239
+ NestedTypeArgumentList,
7240
+ NestedTypeArgument,
7241
+ SingleLineTypeArgumentList,
7242
+ TypeArgumentDelimited,
7192
7243
  TypeArgument,
7193
7244
  TypeArgumentDelimiter,
7194
7245
  TypeParameters,
@@ -7217,6 +7268,8 @@ ${js}`
7217
7268
  InsertCloseBrace,
7218
7269
  InsertOpenBracket,
7219
7270
  InsertCloseBracket,
7271
+ InsertOpenAngleBracket,
7272
+ InsertCloseAngleBracket,
7220
7273
  InsertComma,
7221
7274
  InsertSpaceEquals,
7222
7275
  InsertConst,
@@ -7243,6 +7296,8 @@ ${js}`
7243
7296
  CoffeeNotEnabled,
7244
7297
  CoffeeOfEnabled,
7245
7298
  CoffeePrototypeEnabled,
7299
+ JSXCodeNestedEnabled,
7300
+ JSXCodeSameLineEnabled,
7246
7301
  ObjectIsEnabled,
7247
7302
  Reset,
7248
7303
  Init,
@@ -7256,7 +7311,8 @@ ${js}`
7256
7311
  IndentedFurther,
7257
7312
  IndentedAtLeast,
7258
7313
  NotDedented,
7259
- Dedented
7314
+ Dedented,
7315
+ PushExtraIndent1
7260
7316
  };
7261
7317
  var $L0 = (0, import_lib3.$L)("");
7262
7318
  var $L1 = (0, import_lib3.$L)("{");
@@ -7503,7 +7559,7 @@ ${js}`
7503
7559
  var $R3 = (0, import_lib3.$R)(new RegExp("[0-9]", "suy"));
7504
7560
  var $R4 = (0, import_lib3.$R)(new RegExp("(?!\\p{ID_Start}|[_$0-9(\\[{])", "suy"));
7505
7561
  var $R5 = (0, import_lib3.$R)(new RegExp("[ \\t]", "suy"));
7506
- var $R6 = (0, import_lib3.$R)(new RegExp("\\p{ID_Continue}|[\\u200C\\u200D$.#{]", "suy"));
7562
+ var $R6 = (0, import_lib3.$R)(new RegExp("\\p{ID_Continue}|[\\u200C\\u200D$.#{=]", "suy"));
7507
7563
  var $R7 = (0, import_lib3.$R)(new RegExp("[&=]", "suy"));
7508
7564
  var $R8 = (0, import_lib3.$R)(new RegExp("(?=['\"`])", "suy"));
7509
7565
  var $R9 = (0, import_lib3.$R)(new RegExp("(?=[\\/?])", "suy"));
@@ -7587,14 +7643,16 @@ ${js}`
7587
7643
  var $R87 = (0, import_lib3.$R)(new RegExp("[^{}<>\\r\\n]+", "suy"));
7588
7644
  var $R88 = (0, import_lib3.$R)(new RegExp("[+-]?", "suy"));
7589
7645
  var $R89 = (0, import_lib3.$R)(new RegExp("(?=if|unless)", "suy"));
7590
- var $R90 = (0, import_lib3.$R)(new RegExp("#![^\\r\\n]*", "suy"));
7591
- var $R91 = (0, import_lib3.$R)(new RegExp("[\\t ]*", "suy"));
7592
- var $R92 = (0, import_lib3.$R)(new RegExp("[\\s]*", "suy"));
7593
- var $R93 = (0, import_lib3.$R)(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
7594
- var $R94 = (0, import_lib3.$R)(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
7595
- var $R95 = (0, import_lib3.$R)(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
7596
- var $R96 = (0, import_lib3.$R)(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
7597
- var $R97 = (0, import_lib3.$R)(new RegExp("[^]*", "suy"));
7646
+ var $R90 = (0, import_lib3.$R)(new RegExp("[|&<!=\\-\u21D2\u2192]", "suy"));
7647
+ var $R91 = (0, import_lib3.$R)(new RegExp("(extends|not|is)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
7648
+ var $R92 = (0, import_lib3.$R)(new RegExp("#![^\\r\\n]*", "suy"));
7649
+ var $R93 = (0, import_lib3.$R)(new RegExp("[\\t ]*", "suy"));
7650
+ var $R94 = (0, import_lib3.$R)(new RegExp("[\\s]*", "suy"));
7651
+ var $R95 = (0, import_lib3.$R)(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
7652
+ var $R96 = (0, import_lib3.$R)(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
7653
+ var $R97 = (0, import_lib3.$R)(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
7654
+ var $R98 = (0, import_lib3.$R)(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
7655
+ var $R99 = (0, import_lib3.$R)(new RegExp("[^]*", "suy"));
7598
7656
  var Program$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Reset, Init, (0, import_lib3.$E)(EOS), TopLevelStatements, __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
7599
7657
  var reset = $1;
7600
7658
  var init = $2;
@@ -7781,6 +7839,9 @@ ${js}`
7781
7839
  var close = $5;
7782
7840
  if (skipImplicitArguments(args))
7783
7841
  return $skip;
7842
+ let last = args[args.length - 1];
7843
+ if (last?.token === "," && last.implicit)
7844
+ args = args.slice(0, -1);
7784
7845
  return {
7785
7846
  type: "Call",
7786
7847
  args,
@@ -8135,7 +8196,7 @@ ${js}`
8135
8196
  children: [{ $loc: $1.$loc, token: "satisfies" }, $2, $3]
8136
8197
  };
8137
8198
  });
8138
- var NWTypePostfix$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(As, (0, import_lib3.$E)(ExclamationPoint), Type), function($skip, $loc, $0, $1, $2, $3) {
8199
+ var NWTypePostfix$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(As, (0, import_lib3.$E)(ExclamationPoint), (0, import_lib3.$C)(Type, (0, import_lib3.$S)(__, Const))), function($skip, $loc, $0, $1, $2, $3) {
8139
8200
  var as = $1;
8140
8201
  var ex = $2;
8141
8202
  var type = $3;
@@ -8489,7 +8550,7 @@ ${js}`
8489
8550
  function ParenthesizedExpression(ctx, state2) {
8490
8551
  return (0, import_lib3.$EVENT)(ctx, state2, "ParenthesizedExpression", ParenthesizedExpression$0);
8491
8552
  }
8492
- var Placeholder$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Dot, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($R6, "Placeholder /\\p{ID_Continue}|[\\u200C\\u200D$.#{]/")), (0, import_lib3.$E)(PlaceholderTypeSuffix)), function($skip, $loc, $0, $1, $2, $3) {
8553
+ var Placeholder$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Dot, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($R6, "Placeholder /\\p{ID_Continue}|[\\u200C\\u200D$.#{=]/")), (0, import_lib3.$E)(PlaceholderTypeSuffix)), function($skip, $loc, $0, $1, $2, $3) {
8493
8554
  var dot = $1;
8494
8555
  var typeSuffix = $3;
8495
8556
  return {
@@ -9442,18 +9503,18 @@ ${js}`
9442
9503
  var params = $3;
9443
9504
  var close = $4;
9444
9505
  let tt, before = [], rest, after = [], errors = [];
9445
- function append(p) {
9506
+ function append2(p) {
9446
9507
  (rest ? after : before).push(p);
9447
9508
  }
9448
9509
  for (const param of params) {
9449
9510
  switch (param.type) {
9450
9511
  case "ThisType":
9451
9512
  if (tt) {
9452
- append({
9513
+ append2({
9453
9514
  type: "Error",
9454
9515
  message: "Only one typed this parameter is allowed"
9455
9516
  });
9456
- append(param);
9517
+ append2(param);
9457
9518
  } else {
9458
9519
  tt = trimFirstSpace(param);
9459
9520
  if (before.length || rest) {
@@ -9471,17 +9532,17 @@ ${js}`
9471
9532
  break;
9472
9533
  case "FunctionRestParameter":
9473
9534
  if (rest) {
9474
- append({
9535
+ append2({
9475
9536
  type: "Error",
9476
9537
  message: "Only one rest parameter is allowed"
9477
9538
  });
9478
- append(param);
9539
+ append2(param);
9479
9540
  } else {
9480
9541
  rest = param;
9481
9542
  }
9482
9543
  break;
9483
9544
  default:
9484
- append(param);
9545
+ append2(param);
9485
9546
  }
9486
9547
  }
9487
9548
  const names = before.flatMap((p) => p.names);
@@ -10986,15 +11047,10 @@ ${js}`
10986
11047
  if (!length)
10987
11048
  return $skip;
10988
11049
  return list.map((e, i) => {
10989
- if (i === 0 && i === length - 1) {
10990
- return { ...e, children: [indent, ...e.children, delimiter] };
10991
- }
10992
- if (i === 0) {
10993
- return { ...e, children: [indent, ...e.children] };
10994
- }
10995
- if (i === length - 1) {
10996
- return { ...e, children: [...e.children, delimiter] };
10997
- }
11050
+ if (i === 0)
11051
+ e = prepend(indent, e);
11052
+ if (i === length - 1)
11053
+ e = append(e, delimiter);
10998
11054
  return e;
10999
11055
  });
11000
11056
  });
@@ -11024,19 +11080,13 @@ ${js}`
11024
11080
  var ElementList$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), ArrayElementExpression, (0, import_lib3.$Q)(ElementListRest)), function($skip, $loc, $0, $1, $2, $3) {
11025
11081
  var first = $2;
11026
11082
  var rest = $3;
11027
- if (rest.length) {
11028
- return [{
11029
- ...first,
11030
- children: [...first.children, rest[0][0]]
11031
- }].concat(rest.map(([_2, e], i) => {
11032
- const delim = rest[i + 1]?.[0];
11033
- return {
11034
- ...e,
11035
- children: [...e.children, delim]
11036
- };
11037
- }));
11038
- }
11039
- return [first];
11083
+ if (!rest.length)
11084
+ return [first];
11085
+ return [
11086
+ append(first, rest[0][0])
11087
+ ].concat(
11088
+ rest.map(([_2, e], i) => append(e, rest[i + 1]?.[0]))
11089
+ );
11040
11090
  });
11041
11091
  var ElementList$$ = [ElementList$0, ElementList$1];
11042
11092
  function ElementList(ctx, state2) {
@@ -11097,9 +11147,10 @@ ${js}`
11097
11147
  if (!content.length)
11098
11148
  return $skip;
11099
11149
  content = content.flat();
11100
- const { children } = content[content.length - 1];
11101
- if (children.at(-1).implicit)
11102
- children.pop();
11150
+ const last = content[content.length - 1];
11151
+ if (last.children?.at(-1)?.implicit) {
11152
+ last.children = last.children.slice(0, -1);
11153
+ }
11103
11154
  return {
11104
11155
  type: "ArrayExpression",
11105
11156
  children: [...open, ...content, close]
@@ -11119,9 +11170,10 @@ ${js}`
11119
11170
  // replace first space with bracket
11120
11171
  ...content[1].flat()
11121
11172
  ];
11122
- const { children } = content[content.length - 1];
11123
- if (children.at(-1).implicit)
11124
- children.pop();
11173
+ const last = content[content.length - 1];
11174
+ if (last.children?.at(-1)?.implicit) {
11175
+ last.children = last.children.slice(0, -1);
11176
+ }
11125
11177
  return {
11126
11178
  type: "ArrayExpression",
11127
11179
  children: [open, ...content, close]
@@ -11133,7 +11185,7 @@ ${js}`
11133
11185
  var NestedArrayBullet$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, ArrayBullet), function($skip, $loc, $0, $1, $2) {
11134
11186
  var indent = $1;
11135
11187
  var list = $2;
11136
- return list.map((e, i) => i === 0 ? { ...e, children: [indent, ...e.children] } : e);
11188
+ return list.map((e, i) => i === 0 ? prepend(indent, e) : e);
11137
11189
  });
11138
11190
  function NestedArrayBullet(ctx, state2) {
11139
11191
  return (0, import_lib3.$EVENT)(ctx, state2, "NestedArrayBullet", NestedArrayBullet$0);
@@ -11144,15 +11196,13 @@ ${js}`
11144
11196
  if (!content)
11145
11197
  return $skip;
11146
11198
  let [list, delimiter] = content;
11147
- if (list.type === "ArrayExpression")
11148
- list = [list];
11149
11199
  if (!list.length)
11150
11200
  return $skip;
11151
11201
  list = list.slice();
11152
- list[0] = { ...list[0], children: [bullet, ...list[0].children] };
11202
+ list[0] = prepend(bullet, list[0]);
11153
11203
  if (delimiter) {
11154
11204
  const last = list.length - 1;
11155
- list[last] = { ...list[last], children: [...list[last].children, delimiter] };
11205
+ list[last] = append(list[last], delimiter);
11156
11206
  }
11157
11207
  return list;
11158
11208
  });
@@ -15804,7 +15854,7 @@ ${js}`
15804
15854
  function InlineJSXPrimaryExpression(ctx, state2) {
15805
15855
  return (0, import_lib3.$EVENT_C)(ctx, state2, "InlineJSXPrimaryExpression", InlineJSXPrimaryExpression$$);
15806
15856
  }
15807
- var JSXMixedChildren$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)(JSXChild), JSXNestedChildren), function($skip, $loc, $0, $1, $2) {
15857
+ var JSXMixedChildren$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(JSXSameLineChildren, JSXNestedChildren), function($skip, $loc, $0, $1, $2) {
15808
15858
  var c1 = $1;
15809
15859
  var c2 = $2;
15810
15860
  return {
@@ -15815,6 +15865,18 @@ ${js}`
15815
15865
  function JSXMixedChildren(ctx, state2) {
15816
15866
  return (0, import_lib3.$EVENT)(ctx, state2, "JSXMixedChildren", JSXMixedChildren$0);
15817
15867
  }
15868
+ var JSXSameLineChildren$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(JSXCodeSameLineEnabled, (0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$E)(NonNewlineWhitespace), (0, import_lib3.$N)(EOL), JSXChildForcedCode))), function($skip, $loc, $0, $1, $2) {
15869
+ var children = $2;
15870
+ return children.map(([, , c]) => c);
15871
+ });
15872
+ var JSXSameLineChildren$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(JSXCodeSameLineEnabled), (0, import_lib3.$Q)(JSXChildForcedNoCode)), function(value) {
15873
+ var children = value[1];
15874
+ return children;
15875
+ });
15876
+ var JSXSameLineChildren$$ = [JSXSameLineChildren$0, JSXSameLineChildren$1];
15877
+ function JSXSameLineChildren(ctx, state2) {
15878
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXSameLineChildren", JSXSameLineChildren$$);
15879
+ }
15818
15880
  var JSXChildren$0 = (0, import_lib3.$TV)((0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$E)(NonNewlineWhitespace), EOL, (0, import_lib3.$E)(NonNewlineWhitespace))), JSXChild)), function($skip, $loc, $0, $1) {
15819
15881
  return {
15820
15882
  children: $1,
@@ -15856,10 +15918,33 @@ ${js}`
15856
15918
  function JSXNested(ctx, state2) {
15857
15919
  return (0, import_lib3.$EVENT)(ctx, state2, "JSXNested", JSXNested$0);
15858
15920
  }
15859
- var JSXChild$0 = JSXElement;
15860
- var JSXChild$1 = JSXFragment;
15861
- var JSXChild$2 = JSXComment;
15862
- var JSXChild$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBrace, IndentedJSXChildExpression, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
15921
+ var JSXChild$0 = JSXChildGeneral;
15922
+ var JSXChild$1 = (0, import_lib3.$T)((0, import_lib3.$S)(JSXCodeNestedEnabled, JSXCodeChild), function(value) {
15923
+ return value[1];
15924
+ });
15925
+ var JSXChild$2 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(JSXCodeNestedEnabled), JSXText), function(value) {
15926
+ return value[1];
15927
+ });
15928
+ var JSXChild$$ = [JSXChild$0, JSXChild$1, JSXChild$2];
15929
+ function JSXChild(ctx, state2) {
15930
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXChild", JSXChild$$);
15931
+ }
15932
+ var JSXChildForcedCode$0 = JSXChildGeneral;
15933
+ var JSXChildForcedCode$1 = JSXCodeChild;
15934
+ var JSXChildForcedCode$$ = [JSXChildForcedCode$0, JSXChildForcedCode$1];
15935
+ function JSXChildForcedCode(ctx, state2) {
15936
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXChildForcedCode", JSXChildForcedCode$$);
15937
+ }
15938
+ var JSXChildForcedNoCode$0 = JSXChildGeneral;
15939
+ var JSXChildForcedNoCode$1 = JSXText;
15940
+ var JSXChildForcedNoCode$$ = [JSXChildForcedNoCode$0, JSXChildForcedNoCode$1];
15941
+ function JSXChildForcedNoCode(ctx, state2) {
15942
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXChildForcedNoCode", JSXChildForcedNoCode$$);
15943
+ }
15944
+ var JSXChildGeneral$0 = JSXElement;
15945
+ var JSXChildGeneral$1 = JSXFragment;
15946
+ var JSXChildGeneral$2 = JSXComment;
15947
+ var JSXChildGeneral$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBrace, IndentedJSXChildExpression, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
15863
15948
  var expression = $2;
15864
15949
  return {
15865
15950
  type: "JSXChildExpression",
@@ -15867,7 +15952,7 @@ ${js}`
15867
15952
  expression
15868
15953
  };
15869
15954
  });
15870
- var JSXChild$4 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBrace, (0, import_lib3.$E)(JSXChildExpression), __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
15955
+ var JSXChildGeneral$4 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBrace, (0, import_lib3.$E)(JSXChildExpression), __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
15871
15956
  var expression = $2;
15872
15957
  return {
15873
15958
  type: "JSXChildExpression",
@@ -15875,7 +15960,7 @@ ${js}`
15875
15960
  expression
15876
15961
  };
15877
15962
  });
15878
- var JSXChild$5 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertInlineOpenBrace, ArrowFunction, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3) {
15963
+ var JSXChildGeneral$5 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertInlineOpenBrace, ArrowFunction, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3) {
15879
15964
  var expression = $2;
15880
15965
  return {
15881
15966
  type: "JSXChildExpression",
@@ -15883,11 +15968,10 @@ ${js}`
15883
15968
  expression
15884
15969
  };
15885
15970
  });
15886
- var JSXChild$6 = JSXAngleChild;
15887
- var JSXChild$7 = JSXText;
15888
- var JSXChild$$ = [JSXChild$0, JSXChild$1, JSXChild$2, JSXChild$3, JSXChild$4, JSXChild$5, JSXChild$6, JSXChild$7];
15889
- function JSXChild(ctx, state2) {
15890
- return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXChild", JSXChild$$);
15971
+ var JSXChildGeneral$6 = JSXAngleChild;
15972
+ var JSXChildGeneral$$ = [JSXChildGeneral$0, JSXChildGeneral$1, JSXChildGeneral$2, JSXChildGeneral$3, JSXChildGeneral$4, JSXChildGeneral$5, JSXChildGeneral$6];
15973
+ function JSXChildGeneral(ctx, state2) {
15974
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXChildGeneral", JSXChildGeneral$$);
15891
15975
  }
15892
15976
  var JSXComment$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L224, 'JSXComment "<!--"'), JSXCommentContent, (0, import_lib3.$EXPECT)($L225, 'JSXComment "-->"')), function($skip, $loc, $0, $1, $2, $3) {
15893
15977
  return ["{/*", $2, "*/}"];
@@ -15911,9 +15995,42 @@ ${js}`
15911
15995
  function JSXText(ctx, state2) {
15912
15996
  return (0, import_lib3.$EVENT)(ctx, state2, "JSXText", JSXText$0);
15913
15997
  }
15914
- var JSXChildExpression$0 = (0, import_lib3.$S)((0, import_lib3.$E)(Whitespace), (0, import_lib3.$E)((0, import_lib3.$S)(DotDotDot, (0, import_lib3.$E)(Whitespace))), PostfixedExpression);
15998
+ var JSXChildExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(Whitespace), LexicalDeclaration), function($skip, $loc, $0, $1, $2) {
15999
+ var d = $2;
16000
+ let names = d.names.concat(
16001
+ d.thisAssignments.map((a) => a[1][1])
16002
+ );
16003
+ names.sort();
16004
+ names = names.filter((name, i) => i === 0 || name !== names[i - 1]);
16005
+ d = {
16006
+ ...d,
16007
+ hoistDec: {
16008
+ type: "Declaration",
16009
+ children: [
16010
+ "let ",
16011
+ names.map((n, i) => i === 0 ? [n] : [",", n]).flat()
16012
+ ]
16013
+ },
16014
+ children: d.children.slice(1)
16015
+ // drop LetOrConst
16016
+ };
16017
+ if (d.thisAssignments?.length) {
16018
+ d.children.push(...d.splices, ",", ...d.thisAssignments.map(
16019
+ (a, i) => a[a.length - 1] === ";" ? [
16020
+ ...a.slice(0, -1),
16021
+ i === d.thisAssignments.length - 1 ? "" : ","
16022
+ ] : a
16023
+ ));
16024
+ } else if (d.splices?.length) {
16025
+ d.children.push(...d.splices);
16026
+ }
16027
+ d.children.push(",void 0");
16028
+ return d;
16029
+ });
16030
+ var JSXChildExpression$1 = (0, import_lib3.$S)((0, import_lib3.$E)(Whitespace), (0, import_lib3.$E)((0, import_lib3.$S)(DotDotDot, (0, import_lib3.$E)(Whitespace))), PostfixedExpression);
16031
+ var JSXChildExpression$$ = [JSXChildExpression$0, JSXChildExpression$1];
15915
16032
  function JSXChildExpression(ctx, state2) {
15916
- return (0, import_lib3.$EVENT)(ctx, state2, "JSXChildExpression", JSXChildExpression$0);
16033
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXChildExpression", JSXChildExpression$$);
15917
16034
  }
15918
16035
  var IndentedJSXChildExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$E)(NestedJSXChildExpression), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
15919
16036
  if (!$2)
@@ -15927,24 +16044,30 @@ ${js}`
15927
16044
  function NestedJSXChildExpression(ctx, state2) {
15928
16045
  return (0, import_lib3.$EVENT)(ctx, state2, "NestedJSXChildExpression", NestedJSXChildExpression$0);
15929
16046
  }
15930
- var JSXAngleChild$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(CloseAngleBracket, InsertInlineOpenBrace, JSXAngleChildExpression, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
15931
- var open = $2;
15932
- var expression = $3;
15933
- var close = $4;
16047
+ var JSXAngleChild$0 = (0, import_lib3.$T)((0, import_lib3.$S)(CloseAngleBracket, JSXCodeChild), function(value) {
16048
+ return value[1];
16049
+ });
16050
+ function JSXAngleChild(ctx, state2) {
16051
+ return (0, import_lib3.$EVENT)(ctx, state2, "JSXAngleChild", JSXAngleChild$0);
16052
+ }
16053
+ var JSXCodeChild$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertInlineOpenBrace, JSXCodeChildExpression, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3) {
16054
+ var open = $1;
16055
+ var expression = $2;
16056
+ var close = $3;
15934
16057
  if (!expression)
15935
16058
  return $skip;
15936
16059
  return [open, expression, close];
15937
16060
  });
15938
- function JSXAngleChild(ctx, state2) {
15939
- return (0, import_lib3.$EVENT)(ctx, state2, "JSXAngleChild", JSXAngleChild$0);
16061
+ function JSXCodeChild(ctx, state2) {
16062
+ return (0, import_lib3.$EVENT)(ctx, state2, "JSXCodeChild", JSXCodeChild$0);
15940
16063
  }
15941
- var JSXAngleChildExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(JSXEOS), ForbidNewlineBinaryOp, (0, import_lib3.$E)(JSXChildExpression), RestoreNewlineBinaryOp), function($skip, $loc, $0, $1, $2, $3, $4) {
16064
+ var JSXCodeChildExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(JSXEOS), ForbidNewlineBinaryOp, (0, import_lib3.$E)(JSXChildExpression), RestoreNewlineBinaryOp), function($skip, $loc, $0, $1, $2, $3, $4) {
15942
16065
  var expression = $3;
15943
16066
  if (!expression)
15944
16067
  return $skip;
15945
16068
  return expression;
15946
16069
  });
15947
- var JSXAngleChildExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Y)(JSXEOS), ImplicitNestedBlock), function($skip, $loc, $0, $1, $2) {
16070
+ var JSXCodeChildExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Y)(JSXEOS), ImplicitNestedBlock), function($skip, $loc, $0, $1, $2) {
15948
16071
  var block = $2;
15949
16072
  if (!block)
15950
16073
  return $skip;
@@ -15959,9 +16082,9 @@ ${js}`
15959
16082
  children: [statement]
15960
16083
  };
15961
16084
  });
15962
- var JSXAngleChildExpression$$ = [JSXAngleChildExpression$0, JSXAngleChildExpression$1];
15963
- function JSXAngleChildExpression(ctx, state2) {
15964
- return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXAngleChildExpression", JSXAngleChildExpression$$);
16085
+ var JSXCodeChildExpression$$ = [JSXCodeChildExpression$0, JSXCodeChildExpression$1];
16086
+ function JSXCodeChildExpression(ctx, state2) {
16087
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXCodeChildExpression", JSXCodeChildExpression$$);
15965
16088
  }
15966
16089
  var UsingDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Using, (0, import_lib3.$E)(_), UsingBinding, (0, import_lib3.$Q)((0, import_lib3.$S)(__, Comma, __, UsingBinding)), UsingJSModeError), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
15967
16090
  var decl = $1;
@@ -16404,14 +16527,16 @@ ${js}`
16404
16527
  function TypeSuffix(ctx, state2) {
16405
16528
  return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeSuffix", TypeSuffix$$);
16406
16529
  }
16407
- var MaybeNestedType$0 = NestedInterfaceBlock;
16408
- var MaybeNestedType$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$E)((0, import_lib3.$S)(Nested, Type)), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
16530
+ var MaybeNestedType$0 = NestedTypeBulletedTuple;
16531
+ var MaybeNestedType$1 = NestedInterfaceBlock;
16532
+ var MaybeNestedType$2 = NestedTypeBinaryChain;
16533
+ var MaybeNestedType$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$E)((0, import_lib3.$S)(Nested, Type)), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
16409
16534
  if (!$2)
16410
16535
  return $skip;
16411
16536
  return $2;
16412
16537
  });
16413
- var MaybeNestedType$2 = Type;
16414
- var MaybeNestedType$$ = [MaybeNestedType$0, MaybeNestedType$1, MaybeNestedType$2];
16538
+ var MaybeNestedType$4 = Type;
16539
+ var MaybeNestedType$$ = [MaybeNestedType$0, MaybeNestedType$1, MaybeNestedType$2, MaybeNestedType$3, MaybeNestedType$4];
16415
16540
  function MaybeNestedType(ctx, state2) {
16416
16541
  return (0, import_lib3.$EVENT_C)(ctx, state2, "MaybeNestedType", MaybeNestedType$$);
16417
16542
  }
@@ -16427,9 +16552,11 @@ ${js}`
16427
16552
  function ReturnTypeSuffix(ctx, state2) {
16428
16553
  return (0, import_lib3.$EVENT)(ctx, state2, "ReturnTypeSuffix", ReturnTypeSuffix$0);
16429
16554
  }
16430
- var ReturnType$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L232, 'ReturnType "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2) {
16555
+ var ReturnType$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L232, 'ReturnType "asserts"'), NonIdContinue)), ForbidIndentedApplication, (0, import_lib3.$E)(TypePredicate), RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3, $4) {
16431
16556
  var asserts = $1;
16432
- var t = $2;
16557
+ var t = $3;
16558
+ if (!t)
16559
+ return $skip;
16433
16560
  if (asserts) {
16434
16561
  t = {
16435
16562
  type: "AssertsType",
@@ -16448,7 +16575,7 @@ ${js}`
16448
16575
  function ReturnType(ctx, state2) {
16449
16576
  return (0, import_lib3.$EVENT)(ctx, state2, "ReturnType", ReturnType$0);
16450
16577
  }
16451
- var TypePredicate$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(MaybeNestedType, (0, import_lib3.$E)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L174, 'TypePredicate "is"'), NonIdContinue, Type))), function($skip, $loc, $0, $1, $2) {
16578
+ var TypePredicate$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(MaybeNestedType, (0, import_lib3.$E)((0, import_lib3.$S)(__, Is, Type))), function($skip, $loc, $0, $1, $2) {
16452
16579
  var lhs = $1;
16453
16580
  var rhs = $2;
16454
16581
  if (!rhs)
@@ -16463,11 +16590,11 @@ ${js}`
16463
16590
  function TypePredicate(ctx, state2) {
16464
16591
  return (0, import_lib3.$EVENT)(ctx, state2, "TypePredicate", TypePredicate$0);
16465
16592
  }
16466
- var Type$0 = TypeConditional;
16593
+ var Type$0 = TypeWithPostfix;
16467
16594
  function Type(ctx, state2) {
16468
16595
  return (0, import_lib3.$EVENT)(ctx, state2, "Type", Type$0);
16469
16596
  }
16470
- var TypeBinary$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(__, TypeBinaryOp, __)), TypeUnary, (0, import_lib3.$Q)((0, import_lib3.$S)(__, TypeBinaryOp, __, TypeUnary))), function($skip, $loc, $0, $1, $2, $3) {
16597
+ var TypeBinary$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(NotDedented, TypeBinaryOp, __)), TypeUnary, (0, import_lib3.$Q)((0, import_lib3.$S)(NotDedented, TypeBinaryOp, __, TypeUnary))), function($skip, $loc, $0, $1, $2, $3) {
16471
16598
  var optionalPrefix = $1;
16472
16599
  var t = $2;
16473
16600
  var ops = $3;
@@ -16482,6 +16609,25 @@ ${js}`
16482
16609
  function TypeBinary(ctx, state2) {
16483
16610
  return (0, import_lib3.$EVENT)(ctx, state2, "TypeBinary", TypeBinary$0);
16484
16611
  }
16612
+ var NestedTypeBinaryChain$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedTypeBinary), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
16613
+ if (!$2.length)
16614
+ return $skip;
16615
+ return $2;
16616
+ });
16617
+ function NestedTypeBinaryChain(ctx, state2) {
16618
+ return (0, import_lib3.$EVENT)(ctx, state2, "NestedTypeBinaryChain", NestedTypeBinaryChain$0);
16619
+ }
16620
+ var NestedTypeBinary$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, TypeBinaryOp, PushExtraIndent1, (0, import_lib3.$E)(TypeUnary), PopIndent), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
16621
+ var indent = $1;
16622
+ var op = $2;
16623
+ var t = $4;
16624
+ if (!t)
16625
+ return $skip;
16626
+ return [indent, op, t];
16627
+ });
16628
+ function NestedTypeBinary(ctx, state2) {
16629
+ return (0, import_lib3.$EVENT)(ctx, state2, "NestedTypeBinary", NestedTypeBinary$0);
16630
+ }
16485
16631
  var TypeUnary$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)((0, import_lib3.$S)(__, TypeUnaryOp)), TypePrimary, (0, import_lib3.$Q)(TypeUnarySuffix)), function($skip, $loc, $0, $1, $2, $3) {
16486
16632
  var prefix = $1;
16487
16633
  var t = $2;
@@ -16551,7 +16697,7 @@ ${js}`
16551
16697
  };
16552
16698
  });
16553
16699
  var TypePrimary$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), TypeTuple), function($skip, $loc, $0, $1, $2) {
16554
- return { ...$2, children: [$1, ...$2.children] };
16700
+ return prepend($1, $2);
16555
16701
  });
16556
16702
  var TypePrimary$3 = InterfaceBlock;
16557
16703
  var TypePrimary$4 = (0, import_lib3.$S)((0, import_lib3.$E)(_), TypeFunction);
@@ -16580,7 +16726,7 @@ ${js}`
16580
16726
  args: void 0
16581
16727
  };
16582
16728
  });
16583
- var TypePrimary$9 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), IdentifierName, (0, import_lib3.$Q)((0, import_lib3.$S)(Dot, IdentifierName)), (0, import_lib3.$E)(TypeArguments)), function($skip, $loc, $0, $1, $2, $3, $4) {
16729
+ var TypePrimary$9 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), Identifier, (0, import_lib3.$Q)((0, import_lib3.$S)(Dot, IdentifierName)), (0, import_lib3.$E)((0, import_lib3.$C)(TypeArguments, ImplicitTypeArguments))), function($skip, $loc, $0, $1, $2, $3, $4) {
16584
16730
  var args = $4;
16585
16731
  return {
16586
16732
  type: "IdentifierType",
@@ -16589,10 +16735,13 @@ ${js}`
16589
16735
  args
16590
16736
  };
16591
16737
  });
16592
- var TypePrimary$10 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), OpenParen, (0, import_lib3.$C)(Type, (0, import_lib3.$S)(EOS, Type)), __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
16738
+ var TypePrimary$10 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), OpenParen, AllowAll, (0, import_lib3.$E)((0, import_lib3.$C)(Type, (0, import_lib3.$S)(EOS, Type))), RestoreAll, __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
16739
+ if (!$4)
16740
+ return $skip;
16593
16741
  return {
16594
16742
  type: "ParenthesizedType",
16595
- children: $0
16743
+ children: [$1, $2, $4, $6, $7]
16744
+ // omit AllowAll/RestoreAll
16596
16745
  };
16597
16746
  });
16598
16747
  var TypePrimary$$ = [TypePrimary$0, TypePrimary$1, TypePrimary$2, TypePrimary$3, TypePrimary$4, TypePrimary$5, TypePrimary$6, TypePrimary$7, TypePrimary$8, TypePrimary$9, TypePrimary$10];
@@ -16605,18 +16754,58 @@ ${js}`
16605
16754
  function ImportType(ctx, state2) {
16606
16755
  return (0, import_lib3.$EVENT_C)(ctx, state2, "ImportType", ImportType$$);
16607
16756
  }
16608
- var TypeTuple$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBracket, (0, import_lib3.$C)(NestedTypeList, (0, import_lib3.$E)(TypeList)), __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
16757
+ var TypeTuple$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBracket, AllowAll, (0, import_lib3.$E)((0, import_lib3.$S)(TypeTupleContent, __, CloseBracket)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
16758
+ if (!$3)
16759
+ return $skip;
16609
16760
  return {
16610
16761
  type: "TypeTuple",
16611
- children: $0
16762
+ children: [$1, ...$3]
16612
16763
  };
16613
16764
  });
16614
16765
  function TypeTuple(ctx, state2) {
16615
16766
  return (0, import_lib3.$EVENT)(ctx, state2, "TypeTuple", TypeTuple$0);
16616
16767
  }
16617
- var TypeList$0 = (0, import_lib3.$S)(TypeElement, (0, import_lib3.$Q)((0, import_lib3.$S)(__, Comma, TypeElement)));
16618
- function TypeList(ctx, state2) {
16619
- return (0, import_lib3.$EVENT)(ctx, state2, "TypeList", TypeList$0);
16768
+ var TypeTupleContent$0 = (0, import_lib3.$S)(NestedTypeElementList, (0, import_lib3.$Y)((0, import_lib3.$S)(__, CloseBracket)));
16769
+ var TypeTupleContent$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(TypeElementListWithIndentedApplicationForbidden, ArrayElementDelimiter, (0, import_lib3.$E)(NestedTypeElementList), (0, import_lib3.$Y)((0, import_lib3.$S)(__, CloseBracket))), function($skip, $loc, $0, $1, $2, $3, $4) {
16770
+ var list = $1;
16771
+ var delimiter = $2;
16772
+ var nested = $3;
16773
+ if (!nested)
16774
+ return list;
16775
+ return [...list, delimiter, ...nested];
16776
+ });
16777
+ var TypeTupleContent$2 = (0, import_lib3.$TV)((0, import_lib3.$Q)((0, import_lib3.$S)(__, TypeElementListWithIndentedApplicationForbidden, ArrayElementDelimiter)), function($skip, $loc, $0, $1) {
16778
+ return $1.flat();
16779
+ });
16780
+ var TypeTupleContent$$ = [TypeTupleContent$0, TypeTupleContent$1, TypeTupleContent$2];
16781
+ function TypeTupleContent(ctx, state2) {
16782
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeTupleContent", TypeTupleContent$$);
16783
+ }
16784
+ var TypeElementListWithIndentedApplicationForbidden$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForbidIndentedApplication, (0, import_lib3.$E)(TypeElementList), RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3) {
16785
+ if ($2)
16786
+ return $2;
16787
+ return $skip;
16788
+ });
16789
+ function TypeElementListWithIndentedApplicationForbidden(ctx, state2) {
16790
+ return (0, import_lib3.$EVENT)(ctx, state2, "TypeElementListWithIndentedApplicationForbidden", TypeElementListWithIndentedApplicationForbidden$0);
16791
+ }
16792
+ var TypeElementList$0 = (0, import_lib3.$T)((0, import_lib3.$S)(TypeBulletedTuple), function(value) {
16793
+ return [value[0]];
16794
+ });
16795
+ var TypeElementList$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), TypeElement, (0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), Comma, (0, import_lib3.$N)(EOS)), TypeElement))), function($skip, $loc, $0, $1, $2, $3) {
16796
+ var first = $2;
16797
+ var rest = $3;
16798
+ if (!rest.length)
16799
+ return [first];
16800
+ return [
16801
+ append(first, rest[0][0])
16802
+ ].concat(
16803
+ rest.map(([_2, e], i) => append(e, rest[i + 1]?.[0]))
16804
+ );
16805
+ });
16806
+ var TypeElementList$$ = [TypeElementList$0, TypeElementList$1];
16807
+ function TypeElementList(ctx, state2) {
16808
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeElementList", TypeElementList$$);
16620
16809
  }
16621
16810
  var TypeElement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, (0, import_lib3.$E)((0, import_lib3.$S)(DotDotDot, __)), IdentifierName, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), DotDotDot)), (0, import_lib3.$S)(__, (0, import_lib3.$E)((0, import_lib3.$S)(QuestionMark, (0, import_lib3.$E)(_))), Colon, __), Type), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
16622
16811
  var ws = $1;
@@ -16650,21 +16839,129 @@ ${js}`
16650
16839
  function TypeElement(ctx, state2) {
16651
16840
  return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeElement", TypeElement$$);
16652
16841
  }
16653
- var NestedTypeList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedType), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
16842
+ var NestedTypeElementList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedTypeElement), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
16654
16843
  var types = $2;
16655
16844
  if (types.length)
16656
16845
  return types;
16657
16846
  return $skip;
16658
16847
  });
16659
- function NestedTypeList(ctx, state2) {
16660
- return (0, import_lib3.$EVENT)(ctx, state2, "NestedTypeList", NestedTypeList$0);
16848
+ function NestedTypeElementList(ctx, state2) {
16849
+ return (0, import_lib3.$EVENT)(ctx, state2, "NestedTypeElementList", NestedTypeElementList$0);
16661
16850
  }
16662
- var NestedType$0 = (0, import_lib3.$S)(Nested, TypeElement, ArrayElementDelimiter);
16663
- function NestedType(ctx, state2) {
16664
- return (0, import_lib3.$EVENT)(ctx, state2, "NestedType", NestedType$0);
16851
+ var NestedTypeElement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, TypeElementList, ArrayElementDelimiter), function($skip, $loc, $0, $1, $2, $3) {
16852
+ var indent = $1;
16853
+ var list = $2;
16854
+ var delimiter = $3;
16855
+ const { length } = list;
16856
+ if (!length)
16857
+ return $skip;
16858
+ return list.map((e, i) => {
16859
+ if (i === 0)
16860
+ e = prepend(indent, e);
16861
+ if (i === length - 1)
16862
+ e = append(e, delimiter);
16863
+ return e;
16864
+ });
16865
+ });
16866
+ function NestedTypeElement(ctx, state2) {
16867
+ return (0, import_lib3.$EVENT)(ctx, state2, "NestedTypeElement", NestedTypeElement$0);
16868
+ }
16869
+ var NestedTypeBulletedTuple$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$S)(InsertSpace, InsertOpenBracket), PushIndent, (0, import_lib3.$Q)(NestedTypeBullet), InsertCloseBracket, PopIndent), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
16870
+ var open = $1;
16871
+ var content = $3;
16872
+ var close = $4;
16873
+ if (!content.length)
16874
+ return $skip;
16875
+ content = content.flat();
16876
+ const last = content[content.length - 1];
16877
+ let children = Array.isArray(last) ? last : last?.children;
16878
+ if (children?.at(-1).implicit) {
16879
+ children = children.slice(0, -1);
16880
+ if (Array.isArray(last)) {
16881
+ content[content.length - 1] = children;
16882
+ } else {
16883
+ content[content.length - 1] = { ...last, children };
16884
+ }
16885
+ }
16886
+ return {
16887
+ type: "TypeTuple",
16888
+ children: [...open, ...content, close]
16889
+ };
16890
+ });
16891
+ function NestedTypeBulletedTuple(ctx, state2) {
16892
+ return (0, import_lib3.$EVENT)(ctx, state2, "NestedTypeBulletedTuple", NestedTypeBulletedTuple$0);
16893
+ }
16894
+ var TypeBulletedTuple$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBracket, (0, import_lib3.$E)((0, import_lib3.$S)(TypeBullet, (0, import_lib3.$Q)(NestedTypeBullet))), InsertCloseBracket), function($skip, $loc, $0, $1, $2, $3) {
16895
+ var open = $1;
16896
+ var content = $2;
16897
+ var close = $3;
16898
+ if (!content)
16899
+ return $skip;
16900
+ content = [
16901
+ ...trimFirstSpace(content[0]),
16902
+ // replace first space with bracket
16903
+ ...content[1].flat()
16904
+ ];
16905
+ const last = content[content.length - 1];
16906
+ let children = Array.isArray(last) ? last : last?.children;
16907
+ if (children?.at(-1).implicit) {
16908
+ children = children.slice(0, -1);
16909
+ if (Array.isArray(last)) {
16910
+ content[content.length - 1] = children;
16911
+ } else {
16912
+ content[content.length - 1] = { ...last, children };
16913
+ }
16914
+ }
16915
+ return {
16916
+ type: "TypeTuple",
16917
+ children: [open, ...content, close]
16918
+ };
16919
+ });
16920
+ function TypeBulletedTuple(ctx, state2) {
16921
+ return (0, import_lib3.$EVENT)(ctx, state2, "TypeBulletedTuple", TypeBulletedTuple$0);
16922
+ }
16923
+ var NestedTypeBullet$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, TypeBullet), function($skip, $loc, $0, $1, $2) {
16924
+ var indent = $1;
16925
+ var list = $2;
16926
+ return list.map((e, i) => i === 0 ? prepend(indent, e) : e);
16927
+ });
16928
+ function NestedTypeBullet(ctx, state2) {
16929
+ return (0, import_lib3.$EVENT)(ctx, state2, "NestedTypeBullet", NestedTypeBullet$0);
16930
+ }
16931
+ var TypeBullet$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(BulletIndent, (0, import_lib3.$E)((0, import_lib3.$S)(TypeElementList, ArrayBulletDelimiter)), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
16932
+ var bullet = $1;
16933
+ var content = $2;
16934
+ if (!content)
16935
+ return $skip;
16936
+ let [list, delimiter] = content;
16937
+ if (!list.length)
16938
+ return $skip;
16939
+ list = list.slice();
16940
+ list[0] = prepend(bullet, list[0]);
16941
+ if (delimiter) {
16942
+ const last = list.length - 1;
16943
+ list[last] = append(list[last], delimiter);
16944
+ }
16945
+ return list;
16946
+ });
16947
+ function TypeBullet(ctx, state2) {
16948
+ return (0, import_lib3.$EVENT)(ctx, state2, "TypeBullet", TypeBullet$0);
16949
+ }
16950
+ var TypeWithPostfix$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(TypeConditional, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$C)(_, IndentedFurther)), TypeIfClause))), function($skip, $loc, $0, $1, $2) {
16951
+ var t = $1;
16952
+ var postfix = $2;
16953
+ if (!postfix)
16954
+ return t;
16955
+ return prepend(
16956
+ postfix[0],
16957
+ expressionizeTypeIf([...postfix[1], $1, void 0])
16958
+ );
16959
+ });
16960
+ function TypeWithPostfix(ctx, state2) {
16961
+ return (0, import_lib3.$EVENT)(ctx, state2, "TypeWithPostfix", TypeWithPostfix$0);
16665
16962
  }
16666
16963
  var TypeConditional$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$EXPECT)($R89, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
16667
- return [$1, expressionizeTypeIf($3)];
16964
+ return prepend($1, expressionizeTypeIf($3));
16668
16965
  });
16669
16966
  var TypeConditional$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(TypeCondition, NotDedented, QuestionMark, __, Type, __, Colon, __, Type), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16670
16967
  if ($1.negated)
@@ -16676,7 +16973,7 @@ ${js}`
16676
16973
  function TypeConditional(ctx, state2) {
16677
16974
  return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeConditional", TypeConditional$$);
16678
16975
  }
16679
- var TypeCondition$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(TypeBinary, (0, import_lib3.$E)(IndentedFurther), (0, import_lib3.$C)(ExtendsToken, NotExtendsToken), Type), function($skip, $loc, $0, $1, $2, $3, $4) {
16976
+ var TypeCondition$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(TypeBinary, (0, import_lib3.$E)(IndentedFurther), (0, import_lib3.$C)(ExtendsToken, NotExtendsToken), TypeConditional), function($skip, $loc, $0, $1, $2, $3, $4) {
16680
16977
  return {
16681
16978
  type: "TypeCondition",
16682
16979
  negated: $3.negated,
@@ -16686,13 +16983,27 @@ ${js}`
16686
16983
  function TypeCondition(ctx, state2) {
16687
16984
  return (0, import_lib3.$EVENT)(ctx, state2, "TypeCondition", TypeCondition$0);
16688
16985
  }
16689
- var TypeIfThenElse$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)(If, Unless), (0, import_lib3.$S)(OpenParen, TypeCondition, CloseParen), TypeBlock, (0, import_lib3.$E)(TypeElse)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
16690
- return [$1, $2, $3[1], $4, $5];
16986
+ var TypeIfThenElse$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(TypeIfClause, TypeBlock, (0, import_lib3.$E)(TypeElse)), function($skip, $loc, $0, $1, $2, $3) {
16987
+ return [...$1, $2, $3];
16691
16988
  });
16692
- var TypeIfThenElse$1 = (0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)(If, Unless), TypeCondition, TypeBlock, (0, import_lib3.$E)(TypeElse));
16693
- var TypeIfThenElse$$ = [TypeIfThenElse$0, TypeIfThenElse$1];
16694
16989
  function TypeIfThenElse(ctx, state2) {
16695
- return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeIfThenElse", TypeIfThenElse$$);
16990
+ return (0, import_lib3.$EVENT)(ctx, state2, "TypeIfThenElse", TypeIfThenElse$0);
16991
+ }
16992
+ var TypeIfClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)(If, Unless), OpenParen, AllowAll, (0, import_lib3.$E)(TypeCondition), RestoreAll, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
16993
+ var condition = $4;
16994
+ if (!condition)
16995
+ return $skip;
16996
+ return [$1, condition];
16997
+ });
16998
+ var TypeIfClause$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)(If, Unless), ForbidIndentedApplication, (0, import_lib3.$E)(TypeCondition), RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3, $4) {
16999
+ var condition = $3;
17000
+ if (!condition)
17001
+ return $skip;
17002
+ return [$1, condition];
17003
+ });
17004
+ var TypeIfClause$$ = [TypeIfClause$0, TypeIfClause$1];
17005
+ function TypeIfClause(ctx, state2) {
17006
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeIfClause", TypeIfClause$$);
16696
17007
  }
16697
17008
  var TypeElse$0 = (0, import_lib3.$S)(NotDedented, Else, TypeBlock);
16698
17009
  function TypeElse(ctx, state2) {
@@ -16792,12 +17103,18 @@ ${js}`
16792
17103
  function TypeBinaryOp(ctx, state2) {
16793
17104
  return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeBinaryOp", TypeBinaryOp$$);
16794
17105
  }
16795
- var TypeFunction$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Abstract, (0, import_lib3.$E)(_))), New, (0, import_lib3.$E)(_))), Parameters, __, TypeArrowFunction, (0, import_lib3.$E)(ReturnType)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
16796
- var type = $5;
16797
- if (type) {
16798
- return $0;
17106
+ var TypeFunction$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Abstract, (0, import_lib3.$E)(_))), (0, import_lib3.$E)((0, import_lib3.$S)(New, (0, import_lib3.$E)(_))), Parameters, __, TypeArrowFunction, (0, import_lib3.$E)(ReturnType)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
17107
+ var type = $6;
17108
+ const ret = [...$0];
17109
+ if ($1 && !$2) {
17110
+ ret[1] = {
17111
+ type: "Error",
17112
+ message: "abstract function types must be constructors (abstract new)"
17113
+ };
16799
17114
  }
16800
- return [...$0, "void"];
17115
+ if (!type)
17116
+ ret.push("void");
17117
+ return ret;
16801
17118
  });
16802
17119
  function TypeFunction(ctx, state2) {
16803
17120
  return (0, import_lib3.$EVENT)(ctx, state2, "TypeFunction", TypeFunction$0);
@@ -16808,8 +17125,9 @@ ${js}`
16808
17125
  function TypeArrowFunction(ctx, state2) {
16809
17126
  return (0, import_lib3.$EVENT)(ctx, state2, "TypeArrowFunction", TypeArrowFunction$0);
16810
17127
  }
16811
- var TypeArguments$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenAngleBracket, (0, import_lib3.$P)(TypeArgument), __, CloseAngleBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
17128
+ var TypeArguments$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenAngleBracket, (0, import_lib3.$P)((0, import_lib3.$S)(__, TypeArgumentDelimited)), __, CloseAngleBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
16812
17129
  var args = $2;
17130
+ args = args.map(([ws, arg]) => [ws, ...arg]);
16813
17131
  return {
16814
17132
  type: "TypeArguments",
16815
17133
  ts: true,
@@ -16820,7 +17138,91 @@ ${js}`
16820
17138
  function TypeArguments(ctx, state2) {
16821
17139
  return (0, import_lib3.$EVENT)(ctx, state2, "TypeArguments", TypeArguments$0);
16822
17140
  }
16823
- var TypeArgument$0 = (0, import_lib3.$S)(__, Type, TypeArgumentDelimiter);
17141
+ var ImplicitTypeArguments$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(TypeApplicationStart, InsertOpenAngleBracket, (0, import_lib3.$E)(Trimmed_), TypeArgumentList, InsertCloseAngleBracket), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
17142
+ var open = $2;
17143
+ var ws = $3;
17144
+ var args = $4;
17145
+ var close = $5;
17146
+ let last = args[args.length - 1];
17147
+ if (last?.token === ",")
17148
+ args = args.slice(0, -1);
17149
+ return [open, ws, args, close];
17150
+ });
17151
+ function ImplicitTypeArguments(ctx, state2) {
17152
+ return (0, import_lib3.$EVENT)(ctx, state2, "ImplicitTypeArguments", ImplicitTypeArguments$0);
17153
+ }
17154
+ var TypeApplicationStart$0 = (0, import_lib3.$S)(IndentedApplicationAllowed, (0, import_lib3.$Y)((0, import_lib3.$S)(IndentedFurther, (0, import_lib3.$N)(ForbiddenImplicitTypeCalls))));
17155
+ var TypeApplicationStart$1 = (0, import_lib3.$S)((0, import_lib3.$N)(EOS), (0, import_lib3.$Y)((0, import_lib3.$S)(_, (0, import_lib3.$N)(ForbiddenImplicitTypeCalls))));
17156
+ var TypeApplicationStart$$ = [TypeApplicationStart$0, TypeApplicationStart$1];
17157
+ function TypeApplicationStart(ctx, state2) {
17158
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeApplicationStart", TypeApplicationStart$$);
17159
+ }
17160
+ var ForbiddenImplicitTypeCalls$0 = ReservedBinary;
17161
+ var ForbiddenImplicitTypeCalls$1 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R90, "ForbiddenImplicitTypeCalls /[|&<!=\\-\u21D2\u2192]/"));
17162
+ var ForbiddenImplicitTypeCalls$2 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R91, "ForbiddenImplicitTypeCalls /(extends|not|is)(?!\\p{ID_Continue}|[\\u200C\\u200D$])/"));
17163
+ var ForbiddenImplicitTypeCalls$$ = [ForbiddenImplicitTypeCalls$0, ForbiddenImplicitTypeCalls$1, ForbiddenImplicitTypeCalls$2];
17164
+ function ForbiddenImplicitTypeCalls(ctx, state2) {
17165
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "ForbiddenImplicitTypeCalls", ForbiddenImplicitTypeCalls$$);
17166
+ }
17167
+ var TypeArgumentList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), TypeArgument, (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$N)(EOS), (0, import_lib3.$E)(_), TypeArgument)), (0, import_lib3.$P)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$C)(NestedTypeBulletedTuple, NestedInterfaceBlock, NestedTypeArgumentList)))), function($skip, $loc, $0, $1, $2, $3, $4) {
17168
+ return [
17169
+ $2,
17170
+ ...$3.flatMap(([comma, eos, ws, arg]) => [comma, prepend(ws, arg)]),
17171
+ ...$4.flatMap(
17172
+ ([comma, args]) => Array.isArray(args) ? [comma, ...args] : [comma, args]
17173
+ )
17174
+ ];
17175
+ });
17176
+ var TypeArgumentList$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)(NestedTypeBulletedTuple, NestedInterfaceBlock), (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$C)(NestedTypeBulletedTuple, NestedInterfaceBlock, NestedTypeArgumentList)))), function($skip, $loc, $0, $1, $2) {
17177
+ return [
17178
+ trimFirstSpace($1),
17179
+ ...$2.flatMap(
17180
+ ([comma, args]) => Array.isArray(args) ? [comma, ...args] : [comma, args]
17181
+ )
17182
+ ];
17183
+ });
17184
+ var TypeArgumentList$2 = NestedTypeArgumentList;
17185
+ var TypeArgumentList$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(TypeArgument, (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$E)(_), TypeArgument))), function($skip, $loc, $0, $1, $2) {
17186
+ return [
17187
+ $1,
17188
+ ...$2.flatMap(([comma, ws, arg]) => [comma, prepend(ws, arg)])
17189
+ ];
17190
+ });
17191
+ var TypeArgumentList$$ = [TypeArgumentList$0, TypeArgumentList$1, TypeArgumentList$2, TypeArgumentList$3];
17192
+ function TypeArgumentList(ctx, state2) {
17193
+ return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeArgumentList", TypeArgumentList$$);
17194
+ }
17195
+ var NestedTypeArgumentList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedTypeArgument), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
17196
+ var args = $2;
17197
+ if (!args.length)
17198
+ return $skip;
17199
+ return args.flat();
17200
+ });
17201
+ function NestedTypeArgumentList(ctx, state2) {
17202
+ return (0, import_lib3.$EVENT)(ctx, state2, "NestedTypeArgumentList", NestedTypeArgumentList$0);
17203
+ }
17204
+ var NestedTypeArgument$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, SingleLineTypeArgumentList, TypeArgumentDelimiter), function($skip, $loc, $0, $1, $2, $3) {
17205
+ var indent = $1;
17206
+ var args = $2;
17207
+ var comma = $3;
17208
+ let [arg0, ...rest] = args;
17209
+ arg0 = prepend(indent, arg0);
17210
+ return [arg0, ...rest, comma];
17211
+ });
17212
+ function NestedTypeArgument(ctx, state2) {
17213
+ return (0, import_lib3.$EVENT)(ctx, state2, "NestedTypeArgument", NestedTypeArgument$0);
17214
+ }
17215
+ var SingleLineTypeArgumentList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), TypeArgument), (0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), Comma), (0, import_lib3.$S)((0, import_lib3.$E)(_), TypeArgument)))), function($skip, $loc, $0, $1, $2) {
17216
+ return [$1, ...$2.flat()];
17217
+ });
17218
+ function SingleLineTypeArgumentList(ctx, state2) {
17219
+ return (0, import_lib3.$EVENT)(ctx, state2, "SingleLineTypeArgumentList", SingleLineTypeArgumentList$0);
17220
+ }
17221
+ var TypeArgumentDelimited$0 = (0, import_lib3.$S)(TypeArgument, TypeArgumentDelimiter);
17222
+ function TypeArgumentDelimited(ctx, state2) {
17223
+ return (0, import_lib3.$EVENT)(ctx, state2, "TypeArgumentDelimited", TypeArgumentDelimited$0);
17224
+ }
17225
+ var TypeArgument$0 = Type;
16824
17226
  function TypeArgument(ctx, state2) {
16825
17227
  return (0, import_lib3.$EVENT)(ctx, state2, "TypeArgument", TypeArgument$0);
16826
17228
  }
@@ -16867,15 +17269,15 @@ ${js}`
16867
17269
  function ThisType(ctx, state2) {
16868
17270
  return (0, import_lib3.$EVENT)(ctx, state2, "ThisType", ThisType$0);
16869
17271
  }
16870
- var Shebang$0 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R90, "Shebang /#![^\\r\\n]*/")), EOL);
17272
+ var Shebang$0 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R92, "Shebang /#![^\\r\\n]*/")), EOL);
16871
17273
  function Shebang(ctx, state2) {
16872
17274
  return (0, import_lib3.$EVENT)(ctx, state2, "Shebang", Shebang$0);
16873
17275
  }
16874
- var CivetPrologue$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R91, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, (0, import_lib3.$EXPECT)($R20, "CivetPrologue /[ \\t]*/"), (0, import_lib3.$C)(EOL, (0, import_lib3.$Y)(RestOfLine))), function(value) {
17276
+ var CivetPrologue$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R93, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, (0, import_lib3.$EXPECT)($R20, "CivetPrologue /[ \\t]*/"), (0, import_lib3.$C)(EOL, (0, import_lib3.$Y)(RestOfLine))), function(value) {
16875
17277
  var content = value[2];
16876
17278
  return content;
16877
17279
  });
16878
- var CivetPrologue$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R91, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, (0, import_lib3.$EXPECT)($R20, "CivetPrologue /[ \\t]*/"), (0, import_lib3.$C)(EOL, (0, import_lib3.$Y)(RestOfLine))), function(value) {
17280
+ var CivetPrologue$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R93, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, (0, import_lib3.$EXPECT)($R20, "CivetPrologue /[ \\t]*/"), (0, import_lib3.$C)(EOL, (0, import_lib3.$Y)(RestOfLine))), function(value) {
16879
17281
  var content = value[2];
16880
17282
  return content;
16881
17283
  });
@@ -16883,7 +17285,7 @@ ${js}`
16883
17285
  function CivetPrologue(ctx, state2) {
16884
17286
  return (0, import_lib3.$EVENT_C)(ctx, state2, "CivetPrologue", CivetPrologue$$);
16885
17287
  }
16886
- var CivetPrologueContent$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L238, 'CivetPrologueContent "civet"'), NonIdContinue, (0, import_lib3.$Q)(CivetOption), (0, import_lib3.$EXPECT)($R92, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
17288
+ var CivetPrologueContent$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L238, 'CivetPrologueContent "civet"'), NonIdContinue, (0, import_lib3.$Q)(CivetOption), (0, import_lib3.$EXPECT)($R94, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
16887
17289
  var options = $3;
16888
17290
  return {
16889
17291
  type: "CivetPrologue",
@@ -16894,7 +17296,7 @@ ${js}`
16894
17296
  function CivetPrologueContent(ctx, state2) {
16895
17297
  return (0, import_lib3.$EVENT)(ctx, state2, "CivetPrologueContent", CivetPrologueContent$0);
16896
17298
  }
16897
- var CivetOption$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R93, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
17299
+ var CivetOption$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R95, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16898
17300
  const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
16899
17301
  if (l)
16900
17302
  return l.toUpperCase();
@@ -16911,11 +17313,11 @@ ${js}`
16911
17313
  function CivetOption(ctx, state2) {
16912
17314
  return (0, import_lib3.$EVENT)(ctx, state2, "CivetOption", CivetOption$0);
16913
17315
  }
16914
- var UnknownPrologue$0 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R91, "UnknownPrologue /[\\t ]*/")), StringLiteral, (0, import_lib3.$TEXT)(SimpleStatementDelimiter), EOS);
17316
+ var UnknownPrologue$0 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R93, "UnknownPrologue /[\\t ]*/")), StringLiteral, (0, import_lib3.$TEXT)(SimpleStatementDelimiter), EOS);
16915
17317
  function UnknownPrologue(ctx, state2) {
16916
17318
  return (0, import_lib3.$EVENT)(ctx, state2, "UnknownPrologue", UnknownPrologue$0);
16917
17319
  }
16918
- var TripleSlashDirective$0 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R94, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), (0, import_lib3.$E)(EOS));
17320
+ var TripleSlashDirective$0 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R96, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), (0, import_lib3.$E)(EOS));
16919
17321
  function TripleSlashDirective(ctx, state2) {
16920
17322
  return (0, import_lib3.$EVENT)(ctx, state2, "TripleSlashDirective", TripleSlashDirective$0);
16921
17323
  }
@@ -16931,13 +17333,13 @@ ${js}`
16931
17333
  function PrologueString(ctx, state2) {
16932
17334
  return (0, import_lib3.$EVENT_C)(ctx, state2, "PrologueString", PrologueString$$);
16933
17335
  }
16934
- var EOS$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R95, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), (0, import_lib3.$P)(RestOfLine)), function(value) {
17336
+ var EOS$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R97, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), (0, import_lib3.$P)(RestOfLine)), function(value) {
16935
17337
  return value[1];
16936
17338
  });
16937
17339
  function EOS(ctx, state2) {
16938
17340
  return (0, import_lib3.$EVENT)(ctx, state2, "EOS", EOS$0);
16939
17341
  }
16940
- var EOL$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R96, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
17342
+ var EOL$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R98, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16941
17343
  return { $loc, token: $0 };
16942
17344
  });
16943
17345
  function EOL(ctx, state2) {
@@ -17003,6 +17405,18 @@ ${js}`
17003
17405
  function InsertCloseBracket(ctx, state2) {
17004
17406
  return (0, import_lib3.$EVENT)(ctx, state2, "InsertCloseBracket", InsertCloseBracket$0);
17005
17407
  }
17408
+ var InsertOpenAngleBracket$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertOpenAngleBracket ""'), function($skip, $loc, $0, $1) {
17409
+ return { $loc, token: "<" };
17410
+ });
17411
+ function InsertOpenAngleBracket(ctx, state2) {
17412
+ return (0, import_lib3.$EVENT)(ctx, state2, "InsertOpenAngleBracket", InsertOpenAngleBracket$0);
17413
+ }
17414
+ var InsertCloseAngleBracket$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertCloseAngleBracket ""'), function($skip, $loc, $0, $1) {
17415
+ return { $loc, token: ">" };
17416
+ });
17417
+ function InsertCloseAngleBracket(ctx, state2) {
17418
+ return (0, import_lib3.$EVENT)(ctx, state2, "InsertCloseAngleBracket", InsertCloseAngleBracket$0);
17419
+ }
17006
17420
  var InsertComma$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertComma ""'), function($skip, $loc, $0, $1) {
17007
17421
  return { $loc, token: ",", implicit: true };
17008
17422
  });
@@ -17187,6 +17601,22 @@ ${js}`
17187
17601
  function CoffeePrototypeEnabled(ctx, state2) {
17188
17602
  return (0, import_lib3.$EVENT)(ctx, state2, "CoffeePrototypeEnabled", CoffeePrototypeEnabled$0);
17189
17603
  }
17604
+ var JSXCodeNestedEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'JSXCodeNestedEnabled ""'), function($skip, $loc, $0, $1) {
17605
+ if (config.jsxCodeNested)
17606
+ return;
17607
+ return $skip;
17608
+ });
17609
+ function JSXCodeNestedEnabled(ctx, state2) {
17610
+ return (0, import_lib3.$EVENT)(ctx, state2, "JSXCodeNestedEnabled", JSXCodeNestedEnabled$0);
17611
+ }
17612
+ var JSXCodeSameLineEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'JSXCodeSameLineEnabled ""'), function($skip, $loc, $0, $1) {
17613
+ if (config.jsxCodeSameLine)
17614
+ return;
17615
+ return $skip;
17616
+ });
17617
+ function JSXCodeSameLineEnabled(ctx, state2) {
17618
+ return (0, import_lib3.$EVENT)(ctx, state2, "JSXCodeSameLineEnabled", JSXCodeSameLineEnabled$0);
17619
+ }
17190
17620
  var ObjectIsEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'ObjectIsEnabled ""'), function($skip, $loc, $0, $1) {
17191
17621
  if (config.objectIs)
17192
17622
  return;
@@ -17230,6 +17660,7 @@ ${js}`
17230
17660
  coffeePrototype: false,
17231
17661
  defaultElement: "div",
17232
17662
  implicitReturns: true,
17663
+ jsxCode: false,
17233
17664
  objectIs: false,
17234
17665
  react: false,
17235
17666
  solid: false,
@@ -17274,6 +17705,16 @@ ${js}`
17274
17705
  }
17275
17706
  }
17276
17707
  });
17708
+ Object.defineProperty(config, "jsxCode", {
17709
+ set(b) {
17710
+ for (const option of [
17711
+ "jsxCodeNested",
17712
+ "jsxCodeSameLine"
17713
+ ]) {
17714
+ config[option] = b;
17715
+ }
17716
+ }
17717
+ });
17277
17718
  Object.assign(config, initialConfig);
17278
17719
  return {
17279
17720
  type: "ParserMeta",
@@ -17308,7 +17749,7 @@ ${js}`
17308
17749
  function Prologue(ctx, state2) {
17309
17750
  return (0, import_lib3.$EVENT)(ctx, state2, "Prologue", Prologue$0);
17310
17751
  }
17311
- var ProloguePrefix$0 = (0, import_lib3.$S)(Prologue, (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R97, "ProloguePrefix /[^]*/")));
17752
+ var ProloguePrefix$0 = (0, import_lib3.$S)(Prologue, (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R99, "ProloguePrefix /[^]*/")));
17312
17753
  function ProloguePrefix(ctx, state2) {
17313
17754
  return (0, import_lib3.$EVENT)(ctx, state2, "ProloguePrefix", ProloguePrefix$0);
17314
17755
  }
@@ -17398,6 +17839,20 @@ ${js}`
17398
17839
  function Dedented(ctx, state2) {
17399
17840
  return (0, import_lib3.$EVENT)(ctx, state2, "Dedented", Dedented$0);
17400
17841
  }
17842
+ var PushExtraIndent1$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'PushExtraIndent1 ""'), function($skip, $loc, $0, $1) {
17843
+ const indent = {
17844
+ token: "",
17845
+ $loc,
17846
+ level: state.currentIndent.level + 1
17847
+ };
17848
+ if (config.verbose)
17849
+ console.log("pushing bonus indent", indent);
17850
+ state.indentLevels.push(indent);
17851
+ return indent;
17852
+ });
17853
+ function PushExtraIndent1(ctx, state2) {
17854
+ return (0, import_lib3.$EVENT)(ctx, state2, "PushExtraIndent1", PushExtraIndent1$0);
17855
+ }
17401
17856
  var parser = function() {
17402
17857
  const { fail, validate, reset } = (0, import_lib3.Validator)();
17403
17858
  let ctx = { expectation: "", fail };
@@ -17857,6 +18312,7 @@ ${js}`
17857
18312
  "PopIndent",
17858
18313
  "TrackIndented",
17859
18314
  "BulletIndent",
18315
+ "PushExtraIndent1",
17860
18316
  // JSX
17861
18317
  "PushJSXOpeningElement",
17862
18318
  "PushJSXOpeningFragment",