@danielx/civet 0.8.3 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -30,9 +30,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  ));
31
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
32
 
33
- // node_modules/.pnpm/@danielx+hera@0.8.16/node_modules/@danielx/hera/dist/machine.js
33
+ // node_modules/@danielx/hera/dist/machine.js
34
34
  var require_machine = __commonJS({
35
- "node_modules/.pnpm/@danielx+hera@0.8.16/node_modules/@danielx/hera/dist/machine.js"(exports2, module2) {
35
+ "node_modules/@danielx/hera/dist/machine.js"(exports2, module2) {
36
36
  "use strict";
37
37
  var __defProp2 = Object.defineProperty;
38
38
  var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
@@ -62,7 +62,7 @@ var require_machine = __commonJS({
62
62
  $N: () => $N2,
63
63
  $P: () => $P2,
64
64
  $Q: () => $Q2,
65
- $R: () => $R100,
65
+ $R: () => $R101,
66
66
  $R$0: () => $R$02,
67
67
  $S: () => $S2,
68
68
  $T: () => $T2,
@@ -99,7 +99,7 @@ var require_machine = __commonJS({
99
99
  return;
100
100
  };
101
101
  }
102
- function $R100(regExp) {
102
+ function $R101(regExp) {
103
103
  return function(_ctx, state2) {
104
104
  const { input, pos } = state2;
105
105
  regExp.lastIndex = state2.pos;
@@ -563,6 +563,7 @@ __export(lib_exports, {
563
563
  processForInOf: () => processForInOf,
564
564
  processProgram: () => processProgram,
565
565
  processProgramAsync: () => processProgramAsync,
566
+ processRangeExpression: () => processRangeExpression,
566
567
  processTryBlock: () => processTryBlock,
567
568
  processUnaryExpression: () => processUnaryExpression,
568
569
  processUnaryNestedExpression: () => processUnaryNestedExpression,
@@ -591,6 +592,13 @@ var assert = {
591
592
  if (a === b) {
592
593
  throw new Error(`Assertion failed [${msg}]: ${a} === ${b}`);
593
594
  }
595
+ },
596
+ notNull(a, msg) {
597
+ if (!(a != null)) {
598
+ throw new Error(`Assertion failed [${msg}]: got null`);
599
+ }
600
+ ;
601
+ return;
594
602
  }
595
603
  };
596
604
  function addParentPointers(node, parent) {
@@ -1050,6 +1058,9 @@ function makeLeftHandSideExpression(expression) {
1050
1058
  expression = item;
1051
1059
  }
1052
1060
  if (isASTNodeObject(expression)) {
1061
+ if (expression.token) {
1062
+ return expression;
1063
+ }
1053
1064
  if (expression.parenthesized) {
1054
1065
  return expression;
1055
1066
  }
@@ -1572,86 +1583,90 @@ function gatherBindingPatternTypeSuffix(pattern) {
1572
1583
  let count = 0;
1573
1584
  switch (pattern.type) {
1574
1585
  case "ArrayBindingPattern": {
1575
- const results = [];
1576
- for (let ref2 = pattern.elements, i2 = 0, len1 = ref2.length; i2 < len1; i2++) {
1577
- const elem = ref2[i2];
1578
- let { typeSuffix } = elem;
1579
- typeSuffix ??= elem.binding?.typeSuffix;
1580
- if (typeSuffix) {
1581
- count++;
1582
- }
1583
- let typeElement = [typeSuffix?.t, elem.delim];
1584
- if (typeSuffix?.optional) {
1585
- typeElement[0] = parenthesizeType(typeElement[0]);
1586
- typeElement.unshift("undefined |");
1586
+ {
1587
+ const results = [];
1588
+ for (let ref2 = pattern.elements, i2 = 0, len1 = ref2.length; i2 < len1; i2++) {
1589
+ const elem = ref2[i2];
1590
+ let { typeSuffix } = elem;
1591
+ typeSuffix ??= elem.binding?.typeSuffix;
1592
+ if (typeSuffix) {
1593
+ count++;
1594
+ }
1595
+ let typeElement = [typeSuffix?.t, elem.delim];
1596
+ if (typeSuffix?.optional) {
1597
+ typeElement[0] = parenthesizeType(typeElement[0]);
1598
+ typeElement.unshift("undefined |");
1599
+ }
1600
+ if (elem.type === "BindingRestElement") {
1601
+ typeElement[0] ??= "unknown[]";
1602
+ typeElement.unshift(elem.dots);
1603
+ } else {
1604
+ typeElement[0] ??= "unknown";
1605
+ }
1606
+ results.push(typeElement);
1587
1607
  }
1588
- if (elem.type === "BindingRestElement") {
1589
- typeElement[0] ??= "unknown[]";
1590
- typeElement.unshift(elem.dots);
1591
- } else {
1592
- typeElement[0] ??= "unknown";
1608
+ ;
1609
+ const types = results;
1610
+ if (count) {
1611
+ const t = [": [", types, "]"];
1612
+ pattern.typeSuffix = {
1613
+ type: "TypeSuffix",
1614
+ ts: true,
1615
+ t,
1616
+ children: [t]
1617
+ };
1593
1618
  }
1594
- results.push(typeElement);
1595
- }
1596
- ;
1597
- const types = results;
1598
- if (count) {
1599
- const t = [": [", types, "]"];
1600
- pattern.typeSuffix = {
1601
- type: "TypeSuffix",
1602
- ts: true,
1603
- t,
1604
- children: [t]
1605
- };
1606
1619
  }
1607
1620
  ;
1608
1621
  break;
1609
1622
  }
1610
1623
  case "ObjectBindingPattern": {
1611
- let restType;
1612
- const results1 = [];
1613
- for (let ref3 = pattern.properties, i3 = 0, len22 = ref3.length; i3 < len22; i3++) {
1614
- const prop = ref3[i3];
1615
- let { typeSuffix } = prop;
1616
- typeSuffix ??= prop.value?.typeSuffix;
1617
- if (typeSuffix) {
1618
- count++;
1619
- }
1620
- typeSuffix ??= {
1621
- type: "TypeSuffix",
1622
- ts: true,
1623
- children: [": unknown"]
1624
- };
1625
- switch (prop.type) {
1626
- case "BindingProperty": {
1627
- const ws = prop.children.slice(0, prop.children.indexOf(prop.name));
1628
- results1.push([...ws, prop.name, typeSuffix, prop.delim]);
1629
- break;
1630
- }
1631
- case "AtBindingProperty": {
1632
- const ws = prop.children.slice(0, prop.children.indexOf(prop.binding));
1633
- results1.push([...ws, prop.ref.id, typeSuffix, prop.delim]);
1634
- break;
1624
+ {
1625
+ let restType;
1626
+ const results1 = [];
1627
+ for (let ref3 = pattern.properties, i3 = 0, len22 = ref3.length; i3 < len22; i3++) {
1628
+ const prop = ref3[i3];
1629
+ let { typeSuffix } = prop;
1630
+ typeSuffix ??= prop.value?.typeSuffix;
1631
+ if (typeSuffix) {
1632
+ count++;
1635
1633
  }
1636
- case "BindingRestProperty": {
1637
- restType = prop.typeSuffix?.t;
1638
- continue;
1634
+ typeSuffix ??= {
1635
+ type: "TypeSuffix",
1636
+ ts: true,
1637
+ children: [": unknown"]
1638
+ };
1639
+ switch (prop.type) {
1640
+ case "BindingProperty": {
1641
+ const ws = prop.children.slice(0, prop.children.indexOf(prop.name));
1642
+ results1.push([...ws, prop.name, typeSuffix, prop.delim]);
1643
+ break;
1644
+ }
1645
+ case "AtBindingProperty": {
1646
+ const ws = prop.children.slice(0, prop.children.indexOf(prop.binding));
1647
+ results1.push([...ws, prop.ref.id, typeSuffix, prop.delim]);
1648
+ break;
1649
+ }
1650
+ case "BindingRestProperty": {
1651
+ restType = prop.typeSuffix?.t;
1652
+ continue;
1653
+ }
1639
1654
  }
1640
1655
  }
1641
- }
1642
- ;
1643
- const types = results1;
1644
- if (count) {
1645
- const t = ["{", types, "}"];
1646
- if (restType != null) {
1647
- t.push(" & ", parenthesizeType(trimFirstSpace(restType)));
1656
+ ;
1657
+ const types = results1;
1658
+ if (count) {
1659
+ const t = ["{", types, "}"];
1660
+ if (restType != null) {
1661
+ t.push(" & ", parenthesizeType(trimFirstSpace(restType)));
1662
+ }
1663
+ pattern.typeSuffix = {
1664
+ type: "TypeSuffix",
1665
+ ts: true,
1666
+ t,
1667
+ children: [": ", t]
1668
+ };
1648
1669
  }
1649
- pattern.typeSuffix = {
1650
- type: "TypeSuffix",
1651
- ts: true,
1652
- t,
1653
- children: [": ", t]
1654
- };
1655
1670
  }
1656
1671
  ;
1657
1672
  break;
@@ -1721,6 +1736,34 @@ var declareHelper = {
1721
1736
  "\n"
1722
1737
  ]]);
1723
1738
  },
1739
+ rslice(rsliceRef) {
1740
+ const RSliceable = makeRef("RSliceable");
1741
+ state.prelude.push(["", [
1742
+ ts(["type ", RSliceable, "<R> = string | {length: number; slice(start: number, end: number): {reverse(): R}}\n"]),
1743
+ preludeVar,
1744
+ rsliceRef,
1745
+ ts([": <R, T extends string | ", RSliceable, "<R>>(a: T, start?: number, end?: number) => T extends string ? string : T extends ", RSliceable, "<infer R> ? R : never"]),
1746
+ " = ((a, start, end) => {\n",
1747
+ " const l = a.length\n",
1748
+ " start = ",
1749
+ getHelperRef("modulo"),
1750
+ "(start ?? -1, l)\n",
1751
+ " end = ",
1752
+ getHelperRef("modulo"),
1753
+ "((end ?? -1) + 1, l)\n",
1754
+ " if (typeof a === 'string') {\n",
1755
+ ` let r = ""
1756
+ `,
1757
+ " for (let i = start; i >= end; --i) r += a[i]\n",
1758
+ " return r",
1759
+ asAny,
1760
+ "\n",
1761
+ " } else {\n",
1762
+ " return a.slice(end, start + 1).reverse()\n",
1763
+ " }\n",
1764
+ "});\n"
1765
+ ]]);
1766
+ },
1724
1767
  div(divRef) {
1725
1768
  state.prelude.push(["", [
1726
1769
  // [indent, statement]
@@ -1847,6 +1890,9 @@ function getHelperRef(base) {
1847
1890
  declareHelper[base](ref);
1848
1891
  return state.helperRefs[base] = ref;
1849
1892
  }
1893
+ function peekHelperRef(base) {
1894
+ return state.helperRefs[base];
1895
+ }
1850
1896
  function extractPreludeFor(node) {
1851
1897
  let helpers = new Set(Object.values(state.helperRefs));
1852
1898
  helpers = new Set(gatherRecursive(node, helpers.has.bind(helpers)));
@@ -1890,6 +1936,9 @@ function gen(root, options) {
1890
1936
  let ref;
1891
1937
  if (ref = options.sourceMap) {
1892
1938
  const sourceMap = ref;
1939
+ if (node.$loc != null) {
1940
+ sourceMap.updateSourceMap("", node.$loc.pos);
1941
+ }
1893
1942
  line = sourceMap.data.srcLine + 1;
1894
1943
  column = sourceMap.data.srcColumn + 1;
1895
1944
  offset = sourceMap.data.srcOffset;
@@ -2514,7 +2563,7 @@ function assignResults(node, collect) {
2514
2563
  case "IterationStatement":
2515
2564
  case "DoStatement":
2516
2565
  case "ComptimeStatement": {
2517
- wrapIterationReturningResults(exp, outer, collect);
2566
+ wrapIterationReturningResults(exp, collect);
2518
2567
  return;
2519
2568
  }
2520
2569
  case "BlockStatement": {
@@ -2554,7 +2603,7 @@ function assignResults(node, collect) {
2554
2603
  }
2555
2604
  node[1] = collect(node[1]);
2556
2605
  }
2557
- function insertReturn(node, outerNode = node) {
2606
+ function insertReturn(node) {
2558
2607
  if (!node)
2559
2608
  return;
2560
2609
  switch (node.type) {
@@ -2662,7 +2711,7 @@ function insertReturn(node, outerNode = node) {
2662
2711
  case "IterationStatement":
2663
2712
  case "DoStatement":
2664
2713
  case "ComptimeStatement": {
2665
- wrapIterationReturningResults(exp, outer);
2714
+ wrapIterationReturningResults(exp);
2666
2715
  return;
2667
2716
  }
2668
2717
  case "BlockStatement": {
@@ -2758,11 +2807,11 @@ function processBreakContinueWith(statement) {
2758
2807
  }
2759
2808
  return changed;
2760
2809
  }
2761
- function wrapIterationReturningResults(statement, outer, collect) {
2810
+ function wrapIterationReturningResults(statement, collect) {
2762
2811
  if (statement.type === "DoStatement" || statement.type === "ComptimeStatement") {
2763
2812
  let results;
2764
2813
  if (statement.type === "ComptimeStatement") {
2765
- insertReturn(statement.block, outer);
2814
+ insertReturn(statement.block);
2766
2815
  const expression = expressionizeComptime(statement);
2767
2816
  replaceNode(statement, expression);
2768
2817
  const parent = expression.parent;
@@ -2778,7 +2827,7 @@ function wrapIterationReturningResults(statement, outer, collect) {
2778
2827
  if (collect) {
2779
2828
  assignResults(results, collect);
2780
2829
  } else {
2781
- insertReturn(results, outer);
2830
+ insertReturn(results);
2782
2831
  }
2783
2832
  return;
2784
2833
  }
@@ -2788,6 +2837,27 @@ function wrapIterationReturningResults(statement, outer, collect) {
2788
2837
  "wrapIterationReturningResults should not be called twice on the same statement"
2789
2838
  );
2790
2839
  const resultsRef = statement.resultsRef = makeRef("results");
2840
+ const { declaration, breakWithOnly } = iterationDeclaration(statement);
2841
+ const { ancestor, child } = findAncestor(statement, ($4) => $4.type === "BlockStatement");
2842
+ assert.notNull(ancestor, `Could not find block containing ${statement.type}`);
2843
+ const index = findChildIndex(ancestor.expressions, child);
2844
+ const iterationTuple = ancestor.expressions[index];
2845
+ ancestor.expressions.splice(index, 0, [iterationTuple[0], declaration, ";"]);
2846
+ iterationTuple[0] = "";
2847
+ braceBlock(ancestor);
2848
+ if (!breakWithOnly) {
2849
+ assignResults(statement.block, (node) => {
2850
+ return [resultsRef, ".push(", node, ")"];
2851
+ });
2852
+ }
2853
+ if (collect) {
2854
+ statement.children.push(collect(resultsRef));
2855
+ } else {
2856
+ statement.children.push(";return ", resultsRef, ";");
2857
+ }
2858
+ }
2859
+ function iterationDeclaration(statement) {
2860
+ const { resultsRef } = statement;
2791
2861
  let decl = "const";
2792
2862
  if (statement.type === "IterationStatement" || statement.type === "ForStatement") {
2793
2863
  if (processBreakContinueWith(statement)) {
@@ -2813,17 +2883,7 @@ function wrapIterationReturningResults(statement, outer, collect) {
2813
2883
  declaration.children.push(";", resultsRef, "=[]");
2814
2884
  }
2815
2885
  }
2816
- outer.children.unshift(["", declaration, ";"]);
2817
- if (!breakWithOnly) {
2818
- assignResults(statement.block, (node) => {
2819
- return [resultsRef, ".push(", node, ")"];
2820
- });
2821
- }
2822
- if (collect) {
2823
- statement.children.push(collect(resultsRef));
2824
- } else {
2825
- statement.children.push(";return ", resultsRef, ";");
2826
- }
2886
+ return { declaration, breakWithOnly };
2827
2887
  }
2828
2888
  function processParams(f) {
2829
2889
  const { type, parameters, block } = f;
@@ -2848,9 +2908,9 @@ function processParams(f) {
2848
2908
  injectParamProps: isConstructor
2849
2909
  });
2850
2910
  if (isConstructor) {
2851
- const { ancestor } = findAncestor(f, ($4) => $4.type === "ClassExpression");
2911
+ const { ancestor } = findAncestor(f, ($5) => $5.type === "ClassExpression");
2852
2912
  if (ancestor != null) {
2853
- const fields = new Set(gatherRecursiveWithinFunction(ancestor, ($5) => $5.type === "FieldDefinition").map(($6) => $6.id).filter((a) => typeof a === "object" && a != null && "type" in a && a.type === "Identifier").map(($7) => $7.name));
2913
+ const fields = new Set(gatherRecursiveWithinFunction(ancestor, ($6) => $6.type === "FieldDefinition").map(($7) => $7.id).filter((a) => typeof a === "object" && a != null && "type" in a && a.type === "Identifier").map(($8) => $8.name));
2854
2914
  const classExpressions = ancestor.body.expressions;
2855
2915
  let index = findChildIndex(classExpressions, f);
2856
2916
  assert.notEqual(index, -1, "Could not find constructor in class");
@@ -2859,12 +2919,12 @@ function processParams(f) {
2859
2919
  index--;
2860
2920
  }
2861
2921
  const fStatement = classExpressions[index];
2862
- for (let ref8 = gatherRecursive(parameters, ($8) => $8.type === "Parameter"), i1 = 0, len3 = ref8.length; i1 < len3; i1++) {
2922
+ for (let ref8 = gatherRecursive(parameters, ($9) => $9.type === "Parameter"), i1 = 0, len3 = ref8.length; i1 < len3; i1++) {
2863
2923
  const parameter = ref8[i1];
2864
2924
  if (!parameter.typeSuffix) {
2865
2925
  continue;
2866
2926
  }
2867
- for (let ref9 = gatherRecursive(parameter, ($9) => $9.type === "AtBinding"), i2 = 0, len1 = ref9.length; i2 < len1; i2++) {
2927
+ for (let ref9 = gatherRecursive(parameter, ($10) => $10.type === "AtBinding"), i2 = 0, len1 = ref9.length; i2 < len1; i2++) {
2868
2928
  const binding = ref9[i2];
2869
2929
  const typeSuffix = binding.parent?.typeSuffix;
2870
2930
  if (!typeSuffix) {
@@ -2876,7 +2936,6 @@ function processParams(f) {
2876
2936
  }
2877
2937
  classExpressions.splice(index++, 0, [fStatement[0], {
2878
2938
  type: "FieldDefinition",
2879
- ts: true,
2880
2939
  id,
2881
2940
  typeSuffix,
2882
2941
  children: [id, typeSuffix]
@@ -2925,8 +2984,8 @@ function processSignature(f) {
2925
2984
  }
2926
2985
  if (hasYield(block) && !f.generator?.length) {
2927
2986
  if (f.type === "ArrowFunction") {
2928
- gatherRecursiveWithinFunction(block, ($10) => $10.type === "YieldExpression").forEach((y) => {
2929
- const i = y.children.findIndex(($11) => $11.type === "Yield");
2987
+ gatherRecursiveWithinFunction(block, ($11) => $11.type === "YieldExpression").forEach((y) => {
2988
+ const i = y.children.findIndex(($12) => $12.type === "Yield");
2930
2989
  return y.children.splice(i + 1, 0, {
2931
2990
  type: "Error",
2932
2991
  message: "Can't use yield inside of => arrow function"
@@ -2954,12 +3013,12 @@ function processFunctions(statements, config2) {
2954
3013
  });
2955
3014
  }
2956
3015
  function expressionizeIteration(exp) {
2957
- const { async, generator, subtype, block, children, statement } = exp;
3016
+ let { async, generator, block, children, statement } = exp;
2958
3017
  const i = children.indexOf(statement);
2959
3018
  if (i < 0) {
2960
3019
  throw new Error("Could not find iteration statement in iteration expression");
2961
3020
  }
2962
- if (subtype === "DoStatement" || subtype === "ComptimeStatement") {
3021
+ if (statement.type === "DoStatement" || statement.type === "ComptimeStatement") {
2963
3022
  children.splice(i, 1, wrapIIFE([["", statement, void 0]], async, generator));
2964
3023
  updateParentPointers(exp);
2965
3024
  return;
@@ -2972,7 +3031,6 @@ function expressionizeIteration(exp) {
2972
3031
  children: ["yield ", node]
2973
3032
  };
2974
3033
  });
2975
- braceBlock(block);
2976
3034
  children.splice(
2977
3035
  i,
2978
3036
  1,
@@ -2987,17 +3045,19 @@ function expressionizeIteration(exp) {
2987
3045
  ], async, generator)
2988
3046
  );
2989
3047
  } else {
2990
- exp.resultsRef ??= makeRef("results");
2991
- const { resultsRef } = exp;
2992
- assignResults(block, (node) => {
2993
- return [resultsRef, ".push(", node, ")"];
2994
- });
2995
- braceBlock(block);
3048
+ const resultsRef = statement.resultsRef ??= makeRef("results");
3049
+ const { declaration, breakWithOnly } = iterationDeclaration(statement);
3050
+ if (!breakWithOnly) {
3051
+ assignResults(block, (node) => {
3052
+ return [resultsRef, ".push(", node, ")"];
3053
+ });
3054
+ braceBlock(block);
3055
+ }
2996
3056
  children.splice(
2997
3057
  i,
2998
3058
  1,
2999
3059
  wrapIIFE([
3000
- ["", ["const ", resultsRef, "=[]"], ";"],
3060
+ ["", declaration, ";"],
3001
3061
  ["", statement, void 0],
3002
3062
  ["", wrapWithReturn(resultsRef)]
3003
3063
  ], async)
@@ -3053,7 +3113,7 @@ function processCoffeeDo(ws, expression) {
3053
3113
  expression = {
3054
3114
  ...expression,
3055
3115
  parameters: newParameters,
3056
- children: expression.children.map(($12) => $12 === parameters ? newParameters : $12)
3116
+ children: expression.children.map(($13) => $13 === parameters ? newParameters : $13)
3057
3117
  };
3058
3118
  }
3059
3119
  return {
@@ -3075,7 +3135,7 @@ function makeAmpersandFunction(rhs) {
3075
3135
  ref = makeRef("$");
3076
3136
  inplacePrepend(ref, body);
3077
3137
  }
3078
- if (startsWithPredicate(body, ($13) => $13.type === "ObjectExpression")) {
3138
+ if (startsWithPredicate(body, ($14) => $14.type === "ObjectExpression")) {
3079
3139
  body = makeLeftHandSideExpression(body);
3080
3140
  }
3081
3141
  const parameters = makeNode({
@@ -4180,8 +4240,7 @@ function prependStatementExpressionBlock(initializer, statement) {
4180
4240
  };
4181
4241
  pre.unshift(refDec);
4182
4242
  } else {
4183
- wrapIterationReturningResults(statement2, { children: blockStatement }, function() {
4184
- });
4243
+ wrapIterationReturningResults(statement2, () => void 0);
4185
4244
  ref = initializer.expression = initializer.children[2] = statement2.resultsRef;
4186
4245
  }
4187
4246
  } else {
@@ -4937,22 +4996,168 @@ function processPipelineExpressions(statements) {
4937
4996
  }
4938
4997
 
4939
4998
  // source/parser/for.civet
4999
+ function processRangeExpression(start, ws1, range, end) {
5000
+ ws1 = [ws1, range.children[0]];
5001
+ const ws2 = range.children[1];
5002
+ const comma = { $loc: range.$loc, token: "," };
5003
+ let ref;
5004
+ switch (range.increasing) {
5005
+ case true: {
5006
+ ref = ($) => $;
5007
+ break;
5008
+ }
5009
+ case false: {
5010
+ ref = ($1) => -$1;
5011
+ break;
5012
+ }
5013
+ default: {
5014
+ ref = Math.abs;
5015
+ }
5016
+ }
5017
+ ;
5018
+ const abs = ref;
5019
+ const lengthAdjust = 1 - Number(!range.left.inclusive) - Number(!range.right.inclusive);
5020
+ let ref1;
5021
+ if (lengthAdjust > 0)
5022
+ ref1 = ` + ${lengthAdjust}`;
5023
+ else if (lengthAdjust < 0)
5024
+ ref1 = ` - ${-lengthAdjust}`;
5025
+ else {
5026
+ ref1 = void 0;
5027
+ }
5028
+ ;
5029
+ const lengthAdjustExpression = ref1;
5030
+ let children;
5031
+ if (typeof start === "object" && start != null && "type" in start && start.type === "Literal" && (typeof end === "object" && end != null && "type" in end && end.type === "Literal")) {
5032
+ let startValue = literalValue(start);
5033
+ let endValue = literalValue(end);
5034
+ if (typeof startValue === "string" && typeof endValue === "string") {
5035
+ if (!(startValue.length === 1 && 1 === endValue.length)) {
5036
+ throw new Error("String range start and end must be a single character");
5037
+ }
5038
+ let startCode = startValue.charCodeAt(0);
5039
+ let endCode = endValue.charCodeAt(0);
5040
+ const step = startCode <= endCode ? 1 : -1;
5041
+ const length = abs(endCode - startCode) + lengthAdjust;
5042
+ if (!range.left.inclusive) {
5043
+ startCode += step;
5044
+ }
5045
+ if (length <= 26) {
5046
+ children = [
5047
+ "[",
5048
+ Array.from({ length }, (_2, i) => {
5049
+ return JSON.stringify(String.fromCharCode(startCode + i * step));
5050
+ }).join(", "),
5051
+ "]"
5052
+ ];
5053
+ } else {
5054
+ children = [
5055
+ `Array.from({length: ${length.toString()}}, `,
5056
+ "(_, i) => String.fromCharCode(",
5057
+ startCode.toString(),
5058
+ step > 0 ? " + " : " - ",
5059
+ "i))"
5060
+ ];
5061
+ }
5062
+ if (range.error != null) {
5063
+ children.unshift(range.error);
5064
+ }
5065
+ } else if (typeof startValue === "number" && typeof endValue === "number") {
5066
+ const step = startValue <= endValue ? 1 : -1;
5067
+ const length = abs(endValue - startValue) + lengthAdjust;
5068
+ if (!range.left.inclusive) {
5069
+ startValue += step;
5070
+ }
5071
+ if (length <= 20) {
5072
+ children = [
5073
+ "[",
5074
+ Array.from({ length }, (_2, i) => startValue + i * step).join(", "),
5075
+ "]"
5076
+ ];
5077
+ if (range.error != null) {
5078
+ children.unshift(range.error);
5079
+ }
5080
+ }
5081
+ }
5082
+ }
5083
+ if (!(children != null)) {
5084
+ if (range.increasing != null) {
5085
+ const sign = range.increasing ? "+" : "-";
5086
+ end = makeLeftHandSideExpression(end);
5087
+ children = [
5088
+ "((s) => Array.from({length: ",
5089
+ range.increasing ? [ws2, end, " - s"] : ["s - ", ws2, end],
5090
+ lengthAdjustExpression,
5091
+ "}, (_, i) => s ",
5092
+ sign,
5093
+ " i))",
5094
+ "(",
5095
+ range.left.inclusive ? start : [makeLeftHandSideExpression(start), ` ${sign} 1`],
5096
+ ...ws1,
5097
+ ")"
5098
+ ];
5099
+ } else {
5100
+ children = [
5101
+ "((s, e) => {let step = e > s ? 1 : -1; return Array.from({length: Math.abs(e - s)",
5102
+ lengthAdjustExpression,
5103
+ "}, (_, i) => s + i * step)})",
5104
+ "(",
5105
+ start,
5106
+ ...ws1,
5107
+ comma,
5108
+ ws2,
5109
+ end,
5110
+ ")"
5111
+ ];
5112
+ }
5113
+ }
5114
+ return {
5115
+ type: "RangeExpression",
5116
+ children,
5117
+ start,
5118
+ end,
5119
+ error: range.error,
5120
+ left: range.left,
5121
+ right: range.right,
5122
+ increasing: range.increasing
5123
+ };
5124
+ }
4940
5125
  function forRange(open, forDeclaration, range, stepExp, close) {
4941
- const { start, end, inclusive } = range;
5126
+ const { start, end, left, right, increasing } = range;
4942
5127
  const counterRef = makeRef("i");
4943
- const infinite = end.type === "Identifier" && end.name === "Infinity";
4944
- let stepRef;
5128
+ const infinite = typeof end === "object" && end != null && "type" in end && end.type === "Identifier" && "name" in end && end.name === "Infinity";
5129
+ let stepRef, asc;
4945
5130
  if (stepExp) {
4946
5131
  stepExp = insertTrimmingSpace(stepExp, "");
4947
5132
  stepRef = maybeRef(stepExp, "step");
4948
5133
  } else if (infinite) {
4949
5134
  stepExp = stepRef = "1";
5135
+ } else if (increasing != null) {
5136
+ if (increasing) {
5137
+ stepExp = stepRef = "1";
5138
+ asc = true;
5139
+ } else {
5140
+ stepExp = stepRef = "-1";
5141
+ asc = false;
5142
+ }
4950
5143
  }
4951
- let startRef = maybeRef(start, "start");
5144
+ let ref2;
5145
+ if (stepRef)
5146
+ ref2 = start;
5147
+ else
5148
+ ref2 = maybeRef(start, "start");
5149
+ let startRef = ref2;
4952
5150
  let endRef = maybeRef(end, "end");
4953
5151
  const startRefDec = startRef !== start ? [startRef, " = ", start, ", "] : [];
4954
5152
  const endRefDec = endRef !== end ? [endRef, " = ", end, ", "] : [];
4955
- let ascDec = [], ascRef, asc;
5153
+ if (!left.inclusive) {
5154
+ startRef = [
5155
+ makeLeftHandSideExpression(start),
5156
+ " + ",
5157
+ stepRef
5158
+ ];
5159
+ }
5160
+ let ascDec = [], ascRef;
4956
5161
  if (stepRef) {
4957
5162
  if (!(stepRef === stepExp)) {
4958
5163
  ascDec = [", ", stepRef, " = ", stepExp];
@@ -4987,12 +5192,12 @@ function forRange(open, forDeclaration, range, stepExp, close) {
4987
5192
  children: ["let ", ...startRefDec, ...endRefDec, counterRef, " = ", ...varLetAssign, startRef, ...varLet, ...ascDec],
4988
5193
  names: forDeclaration?.names
4989
5194
  };
4990
- const counterPart = inclusive ? [counterRef, " <= ", endRef, " : ", counterRef, " >= ", endRef] : [counterRef, " < ", endRef, " : ", counterRef, " > ", endRef];
4991
- const condition = infinite ? [] : stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : ascRef ? [ascRef, " ? ", ...counterPart] : asc ? counterPart.slice(0, 3) : counterPart.slice(4);
4992
- const increment = infinite ? [...varAssign, "++", counterRef] : stepRef ? [...varAssign, counterRef, " += ", stepRef] : ascRef ? [...varAssign, ascRef, " ? ++", counterRef, " : --", counterRef] : [...varAssign, asc ? "++" : "--", counterRef];
5195
+ const counterPart = right.inclusive ? [counterRef, " <= ", endRef, " : ", counterRef, " >= ", endRef] : [counterRef, " < ", endRef, " : ", counterRef, " > ", endRef];
5196
+ const condition = infinite ? [] : asc != null ? asc ? counterPart.slice(0, 3) : counterPart.slice(4) : stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : [ascRef, " ? ", ...counterPart];
5197
+ const increment = stepRef === "1" ? [...varAssign, "++", counterRef] : stepRef === "-1" ? [...varAssign, "--", counterRef] : stepRef ? [...varAssign, counterRef, " += ", stepRef] : ascRef ? [...varAssign, ascRef, " ? ++", counterRef, " : --", counterRef] : [...varAssign, asc ? "++" : "--", counterRef];
4993
5198
  return {
4994
5199
  declaration,
4995
- children: [open, declaration, "; ", ...condition, "; ", ...increment, close],
5200
+ children: [range.error, open, declaration, "; ", ...condition, "; ", ...increment, close],
4996
5201
  blockPrefix
4997
5202
  };
4998
5203
  }
@@ -5634,7 +5839,131 @@ function handleThisPrivateShorthands(value) {
5634
5839
  return [value, value.thisShorthand];
5635
5840
  }
5636
5841
  function processTryBlock($0) {
5637
- let [t, , b, c, e, f] = $0;
5842
+ let [t, , b, cs, e, f] = $0;
5843
+ let c;
5844
+ let m;
5845
+ if (cs.some(($) => (m = $.binding?.parameter, typeof m === "object" && m != null && "type" in m && m.type === "CatchPattern"))) {
5846
+ const ref = makeRef("e");
5847
+ const binding = {
5848
+ type: "CatchBinding",
5849
+ children: ["(", ref, ")"],
5850
+ parameter: ref
5851
+ };
5852
+ const condition = {
5853
+ type: "ParenthesizedExpression",
5854
+ children: ["(", ref, ")"],
5855
+ expression: ref
5856
+ };
5857
+ let defaultClause = false;
5858
+ const clauses = cs.map((clause) => {
5859
+ let ref1;
5860
+ if ((ref1 = clause.binding?.parameter) && typeof ref1 === "object" && "type" in ref1 && ref1.type === "CatchPattern" && "patterns" in ref1) {
5861
+ const { type, patterns } = ref1;
5862
+ return {
5863
+ type: "PatternClause",
5864
+ patterns,
5865
+ block: clause.block,
5866
+ children: [patterns, clause.block]
5867
+ };
5868
+ } else {
5869
+ defaultClause = true;
5870
+ const parameter = clause.binding?.parameter;
5871
+ if (parameter != null) {
5872
+ assert.equal(
5873
+ parameter.type,
5874
+ "CatchParameter",
5875
+ `Invalid catch parameter ${parameter.type}`
5876
+ );
5877
+ const { binding: pattern, typeSuffix } = parameter;
5878
+ const initializer = {
5879
+ type: "Initializer",
5880
+ expression: ref,
5881
+ children: ["", " = ", ref]
5882
+ };
5883
+ const bindings = [{
5884
+ type: "Binding",
5885
+ names: pattern.names,
5886
+ pattern,
5887
+ typeSuffix,
5888
+ initializer,
5889
+ children: [pattern, typeSuffix, initializer],
5890
+ splices: [],
5891
+ thisAssignments: []
5892
+ }];
5893
+ clause.block.expressions.unshift(["", {
5894
+ type: "Declaration",
5895
+ children: ["let", " ", bindings],
5896
+ bindings,
5897
+ names: bindings[0].names,
5898
+ decl: "let"
5899
+ }, ";"]);
5900
+ }
5901
+ return {
5902
+ type: "DefaultClause",
5903
+ block: clause.block,
5904
+ children: ["default: ", clause.block]
5905
+ };
5906
+ }
5907
+ });
5908
+ if (!defaultClause) {
5909
+ const expressions = [[
5910
+ "",
5911
+ {
5912
+ type: "ThrowStatement",
5913
+ children: ["throw", " ", ref]
5914
+ }
5915
+ ]];
5916
+ const block2 = {
5917
+ type: "BlockStatement",
5918
+ expressions,
5919
+ children: [" {", expressions, "}"],
5920
+ bare: false
5921
+ };
5922
+ clauses.push({
5923
+ type: "DefaultClause",
5924
+ block: block2,
5925
+ children: ["default: ", block2]
5926
+ });
5927
+ }
5928
+ const caseBlock = {
5929
+ type: "CaseBlock",
5930
+ clauses,
5931
+ children: [" {", clauses, "}"]
5932
+ };
5933
+ const patternSwitch = {
5934
+ type: "SwitchStatement",
5935
+ condition,
5936
+ caseBlock,
5937
+ children: ["switch", condition, caseBlock]
5938
+ };
5939
+ const block = {
5940
+ type: "BlockStatement",
5941
+ bare: false,
5942
+ expressions: [["", patternSwitch]],
5943
+ children: [" {", patternSwitch, "}"]
5944
+ };
5945
+ c = makeNode({
5946
+ type: "CatchClause",
5947
+ children: [
5948
+ cs[0].children[0],
5949
+ // whitespace
5950
+ cs[0].children[1],
5951
+ // catch token
5952
+ binding,
5953
+ block
5954
+ ],
5955
+ binding,
5956
+ block
5957
+ });
5958
+ } else {
5959
+ c = cs[0];
5960
+ if (cs.length > 1) {
5961
+ c = append(c, {
5962
+ type: "Error",
5963
+ message: "Only one catch clause allowed unless using pattern matching"
5964
+ });
5965
+ }
5966
+ }
5638
5967
  if (!c && (e || !f)) {
5639
5968
  const emptyCatchBlock = makeEmptyBlock();
5640
5969
  c = {
@@ -5733,8 +6062,9 @@ function processCallMemberExpression(node) {
5733
6062
  }
5734
6063
  }
5735
6064
  }
5736
- for (let i = 0; i < children.length; i++) {
5737
- const glob = children[i];
6065
+ for (let i3 = 0, len22 = children.length; i3 < len22; i3++) {
6066
+ const i = i3;
6067
+ const glob = children[i3];
5738
6068
  if (glob?.type === "PropertyGlob") {
5739
6069
  let prefix = children.slice(0, i);
5740
6070
  const parts = [];
@@ -5805,14 +6135,14 @@ function processCallMemberExpression(node) {
5805
6135
  });
5806
6136
  }
5807
6137
  }
5808
- let ref1;
6138
+ let ref2;
5809
6139
  let object = {
5810
6140
  type: "ObjectExpression",
5811
6141
  children: [
5812
6142
  glob.object.children[0],
5813
6143
  // {
5814
6144
  ...parts,
5815
- (ref1 = glob.object.children)[ref1.length - 1]
6145
+ (ref2 = glob.object.children)[ref2.length - 1]
5816
6146
  // whitespace and }
5817
6147
  ],
5818
6148
  properties: parts,
@@ -5854,6 +6184,33 @@ function processCallMemberExpression(node) {
5854
6184
  ...children.slice(i + 1)
5855
6185
  ]
5856
6186
  });
6187
+ } else if (typeof glob === "object" && glob != null && "type" in glob && glob.type === "SliceExpression" && "reversed" in glob && glob.reversed === true) {
6188
+ const args = [
6189
+ { ...node, children: node.children.slice(0, i) },
6190
+ { ...glob.children[0], token: ", " },
6191
+ ...glob.children.slice(1, -1)
6192
+ ];
6193
+ let ref3;
6194
+ return makeNode({
6195
+ ...node,
6196
+ children: [
6197
+ {
6198
+ type: "CallExpression",
6199
+ children: [
6200
+ getHelperRef("rslice"),
6201
+ makeNode({
6202
+ type: "Call",
6203
+ args,
6204
+ children: [
6205
+ "(",
6206
+ args,
6207
+ (ref3 = glob.children)[ref3.length - 1]
6208
+ ]
6209
+ })
6210
+ ]
6211
+ }
6212
+ ]
6213
+ });
5857
6214
  }
5858
6215
  }
5859
6216
  return node;
@@ -5864,9 +6221,9 @@ function replaceNode(node, newNode, parent) {
5864
6221
  throw new Error("replaceNode failed: node has no parent");
5865
6222
  }
5866
6223
  function recurse(children) {
5867
- for (let i3 = 0, len22 = children.length; i3 < len22; i3++) {
5868
- const i = i3;
5869
- const child = children[i3];
6224
+ for (let i4 = 0, len3 = children.length; i4 < len3; i4++) {
6225
+ const i = i4;
6226
+ const child = children[i4];
5870
6227
  if (child === node) {
5871
6228
  children[i] = newNode;
5872
6229
  return true;
@@ -5958,8 +6315,8 @@ function convertNamedImportsToObject(node, pattern) {
5958
6315
  return { type: "Error", message: "cannot use `type` in dynamic import" };
5959
6316
  } else {
5960
6317
  const { source, binding } = specifier;
5961
- let ref2;
5962
- const delim = (ref2 = specifier.children)[ref2.length - 1];
6318
+ let ref4;
6319
+ const delim = (ref4 = specifier.children)[ref4.length - 1];
5963
6320
  return {
5964
6321
  type: pattern ? "BindingProperty" : "Property",
5965
6322
  name: source,
@@ -5969,7 +6326,7 @@ function convertNamedImportsToObject(node, pattern) {
5969
6326
  };
5970
6327
  }
5971
6328
  });
5972
- let ref3;
6329
+ let ref5;
5973
6330
  return {
5974
6331
  type: pattern ? "ObjectBindingPattern" : "ObjectExpression",
5975
6332
  names: node.names,
@@ -5978,7 +6335,7 @@ function convertNamedImportsToObject(node, pattern) {
5978
6335
  node.children[0],
5979
6336
  // {
5980
6337
  properties,
5981
- (ref3 = node.children)[ref3.length - 1]
6338
+ (ref5 = node.children)[ref5.length - 1]
5982
6339
  // }
5983
6340
  ]
5984
6341
  };
@@ -6084,8 +6441,8 @@ function processAssignments(statements) {
6084
6441
  while (expr.type === "ParenthesizedExpression") {
6085
6442
  expr = expr.expression;
6086
6443
  }
6087
- let m;
6088
- if (m = expr.type, m === "AssignmentExpression" || m === "UpdateExpression") {
6444
+ let m1;
6445
+ if (m1 = expr.type, m1 === "AssignmentExpression" || m1 === "UpdateExpression") {
6089
6446
  if (expr.type === "UpdateExpression" && expr.children[0] === expr.assigned) {
6090
6447
  pre.push("(");
6091
6448
  post.push([", ", lhs, ")"]);
@@ -6099,15 +6456,15 @@ function processAssignments(statements) {
6099
6456
  return;
6100
6457
  }
6101
6458
  const pre = [], post = [];
6102
- let ref4;
6459
+ let ref6;
6103
6460
  switch (exp.type) {
6104
6461
  case "AssignmentExpression": {
6105
6462
  if (!exp.lhs)
6106
6463
  return;
6107
6464
  exp.lhs.forEach((lhsPart, i) => {
6108
- let ref5;
6109
- if (ref5 = extractAssignment(lhsPart[1])) {
6110
- const newLhs = ref5;
6465
+ let ref7;
6466
+ if (ref7 = extractAssignment(lhsPart[1])) {
6467
+ const newLhs = ref7;
6111
6468
  return lhsPart[1] = newLhs;
6112
6469
  }
6113
6470
  ;
@@ -6116,8 +6473,8 @@ function processAssignments(statements) {
6116
6473
  break;
6117
6474
  }
6118
6475
  case "UpdateExpression": {
6119
- if (ref4 = extractAssignment(exp.assigned)) {
6120
- const newLhs = ref4;
6476
+ if (ref6 = extractAssignment(exp.assigned)) {
6477
+ const newLhs = ref6;
6121
6478
  const i = exp.children.indexOf(exp.assigned);
6122
6479
  exp.assigned = exp.children[i] = newLhs;
6123
6480
  }
@@ -6133,7 +6490,7 @@ function processAssignments(statements) {
6133
6490
  const { assigned } = exp;
6134
6491
  const ref = makeRef();
6135
6492
  const newMemberExp = unchainOptionalMemberExpression(assigned, ref, (children) => {
6136
- return exp.children.map(($) => $ === assigned ? children : $);
6493
+ return exp.children.map(($3) => $3 === assigned ? children : $3);
6137
6494
  });
6138
6495
  if (newMemberExp !== assigned) {
6139
6496
  if (newMemberExp.usesRef) {
@@ -6157,23 +6514,23 @@ function processAssignments(statements) {
6157
6514
  (exp) => {
6158
6515
  let { lhs: $1, expression: $2 } = exp, tail = [], len3 = $1.length;
6159
6516
  let block;
6160
- let ref6;
6161
- if (exp.parent?.type === "BlockStatement" && !(ref6 = $1[$1.length - 1])?.[ref6.length - 1]?.special) {
6517
+ let ref8;
6518
+ if (exp.parent?.type === "BlockStatement" && !(ref8 = $1[$1.length - 1])?.[ref8.length - 1]?.special) {
6162
6519
  block = makeBlockFragment();
6163
- let ref7;
6164
- if (ref7 = prependStatementExpressionBlock(
6520
+ let ref9;
6521
+ if (ref9 = prependStatementExpressionBlock(
6165
6522
  { type: "Initializer", expression: $2, children: [void 0, void 0, $2] },
6166
6523
  block
6167
6524
  )) {
6168
- const ref = ref7;
6169
- exp.children = exp.children.map(($3) => $3 === $2 ? ref : $3);
6525
+ const ref = ref9;
6526
+ exp.children = exp.children.map(($4) => $4 === $2 ? ref : $4);
6170
6527
  $2 = ref;
6171
6528
  } else {
6172
6529
  block = void 0;
6173
6530
  }
6174
6531
  }
6175
- let ref8;
6176
- if ($1.some(($4) => (ref8 = $4)[ref8.length - 1].special)) {
6532
+ let ref10;
6533
+ if ($1.some(($5) => (ref10 = $5)[ref10.length - 1].special)) {
6177
6534
  if ($1.length !== 1)
6178
6535
  throw new Error("Only one assignment with id= is allowed");
6179
6536
  const [, lhs, , op] = $1[0];
@@ -6198,8 +6555,8 @@ function processAssignments(statements) {
6198
6555
  if (!(op.token === "=")) {
6199
6556
  continue;
6200
6557
  }
6201
- let m1;
6202
- if (m1 = lhs.type, m1 === "ObjectExpression" || m1 === "ObjectBindingPattern") {
6558
+ let m2;
6559
+ if (m2 = lhs.type, m2 === "ObjectExpression" || m2 === "ObjectBindingPattern") {
6203
6560
  if (!wrapped) {
6204
6561
  wrapped = true;
6205
6562
  lhs.children.splice(0, 0, "(");
@@ -6213,10 +6570,17 @@ function processAssignments(statements) {
6213
6570
  const lastAssignment = $1[i];
6214
6571
  if (lastAssignment[3].token === "=") {
6215
6572
  const lhs = lastAssignment[1];
6216
- let m2;
6573
+ let m3;
6217
6574
  if (lhs.type === "MemberExpression") {
6218
6575
  const members = lhs.children;
6219
6576
  const lastMember = members[members.length - 1];
6577
+ if (typeof lastMember === "object" && lastMember != null && "type" in lastMember && lastMember.type === "CallExpression" && "children" in lastMember && Array.isArray(lastMember.children) && lastMember.children.length >= 1 && lastMember.children[0] === peekHelperRef("rslice")) {
6578
+ lastMember.children.push({
6579
+ type: "Error",
6580
+ message: "Slice range cannot be decreasing in assignment"
6581
+ });
6582
+ break;
6583
+ }
6220
6584
  if (lastMember.type === "SliceExpression") {
6221
6585
  const { start, end, children: c } = lastMember;
6222
6586
  c[0].token = ".splice(";
@@ -6239,9 +6603,9 @@ function processAssignments(statements) {
6239
6603
  exp.names = [];
6240
6604
  break;
6241
6605
  }
6242
- } else if (m2 = lhs.type, m2 === "ObjectBindingPattern" || m2 === "ArrayBindingPattern") {
6606
+ } else if (m3 = lhs.type, m3 === "ObjectBindingPattern" || m3 === "ArrayBindingPattern") {
6243
6607
  processBindingPatternLHS(lhs, tail);
6244
- gatherRecursiveAll(lhs, ($5) => $5.type === "Ref").forEach(refsToDeclare.add.bind(refsToDeclare));
6608
+ gatherRecursiveAll(lhs, ($6) => $6.type === "Ref").forEach(refsToDeclare.add.bind(refsToDeclare));
6245
6609
  }
6246
6610
  }
6247
6611
  i--;
@@ -6274,7 +6638,7 @@ function processAssignments(statements) {
6274
6638
  }
6275
6639
  if (refsToDeclare.size) {
6276
6640
  if (exp.hoistDec) {
6277
- exp.hoistDec.children.push([...refsToDeclare].map(($6) => [",", $6]));
6641
+ exp.hoistDec.children.push([...refsToDeclare].map(($7) => [",", $7]));
6278
6642
  } else {
6279
6643
  exp.hoistDec = {
6280
6644
  type: "Declaration",
@@ -6348,9 +6712,9 @@ function unchainOptionalMemberExpression(exp, ref, innerExp) {
6348
6712
  }
6349
6713
  j++;
6350
6714
  }
6351
- let ref9;
6352
- if (ref9 = conditions.length) {
6353
- const l = ref9;
6715
+ let ref11;
6716
+ if (ref11 = conditions.length) {
6717
+ const l = ref11;
6354
6718
  const cs = flatJoin(conditions, " && ");
6355
6719
  return {
6356
6720
  ...exp,
@@ -6389,27 +6753,27 @@ function processTypes(node) {
6389
6753
  if (!unary.suffix.length) {
6390
6754
  return;
6391
6755
  }
6392
- let ref10;
6393
- let m3;
6394
- if (m3 = (ref10 = unary.suffix)[ref10.length - 1], typeof m3 === "object" && m3 != null && "token" in m3 && m3.token === "?") {
6395
- const { token } = m3;
6756
+ let ref12;
6757
+ let m4;
6758
+ if (m4 = (ref12 = unary.suffix)[ref12.length - 1], typeof m4 === "object" && m4 != null && "token" in m4 && m4.token === "?") {
6759
+ const { token } = m4;
6396
6760
  let last;
6397
6761
  let count = 0;
6398
- let ref11;
6399
- while (unary.suffix.length && (ref11 = unary.suffix)[ref11.length - 1]?.token === "?") {
6762
+ let ref13;
6763
+ while (unary.suffix.length && (ref13 = unary.suffix)[ref13.length - 1]?.token === "?") {
6400
6764
  last = unary.suffix.pop();
6401
6765
  count++;
6402
6766
  }
6403
- let ref12;
6404
- while (unary.suffix.length && (ref12 = unary.suffix)[ref12.length - 1]?.type === "NonNullAssertion") {
6767
+ let ref14;
6768
+ while (unary.suffix.length && (ref14 = unary.suffix)[ref14.length - 1]?.type === "NonNullAssertion") {
6405
6769
  unary.suffix.pop();
6406
6770
  }
6407
- let ref13;
6771
+ let ref15;
6408
6772
  if (unary.suffix.length || unary.prefix.length)
6409
- ref13 = unary;
6773
+ ref15 = unary;
6410
6774
  else
6411
- ref13 = unary.t;
6412
- const t = ref13;
6775
+ ref15 = unary.t;
6776
+ const t = ref15;
6413
6777
  if (unary.parent?.type === "TypeTuple") {
6414
6778
  if (count === 1) {
6415
6779
  unary.suffix.push(last);
@@ -6435,14 +6799,14 @@ function processTypes(node) {
6435
6799
  ]
6436
6800
  });
6437
6801
  }
6438
- } else if (typeof m3 === "object" && m3 != null && "type" in m3 && m3.type === "NonNullAssertion") {
6439
- const { type } = m3;
6440
- let ref14;
6441
- while (unary.suffix.length && (ref14 = unary.suffix)[ref14.length - 1]?.type === "NonNullAssertion") {
6802
+ } else if (typeof m4 === "object" && m4 != null && "type" in m4 && m4.type === "NonNullAssertion") {
6803
+ const { type } = m4;
6804
+ let ref16;
6805
+ while (unary.suffix.length && (ref16 = unary.suffix)[ref16.length - 1]?.type === "NonNullAssertion") {
6442
6806
  unary.suffix.pop();
6443
6807
  }
6444
- let ref15;
6445
- while (unary.suffix.length && (ref15 = unary.suffix)[ref15.length - 1]?.token === "?") {
6808
+ let ref17;
6809
+ while (unary.suffix.length && (ref17 = unary.suffix)[ref17.length - 1]?.token === "?") {
6446
6810
  unary.suffix.pop();
6447
6811
  }
6448
6812
  const t = trimFirstSpace(
@@ -6468,14 +6832,14 @@ function processTypes(node) {
6468
6832
  });
6469
6833
  }
6470
6834
  function processStatementExpressions(statements) {
6471
- gatherRecursiveAll(statements, ($7) => $7.type === "StatementExpression").forEach((_exp) => {
6835
+ gatherRecursiveAll(statements, ($8) => $8.type === "StatementExpression").forEach((_exp) => {
6472
6836
  const exp = _exp;
6473
6837
  const { statement } = exp;
6474
- let ref16;
6838
+ let ref18;
6475
6839
  switch (statement.type) {
6476
6840
  case "IfStatement": {
6477
- if (ref16 = expressionizeIfStatement(statement)) {
6478
- const expression = ref16;
6841
+ if (ref18 = expressionizeIfStatement(statement)) {
6842
+ const expression = ref18;
6479
6843
  return replaceNode(statement, expression, exp);
6480
6844
  } else {
6481
6845
  return replaceNode(statement, wrapIIFE([["", statement]]), exp);
@@ -6544,7 +6908,7 @@ function processProgram(root) {
6544
6908
  if (config2.iife || config2.repl) {
6545
6909
  rootIIFE = wrapIIFE(root.expressions, root.topLevelAwait);
6546
6910
  const newExpressions = [["", rootIIFE]];
6547
- root.children = root.children.map(($8) => $8 === root.expressions ? newExpressions : $8);
6911
+ root.children = root.children.map(($9) => $9 === root.expressions ? newExpressions : $9);
6548
6912
  root.expressions = newExpressions;
6549
6913
  }
6550
6914
  addParentPointers(root);
@@ -6584,17 +6948,17 @@ async function processProgramAsync(root) {
6584
6948
  await processComptime(statements);
6585
6949
  }
6586
6950
  function processRepl(root, rootIIFE) {
6587
- const topBlock = gatherRecursive(rootIIFE, ($9) => $9.type === "BlockStatement")[0];
6951
+ const topBlock = gatherRecursive(rootIIFE, ($10) => $10.type === "BlockStatement")[0];
6588
6952
  let i = 0;
6589
- for (let ref17 = gatherRecursiveWithinFunction(topBlock, ($10) => $10.type === "Declaration"), i4 = 0, len3 = ref17.length; i4 < len3; i4++) {
6590
- const decl = ref17[i4];
6953
+ for (let ref19 = gatherRecursiveWithinFunction(topBlock, ($11) => $11.type === "Declaration"), i5 = 0, len4 = ref19.length; i5 < len4; i5++) {
6954
+ const decl = ref19[i5];
6591
6955
  if (decl.parent === topBlock || decl.decl === "var") {
6592
6956
  decl.children.shift();
6593
6957
  root.expressions.splice(i++, 0, ["", `var ${decl.names.join(",")};`]);
6594
6958
  }
6595
6959
  }
6596
- for (let ref18 = gatherRecursive(topBlock, ($11) => $11.type === "FunctionExpression"), i5 = 0, len4 = ref18.length; i5 < len4; i5++) {
6597
- const func = ref18[i5];
6960
+ for (let ref20 = gatherRecursive(topBlock, ($12) => $12.type === "FunctionExpression"), i6 = 0, len5 = ref20.length; i6 < len5; i6++) {
6961
+ const func = ref20[i6];
6598
6962
  if (func.name && func.parent?.type === "BlockStatement") {
6599
6963
  if (func.parent === topBlock) {
6600
6964
  replaceNode(func, void 0);
@@ -6606,17 +6970,17 @@ function processRepl(root, rootIIFE) {
6606
6970
  }
6607
6971
  }
6608
6972
  }
6609
- for (let ref19 = gatherRecursiveWithinFunction(topBlock, ($12) => $12.type === "ClassExpression"), i6 = 0, len5 = ref19.length; i6 < len5; i6++) {
6610
- const classExp = ref19[i6];
6611
- let m4;
6612
- if (classExp.name && classExp.parent === topBlock || (m4 = classExp.parent, typeof m4 === "object" && m4 != null && "type" in m4 && m4.type === "ReturnStatement" && "parent" in m4 && m4.parent === topBlock)) {
6973
+ for (let ref21 = gatherRecursiveWithinFunction(topBlock, ($13) => $13.type === "ClassExpression"), i7 = 0, len6 = ref21.length; i7 < len6; i7++) {
6974
+ const classExp = ref21[i7];
6975
+ let m5;
6976
+ if (classExp.name && classExp.parent === topBlock || (m5 = classExp.parent, typeof m5 === "object" && m5 != null && "type" in m5 && m5.type === "ReturnStatement" && "parent" in m5 && m5.parent === topBlock)) {
6613
6977
  classExp.children.unshift(classExp.name, "=");
6614
6978
  root.expressions.splice(i++, 0, ["", `var ${classExp.name};`]);
6615
6979
  }
6616
6980
  }
6617
6981
  }
6618
6982
  function populateRefs(statements) {
6619
- const refNodes = gatherRecursive(statements, ($13) => $13.type === "Ref");
6983
+ const refNodes = gatherRecursive(statements, ($14) => $14.type === "Ref");
6620
6984
  if (refNodes.length) {
6621
6985
  const ids = gatherRecursive(statements, (s) => s.type === "Identifier");
6622
6986
  const names = new Set(ids.flatMap(({ names: names2 }) => names2 || []));
@@ -6639,11 +7003,11 @@ function populateRefs(statements) {
6639
7003
  function processPlaceholders(statements) {
6640
7004
  const placeholderMap = /* @__PURE__ */ new Map();
6641
7005
  const liftedIfs = /* @__PURE__ */ new Set();
6642
- gatherRecursiveAll(statements, ($14) => $14.type === "Placeholder").forEach((_exp) => {
7006
+ gatherRecursiveAll(statements, ($15) => $15.type === "Placeholder").forEach((_exp) => {
6643
7007
  const exp = _exp;
6644
7008
  let ancestor;
6645
7009
  if (exp.subtype === ".") {
6646
- ({ ancestor } = findAncestor(exp, ($15) => $15.type === "Call"));
7010
+ ({ ancestor } = findAncestor(exp, ($16) => $16.type === "Call"));
6647
7011
  ancestor = ancestor?.parent;
6648
7012
  while (ancestor?.parent?.type === "UnaryExpression" || ancestor?.parent?.type === "NewExpression") {
6649
7013
  ancestor = ancestor.parent;
@@ -6662,10 +7026,10 @@ function processPlaceholders(statements) {
6662
7026
  if (type === "IfStatement") {
6663
7027
  liftedIfs.add(ancestor2);
6664
7028
  }
6665
- let m5;
6666
7029
  let m6;
7030
+ let m7;
6667
7031
  return type === "Call" || // Block, except for if/else blocks when condition already lifted
6668
- type === "BlockStatement" && !((m5 = ancestor2.parent, typeof m5 === "object" && m5 != null && "type" in m5 && m5.type === "IfStatement") && liftedIfs.has(ancestor2.parent)) && !((m6 = ancestor2.parent, typeof m6 === "object" && m6 != null && "type" in m6 && m6.type === "ElseClause" && "parent" in m6 && typeof m6.parent === "object" && m6.parent != null && "type" in m6.parent && m6.parent.type === "IfStatement") && liftedIfs.has(ancestor2.parent.parent)) || type === "PipelineExpression" || // Declaration
7032
+ type === "BlockStatement" && !((m6 = ancestor2.parent, typeof m6 === "object" && m6 != null && "type" in m6 && m6.type === "IfStatement") && liftedIfs.has(ancestor2.parent)) && !((m7 = ancestor2.parent, typeof m7 === "object" && m7 != null && "type" in m7 && m7.type === "ElseClause" && "parent" in m7 && typeof m7.parent === "object" && m7.parent != null && "type" in m7.parent && m7.parent.type === "IfStatement") && liftedIfs.has(ancestor2.parent.parent)) || type === "PipelineExpression" || // Declaration
6669
7033
  type === "Initializer" || // Right-hand side of assignment
6670
7034
  type === "AssignmentExpression" && findChildIndex(ancestor2, child2) === ancestor2.children.indexOf(ancestor2.expression) || type === "ReturnStatement" || type === "YieldExpression";
6671
7035
  }));
@@ -6741,11 +7105,11 @@ function processPlaceholders(statements) {
6741
7105
  for (const [ancestor, placeholders] of placeholderMap) {
6742
7106
  let ref = makeRef("$");
6743
7107
  let typeSuffix;
6744
- for (let i7 = 0, len6 = placeholders.length; i7 < len6; i7++) {
6745
- const placeholder = placeholders[i7];
7108
+ for (let i8 = 0, len7 = placeholders.length; i8 < len7; i8++) {
7109
+ const placeholder = placeholders[i8];
6746
7110
  typeSuffix ??= placeholder.typeSuffix;
6747
- let ref20;
6748
- replaceNode((ref20 = placeholder.children)[ref20.length - 1], ref);
7111
+ let ref22;
7112
+ replaceNode((ref22 = placeholder.children)[ref22.length - 1], ref);
6749
7113
  }
6750
7114
  const { parent } = ancestor;
6751
7115
  const body = maybeUnwrap(ancestor);
@@ -6766,16 +7130,16 @@ function processPlaceholders(statements) {
6766
7130
  }
6767
7131
  case "PipelineExpression": {
6768
7132
  const i = findChildIndex(parent, ancestor);
6769
- let ref21;
7133
+ let ref23;
6770
7134
  if (i === 1) {
6771
- ref21 = ancestor === parent.children[i];
7135
+ ref23 = ancestor === parent.children[i];
6772
7136
  } else if (i === 2) {
6773
- ref21 = ancestor === parent.children[i][findChildIndex(parent.children[i], ancestor)][3];
7137
+ ref23 = ancestor === parent.children[i][findChildIndex(parent.children[i], ancestor)][3];
6774
7138
  } else {
6775
- ref21 = void 0;
7139
+ ref23 = void 0;
6776
7140
  }
6777
7141
  ;
6778
- outer = ref21;
7142
+ outer = ref23;
6779
7143
  break;
6780
7144
  }
6781
7145
  case "AssignmentExpression":
@@ -6790,9 +7154,9 @@ function processPlaceholders(statements) {
6790
7154
  fnExp = makeLeftHandSideExpression(fnExp);
6791
7155
  }
6792
7156
  replaceNode(ancestor, fnExp, parent);
6793
- let ref22;
6794
- if (ref22 = getTrimmingSpace(body)) {
6795
- const ws = ref22;
7157
+ let ref24;
7158
+ if (ref24 = getTrimmingSpace(body)) {
7159
+ const ws = ref24;
6796
7160
  inplaceInsertTrimmingSpace(body, "");
6797
7161
  inplacePrepend(ws, fnExp);
6798
7162
  }
@@ -6837,8 +7201,8 @@ function reorderBindingRestProperty(props) {
6837
7201
  }
6838
7202
  ];
6839
7203
  }
6840
- let ref23;
6841
- if (Array.isArray(rest.delim) && (ref23 = rest.delim)[ref23.length - 1]?.token === ",") {
7204
+ let ref25;
7205
+ if (Array.isArray(rest.delim) && (ref25 = rest.delim)[ref25.length - 1]?.token === ",") {
6842
7206
  rest.delim = rest.delim.slice(0, -1);
6843
7207
  rest.children = [...rest.children.slice(0, -1), rest.delim];
6844
7208
  }
@@ -6863,9 +7227,9 @@ function replaceNodes(root, predicate, replacer) {
6863
7227
  return root;
6864
7228
  }
6865
7229
  }
6866
- for (let i8 = 0, len7 = array.length; i8 < len7; i8++) {
6867
- const i = i8;
6868
- const node = array[i8];
7230
+ for (let i9 = 0, len8 = array.length; i9 < len8; i9++) {
7231
+ const i = i9;
7232
+ const node = array[i9];
6869
7233
  if (!(node != null)) {
6870
7234
  return;
6871
7235
  }
@@ -6889,9 +7253,9 @@ function replaceNodesRecursive(root, predicate, replacer) {
6889
7253
  return root;
6890
7254
  }
6891
7255
  }
6892
- for (let i9 = 0, len8 = array.length; i9 < len8; i9++) {
6893
- const i = i9;
6894
- const node = array[i9];
7256
+ for (let i10 = 0, len9 = array.length; i10 < len9; i10++) {
7257
+ const i = i10;
7258
+ const node = array[i10];
6895
7259
  if (!(node != null)) {
6896
7260
  continue;
6897
7261
  }
@@ -7191,6 +7555,8 @@ var grammar = {
7191
7555
  UpcomingAssignment,
7192
7556
  ArrayLiteral,
7193
7557
  _ArrayLiteral,
7558
+ RangeDots,
7559
+ RangeEnd,
7194
7560
  RangeExpression,
7195
7561
  ArrayLiteralContent,
7196
7562
  NestedElementList,
@@ -7307,7 +7673,7 @@ var grammar = {
7307
7673
  IgnoreColon,
7308
7674
  TryStatement,
7309
7675
  CatchClause,
7310
- CatchBind,
7676
+ CatchBinding,
7311
7677
  FinallyClause,
7312
7678
  CatchParameter,
7313
7679
  Condition,
@@ -7651,6 +8017,7 @@ var grammar = {
7651
8017
  TypeSuffix,
7652
8018
  MaybeNestedType,
7653
8019
  MaybeNestedTypePrimary,
8020
+ MaybeNestedTypeUnary,
7654
8021
  ReturnTypeSuffix,
7655
8022
  ReturnType,
7656
8023
  TypePredicate,
@@ -8038,86 +8405,87 @@ var $R16 = (0, import_lib4.$R)(new RegExp("(?=true|false|yes|no|on|off)", "suy")
8038
8405
  var $R17 = (0, import_lib4.$R)(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
8039
8406
  var $R18 = (0, import_lib4.$R)(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
8040
8407
  var $R19 = (0, import_lib4.$R)(new RegExp("(?=\\[|\\s*[.\u2022])", "suy"));
8041
- var $R20 = (0, import_lib4.$R)(new RegExp("[ \\t]*", "suy"));
8042
- var $R21 = (0, import_lib4.$R)(new RegExp("[ \\t]+", "suy"));
8043
- var $R22 = (0, import_lib4.$R)(new RegExp("[!+-]?", "suy"));
8044
- var $R23 = (0, import_lib4.$R)(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
8045
- var $R24 = (0, import_lib4.$R)(new RegExp("[=>]", "suy"));
8046
- var $R25 = (0, import_lib4.$R)(new RegExp("(?=\\p{ID_Start}|[_$^\u226A\u226B\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2A76\u2A75\u2016\u2047&|*\\/!?%\xF7<>\u29FA+-])", "suy"));
8047
- var $R26 = (0, import_lib4.$R)(new RegExp("!\\^\\^?", "suy"));
8048
- var $R27 = (0, import_lib4.$R)(new RegExp("(?!\\+\\+|--)[!~+-](?!\\s)", "suy"));
8049
- var $R28 = (0, import_lib4.$R)(new RegExp("[:.]", "suy"));
8050
- var $R29 = (0, import_lib4.$R)(new RegExp("(?=for|if|loop|unless|until|while)", "suy"));
8051
- var $R30 = (0, import_lib4.$R)(new RegExp("(?=loop|comptime|do|for|until|while)", "suy"));
8052
- var $R31 = (0, import_lib4.$R)(new RegExp('[^;"\\s]+', "suy"));
8053
- var $R32 = (0, import_lib4.$R)(new RegExp("(?=[0-9.])", "suy"));
8054
- var $R33 = (0, import_lib4.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
8055
- var $R34 = (0, import_lib4.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))", "suy"));
8056
- var $R35 = (0, import_lib4.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?", "suy"));
8057
- var $R36 = (0, import_lib4.$R)(new RegExp("(?:\\.[0-9](?:_[0-9]|[0-9])*)", "suy"));
8058
- var $R37 = (0, import_lib4.$R)(new RegExp("(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)", "suy"));
8059
- var $R38 = (0, import_lib4.$R)(new RegExp("0[bB][01](?:[01]|_[01])*n?", "suy"));
8060
- var $R39 = (0, import_lib4.$R)(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*n?", "suy"));
8061
- var $R40 = (0, import_lib4.$R)(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?", "suy"));
8062
- var $R41 = (0, import_lib4.$R)(new RegExp("(?=[0-9])", "suy"));
8063
- var $R42 = (0, import_lib4.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)", "suy"));
8064
- var $R43 = (0, import_lib4.$R)(new RegExp('(?:\\\\.|[^"])*', "suy"));
8065
- var $R44 = (0, import_lib4.$R)(new RegExp("(?:\\\\.|[^'])*", "suy"));
8066
- var $R45 = (0, import_lib4.$R)(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
8067
- var $R46 = (0, import_lib4.$R)(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
8068
- var $R47 = (0, import_lib4.$R)(new RegExp('(?:\\\\.|#(?!\\{)|[^"#])+', "suy"));
8069
- var $R48 = (0, import_lib4.$R)(new RegExp("(?:\\\\.|[^\\]])*", "suy"));
8070
- var $R49 = (0, import_lib4.$R)(new RegExp("(?:\\\\.)", "suy"));
8071
- var $R50 = (0, import_lib4.$R)(new RegExp("[\\s]+", "suy"));
8072
- var $R51 = (0, import_lib4.$R)(new RegExp("\\/(?!\\/\\/)", "suy"));
8073
- var $R52 = (0, import_lib4.$R)(new RegExp("[^[\\/\\s#\\\\]+", "suy"));
8074
- var $R53 = (0, import_lib4.$R)(new RegExp("[*\\/\\r\\n]", "suy"));
8075
- var $R54 = (0, import_lib4.$R)(new RegExp("(?:\\\\.|[^[\\/\\r\\n])+", "suy"));
8076
- var $R55 = (0, import_lib4.$R)(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
8077
- var $R56 = (0, import_lib4.$R)(new RegExp("(?=[`'\"])", "suy"));
8078
- var $R57 = (0, import_lib4.$R)(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
8079
- var $R58 = (0, import_lib4.$R)(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
8080
- var $R59 = (0, import_lib4.$R)(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
8081
- var $R60 = (0, import_lib4.$R)(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
8082
- var $R61 = (0, import_lib4.$R)(new RegExp("(?:by)(?!\\p{ID_Continue})", "suy"));
8083
- var $R62 = (0, import_lib4.$R)(new RegExp("(?:of)(?!\\p{ID_Continue})", "suy"));
8084
- var $R63 = (0, import_lib4.$R)(new RegExp("(?:and|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|let|loop|new|not|null|or|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
8085
- var $R64 = (0, import_lib4.$R)(new RegExp("(?=\\/|#)", "suy"));
8086
- var $R65 = (0, import_lib4.$R)(new RegExp("\\/\\/(?!\\/)[^\\r\\n]*", "suy"));
8087
- var $R66 = (0, import_lib4.$R)(new RegExp(".", "suy"));
8088
- var $R67 = (0, import_lib4.$R)(new RegExp("#(?!##(?!#))([^\\r\\n]*)", "suy"));
8089
- var $R68 = (0, import_lib4.$R)(new RegExp("[^]*?###", "suy"));
8090
- var $R69 = (0, import_lib4.$R)(new RegExp("###(?!#)", "suy"));
8091
- var $R70 = (0, import_lib4.$R)(new RegExp("\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\/", "suy"));
8092
- var $R71 = (0, import_lib4.$R)(new RegExp("(?=[ \\t\\/\\\\])", "suy"));
8093
- var $R72 = (0, import_lib4.$R)(new RegExp("(?=\\s|\\/|#)", "suy"));
8094
- var $R73 = (0, import_lib4.$R)(new RegExp("(?!\\p{ID_Continue})", "suy"));
8095
- var $R74 = (0, import_lib4.$R)(new RegExp("[=:]", "suy"));
8096
- var $R75 = (0, import_lib4.$R)(new RegExp("['\u2019]s", "suy"));
8097
- var $R76 = (0, import_lib4.$R)(new RegExp("\\s", "suy"));
8098
- var $R77 = (0, import_lib4.$R)(new RegExp("(?=[<])", "suy"));
8099
- var $R78 = (0, import_lib4.$R)(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
8100
- var $R79 = (0, import_lib4.$R)(new RegExp("[!+-]", "suy"));
8101
- var $R80 = (0, import_lib4.$R)(new RegExp("[\\s>]|\\/>", "suy"));
8102
- var $R81 = (0, import_lib4.$R)(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
8103
- var $R82 = (0, import_lib4.$R)(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
8104
- var $R83 = (0, import_lib4.$R)(new RegExp("[<>]", "suy"));
8105
- var $R84 = (0, import_lib4.$R)(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
8106
- var $R85 = (0, import_lib4.$R)(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
8107
- var $R86 = (0, import_lib4.$R)(new RegExp("[^{}<>\\r\\n]+", "suy"));
8108
- var $R87 = (0, import_lib4.$R)(new RegExp("[+-]?", "suy"));
8109
- var $R88 = (0, import_lib4.$R)(new RegExp("(?=if|unless)", "suy"));
8110
- var $R89 = (0, import_lib4.$R)(new RegExp("[|&<!=\\-\u21D2\u2192]", "suy"));
8111
- var $R90 = (0, import_lib4.$R)(new RegExp("(extends|not|is)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
8112
- var $R91 = (0, import_lib4.$R)(new RegExp("const|in|out", "suy"));
8113
- var $R92 = (0, import_lib4.$R)(new RegExp("#![^\\r\\n]*", "suy"));
8114
- var $R93 = (0, import_lib4.$R)(new RegExp("[\\t ]*", "suy"));
8115
- var $R94 = (0, import_lib4.$R)(new RegExp("[\\s]*", "suy"));
8116
- var $R95 = (0, import_lib4.$R)(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([\\p{ID_Continue}.,+-]*))?", "suy"));
8117
- var $R96 = (0, import_lib4.$R)(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
8118
- var $R97 = (0, import_lib4.$R)(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
8119
- var $R98 = (0, import_lib4.$R)(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
8120
- var $R99 = (0, import_lib4.$R)(new RegExp("[^]*", "suy"));
8408
+ var $R20 = (0, import_lib4.$R)(new RegExp("([<>])(=?)|([\u2264\u2265])", "suy"));
8409
+ var $R21 = (0, import_lib4.$R)(new RegExp("[ \\t]*", "suy"));
8410
+ var $R22 = (0, import_lib4.$R)(new RegExp("[ \\t]+", "suy"));
8411
+ var $R23 = (0, import_lib4.$R)(new RegExp("[!+-]?", "suy"));
8412
+ var $R24 = (0, import_lib4.$R)(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
8413
+ var $R25 = (0, import_lib4.$R)(new RegExp("[=>]", "suy"));
8414
+ var $R26 = (0, import_lib4.$R)(new RegExp("(?=\\p{ID_Start}|[_$^\u226A\u226B\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2A76\u2A75\u2016\u2047&|*\\/!?%\xF7<>\u29FA+-])", "suy"));
8415
+ var $R27 = (0, import_lib4.$R)(new RegExp("!\\^\\^?", "suy"));
8416
+ var $R28 = (0, import_lib4.$R)(new RegExp("(?!\\+\\+|--)[!~+-](?!\\s)", "suy"));
8417
+ var $R29 = (0, import_lib4.$R)(new RegExp("[:.]", "suy"));
8418
+ var $R30 = (0, import_lib4.$R)(new RegExp("(?=for|if|loop|unless|until|while)", "suy"));
8419
+ var $R31 = (0, import_lib4.$R)(new RegExp("(?=loop|comptime|do|for|until|while)", "suy"));
8420
+ var $R32 = (0, import_lib4.$R)(new RegExp('[^;"\\s]+', "suy"));
8421
+ var $R33 = (0, import_lib4.$R)(new RegExp("(?=[0-9.])", "suy"));
8422
+ var $R34 = (0, import_lib4.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
8423
+ var $R35 = (0, import_lib4.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))", "suy"));
8424
+ var $R36 = (0, import_lib4.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?", "suy"));
8425
+ var $R37 = (0, import_lib4.$R)(new RegExp("(?:\\.[0-9](?:_[0-9]|[0-9])*)", "suy"));
8426
+ var $R38 = (0, import_lib4.$R)(new RegExp("(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)", "suy"));
8427
+ var $R39 = (0, import_lib4.$R)(new RegExp("0[bB][01](?:[01]|_[01])*n?", "suy"));
8428
+ var $R40 = (0, import_lib4.$R)(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*n?", "suy"));
8429
+ var $R41 = (0, import_lib4.$R)(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?", "suy"));
8430
+ var $R42 = (0, import_lib4.$R)(new RegExp("(?=[0-9])", "suy"));
8431
+ var $R43 = (0, import_lib4.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)", "suy"));
8432
+ var $R44 = (0, import_lib4.$R)(new RegExp('(?:\\\\.|[^"])*', "suy"));
8433
+ var $R45 = (0, import_lib4.$R)(new RegExp("(?:\\\\.|[^'])*", "suy"));
8434
+ var $R46 = (0, import_lib4.$R)(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
8435
+ var $R47 = (0, import_lib4.$R)(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
8436
+ var $R48 = (0, import_lib4.$R)(new RegExp('(?:\\\\.|#(?!\\{)|[^"#])+', "suy"));
8437
+ var $R49 = (0, import_lib4.$R)(new RegExp("(?:\\\\.|[^\\]])*", "suy"));
8438
+ var $R50 = (0, import_lib4.$R)(new RegExp("(?:\\\\.)", "suy"));
8439
+ var $R51 = (0, import_lib4.$R)(new RegExp("[\\s]+", "suy"));
8440
+ var $R52 = (0, import_lib4.$R)(new RegExp("\\/(?!\\/\\/)", "suy"));
8441
+ var $R53 = (0, import_lib4.$R)(new RegExp("[^[\\/\\s#\\\\]+", "suy"));
8442
+ var $R54 = (0, import_lib4.$R)(new RegExp("[*\\/\\r\\n]", "suy"));
8443
+ var $R55 = (0, import_lib4.$R)(new RegExp("(?:\\\\.|[^[\\/\\r\\n])+", "suy"));
8444
+ var $R56 = (0, import_lib4.$R)(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
8445
+ var $R57 = (0, import_lib4.$R)(new RegExp("(?=[`'\"])", "suy"));
8446
+ var $R58 = (0, import_lib4.$R)(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
8447
+ var $R59 = (0, import_lib4.$R)(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
8448
+ var $R60 = (0, import_lib4.$R)(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
8449
+ var $R61 = (0, import_lib4.$R)(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
8450
+ var $R62 = (0, import_lib4.$R)(new RegExp("(?:by)(?!\\p{ID_Continue})", "suy"));
8451
+ var $R63 = (0, import_lib4.$R)(new RegExp("(?:of)(?!\\p{ID_Continue})", "suy"));
8452
+ var $R64 = (0, import_lib4.$R)(new RegExp("(?:and|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|let|loop|new|not|null|or|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
8453
+ var $R65 = (0, import_lib4.$R)(new RegExp("(?=\\/|#)", "suy"));
8454
+ var $R66 = (0, import_lib4.$R)(new RegExp("\\/\\/(?!\\/)[^\\r\\n]*", "suy"));
8455
+ var $R67 = (0, import_lib4.$R)(new RegExp(".", "suy"));
8456
+ var $R68 = (0, import_lib4.$R)(new RegExp("#(?!##(?!#))([^\\r\\n]*)", "suy"));
8457
+ var $R69 = (0, import_lib4.$R)(new RegExp("[^]*?###", "suy"));
8458
+ var $R70 = (0, import_lib4.$R)(new RegExp("###(?!#)", "suy"));
8459
+ var $R71 = (0, import_lib4.$R)(new RegExp("\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\/", "suy"));
8460
+ var $R72 = (0, import_lib4.$R)(new RegExp("(?=[ \\t\\/\\\\])", "suy"));
8461
+ var $R73 = (0, import_lib4.$R)(new RegExp("(?=\\s|\\/|#)", "suy"));
8462
+ var $R74 = (0, import_lib4.$R)(new RegExp("(?!\\p{ID_Continue})", "suy"));
8463
+ var $R75 = (0, import_lib4.$R)(new RegExp("[=:]", "suy"));
8464
+ var $R76 = (0, import_lib4.$R)(new RegExp("['\u2019]s", "suy"));
8465
+ var $R77 = (0, import_lib4.$R)(new RegExp("\\s", "suy"));
8466
+ var $R78 = (0, import_lib4.$R)(new RegExp("(?=[<])", "suy"));
8467
+ var $R79 = (0, import_lib4.$R)(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
8468
+ var $R80 = (0, import_lib4.$R)(new RegExp("[!+-]", "suy"));
8469
+ var $R81 = (0, import_lib4.$R)(new RegExp("[\\s>]|\\/>", "suy"));
8470
+ var $R82 = (0, import_lib4.$R)(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
8471
+ var $R83 = (0, import_lib4.$R)(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
8472
+ var $R84 = (0, import_lib4.$R)(new RegExp("[<>]", "suy"));
8473
+ var $R85 = (0, import_lib4.$R)(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
8474
+ var $R86 = (0, import_lib4.$R)(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
8475
+ var $R87 = (0, import_lib4.$R)(new RegExp("[^{}<>\\r\\n]+", "suy"));
8476
+ var $R88 = (0, import_lib4.$R)(new RegExp("[+-]?", "suy"));
8477
+ var $R89 = (0, import_lib4.$R)(new RegExp("(?=if|unless)", "suy"));
8478
+ var $R90 = (0, import_lib4.$R)(new RegExp("[|&<!=\\-\u21D2\u2192]", "suy"));
8479
+ var $R91 = (0, import_lib4.$R)(new RegExp("(extends|not|is)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
8480
+ var $R92 = (0, import_lib4.$R)(new RegExp("const|in|out", "suy"));
8481
+ var $R93 = (0, import_lib4.$R)(new RegExp("#![^\\r\\n]*", "suy"));
8482
+ var $R94 = (0, import_lib4.$R)(new RegExp("[\\t ]*", "suy"));
8483
+ var $R95 = (0, import_lib4.$R)(new RegExp("[\\s]*", "suy"));
8484
+ var $R96 = (0, import_lib4.$R)(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([\\p{ID_Continue}.,+-]*))?", "suy"));
8485
+ var $R97 = (0, import_lib4.$R)(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
8486
+ var $R98 = (0, import_lib4.$R)(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
8487
+ var $R99 = (0, import_lib4.$R)(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
8488
+ var $R100 = (0, import_lib4.$R)(new RegExp("[^]*", "suy"));
8121
8489
  var Program$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(Reset, Init, (0, import_lib4.$E)(EOS), TopLevelStatements, __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8122
8490
  var reset = $1;
8123
8491
  var init = $2;
@@ -8320,7 +8688,7 @@ var ExplicitArguments$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(OpenParen, Al
8320
8688
  function ExplicitArguments(ctx, state2) {
8321
8689
  return (0, import_lib4.$EVENT)(ctx, state2, "ExplicitArguments", ExplicitArguments$0);
8322
8690
  }
8323
- var ApplicationStart$0 = (0, import_lib4.$S)(IndentedApplicationAllowed, (0, import_lib4.$Y)((0, import_lib4.$S)(IndentedFurther, (0, import_lib4.$N)(IdentifierBinaryOp))), (0, import_lib4.$N)(IndentedTrailingMemberExpression));
8691
+ var ApplicationStart$0 = (0, import_lib4.$S)(IndentedApplicationAllowed, (0, import_lib4.$Y)((0, import_lib4.$S)(IndentedFurther, (0, import_lib4.$N)(IdentifierBinaryOp), (0, import_lib4.$N)(ReservedBinary))), (0, import_lib4.$N)(IndentedTrailingMemberExpression));
8324
8692
  var ApplicationStart$1 = (0, import_lib4.$S)((0, import_lib4.$N)(EOS), (0, import_lib4.$Y)((0, import_lib4.$S)(_, (0, import_lib4.$C)(BracedApplicationAllowed, (0, import_lib4.$N)((0, import_lib4.$EXPECT)($L1, 'ApplicationStart "{"'))), (0, import_lib4.$N)(ForbiddenImplicitCalls))));
8325
8693
  var ApplicationStart$$ = [ApplicationStart$0, ApplicationStart$1];
8326
8694
  function ApplicationStart(ctx, state2) {
@@ -8489,11 +8857,15 @@ var BinaryOpExpression$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(UnaryExpress
8489
8857
  function BinaryOpExpression(ctx, state2) {
8490
8858
  return (0, import_lib4.$EVENT)(ctx, state2, "BinaryOpExpression", BinaryOpExpression$0);
8491
8859
  }
8492
- var BinaryOpNotDedented$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$C)(NestedBinaryOpAllowed, (0, import_lib4.$N)(Nested)), NotDedented), function(value) {
8860
+ var BinaryOpNotDedented$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$N)(NewlineBinaryOpAllowed), (0, import_lib4.$E)(_)), function(value) {
8861
+ return value[1];
8862
+ });
8863
+ var BinaryOpNotDedented$1 = (0, import_lib4.$T)((0, import_lib4.$S)(NewlineBinaryOpAllowed, (0, import_lib4.$C)(NestedBinaryOpAllowed, (0, import_lib4.$N)(Nested)), NotDedented), function(value) {
8493
8864
  return value[1];
8494
8865
  });
8866
+ var BinaryOpNotDedented$$ = [BinaryOpNotDedented$0, BinaryOpNotDedented$1];
8495
8867
  function BinaryOpNotDedented(ctx, state2) {
8496
- return (0, import_lib4.$EVENT)(ctx, state2, "BinaryOpNotDedented", BinaryOpNotDedented$0);
8868
+ return (0, import_lib4.$EVENT_C)(ctx, state2, "BinaryOpNotDedented", BinaryOpNotDedented$$);
8497
8869
  }
8498
8870
  var BinaryOpRHS$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(BinaryOpNotDedented, IsLike, (0, import_lib4.$E)(_), PatternExpressionList), function($skip, $loc, $0, $1, $2, $3, $4) {
8499
8871
  var ws1 = $1;
@@ -8634,8 +9006,15 @@ var TypePostfix$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(_, NWTypePostfix),
8634
9006
  var postfix = $2;
8635
9007
  return prepend(ws, postfix);
8636
9008
  });
9009
+ var TypePostfix$1 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$Y)(EOS), BinaryOpNotDedented, (0, import_lib4.$E)(_), NWTypePostfix), function($skip, $loc, $0, $1, $2, $3, $4) {
9010
+ var indent = $2;
9011
+ var ws = $3;
9012
+ var postfix = $4;
9013
+ return prepend(ws || " ", postfix);
9014
+ });
9015
+ var TypePostfix$$ = [TypePostfix$0, TypePostfix$1];
8637
9016
  function TypePostfix(ctx, state2) {
8638
- return (0, import_lib4.$EVENT)(ctx, state2, "TypePostfix", TypePostfix$0);
9017
+ return (0, import_lib4.$EVENT_C)(ctx, state2, "TypePostfix", TypePostfix$$);
8639
9018
  }
8640
9019
  var Tuple$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L8, 'Tuple "tuple"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
8641
9020
  return {
@@ -9697,11 +10076,12 @@ var MemberBracketContent$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(OpenBracke
9697
10076
  var ws = $3;
9698
10077
  var close = $4;
9699
10078
  if (expression.type === "SliceParameters") {
9700
- const { start, end, children } = expression;
10079
+ const { start, end, reversed, children } = expression;
9701
10080
  return {
9702
10081
  type: "SliceExpression",
9703
10082
  start,
9704
10083
  end,
10084
+ reversed,
9705
10085
  children: [
9706
10086
  { ...open, token: ".slice(" },
9707
10087
  ...children,
@@ -9718,20 +10098,44 @@ var MemberBracketContent$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(OpenBracke
9718
10098
  function MemberBracketContent(ctx, state2) {
9719
10099
  return (0, import_lib4.$EVENT)(ctx, state2, "MemberBracketContent", MemberBracketContent$0);
9720
10100
  }
9721
- var SliceParameters$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(Expression, __, (0, import_lib4.$C)(DotDotDot, DotDot), (0, import_lib4.$E)(Expression)), function($skip, $loc, $0, $1, $2, $3, $4) {
9722
- var start = $1;
9723
- var ws = $2;
9724
- var sep = $3;
9725
- var end = $4;
9726
- const inclusive = sep.token === "..";
10101
+ var SliceParameters$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(Loc, (0, import_lib4.$E)(Expression), __, RangeDots, Loc, (0, import_lib4.$E)(Expression)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
10102
+ var ls = $1;
10103
+ var start = $2;
10104
+ var ws = $3;
10105
+ var dots = $4;
10106
+ var le = $5;
10107
+ var end = $6;
10108
+ const reversed = dots.increasing === false;
10109
+ const sign = reversed ? "-" : "+";
9727
10110
  let children;
10111
+ start ??= {
10112
+ $loc: ls.$loc,
10113
+ token: reversed ? "-1" : "0"
10114
+ };
10115
+ if (!end) {
10116
+ if (reversed) {
10117
+ end = {
10118
+ $loc: le.$loc,
10119
+ token: "0"
10120
+ };
10121
+ } else if (!dots.right.inclusive && !dots.triple) {
10122
+ end = {
10123
+ $loc: le.$loc,
10124
+ token: "-1"
10125
+ };
10126
+ }
10127
+ }
10128
+ if (!dots.left.inclusive) {
10129
+ start = [makeLeftHandSideExpression(start), ` ${sign} 1`];
10130
+ }
9728
10131
  if (end) {
9729
10132
  const inc = [];
9730
- if (inclusive) {
9731
- end = ["1 + ", makeLeftHandSideExpression(end)];
9732
- inc.push(" || 1/0");
10133
+ if (dots.right.inclusive) {
10134
+ end = [makeLeftHandSideExpression(end), ` ${sign} 1`];
10135
+ if (!reversed)
10136
+ inc.push(" || 1/0");
9733
10137
  }
9734
- children = [start, [...ws, { ...sep, token: ", " }], [end, ...inc]];
10138
+ children = [start, [...ws, dots.children[0], { token: ", ", $loc: dots.$loc }], [dots.children[1], end, ...inc]];
9735
10139
  } else {
9736
10140
  children = [start, ws];
9737
10141
  }
@@ -9739,48 +10143,12 @@ var SliceParameters$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(Expression, __,
9739
10143
  type: "SliceParameters",
9740
10144
  start,
9741
10145
  end,
10146
+ reversed,
9742
10147
  children
9743
10148
  };
9744
10149
  });
9745
- var SliceParameters$1 = (0, import_lib4.$TS)((0, import_lib4.$S)(Loc, __, (0, import_lib4.$C)(DotDotDot, DotDot), Expression), function($skip, $loc, $0, $1, $2, $3, $4) {
9746
- var l = $1;
9747
- var ws = $2;
9748
- var sep = $3;
9749
- var end = $4;
9750
- const inclusive = sep.token === "..";
9751
- const inc = [];
9752
- if (inclusive) {
9753
- end = ["1 + ", end];
9754
- inc.push(" || 1/0");
9755
- }
9756
- const start = {
9757
- $loc: l.$loc,
9758
- token: "0"
9759
- };
9760
- return {
9761
- type: "SliceParameters",
9762
- start,
9763
- end,
9764
- children: [start, [...ws, { ...sep, token: ", " }], [end, ...inc]]
9765
- };
9766
- });
9767
- var SliceParameters$2 = (0, import_lib4.$TS)((0, import_lib4.$S)(Loc, __, (0, import_lib4.$C)(DotDot, DotDotDot), (0, import_lib4.$Y)((0, import_lib4.$S)(__, CloseBracket))), function($skip, $loc, $0, $1, $2, $3, $4) {
9768
- var l = $1;
9769
- var ws = $2;
9770
- const start = {
9771
- $loc: l.$loc,
9772
- token: "0"
9773
- };
9774
- return {
9775
- type: "SliceParameters",
9776
- start,
9777
- end: void 0,
9778
- children: [start, ws]
9779
- };
9780
- });
9781
- var SliceParameters$$ = [SliceParameters$0, SliceParameters$1, SliceParameters$2];
9782
10150
  function SliceParameters(ctx, state2) {
9783
- return (0, import_lib4.$EVENT_C)(ctx, state2, "SliceParameters", SliceParameters$$);
10151
+ return (0, import_lib4.$EVENT)(ctx, state2, "SliceParameters", SliceParameters$0);
9784
10152
  }
9785
10153
  var AccessStart$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$E)(PropertyAccessModifier), Dot, (0, import_lib4.$N)((0, import_lib4.$EXPECT)($R11, "AccessStart /[.\\s]/"))), function($skip, $loc, $0, $1, $2, $3) {
9786
10154
  var modifier = $1;
@@ -11243,10 +11611,7 @@ var SingleLineStatements$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(ForbidNewl
11243
11611
  if (last)
11244
11612
  expressions.push(last);
11245
11613
  const maybeComment = expressions.at(-1)?.[2]?.children?.[2]?.at(-1);
11246
- let hasTrailingComment = false;
11247
- if (maybeComment?.type === "Comment" && maybeComment.token.startsWith("//")) {
11248
- hasTrailingComment = true;
11249
- }
11614
+ const hasTrailingComment = maybeComment?.type === "Comment" && maybeComment.token.startsWith("//");
11250
11615
  const children = [expressions];
11251
11616
  if (hasTrailingComment)
11252
11617
  children.push("\n");
@@ -11445,70 +11810,83 @@ var _ArrayLiteral$$ = [_ArrayLiteral$0, _ArrayLiteral$1, _ArrayLiteral$2];
11445
11810
  function _ArrayLiteral(ctx, state2) {
11446
11811
  return (0, import_lib4.$EVENT_C)(ctx, state2, "_ArrayLiteral", _ArrayLiteral$$);
11447
11812
  }
11448
- var RangeExpression$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(Expression, __, (0, import_lib4.$C)(DotDotDot, DotDot), Expression), function($skip, $loc, $0, $1, $2, $3, $4) {
11449
- var s = $1;
11450
- var ws = $2;
11451
- var range = $3;
11452
- var e = $4;
11453
- const inclusive = range.token === "..";
11454
- range.token = ",";
11455
- if (s.type === "Literal" && e.type === "Literal") {
11456
- const start = literalValue(s);
11457
- const end = literalValue(e);
11458
- if (typeof start !== typeof end) {
11459
- throw new Error("Range start and end must be of the same type");
11460
- }
11461
- if (typeof start === "string") {
11462
- if (start.length !== 1 || end.length !== 1) {
11463
- throw new Error("String range start and end must be a single character");
11464
- }
11465
- const startCode = start.charCodeAt(0);
11466
- const endCode = end.charCodeAt(0);
11467
- const step = startCode < endCode ? 1 : -1;
11468
- const length = Math.abs(endCode - startCode) + (inclusive ? 1 : 0);
11469
- if (length <= 26) {
11470
- return {
11471
- type: "RangeExpression",
11472
- children: ["[", Array.from({ length }, (_2, i) => JSON.stringify(String.fromCharCode(startCode + i * step))).join(", "), "]"],
11473
- inclusive,
11474
- start: s,
11475
- end: e
11476
- };
11477
- } else {
11478
- const inclusiveAdjust2 = inclusive ? " + 1" : "";
11479
- const children2 = ["((s, e) => {let step = e > s ? 1 : -1; return Array.from({length: Math.abs(e - s)", inclusiveAdjust2, "}, (_, i) => String.fromCharCode(s + i * step))})(", startCode.toString(), ws, range, endCode.toString(), ")"];
11480
- return {
11481
- type: "RangeExpression",
11482
- children: children2,
11483
- inclusive,
11484
- start: s,
11485
- end: e
11486
- };
11487
- }
11488
- } else if (typeof start === "number") {
11489
- const step = end > start ? 1 : -1;
11490
- const length = Math.abs(end - start) + (inclusive ? 1 : 0);
11491
- if (length <= 20) {
11492
- return {
11493
- type: "RangeExpression",
11494
- children: ["[", Array.from({ length }, (_2, i) => start + i * step).join(", "), "]"],
11495
- inclusive,
11496
- start: s,
11497
- end: e
11498
- };
11499
- }
11813
+ var RangeDots$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(DotDotDot), function($skip, $loc, $0, $1) {
11814
+ return {
11815
+ ...$1,
11816
+ type: "RangeDots",
11817
+ left: { inclusive: true, raw: "" },
11818
+ right: { inclusive: false, raw: "." },
11819
+ increasing: void 0,
11820
+ triple: true,
11821
+ children: []
11822
+ };
11823
+ });
11824
+ var RangeDots$1 = (0, import_lib4.$TS)((0, import_lib4.$S)(RangeEnd, (0, import_lib4.$E)(_), DotDot, (0, import_lib4.$E)(_), RangeEnd), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
11825
+ var left = $1;
11826
+ var ws1 = $2;
11827
+ var dots = $3;
11828
+ var ws2 = $4;
11829
+ var right = $5;
11830
+ const increasing = left.increasing ?? right.increasing;
11831
+ if (left.increasing != null && right.increasing != null && left.increasing !== right.increasing) {
11832
+ const error = {
11833
+ type: "Error",
11834
+ message: `${left.raw}..${right.raw} uses inconsistent < vs. >`,
11835
+ $loc: dots.$loc
11836
+ };
11837
+ return {
11838
+ ...dots,
11839
+ left,
11840
+ right,
11841
+ increasing,
11842
+ error,
11843
+ type: "RangeDots",
11844
+ children: [error]
11845
+ };
11846
+ }
11847
+ return {
11848
+ ...dots,
11849
+ left,
11850
+ right,
11851
+ increasing,
11852
+ type: "RangeDots",
11853
+ children: [ws1, ws2]
11854
+ };
11855
+ });
11856
+ var RangeDots$$ = [RangeDots$0, RangeDots$1];
11857
+ function RangeDots(ctx, state2) {
11858
+ return (0, import_lib4.$EVENT_C)(ctx, state2, "RangeDots", RangeDots$$);
11859
+ }
11860
+ var RangeEnd$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R20, "RangeEnd /([<>])(=?)|([\u2264\u2265])/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
11861
+ let dir = $1, equal = $2, unicode = $3;
11862
+ if (unicode) {
11863
+ equal = "=";
11864
+ if (unicode === "\u2264") {
11865
+ dir = "<";
11866
+ } else if (unicode === "\u2265") {
11867
+ dir = ">";
11500
11868
  }
11501
11869
  }
11502
- const inclusiveAdjust = inclusive ? " + 1" : "";
11503
- const children = ["((s, e) => {let step = e > s ? 1 : -1; return Array.from({length: Math.abs(e - s)", inclusiveAdjust, "}, (_, i) => s + i * step)})(", s, ws, range, e, ")"];
11504
11870
  return {
11505
- type: "RangeExpression",
11506
- children,
11507
- inclusive,
11508
- start: s,
11509
- end: e
11871
+ increasing: dir === "<",
11872
+ inclusive: equal === "=",
11873
+ raw: $0
11510
11874
  };
11511
11875
  });
11876
+ var RangeEnd$1 = (0, import_lib4.$T)((0, import_lib4.$EXPECT)($L0, 'RangeEnd ""'), function(value) {
11877
+ return { "increasing": void 0, "inclusive": true, "raw": "" };
11878
+ });
11879
+ var RangeEnd$$ = [RangeEnd$0, RangeEnd$1];
11880
+ function RangeEnd(ctx, state2) {
11881
+ return (0, import_lib4.$EVENT_C)(ctx, state2, "RangeEnd", RangeEnd$$);
11882
+ }
11883
+ var RangeExpression$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(Expression, __, RangeDots, Expression), function($skip, $loc, $0, $1, $2, $3, $4) {
11884
+ var start = $1;
11885
+ var ws = $2;
11886
+ var range = $3;
11887
+ var end = $4;
11888
+ return processRangeExpression(start, ws, range, end);
11889
+ });
11512
11890
  var RangeExpression$1 = (0, import_lib4.$TS)((0, import_lib4.$S)(Expression, __, DotDot, (0, import_lib4.$Y)((0, import_lib4.$S)(__, CloseBracket))), function($skip, $loc, $0, $1, $2, $3, $4) {
11513
11891
  var s = $1;
11514
11892
  var ws = $2;
@@ -11523,7 +11901,10 @@ var RangeExpression$1 = (0, import_lib4.$TS)((0, import_lib4.$S)(Expression, __,
11523
11901
  type: "Identifier",
11524
11902
  name: "Infinity",
11525
11903
  children: ["Infinity"]
11526
- }
11904
+ },
11905
+ left: { inclusive: true, raw: "" },
11906
+ right: { inclusive: true, raw: "" },
11907
+ increasing: true
11527
11908
  };
11528
11909
  });
11529
11910
  var RangeExpression$$ = [RangeExpression$0, RangeExpression$1];
@@ -11737,7 +12118,7 @@ var ArrayBulletDelimiter$$ = [ArrayBulletDelimiter$0, ArrayBulletDelimiter$1];
11737
12118
  function ArrayBulletDelimiter(ctx, state2) {
11738
12119
  return (0, import_lib4.$EVENT_C)(ctx, state2, "ArrayBulletDelimiter", ArrayBulletDelimiter$$);
11739
12120
  }
11740
- var BulletIndent$0 = (0, import_lib4.$TV)((0, import_lib4.$C)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L47, 'BulletIndent "\u2022"'), (0, import_lib4.$EXPECT)($R20, "BulletIndent /[ \\t]*/")), (0, import_lib4.$S)((0, import_lib4.$EXPECT)($L7, 'BulletIndent "."'), (0, import_lib4.$EXPECT)($R21, "BulletIndent /[ \\t]+/"))), function($skip, $loc, $0, $1) {
12121
+ var BulletIndent$0 = (0, import_lib4.$TV)((0, import_lib4.$C)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L47, 'BulletIndent "\u2022"'), (0, import_lib4.$EXPECT)($R21, "BulletIndent /[ \\t]*/")), (0, import_lib4.$S)((0, import_lib4.$EXPECT)($L7, 'BulletIndent "."'), (0, import_lib4.$EXPECT)($R22, "BulletIndent /[ \\t]+/"))), function($skip, $loc, $0, $1) {
11741
12122
  const [bullet, ws] = $1;
11742
12123
  const indent = {
11743
12124
  token: " " + ws,
@@ -11953,7 +12334,7 @@ var PropertyDefinition$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_l
11953
12334
  var prop = $2;
11954
12335
  return prepend(ws, prop);
11955
12336
  });
11956
- var PropertyDefinition$1 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$E)(_), (0, import_lib4.$TEXT)((0, import_lib4.$EXPECT)($R22, "PropertyDefinition /[!+-]?/")), PropertyName, (0, import_lib4.$Y)(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
12337
+ var PropertyDefinition$1 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$E)(_), (0, import_lib4.$TEXT)((0, import_lib4.$EXPECT)($R23, "PropertyDefinition /[!+-]?/")), PropertyName, (0, import_lib4.$Y)(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
11957
12338
  var ws = $1;
11958
12339
  var toggle = $2;
11959
12340
  var id = $3;
@@ -12104,7 +12485,7 @@ function SnugNamedProperty(ctx, state2) {
12104
12485
  var PropertyName$0 = NumericLiteral;
12105
12486
  var PropertyName$1 = ComputedPropertyName;
12106
12487
  var PropertyName$2 = StringLiteral;
12107
- var PropertyName$3 = (0, import_lib4.$TV)((0, import_lib4.$TEXT)((0, import_lib4.$S)((0, import_lib4.$E)(IdentifierName), (0, import_lib4.$EXPECT)($L24, 'PropertyName "-"'), (0, import_lib4.$EXPECT)($R23, "PropertyName /(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"))), function($skip, $loc, $0, $1) {
12488
+ var PropertyName$3 = (0, import_lib4.$TV)((0, import_lib4.$TEXT)((0, import_lib4.$S)((0, import_lib4.$E)(IdentifierName), (0, import_lib4.$EXPECT)($L24, 'PropertyName "-"'), (0, import_lib4.$EXPECT)($R24, "PropertyName /(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"))), function($skip, $loc, $0, $1) {
12108
12489
  return {
12109
12490
  token: `"${$1}"`,
12110
12491
  $loc
@@ -12503,7 +12884,7 @@ var AssignmentOpSymbol$22 = (0, import_lib4.$T)((0, import_lib4.$EXPECT)($L71, '
12503
12884
  var AssignmentOpSymbol$23 = (0, import_lib4.$T)((0, import_lib4.$EXPECT)($L72, 'AssignmentOpSymbol "?="'), function(value) {
12504
12885
  return "??=";
12505
12886
  });
12506
- var AssignmentOpSymbol$24 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L3, 'AssignmentOpSymbol "="'), (0, import_lib4.$N)((0, import_lib4.$EXPECT)($R24, "AssignmentOpSymbol /[=>]/"))), function(value) {
12887
+ var AssignmentOpSymbol$24 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L3, 'AssignmentOpSymbol "="'), (0, import_lib4.$N)((0, import_lib4.$EXPECT)($R25, "AssignmentOpSymbol /[=>]/"))), function(value) {
12507
12888
  return value[0];
12508
12889
  });
12509
12890
  var AssignmentOpSymbol$25 = (0, import_lib4.$T)((0, import_lib4.$S)(CoffeeWordAssignmentOp), function(value) {
@@ -12556,7 +12937,7 @@ var IdentifierBinaryOp$0 = (0, import_lib4.$TV)(Identifier, function($skip, $loc
12556
12937
  function IdentifierBinaryOp(ctx, state2) {
12557
12938
  return (0, import_lib4.$EVENT)(ctx, state2, "IdentifierBinaryOp", IdentifierBinaryOp$0);
12558
12939
  }
12559
- var BinaryOp$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R25, "BinaryOp /(?=\\p{ID_Start}|[_$^\u226A\u226B\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2A76\u2A75\u2016\u2047&|*\\/!?%\xF7<>\u29FA+-])/"), _BinaryOp), function(value) {
12940
+ var BinaryOp$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R26, "BinaryOp /(?=\\p{ID_Start}|[_$^\u226A\u226B\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2A76\u2A75\u2016\u2047&|*\\/!?%\xF7<>\u29FA+-])/"), _BinaryOp), function(value) {
12560
12941
  var op = value[1];
12561
12942
  return op;
12562
12943
  });
@@ -12701,7 +13082,7 @@ var BinaryOpSymbol$35 = (0, import_lib4.$TV)((0, import_lib4.$C)((0, import_lib4
12701
13082
  prec: "^^"
12702
13083
  };
12703
13084
  });
12704
- var BinaryOpSymbol$36 = (0, import_lib4.$TV)((0, import_lib4.$C)((0, import_lib4.$EXPECT)($R26, "BinaryOpSymbol /!\\^\\^?/"), (0, import_lib4.$S)((0, import_lib4.$EXPECT)($L109, 'BinaryOpSymbol "xnor"'), NonIdContinue)), function($skip, $loc, $0, $1) {
13085
+ var BinaryOpSymbol$36 = (0, import_lib4.$TV)((0, import_lib4.$C)((0, import_lib4.$EXPECT)($R27, "BinaryOpSymbol /!\\^\\^?/"), (0, import_lib4.$S)((0, import_lib4.$EXPECT)($L109, 'BinaryOpSymbol "xnor"'), NonIdContinue)), function($skip, $loc, $0, $1) {
12705
13086
  return {
12706
13087
  call: getHelperRef("xnor"),
12707
13088
  special: true,
@@ -12865,24 +13246,24 @@ var Xor$$ = [Xor$0, Xor$1];
12865
13246
  function Xor(ctx, state2) {
12866
13247
  return (0, import_lib4.$EVENT_C)(ctx, state2, "Xor", Xor$$);
12867
13248
  }
12868
- var Xnor$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R26, "Xnor /!\\^\\^?/"));
13249
+ var Xnor$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R27, "Xnor /!\\^\\^?/"));
12869
13250
  var Xnor$1 = (0, import_lib4.$EXPECT)($L109, 'Xnor "xnor"');
12870
13251
  var Xnor$$ = [Xnor$0, Xnor$1];
12871
13252
  function Xnor(ctx, state2) {
12872
13253
  return (0, import_lib4.$EVENT_C)(ctx, state2, "Xnor", Xnor$$);
12873
13254
  }
12874
- var UnaryOp$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R27, "UnaryOp /(?!\\+\\+|--)[!~+-](?!\\s)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13255
+ var UnaryOp$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R28, "UnaryOp /(?!\\+\\+|--)[!~+-](?!\\s)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12875
13256
  return { $loc, token: $0 };
12876
13257
  });
12877
13258
  var UnaryOp$1 = AwaitOp;
12878
- var UnaryOp$2 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$C)(Delete, Void, Typeof), (0, import_lib4.$N)((0, import_lib4.$EXPECT)($R28, "UnaryOp /[:.]/")), (0, import_lib4.$E)(_)), function($skip, $loc, $0, $1, $2, $3) {
13259
+ var UnaryOp$2 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$C)(Delete, Void, Typeof), (0, import_lib4.$N)((0, import_lib4.$EXPECT)($R29, "UnaryOp /[:.]/")), (0, import_lib4.$E)(_)), function($skip, $loc, $0, $1, $2, $3) {
12879
13260
  var op = $1;
12880
13261
  var ws = $3;
12881
13262
  if (!ws)
12882
13263
  return [op, [" "]];
12883
13264
  return [op, ws];
12884
13265
  });
12885
- var UnaryOp$3 = (0, import_lib4.$T)((0, import_lib4.$S)(Not, (0, import_lib4.$N)((0, import_lib4.$EXPECT)($R28, "UnaryOp /[:.]/")), (0, import_lib4.$E)((0, import_lib4.$EXPECT)($L18, 'UnaryOp " "')), (0, import_lib4.$E)(_)), function(value) {
13266
+ var UnaryOp$3 = (0, import_lib4.$T)((0, import_lib4.$S)(Not, (0, import_lib4.$N)((0, import_lib4.$EXPECT)($R29, "UnaryOp /[:.]/")), (0, import_lib4.$E)((0, import_lib4.$EXPECT)($L18, 'UnaryOp " "')), (0, import_lib4.$E)(_)), function(value) {
12886
13267
  return [value[0], value[3]];
12887
13268
  });
12888
13269
  var UnaryOp$$ = [UnaryOp$0, UnaryOp$1, UnaryOp$2, UnaryOp$3];
@@ -12969,7 +13350,7 @@ var PostfixedCommaExpression$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(Postfi
12969
13350
  function PostfixedCommaExpression(ctx, state2) {
12970
13351
  return (0, import_lib4.$EVENT)(ctx, state2, "PostfixedCommaExpression", PostfixedCommaExpression$0);
12971
13352
  }
12972
- var PostfixStatement$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R29, "PostfixStatement /(?=for|if|loop|unless|until|while)/"), _PostfixStatement), function(value) {
13353
+ var PostfixStatement$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R30, "PostfixStatement /(?=for|if|loop|unless|until|while)/"), _PostfixStatement), function(value) {
12973
13354
  return value[1];
12974
13355
  });
12975
13356
  function PostfixStatement(ctx, state2) {
@@ -13009,7 +13390,9 @@ function Statement(ctx, state2) {
13009
13390
  }
13010
13391
  var ShouldExpressionize$0 = AllowedTrailingCallExpressions;
13011
13392
  var ShouldExpressionize$1 = (0, import_lib4.$S)(NotDedented, Pipe);
13012
- var ShouldExpressionize$$ = [ShouldExpressionize$0, ShouldExpressionize$1];
13393
+ var ShouldExpressionize$2 = BinaryOpRHS;
13394
+ var ShouldExpressionize$3 = UnaryPostfix;
13395
+ var ShouldExpressionize$$ = [ShouldExpressionize$0, ShouldExpressionize$1, ShouldExpressionize$2, ShouldExpressionize$3];
13013
13396
  function ShouldExpressionize(ctx, state2) {
13014
13397
  return (0, import_lib4.$EVENT_C)(ctx, state2, "ShouldExpressionize", ShouldExpressionize$$);
13015
13398
  }
@@ -13160,7 +13543,7 @@ var IfClause$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$C)(If
13160
13543
  function IfClause(ctx, state2) {
13161
13544
  return (0, import_lib4.$EVENT)(ctx, state2, "IfClause", IfClause$0);
13162
13545
  }
13163
- var IterationStatement$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R30, "IterationStatement /(?=loop|comptime|do|for|until|while)/"), _IterationStatement), function(value) {
13546
+ var IterationStatement$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R31, "IterationStatement /(?=loop|comptime|do|for|until|while)/"), _IterationStatement), function(value) {
13164
13547
  return value[1];
13165
13548
  });
13166
13549
  function IterationStatement(ctx, state2) {
@@ -13712,12 +14095,14 @@ var CaseClause$3 = (0, import_lib4.$TS)((0, import_lib4.$S)(Default, ImpliedColo
13712
14095
  };
13713
14096
  });
13714
14097
  var CaseClause$4 = (0, import_lib4.$TS)((0, import_lib4.$S)(Else, ImpliedColon, (0, import_lib4.$C)(ThenClause, BracedBlock, EmptyBlock)), function($skip, $loc, $0, $1, $2, $3) {
14098
+ var e = $1;
14099
+ var colon = $2;
13715
14100
  var block = $3;
13716
- $1.token = "default";
14101
+ e = { ...e, token: "default" };
13717
14102
  return {
13718
14103
  type: "DefaultClause",
13719
14104
  block,
13720
- children: $0
14105
+ children: [e, colon, block]
13721
14106
  };
13722
14107
  });
13723
14108
  var CaseClause$$ = [CaseClause$0, CaseClause$1, CaseClause$2, CaseClause$3, CaseClause$4];
@@ -13788,36 +14173,56 @@ var IgnoreColon$0 = (0, import_lib4.$TV)((0, import_lib4.$E)((0, import_lib4.$S)
13788
14173
  function IgnoreColon(ctx, state2) {
13789
14174
  return (0, import_lib4.$EVENT)(ctx, state2, "IgnoreColon", IgnoreColon$0);
13790
14175
  }
13791
- var TryStatement$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(Try, (0, import_lib4.$N)((0, import_lib4.$EXPECT)($L16, 'TryStatement ":"')), NoPostfixBracedOrEmptyBlock, (0, import_lib4.$E)(CatchClause), (0, import_lib4.$E)(ElseClause), (0, import_lib4.$E)(FinallyClause)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
14176
+ var TryStatement$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(Try, (0, import_lib4.$N)((0, import_lib4.$EXPECT)($L16, 'TryStatement ":"')), NoPostfixBracedOrEmptyBlock, (0, import_lib4.$Q)(CatchClause), (0, import_lib4.$E)(ElseClause), (0, import_lib4.$E)(FinallyClause)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
13792
14177
  return processTryBlock($0);
13793
14178
  });
13794
14179
  function TryStatement(ctx, state2) {
13795
14180
  return (0, import_lib4.$EVENT)(ctx, state2, "TryStatement", TryStatement$0);
13796
14181
  }
13797
- var CatchClause$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$C)(Nested, _), Catch, (0, import_lib4.$E)(CatchBind), (0, import_lib4.$C)(BracedThenClause, BracedOrEmptyBlock)), function($skip, $loc, $0, $1, $2, $3, $4) {
14182
+ var CatchClause$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$C)(Nested, _), Catch, (0, import_lib4.$E)(CatchBinding), (0, import_lib4.$C)(BracedThenClause, BracedOrEmptyBlock)), function($skip, $loc, $0, $1, $2, $3, $4) {
14183
+ var binding = $3;
13798
14184
  var block = $4;
13799
14185
  return {
13800
14186
  type: "CatchClause",
13801
14187
  children: $0,
13802
- block
14188
+ block,
14189
+ binding
13803
14190
  };
13804
14191
  });
13805
14192
  function CatchClause(ctx, state2) {
13806
14193
  return (0, import_lib4.$EVENT)(ctx, state2, "CatchClause", CatchClause$0);
13807
14194
  }
13808
- var CatchBind$0 = (0, import_lib4.$S)((0, import_lib4.$E)(_), OpenParen, __, CatchParameter, __, CloseParen);
13809
- var CatchBind$1 = (0, import_lib4.$TS)((0, import_lib4.$S)(_, InsertOpenParen, (0, import_lib4.$N)(EOS), ForbidIndentedApplication, (0, import_lib4.$E)(CatchParameter), RestoreIndentedApplication, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
14195
+ var CatchBinding$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$E)(_), OpenParen, __, AllowAll, (0, import_lib4.$E)(CatchParameter), RestoreAll, __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
14196
+ var ws1 = $1;
14197
+ var open = $2;
14198
+ var ws2 = $3;
14199
+ var parameter = $5;
14200
+ var ws3 = $7;
14201
+ var close = $8;
14202
+ if (!parameter)
14203
+ return $skip;
14204
+ return {
14205
+ type: "CatchBinding",
14206
+ parameter,
14207
+ children: [ws1, open, ws2, parameter, ws3, close]
14208
+ };
14209
+ });
14210
+ var CatchBinding$1 = (0, import_lib4.$TS)((0, import_lib4.$S)(_, InsertOpenParen, (0, import_lib4.$N)(EOS), ForbidIndentedApplication, (0, import_lib4.$E)(CatchParameter), RestoreIndentedApplication, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
13810
14211
  var ws = $1;
13811
14212
  var open = $2;
13812
- var param = $5;
14213
+ var parameter = $5;
13813
14214
  var close = $7;
13814
- if (!param)
14215
+ if (!parameter)
13815
14216
  return $skip;
13816
- return [ws, open, param, close];
14217
+ return {
14218
+ type: "CatchBinding",
14219
+ parameter,
14220
+ children: [ws, open, parameter, close]
14221
+ };
13817
14222
  });
13818
- var CatchBind$$ = [CatchBind$0, CatchBind$1];
13819
- function CatchBind(ctx, state2) {
13820
- return (0, import_lib4.$EVENT_C)(ctx, state2, "CatchBind", CatchBind$$);
14223
+ var CatchBinding$$ = [CatchBinding$0, CatchBinding$1];
14224
+ function CatchBinding(ctx, state2) {
14225
+ return (0, import_lib4.$EVENT_C)(ctx, state2, "CatchBinding", CatchBinding$$);
13821
14226
  }
13822
14227
  var FinallyClause$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$C)(Nested, _), Finally, (0, import_lib4.$C)(BracedThenClause, BracedOrEmptyBlock)), function($skip, $loc, $0, $1, $2, $3) {
13823
14228
  var block = $3;
@@ -13830,9 +14235,34 @@ var FinallyClause$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$
13830
14235
  function FinallyClause(ctx, state2) {
13831
14236
  return (0, import_lib4.$EVENT)(ctx, state2, "FinallyClause", FinallyClause$0);
13832
14237
  }
13833
- var CatchParameter$0 = (0, import_lib4.$S)(BindingIdentifier, (0, import_lib4.$E)(TypeSuffix));
13834
- var CatchParameter$1 = (0, import_lib4.$S)(BindingPattern, (0, import_lib4.$E)(TypeSuffix));
13835
- var CatchParameter$$ = [CatchParameter$0, CatchParameter$1];
14238
+ var CatchParameter$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(BindingIdentifier, (0, import_lib4.$E)(TypeSuffix)), function($skip, $loc, $0, $1, $2) {
14239
+ var binding = $1;
14240
+ var typeSuffix = $2;
14241
+ return {
14242
+ type: "CatchParameter",
14243
+ binding,
14244
+ typeSuffix,
14245
+ children: $0
14246
+ };
14247
+ });
14248
+ var CatchParameter$1 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$C)(ObjectBindingPattern, ArrayBindingPattern), TypeSuffix), function($skip, $loc, $0, $1, $2) {
14249
+ var binding = $1;
14250
+ var typeSuffix = $2;
14251
+ return {
14252
+ type: "CatchParameter",
14253
+ binding,
14254
+ typeSuffix,
14255
+ children: [binding, typeSuffix]
14256
+ };
14257
+ });
14258
+ var CatchParameter$2 = (0, import_lib4.$TS)((0, import_lib4.$S)(PatternExpressionList), function($skip, $loc, $0, $1) {
14259
+ return {
14260
+ type: "CatchPattern",
14261
+ children: $0,
14262
+ patterns: $1
14263
+ };
14264
+ });
14265
+ var CatchParameter$$ = [CatchParameter$0, CatchParameter$1, CatchParameter$2];
13836
14266
  function CatchParameter(ctx, state2) {
13837
14267
  return (0, import_lib4.$EVENT_C)(ctx, state2, "CatchParameter", CatchParameter$$);
13838
14268
  }
@@ -14600,7 +15030,7 @@ var UnprocessedModuleSpecifier$$ = [UnprocessedModuleSpecifier$0, UnprocessedMod
14600
15030
  function UnprocessedModuleSpecifier(ctx, state2) {
14601
15031
  return (0, import_lib4.$EVENT_C)(ctx, state2, "UnprocessedModuleSpecifier", UnprocessedModuleSpecifier$$);
14602
15032
  }
14603
- var UnquotedSpecifier$0 = (0, import_lib4.$TV)((0, import_lib4.$EXPECT)($R31, 'UnquotedSpecifier /[^;"\\s]+/'), function($skip, $loc, $0, $1) {
15033
+ var UnquotedSpecifier$0 = (0, import_lib4.$TV)((0, import_lib4.$EXPECT)($R32, 'UnquotedSpecifier /[^;"\\s]+/'), function($skip, $loc, $0, $1) {
14604
15034
  var spec = $0;
14605
15035
  return { $loc, token: `"${spec}"` };
14606
15036
  });
@@ -14860,7 +15290,7 @@ var VariableDeclarationList$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(Lexical
14860
15290
  function VariableDeclarationList(ctx, state2) {
14861
15291
  return (0, import_lib4.$EVENT)(ctx, state2, "VariableDeclarationList", VariableDeclarationList$0);
14862
15292
  }
14863
- var NumericLiteral$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R32, "NumericLiteral /(?=[0-9.])/"), NumericLiteralKind), function($skip, $loc, $0, $1, $2) {
15293
+ var NumericLiteral$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R33, "NumericLiteral /(?=[0-9.])/"), NumericLiteralKind), function($skip, $loc, $0, $1, $2) {
14864
15294
  var token = $2;
14865
15295
  return { type: "NumericLiteral", $loc, token };
14866
15296
  });
@@ -14876,36 +15306,36 @@ var NumericLiteralKind$$ = [NumericLiteralKind$0, NumericLiteralKind$1, NumericL
14876
15306
  function NumericLiteralKind(ctx, state2) {
14877
15307
  return (0, import_lib4.$EVENT_C)(ctx, state2, "NumericLiteralKind", NumericLiteralKind$$);
14878
15308
  }
14879
- var DecimalBigIntegerLiteral$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R33, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
15309
+ var DecimalBigIntegerLiteral$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R34, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
14880
15310
  function DecimalBigIntegerLiteral(ctx, state2) {
14881
15311
  return (0, import_lib4.$EVENT)(ctx, state2, "DecimalBigIntegerLiteral", DecimalBigIntegerLiteral$0);
14882
15312
  }
14883
- var DecimalLiteral$0 = (0, import_lib4.$TV)((0, import_lib4.$TEXT)((0, import_lib4.$EXPECT)($R34, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))/")), function($skip, $loc, $0, $1) {
15313
+ var DecimalLiteral$0 = (0, import_lib4.$TV)((0, import_lib4.$TEXT)((0, import_lib4.$EXPECT)($R35, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))/")), function($skip, $loc, $0, $1) {
14884
15314
  return $1 + ".";
14885
15315
  });
14886
- var DecimalLiteral$1 = (0, import_lib4.$TEXT)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R35, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?/"), (0, import_lib4.$E)(ExponentPart)));
14887
- var DecimalLiteral$2 = (0, import_lib4.$TEXT)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R36, "DecimalLiteral /(?:\\.[0-9](?:_[0-9]|[0-9])*)/"), (0, import_lib4.$E)(ExponentPart)));
15316
+ var DecimalLiteral$1 = (0, import_lib4.$TEXT)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R36, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?/"), (0, import_lib4.$E)(ExponentPart)));
15317
+ var DecimalLiteral$2 = (0, import_lib4.$TEXT)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R37, "DecimalLiteral /(?:\\.[0-9](?:_[0-9]|[0-9])*)/"), (0, import_lib4.$E)(ExponentPart)));
14888
15318
  var DecimalLiteral$$ = [DecimalLiteral$0, DecimalLiteral$1, DecimalLiteral$2];
14889
15319
  function DecimalLiteral(ctx, state2) {
14890
15320
  return (0, import_lib4.$EVENT_C)(ctx, state2, "DecimalLiteral", DecimalLiteral$$);
14891
15321
  }
14892
- var ExponentPart$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R37, "ExponentPart /(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)/"));
15322
+ var ExponentPart$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R38, "ExponentPart /(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)/"));
14893
15323
  function ExponentPart(ctx, state2) {
14894
15324
  return (0, import_lib4.$EVENT)(ctx, state2, "ExponentPart", ExponentPart$0);
14895
15325
  }
14896
- var BinaryIntegerLiteral$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R38, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*n?/"));
15326
+ var BinaryIntegerLiteral$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R39, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*n?/"));
14897
15327
  function BinaryIntegerLiteral(ctx, state2) {
14898
15328
  return (0, import_lib4.$EVENT)(ctx, state2, "BinaryIntegerLiteral", BinaryIntegerLiteral$0);
14899
15329
  }
14900
- var OctalIntegerLiteral$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R39, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*n?/"));
15330
+ var OctalIntegerLiteral$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R40, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*n?/"));
14901
15331
  function OctalIntegerLiteral(ctx, state2) {
14902
15332
  return (0, import_lib4.$EVENT)(ctx, state2, "OctalIntegerLiteral", OctalIntegerLiteral$0);
14903
15333
  }
14904
- var HexIntegerLiteral$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R40, "HexIntegerLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?/"));
15334
+ var HexIntegerLiteral$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R41, "HexIntegerLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?/"));
14905
15335
  function HexIntegerLiteral(ctx, state2) {
14906
15336
  return (0, import_lib4.$EVENT)(ctx, state2, "HexIntegerLiteral", HexIntegerLiteral$0);
14907
15337
  }
14908
- var IntegerLiteral$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R41, "IntegerLiteral /(?=[0-9])/"), IntegerLiteralKind), function($skip, $loc, $0, $1, $2) {
15338
+ var IntegerLiteral$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R42, "IntegerLiteral /(?=[0-9])/"), IntegerLiteralKind), function($skip, $loc, $0, $1, $2) {
14909
15339
  var token = $2;
14910
15340
  return { $loc, token };
14911
15341
  });
@@ -14921,7 +15351,7 @@ var IntegerLiteralKind$$ = [IntegerLiteralKind$0, IntegerLiteralKind$1, IntegerL
14921
15351
  function IntegerLiteralKind(ctx, state2) {
14922
15352
  return (0, import_lib4.$EVENT_C)(ctx, state2, "IntegerLiteralKind", IntegerLiteralKind$$);
14923
15353
  }
14924
- var DecimalIntegerLiteral$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R42, "DecimalIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)/"));
15354
+ var DecimalIntegerLiteral$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R43, "DecimalIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)/"));
14925
15355
  function DecimalIntegerLiteral(ctx, state2) {
14926
15356
  return (0, import_lib4.$EVENT)(ctx, state2, "DecimalIntegerLiteral", DecimalIntegerLiteral$0);
14927
15357
  }
@@ -14945,25 +15375,25 @@ var StringLiteral$$ = [StringLiteral$0, StringLiteral$1];
14945
15375
  function StringLiteral(ctx, state2) {
14946
15376
  return (0, import_lib4.$EVENT_C)(ctx, state2, "StringLiteral", StringLiteral$$);
14947
15377
  }
14948
- var DoubleStringCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R43, 'DoubleStringCharacters /(?:\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15378
+ var DoubleStringCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R44, 'DoubleStringCharacters /(?:\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14949
15379
  return { $loc, token: $0 };
14950
15380
  });
14951
15381
  function DoubleStringCharacters(ctx, state2) {
14952
15382
  return (0, import_lib4.$EVENT)(ctx, state2, "DoubleStringCharacters", DoubleStringCharacters$0);
14953
15383
  }
14954
- var SingleStringCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R44, "SingleStringCharacters /(?:\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15384
+ var SingleStringCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R45, "SingleStringCharacters /(?:\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14955
15385
  return { $loc, token: $0 };
14956
15386
  });
14957
15387
  function SingleStringCharacters(ctx, state2) {
14958
15388
  return (0, import_lib4.$EVENT)(ctx, state2, "SingleStringCharacters", SingleStringCharacters$0);
14959
15389
  }
14960
- var TripleDoubleStringCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R45, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15390
+ var TripleDoubleStringCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R46, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14961
15391
  return { $loc, token: $0 };
14962
15392
  });
14963
15393
  function TripleDoubleStringCharacters(ctx, state2) {
14964
15394
  return (0, import_lib4.$EVENT)(ctx, state2, "TripleDoubleStringCharacters", TripleDoubleStringCharacters$0);
14965
15395
  }
14966
- var TripleSingleStringCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R46, "TripleSingleStringCharacters /(?:'(?!'')|\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15396
+ var TripleSingleStringCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R47, "TripleSingleStringCharacters /(?:'(?!'')|\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14967
15397
  return { $loc, token: $0 };
14968
15398
  });
14969
15399
  function TripleSingleStringCharacters(ctx, state2) {
@@ -14986,7 +15416,7 @@ var CoffeeInterpolatedDoubleQuotedString$0 = (0, import_lib4.$TS)((0, import_lib
14986
15416
  function CoffeeInterpolatedDoubleQuotedString(ctx, state2) {
14987
15417
  return (0, import_lib4.$EVENT)(ctx, state2, "CoffeeInterpolatedDoubleQuotedString", CoffeeInterpolatedDoubleQuotedString$0);
14988
15418
  }
14989
- var CoffeeDoubleQuotedStringCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R47, 'CoffeeDoubleQuotedStringCharacters /(?:\\\\.|#(?!\\{)|[^"#])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15419
+ var CoffeeDoubleQuotedStringCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R48, 'CoffeeDoubleQuotedStringCharacters /(?:\\\\.|#(?!\\{)|[^"#])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14990
15420
  return { $loc, token: $0 };
14991
15421
  });
14992
15422
  function CoffeeDoubleQuotedStringCharacters(ctx, state2) {
@@ -15006,7 +15436,7 @@ var RegularExpressionClass$0 = (0, import_lib4.$TV)((0, import_lib4.$TEXT)((0, i
15006
15436
  function RegularExpressionClass(ctx, state2) {
15007
15437
  return (0, import_lib4.$EVENT)(ctx, state2, "RegularExpressionClass", RegularExpressionClass$0);
15008
15438
  }
15009
- var RegularExpressionClassCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R48, "RegularExpressionClassCharacters /(?:\\\\.|[^\\]])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15439
+ var RegularExpressionClassCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R49, "RegularExpressionClassCharacters /(?:\\\\.|[^\\]])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15010
15440
  return { $loc, token: $0 };
15011
15441
  });
15012
15442
  function RegularExpressionClassCharacters(ctx, state2) {
@@ -15063,7 +15493,7 @@ var HeregexPart$1 = (0, import_lib4.$T)((0, import_lib4.$S)(CoffeeStringSubstitu
15063
15493
  var HeregexPart$2 = (0, import_lib4.$T)((0, import_lib4.$S)(TemplateSubstitution), function(value) {
15064
15494
  return { "type": "Substitution", "children": value[0] };
15065
15495
  });
15066
- var HeregexPart$3 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R49, "HeregexPart /(?:\\\\.)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15496
+ var HeregexPart$3 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R50, "HeregexPart /(?:\\\\.)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15067
15497
  let token = $0;
15068
15498
  switch ($0[1]) {
15069
15499
  case "\n":
@@ -15081,13 +15511,13 @@ var HeregexPart$3 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R49, "Heregex
15081
15511
  var HeregexPart$4 = (0, import_lib4.$TS)((0, import_lib4.$S)(HeregexComment), function($skip, $loc, $0, $1) {
15082
15512
  return { $loc, token: "" };
15083
15513
  });
15084
- var HeregexPart$5 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R50, "HeregexPart /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15514
+ var HeregexPart$5 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R51, "HeregexPart /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15085
15515
  return { $loc, token: "" };
15086
15516
  });
15087
- var HeregexPart$6 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R51, "HeregexPart /\\/(?!\\/\\/)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15517
+ var HeregexPart$6 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R52, "HeregexPart /\\/(?!\\/\\/)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15088
15518
  return { $loc, token: "\\/" };
15089
15519
  });
15090
- var HeregexPart$7 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R52, "HeregexPart /[^[\\/\\s#\\\\]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15520
+ var HeregexPart$7 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R53, "HeregexPart /[^[\\/\\s#\\\\]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15091
15521
  return { $loc, token: $0 };
15092
15522
  });
15093
15523
  var HeregexPart$$ = [HeregexPart$0, HeregexPart$1, HeregexPart$2, HeregexPart$3, HeregexPart$4, HeregexPart$5, HeregexPart$6, HeregexPart$7];
@@ -15100,7 +15530,7 @@ var HeregexComment$$ = [HeregexComment$0, HeregexComment$1];
15100
15530
  function HeregexComment(ctx, state2) {
15101
15531
  return (0, import_lib4.$EVENT_C)(ctx, state2, "HeregexComment", HeregexComment$$);
15102
15532
  }
15103
- var RegularExpressionBody$0 = (0, import_lib4.$S)((0, import_lib4.$N)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R53, "RegularExpressionBody /[*\\/\\r\\n]/"))), (0, import_lib4.$Q)(RegExpPart));
15533
+ var RegularExpressionBody$0 = (0, import_lib4.$S)((0, import_lib4.$N)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R54, "RegularExpressionBody /[*\\/\\r\\n]/"))), (0, import_lib4.$Q)(RegExpPart));
15104
15534
  function RegularExpressionBody(ctx, state2) {
15105
15535
  return (0, import_lib4.$EVENT)(ctx, state2, "RegularExpressionBody", RegularExpressionBody$0);
15106
15536
  }
@@ -15110,15 +15540,15 @@ var RegExpPart$$ = [RegExpPart$0, RegExpPart$1];
15110
15540
  function RegExpPart(ctx, state2) {
15111
15541
  return (0, import_lib4.$EVENT_C)(ctx, state2, "RegExpPart", RegExpPart$$);
15112
15542
  }
15113
- var RegExpCharacter$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R54, "RegExpCharacter /(?:\\\\.|[^[\\/\\r\\n])+/"));
15543
+ var RegExpCharacter$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R55, "RegExpCharacter /(?:\\\\.|[^[\\/\\r\\n])+/"));
15114
15544
  function RegExpCharacter(ctx, state2) {
15115
15545
  return (0, import_lib4.$EVENT)(ctx, state2, "RegExpCharacter", RegExpCharacter$0);
15116
15546
  }
15117
- var RegularExpressionFlags$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R55, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
15547
+ var RegularExpressionFlags$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R56, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
15118
15548
  function RegularExpressionFlags(ctx, state2) {
15119
15549
  return (0, import_lib4.$EVENT)(ctx, state2, "RegularExpressionFlags", RegularExpressionFlags$0);
15120
15550
  }
15121
- var TemplateLiteral$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R56, "TemplateLiteral /(?=[`'\"])/"), _TemplateLiteral), function(value) {
15551
+ var TemplateLiteral$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R57, "TemplateLiteral /(?=[`'\"])/"), _TemplateLiteral), function(value) {
15122
15552
  return value[1];
15123
15553
  });
15124
15554
  function TemplateLiteral(ctx, state2) {
@@ -15158,28 +15588,28 @@ var TemplateSubstitution$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(Substituti
15158
15588
  function TemplateSubstitution(ctx, state2) {
15159
15589
  return (0, import_lib4.$EVENT)(ctx, state2, "TemplateSubstitution", TemplateSubstitution$0);
15160
15590
  }
15161
- var TemplateCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R57, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15591
+ var TemplateCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R58, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15162
15592
  return { $loc, token: $0 };
15163
15593
  });
15164
15594
  function TemplateCharacters(ctx, state2) {
15165
15595
  return (0, import_lib4.$EVENT)(ctx, state2, "TemplateCharacters", TemplateCharacters$0);
15166
15596
  }
15167
- var TemplateBlockCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R58, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15597
+ var TemplateBlockCharacters$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R59, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15168
15598
  return { $loc, token: $0 };
15169
15599
  });
15170
15600
  function TemplateBlockCharacters(ctx, state2) {
15171
15601
  return (0, import_lib4.$EVENT)(ctx, state2, "TemplateBlockCharacters", TemplateBlockCharacters$0);
15172
15602
  }
15173
- var ReservedWord$0 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R59, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")), CoffeeBooleansEnabled);
15174
- var ReservedWord$1 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R60, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")), CoffeeIsntEnabled);
15175
- var ReservedWord$2 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R61, "ReservedWord /(?:by)(?!\\p{ID_Continue})/")), CoffeeForLoopsEnabled);
15176
- var ReservedWord$3 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R62, "ReservedWord /(?:of)(?!\\p{ID_Continue})/")), CoffeeOfEnabled);
15177
- var ReservedWord$4 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R63, "ReservedWord /(?:and|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|let|loop|new|not|null|or|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
15603
+ var ReservedWord$0 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R60, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")), CoffeeBooleansEnabled);
15604
+ var ReservedWord$1 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R61, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")), CoffeeIsntEnabled);
15605
+ var ReservedWord$2 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R62, "ReservedWord /(?:by)(?!\\p{ID_Continue})/")), CoffeeForLoopsEnabled);
15606
+ var ReservedWord$3 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R63, "ReservedWord /(?:of)(?!\\p{ID_Continue})/")), CoffeeOfEnabled);
15607
+ var ReservedWord$4 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R64, "ReservedWord /(?:and|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|let|loop|new|not|null|or|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
15178
15608
  var ReservedWord$$ = [ReservedWord$0, ReservedWord$1, ReservedWord$2, ReservedWord$3, ReservedWord$4];
15179
15609
  function ReservedWord(ctx, state2) {
15180
15610
  return (0, import_lib4.$EVENT_C)(ctx, state2, "ReservedWord", ReservedWord$$);
15181
15611
  }
15182
- var Comment$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R64, "Comment /(?=\\/|#)/"), _Comment), function(value) {
15612
+ var Comment$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R65, "Comment /(?=\\/|#)/"), _Comment), function(value) {
15183
15613
  return value[1];
15184
15614
  });
15185
15615
  function Comment(ctx, state2) {
@@ -15197,7 +15627,7 @@ var SingleLineComment$$ = [SingleLineComment$0, SingleLineComment$1];
15197
15627
  function SingleLineComment(ctx, state2) {
15198
15628
  return (0, import_lib4.$EVENT_C)(ctx, state2, "SingleLineComment", SingleLineComment$$);
15199
15629
  }
15200
- var JSSingleLineComment$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R65, "JSSingleLineComment /\\/\\/(?!\\/)[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15630
+ var JSSingleLineComment$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R66, "JSSingleLineComment /\\/\\/(?!\\/)[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15201
15631
  return { type: "Comment", $loc, token: $0 };
15202
15632
  });
15203
15633
  function JSSingleLineComment(ctx, state2) {
@@ -15209,30 +15639,30 @@ var MultiLineComment$$ = [MultiLineComment$0, MultiLineComment$1];
15209
15639
  function MultiLineComment(ctx, state2) {
15210
15640
  return (0, import_lib4.$EVENT_C)(ctx, state2, "MultiLineComment", MultiLineComment$$);
15211
15641
  }
15212
- var JSMultiLineComment$0 = (0, import_lib4.$TV)((0, import_lib4.$TEXT)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L130, 'JSMultiLineComment "/*"'), (0, import_lib4.$Q)((0, import_lib4.$S)((0, import_lib4.$N)((0, import_lib4.$EXPECT)($L131, 'JSMultiLineComment "*/"')), (0, import_lib4.$EXPECT)($R66, "JSMultiLineComment /./"))), (0, import_lib4.$EXPECT)($L131, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
15642
+ var JSMultiLineComment$0 = (0, import_lib4.$TV)((0, import_lib4.$TEXT)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L130, 'JSMultiLineComment "/*"'), (0, import_lib4.$Q)((0, import_lib4.$S)((0, import_lib4.$N)((0, import_lib4.$EXPECT)($L131, 'JSMultiLineComment "*/"')), (0, import_lib4.$EXPECT)($R67, "JSMultiLineComment /./"))), (0, import_lib4.$EXPECT)($L131, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
15213
15643
  return { type: "Comment", $loc, token: $1 };
15214
15644
  });
15215
15645
  function JSMultiLineComment(ctx, state2) {
15216
15646
  return (0, import_lib4.$EVENT)(ctx, state2, "JSMultiLineComment", JSMultiLineComment$0);
15217
15647
  }
15218
- var CoffeeSingleLineComment$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R67, "CoffeeSingleLineComment /#(?!##(?!#))([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15648
+ var CoffeeSingleLineComment$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R68, "CoffeeSingleLineComment /#(?!##(?!#))([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15219
15649
  return { type: "Comment", $loc, token: `//${$1}` };
15220
15650
  });
15221
15651
  function CoffeeSingleLineComment(ctx, state2) {
15222
15652
  return (0, import_lib4.$EVENT)(ctx, state2, "CoffeeSingleLineComment", CoffeeSingleLineComment$0);
15223
15653
  }
15224
- var CoffeeMultiLineComment$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(CoffeeHereCommentStart, (0, import_lib4.$TEXT)((0, import_lib4.$EXPECT)($R68, "CoffeeMultiLineComment /[^]*?###/"))), function($skip, $loc, $0, $1, $2) {
15654
+ var CoffeeMultiLineComment$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(CoffeeHereCommentStart, (0, import_lib4.$TEXT)((0, import_lib4.$EXPECT)($R69, "CoffeeMultiLineComment /[^]*?###/"))), function($skip, $loc, $0, $1, $2) {
15225
15655
  $2 = $2.slice(0, $2.length - 3).replace(/\*\//g, "* /");
15226
15656
  return { type: "Comment", $loc, token: `/*${$2}*/` };
15227
15657
  });
15228
15658
  function CoffeeMultiLineComment(ctx, state2) {
15229
15659
  return (0, import_lib4.$EVENT)(ctx, state2, "CoffeeMultiLineComment", CoffeeMultiLineComment$0);
15230
15660
  }
15231
- var CoffeeHereCommentStart$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R69, "CoffeeHereCommentStart /###(?!#)/"));
15661
+ var CoffeeHereCommentStart$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R70, "CoffeeHereCommentStart /###(?!#)/"));
15232
15662
  function CoffeeHereCommentStart(ctx, state2) {
15233
15663
  return (0, import_lib4.$EVENT)(ctx, state2, "CoffeeHereCommentStart", CoffeeHereCommentStart$0);
15234
15664
  }
15235
- var InlineComment$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R70, "InlineComment /\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\//"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15665
+ var InlineComment$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R71, "InlineComment /\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\//"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15236
15666
  return { $loc, token: $0 };
15237
15667
  });
15238
15668
  function InlineComment(ctx, state2) {
@@ -15246,13 +15676,13 @@ var TrailingComment$0 = (0, import_lib4.$S)((0, import_lib4.$E)(_), (0, import_l
15246
15676
  function TrailingComment(ctx, state2) {
15247
15677
  return (0, import_lib4.$EVENT)(ctx, state2, "TrailingComment", TrailingComment$0);
15248
15678
  }
15249
- var _$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R71, "_ /(?=[ \\t\\/\\\\])/"), (0, import_lib4.$P)((0, import_lib4.$C)(NonNewlineWhitespace, InlineComment))), function(value) {
15679
+ var _$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R72, "_ /(?=[ \\t\\/\\\\])/"), (0, import_lib4.$P)((0, import_lib4.$C)(NonNewlineWhitespace, InlineComment))), function(value) {
15250
15680
  return value[1];
15251
15681
  });
15252
15682
  function _(ctx, state2) {
15253
15683
  return (0, import_lib4.$EVENT)(ctx, state2, "_", _$0);
15254
15684
  }
15255
- var NonNewlineWhitespace$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R21, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15685
+ var NonNewlineWhitespace$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R22, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15256
15686
  return { $loc, token: $0 };
15257
15687
  });
15258
15688
  var NonNewlineWhitespace$1 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L132, 'NonNewlineWhitespace "\\\\\\\\"'), CoffeeLineContinuationEnabled, EOL), function(value) {
@@ -15269,7 +15699,7 @@ var Trimmed_$0 = (0, import_lib4.$TV)(_, function($skip, $loc, $0, $1) {
15269
15699
  function Trimmed_(ctx, state2) {
15270
15700
  return (0, import_lib4.$EVENT)(ctx, state2, "Trimmed_", Trimmed_$0);
15271
15701
  }
15272
- var __$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R72, "__ /(?=\\s|\\/|#)/"), (0, import_lib4.$Q)((0, import_lib4.$C)(Whitespace, Comment))), function(value) {
15702
+ var __$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R73, "__ /(?=\\s|\\/|#)/"), (0, import_lib4.$Q)((0, import_lib4.$C)(Whitespace, Comment))), function(value) {
15273
15703
  return value[1];
15274
15704
  });
15275
15705
  var __$1 = (0, import_lib4.$EXPECT)($L0, '__ ""');
@@ -15277,7 +15707,7 @@ var __$$ = [__$0, __$1];
15277
15707
  function __(ctx, state2) {
15278
15708
  return (0, import_lib4.$EVENT_C)(ctx, state2, "__", __$$);
15279
15709
  }
15280
- var Whitespace$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R50, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15710
+ var Whitespace$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R51, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15281
15711
  return { $loc, token: $0 };
15282
15712
  });
15283
15713
  function Whitespace(ctx, state2) {
@@ -15315,7 +15745,7 @@ var SemicolonDelimiter$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_l
15315
15745
  function SemicolonDelimiter(ctx, state2) {
15316
15746
  return (0, import_lib4.$EVENT)(ctx, state2, "SemicolonDelimiter", SemicolonDelimiter$0);
15317
15747
  }
15318
- var NonIdContinue$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R73, "NonIdContinue /(?!\\p{ID_Continue})/"));
15748
+ var NonIdContinue$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R74, "NonIdContinue /(?!\\p{ID_Continue})/"));
15319
15749
  function NonIdContinue(ctx, state2) {
15320
15750
  return (0, import_lib4.$EVENT)(ctx, state2, "NonIdContinue", NonIdContinue$0);
15321
15751
  }
@@ -15433,7 +15863,7 @@ var CoffeeSubstitutionStart$0 = (0, import_lib4.$TV)((0, import_lib4.$EXPECT)($L
15433
15863
  function CoffeeSubstitutionStart(ctx, state2) {
15434
15864
  return (0, import_lib4.$EVENT)(ctx, state2, "CoffeeSubstitutionStart", CoffeeSubstitutionStart$0);
15435
15865
  }
15436
- var Colon$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L16, 'Colon ":"'), (0, import_lib4.$N)((0, import_lib4.$EXPECT)($R74, "Colon /[=:]/"))), function($skip, $loc, $0, $1, $2) {
15866
+ var Colon$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L16, 'Colon ":"'), (0, import_lib4.$N)((0, import_lib4.$EXPECT)($R75, "Colon /[=:]/"))), function($skip, $loc, $0, $1, $2) {
15437
15867
  return { $loc, token: $1 };
15438
15868
  });
15439
15869
  function Colon(ctx, state2) {
@@ -15484,7 +15914,7 @@ function Do(ctx, state2) {
15484
15914
  var Dot$0 = (0, import_lib4.$TV)((0, import_lib4.$EXPECT)($L7, 'Dot "."'), function($skip, $loc, $0, $1) {
15485
15915
  return { $loc, token: $1 };
15486
15916
  });
15487
- var Dot$1 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R75, "Dot /['\u2019]s/"), Trimmed_), function($skip, $loc, $0, $1, $2) {
15917
+ var Dot$1 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R76, "Dot /['\u2019]s/"), Trimmed_), function($skip, $loc, $0, $1, $2) {
15488
15918
  var ws = $2;
15489
15919
  return [
15490
15920
  { $loc, token: "." },
@@ -15611,7 +16041,7 @@ var If$0 = (0, import_lib4.$TV)((0, import_lib4.$TEXT)((0, import_lib4.$S)((0, i
15611
16041
  function If(ctx, state2) {
15612
16042
  return (0, import_lib4.$EVENT)(ctx, state2, "If", If$0);
15613
16043
  }
15614
- var Import$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L15, 'Import "import"'), (0, import_lib4.$Y)((0, import_lib4.$EXPECT)($R76, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
16044
+ var Import$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L15, 'Import "import"'), (0, import_lib4.$Y)((0, import_lib4.$EXPECT)($R77, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
15615
16045
  return { $loc, token: $1 };
15616
16046
  });
15617
16047
  function Import(ctx, state2) {
@@ -15969,7 +16399,7 @@ var JSXImplicitFragment$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(JSXTag, (0,
15969
16399
  function JSXImplicitFragment(ctx, state2) {
15970
16400
  return (0, import_lib4.$EVENT)(ctx, state2, "JSXImplicitFragment", JSXImplicitFragment$0);
15971
16401
  }
15972
- var JSXTag$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R77, "JSXTag /(?=[<])/"), _JSXTag), function(value) {
16402
+ var JSXTag$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R78, "JSXTag /(?=[<])/"), _JSXTag), function(value) {
15973
16403
  return value[1];
15974
16404
  });
15975
16405
  function JSXTag(ctx, state2) {
@@ -16116,7 +16546,7 @@ var JSXElementName$$ = [JSXElementName$0, JSXElementName$1];
16116
16546
  function JSXElementName(ctx, state2) {
16117
16547
  return (0, import_lib4.$EVENT_C)(ctx, state2, "JSXElementName", JSXElementName$$);
16118
16548
  }
16119
- var JSXIdentifierName$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R78, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
16549
+ var JSXIdentifierName$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R79, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
16120
16550
  function JSXIdentifierName(ctx, state2) {
16121
16551
  return (0, import_lib4.$EVENT)(ctx, state2, "JSXIdentifierName", JSXIdentifierName$0);
16122
16552
  }
@@ -16295,7 +16725,7 @@ var JSXAttribute$6 = (0, import_lib4.$TS)((0, import_lib4.$S)(Dot, JSXShorthandS
16295
16725
  class: $2
16296
16726
  };
16297
16727
  });
16298
- var JSXAttribute$7 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$TEXT)((0, import_lib4.$EXPECT)($R79, "JSXAttribute /[!+-]/")), JSXAttributeName, (0, import_lib4.$Y)(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
16728
+ var JSXAttribute$7 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$TEXT)((0, import_lib4.$EXPECT)($R80, "JSXAttribute /[!+-]/")), JSXAttributeName, (0, import_lib4.$Y)(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
16299
16729
  var toggle = $1;
16300
16730
  var id = $2;
16301
16731
  const value = toggle === "+" ? "true" : "false";
@@ -16305,11 +16735,11 @@ var JSXAttribute$$ = [JSXAttribute$0, JSXAttribute$1, JSXAttribute$2, JSXAttribu
16305
16735
  function JSXAttribute(ctx, state2) {
16306
16736
  return (0, import_lib4.$EVENT_C)(ctx, state2, "JSXAttribute", JSXAttribute$$);
16307
16737
  }
16308
- var JSXAttributeSpace$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R80, "JSXAttributeSpace /[\\s>]|\\/>/"));
16738
+ var JSXAttributeSpace$0 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R81, "JSXAttributeSpace /[\\s>]|\\/>/"));
16309
16739
  function JSXAttributeSpace(ctx, state2) {
16310
16740
  return (0, import_lib4.$EVENT)(ctx, state2, "JSXAttributeSpace", JSXAttributeSpace$0);
16311
16741
  }
16312
- var JSXShorthandString$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R81, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16742
+ var JSXShorthandString$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R82, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16313
16743
  return quoteString($0);
16314
16744
  });
16315
16745
  var JSXShorthandString$1 = (0, import_lib4.$TS)((0, import_lib4.$S)(TemplateLiteral), function($skip, $loc, $0, $1) {
@@ -16356,7 +16786,7 @@ var JSXAttributeValue$3 = (0, import_lib4.$TS)((0, import_lib4.$S)(InsertInlineO
16356
16786
  }
16357
16787
  return [open, value, close];
16358
16788
  });
16359
- var JSXAttributeValue$4 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R82, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
16789
+ var JSXAttributeValue$4 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R83, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
16360
16790
  var JSXAttributeValue$$ = [JSXAttributeValue$0, JSXAttributeValue$1, JSXAttributeValue$2, JSXAttributeValue$3, JSXAttributeValue$4];
16361
16791
  function JSXAttributeValue(ctx, state2) {
16362
16792
  return (0, import_lib4.$EVENT_C)(ctx, state2, "JSXAttributeValue", JSXAttributeValue$$);
@@ -16369,7 +16799,7 @@ var InlineJSXAttributeValue$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(InlineJ
16369
16799
  function InlineJSXAttributeValue(ctx, state2) {
16370
16800
  return (0, import_lib4.$EVENT)(ctx, state2, "InlineJSXAttributeValue", InlineJSXAttributeValue$0);
16371
16801
  }
16372
- var InlineJSXBinaryOpRHS$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$N)((0, import_lib4.$EXPECT)($R83, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
16802
+ var InlineJSXBinaryOpRHS$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$N)((0, import_lib4.$EXPECT)($R84, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
16373
16803
  var op = $2;
16374
16804
  var rhs = $3;
16375
16805
  return [[], op, [], rhs];
@@ -16386,7 +16816,7 @@ var InlineJSXUnaryExpression$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, im
16386
16816
  function InlineJSXUnaryExpression(ctx, state2) {
16387
16817
  return (0, import_lib4.$EVENT)(ctx, state2, "InlineJSXUnaryExpression", InlineJSXUnaryExpression$0);
16388
16818
  }
16389
- var InlineJSXUnaryOp$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R84, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16819
+ var InlineJSXUnaryOp$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R85, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16390
16820
  return { $loc, token: $0 };
16391
16821
  });
16392
16822
  function InlineJSXUnaryOp(ctx, state2) {
@@ -16637,13 +17067,13 @@ var JSXComment$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXP
16637
17067
  function JSXComment(ctx, state2) {
16638
17068
  return (0, import_lib4.$EVENT)(ctx, state2, "JSXComment", JSXComment$0);
16639
17069
  }
16640
- var JSXCommentContent$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R85, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
17070
+ var JSXCommentContent$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R86, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16641
17071
  return { $loc, token: $0.replace(/\*\//g, "* /") };
16642
17072
  });
16643
17073
  function JSXCommentContent(ctx, state2) {
16644
17074
  return (0, import_lib4.$EVENT)(ctx, state2, "JSXCommentContent", JSXCommentContent$0);
16645
17075
  }
16646
- var JSXText$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R86, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
17076
+ var JSXText$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R87, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16647
17077
  return {
16648
17078
  type: "JSXText",
16649
17079
  token: $0,
@@ -17177,7 +17607,7 @@ var TypeProperty$0 = (0, import_lib4.$S)((0, import_lib4.$E)((0, import_lib4.$S)
17177
17607
  function TypeProperty(ctx, state2) {
17178
17608
  return (0, import_lib4.$EVENT)(ctx, state2, "TypeProperty", TypeProperty$0);
17179
17609
  }
17180
- var TypeIndexSignature$0 = (0, import_lib4.$S)((0, import_lib4.$E)((0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R87, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, (0, import_lib4.$E)((0, import_lib4.$S)(__, (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R13, "TypeIndexSignature /[+-]/")), (0, import_lib4.$Y)((0, import_lib4.$S)((0, import_lib4.$E)(_), QuestionMark)))));
17610
+ var TypeIndexSignature$0 = (0, import_lib4.$S)((0, import_lib4.$E)((0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R88, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, (0, import_lib4.$E)((0, import_lib4.$S)(__, (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R13, "TypeIndexSignature /[+-]/")), (0, import_lib4.$Y)((0, import_lib4.$S)((0, import_lib4.$E)(_), QuestionMark)))));
17181
17611
  function TypeIndexSignature(ctx, state2) {
17182
17612
  return (0, import_lib4.$EVENT)(ctx, state2, "TypeIndexSignature", TypeIndexSignature$0);
17183
17613
  }
@@ -17238,6 +17668,19 @@ var MaybeNestedTypePrimary$$ = [MaybeNestedTypePrimary$0, MaybeNestedTypePrimary
17238
17668
  function MaybeNestedTypePrimary(ctx, state2) {
17239
17669
  return (0, import_lib4.$EVENT_C)(ctx, state2, "MaybeNestedTypePrimary", MaybeNestedTypePrimary$$);
17240
17670
  }
17671
+ var MaybeNestedTypeUnary$0 = NestedTypeBulletedTuple;
17672
+ var MaybeNestedTypeUnary$1 = NestedInterfaceBlock;
17673
+ var MaybeNestedTypeUnary$2 = NestedTypeBinaryChain;
17674
+ var MaybeNestedTypeUnary$3 = (0, import_lib4.$TS)((0, import_lib4.$S)(PushIndent, (0, import_lib4.$E)((0, import_lib4.$S)(Nested, Type)), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
17675
+ if (!$2)
17676
+ return $skip;
17677
+ return $2;
17678
+ });
17679
+ var MaybeNestedTypeUnary$4 = (0, import_lib4.$S)(NotDedented, TypeUnary);
17680
+ var MaybeNestedTypeUnary$$ = [MaybeNestedTypeUnary$0, MaybeNestedTypeUnary$1, MaybeNestedTypeUnary$2, MaybeNestedTypeUnary$3, MaybeNestedTypeUnary$4];
17681
+ function MaybeNestedTypeUnary(ctx, state2) {
17682
+ return (0, import_lib4.$EVENT_C)(ctx, state2, "MaybeNestedTypeUnary", MaybeNestedTypeUnary$$);
17683
+ }
17241
17684
  var ReturnTypeSuffix$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$E)(_), (0, import_lib4.$E)(QuestionMark), (0, import_lib4.$E)(_), Colon, ReturnType), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
17242
17685
  var optional = $2;
17243
17686
  var t = $5;
@@ -17292,7 +17735,7 @@ var Type$0 = TypeWithPostfix;
17292
17735
  function Type(ctx, state2) {
17293
17736
  return (0, import_lib4.$EVENT)(ctx, state2, "Type", Type$0);
17294
17737
  }
17295
- var TypeBinary$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$E)((0, import_lib4.$S)(NotDedented, TypeBinaryOp, __)), TypeUnary, (0, import_lib4.$Q)((0, import_lib4.$S)(NotDedented, TypeBinaryOp, __, TypeUnary))), function($skip, $loc, $0, $1, $2, $3) {
17738
+ var TypeBinary$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$E)((0, import_lib4.$S)(NotDedented, TypeBinaryOp, __)), TypeUnary, (0, import_lib4.$Q)((0, import_lib4.$S)(NotDedented, TypeBinaryOp, MaybeNestedTypeUnary))), function($skip, $loc, $0, $1, $2, $3) {
17296
17739
  var optionalPrefix = $1;
17297
17740
  var t = $2;
17298
17741
  var ops = $3;
@@ -17659,7 +18102,7 @@ var TypeWithPostfix$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(TypeConditional
17659
18102
  function TypeWithPostfix(ctx, state2) {
17660
18103
  return (0, import_lib4.$EVENT)(ctx, state2, "TypeWithPostfix", TypeWithPostfix$0);
17661
18104
  }
17662
- var TypeConditional$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$E)(_), (0, import_lib4.$EXPECT)($R88, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
18105
+ var TypeConditional$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$E)(_), (0, import_lib4.$EXPECT)($R89, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
17663
18106
  return prepend($1, expressionizeTypeIf($3));
17664
18107
  });
17665
18108
  var TypeConditional$1 = (0, import_lib4.$TS)((0, import_lib4.$S)(TypeCondition, NotDedented, QuestionMark, __, Type, __, Colon, __, Type), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
@@ -17861,8 +18304,8 @@ function TypeApplicationStart(ctx, state2) {
17861
18304
  return (0, import_lib4.$EVENT_C)(ctx, state2, "TypeApplicationStart", TypeApplicationStart$$);
17862
18305
  }
17863
18306
  var ForbiddenImplicitTypeCalls$0 = ReservedBinary;
17864
- var ForbiddenImplicitTypeCalls$1 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R89, "ForbiddenImplicitTypeCalls /[|&<!=\\-\u21D2\u2192]/"));
17865
- var ForbiddenImplicitTypeCalls$2 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R90, "ForbiddenImplicitTypeCalls /(extends|not|is)(?!\\p{ID_Continue}|[\\u200C\\u200D$])/"));
18307
+ var ForbiddenImplicitTypeCalls$1 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R90, "ForbiddenImplicitTypeCalls /[|&<!=\\-\u21D2\u2192]/"));
18308
+ var ForbiddenImplicitTypeCalls$2 = (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R91, "ForbiddenImplicitTypeCalls /(extends|not|is)(?!\\p{ID_Continue}|[\\u200C\\u200D$])/"));
17866
18309
  var ForbiddenImplicitTypeCalls$$ = [ForbiddenImplicitTypeCalls$0, ForbiddenImplicitTypeCalls$1, ForbiddenImplicitTypeCalls$2];
17867
18310
  function ForbiddenImplicitTypeCalls(ctx, state2) {
17868
18311
  return (0, import_lib4.$EVENT_C)(ctx, state2, "ForbiddenImplicitTypeCalls", ForbiddenImplicitTypeCalls$$);
@@ -17945,7 +18388,7 @@ var TypeParameters$0 = (0, import_lib4.$TS)((0, import_lib4.$S)(OpenAngleBracket
17945
18388
  function TypeParameters(ctx, state2) {
17946
18389
  return (0, import_lib4.$EVENT)(ctx, state2, "TypeParameters", TypeParameters$0);
17947
18390
  }
17948
- var TypeParameter$0 = (0, import_lib4.$S)(__, (0, import_lib4.$Q)((0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R91, "TypeParameter /const|in|out/")), _)), Identifier, (0, import_lib4.$E)(TypeConstraint), (0, import_lib4.$E)(TypeInitializer), TypeParameterDelimiter);
18391
+ var TypeParameter$0 = (0, import_lib4.$S)(__, (0, import_lib4.$Q)((0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R92, "TypeParameter /const|in|out/")), _)), Identifier, (0, import_lib4.$E)(TypeConstraint), (0, import_lib4.$E)(TypeInitializer), TypeParameterDelimiter);
17949
18392
  function TypeParameter(ctx, state2) {
17950
18393
  return (0, import_lib4.$EVENT)(ctx, state2, "TypeParameter", TypeParameter$0);
17951
18394
  }
@@ -17972,15 +18415,15 @@ var ThisType$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$E)(_),
17972
18415
  function ThisType(ctx, state2) {
17973
18416
  return (0, import_lib4.$EVENT)(ctx, state2, "ThisType", ThisType$0);
17974
18417
  }
17975
- var Shebang$0 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R92, "Shebang /#![^\\r\\n]*/")), EOL);
18418
+ var Shebang$0 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R93, "Shebang /#![^\\r\\n]*/")), EOL);
17976
18419
  function Shebang(ctx, state2) {
17977
18420
  return (0, import_lib4.$EVENT)(ctx, state2, "Shebang", Shebang$0);
17978
18421
  }
17979
- var CivetPrologue$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R93, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, (0, import_lib4.$EXPECT)($R20, "CivetPrologue /[ \\t]*/"), (0, import_lib4.$C)(EOL, (0, import_lib4.$Y)(RestOfLine))), function(value) {
18422
+ var CivetPrologue$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R94, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, (0, import_lib4.$EXPECT)($R21, "CivetPrologue /[ \\t]*/"), (0, import_lib4.$C)(EOL, (0, import_lib4.$Y)(RestOfLine))), function(value) {
17980
18423
  var content = value[2];
17981
18424
  return content;
17982
18425
  });
17983
- var CivetPrologue$1 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R93, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, (0, import_lib4.$EXPECT)($R20, "CivetPrologue /[ \\t]*/"), (0, import_lib4.$C)(EOL, (0, import_lib4.$Y)(RestOfLine))), function(value) {
18426
+ var CivetPrologue$1 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R94, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, (0, import_lib4.$EXPECT)($R21, "CivetPrologue /[ \\t]*/"), (0, import_lib4.$C)(EOL, (0, import_lib4.$Y)(RestOfLine))), function(value) {
17984
18427
  var content = value[2];
17985
18428
  return content;
17986
18429
  });
@@ -17988,7 +18431,7 @@ var CivetPrologue$$ = [CivetPrologue$0, CivetPrologue$1];
17988
18431
  function CivetPrologue(ctx, state2) {
17989
18432
  return (0, import_lib4.$EVENT_C)(ctx, state2, "CivetPrologue", CivetPrologue$$);
17990
18433
  }
17991
- var CivetPrologueContent$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L238, 'CivetPrologueContent "civet"'), NonIdContinue, (0, import_lib4.$Q)(CivetOption), (0, import_lib4.$EXPECT)($R94, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
18434
+ var CivetPrologueContent$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($L238, 'CivetPrologueContent "civet"'), NonIdContinue, (0, import_lib4.$Q)(CivetOption), (0, import_lib4.$EXPECT)($R95, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
17992
18435
  var options = $3;
17993
18436
  return {
17994
18437
  type: "CivetPrologue",
@@ -17999,7 +18442,7 @@ var CivetPrologueContent$0 = (0, import_lib4.$TS)((0, import_lib4.$S)((0, import
17999
18442
  function CivetPrologueContent(ctx, state2) {
18000
18443
  return (0, import_lib4.$EVENT)(ctx, state2, "CivetPrologueContent", CivetPrologueContent$0);
18001
18444
  }
18002
- var CivetOption$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R95, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([\\p{ID_Continue}.,+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
18445
+ var CivetOption$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R96, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([\\p{ID_Continue}.,+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
18003
18446
  const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
18004
18447
  if (l)
18005
18448
  return l.toUpperCase();
@@ -18021,11 +18464,11 @@ var CivetOption$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R95, "CivetOp
18021
18464
  function CivetOption(ctx, state2) {
18022
18465
  return (0, import_lib4.$EVENT)(ctx, state2, "CivetOption", CivetOption$0);
18023
18466
  }
18024
- var UnknownPrologue$0 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R93, "UnknownPrologue /[\\t ]*/")), StringLiteral, (0, import_lib4.$TEXT)(SimpleStatementDelimiter), EOS);
18467
+ var UnknownPrologue$0 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R94, "UnknownPrologue /[\\t ]*/")), StringLiteral, (0, import_lib4.$TEXT)(SimpleStatementDelimiter), EOS);
18025
18468
  function UnknownPrologue(ctx, state2) {
18026
18469
  return (0, import_lib4.$EVENT)(ctx, state2, "UnknownPrologue", UnknownPrologue$0);
18027
18470
  }
18028
- var TripleSlashDirective$0 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R96, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), (0, import_lib4.$E)(EOS));
18471
+ var TripleSlashDirective$0 = (0, import_lib4.$S)((0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R97, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), (0, import_lib4.$E)(EOS));
18029
18472
  function TripleSlashDirective(ctx, state2) {
18030
18473
  return (0, import_lib4.$EVENT)(ctx, state2, "TripleSlashDirective", TripleSlashDirective$0);
18031
18474
  }
@@ -18041,13 +18484,13 @@ var PrologueString$$ = [PrologueString$0, PrologueString$1];
18041
18484
  function PrologueString(ctx, state2) {
18042
18485
  return (0, import_lib4.$EVENT_C)(ctx, state2, "PrologueString", PrologueString$$);
18043
18486
  }
18044
- var EOS$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R97, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), (0, import_lib4.$P)(RestOfLine)), function(value) {
18487
+ var EOS$0 = (0, import_lib4.$T)((0, import_lib4.$S)((0, import_lib4.$EXPECT)($R98, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), (0, import_lib4.$P)(RestOfLine)), function(value) {
18045
18488
  return value[1];
18046
18489
  });
18047
18490
  function EOS(ctx, state2) {
18048
18491
  return (0, import_lib4.$EVENT)(ctx, state2, "EOS", EOS$0);
18049
18492
  }
18050
- var EOL$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R98, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
18493
+ var EOL$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R99, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
18051
18494
  return { $loc, token: $0 };
18052
18495
  });
18053
18496
  function EOL(ctx, state2) {
@@ -18456,11 +18899,11 @@ var Prologue$0 = (0, import_lib4.$Q)((0, import_lib4.$C)(TripleSlashDirective, (
18456
18899
  function Prologue(ctx, state2) {
18457
18900
  return (0, import_lib4.$EVENT)(ctx, state2, "Prologue", Prologue$0);
18458
18901
  }
18459
- var ProloguePrefix$0 = (0, import_lib4.$S)(Prologue, (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R99, "ProloguePrefix /[^]*/")));
18902
+ var ProloguePrefix$0 = (0, import_lib4.$S)(Prologue, (0, import_lib4.$R$0)((0, import_lib4.$EXPECT)($R100, "ProloguePrefix /[^]*/")));
18460
18903
  function ProloguePrefix(ctx, state2) {
18461
18904
  return (0, import_lib4.$EVENT)(ctx, state2, "ProloguePrefix", ProloguePrefix$0);
18462
18905
  }
18463
- var Indent$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R20, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
18906
+ var Indent$0 = (0, import_lib4.$TR)((0, import_lib4.$EXPECT)($R21, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
18464
18907
  const level = getIndentLevel($0, config.tab);
18465
18908
  return {
18466
18909
  $loc,