@danielx/civet 0.6.90 → 0.6.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.mjs CHANGED
@@ -31,6 +31,389 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
31
31
  mod
32
32
  ));
33
33
 
34
+ // source/parser/op.civet
35
+ function getPrecedence(op) {
36
+ if (typeof op === "string") {
37
+ return precedenceMap.get(op) ?? (() => {
38
+ throw new Error(`Unknown operator: ${op}`);
39
+ })();
40
+ } else if (typeof op.prec === "number") {
41
+ return op.prec;
42
+ } else {
43
+ return precedenceMap.get(op.prec ?? op.token) ?? (op.relational ? precedenceRelational : precedenceCustomDefault);
44
+ }
45
+ }
46
+ function processBinaryOpExpression($0) {
47
+ return recurse(expandChainedComparisons($0));
48
+ function recurse(expandedOps) {
49
+ let i = 2;
50
+ while (i < expandedOps.length) {
51
+ let op = expandedOps[i];
52
+ if (op.special) {
53
+ let advanceLeft2 = function(allowEqual) {
54
+ while (start >= 4) {
55
+ const prevPrec = getPrecedence(expandedOps[start - 2]);
56
+ if (!(prevPrec > prec || allowEqual && prevPrec === prec)) {
57
+ return prevPrec === prec;
58
+ }
59
+ start -= 4;
60
+ }
61
+ return false;
62
+ }, advanceRight2 = function(allowEqual) {
63
+ while (end + 4 < expandedOps.length) {
64
+ const nextPrec = getPrecedence(expandedOps[end + 2]);
65
+ if (!(nextPrec > prec || allowEqual && nextPrec === prec)) {
66
+ return nextPrec === prec;
67
+ }
68
+ end += 4;
69
+ }
70
+ return false;
71
+ };
72
+ var advanceLeft = advanceLeft2, advanceRight = advanceRight2;
73
+ let start = i - 2, end = i + 2;
74
+ const prec = getPrecedence(op);
75
+ let error;
76
+ switch (op.assoc) {
77
+ case "left":
78
+ case void 0: {
79
+ advanceLeft2(true);
80
+ advanceRight2(false);
81
+ break;
82
+ }
83
+ case "right": {
84
+ advanceLeft2(false);
85
+ advanceRight2(true);
86
+ break;
87
+ }
88
+ case "non": {
89
+ if (advanceLeft2(false) || advanceRight2(false)) {
90
+ error = {
91
+ type: "Error",
92
+ message: `non-associative operator ${op.token} used at same precedence level without parenthesization`
93
+ };
94
+ }
95
+ ;
96
+ break;
97
+ }
98
+ case "arguments": {
99
+ if (advanceLeft2(false)) {
100
+ error = {
101
+ type: "Error",
102
+ message: `arguments operator ${op.token} used at same precedence level as ${expandedOps[start - 2].token} to the left`
103
+ };
104
+ }
105
+ advanceRight2(true);
106
+ break;
107
+ }
108
+ default: {
109
+ throw new Error(`Unsupported associativity: ${op.assoc}`);
110
+ }
111
+ }
112
+ let a = start === i - 2 ? expandedOps[start] : expandedOps.slice(start, i - 1);
113
+ let wsOp = expandedOps[i - 1];
114
+ let wsB = expandedOps[i + 1];
115
+ let b = end === i + 2 ? expandedOps[i + 2] : expandedOps.slice(i + 2, end + 1);
116
+ if (op.assoc === "arguments") {
117
+ let i2 = 2;
118
+ while (i2 < b.length) {
119
+ if (prec === getPrecedence(b[i2])) {
120
+ if (!(b[i2].token === op.token)) {
121
+ error ??= {
122
+ type: "Error",
123
+ message: `arguments operator ${op.token} used at same precedence level as ${b[i2].token} to the right`
124
+ };
125
+ }
126
+ b[i2] = ",";
127
+ }
128
+ i2 += 4;
129
+ }
130
+ } else {
131
+ b = recurse(b);
132
+ }
133
+ if (op.token === "instanceof" && b.type === "Literal" && b.children?.[0]?.type === "StringLiteral") {
134
+ a = ["typeof ", makeLeftHandSideExpression(a)];
135
+ if (op.negated) {
136
+ op = { ...op, token: "!==", negated: false };
137
+ } else {
138
+ op = { ...op, token: "===" };
139
+ }
140
+ }
141
+ if (op.asConst) {
142
+ a = makeAsConst(a);
143
+ b = makeAsConst(b);
144
+ }
145
+ let children;
146
+ if (op.call) {
147
+ wsOp = insertTrimmingSpace(wsOp, "");
148
+ if (op.reversed) {
149
+ wsB = insertTrimmingSpace(wsB, "");
150
+ children = [wsOp, op.call, "(", wsB, b, ", ", a, ")", op.suffix];
151
+ } else {
152
+ children = [wsOp, op.call, "(", a, ",", wsB, b, ")", op.suffix];
153
+ }
154
+ } else if (op.method) {
155
+ wsOp = insertTrimmingSpace(wsOp, "");
156
+ wsB = insertTrimmingSpace(wsB, "");
157
+ if (op.reversed) {
158
+ if (end !== i + 2)
159
+ b = makeLeftHandSideExpression(b);
160
+ b = dotNumericLiteral(b);
161
+ children = [wsB, b, wsOp, ".", op.method, "(", a, ")"];
162
+ } else {
163
+ if (start !== i - 2 || a.type === "NumericLiteral") {
164
+ a = makeLeftHandSideExpression(a);
165
+ }
166
+ a = dotNumericLiteral(a);
167
+ children = [a, wsOp, ".", op.method, "(", wsB, b, ")"];
168
+ }
169
+ } else if (op.token) {
170
+ children = [a, wsOp, op, wsB, b];
171
+ if (op.negated)
172
+ children = ["(", ...children, ")"];
173
+ } else {
174
+ throw new Error("Unknown operator: " + JSON.stringify(op));
175
+ }
176
+ if (op.negated)
177
+ children.unshift("!");
178
+ if (error != null) {
179
+ children.push(error);
180
+ }
181
+ expandedOps.splice(start, end - start + 1, {
182
+ children
183
+ });
184
+ i = start + 2;
185
+ } else {
186
+ i += 4;
187
+ }
188
+ }
189
+ return expandedOps;
190
+ }
191
+ ;
192
+ return recurse;
193
+ }
194
+ function dotNumericLiteral(literal) {
195
+ if (literal?.type === "Literal" && /^[+-]?(?:0|[1-9](?:_[0-9]|[0-9])*)$/.test(literal.raw)) {
196
+ literal.children.push(".");
197
+ literal.raw += ".";
198
+ }
199
+ return literal;
200
+ }
201
+ function makeAsConst(node) {
202
+ if (Array.isArray(node) && node.length === 1) {
203
+ node = node[0];
204
+ }
205
+ if (node.type === "Literal" && node.raw !== "null" || node.type === "ArrayExpression" || node.type === "ObjectExpression") {
206
+ return { ...node, children: [...node.children, asConst] };
207
+ } else {
208
+ return node;
209
+ }
210
+ }
211
+ function isExistence(exp) {
212
+ if (exp?.type === "ParenthesizedExpression" && exp.implicit) {
213
+ exp = exp.expression;
214
+ }
215
+ if (exp?.type === "Existence") {
216
+ return exp;
217
+ }
218
+ ;
219
+ return;
220
+ }
221
+ function isRelationalOp(op) {
222
+ return op.relational || getPrecedence(op) === precedenceRelational;
223
+ }
224
+ function expandChainedComparisons([first, binops]) {
225
+ if (!binops.length) {
226
+ return [first];
227
+ }
228
+ const results = [];
229
+ let start = 0;
230
+ const chains = [];
231
+ var i = 0;
232
+ for (let i3 = 0, len2 = binops.length; i3 < len2; i3++) {
233
+ var i = i3;
234
+ var [, op] = binops[i3];
235
+ if (isRelationalOp(op)) {
236
+ chains.push(i);
237
+ } else if (getPrecedence(op) < precedenceRelational) {
238
+ processChains();
239
+ first = results.pop();
240
+ }
241
+ }
242
+ processChains();
243
+ return results;
244
+ function processChains() {
245
+ if (chains.length > 0) {
246
+ first = expandExistence(first);
247
+ for (let i4 = 0, len3 = chains.length; i4 < len3; i4++) {
248
+ const k = i4;
249
+ const index = chains[i4];
250
+ if (k > 0) {
251
+ results.push(" ", "&&", " ");
252
+ }
253
+ const binop = binops[index];
254
+ const exp = binop[3] = expandExistence(binop[3]);
255
+ results.push(first);
256
+ const endIndex = chains[k + 1] ?? i + 1;
257
+ results.push(...binops.slice(start, endIndex).flat());
258
+ first = [exp].concat(binops.slice(index + 1, endIndex));
259
+ start = endIndex;
260
+ }
261
+ } else {
262
+ results.push(first);
263
+ results.push(...binops.slice(start, i + 1).flat());
264
+ start = i + 1;
265
+ }
266
+ chains.length = 0;
267
+ }
268
+ function expandExistence(exp) {
269
+ let ref;
270
+ if (ref = isExistence(exp)) {
271
+ const existence = ref;
272
+ results.push(existence, " ", "&&", " ");
273
+ return existence.expression;
274
+ } else {
275
+ return exp;
276
+ }
277
+ }
278
+ ;
279
+ }
280
+ var precedenceOrder, precedenceMap, precedenceStep, precedenceRelational, precedenceCustomDefault, asConst;
281
+ var init_op = __esm({
282
+ "source/parser/op.civet"() {
283
+ "use strict";
284
+ init_util();
285
+ precedenceOrder = [
286
+ ["||", "??"],
287
+ ["^^"],
288
+ ["&&"],
289
+ ["|"],
290
+ ["^"],
291
+ ["&"],
292
+ // NOTE: Equality and inequality merged because of relational chaining
293
+ [
294
+ "==",
295
+ "!=",
296
+ "===",
297
+ "!==",
298
+ "<",
299
+ "<=",
300
+ ">",
301
+ ">=",
302
+ "in",
303
+ "instanceof"
304
+ ],
305
+ // NOTE: Extra in-between level for default custom operators
306
+ ["custom"],
307
+ ["<<", ">>", ">>>"],
308
+ ["+", "-"],
309
+ ["*", "/", "%"],
310
+ ["**"]
311
+ ];
312
+ precedenceMap = /* @__PURE__ */ new Map();
313
+ for (let i1 = 0, len = precedenceOrder.length; i1 < len; i1++) {
314
+ const prec = i1;
315
+ const ops = precedenceOrder[i1];
316
+ for (let i2 = 0, len1 = ops.length; i2 < len1; i2++) {
317
+ const op = ops[i2];
318
+ precedenceMap.set(op, prec);
319
+ }
320
+ }
321
+ precedenceStep = 1 / 64;
322
+ precedenceRelational = precedenceMap.get("==");
323
+ precedenceCustomDefault = precedenceMap.get("custom");
324
+ asConst = {
325
+ ts: true,
326
+ children: [" as const"]
327
+ };
328
+ }
329
+ });
330
+
331
+ // source/parser/unary.civet
332
+ function processUnaryExpression(pre, exp, post) {
333
+ if (!(pre.length || post))
334
+ return exp;
335
+ if (post?.token === "?") {
336
+ post = {
337
+ $loc: post.$loc,
338
+ token: " != null"
339
+ };
340
+ if (pre.length) {
341
+ const lastPre = pre.at(-1);
342
+ if (lastPre.token === "!") {
343
+ post.token = " == null";
344
+ pre = pre.slice(0, -1);
345
+ } else if (lastPre.length === 2 && lastPre[0].token === "!") {
346
+ post.token = " == null";
347
+ pre = pre.slice(0, -1);
348
+ }
349
+ }
350
+ const existence = {
351
+ type: "Existence",
352
+ expression: exp,
353
+ children: [exp, post],
354
+ parent: void 0
355
+ };
356
+ exp = makeLeftHandSideExpression(existence);
357
+ if (pre.length) {
358
+ return {
359
+ type: "UnaryExpression",
360
+ children: [...pre, exp]
361
+ };
362
+ }
363
+ return exp;
364
+ }
365
+ if (exp.type === "Literal") {
366
+ if (pre.length === 1) {
367
+ const { token } = pre[0];
368
+ if (token === "-" || token === "+") {
369
+ const children = [pre[0], ...exp.children];
370
+ if (post)
371
+ exp.children.push(post);
372
+ return {
373
+ type: "Literal",
374
+ children,
375
+ raw: `${token}${exp.raw}`
376
+ };
377
+ }
378
+ }
379
+ }
380
+ let ref;
381
+ while (ref = pre.length) {
382
+ const l = ref;
383
+ const last = pre[l - 1];
384
+ if (last.type === "Await") {
385
+ if (last.op) {
386
+ if (exp.type !== "ParenthesizedExpression") {
387
+ exp = ["(", exp, ")"];
388
+ }
389
+ exp = {
390
+ type: "CallExpression",
391
+ children: [...last.children, "Promise", last.op, exp]
392
+ };
393
+ pre = pre.slice(0, -1);
394
+ } else {
395
+ exp = {
396
+ type: "AwaitExpression",
397
+ children: [...last.children, exp]
398
+ };
399
+ pre = pre.slice(0, -1);
400
+ }
401
+ } else {
402
+ break;
403
+ }
404
+ }
405
+ return {
406
+ type: "UnaryExpression",
407
+ children: [...pre, exp, post]
408
+ };
409
+ }
410
+ var init_unary = __esm({
411
+ "source/parser/unary.civet"() {
412
+ "use strict";
413
+ init_util();
414
+ }
415
+ });
416
+
34
417
  // source/parser/util.civet
35
418
  function addParentPointers(node, parent) {
36
419
  if (node == null)
@@ -266,6 +649,92 @@ function makeAmpersandFunction(bodyAfterRef = []) {
266
649
  parameters
267
650
  };
268
651
  }
652
+ function makeAmpersandFunctionExpression(prefix, rhs) {
653
+ let ref, body, typeSuffix;
654
+ if (!rhs) {
655
+ body = ref = makeRef("$");
656
+ } else {
657
+ ({ ref, typeSuffix } = rhs);
658
+ if (!ref) {
659
+ throw new Error("Could not find ref in ampersand shorthand block");
660
+ }
661
+ body = rhs;
662
+ }
663
+ if (prefix.length) {
664
+ body = {
665
+ type: "UnaryExpression",
666
+ children: [processUnaryExpression(prefix, body, void 0)]
667
+ };
668
+ }
669
+ const parameters = {
670
+ type: "Parameters",
671
+ children: typeSuffix ? ["(", ref, typeSuffix, ")"] : [ref],
672
+ names: []
673
+ };
674
+ const expressions = [body];
675
+ const block = {
676
+ bare: true,
677
+ expressions,
678
+ children: [expressions]
679
+ };
680
+ const children = [parameters, " => ", block];
681
+ const async = hasAwait(body);
682
+ if (async) {
683
+ children.unshift("async ");
684
+ }
685
+ return {
686
+ type: "ArrowFunction",
687
+ signature: {
688
+ modifier: {
689
+ async
690
+ }
691
+ },
692
+ children,
693
+ ref,
694
+ body,
695
+ ampersandBlock: true,
696
+ block,
697
+ parameters
698
+ };
699
+ }
700
+ function makeAmpersandBlockRHSBody(typeSuffix, callExpRest, unaryPostfix, assign, binopRHS) {
701
+ const ref = makeRef("$");
702
+ let exp = {
703
+ type: "AmpersandRef",
704
+ children: [ref],
705
+ names: [],
706
+ ref
707
+ };
708
+ if (callExpRest) {
709
+ exp.children.push(...callExpRest[1]);
710
+ }
711
+ if (unaryPostfix) {
712
+ exp = processUnaryExpression([], exp, unaryPostfix);
713
+ }
714
+ if (assign) {
715
+ const [op1, more, rhs] = assign;
716
+ const lhs = [
717
+ [void 0, exp, ...op1],
718
+ ...more.map((x) => [x[0], x[1], ...x[2]])
719
+ ];
720
+ exp = {
721
+ type: "AssignmentExpression",
722
+ children: [lhs, rhs],
723
+ names: null,
724
+ lhs,
725
+ assigned: exp,
726
+ exp: rhs
727
+ };
728
+ }
729
+ if (binopRHS) {
730
+ exp = {
731
+ children: processBinaryOpExpression([exp, binopRHS[1]])
732
+ };
733
+ }
734
+ exp.ref = ref;
735
+ exp.typeSuffix = typeSuffix;
736
+ return exp;
737
+ }
269
738
  function makeLeftHandSideExpression(expression) {
270
739
  if (expression.parenthesized) {
271
740
  return expression;
@@ -443,7 +912,9 @@ function wrapWithReturn(expression) {
443
912
  const children = expression ? ["return ", expression] : ["return"];
444
913
  return makeNode({
445
914
  type: "ReturnStatement",
446
- children
915
+ children,
916
+ expression,
917
+ parent: expression?.parent
447
918
  });
448
919
  }
449
920
  var assert, typeNeedsNoParens;
@@ -451,6 +922,8 @@ var init_util = __esm({
451
922
  "source/parser/util.civet"() {
452
923
  "use strict";
453
924
  init_traversal();
925
+ init_op();
926
+ init_unary();
454
927
  assert = {
455
928
  equal(a, b, msg) {
456
929
  if (a !== b) {
@@ -862,325 +1335,22 @@ function gatherBindingCode(statements, opts) {
862
1335
  return;
863
1336
  }
864
1337
  const { blockPrefix } = n;
865
- p.push(blockPrefix);
866
- return insertRestSplices(blockPrefix, p, thisAssignments2);
867
- });
868
- }
869
- insertRestSplices(statements, splices, thisAssignments);
870
- return [splices, thisAssignments];
871
- }
872
- function arrayElementHasTrailingComma(elementNode) {
873
- const lastChild = elementNode.children.at(-1);
874
- return lastChild && lastChild[lastChild.length - 1]?.token === ",";
875
- }
876
- var init_binding = __esm({
877
- "source/parser/binding.civet"() {
878
- "use strict";
879
- init_traversal();
880
- init_util();
881
- }
882
- });
883
-
884
- // source/parser/op.civet
885
- function getPrecedence(op) {
886
- if (typeof op === "string") {
887
- return precedenceMap.get(op) ?? (() => {
888
- throw new Error(`Unknown operator: ${op}`);
889
- })();
890
- } else if (typeof op.prec === "number") {
891
- return op.prec;
892
- } else {
893
- return precedenceMap.get(op.prec ?? op.token) ?? (op.relational ? precedenceRelational : precedenceCustomDefault);
894
- }
895
- }
896
- function processBinaryOpExpression($0) {
897
- return recurse(expandChainedComparisons($0));
898
- function recurse(expandedOps) {
899
- let i = 2;
900
- while (i < expandedOps.length) {
901
- let op = expandedOps[i];
902
- if (op.special) {
903
- let advanceLeft2 = function(allowEqual) {
904
- while (start >= 4) {
905
- const prevPrec = getPrecedence(expandedOps[start - 2]);
906
- if (!(prevPrec > prec || allowEqual && prevPrec === prec)) {
907
- return prevPrec === prec;
908
- }
909
- start -= 4;
910
- }
911
- return false;
912
- }, advanceRight2 = function(allowEqual) {
913
- while (end + 4 < expandedOps.length) {
914
- const nextPrec = getPrecedence(expandedOps[end + 2]);
915
- if (!(nextPrec > prec || allowEqual && nextPrec === prec)) {
916
- return nextPrec === prec;
917
- }
918
- end += 4;
919
- }
920
- return false;
921
- };
922
- var advanceLeft = advanceLeft2, advanceRight = advanceRight2;
923
- let start = i - 2, end = i + 2;
924
- const prec = getPrecedence(op);
925
- let error;
926
- switch (op.assoc) {
927
- case "left":
928
- case void 0: {
929
- advanceLeft2(true);
930
- advanceRight2(false);
931
- break;
932
- }
933
- case "right": {
934
- advanceLeft2(false);
935
- advanceRight2(true);
936
- break;
937
- }
938
- case "non": {
939
- if (advanceLeft2(false) || advanceRight2(false)) {
940
- error = {
941
- type: "Error",
942
- message: `non-associative operator ${op.token} used at same precedence level without parenthesization`
943
- };
944
- }
945
- ;
946
- break;
947
- }
948
- case "arguments": {
949
- if (advanceLeft2(false)) {
950
- error = {
951
- type: "Error",
952
- message: `arguments operator ${op.token} used at same precedence level as ${expandedOps[start - 2].token} to the left`
953
- };
954
- }
955
- advanceRight2(true);
956
- break;
957
- }
958
- default: {
959
- throw new Error(`Unsupported associativity: ${op.assoc}`);
960
- }
961
- }
962
- let a = start === i - 2 ? expandedOps[start] : expandedOps.slice(start, i - 1);
963
- let wsOp = expandedOps[i - 1];
964
- let wsB = expandedOps[i + 1];
965
- let b = end === i + 2 ? expandedOps[i + 2] : expandedOps.slice(i + 2, end + 1);
966
- if (op.assoc === "arguments") {
967
- let i2 = 2;
968
- while (i2 < b.length) {
969
- if (prec === getPrecedence(b[i2])) {
970
- if (!(b[i2].token === op.token)) {
971
- error ??= {
972
- type: "Error",
973
- message: `arguments operator ${op.token} used at same precedence level as ${b[i2].token} to the right`
974
- };
975
- }
976
- b[i2] = ",";
977
- }
978
- i2 += 4;
979
- }
980
- } else {
981
- b = recurse(b);
982
- }
983
- if (op.token === "instanceof" && b.type === "Literal" && b.children?.[0]?.type === "StringLiteral") {
984
- a = ["typeof ", makeLeftHandSideExpression(a)];
985
- if (op.negated) {
986
- op = { ...op, token: "!==", negated: false };
987
- } else {
988
- op = { ...op, token: "===" };
989
- }
990
- }
991
- if (op.asConst) {
992
- a = makeAsConst(a);
993
- b = makeAsConst(b);
994
- }
995
- let children;
996
- if (op.call) {
997
- wsOp = insertTrimmingSpace(wsOp, "");
998
- if (op.reversed) {
999
- wsB = insertTrimmingSpace(wsB, "");
1000
- children = [wsOp, op.call, "(", wsB, b, ", ", a, ")", op.suffix];
1001
- } else {
1002
- children = [wsOp, op.call, "(", a, ",", wsB, b, ")", op.suffix];
1003
- }
1004
- } else if (op.method) {
1005
- wsOp = insertTrimmingSpace(wsOp, "");
1006
- wsB = insertTrimmingSpace(wsB, "");
1007
- if (op.reversed) {
1008
- if (end !== i + 2)
1009
- b = makeLeftHandSideExpression(b);
1010
- b = dotNumericLiteral(b);
1011
- children = [wsB, b, wsOp, ".", op.method, "(", a, ")"];
1012
- } else {
1013
- if (start !== i - 2 || a.type === "NumericLiteral") {
1014
- a = makeLeftHandSideExpression(a);
1015
- }
1016
- a = dotNumericLiteral(a);
1017
- children = [a, wsOp, ".", op.method, "(", wsB, b, ")"];
1018
- }
1019
- } else if (op.token) {
1020
- children = [a, wsOp, op, wsB, b];
1021
- if (op.negated)
1022
- children = ["(", ...children, ")"];
1023
- } else {
1024
- throw new Error("Unknown operator: " + JSON.stringify(op));
1025
- }
1026
- if (op.negated)
1027
- children.unshift("!");
1028
- if (error != null) {
1029
- children.push(error);
1030
- }
1031
- expandedOps.splice(start, end - start + 1, {
1032
- children
1033
- });
1034
- i = start + 2;
1035
- } else {
1036
- i += 4;
1037
- }
1038
- }
1039
- return expandedOps;
1040
- }
1041
- ;
1042
- return recurse;
1043
- }
1044
- function dotNumericLiteral(literal) {
1045
- if (literal?.type === "Literal" && /^[+-]?(?:0|[1-9](?:_[0-9]|[0-9])*)$/.test(literal.raw)) {
1046
- literal.children.push(".");
1047
- literal.raw += ".";
1048
- }
1049
- return literal;
1050
- }
1051
- function makeAsConst(node) {
1052
- if (Array.isArray(node) && node.length === 1) {
1053
- node = node[0];
1054
- }
1055
- if (node.type === "Literal" && node.raw !== "null" || node.type === "ArrayExpression" || node.type === "ObjectExpression") {
1056
- return { ...node, children: [...node.children, asConst] };
1057
- } else {
1058
- return node;
1059
- }
1060
- }
1061
- function isExistence(exp) {
1062
- if (exp.type === "ParenthesizedExpression" && exp.implicit) {
1063
- exp = exp.expression;
1064
- }
1065
- if (exp.type === "Existence") {
1066
- return exp;
1067
- }
1068
- ;
1069
- return;
1070
- }
1071
- function isRelationalOp(op) {
1072
- return op.relational || getPrecedence(op) === precedenceRelational;
1073
- }
1074
- function expandChainedComparisons([first, binops]) {
1075
- const results = [];
1076
- let i = 0;
1077
- const l = binops.length;
1078
- let start = 0;
1079
- let chains = [];
1080
- let op;
1081
- while (i < l) {
1082
- [, op] = binops[i];
1083
- if (isRelationalOp(op)) {
1084
- chains.push(i);
1085
- } else if (getPrecedence(op) < precedenceRelational) {
1086
- processChains(op);
1087
- first = void 0;
1088
- }
1089
- i++;
1090
- }
1091
- if (op != null) {
1092
- processChains(op);
1093
- }
1094
- return results;
1095
- function processChains(op2) {
1096
- if (first && isRelationalOp(op2)) {
1097
- first = expandExistence(first);
1098
- }
1099
- if (chains.length > 1) {
1100
- chains.forEach((index, k) => {
1101
- if (k > 0) {
1102
- results.push(" ", "&&", " ");
1103
- }
1104
- const binop = binops[index];
1105
- let [, , , exp] = binop;
1106
- exp = binop[3] = expandExistence(exp);
1107
- let endIndex;
1108
- if (k < chains.length - 1) {
1109
- endIndex = chains[k + 1];
1110
- } else {
1111
- endIndex = i + 1;
1112
- }
1113
- results.push(first, ...binops.slice(start, endIndex).flat());
1114
- first = [exp].concat(binops.slice(index + 1, endIndex));
1115
- return start = endIndex;
1116
- });
1117
- } else {
1118
- if (first) {
1119
- results.push(first);
1120
- }
1121
- results.push(...binops.slice(start, i + 1).flat());
1122
- start = i + 1;
1123
- }
1124
- chains.length = 0;
1125
- }
1126
- function expandExistence(exp) {
1127
- const existence = isExistence(exp);
1128
- if (existence) {
1129
- results.push(existence, " ", "&&", " ");
1130
- return existence.expression;
1131
- }
1132
- return exp;
1338
+ p.push(blockPrefix);
1339
+ return insertRestSplices(blockPrefix, p, thisAssignments2);
1340
+ });
1133
1341
  }
1134
- ;
1342
+ insertRestSplices(statements, splices, thisAssignments);
1343
+ return [splices, thisAssignments];
1135
1344
  }
1136
- var precedenceOrder, precedenceMap, precedenceStep, precedenceRelational, precedenceCustomDefault, asConst;
1137
- var init_op = __esm({
1138
- "source/parser/op.civet"() {
1345
+ function arrayElementHasTrailingComma(elementNode) {
1346
+ const lastChild = elementNode.children.at(-1);
1347
+ return lastChild && lastChild[lastChild.length - 1]?.token === ",";
1348
+ }
1349
+ var init_binding = __esm({
1350
+ "source/parser/binding.civet"() {
1139
1351
  "use strict";
1352
+ init_traversal();
1140
1353
  init_util();
1141
- precedenceOrder = [
1142
- ["||", "??"],
1143
- ["^^"],
1144
- ["&&"],
1145
- ["|"],
1146
- ["^"],
1147
- ["&"],
1148
- // NOTE: Equality and inequality merged because of relational chaining
1149
- [
1150
- "==",
1151
- "!=",
1152
- "===",
1153
- "!==",
1154
- "<",
1155
- "<=",
1156
- ">",
1157
- ">=",
1158
- "in",
1159
- "instanceof"
1160
- ],
1161
- // NOTE: Extra in-between level for default custom operators
1162
- ["custom"],
1163
- ["<<", ">>", ">>>"],
1164
- ["+", "-"],
1165
- ["*", "/", "%"],
1166
- ["**"]
1167
- ];
1168
- precedenceMap = /* @__PURE__ */ new Map();
1169
- for (let i1 = 0, len = precedenceOrder.length; i1 < len; i1++) {
1170
- const prec = i1;
1171
- const ops = precedenceOrder[i1];
1172
- for (let i2 = 0, len1 = ops.length; i2 < len1; i2++) {
1173
- const op = ops[i2];
1174
- precedenceMap.set(op, prec);
1175
- }
1176
- }
1177
- precedenceStep = 1 / 64;
1178
- precedenceRelational = precedenceMap.get("==");
1179
- precedenceCustomDefault = precedenceMap.get("custom");
1180
- asConst = {
1181
- ts: true,
1182
- children: [" as const"]
1183
- };
1184
1354
  }
1185
1355
  });
1186
1356
 
@@ -2446,91 +2616,6 @@ var init_declaration = __esm({
2446
2616
  }
2447
2617
  });
2448
2618
 
2449
- // source/parser/unary.civet
2450
- function processUnaryExpression(pre, exp, post) {
2451
- if (!(pre.length || post))
2452
- return exp;
2453
- if (post?.token === "?") {
2454
- post = {
2455
- $loc: post.$loc,
2456
- token: " != null"
2457
- };
2458
- if (pre.length) {
2459
- const lastPre = pre[pre.length - 1];
2460
- if (lastPre.token === "!") {
2461
- post.token = " == null";
2462
- pre = pre.slice(0, -1);
2463
- } else if (lastPre.length === 2 && lastPre[0].token === "!") {
2464
- post.token = " == null";
2465
- pre = pre.slice(0, -1);
2466
- }
2467
- }
2468
- const existence = {
2469
- type: "Existence",
2470
- expression: exp,
2471
- children: [exp, post]
2472
- };
2473
- exp = makeLeftHandSideExpression(existence);
2474
- if (pre.length) {
2475
- return {
2476
- type: "UnaryExpression",
2477
- children: [...pre, exp]
2478
- };
2479
- }
2480
- return exp;
2481
- }
2482
- if (exp.type === "Literal") {
2483
- if (pre.length === 1) {
2484
- const { token } = pre[0];
2485
- if (token === "-" || token === "+") {
2486
- const children = [pre[0], ...exp.children];
2487
- if (post)
2488
- exp.children.push(post);
2489
- return {
2490
- type: "Literal",
2491
- children,
2492
- raw: `${token}${exp.raw}`
2493
- };
2494
- }
2495
- }
2496
- }
2497
- let ref;
2498
- while (ref = pre.length) {
2499
- const l = ref;
2500
- const last = pre[l - 1];
2501
- if (last.type === "Await") {
2502
- if (last.op) {
2503
- if (exp.type !== "ParenthesizedExpression") {
2504
- exp = ["(", exp, ")"];
2505
- }
2506
- exp = {
2507
- type: "CallExpression",
2508
- children: [...last.children, "Promise", last.op, exp]
2509
- };
2510
- pre = pre.slice(0, -1);
2511
- } else {
2512
- exp = {
2513
- type: "AwaitExpression",
2514
- children: [...last.children, exp]
2515
- };
2516
- pre = pre.slice(0, -1);
2517
- }
2518
- } else {
2519
- break;
2520
- }
2521
- }
2522
- return {
2523
- type: "UnaryExpression",
2524
- children: [...pre, exp, post]
2525
- };
2526
- }
2527
- var init_unary = __esm({
2528
- "source/parser/unary.civet"() {
2529
- "use strict";
2530
- init_util();
2531
- }
2532
- });
2533
-
2534
2619
  // source/parser/pipe.civet
2535
2620
  function constructInvocation(fn, arg) {
2536
2621
  const fnArr = [fn.leadingComment, fn.expr, fn.trailingComment];
@@ -2747,10 +2832,13 @@ var init_pipe = __esm({
2747
2832
  function forRange(open, forDeclaration, range, stepExp, close) {
2748
2833
  const { start, end, inclusive } = range;
2749
2834
  const counterRef = makeRef("i");
2835
+ const infinite = end.type === "Identifier" && end.name === "Infinity";
2750
2836
  let stepRef;
2751
2837
  if (stepExp) {
2752
2838
  stepExp = insertTrimmingSpace(stepExp, "");
2753
2839
  stepRef = maybeRef(stepExp, "step");
2840
+ } else if (infinite) {
2841
+ stepExp = stepRef = "1";
2754
2842
  }
2755
2843
  let startRef = maybeRef(start, "start");
2756
2844
  let endRef = maybeRef(end, "end");
@@ -2780,7 +2868,7 @@ function forRange(open, forDeclaration, range, stepExp, close) {
2780
2868
  } else {
2781
2869
  const value = "StringLiteral" === start.subtype ? ["String.fromCharCode(", counterRef, ")"] : counterRef;
2782
2870
  blockPrefix = [
2783
- ["", forDeclaration, " = ", value, ";"]
2871
+ ["", [forDeclaration, " = ", value], ";"]
2784
2872
  ];
2785
2873
  }
2786
2874
  } else if (forDeclaration) {
@@ -2792,8 +2880,8 @@ function forRange(open, forDeclaration, range, stepExp, close) {
2792
2880
  names: forDeclaration?.names
2793
2881
  };
2794
2882
  const counterPart = inclusive ? [counterRef, " <= ", endRef, " : ", counterRef, " >= ", endRef] : [counterRef, " < ", endRef, " : ", counterRef, " > ", endRef];
2795
- const condition = stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : ascRef ? [ascRef, " ? ", ...counterPart] : asc ? counterPart.slice(0, 3) : counterPart.slice(4);
2796
- const increment = stepRef ? [...varAssign, counterRef, " += ", stepRef] : ascRef ? [...varAssign, ascRef, " ? ++", counterRef, " : --", counterRef] : [...varAssign, asc ? "++" : "--", counterRef];
2883
+ const condition = infinite ? [] : stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : ascRef ? [ascRef, " ? ", ...counterPart] : asc ? counterPart.slice(0, 3) : counterPart.slice(4);
2884
+ const increment = infinite ? [...varAssign, "++", counterRef] : stepRef ? [...varAssign, counterRef, " += ", stepRef] : ascRef ? [...varAssign, ascRef, " ? ++", counterRef, " : --", counterRef] : [...varAssign, asc ? "++" : "--", counterRef];
2797
2885
  return {
2798
2886
  declaration,
2799
2887
  children: [open, declaration, "; ", ...condition, "; ", ...increment, close],
@@ -3284,7 +3372,9 @@ __export(lib_exports, {
3284
3372
  isWhitespaceOrEmpty: () => isWhitespaceOrEmpty,
3285
3373
  lastAccessInCallExpression: () => lastAccessInCallExpression,
3286
3374
  literalValue: () => literalValue,
3375
+ makeAmpersandBlockRHSBody: () => makeAmpersandBlockRHSBody,
3287
3376
  makeAmpersandFunction: () => makeAmpersandFunction,
3377
+ makeAmpersandFunctionExpression: () => makeAmpersandFunctionExpression,
3288
3378
  makeEmptyBlock: () => makeEmptyBlock,
3289
3379
  makeExpressionStatement: () => makeExpressionStatement,
3290
3380
  makeGetterMethod: () => makeGetterMethod,
@@ -4247,6 +4337,7 @@ function processProgram(root, config, m, ReservedWord) {
4247
4337
  assert.equal(m.JSXTagStack.length, 1, "JSXTagStack");
4248
4338
  addParentPointers(root);
4249
4339
  const { expressions: statements } = root;
4340
+ processPartialPlaceholders(statements);
4250
4341
  processNegativeIndexAccess(statements);
4251
4342
  processTypes(statements);
4252
4343
  processDeclarationConditions(statements, m.getRef);
@@ -4291,6 +4382,43 @@ function populateRefs(statements) {
4291
4382
  });
4292
4383
  }
4293
4384
  }
4385
+ function processPartialPlaceholders(statements) {
4386
+ const partialMap = /* @__PURE__ */ new Map();
4387
+ gatherRecursiveAll(statements, ($3) => $3.type === "PartialPlaceholder").forEach((_exp) => {
4388
+ const exp = _exp;
4389
+ let { ancestor } = findAncestor(exp, ($4) => $4?.type === "Call");
4390
+ ancestor = ancestor?.parent;
4391
+ while (ancestor?.parent?.type === "UnaryExpression") {
4392
+ ancestor = ancestor.parent;
4393
+ }
4394
+ if (ancestor) {
4395
+ if (partialMap.has(ancestor)) {
4396
+ return partialMap.get(ancestor).push(exp);
4397
+ } else {
4398
+ return partialMap.set(ancestor, [exp]);
4399
+ }
4400
+ } else {
4401
+ return replaceNode(exp, {
4402
+ type: "Error",
4403
+ message: "Partial placeholder outside of call expression",
4404
+ parent: exp.parent
4405
+ });
4406
+ }
4407
+ });
4408
+ for (const [ancestor, placeholders] of partialMap) {
4409
+ let ref = makeRef("$");
4410
+ placeholders.forEach((exp) => {
4411
+ return replaceNode(exp.children.at(-1), ref);
4412
+ });
4413
+ const rhs = {
4414
+ ref,
4415
+ children: [ancestor]
4416
+ };
4417
+ const fnExp = makeAmpersandFunctionExpression([], rhs);
4418
+ replaceNode(ancestor, fnExp);
4419
+ }
4420
+ return;
4421
+ }
4294
4422
  function reorderBindingRestProperty(props) {
4295
4423
  const names = props.flatMap((p) => p.names);
4296
4424
  let restIndex = -1;
@@ -5001,11 +5129,11 @@ var require_parser = __commonJS({
5001
5129
  WRHS,
5002
5130
  SingleLineBinaryOpRHS,
5003
5131
  RHS,
5004
- ParenthesizedAssignment,
5005
5132
  UnaryExpression,
5006
5133
  UnaryWithoutParenthesizedAssignment,
5007
5134
  UnaryBody,
5008
5135
  UnaryWithoutParenthesizedAssignmentBody,
5136
+ ParenthesizedAssignment,
5009
5137
  UnaryPostfix,
5010
5138
  TypePostfix,
5011
5139
  Tuple,
@@ -5033,6 +5161,7 @@ var require_parser = __commonJS({
5033
5161
  PipelineTailItem,
5034
5162
  PrimaryExpression,
5035
5163
  ParenthesizedExpression,
5164
+ PartialPlaceholder,
5036
5165
  ClassDeclaration,
5037
5166
  ClassExpression,
5038
5167
  ClassBinding,
@@ -5493,6 +5622,7 @@ var require_parser = __commonJS({
5493
5622
  TripleTick,
5494
5623
  Try,
5495
5624
  Typeof,
5625
+ Undefined,
5496
5626
  Unless,
5497
5627
  Until,
5498
5628
  Using,
@@ -5893,124 +6023,126 @@ var require_parser = __commonJS({
5893
6023
  var $L199 = $L("```");
5894
6024
  var $L200 = $L("try");
5895
6025
  var $L201 = $L("typeof");
5896
- var $L202 = $L("unless");
5897
- var $L203 = $L("until");
5898
- var $L204 = $L("using");
5899
- var $L205 = $L("var");
5900
- var $L206 = $L("void");
5901
- var $L207 = $L("when");
5902
- var $L208 = $L("while");
5903
- var $L209 = $L("yield");
5904
- var $L210 = $L("/>");
5905
- var $L211 = $L("</");
5906
- var $L212 = $L("<>");
5907
- var $L213 = $L("</>");
5908
- var $L214 = $L("<!--");
5909
- var $L215 = $L("-->");
5910
- var $L216 = $L("type");
5911
- var $L217 = $L("enum");
5912
- var $L218 = $L("interface");
5913
- var $L219 = $L("global");
5914
- var $L220 = $L("module");
5915
- var $L221 = $L("namespace");
5916
- var $L222 = $L("asserts");
5917
- var $L223 = $L("keyof");
5918
- var $L224 = $L("???");
5919
- var $L225 = $L("[]");
5920
- var $L226 = $L("civet");
6026
+ var $L202 = $L("undefined");
6027
+ var $L203 = $L("unless");
6028
+ var $L204 = $L("until");
6029
+ var $L205 = $L("using");
6030
+ var $L206 = $L("var");
6031
+ var $L207 = $L("void");
6032
+ var $L208 = $L("when");
6033
+ var $L209 = $L("while");
6034
+ var $L210 = $L("yield");
6035
+ var $L211 = $L("/>");
6036
+ var $L212 = $L("</");
6037
+ var $L213 = $L("<>");
6038
+ var $L214 = $L("</>");
6039
+ var $L215 = $L("<!--");
6040
+ var $L216 = $L("-->");
6041
+ var $L217 = $L("type");
6042
+ var $L218 = $L("enum");
6043
+ var $L219 = $L("interface");
6044
+ var $L220 = $L("global");
6045
+ var $L221 = $L("module");
6046
+ var $L222 = $L("namespace");
6047
+ var $L223 = $L("asserts");
6048
+ var $L224 = $L("keyof");
6049
+ var $L225 = $L("???");
6050
+ var $L226 = $L("[]");
6051
+ var $L227 = $L("civet");
5921
6052
  var $R0 = $R(new RegExp("(?=async|debugger|if|unless|do|for|loop|until|while|switch|throw|try)", "suy"));
5922
6053
  var $R1 = $R(new RegExp("(as|of|satisfies|then|when|implements|xor|xnor)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
5923
6054
  var $R2 = $R(new RegExp("[0-9]", "suy"));
5924
6055
  var $R3 = $R(new RegExp("(?!\\p{ID_Start}|[_$0-9(\\[{])", "suy"));
5925
6056
  var $R4 = $R(new RegExp("[ \\t]", "suy"));
5926
- var $R5 = $R(new RegExp("(?=['\"`])", "suy"));
5927
- var $R6 = $R(new RegExp("(?=[\\/?])", "suy"));
5928
- var $R7 = $R(new RegExp("(?=[\\/\\[{?.!@#'\u2019:])", "suy"));
5929
- var $R8 = $R(new RegExp("[)}]", "suy"));
5930
- var $R9 = $R(new RegExp("\\+\\+|--|[\\+-]\\S", "suy"));
5931
- var $R10 = $R(new RegExp("[&]", "suy"));
5932
- var $R11 = $R(new RegExp(`(?=[0-9.'"tfyno])`, "suy"));
5933
- var $R12 = $R(new RegExp("(?=true|false|yes|no|on|off)", "suy"));
5934
- var $R13 = $R(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
5935
- var $R14 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
5936
- var $R15 = $R(new RegExp("(?=\\[)", "suy"));
5937
- var $R16 = $R(new RegExp("[!+-]?", "suy"));
5938
- var $R17 = $R(new RegExp("[+-]", "suy"));
5939
- var $R18 = $R(new RegExp("(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2016\u2047&|*\\/!?%<>\u29FA+-])", "suy"));
5940
- var $R19 = $R(new RegExp("!\\^\\^?", "suy"));
5941
- var $R20 = $R(new RegExp("(?!\\+\\+|--)[!~+-](?!\\s)", "suy"));
5942
- var $R21 = $R(new RegExp("[:.]", "suy"));
5943
- var $R22 = $R(new RegExp("(?=for|if|loop|unless|until|while)", "suy"));
5944
- var $R23 = $R(new RegExp("(?=loop|do|for|until|while)", "suy"));
5945
- var $R24 = $R(new RegExp("(?=[\\s\\),])", "suy"));
5946
- var $R25 = $R(new RegExp('[^;"\\s]+', "suy"));
5947
- var $R26 = $R(new RegExp("(?=[0-9.])", "suy"));
5948
- var $R27 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
5949
- var $R28 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))", "suy"));
5950
- var $R29 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?", "suy"));
5951
- var $R30 = $R(new RegExp("(?:\\.[0-9](?:_[0-9]|[0-9])*)", "suy"));
5952
- var $R31 = $R(new RegExp("(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)", "suy"));
5953
- var $R32 = $R(new RegExp("0[bB][01](?:[01]|_[01])*n?", "suy"));
5954
- var $R33 = $R(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*n?", "suy"));
5955
- var $R34 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?", "suy"));
5956
- var $R35 = $R(new RegExp("(?=[0-9])", "suy"));
5957
- var $R36 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)", "suy"));
5958
- var $R37 = $R(new RegExp('(?:\\\\.|[^"])*', "suy"));
5959
- var $R38 = $R(new RegExp("(?:\\\\.|[^'])*", "suy"));
5960
- var $R39 = $R(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
5961
- var $R40 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
5962
- var $R41 = $R(new RegExp('(?:\\\\.|#(?!\\{)|[^"#])+', "suy"));
5963
- var $R42 = $R(new RegExp("(?:\\\\.|[^\\]])*", "suy"));
5964
- var $R43 = $R(new RegExp("(?:\\\\.)", "suy"));
5965
- var $R44 = $R(new RegExp("[\\s]+", "suy"));
5966
- var $R45 = $R(new RegExp("\\/(?!\\/\\/)", "suy"));
5967
- var $R46 = $R(new RegExp("[^[\\/\\s#\\\\]+", "suy"));
5968
- var $R47 = $R(new RegExp("[*\\/\\r\\n]", "suy"));
5969
- var $R48 = $R(new RegExp("(?:\\\\.|[^[\\/\\r\\n])+", "suy"));
5970
- var $R49 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
5971
- var $R50 = $R(new RegExp("(?=[`'\"])", "suy"));
5972
- var $R51 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
5973
- var $R52 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
5974
- var $R53 = $R(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
5975
- var $R54 = $R(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
5976
- var $R55 = $R(new RegExp("(?:by)(?!\\p{ID_Continue})", "suy"));
5977
- var $R56 = $R(new RegExp("(?:of)(?!\\p{ID_Continue})", "suy"));
5978
- var $R57 = $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"));
5979
- var $R58 = $R(new RegExp("(?=\\/|#)", "suy"));
5980
- var $R59 = $R(new RegExp("\\/\\/(?!\\/)[^\\r\\n]*", "suy"));
5981
- var $R60 = $R(new RegExp(".", "suy"));
5982
- var $R61 = $R(new RegExp("#(?!##(?!#))([^\\r\\n]*)", "suy"));
5983
- var $R62 = $R(new RegExp("[^]*?###", "suy"));
5984
- var $R63 = $R(new RegExp("###(?!#)", "suy"));
5985
- var $R64 = $R(new RegExp("\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\/", "suy"));
5986
- var $R65 = $R(new RegExp("(?=[ \\t\\/\\\\])", "suy"));
5987
- var $R66 = $R(new RegExp("[ \\t]+", "suy"));
5988
- var $R67 = $R(new RegExp("(?=\\s|\\/|#)", "suy"));
5989
- var $R68 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
5990
- var $R69 = $R(new RegExp("[=:]", "suy"));
5991
- var $R70 = $R(new RegExp("['\u2019]s", "suy"));
5992
- var $R71 = $R(new RegExp("\\s", "suy"));
5993
- var $R72 = $R(new RegExp("(?=[<])", "suy"));
5994
- var $R73 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
5995
- var $R74 = $R(new RegExp("[!+-]", "suy"));
5996
- var $R75 = $R(new RegExp("[\\s>]|\\/>", "suy"));
5997
- var $R76 = $R(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
5998
- var $R77 = $R(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
5999
- var $R78 = $R(new RegExp("[<>]", "suy"));
6000
- var $R79 = $R(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
6001
- var $R80 = $R(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
6002
- var $R81 = $R(new RegExp("[^{}<>\\r\\n]+", "suy"));
6003
- var $R82 = $R(new RegExp("[+-]?", "suy"));
6004
- var $R83 = $R(new RegExp("(?=if|unless)", "suy"));
6005
- var $R84 = $R(new RegExp("#![^\\r\\n]*", "suy"));
6006
- var $R85 = $R(new RegExp("[\\t ]*", "suy"));
6007
- var $R86 = $R(new RegExp("[ \\t]*", "suy"));
6008
- var $R87 = $R(new RegExp("[\\s]*", "suy"));
6009
- var $R88 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
6010
- var $R89 = $R(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
6011
- var $R90 = $R(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
6012
- var $R91 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
6013
- var $R92 = $R(new RegExp("[^]*", "suy"));
6057
+ var $R5 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$.])", "suy"));
6058
+ var $R6 = $R(new RegExp("(?=['\"`])", "suy"));
6059
+ var $R7 = $R(new RegExp("(?=[\\/?])", "suy"));
6060
+ var $R8 = $R(new RegExp("(?=[\\/\\[{?.!@#'\u2019:])", "suy"));
6061
+ var $R9 = $R(new RegExp("[)}]", "suy"));
6062
+ var $R10 = $R(new RegExp("[+-]", "suy"));
6063
+ var $R11 = $R(new RegExp("\\+\\+|--|[\\+-]\\S", "suy"));
6064
+ var $R12 = $R(new RegExp("[&]", "suy"));
6065
+ var $R13 = $R(new RegExp(`(?=[0-9.'"tfyno])`, "suy"));
6066
+ var $R14 = $R(new RegExp("(?=true|false|yes|no|on|off)", "suy"));
6067
+ var $R15 = $R(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
6068
+ var $R16 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
6069
+ var $R17 = $R(new RegExp("(?=\\[)", "suy"));
6070
+ var $R18 = $R(new RegExp("[!+-]?", "suy"));
6071
+ var $R19 = $R(new RegExp("(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2016\u2047&|*\\/!?%<>\u29FA+-])", "suy"));
6072
+ var $R20 = $R(new RegExp("!\\^\\^?", "suy"));
6073
+ var $R21 = $R(new RegExp("(?!\\+\\+|--)[!~+-](?!\\s)", "suy"));
6074
+ var $R22 = $R(new RegExp("[:.]", "suy"));
6075
+ var $R23 = $R(new RegExp("(?=for|if|loop|unless|until|while)", "suy"));
6076
+ var $R24 = $R(new RegExp("(?=loop|do|for|until|while)", "suy"));
6077
+ var $R25 = $R(new RegExp("(?=[\\s\\),])", "suy"));
6078
+ var $R26 = $R(new RegExp('[^;"\\s]+', "suy"));
6079
+ var $R27 = $R(new RegExp("(?=[0-9.])", "suy"));
6080
+ var $R28 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
6081
+ var $R29 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))", "suy"));
6082
+ var $R30 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?", "suy"));
6083
+ var $R31 = $R(new RegExp("(?:\\.[0-9](?:_[0-9]|[0-9])*)", "suy"));
6084
+ var $R32 = $R(new RegExp("(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)", "suy"));
6085
+ var $R33 = $R(new RegExp("0[bB][01](?:[01]|_[01])*n?", "suy"));
6086
+ var $R34 = $R(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*n?", "suy"));
6087
+ var $R35 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?", "suy"));
6088
+ var $R36 = $R(new RegExp("(?=[0-9])", "suy"));
6089
+ var $R37 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)", "suy"));
6090
+ var $R38 = $R(new RegExp('(?:\\\\.|[^"])*', "suy"));
6091
+ var $R39 = $R(new RegExp("(?:\\\\.|[^'])*", "suy"));
6092
+ var $R40 = $R(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
6093
+ var $R41 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
6094
+ var $R42 = $R(new RegExp('(?:\\\\.|#(?!\\{)|[^"#])+', "suy"));
6095
+ var $R43 = $R(new RegExp("(?:\\\\.|[^\\]])*", "suy"));
6096
+ var $R44 = $R(new RegExp("(?:\\\\.)", "suy"));
6097
+ var $R45 = $R(new RegExp("[\\s]+", "suy"));
6098
+ var $R46 = $R(new RegExp("\\/(?!\\/\\/)", "suy"));
6099
+ var $R47 = $R(new RegExp("[^[\\/\\s#\\\\]+", "suy"));
6100
+ var $R48 = $R(new RegExp("[*\\/\\r\\n]", "suy"));
6101
+ var $R49 = $R(new RegExp("(?:\\\\.|[^[\\/\\r\\n])+", "suy"));
6102
+ var $R50 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
6103
+ var $R51 = $R(new RegExp("(?=[`'\"])", "suy"));
6104
+ var $R52 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
6105
+ var $R53 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
6106
+ var $R54 = $R(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
6107
+ var $R55 = $R(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
6108
+ var $R56 = $R(new RegExp("(?:by)(?!\\p{ID_Continue})", "suy"));
6109
+ var $R57 = $R(new RegExp("(?:of)(?!\\p{ID_Continue})", "suy"));
6110
+ var $R58 = $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"));
6111
+ var $R59 = $R(new RegExp("(?=\\/|#)", "suy"));
6112
+ var $R60 = $R(new RegExp("\\/\\/(?!\\/)[^\\r\\n]*", "suy"));
6113
+ var $R61 = $R(new RegExp(".", "suy"));
6114
+ var $R62 = $R(new RegExp("#(?!##(?!#))([^\\r\\n]*)", "suy"));
6115
+ var $R63 = $R(new RegExp("[^]*?###", "suy"));
6116
+ var $R64 = $R(new RegExp("###(?!#)", "suy"));
6117
+ var $R65 = $R(new RegExp("\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\/", "suy"));
6118
+ var $R66 = $R(new RegExp("(?=[ \\t\\/\\\\])", "suy"));
6119
+ var $R67 = $R(new RegExp("[ \\t]+", "suy"));
6120
+ var $R68 = $R(new RegExp("(?=\\s|\\/|#)", "suy"));
6121
+ var $R69 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
6122
+ var $R70 = $R(new RegExp("[=:]", "suy"));
6123
+ var $R71 = $R(new RegExp("['\u2019]s", "suy"));
6124
+ var $R72 = $R(new RegExp("\\s", "suy"));
6125
+ var $R73 = $R(new RegExp("(?=[<])", "suy"));
6126
+ var $R74 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
6127
+ var $R75 = $R(new RegExp("[!+-]", "suy"));
6128
+ var $R76 = $R(new RegExp("[\\s>]|\\/>", "suy"));
6129
+ var $R77 = $R(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
6130
+ var $R78 = $R(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
6131
+ var $R79 = $R(new RegExp("[<>]", "suy"));
6132
+ var $R80 = $R(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
6133
+ var $R81 = $R(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
6134
+ var $R82 = $R(new RegExp("[^{}<>\\r\\n]+", "suy"));
6135
+ var $R83 = $R(new RegExp("[+-]?", "suy"));
6136
+ var $R84 = $R(new RegExp("(?=if|unless)", "suy"));
6137
+ var $R85 = $R(new RegExp("#![^\\r\\n]*", "suy"));
6138
+ var $R86 = $R(new RegExp("[\\t ]*", "suy"));
6139
+ var $R87 = $R(new RegExp("[ \\t]*", "suy"));
6140
+ var $R88 = $R(new RegExp("[\\s]*", "suy"));
6141
+ var $R89 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
6142
+ var $R90 = $R(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
6143
+ var $R91 = $R(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
6144
+ var $R92 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
6145
+ var $R93 = $R(new RegExp("[^]*", "suy"));
6014
6146
  var Program$0 = $TS($S(Reset, Init, $E(EOS), TopLevelStatements, __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
6015
6147
  var statements = $4;
6016
6148
  processProgram({
@@ -6423,17 +6555,12 @@ var require_parser = __commonJS({
6423
6555
  function SingleLineBinaryOpRHS(ctx, state) {
6424
6556
  return $EVENT(ctx, state, "SingleLineBinaryOpRHS", SingleLineBinaryOpRHS$0);
6425
6557
  }
6426
- var RHS$0 = ParenthesizedAssignment;
6427
- var RHS$1 = UnaryExpression;
6428
- var RHS$2 = ExpressionizedStatementWithTrailingCallExpressions;
6429
- var RHS$$ = [RHS$0, RHS$1, RHS$2];
6558
+ var RHS$0 = UnaryExpression;
6559
+ var RHS$1 = ExpressionizedStatementWithTrailingCallExpressions;
6560
+ var RHS$$ = [RHS$0, RHS$1];
6430
6561
  function RHS(ctx, state) {
6431
6562
  return $EVENT_C(ctx, state, "RHS", RHS$$);
6432
6563
  }
6433
- var ParenthesizedAssignment$0 = $S(InsertOpenParen, ActualAssignment, InsertCloseParen);
6434
- function ParenthesizedAssignment(ctx, state) {
6435
- return $EVENT(ctx, state, "ParenthesizedAssignment", ParenthesizedAssignment$0);
6436
- }
6437
6564
  var UnaryExpression$0 = AmpersandFunctionExpression;
6438
6565
  var UnaryExpression$1 = $TS($S($Q(UnaryOp), UnaryBody, $E(UnaryPostfix)), function($skip, $loc, $0, $1, $2, $3) {
6439
6566
  var pre = $1;
@@ -6475,6 +6602,10 @@ var require_parser = __commonJS({
6475
6602
  function UnaryWithoutParenthesizedAssignmentBody(ctx, state) {
6476
6603
  return $EVENT_C(ctx, state, "UnaryWithoutParenthesizedAssignmentBody", UnaryWithoutParenthesizedAssignmentBody$$);
6477
6604
  }
6605
+ var ParenthesizedAssignment$0 = $S(InsertOpenParen, $C(ActualAssignment, ArrowFunction), InsertCloseParen);
6606
+ function ParenthesizedAssignment(ctx, state) {
6607
+ return $EVENT(ctx, state, "ParenthesizedAssignment", ParenthesizedAssignment$0);
6608
+ }
6478
6609
  var UnaryPostfix$0 = QuestionMark;
6479
6610
  var UnaryPostfix$1 = $P(TypePostfix);
6480
6611
  var UnaryPostfix$$ = [UnaryPostfix$0, UnaryPostfix$1];
@@ -6787,8 +6918,9 @@ var require_parser = __commonJS({
6787
6918
  var PrimaryExpression$7 = ClassExpression;
6788
6919
  var PrimaryExpression$8 = RegularExpressionLiteral;
6789
6920
  var PrimaryExpression$9 = ParenthesizedExpression;
6790
- var PrimaryExpression$10 = JSXImplicitFragment;
6791
- var PrimaryExpression$$ = [PrimaryExpression$0, PrimaryExpression$1, PrimaryExpression$2, PrimaryExpression$3, PrimaryExpression$4, PrimaryExpression$5, PrimaryExpression$6, PrimaryExpression$7, PrimaryExpression$8, PrimaryExpression$9, PrimaryExpression$10];
6921
+ var PrimaryExpression$10 = PartialPlaceholder;
6922
+ var PrimaryExpression$11 = JSXImplicitFragment;
6923
+ var PrimaryExpression$$ = [PrimaryExpression$0, PrimaryExpression$1, PrimaryExpression$2, PrimaryExpression$3, PrimaryExpression$4, PrimaryExpression$5, PrimaryExpression$6, PrimaryExpression$7, PrimaryExpression$8, PrimaryExpression$9, PrimaryExpression$10, PrimaryExpression$11];
6792
6924
  function PrimaryExpression(ctx, state) {
6793
6925
  return $EVENT_C(ctx, state, "PrimaryExpression", PrimaryExpression$$);
6794
6926
  }
@@ -6822,6 +6954,16 @@ var require_parser = __commonJS({
6822
6954
  function ParenthesizedExpression(ctx, state) {
6823
6955
  return $EVENT(ctx, state, "ParenthesizedExpression", ParenthesizedExpression$0);
6824
6956
  }
6957
+ var PartialPlaceholder$0 = $TS($S(Dot, $N($EXPECT($R5, "PartialPlaceholder /(?:\\p{ID_Continue}|[\\u200C\\u200D$.])/"))), function($skip, $loc, $0, $1, $2) {
6958
+ var dot = $1;
6959
+ return {
6960
+ type: "PartialPlaceholder",
6961
+ children: [dot]
6962
+ };
6963
+ });
6964
+ function PartialPlaceholder(ctx, state) {
6965
+ return $EVENT(ctx, state, "PartialPlaceholder", PartialPlaceholder$0);
6966
+ }
6825
6967
  var ClassDeclaration$0 = $TS($S(ClassExpression), function($skip, $loc, $0, $1) {
6826
6968
  if ($1.id)
6827
6969
  return $1;
@@ -7255,7 +7397,7 @@ var require_parser = __commonJS({
7255
7397
  var CallExpressionRest$1 = $T($S(TypeArguments, $N($C(IdentifierName, NumericLiteral))), function(value) {
7256
7398
  return value[0];
7257
7399
  });
7258
- var CallExpressionRest$2 = $TS($S($EXPECT($R5, "CallExpressionRest /(?=['\"`])/"), $C(TemplateLiteral, StringLiteral)), function($skip, $loc, $0, $1, $2) {
7400
+ var CallExpressionRest$2 = $TS($S($EXPECT($R6, "CallExpressionRest /(?=['\"`])/"), $C(TemplateLiteral, StringLiteral)), function($skip, $loc, $0, $1, $2) {
7259
7401
  var literal = $2;
7260
7402
  if (literal.type === "StringLiteral") {
7261
7403
  literal = "`" + literal.token.slice(1, -1).replace(/(`|\$\{)/g, "\\$1") + "`";
@@ -7278,7 +7420,7 @@ var require_parser = __commonJS({
7278
7420
  function CallExpressionRest(ctx, state) {
7279
7421
  return $EVENT_C(ctx, state, "CallExpressionRest", CallExpressionRest$$);
7280
7422
  }
7281
- var OptionalShorthand$0 = $TS($S($EXPECT($R6, "OptionalShorthand /(?=[\\/?])/"), $Q(InlineComment), QuestionMark, OptionalDot), function($skip, $loc, $0, $1, $2, $3, $4) {
7423
+ var OptionalShorthand$0 = $TS($S($EXPECT($R7, "OptionalShorthand /(?=[\\/?])/"), $Q(InlineComment), QuestionMark, OptionalDot), function($skip, $loc, $0, $1, $2, $3, $4) {
7282
7424
  var comments = $2;
7283
7425
  var q = $3;
7284
7426
  var d = $4;
@@ -7332,7 +7474,7 @@ var require_parser = __commonJS({
7332
7474
  function MemberBase(ctx, state) {
7333
7475
  return $EVENT_C(ctx, state, "MemberBase", MemberBase$$);
7334
7476
  }
7335
- var MemberExpressionRest$0 = $TS($S($EXPECT($R7, "MemberExpressionRest /(?=[\\/\\[{?.!@#'\u2019:])/"), $Q(InlineComment), MemberExpressionRestBody), function($skip, $loc, $0, $1, $2, $3) {
7477
+ var MemberExpressionRest$0 = $TS($S($EXPECT($R8, "MemberExpressionRest /(?=[\\/\\[{?.!@#'\u2019:])/"), $Q(InlineComment), MemberExpressionRestBody), function($skip, $loc, $0, $1, $2, $3) {
7336
7478
  var comments = $2;
7337
7479
  var body = $3;
7338
7480
  if (Array.isArray(body))
@@ -7816,7 +7958,7 @@ var require_parser = __commonJS({
7816
7958
  return $EVENT(ctx, state, "ParameterElement", ParameterElement$0);
7817
7959
  }
7818
7960
  var ParameterElementDelimiter$0 = $S($E(_), Comma);
7819
- var ParameterElementDelimiter$1 = $Y($S(__, $R$0($EXPECT($R8, "ParameterElementDelimiter /[)}]/"))));
7961
+ var ParameterElementDelimiter$1 = $Y($S(__, $R$0($EXPECT($R9, "ParameterElementDelimiter /[)}]/"))));
7820
7962
  var ParameterElementDelimiter$2 = $T($S($Y(EOS), InsertComma), function(value) {
7821
7963
  return value[1];
7822
7964
  });
@@ -7885,7 +8027,23 @@ var require_parser = __commonJS({
7885
8027
  expression
7886
8028
  };
7887
8029
  });
7888
- var PinPattern$$ = [PinPattern$0, PinPattern$1];
8030
+ var PinPattern$2 = $TV($S($EXPECT($R10, "PinPattern /[+-]/"), NumericLiteral), function($skip, $loc, $0, $1) {
8031
+ var expression = $0;
8032
+ return {
8033
+ type: "PinPattern",
8034
+ children: [expression],
8035
+ expression
8036
+ };
8037
+ });
8038
+ var PinPattern$3 = $TV(Undefined, function($skip, $loc, $0, $1) {
8039
+ var expression = $0;
8040
+ return {
8041
+ type: "PinPattern",
8042
+ children: [expression],
8043
+ expression
8044
+ };
8045
+ });
8046
+ var PinPattern$$ = [PinPattern$0, PinPattern$1, PinPattern$2, PinPattern$3];
7889
8047
  function PinPattern(ctx, state) {
7890
8048
  return $EVENT_C(ctx, state, "PinPattern", PinPattern$$);
7891
8049
  }
@@ -8320,7 +8478,7 @@ var require_parser = __commonJS({
8320
8478
  parameters
8321
8479
  };
8322
8480
  });
8323
- var FunctionExpression$4 = $TS($S(OpenParen, __, $N($EXPECT($R9, "FunctionExpression /\\+\\+|--|[\\+-]\\S/")), BinaryOp, __, NonPipelineAssignmentExpression, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
8481
+ var FunctionExpression$4 = $TS($S(OpenParen, __, $N($EXPECT($R11, "FunctionExpression /\\+\\+|--|[\\+-]\\S/")), BinaryOp, __, NonPipelineAssignmentExpression, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
8324
8482
  var open = $1;
8325
8483
  var ws1 = $2;
8326
8484
  var op = $4;
@@ -8363,52 +8521,7 @@ var require_parser = __commonJS({
8363
8521
  var rhs = $3;
8364
8522
  if (!prefix.length && !rhs)
8365
8523
  return $skip;
8366
- let body, ref, typeSuffix;
8367
- if (!rhs) {
8368
- body = ref = makeRef("$");
8369
- } else {
8370
- ({ ref, typeSuffix } = rhs);
8371
- if (!ref) {
8372
- throw new Error("Could not find ref in ampersand shorthand block");
8373
- }
8374
- body = rhs;
8375
- }
8376
- if (prefix.length) {
8377
- body = {
8378
- type: "UnaryExpression",
8379
- children: [processUnaryExpression(prefix, body, void 0)]
8380
- };
8381
- }
8382
- const parameters = {
8383
- type: "Parameters",
8384
- children: typeSuffix ? ["(", ref, typeSuffix, ")"] : [ref],
8385
- names: []
8386
- };
8387
- const expressions = [body];
8388
- const block = {
8389
- bare: true,
8390
- expressions,
8391
- children: [expressions]
8392
- };
8393
- const children = [parameters, " => ", block];
8394
- const async = hasAwait(body);
8395
- if (async) {
8396
- children.unshift("async ");
8397
- }
8398
- return {
8399
- type: "ArrowFunction",
8400
- signature: {
8401
- modifier: {
8402
- async
8403
- }
8404
- },
8405
- children,
8406
- ref,
8407
- body,
8408
- ampersandBlock: true,
8409
- block,
8410
- parameters
8411
- };
8524
+ return makeAmpersandFunctionExpression(prefix, rhs);
8412
8525
  });
8413
8526
  function AmpersandFunctionExpression(ctx, state) {
8414
8527
  return $EVENT(ctx, state, "AmpersandFunctionExpression", AmpersandFunctionExpression$0);
@@ -8534,7 +8647,7 @@ var require_parser = __commonJS({
8534
8647
  function AmpersandTypeSuffix(ctx, state) {
8535
8648
  return $EVENT(ctx, state, "AmpersandTypeSuffix", AmpersandTypeSuffix$0);
8536
8649
  }
8537
- var AmpersandBlockRHSBody$0 = $TS($S($E(AmpersandTypeSuffix), $E($S($N(_), $P(CallExpressionRest))), $E(UnaryPostfix), $E($S(WAssignmentOp, $Q($S(NotDedented, UpdateExpression, WAssignmentOp)), NonPipelineExtendedExpression)), $E($S($N($EXPECT($R10, "AmpersandBlockRHSBody /[&]/")), $P(BinaryOpRHS)))), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8650
+ var AmpersandBlockRHSBody$0 = $TS($S($E(AmpersandTypeSuffix), $E($S($N(_), $P(CallExpressionRest))), $E(UnaryPostfix), $E($S(WAssignmentOp, $Q($S(NotDedented, UpdateExpression, WAssignmentOp)), NonPipelineExtendedExpression)), $E($S($N($EXPECT($R12, "AmpersandBlockRHSBody /[&]/")), $P(BinaryOpRHS)))), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8538
8651
  var typeSuffix = $1;
8539
8652
  var callExpRest = $2;
8540
8653
  var unaryPostfix = $3;
@@ -8542,42 +8655,7 @@ var require_parser = __commonJS({
8542
8655
  var binopRHS = $5;
8543
8656
  if (!typeSuffix && !callExpRest && !binopRHS && !unaryPostfix)
8544
8657
  return $skip;
8545
- const ref = makeRef("$");
8546
- let exp = {
8547
- type: "AmpersandRef",
8548
- children: [ref],
8549
- names: [],
8550
- ref
8551
- };
8552
- if (callExpRest) {
8553
- exp.children.push(...callExpRest[1]);
8554
- }
8555
- if (unaryPostfix) {
8556
- exp = processUnaryExpression([], exp, unaryPostfix);
8557
- }
8558
- if (assign) {
8559
- const [op1, more, rhs] = assign;
8560
- const lhs = [
8561
- [void 0, exp, ...op1],
8562
- ...more.map((x) => [x[0], x[1], ...x[2]])
8563
- ];
8564
- exp = {
8565
- type: "AssignmentExpression",
8566
- children: [lhs, rhs],
8567
- names: null,
8568
- lhs,
8569
- assigned: exp,
8570
- exp: rhs
8571
- };
8572
- }
8573
- if (binopRHS) {
8574
- exp = {
8575
- children: processBinaryOpExpression([exp, binopRHS[1]])
8576
- };
8577
- }
8578
- exp.ref = ref;
8579
- exp.typeSuffix = typeSuffix;
8580
- return exp;
8658
+ return makeAmpersandBlockRHSBody(typeSuffix, callExpRest, unaryPostfix, assign, binopRHS);
8581
8659
  });
8582
8660
  function AmpersandBlockRHSBody(ctx, state) {
8583
8661
  return $EVENT(ctx, state, "AmpersandBlockRHSBody", AmpersandBlockRHSBody$0);
@@ -8978,7 +9056,7 @@ var require_parser = __commonJS({
8978
9056
  function BlockStatementPart(ctx, state) {
8979
9057
  return $EVENT(ctx, state, "BlockStatementPart", BlockStatementPart$0);
8980
9058
  }
8981
- var Literal$0 = $TS($S($EXPECT($R11, `Literal /(?=[0-9.'"tfyno])/`), LiteralContent), function($skip, $loc, $0, $1, $2) {
9059
+ var Literal$0 = $TS($S($EXPECT($R13, `Literal /(?=[0-9.'"tfyno])/`), LiteralContent), function($skip, $loc, $0, $1, $2) {
8982
9060
  var literal = $2;
8983
9061
  return {
8984
9062
  type: "Literal",
@@ -9004,7 +9082,7 @@ var require_parser = __commonJS({
9004
9082
  function NullLiteral(ctx, state) {
9005
9083
  return $EVENT(ctx, state, "NullLiteral", NullLiteral$0);
9006
9084
  }
9007
- var BooleanLiteral$0 = $T($S($EXPECT($R12, "BooleanLiteral /(?=true|false|yes|no|on|off)/"), _BooleanLiteral), function(value) {
9085
+ var BooleanLiteral$0 = $T($S($EXPECT($R14, "BooleanLiteral /(?=true|false|yes|no|on|off)/"), _BooleanLiteral), function(value) {
9008
9086
  return value[1];
9009
9087
  });
9010
9088
  function BooleanLiteral(ctx, state) {
@@ -9030,14 +9108,14 @@ var require_parser = __commonJS({
9030
9108
  function CoffeeScriptBooleanLiteral(ctx, state) {
9031
9109
  return $EVENT_C(ctx, state, "CoffeeScriptBooleanLiteral", CoffeeScriptBooleanLiteral$$);
9032
9110
  }
9033
- var Identifier$0 = $T($S($EXPECT($R13, "Identifier /(?=\\p{ID_Start}|[_$])/"), $N(ReservedWord), IdentifierName), function(value) {
9111
+ var Identifier$0 = $T($S($EXPECT($R15, "Identifier /(?=\\p{ID_Start}|[_$])/"), $N(ReservedWord), IdentifierName), function(value) {
9034
9112
  var id = value[2];
9035
9113
  return id;
9036
9114
  });
9037
9115
  function Identifier(ctx, state) {
9038
9116
  return $EVENT(ctx, state, "Identifier", Identifier$0);
9039
9117
  }
9040
- var IdentifierName$0 = $TR($EXPECT($R14, "IdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
9118
+ var IdentifierName$0 = $TR($EXPECT($R16, "IdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
9041
9119
  return {
9042
9120
  type: "Identifier",
9043
9121
  name: $0,
@@ -9059,7 +9137,7 @@ var require_parser = __commonJS({
9059
9137
  function UpcomingAssignment(ctx, state) {
9060
9138
  return $EVENT(ctx, state, "UpcomingAssignment", UpcomingAssignment$0);
9061
9139
  }
9062
- var ArrayLiteral$0 = $T($S($EXPECT($R15, "ArrayLiteral /(?=\\[)/"), _ArrayLiteral), function(value) {
9140
+ var ArrayLiteral$0 = $T($S($EXPECT($R17, "ArrayLiteral /(?=\\[)/"), _ArrayLiteral), function(value) {
9063
9141
  return value[1];
9064
9142
  });
9065
9143
  function ArrayLiteral(ctx, state) {
@@ -9160,8 +9238,26 @@ var require_parser = __commonJS({
9160
9238
  end: e
9161
9239
  };
9162
9240
  });
9241
+ var RangeExpression$1 = $TS($S(ExtendedExpression, __, DotDot, $Y($S(__, CloseBracket))), function($skip, $loc, $0, $1, $2, $3, $4) {
9242
+ var s = $1;
9243
+ var ws = $2;
9244
+ return {
9245
+ type: "RangeExpression",
9246
+ children: ["[]", {
9247
+ type: "Error",
9248
+ message: "Infinite range [x..] is only valid in for loops"
9249
+ }],
9250
+ start: s,
9251
+ end: {
9252
+ type: "Identifier",
9253
+ name: "Infinity",
9254
+ children: ["Infinity"]
9255
+ }
9256
+ };
9257
+ });
9258
+ var RangeExpression$$ = [RangeExpression$0, RangeExpression$1];
9163
9259
  function RangeExpression(ctx, state) {
9164
- return $EVENT(ctx, state, "RangeExpression", RangeExpression$0);
9260
+ return $EVENT_C(ctx, state, "RangeExpression", RangeExpression$$);
9165
9261
  }
9166
9262
  var ArrayLiteralContent$0 = RangeExpression;
9167
9263
  var ArrayLiteralContent$1 = $S(NestedElementList, $Y($S(__, CloseBracket)));
@@ -9483,7 +9579,7 @@ var require_parser = __commonJS({
9483
9579
  children: [ws, ...prop.children]
9484
9580
  };
9485
9581
  });
9486
- var PropertyDefinition$1 = $TS($S($E(_), $TEXT($EXPECT($R16, "PropertyDefinition /[!+-]?/")), PropertyName, $Y(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
9582
+ var PropertyDefinition$1 = $TS($S($E(_), $TEXT($EXPECT($R18, "PropertyDefinition /[!+-]?/")), PropertyName, $Y(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
9487
9583
  var ws = $1;
9488
9584
  var toggle = $2;
9489
9585
  var id = $3;
@@ -9668,7 +9764,7 @@ var require_parser = __commonJS({
9668
9764
  implicit: true
9669
9765
  };
9670
9766
  });
9671
- var ComputedPropertyName$2 = $TS($S(InsertOpenBracket, $EXPECT($R17, "ComputedPropertyName /[+-]/"), NumericLiteral, InsertCloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
9767
+ var ComputedPropertyName$2 = $TS($S(InsertOpenBracket, $EXPECT($R10, "ComputedPropertyName /[+-]/"), NumericLiteral, InsertCloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
9672
9768
  const expression = [$2, $3];
9673
9769
  return {
9674
9770
  type: "ComputedPropertyName",
@@ -9677,7 +9773,18 @@ var require_parser = __commonJS({
9677
9773
  implicit: true
9678
9774
  };
9679
9775
  });
9680
- var ComputedPropertyName$$ = [ComputedPropertyName$0, ComputedPropertyName$1, ComputedPropertyName$2];
9776
+ var ComputedPropertyName$3 = $TS($S(InsertOpenBracket, PartialPlaceholder, InsertCloseBracket), function($skip, $loc, $0, $1, $2, $3) {
9777
+ var open = $1;
9778
+ var expression = $2;
9779
+ var close = $3;
9780
+ return {
9781
+ type: "ComputedPropertyName",
9782
+ expression,
9783
+ children: [open, expression, close],
9784
+ implicit: true
9785
+ };
9786
+ });
9787
+ var ComputedPropertyName$$ = [ComputedPropertyName$0, ComputedPropertyName$1, ComputedPropertyName$2, ComputedPropertyName$3];
9681
9788
  function ComputedPropertyName(ctx, state) {
9682
9789
  return $EVENT_C(ctx, state, "ComputedPropertyName", ComputedPropertyName$$);
9683
9790
  }
@@ -10047,7 +10154,7 @@ var require_parser = __commonJS({
10047
10154
  function IdentifierBinaryOp(ctx, state) {
10048
10155
  return $EVENT(ctx, state, "IdentifierBinaryOp", IdentifierBinaryOp$0);
10049
10156
  }
10050
- var BinaryOp$0 = $T($S($EXPECT($R18, "BinaryOp /(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2016\u2047&|*\\/!?%<>\u29FA+-])/"), _BinaryOp), function(value) {
10157
+ var BinaryOp$0 = $T($S($EXPECT($R19, "BinaryOp /(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2016\u2047&|*\\/!?%<>\u29FA+-])/"), _BinaryOp), function(value) {
10051
10158
  var op = value[1];
10052
10159
  return op;
10053
10160
  });
@@ -10182,7 +10289,7 @@ var require_parser = __commonJS({
10182
10289
  prec: "^^"
10183
10290
  };
10184
10291
  });
10185
- var BinaryOpSymbol$35 = $TV($C($EXPECT($R19, "BinaryOpSymbol /!\\^\\^?/"), $S($EXPECT($L101, 'BinaryOpSymbol "xnor"'), NonIdContinue)), function($skip, $loc, $0, $1) {
10292
+ var BinaryOpSymbol$35 = $TV($C($EXPECT($R20, "BinaryOpSymbol /!\\^\\^?/"), $S($EXPECT($L101, 'BinaryOpSymbol "xnor"'), NonIdContinue)), function($skip, $loc, $0, $1) {
10186
10293
  return {
10187
10294
  call: module.getRef("xnor"),
10188
10295
  special: true,
@@ -10346,24 +10453,24 @@ var require_parser = __commonJS({
10346
10453
  function Xor(ctx, state) {
10347
10454
  return $EVENT_C(ctx, state, "Xor", Xor$$);
10348
10455
  }
10349
- var Xnor$0 = $R$0($EXPECT($R19, "Xnor /!\\^\\^?/"));
10456
+ var Xnor$0 = $R$0($EXPECT($R20, "Xnor /!\\^\\^?/"));
10350
10457
  var Xnor$1 = $EXPECT($L101, 'Xnor "xnor"');
10351
10458
  var Xnor$$ = [Xnor$0, Xnor$1];
10352
10459
  function Xnor(ctx, state) {
10353
10460
  return $EVENT_C(ctx, state, "Xnor", Xnor$$);
10354
10461
  }
10355
- var UnaryOp$0 = $TR($EXPECT($R20, "UnaryOp /(?!\\+\\+|--)[!~+-](?!\\s)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
10462
+ var UnaryOp$0 = $TR($EXPECT($R21, "UnaryOp /(?!\\+\\+|--)[!~+-](?!\\s)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
10356
10463
  return { $loc, token: $0 };
10357
10464
  });
10358
10465
  var UnaryOp$1 = AwaitOp;
10359
- var UnaryOp$2 = $TS($S($C(Delete, Void, Typeof), $N($EXPECT($R21, "UnaryOp /[:.]/")), $E(_)), function($skip, $loc, $0, $1, $2, $3) {
10466
+ var UnaryOp$2 = $TS($S($C(Delete, Void, Typeof), $N($EXPECT($R22, "UnaryOp /[:.]/")), $E(_)), function($skip, $loc, $0, $1, $2, $3) {
10360
10467
  var op = $1;
10361
10468
  var ws = $3;
10362
10469
  if (!ws)
10363
10470
  return [op, [" "]];
10364
10471
  return [op, ws];
10365
10472
  });
10366
- var UnaryOp$3 = $T($S(Not, $N($EXPECT($R21, "UnaryOp /[:.]/")), $E($EXPECT($L16, 'UnaryOp " "')), $E(_)), function(value) {
10473
+ var UnaryOp$3 = $T($S(Not, $N($EXPECT($R22, "UnaryOp /[:.]/")), $E($EXPECT($L16, 'UnaryOp " "')), $E(_)), function(value) {
10367
10474
  return [value[0], value[3]];
10368
10475
  });
10369
10476
  var UnaryOp$$ = [UnaryOp$0, UnaryOp$1, UnaryOp$2, UnaryOp$3];
@@ -10458,7 +10565,7 @@ var require_parser = __commonJS({
10458
10565
  function NonPipelinePostfixedExpression(ctx, state) {
10459
10566
  return $EVENT(ctx, state, "NonPipelinePostfixedExpression", NonPipelinePostfixedExpression$0);
10460
10567
  }
10461
- var PostfixStatement$0 = $T($S($EXPECT($R22, "PostfixStatement /(?=for|if|loop|unless|until|while)/"), _PostfixStatement), function(value) {
10568
+ var PostfixStatement$0 = $T($S($EXPECT($R23, "PostfixStatement /(?=for|if|loop|unless|until|while)/"), _PostfixStatement), function(value) {
10462
10569
  return value[1];
10463
10570
  });
10464
10571
  function PostfixStatement(ctx, state) {
@@ -10591,7 +10698,7 @@ var require_parser = __commonJS({
10591
10698
  function UnlessClause(ctx, state) {
10592
10699
  return $EVENT(ctx, state, "UnlessClause", UnlessClause$0);
10593
10700
  }
10594
- var IterationStatement$0 = $T($S($EXPECT($R23, "IterationStatement /(?=loop|do|for|until|while)/"), _IterationStatement), function(value) {
10701
+ var IterationStatement$0 = $T($S($EXPECT($R24, "IterationStatement /(?=loop|do|for|until|while)/"), _IterationStatement), function(value) {
10595
10702
  return value[1];
10596
10703
  });
10597
10704
  function IterationStatement(ctx, state) {
@@ -10944,7 +11051,7 @@ var require_parser = __commonJS({
10944
11051
  names: binding.names
10945
11052
  };
10946
11053
  });
10947
- var ForDeclaration$1 = $TS($S(InsertConst, ForBinding, $EXPECT($R24, "ForDeclaration /(?=[\\s\\),])/")), function($skip, $loc, $0, $1, $2, $3) {
11054
+ var ForDeclaration$1 = $TS($S(InsertConst, ForBinding, $EXPECT($R25, "ForDeclaration /(?=[\\s\\),])/")), function($skip, $loc, $0, $1, $2, $3) {
10948
11055
  var c = $1;
10949
11056
  var binding = $2;
10950
11057
  return {
@@ -11773,7 +11880,7 @@ var require_parser = __commonJS({
11773
11880
  function UnprocessedModuleSpecifier(ctx, state) {
11774
11881
  return $EVENT_C(ctx, state, "UnprocessedModuleSpecifier", UnprocessedModuleSpecifier$$);
11775
11882
  }
11776
- var UnquotedSpecifier$0 = $TV($EXPECT($R25, 'UnquotedSpecifier /[^;"\\s]+/'), function($skip, $loc, $0, $1) {
11883
+ var UnquotedSpecifier$0 = $TV($EXPECT($R26, 'UnquotedSpecifier /[^;"\\s]+/'), function($skip, $loc, $0, $1) {
11777
11884
  var spec = $0;
11778
11885
  return { $loc, token: `"${spec}"` };
11779
11886
  });
@@ -12026,7 +12133,7 @@ var require_parser = __commonJS({
12026
12133
  function VariableDeclarationList(ctx, state) {
12027
12134
  return $EVENT(ctx, state, "VariableDeclarationList", VariableDeclarationList$0);
12028
12135
  }
12029
- var NumericLiteral$0 = $TS($S($EXPECT($R26, "NumericLiteral /(?=[0-9.])/"), NumericLiteralKind), function($skip, $loc, $0, $1, $2) {
12136
+ var NumericLiteral$0 = $TS($S($EXPECT($R27, "NumericLiteral /(?=[0-9.])/"), NumericLiteralKind), function($skip, $loc, $0, $1, $2) {
12030
12137
  var token = $2;
12031
12138
  return { type: "NumericLiteral", $loc, token };
12032
12139
  });
@@ -12042,36 +12149,36 @@ var require_parser = __commonJS({
12042
12149
  function NumericLiteralKind(ctx, state) {
12043
12150
  return $EVENT_C(ctx, state, "NumericLiteralKind", NumericLiteralKind$$);
12044
12151
  }
12045
- var DecimalBigIntegerLiteral$0 = $R$0($EXPECT($R27, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
12152
+ var DecimalBigIntegerLiteral$0 = $R$0($EXPECT($R28, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
12046
12153
  function DecimalBigIntegerLiteral(ctx, state) {
12047
12154
  return $EVENT(ctx, state, "DecimalBigIntegerLiteral", DecimalBigIntegerLiteral$0);
12048
12155
  }
12049
- var DecimalLiteral$0 = $TV($TEXT($EXPECT($R28, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))/")), function($skip, $loc, $0, $1) {
12156
+ var DecimalLiteral$0 = $TV($TEXT($EXPECT($R29, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))/")), function($skip, $loc, $0, $1) {
12050
12157
  return $1 + ".";
12051
12158
  });
12052
- var DecimalLiteral$1 = $TEXT($S($EXPECT($R29, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?/"), $E(ExponentPart)));
12053
- var DecimalLiteral$2 = $TEXT($S($EXPECT($R30, "DecimalLiteral /(?:\\.[0-9](?:_[0-9]|[0-9])*)/"), $E(ExponentPart)));
12159
+ var DecimalLiteral$1 = $TEXT($S($EXPECT($R30, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?/"), $E(ExponentPart)));
12160
+ var DecimalLiteral$2 = $TEXT($S($EXPECT($R31, "DecimalLiteral /(?:\\.[0-9](?:_[0-9]|[0-9])*)/"), $E(ExponentPart)));
12054
12161
  var DecimalLiteral$$ = [DecimalLiteral$0, DecimalLiteral$1, DecimalLiteral$2];
12055
12162
  function DecimalLiteral(ctx, state) {
12056
12163
  return $EVENT_C(ctx, state, "DecimalLiteral", DecimalLiteral$$);
12057
12164
  }
12058
- var ExponentPart$0 = $R$0($EXPECT($R31, "ExponentPart /(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)/"));
12165
+ var ExponentPart$0 = $R$0($EXPECT($R32, "ExponentPart /(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)/"));
12059
12166
  function ExponentPart(ctx, state) {
12060
12167
  return $EVENT(ctx, state, "ExponentPart", ExponentPart$0);
12061
12168
  }
12062
- var BinaryIntegerLiteral$0 = $R$0($EXPECT($R32, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*n?/"));
12169
+ var BinaryIntegerLiteral$0 = $R$0($EXPECT($R33, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*n?/"));
12063
12170
  function BinaryIntegerLiteral(ctx, state) {
12064
12171
  return $EVENT(ctx, state, "BinaryIntegerLiteral", BinaryIntegerLiteral$0);
12065
12172
  }
12066
- var OctalIntegerLiteral$0 = $R$0($EXPECT($R33, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*n?/"));
12173
+ var OctalIntegerLiteral$0 = $R$0($EXPECT($R34, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*n?/"));
12067
12174
  function OctalIntegerLiteral(ctx, state) {
12068
12175
  return $EVENT(ctx, state, "OctalIntegerLiteral", OctalIntegerLiteral$0);
12069
12176
  }
12070
- var HexIntegerLiteral$0 = $R$0($EXPECT($R34, "HexIntegerLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?/"));
12177
+ var HexIntegerLiteral$0 = $R$0($EXPECT($R35, "HexIntegerLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?/"));
12071
12178
  function HexIntegerLiteral(ctx, state) {
12072
12179
  return $EVENT(ctx, state, "HexIntegerLiteral", HexIntegerLiteral$0);
12073
12180
  }
12074
- var IntegerLiteral$0 = $TS($S($EXPECT($R35, "IntegerLiteral /(?=[0-9])/"), IntegerLiteralKind), function($skip, $loc, $0, $1, $2) {
12181
+ var IntegerLiteral$0 = $TS($S($EXPECT($R36, "IntegerLiteral /(?=[0-9])/"), IntegerLiteralKind), function($skip, $loc, $0, $1, $2) {
12075
12182
  var token = $2;
12076
12183
  return { $loc, token };
12077
12184
  });
@@ -12087,7 +12194,7 @@ var require_parser = __commonJS({
12087
12194
  function IntegerLiteralKind(ctx, state) {
12088
12195
  return $EVENT_C(ctx, state, "IntegerLiteralKind", IntegerLiteralKind$$);
12089
12196
  }
12090
- var DecimalIntegerLiteral$0 = $R$0($EXPECT($R36, "DecimalIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)/"));
12197
+ var DecimalIntegerLiteral$0 = $R$0($EXPECT($R37, "DecimalIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)/"));
12091
12198
  function DecimalIntegerLiteral(ctx, state) {
12092
12199
  return $EVENT(ctx, state, "DecimalIntegerLiteral", DecimalIntegerLiteral$0);
12093
12200
  }
@@ -12111,25 +12218,25 @@ var require_parser = __commonJS({
12111
12218
  function StringLiteral(ctx, state) {
12112
12219
  return $EVENT_C(ctx, state, "StringLiteral", StringLiteral$$);
12113
12220
  }
12114
- var DoubleStringCharacters$0 = $TR($EXPECT($R37, 'DoubleStringCharacters /(?:\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12221
+ var DoubleStringCharacters$0 = $TR($EXPECT($R38, 'DoubleStringCharacters /(?:\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12115
12222
  return { $loc, token: $0 };
12116
12223
  });
12117
12224
  function DoubleStringCharacters(ctx, state) {
12118
12225
  return $EVENT(ctx, state, "DoubleStringCharacters", DoubleStringCharacters$0);
12119
12226
  }
12120
- var SingleStringCharacters$0 = $TR($EXPECT($R38, "SingleStringCharacters /(?:\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12227
+ var SingleStringCharacters$0 = $TR($EXPECT($R39, "SingleStringCharacters /(?:\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12121
12228
  return { $loc, token: $0 };
12122
12229
  });
12123
12230
  function SingleStringCharacters(ctx, state) {
12124
12231
  return $EVENT(ctx, state, "SingleStringCharacters", SingleStringCharacters$0);
12125
12232
  }
12126
- var TripleDoubleStringCharacters$0 = $TR($EXPECT($R39, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12233
+ var TripleDoubleStringCharacters$0 = $TR($EXPECT($R40, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12127
12234
  return { $loc, token: $0 };
12128
12235
  });
12129
12236
  function TripleDoubleStringCharacters(ctx, state) {
12130
12237
  return $EVENT(ctx, state, "TripleDoubleStringCharacters", TripleDoubleStringCharacters$0);
12131
12238
  }
12132
- var TripleSingleStringCharacters$0 = $TR($EXPECT($R40, "TripleSingleStringCharacters /(?:'(?!'')|\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12239
+ var TripleSingleStringCharacters$0 = $TR($EXPECT($R41, "TripleSingleStringCharacters /(?:'(?!'')|\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12133
12240
  return { $loc, token: $0 };
12134
12241
  });
12135
12242
  function TripleSingleStringCharacters(ctx, state) {
@@ -12152,7 +12259,7 @@ var require_parser = __commonJS({
12152
12259
  function CoffeeInterpolatedDoubleQuotedString(ctx, state) {
12153
12260
  return $EVENT(ctx, state, "CoffeeInterpolatedDoubleQuotedString", CoffeeInterpolatedDoubleQuotedString$0);
12154
12261
  }
12155
- var CoffeeDoubleQuotedStringCharacters$0 = $TR($EXPECT($R41, 'CoffeeDoubleQuotedStringCharacters /(?:\\\\.|#(?!\\{)|[^"#])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12262
+ var CoffeeDoubleQuotedStringCharacters$0 = $TR($EXPECT($R42, 'CoffeeDoubleQuotedStringCharacters /(?:\\\\.|#(?!\\{)|[^"#])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12156
12263
  return { $loc, token: $0 };
12157
12264
  });
12158
12265
  function CoffeeDoubleQuotedStringCharacters(ctx, state) {
@@ -12172,7 +12279,7 @@ var require_parser = __commonJS({
12172
12279
  function RegularExpressionClass(ctx, state) {
12173
12280
  return $EVENT(ctx, state, "RegularExpressionClass", RegularExpressionClass$0);
12174
12281
  }
12175
- var RegularExpressionClassCharacters$0 = $TR($EXPECT($R42, "RegularExpressionClassCharacters /(?:\\\\.|[^\\]])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12282
+ var RegularExpressionClassCharacters$0 = $TR($EXPECT($R43, "RegularExpressionClassCharacters /(?:\\\\.|[^\\]])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12176
12283
  return { $loc, token: $0 };
12177
12284
  });
12178
12285
  function RegularExpressionClassCharacters(ctx, state) {
@@ -12229,7 +12336,7 @@ var require_parser = __commonJS({
12229
12336
  var HeregexPart$2 = $T($S(TemplateSubstitution), function(value) {
12230
12337
  return { "type": "Substitution", "children": value[0] };
12231
12338
  });
12232
- var HeregexPart$3 = $TR($EXPECT($R43, "HeregexPart /(?:\\\\.)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12339
+ var HeregexPart$3 = $TR($EXPECT($R44, "HeregexPart /(?:\\\\.)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12233
12340
  let token = $0;
12234
12341
  switch ($0[1]) {
12235
12342
  case "\n":
@@ -12247,13 +12354,13 @@ var require_parser = __commonJS({
12247
12354
  var HeregexPart$4 = $TS($S(HeregexComment), function($skip, $loc, $0, $1) {
12248
12355
  return { $loc, token: "" };
12249
12356
  });
12250
- var HeregexPart$5 = $TR($EXPECT($R44, "HeregexPart /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12357
+ var HeregexPart$5 = $TR($EXPECT($R45, "HeregexPart /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12251
12358
  return { $loc, token: "" };
12252
12359
  });
12253
- var HeregexPart$6 = $TR($EXPECT($R45, "HeregexPart /\\/(?!\\/\\/)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12360
+ var HeregexPart$6 = $TR($EXPECT($R46, "HeregexPart /\\/(?!\\/\\/)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12254
12361
  return { $loc, token: "\\/" };
12255
12362
  });
12256
- var HeregexPart$7 = $TR($EXPECT($R46, "HeregexPart /[^[\\/\\s#\\\\]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12363
+ var HeregexPart$7 = $TR($EXPECT($R47, "HeregexPart /[^[\\/\\s#\\\\]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12257
12364
  return { $loc, token: $0 };
12258
12365
  });
12259
12366
  var HeregexPart$$ = [HeregexPart$0, HeregexPart$1, HeregexPart$2, HeregexPart$3, HeregexPart$4, HeregexPart$5, HeregexPart$6, HeregexPart$7];
@@ -12266,7 +12373,7 @@ var require_parser = __commonJS({
12266
12373
  function HeregexComment(ctx, state) {
12267
12374
  return $EVENT_C(ctx, state, "HeregexComment", HeregexComment$$);
12268
12375
  }
12269
- var RegularExpressionBody$0 = $S($N($R$0($EXPECT($R47, "RegularExpressionBody /[*\\/\\r\\n]/"))), $Q(RegExpPart));
12376
+ var RegularExpressionBody$0 = $S($N($R$0($EXPECT($R48, "RegularExpressionBody /[*\\/\\r\\n]/"))), $Q(RegExpPart));
12270
12377
  function RegularExpressionBody(ctx, state) {
12271
12378
  return $EVENT(ctx, state, "RegularExpressionBody", RegularExpressionBody$0);
12272
12379
  }
@@ -12276,15 +12383,15 @@ var require_parser = __commonJS({
12276
12383
  function RegExpPart(ctx, state) {
12277
12384
  return $EVENT_C(ctx, state, "RegExpPart", RegExpPart$$);
12278
12385
  }
12279
- var RegExpCharacter$0 = $R$0($EXPECT($R48, "RegExpCharacter /(?:\\\\.|[^[\\/\\r\\n])+/"));
12386
+ var RegExpCharacter$0 = $R$0($EXPECT($R49, "RegExpCharacter /(?:\\\\.|[^[\\/\\r\\n])+/"));
12280
12387
  function RegExpCharacter(ctx, state) {
12281
12388
  return $EVENT(ctx, state, "RegExpCharacter", RegExpCharacter$0);
12282
12389
  }
12283
- var RegularExpressionFlags$0 = $R$0($EXPECT($R49, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
12390
+ var RegularExpressionFlags$0 = $R$0($EXPECT($R50, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
12284
12391
  function RegularExpressionFlags(ctx, state) {
12285
12392
  return $EVENT(ctx, state, "RegularExpressionFlags", RegularExpressionFlags$0);
12286
12393
  }
12287
- var TemplateLiteral$0 = $T($S($EXPECT($R50, "TemplateLiteral /(?=[`'\"])/"), _TemplateLiteral), function(value) {
12394
+ var TemplateLiteral$0 = $T($S($EXPECT($R51, "TemplateLiteral /(?=[`'\"])/"), _TemplateLiteral), function(value) {
12288
12395
  return value[1];
12289
12396
  });
12290
12397
  function TemplateLiteral(ctx, state) {
@@ -12324,28 +12431,28 @@ var require_parser = __commonJS({
12324
12431
  function TemplateSubstitution(ctx, state) {
12325
12432
  return $EVENT(ctx, state, "TemplateSubstitution", TemplateSubstitution$0);
12326
12433
  }
12327
- var TemplateCharacters$0 = $TR($EXPECT($R51, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12434
+ var TemplateCharacters$0 = $TR($EXPECT($R52, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12328
12435
  return { $loc, token: $0 };
12329
12436
  });
12330
12437
  function TemplateCharacters(ctx, state) {
12331
12438
  return $EVENT(ctx, state, "TemplateCharacters", TemplateCharacters$0);
12332
12439
  }
12333
- var TemplateBlockCharacters$0 = $TR($EXPECT($R52, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12440
+ var TemplateBlockCharacters$0 = $TR($EXPECT($R53, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12334
12441
  return { $loc, token: $0 };
12335
12442
  });
12336
12443
  function TemplateBlockCharacters(ctx, state) {
12337
12444
  return $EVENT(ctx, state, "TemplateBlockCharacters", TemplateBlockCharacters$0);
12338
12445
  }
12339
- var ReservedWord$0 = $S($R$0($EXPECT($R53, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")), CoffeeBooleansEnabled);
12340
- var ReservedWord$1 = $S($R$0($EXPECT($R54, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")), CoffeeIsntEnabled);
12341
- var ReservedWord$2 = $S($R$0($EXPECT($R55, "ReservedWord /(?:by)(?!\\p{ID_Continue})/")), CoffeeForLoopsEnabled);
12342
- var ReservedWord$3 = $S($R$0($EXPECT($R56, "ReservedWord /(?:of)(?!\\p{ID_Continue})/")), CoffeeOfEnabled);
12343
- var ReservedWord$4 = $R$0($EXPECT($R57, "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})/"));
12446
+ var ReservedWord$0 = $S($R$0($EXPECT($R54, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")), CoffeeBooleansEnabled);
12447
+ var ReservedWord$1 = $S($R$0($EXPECT($R55, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")), CoffeeIsntEnabled);
12448
+ var ReservedWord$2 = $S($R$0($EXPECT($R56, "ReservedWord /(?:by)(?!\\p{ID_Continue})/")), CoffeeForLoopsEnabled);
12449
+ var ReservedWord$3 = $S($R$0($EXPECT($R57, "ReservedWord /(?:of)(?!\\p{ID_Continue})/")), CoffeeOfEnabled);
12450
+ var ReservedWord$4 = $R$0($EXPECT($R58, "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})/"));
12344
12451
  var ReservedWord$$ = [ReservedWord$0, ReservedWord$1, ReservedWord$2, ReservedWord$3, ReservedWord$4];
12345
12452
  function ReservedWord(ctx, state) {
12346
12453
  return $EVENT_C(ctx, state, "ReservedWord", ReservedWord$$);
12347
12454
  }
12348
- var Comment$0 = $T($S($EXPECT($R58, "Comment /(?=\\/|#)/"), _Comment), function(value) {
12455
+ var Comment$0 = $T($S($EXPECT($R59, "Comment /(?=\\/|#)/"), _Comment), function(value) {
12349
12456
  return value[1];
12350
12457
  });
12351
12458
  function Comment(ctx, state) {
@@ -12363,7 +12470,7 @@ var require_parser = __commonJS({
12363
12470
  function SingleLineComment(ctx, state) {
12364
12471
  return $EVENT_C(ctx, state, "SingleLineComment", SingleLineComment$$);
12365
12472
  }
12366
- var JSSingleLineComment$0 = $TR($EXPECT($R59, "JSSingleLineComment /\\/\\/(?!\\/)[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12473
+ var JSSingleLineComment$0 = $TR($EXPECT($R60, "JSSingleLineComment /\\/\\/(?!\\/)[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12367
12474
  return { type: "Comment", $loc, token: $0 };
12368
12475
  });
12369
12476
  function JSSingleLineComment(ctx, state) {
@@ -12375,30 +12482,30 @@ var require_parser = __commonJS({
12375
12482
  function MultiLineComment(ctx, state) {
12376
12483
  return $EVENT_C(ctx, state, "MultiLineComment", MultiLineComment$$);
12377
12484
  }
12378
- var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L123, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L124, 'JSMultiLineComment "*/"')), $EXPECT($R60, "JSMultiLineComment /./"))), $EXPECT($L124, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
12485
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L123, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L124, 'JSMultiLineComment "*/"')), $EXPECT($R61, "JSMultiLineComment /./"))), $EXPECT($L124, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
12379
12486
  return { type: "Comment", $loc, token: $1 };
12380
12487
  });
12381
12488
  function JSMultiLineComment(ctx, state) {
12382
12489
  return $EVENT(ctx, state, "JSMultiLineComment", JSMultiLineComment$0);
12383
12490
  }
12384
- var CoffeeSingleLineComment$0 = $TR($EXPECT($R61, "CoffeeSingleLineComment /#(?!##(?!#))([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12491
+ var CoffeeSingleLineComment$0 = $TR($EXPECT($R62, "CoffeeSingleLineComment /#(?!##(?!#))([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12385
12492
  return { type: "Comment", $loc, token: `//${$1}` };
12386
12493
  });
12387
12494
  function CoffeeSingleLineComment(ctx, state) {
12388
12495
  return $EVENT(ctx, state, "CoffeeSingleLineComment", CoffeeSingleLineComment$0);
12389
12496
  }
12390
- var CoffeeMultiLineComment$0 = $TS($S(CoffeeHereCommentStart, $TEXT($EXPECT($R62, "CoffeeMultiLineComment /[^]*?###/"))), function($skip, $loc, $0, $1, $2) {
12497
+ var CoffeeMultiLineComment$0 = $TS($S(CoffeeHereCommentStart, $TEXT($EXPECT($R63, "CoffeeMultiLineComment /[^]*?###/"))), function($skip, $loc, $0, $1, $2) {
12391
12498
  $2 = $2.slice(0, $2.length - 3).replace(/\*\//g, "* /");
12392
12499
  return { type: "Comment", $loc, token: `/*${$2}*/` };
12393
12500
  });
12394
12501
  function CoffeeMultiLineComment(ctx, state) {
12395
12502
  return $EVENT(ctx, state, "CoffeeMultiLineComment", CoffeeMultiLineComment$0);
12396
12503
  }
12397
- var CoffeeHereCommentStart$0 = $R$0($EXPECT($R63, "CoffeeHereCommentStart /###(?!#)/"));
12504
+ var CoffeeHereCommentStart$0 = $R$0($EXPECT($R64, "CoffeeHereCommentStart /###(?!#)/"));
12398
12505
  function CoffeeHereCommentStart(ctx, state) {
12399
12506
  return $EVENT(ctx, state, "CoffeeHereCommentStart", CoffeeHereCommentStart$0);
12400
12507
  }
12401
- var InlineComment$0 = $TR($EXPECT($R64, "InlineComment /\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\//"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12508
+ var InlineComment$0 = $TR($EXPECT($R65, "InlineComment /\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\//"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12402
12509
  return { $loc, token: $0 };
12403
12510
  });
12404
12511
  function InlineComment(ctx, state) {
@@ -12412,13 +12519,13 @@ var require_parser = __commonJS({
12412
12519
  function TrailingComment(ctx, state) {
12413
12520
  return $EVENT(ctx, state, "TrailingComment", TrailingComment$0);
12414
12521
  }
12415
- var _$0 = $T($S($EXPECT($R65, "_ /(?=[ \\t\\/\\\\])/"), $P($C(NonNewlineWhitespace, InlineComment))), function(value) {
12522
+ var _$0 = $T($S($EXPECT($R66, "_ /(?=[ \\t\\/\\\\])/"), $P($C(NonNewlineWhitespace, InlineComment))), function(value) {
12416
12523
  return value[1];
12417
12524
  });
12418
12525
  function _(ctx, state) {
12419
12526
  return $EVENT(ctx, state, "_", _$0);
12420
12527
  }
12421
- var NonNewlineWhitespace$0 = $TR($EXPECT($R66, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12528
+ var NonNewlineWhitespace$0 = $TR($EXPECT($R67, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12422
12529
  return { $loc, token: $0 };
12423
12530
  });
12424
12531
  var NonNewlineWhitespace$1 = $T($S($EXPECT($L125, 'NonNewlineWhitespace "\\\\\\\\"'), CoffeeLineContinuationEnabled, EOL), function(value) {
@@ -12435,7 +12542,7 @@ var require_parser = __commonJS({
12435
12542
  function Trimmed_(ctx, state) {
12436
12543
  return $EVENT(ctx, state, "Trimmed_", Trimmed_$0);
12437
12544
  }
12438
- var __$0 = $T($S($EXPECT($R67, "__ /(?=\\s|\\/|#)/"), $Q($C(Whitespace, Comment))), function(value) {
12545
+ var __$0 = $T($S($EXPECT($R68, "__ /(?=\\s|\\/|#)/"), $Q($C(Whitespace, Comment))), function(value) {
12439
12546
  return value[1];
12440
12547
  });
12441
12548
  var __$1 = $EXPECT($L0, '__ ""');
@@ -12443,7 +12550,7 @@ var require_parser = __commonJS({
12443
12550
  function __(ctx, state) {
12444
12551
  return $EVENT_C(ctx, state, "__", __$$);
12445
12552
  }
12446
- var Whitespace$0 = $TR($EXPECT($R44, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12553
+ var Whitespace$0 = $TR($EXPECT($R45, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12447
12554
  return { $loc, token: $0 };
12448
12555
  });
12449
12556
  function Whitespace(ctx, state) {
@@ -12481,7 +12588,7 @@ var require_parser = __commonJS({
12481
12588
  function SemicolonDelimiter(ctx, state) {
12482
12589
  return $EVENT(ctx, state, "SemicolonDelimiter", SemicolonDelimiter$0);
12483
12590
  }
12484
- var NonIdContinue$0 = $R$0($EXPECT($R68, "NonIdContinue /(?!\\p{ID_Continue})/"));
12591
+ var NonIdContinue$0 = $R$0($EXPECT($R69, "NonIdContinue /(?!\\p{ID_Continue})/"));
12485
12592
  function NonIdContinue(ctx, state) {
12486
12593
  return $EVENT(ctx, state, "NonIdContinue", NonIdContinue$0);
12487
12594
  }
@@ -12599,7 +12706,7 @@ var require_parser = __commonJS({
12599
12706
  function CoffeeSubstitutionStart(ctx, state) {
12600
12707
  return $EVENT(ctx, state, "CoffeeSubstitutionStart", CoffeeSubstitutionStart$0);
12601
12708
  }
12602
- var Colon$0 = $TS($S($EXPECT($L15, 'Colon ":"'), $N($EXPECT($R69, "Colon /[=:]/"))), function($skip, $loc, $0, $1, $2) {
12709
+ var Colon$0 = $TS($S($EXPECT($L15, 'Colon ":"'), $N($EXPECT($R70, "Colon /[=:]/"))), function($skip, $loc, $0, $1, $2) {
12603
12710
  return { $loc, token: $1 };
12604
12711
  });
12605
12712
  function Colon(ctx, state) {
@@ -12644,7 +12751,7 @@ var require_parser = __commonJS({
12644
12751
  var Dot$0 = $TV($EXPECT($L7, 'Dot "."'), function($skip, $loc, $0, $1) {
12645
12752
  return { $loc, token: $1 };
12646
12753
  });
12647
- var Dot$1 = $TS($S($EXPECT($R70, "Dot /['\u2019]s/"), _), function($skip, $loc, $0, $1, $2) {
12754
+ var Dot$1 = $TS($S($EXPECT($R71, "Dot /['\u2019]s/"), _), function($skip, $loc, $0, $1, $2) {
12648
12755
  var ws = $2;
12649
12756
  return [
12650
12757
  { $loc, token: "." },
@@ -12765,7 +12872,7 @@ var require_parser = __commonJS({
12765
12872
  function If(ctx, state) {
12766
12873
  return $EVENT(ctx, state, "If", If$0);
12767
12874
  }
12768
- var Import$0 = $TS($S($EXPECT($L20, 'Import "import"'), $Y($EXPECT($R71, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
12875
+ var Import$0 = $TS($S($EXPECT($L20, 'Import "import"'), $Y($EXPECT($R72, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
12769
12876
  return { $loc, token: $1 };
12770
12877
  });
12771
12878
  function Import(ctx, state) {
@@ -13034,49 +13141,55 @@ var require_parser = __commonJS({
13034
13141
  function Typeof(ctx, state) {
13035
13142
  return $EVENT(ctx, state, "Typeof", Typeof$0);
13036
13143
  }
13037
- var Unless$0 = $TS($S($EXPECT($L202, 'Unless "unless"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13144
+ var Undefined$0 = $TS($S($EXPECT($L202, 'Undefined "undefined"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13145
+ return { $loc, token: $1 };
13146
+ });
13147
+ function Undefined(ctx, state) {
13148
+ return $EVENT(ctx, state, "Undefined", Undefined$0);
13149
+ }
13150
+ var Unless$0 = $TS($S($EXPECT($L203, 'Unless "unless"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13038
13151
  return { $loc, token: $1, negated: true };
13039
13152
  });
13040
13153
  function Unless(ctx, state) {
13041
13154
  return $EVENT(ctx, state, "Unless", Unless$0);
13042
13155
  }
13043
- var Until$0 = $TS($S($EXPECT($L203, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13156
+ var Until$0 = $TS($S($EXPECT($L204, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13044
13157
  return { $loc, token: $1 };
13045
13158
  });
13046
13159
  function Until(ctx, state) {
13047
13160
  return $EVENT(ctx, state, "Until", Until$0);
13048
13161
  }
13049
- var Using$0 = $TS($S($EXPECT($L204, 'Using "using"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13162
+ var Using$0 = $TS($S($EXPECT($L205, 'Using "using"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13050
13163
  return { $loc, token: $1 };
13051
13164
  });
13052
13165
  function Using(ctx, state) {
13053
13166
  return $EVENT(ctx, state, "Using", Using$0);
13054
13167
  }
13055
- var Var$0 = $TS($S($EXPECT($L205, 'Var "var"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13168
+ var Var$0 = $TS($S($EXPECT($L206, 'Var "var"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13056
13169
  return { $loc, token: $1 };
13057
13170
  });
13058
13171
  function Var(ctx, state) {
13059
13172
  return $EVENT(ctx, state, "Var", Var$0);
13060
13173
  }
13061
- var Void$0 = $TS($S($EXPECT($L206, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13174
+ var Void$0 = $TS($S($EXPECT($L207, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13062
13175
  return { $loc, token: $1 };
13063
13176
  });
13064
13177
  function Void(ctx, state) {
13065
13178
  return $EVENT(ctx, state, "Void", Void$0);
13066
13179
  }
13067
- var When$0 = $TS($S($EXPECT($L207, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13180
+ var When$0 = $TS($S($EXPECT($L208, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13068
13181
  return { $loc, token: "case" };
13069
13182
  });
13070
13183
  function When(ctx, state) {
13071
13184
  return $EVENT(ctx, state, "When", When$0);
13072
13185
  }
13073
- var While$0 = $TS($S($EXPECT($L208, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13186
+ var While$0 = $TS($S($EXPECT($L209, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13074
13187
  return { $loc, token: $1 };
13075
13188
  });
13076
13189
  function While(ctx, state) {
13077
13190
  return $EVENT(ctx, state, "While", While$0);
13078
13191
  }
13079
- var Yield$0 = $TS($S($EXPECT($L209, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13192
+ var Yield$0 = $TS($S($EXPECT($L210, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13080
13193
  return { $loc, token: $1, type: "Yield" };
13081
13194
  });
13082
13195
  function Yield(ctx, state) {
@@ -13105,7 +13218,7 @@ var require_parser = __commonJS({
13105
13218
  function JSXImplicitFragment(ctx, state) {
13106
13219
  return $EVENT(ctx, state, "JSXImplicitFragment", JSXImplicitFragment$0);
13107
13220
  }
13108
- var JSXTag$0 = $T($S($EXPECT($R72, "JSXTag /(?=[<])/"), _JSXTag), function(value) {
13221
+ var JSXTag$0 = $T($S($EXPECT($R73, "JSXTag /(?=[<])/"), _JSXTag), function(value) {
13109
13222
  return value[1];
13110
13223
  });
13111
13224
  function JSXTag(ctx, state) {
@@ -13155,7 +13268,7 @@ var require_parser = __commonJS({
13155
13268
  function JSXElement(ctx, state) {
13156
13269
  return $EVENT_C(ctx, state, "JSXElement", JSXElement$$);
13157
13270
  }
13158
- var JSXSelfClosingElement$0 = $TS($S($EXPECT($L17, 'JSXSelfClosingElement "<"'), JSXElementName, $E(TypeArguments), $E(JSXAttributes), $E(Whitespace), $EXPECT($L210, 'JSXSelfClosingElement "/>"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
13271
+ var JSXSelfClosingElement$0 = $TS($S($EXPECT($L17, 'JSXSelfClosingElement "<"'), JSXElementName, $E(TypeArguments), $E(JSXAttributes), $E(Whitespace), $EXPECT($L211, 'JSXSelfClosingElement "/>"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
13159
13272
  return { type: "JSXElement", children: $0, tag: $2 };
13160
13273
  });
13161
13274
  function JSXSelfClosingElement(ctx, state) {
@@ -13189,7 +13302,7 @@ var require_parser = __commonJS({
13189
13302
  function JSXOptionalClosingElement(ctx, state) {
13190
13303
  return $EVENT_C(ctx, state, "JSXOptionalClosingElement", JSXOptionalClosingElement$$);
13191
13304
  }
13192
- var JSXClosingElement$0 = $S($EXPECT($L211, 'JSXClosingElement "</"'), $E(Whitespace), JSXElementName, $E(Whitespace), $EXPECT($L45, 'JSXClosingElement ">"'));
13305
+ var JSXClosingElement$0 = $S($EXPECT($L212, 'JSXClosingElement "</"'), $E(Whitespace), JSXElementName, $E(Whitespace), $EXPECT($L45, 'JSXClosingElement ">"'));
13193
13306
  function JSXClosingElement(ctx, state) {
13194
13307
  return $EVENT(ctx, state, "JSXClosingElement", JSXClosingElement$0);
13195
13308
  }
@@ -13210,7 +13323,7 @@ var require_parser = __commonJS({
13210
13323
  ];
13211
13324
  return { type: "JSXFragment", children: parts, jsxChildren: children.jsxChildren };
13212
13325
  });
13213
- var JSXFragment$1 = $TS($S(CoffeeJSXEnabled, $EXPECT($L212, 'JSXFragment "<>"'), $E(JSXChildren), $E(Whitespace), JSXClosingFragment), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13326
+ var JSXFragment$1 = $TS($S(CoffeeJSXEnabled, $EXPECT($L213, 'JSXFragment "<>"'), $E(JSXChildren), $E(Whitespace), JSXClosingFragment), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13214
13327
  var children = $3;
13215
13328
  $0 = $0.slice(1);
13216
13329
  return {
@@ -13223,7 +13336,7 @@ var require_parser = __commonJS({
13223
13336
  function JSXFragment(ctx, state) {
13224
13337
  return $EVENT_C(ctx, state, "JSXFragment", JSXFragment$$);
13225
13338
  }
13226
- var PushJSXOpeningFragment$0 = $TV($EXPECT($L212, 'PushJSXOpeningFragment "<>"'), function($skip, $loc, $0, $1) {
13339
+ var PushJSXOpeningFragment$0 = $TV($EXPECT($L213, 'PushJSXOpeningFragment "<>"'), function($skip, $loc, $0, $1) {
13227
13340
  module.JSXTagStack.push("");
13228
13341
  return $1;
13229
13342
  });
@@ -13240,7 +13353,7 @@ var require_parser = __commonJS({
13240
13353
  function JSXOptionalClosingFragment(ctx, state) {
13241
13354
  return $EVENT_C(ctx, state, "JSXOptionalClosingFragment", JSXOptionalClosingFragment$$);
13242
13355
  }
13243
- var JSXClosingFragment$0 = $EXPECT($L213, 'JSXClosingFragment "</>"');
13356
+ var JSXClosingFragment$0 = $EXPECT($L214, 'JSXClosingFragment "</>"');
13244
13357
  function JSXClosingFragment(ctx, state) {
13245
13358
  return $EVENT(ctx, state, "JSXClosingFragment", JSXClosingFragment$0);
13246
13359
  }
@@ -13252,7 +13365,7 @@ var require_parser = __commonJS({
13252
13365
  function JSXElementName(ctx, state) {
13253
13366
  return $EVENT_C(ctx, state, "JSXElementName", JSXElementName$$);
13254
13367
  }
13255
- var JSXIdentifierName$0 = $R$0($EXPECT($R73, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
13368
+ var JSXIdentifierName$0 = $R$0($EXPECT($R74, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
13256
13369
  function JSXIdentifierName(ctx, state) {
13257
13370
  return $EVENT(ctx, state, "JSXIdentifierName", JSXIdentifierName$0);
13258
13371
  }
@@ -13431,7 +13544,7 @@ var require_parser = __commonJS({
13431
13544
  class: $2
13432
13545
  };
13433
13546
  });
13434
- var JSXAttribute$7 = $TS($S($TEXT($EXPECT($R74, "JSXAttribute /[!+-]/")), JSXAttributeName, $Y(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
13547
+ var JSXAttribute$7 = $TS($S($TEXT($EXPECT($R75, "JSXAttribute /[!+-]/")), JSXAttributeName, $Y(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
13435
13548
  var toggle = $1;
13436
13549
  var id = $2;
13437
13550
  const value = toggle === "+" ? "true" : "false";
@@ -13441,11 +13554,11 @@ var require_parser = __commonJS({
13441
13554
  function JSXAttribute(ctx, state) {
13442
13555
  return $EVENT_C(ctx, state, "JSXAttribute", JSXAttribute$$);
13443
13556
  }
13444
- var JSXAttributeSpace$0 = $R$0($EXPECT($R75, "JSXAttributeSpace /[\\s>]|\\/>/"));
13557
+ var JSXAttributeSpace$0 = $R$0($EXPECT($R76, "JSXAttributeSpace /[\\s>]|\\/>/"));
13445
13558
  function JSXAttributeSpace(ctx, state) {
13446
13559
  return $EVENT(ctx, state, "JSXAttributeSpace", JSXAttributeSpace$0);
13447
13560
  }
13448
- var JSXShorthandString$0 = $TR($EXPECT($R76, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13561
+ var JSXShorthandString$0 = $TR($EXPECT($R77, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13449
13562
  return quoteString($0);
13450
13563
  });
13451
13564
  var JSXShorthandString$1 = $TS($S(TemplateLiteral), function($skip, $loc, $0, $1) {
@@ -13479,7 +13592,7 @@ var require_parser = __commonJS({
13479
13592
  }
13480
13593
  return [open, value, close];
13481
13594
  });
13482
- var JSXAttributeValue$4 = $R$0($EXPECT($R77, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
13595
+ var JSXAttributeValue$4 = $R$0($EXPECT($R78, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
13483
13596
  var JSXAttributeValue$$ = [JSXAttributeValue$0, JSXAttributeValue$1, JSXAttributeValue$2, JSXAttributeValue$3, JSXAttributeValue$4];
13484
13597
  function JSXAttributeValue(ctx, state) {
13485
13598
  return $EVENT_C(ctx, state, "JSXAttributeValue", JSXAttributeValue$$);
@@ -13492,7 +13605,7 @@ var require_parser = __commonJS({
13492
13605
  function InlineJSXAttributeValue(ctx, state) {
13493
13606
  return $EVENT(ctx, state, "InlineJSXAttributeValue", InlineJSXAttributeValue$0);
13494
13607
  }
13495
- var InlineJSXBinaryOpRHS$0 = $TS($S($N($EXPECT($R78, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
13608
+ var InlineJSXBinaryOpRHS$0 = $TS($S($N($EXPECT($R79, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
13496
13609
  var op = $2;
13497
13610
  var rhs = $3;
13498
13611
  return [[], op, [], rhs];
@@ -13509,7 +13622,7 @@ var require_parser = __commonJS({
13509
13622
  function InlineJSXUnaryExpression(ctx, state) {
13510
13623
  return $EVENT(ctx, state, "InlineJSXUnaryExpression", InlineJSXUnaryExpression$0);
13511
13624
  }
13512
- var InlineJSXUnaryOp$0 = $TR($EXPECT($R79, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13625
+ var InlineJSXUnaryOp$0 = $TR($EXPECT($R80, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13513
13626
  return { $loc, token: $0 };
13514
13627
  });
13515
13628
  function InlineJSXUnaryOp(ctx, state) {
@@ -13719,19 +13832,19 @@ var require_parser = __commonJS({
13719
13832
  function JSXChild(ctx, state) {
13720
13833
  return $EVENT_C(ctx, state, "JSXChild", JSXChild$$);
13721
13834
  }
13722
- var JSXComment$0 = $TS($S($EXPECT($L214, 'JSXComment "<!--"'), JSXCommentContent, $EXPECT($L215, 'JSXComment "-->"')), function($skip, $loc, $0, $1, $2, $3) {
13835
+ var JSXComment$0 = $TS($S($EXPECT($L215, 'JSXComment "<!--"'), JSXCommentContent, $EXPECT($L216, 'JSXComment "-->"')), function($skip, $loc, $0, $1, $2, $3) {
13723
13836
  return ["{/*", $2, "*/}"];
13724
13837
  });
13725
13838
  function JSXComment(ctx, state) {
13726
13839
  return $EVENT(ctx, state, "JSXComment", JSXComment$0);
13727
13840
  }
13728
- var JSXCommentContent$0 = $TR($EXPECT($R80, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13841
+ var JSXCommentContent$0 = $TR($EXPECT($R81, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13729
13842
  return { $loc, token: $0.replace(/\*\//g, "* /") };
13730
13843
  });
13731
13844
  function JSXCommentContent(ctx, state) {
13732
13845
  return $EVENT(ctx, state, "JSXCommentContent", JSXCommentContent$0);
13733
13846
  }
13734
- var JSXText$0 = $TR($EXPECT($R81, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13847
+ var JSXText$0 = $TR($EXPECT($R82, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13735
13848
  return {
13736
13849
  type: "JSXText",
13737
13850
  token: $0,
@@ -13906,37 +14019,37 @@ var require_parser = __commonJS({
13906
14019
  function InterfaceExtendsTarget(ctx, state) {
13907
14020
  return $EVENT(ctx, state, "InterfaceExtendsTarget", InterfaceExtendsTarget$0);
13908
14021
  }
13909
- var TypeKeyword$0 = $TS($S($EXPECT($L216, 'TypeKeyword "type"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14022
+ var TypeKeyword$0 = $TS($S($EXPECT($L217, 'TypeKeyword "type"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13910
14023
  return { $loc, token: $1 };
13911
14024
  });
13912
14025
  function TypeKeyword(ctx, state) {
13913
14026
  return $EVENT(ctx, state, "TypeKeyword", TypeKeyword$0);
13914
14027
  }
13915
- var Enum$0 = $TS($S($EXPECT($L217, 'Enum "enum"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14028
+ var Enum$0 = $TS($S($EXPECT($L218, 'Enum "enum"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13916
14029
  return { $loc, token: $1 };
13917
14030
  });
13918
14031
  function Enum(ctx, state) {
13919
14032
  return $EVENT(ctx, state, "Enum", Enum$0);
13920
14033
  }
13921
- var Interface$0 = $TS($S($EXPECT($L218, 'Interface "interface"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14034
+ var Interface$0 = $TS($S($EXPECT($L219, 'Interface "interface"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13922
14035
  return { $loc, token: $1 };
13923
14036
  });
13924
14037
  function Interface(ctx, state) {
13925
14038
  return $EVENT(ctx, state, "Interface", Interface$0);
13926
14039
  }
13927
- var Global$0 = $TS($S($EXPECT($L219, 'Global "global"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14040
+ var Global$0 = $TS($S($EXPECT($L220, 'Global "global"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13928
14041
  return { $loc, token: $1 };
13929
14042
  });
13930
14043
  function Global(ctx, state) {
13931
14044
  return $EVENT(ctx, state, "Global", Global$0);
13932
14045
  }
13933
- var Module$0 = $TS($S($EXPECT($L220, 'Module "module"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14046
+ var Module$0 = $TS($S($EXPECT($L221, 'Module "module"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13934
14047
  return { $loc, token: $1 };
13935
14048
  });
13936
14049
  function Module(ctx, state) {
13937
14050
  return $EVENT(ctx, state, "Module", Module$0);
13938
14051
  }
13939
- var Namespace$0 = $TS($S($EXPECT($L221, 'Namespace "namespace"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14052
+ var Namespace$0 = $TS($S($EXPECT($L222, 'Namespace "namespace"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13940
14053
  return { $loc, token: $1 };
13941
14054
  });
13942
14055
  function Namespace(ctx, state) {
@@ -14152,7 +14265,7 @@ var require_parser = __commonJS({
14152
14265
  function TypeProperty(ctx, state) {
14153
14266
  return $EVENT(ctx, state, "TypeProperty", TypeProperty$0);
14154
14267
  }
14155
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R82, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R17, "TypeIndexSignature /[+-]/")), $Y($S($E(_), QuestionMark)))));
14268
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R83, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R10, "TypeIndexSignature /[+-]/")), $Y($S($E(_), QuestionMark)))));
14156
14269
  function TypeIndexSignature(ctx, state) {
14157
14270
  return $EVENT(ctx, state, "TypeIndexSignature", TypeIndexSignature$0);
14158
14271
  }
@@ -14212,7 +14325,7 @@ var require_parser = __commonJS({
14212
14325
  function ReturnTypeSuffix(ctx, state) {
14213
14326
  return $EVENT(ctx, state, "ReturnTypeSuffix", ReturnTypeSuffix$0);
14214
14327
  }
14215
- var ReturnType$0 = $TS($S($E($S(__, $EXPECT($L222, 'ReturnType "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2) {
14328
+ var ReturnType$0 = $TS($S($E($S(__, $EXPECT($L223, 'ReturnType "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2) {
14216
14329
  var asserts = $1;
14217
14330
  var t = $2;
14218
14331
  if (asserts) {
@@ -14291,7 +14404,7 @@ var require_parser = __commonJS({
14291
14404
  function TypeUnarySuffix(ctx, state) {
14292
14405
  return $EVENT_C(ctx, state, "TypeUnarySuffix", TypeUnarySuffix$$);
14293
14406
  }
14294
- var TypeUnaryOp$0 = $S($EXPECT($L223, 'TypeUnaryOp "keyof"'), NonIdContinue);
14407
+ var TypeUnaryOp$0 = $S($EXPECT($L224, 'TypeUnaryOp "keyof"'), NonIdContinue);
14295
14408
  var TypeUnaryOp$1 = $S($EXPECT($L184, 'TypeUnaryOp "readonly"'), NonIdContinue);
14296
14409
  var TypeUnaryOp$$ = [TypeUnaryOp$0, TypeUnaryOp$1];
14297
14410
  function TypeUnaryOp(ctx, state) {
@@ -14322,7 +14435,7 @@ var require_parser = __commonJS({
14322
14435
  function TypeIndexedAccess(ctx, state) {
14323
14436
  return $EVENT_C(ctx, state, "TypeIndexedAccess", TypeIndexedAccess$$);
14324
14437
  }
14325
- var UnknownAlias$0 = $TV($EXPECT($L224, 'UnknownAlias "???"'), function($skip, $loc, $0, $1) {
14438
+ var UnknownAlias$0 = $TV($EXPECT($L225, 'UnknownAlias "???"'), function($skip, $loc, $0, $1) {
14326
14439
  return { $loc, token: "unknown" };
14327
14440
  });
14328
14441
  function UnknownAlias(ctx, state) {
@@ -14448,7 +14561,7 @@ var require_parser = __commonJS({
14448
14561
  function NestedType(ctx, state) {
14449
14562
  return $EVENT(ctx, state, "NestedType", NestedType$0);
14450
14563
  }
14451
- var TypeConditional$0 = $TS($S($E(_), $EXPECT($R83, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
14564
+ var TypeConditional$0 = $TS($S($E(_), $EXPECT($R84, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
14452
14565
  return [$1, expressionizeTypeIf($3)];
14453
14566
  });
14454
14567
  var TypeConditional$1 = $TS($S(TypeCondition, NotDedented, QuestionMark, Type, __, Colon, Type), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
@@ -14528,17 +14641,17 @@ var require_parser = __commonJS({
14528
14641
  }
14529
14642
  var TypeLiteral$0 = TypeTemplateLiteral;
14530
14643
  var TypeLiteral$1 = Literal;
14531
- var TypeLiteral$2 = $TS($S($EXPECT($R17, "TypeLiteral /[+-]/"), NumericLiteral), function($skip, $loc, $0, $1, $2) {
14644
+ var TypeLiteral$2 = $TS($S($EXPECT($R10, "TypeLiteral /[+-]/"), NumericLiteral), function($skip, $loc, $0, $1, $2) {
14532
14645
  var sign = $1;
14533
14646
  var num = $2;
14534
14647
  if (sign[0] === "+")
14535
14648
  return num;
14536
14649
  return $0;
14537
14650
  });
14538
- var TypeLiteral$3 = $TS($S($EXPECT($L206, 'TypeLiteral "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14651
+ var TypeLiteral$3 = $TS($S($EXPECT($L207, 'TypeLiteral "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14539
14652
  return { type: "VoidType", $loc, token: $1 };
14540
14653
  });
14541
- var TypeLiteral$4 = $TV($EXPECT($L225, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
14654
+ var TypeLiteral$4 = $TV($EXPECT($L226, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
14542
14655
  return { $loc, token: "[]" };
14543
14656
  });
14544
14657
  var TypeLiteral$$ = [TypeLiteral$0, TypeLiteral$1, TypeLiteral$2, TypeLiteral$3, TypeLiteral$4];
@@ -14648,15 +14761,15 @@ var require_parser = __commonJS({
14648
14761
  function ThisType(ctx, state) {
14649
14762
  return $EVENT(ctx, state, "ThisType", ThisType$0);
14650
14763
  }
14651
- var Shebang$0 = $S($R$0($EXPECT($R84, "Shebang /#![^\\r\\n]*/")), EOL);
14764
+ var Shebang$0 = $S($R$0($EXPECT($R85, "Shebang /#![^\\r\\n]*/")), EOL);
14652
14765
  function Shebang(ctx, state) {
14653
14766
  return $EVENT(ctx, state, "Shebang", Shebang$0);
14654
14767
  }
14655
- var CivetPrologue$0 = $T($S($EXPECT($R85, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, $EXPECT($R86, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14768
+ var CivetPrologue$0 = $T($S($EXPECT($R86, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, $EXPECT($R87, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14656
14769
  var content = value[2];
14657
14770
  return content;
14658
14771
  });
14659
- var CivetPrologue$1 = $T($S($EXPECT($R85, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, $EXPECT($R86, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14772
+ var CivetPrologue$1 = $T($S($EXPECT($R86, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, $EXPECT($R87, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14660
14773
  var content = value[2];
14661
14774
  return content;
14662
14775
  });
@@ -14664,7 +14777,7 @@ var require_parser = __commonJS({
14664
14777
  function CivetPrologue(ctx, state) {
14665
14778
  return $EVENT_C(ctx, state, "CivetPrologue", CivetPrologue$$);
14666
14779
  }
14667
- var CivetPrologueContent$0 = $TS($S($EXPECT($L226, 'CivetPrologueContent "civet"'), NonIdContinue, $Q(CivetOption), $EXPECT($R87, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
14780
+ var CivetPrologueContent$0 = $TS($S($EXPECT($L227, 'CivetPrologueContent "civet"'), NonIdContinue, $Q(CivetOption), $EXPECT($R88, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
14668
14781
  var options = $3;
14669
14782
  return {
14670
14783
  type: "CivetPrologue",
@@ -14675,7 +14788,7 @@ var require_parser = __commonJS({
14675
14788
  function CivetPrologueContent(ctx, state) {
14676
14789
  return $EVENT(ctx, state, "CivetPrologueContent", CivetPrologueContent$0);
14677
14790
  }
14678
- var CivetOption$0 = $TR($EXPECT($R88, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14791
+ var CivetOption$0 = $TR($EXPECT($R89, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14679
14792
  const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
14680
14793
  if (l)
14681
14794
  return l.toUpperCase();
@@ -14692,11 +14805,11 @@ var require_parser = __commonJS({
14692
14805
  function CivetOption(ctx, state) {
14693
14806
  return $EVENT(ctx, state, "CivetOption", CivetOption$0);
14694
14807
  }
14695
- var UnknownPrologue$0 = $S($R$0($EXPECT($R85, "UnknownPrologue /[\\t ]*/")), StringLiteral, $TEXT(SimpleStatementDelimiter), EOS);
14808
+ var UnknownPrologue$0 = $S($R$0($EXPECT($R86, "UnknownPrologue /[\\t ]*/")), StringLiteral, $TEXT(SimpleStatementDelimiter), EOS);
14696
14809
  function UnknownPrologue(ctx, state) {
14697
14810
  return $EVENT(ctx, state, "UnknownPrologue", UnknownPrologue$0);
14698
14811
  }
14699
- var TripleSlashDirective$0 = $S($R$0($EXPECT($R89, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), $E(EOS));
14812
+ var TripleSlashDirective$0 = $S($R$0($EXPECT($R90, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), $E(EOS));
14700
14813
  function TripleSlashDirective(ctx, state) {
14701
14814
  return $EVENT(ctx, state, "TripleSlashDirective", TripleSlashDirective$0);
14702
14815
  }
@@ -14712,13 +14825,13 @@ var require_parser = __commonJS({
14712
14825
  function PrologueString(ctx, state) {
14713
14826
  return $EVENT_C(ctx, state, "PrologueString", PrologueString$$);
14714
14827
  }
14715
- var EOS$0 = $T($S($EXPECT($R90, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), $P(RestOfLine)), function(value) {
14828
+ var EOS$0 = $T($S($EXPECT($R91, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), $P(RestOfLine)), function(value) {
14716
14829
  return value[1];
14717
14830
  });
14718
14831
  function EOS(ctx, state) {
14719
14832
  return $EVENT(ctx, state, "EOS", EOS$0);
14720
14833
  }
14721
- var EOL$0 = $TR($EXPECT($R91, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14834
+ var EOL$0 = $TR($EXPECT($R92, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14722
14835
  return { $loc, token: $0 };
14723
14836
  });
14724
14837
  function EOL(ctx, state) {
@@ -15290,11 +15403,11 @@ var require_parser = __commonJS({
15290
15403
  function Prologue(ctx, state) {
15291
15404
  return $EVENT(ctx, state, "Prologue", Prologue$0);
15292
15405
  }
15293
- var ProloguePrefix$0 = $S(Prologue, $R$0($EXPECT($R92, "ProloguePrefix /[^]*/")));
15406
+ var ProloguePrefix$0 = $S(Prologue, $R$0($EXPECT($R93, "ProloguePrefix /[^]*/")));
15294
15407
  function ProloguePrefix(ctx, state) {
15295
15408
  return $EVENT(ctx, state, "ProloguePrefix", ProloguePrefix$0);
15296
15409
  }
15297
- var Indent$0 = $TR($EXPECT($R86, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15410
+ var Indent$0 = $TR($EXPECT($R87, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15298
15411
  const level = getIndentLevel($0, module.config.tab);
15299
15412
  return {
15300
15413
  $loc,
@@ -15442,11 +15555,11 @@ var require_parser = __commonJS({
15442
15555
  exports.WRHS = WRHS;
15443
15556
  exports.SingleLineBinaryOpRHS = SingleLineBinaryOpRHS;
15444
15557
  exports.RHS = RHS;
15445
- exports.ParenthesizedAssignment = ParenthesizedAssignment;
15446
15558
  exports.UnaryExpression = UnaryExpression;
15447
15559
  exports.UnaryWithoutParenthesizedAssignment = UnaryWithoutParenthesizedAssignment;
15448
15560
  exports.UnaryBody = UnaryBody;
15449
15561
  exports.UnaryWithoutParenthesizedAssignmentBody = UnaryWithoutParenthesizedAssignmentBody;
15562
+ exports.ParenthesizedAssignment = ParenthesizedAssignment;
15450
15563
  exports.UnaryPostfix = UnaryPostfix;
15451
15564
  exports.TypePostfix = TypePostfix;
15452
15565
  exports.Tuple = Tuple;
@@ -15474,6 +15587,7 @@ var require_parser = __commonJS({
15474
15587
  exports.PipelineTailItem = PipelineTailItem;
15475
15588
  exports.PrimaryExpression = PrimaryExpression;
15476
15589
  exports.ParenthesizedExpression = ParenthesizedExpression;
15590
+ exports.PartialPlaceholder = PartialPlaceholder;
15477
15591
  exports.ClassDeclaration = ClassDeclaration;
15478
15592
  exports.ClassExpression = ClassExpression;
15479
15593
  exports.ClassBinding = ClassBinding;
@@ -15934,6 +16048,7 @@ var require_parser = __commonJS({
15934
16048
  exports.TripleTick = TripleTick;
15935
16049
  exports.Try = Try;
15936
16050
  exports.Typeof = Typeof;
16051
+ exports.Undefined = Undefined;
15937
16052
  exports.Unless = Unless;
15938
16053
  exports.Until = Until;
15939
16054
  exports.Using = Using;
@@ -16139,6 +16254,13 @@ var require_parser = __commonJS({
16139
16254
  var import_parser = __toESM(require_parser());
16140
16255
 
16141
16256
  // source/generate.civet
16257
+ function stringify(node) {
16258
+ try {
16259
+ return JSON.stringify(node);
16260
+ } catch (e) {
16261
+ return `${node}`;
16262
+ }
16263
+ }
16142
16264
  function gen(node, options) {
16143
16265
  if (node === null || node === void 0) {
16144
16266
  return "";
@@ -16172,16 +16294,16 @@ function gen(node, options) {
16172
16294
  if (!node.children) {
16173
16295
  switch (node.type) {
16174
16296
  case "Ref": {
16175
- throw new Error(`Unpopulated ref ${JSON.stringify(node)}`);
16297
+ throw new Error(`Unpopulated ref ${stringify(node)}`);
16176
16298
  }
16177
16299
  }
16178
16300
  debugger;
16179
- throw new Error(`Unknown node ${JSON.stringify(node)}`);
16301
+ throw new Error(`Unknown node ${stringify(node)}`);
16180
16302
  }
16181
16303
  return gen(node.children, options);
16182
16304
  }
16183
16305
  debugger;
16184
- throw new Error(`Unknown node ${JSON.stringify(node)}`);
16306
+ throw new Error(`Unknown node ${stringify(node)}`);
16185
16307
  }
16186
16308
  var generate_default = gen;
16187
16309
  function prune(node) {