@danielx/civet 0.6.90 → 0.6.92

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