1pub fn get_civet_script() -> String {
2 String::from(
3 r#"
4 (()=>{
5"use strict";
6var module = {};
7var __create = Object.create;
8var __defProp = Object.defineProperty;
9var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10var __getOwnPropNames = Object.getOwnPropertyNames;
11var __getProtoOf = Object.getPrototypeOf;
12var __hasOwnProp = Object.prototype.hasOwnProperty;
13var __commonJS = (cb, mod) => function __require() {
14 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
15};
16var __export = (target, all) => {
17 for (var name in all)
18 __defProp(target, name, { get: all[name], enumerable: true });
19};
20var __copyProps = (to, from, except, desc) => {
21 if (from && typeof from === "object" || typeof from === "function") {
22 for (let key of __getOwnPropNames(from))
23 if (!__hasOwnProp.call(to, key) && key !== except)
24 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
25 }
26 return to;
27};
28var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
29 // If the importer is in node compatibility mode or this is not an ESM
30 // file that has been converted to a CommonJS file using a Babel-
31 // compatible transform (i.e. "__esModule" has not been set), then set
32 // "default" to the CommonJS "module.exports" for node compatibility.
33 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34 mod
35));
36var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
38// node_modules/@danielx/hera/dist/machine.js
39var require_machine = __commonJS({
40 "node_modules/@danielx/hera/dist/machine.js"(exports2, module2) {
41 "use strict";
42 var __defProp2 = Object.defineProperty;
43 var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
44 var __getOwnPropNames2 = Object.getOwnPropertyNames;
45 var __hasOwnProp2 = Object.prototype.hasOwnProperty;
46 var __export2 = (target, all) => {
47 for (var name in all)
48 __defProp2(target, name, { get: all[name], enumerable: true });
49 };
50 var __copyProps2 = (to, from, except, desc) => {
51 if (from && typeof from === "object" || typeof from === "function") {
52 for (let key of __getOwnPropNames2(from))
53 if (!__hasOwnProp2.call(to, key) && key !== except)
54 __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
55 }
56 return to;
57 };
58 var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
59 var machine_exports = {};
60 __export2(machine_exports, {
61 $C: () => $C2,
62 $E: () => $E2,
63 $EVENT: () => $EVENT2,
64 $EVENT_C: () => $EVENT_C2,
65 $EXPECT: () => $EXPECT2,
66 $L: () => $L231,
67 $N: () => $N2,
68 $P: () => $P2,
69 $Q: () => $Q2,
70 $R: () => $R95,
71 $R$0: () => $R$02,
72 $S: () => $S2,
73 $T: () => $T2,
74 $TEXT: () => $TEXT2,
75 $TR: () => $TR2,
76 $TS: () => $TS2,
77 $TV: () => $TV2,
78 $Y: () => $Y2,
79 ParseError: () => ParseError2,
80 Validator: () => Validator2
81 });
82 module2.exports = __toCommonJS2(machine_exports);
83 function $EXPECT2(parser2, expectation) {
84 return function(ctx, state2) {
85 const result = parser2(ctx, state2);
86 if (!result)
87 ctx.fail(state2.pos, expectation);
88 return result;
89 };
90 }
91 function $L231(str) {
92 return function(_ctx, state2) {
93 const { input, pos } = state2, { length } = str, end = pos + length;
94 if (input.substring(pos, end) === str) {
95 return {
96 loc: {
97 pos,
98 length
99 },
100 pos: end,
101 value: str
102 };
103 }
104 return;
105 };
106 }
107 function $R95(regExp) {
108 return function(_ctx, state2) {
109 const { input, pos } = state2;
110 regExp.lastIndex = state2.pos;
111 let l, m, v;
112 if (m = input.match(regExp)) {
113 v = m[0];
114 l = v.length;
115 return {
116 loc: {
117 pos,
118 length: l
119 },
120 pos: pos + l,
121 value: m
122 };
123 }
124 return;
125 };
126 }
127 function $C2(...terms) {
128 return (ctx, state2) => {
129 let i = 0;
130 const l = terms.length;
131 while (i < l) {
132 const r = terms[i++](ctx, state2);
133 if (r)
134 return r;
135 }
136 return;
137 };
138 }
139 function $S2(...terms) {
140 return (ctx, state2) => {
141 let { input, pos } = state2, i = 0, value;
142 const results = [], s = pos, l = terms.length;
143 while (i < l) {
144 const r = terms[i++](ctx, { input, pos });
145 if (r) {
146 ({ pos, value } = r);
147 results.push(value);
148 } else
149 return;
150 }
151 return {
152 loc: {
153 pos: s,
154 length: pos - s
155 },
156 pos,
157 value: results
158 };
159 };
160 }
161 function $E2(fn) {
162 return (ctx, state2) => {
163 const r = fn(ctx, state2);
164 if (r)
165 return r;
166 const { pos } = state2;
167 return {
168 loc: {
169 pos,
170 length: 0
171 },
172 pos,
173 value: void 0
174 };
175 };
176 }
177 function $Q2(fn) {
178 return (ctx, state2) => {
179 let { input, pos } = state2;
180 let value;
181 const s = pos;
182 const results = [];
183 while (true) {
184 const prevPos = pos;
185 const r = fn(ctx, { input, pos });
186 if (!r)
187 break;
188 ({ pos, value } = r);
189 if (pos === prevPos)
190 break;
191 else
192 results.push(value);
193 }
194 return {
195 loc: {
196 pos: s,
197 length: pos - s
198 },
199 pos,
200 value: results
201 };
202 };
203 }
204 function $P2(fn) {
205 return (ctx, state2) => {
206 const { input, pos: s } = state2;
207 let value;
208 const first = fn(ctx, state2);
209 if (!first)
210 return;
211 let { pos } = first;
212 const results = [first.value];
213 while (true) {
214 const prevPos = pos;
215 const r = fn(ctx, { input, pos });
216 if (!r)
217 break;
218 ({ pos, value } = r);
219 if (pos === prevPos)
220 break;
221 results.push(value);
222 }
223 return {
224 loc: {
225 pos: s,
226 length: pos - s
227 },
228 value: results,
229 pos
230 };
231 };
232 }
233 function $TEXT2(fn) {
234 return (ctx, state2) => {
235 const newState = fn(ctx, state2);
236 if (!newState)
237 return;
238 newState.value = state2.input.substring(state2.pos, newState.pos);
239 return newState;
240 };
241 }
242 function $N2(fn) {
243 return (ctx, state2) => {
244 const newState = fn(ctx, state2);
245 if (newState)
246 return;
247 return {
248 loc: {
249 pos: state2.pos,
250 length: 0
251 },
252 value: void 0,
253 pos: state2.pos
254 };
255 };
256 }
257 function $Y2(fn) {
258 return (ctx, state2) => {
259 const newState = fn(ctx, state2);
260 if (!newState)
261 return;
262 return {
263 loc: {
264 pos: state2.pos,
265 length: 0
266 },
267 value: void 0,
268 pos: state2.pos
269 };
270 };
271 }
272 function $T2(parser2, fn) {
273 return function(ctx, state2) {
274 const result = parser2(ctx, state2);
275 if (!result)
276 return;
277 if (ctx.tokenize)
278 return result;
279 const { value } = result;
280 const mappedValue = fn(value);
281 result.value = mappedValue;
282 return result;
283 };
284 }
285 function $TR2(parser2, fn) {
286 return function(ctx, state2) {
287 const result = parser2(ctx, state2);
288 if (!result)
289 return;
290 if (ctx.tokenize)
291 return result;
292 const { loc, value } = result;
293 const mappedValue = fn(SKIP, loc, ...value);
294 if (mappedValue === SKIP) {
295 return;
296 }
297 result.value = mappedValue;
298 return result;
299 };
300 }
301 function $TS2(parser2, fn) {
302 return function(ctx, state2) {
303 const result = parser2(ctx, state2);
304 if (!result)
305 return;
306 if (ctx.tokenize)
307 return result;
308 const { loc, value } = result;
309 const mappedValue = fn(SKIP, loc, value, ...value);
310 if (mappedValue === SKIP) {
311 return;
312 }
313 result.value = mappedValue;
314 return result;
315 };
316 }
317 function $TV2(parser2, fn) {
318 return function(ctx, state2) {
319 const result = parser2(ctx, state2);
320 if (!result)
321 return;
322 if (ctx.tokenize)
323 return result;
324 const { loc, value } = result;
325 const mappedValue = fn(SKIP, loc, value, value);
326 if (mappedValue === SKIP) {
327 return;
328 }
329 result.value = mappedValue;
330 return result;
331 };
332 }
333 function $R$02(parser2) {
334 return function(ctx, state2) {
335 const result = parser2(ctx, state2);
336 if (!result)
337 return;
338 const value = result.value[0];
339 result.value = value;
340 return result;
341 };
342 }
343 function $EVENT2(ctx, state2, name, fn) {
344 let eventData, enter, exit;
345 if (enter = ctx.enter) {
346 const result2 = enter(name, state2);
347 if (result2) {
348 if ("cache" in result2)
349 return result2.cache;
350 eventData = result2.data;
351 }
352 }
353 let result = fn(ctx, state2);
354 if (result && ctx.tokenize) {
355 result = $TOKEN(name, state2, result);
356 }
357 if (exit = ctx.exit)
358 exit(name, state2, result, eventData);
359 return result;
360 }
361 function $EVENT_C2(ctx, state2, name, fns) {
362 let eventData, enter, exit;
363 if (enter = ctx.enter) {
364 const result2 = enter(name, state2);
365 if (result2) {
366 if ("cache" in result2)
367 return result2.cache;
368 eventData = result2.data;
369 }
370 }
371 let result, i = 0, l = fns.length;
372 while (!result && i < l) {
373 if (result = fns[i](ctx, state2))
374 break;
375 i++;
376 }
377 if (result && ctx.tokenize) {
378 result = $TOKEN(name, state2, result);
379 }
380 if (exit = ctx.exit)
381 exit(name, state2, result, eventData);
382 return result;
383 }
384 function $TOKEN(name, state2, newState) {
385 if (!newState)
386 return;
387 newState.value = {
388 type: name,
389 children: [newState.value].flat(),
390 token: state2.input.substring(state2.pos, newState.pos),
391 loc: newState.loc
392 };
393 return newState;
394 }
395 var SKIP = {};
396 function Validator2() {
397 const failHintRegex = /\S+|\s+|$/y;
398 const failExpected = Array(16);
399 let failIndex = 0;
400 let maxFailPos = 0;
401 function fail(pos, expected) {
402 if (pos < maxFailPos)
403 return;
404 if (pos > maxFailPos) {
405 maxFailPos = pos;
406 failExpected.length = failIndex = 0;
407 }
408 failExpected[failIndex++] = expected;
409 return;
410 }
411 function location(input, pos) {
412 const [line, column] = input.split(/\n|\r\n|\r/).reduce(([row, col], line2) => {
413 const l = line2.length + 1;
414 if (pos >= l) {
415 pos -= l;
416 return [row + 1, 1];
417 } else if (pos >= 0) {
418 col += pos;
419 pos = -1;
420 return [row, col];
421 } else {
422 return [row, col];
423 }
424 }, [1, 1]);
425 return [line, column];
426 }
427 function validate(input, result, { filename: filename2 }) {
428 if (result && result.pos === input.length)
429 return result.value;
430 const expectations = Array.from(new Set(failExpected.slice(0, failIndex)));
431 let l = location(input, maxFailPos), [line, column] = l;
432 if (result && result.pos > maxFailPos) {
433 l = location(input, result.pos);
434 throw new Error(`${filename2}:${line}:${column} Unconsumed input at #{l}
435
436${input.slice(result.pos)}
437`);
438 }
439 if (expectations.length) {
440 failHintRegex.lastIndex = maxFailPos;
441 let [hint] = input.match(failHintRegex);
442 if (hint.length)
443 hint = JSON.stringify(hint);
444 else
445 hint = "EOF";
446 const error = new ParseError2("Failed to parse", `Expected:
447 ${expectations.join("\n ")}
448Found: ${hint}
449`, filename2, line, column, maxFailPos);
450 throw error;
451 }
452 if (result) {
453 throw new Error(`
454Unconsumed input at ${l}
455
456${input.slice(result.pos)}
457`);
458 }
459 throw new Error("No result");
460 }
461 function reset() {
462 failIndex = 0;
463 maxFailPos = 0;
464 failExpected.length = 0;
465 }
466 return {
467 fail,
468 validate,
469 reset
470 };
471 }
472 var ParseError2 = class extends Error {
473 constructor(header, body, filename2, line, column, offset) {
474 let message = `${filename2}:${line}:${column} ${header}`;
475 if (body)
476 message += `
477${body}`;
478 super(message);
479 this.header = header;
480 this.body = body;
481 this.filename = filename2;
482 this.line = line;
483 this.column = column;
484 this.offset = offset;
485 this.name = "ParseError";
486 this.message = message;
487 }
488 };
489 }
490});
491
492// source/main.civet
493var main_exports = {};
494__export(main_exports, {
495 ParseError: () => import_lib3.ParseError,
496 ParseErrors: () => ParseErrors,
497 SourceMap: () => SourceMap2,
498 compile: () => compile,
499 default: () => main_default,
500 generate: () => generate_default,
501 isCompileError: () => isCompileError,
502 lib: () => lib_exports,
503 parse: () => parse,
504 parseProgram: () => parseProgram,
505 prune: () => prune,
506 sourcemap: () => sourcemap_exports
507});
508module.exports = __toCommonJS(main_exports);
509
510// source/parser.hera
511var import_lib3 = __toESM(require_machine());
512
513// source/parser/lib.civet
514var lib_exports = {};
515__export(lib_exports, {
516 addPostfixStatement: () => addPostfixStatement,
517 adjustBindingElements: () => adjustBindingElements,
518 adjustIndexAccess: () => adjustIndexAccess,
519 attachPostfixStatementAsExpression: () => attachPostfixStatementAsExpression,
520 blockWithPrefix: () => blockWithPrefix,
521 convertNamedImportsToObject: () => convertNamedImportsToObject,
522 convertObjectToJSXAttributes: () => convertObjectToJSXAttributes,
523 convertWithClause: () => convertWithClause,
524 dedentBlockString: () => dedentBlockString,
525 dedentBlockSubstitutions: () => dedentBlockSubstitutions,
526 deepCopy: () => deepCopy,
527 dynamizeImportDeclaration: () => dynamizeImportDeclaration,
528 dynamizeImportDeclarationExpression: () => dynamizeImportDeclarationExpression,
529 expressionizeTypeIf: () => expressionizeTypeIf,
530 forRange: () => forRange,
531 gatherBindingCode: () => gatherBindingCode,
532 gatherRecursive: () => gatherRecursive,
533 gatherRecursiveAll: () => gatherRecursiveAll,
534 gatherRecursiveWithinFunction: () => gatherRecursiveWithinFunction,
535 getHelperRef: () => getHelperRef,
536 getIndentLevel: () => getIndentLevel,
537 getPrecedence: () => getPrecedence,
538 getTrimmingSpace: () => getTrimmingSpace,
539 hasAwait: () => hasAwait,
540 hasImportDeclaration: () => hasImportDeclaration,
541 hasYield: () => hasYield,
542 insertTrimmingSpace: () => insertTrimmingSpace,
543 isEmptyBareBlock: () => isEmptyBareBlock,
544 isFunction: () => isFunction,
545 isWhitespaceOrEmpty: () => isWhitespaceOrEmpty,
546 lastAccessInCallExpression: () => lastAccessInCallExpression,
547 literalValue: () => literalValue,
548 makeAmpersandFunction: () => makeAmpersandFunction,
549 makeEmptyBlock: () => makeEmptyBlock,
550 makeExpressionStatement: () => makeExpressionStatement,
551 makeGetterMethod: () => makeGetterMethod,
552 makeLeftHandSideExpression: () => makeLeftHandSideExpression,
553 makeRef: () => makeRef,
554 maybeRef: () => maybeRef,
555 maybeRefAssignment: () => maybeRefAssignment,
556 modifyString: () => modifyString,
557 negateCondition: () => negateCondition,
558 precedenceStep: () => precedenceStep,
559 prepend: () => prepend,
560 processAssignmentDeclaration: () => processAssignmentDeclaration,
561 processBinaryOpExpression: () => processBinaryOpExpression,
562 processCallMemberExpression: () => processCallMemberExpression,
563 processCoffeeDo: () => processCoffeeDo,
564 processCoffeeInterpolation: () => processCoffeeInterpolation,
565 processForInOf: () => processForInOf,
566 processProgram: () => processProgram,
567 processProgramAsync: () => processProgramAsync,
568 processTryBlock: () => processTryBlock,
569 processUnaryExpression: () => processUnaryExpression,
570 quoteString: () => quoteString,
571 reorderBindingRestProperty: () => reorderBindingRestProperty,
572 replaceNode: () => replaceNode,
573 replaceNodes: () => replaceNodes,
574 skipImplicitArguments: () => skipImplicitArguments,
575 trimFirstSpace: () => trimFirstSpace,
576 typeOfJSX: () => typeOfJSX,
577 wrapIIFE: () => wrapIIFE
578});
579
580// source/parser/binding.civet
581function adjustAtBindings(statements, asThis = false) {
582 gatherRecursiveAll(statements, (n) => n.type === "AtBindingProperty").forEach((binding) => {
583 const { ref } = binding;
584 if (asThis) {
585 const atBinding = binding.binding;
586 atBinding.children.pop();
587 atBinding.type = void 0;
588 binding.children.unshift(ref.id, ": this.", ref.base);
589 binding.type = "Property";
590 binding.ref = void 0;
591 return;
592 }
593 if (ref.names[0] !== ref.base) {
594 return binding.children.unshift(ref.base, ": ");
595 }
596 ;
597 return;
598 });
599}
600function adjustBindingElements(elements) {
601 const names = elements.flatMap((p) => p.names || []), { length } = elements;
602 let blockPrefix, restIndex = -1, restCount = 0;
603 elements.forEach(({ type }, i) => {
604 if (type === "BindingRestElement") {
605 if (restIndex < 0)
606 restIndex = i;
607 return restCount++;
608 }
609 ;
610 return;
611 });
612 if (restCount === 0) {
613 return {
614 children: elements,
615 names,
616 blockPrefix,
617 length
618 };
619 } else if (restCount === 1) {
620 const rest = elements[restIndex];
621 const after = elements.slice(restIndex + 1);
622 const restIdentifier = rest.binding.ref || rest.binding;
623 names.push(...rest.names || []);
624 let l = after.length;
625 if (l) {
626 if (arrayElementHasTrailingComma(after[l - 1]))
627 l++;
628 blockPrefix = {
629 type: "PostRestBindingElements",
630 children: ["[", insertTrimmingSpace(after, ""), "] = ", restIdentifier, ".splice(-", l.toString(), ")"],
631 names: after.flatMap((p) => p.names)
632 };
633 }
634 return {
635 names,
636 children: [...elements.slice(0, restIndex), {
637 ...rest,
638 children: rest.children.slice(0, -1)
639 // remove trailing comma
640 }],
641 blockPrefix,
642 length
643 };
644 }
645 const err = {
646 type: "Error",
647 children: ["Multiple rest elements in array pattern"]
648 };
649 return {
650 names,
651 children: [...elements, err],
652 blockPrefix,
653 length
654 };
655}
656function gatherBindingCode(statements, opts) {
657 const thisAssignments = [];
658 const splices = [];
659 function insertRestSplices(s, p, thisAssignments2) {
660 gatherRecursiveAll(s, (n) => n.blockPrefix || opts?.injectParamProps && n.accessModifier || n.type === "AtBinding").forEach((n) => {
661 if (n.type === "AtBinding") {
662 const { ref } = n;
663 const { id } = ref;
664 thisAssignments2.push([`this.${id} = `, ref]);
665 return;
666 }
667 if (opts?.injectParamProps && n.type === "Parameter" && n.accessModifier) {
668 n.names.forEach((id) => ({
669 push: thisAssignments2.push({
670 type: "AssignmentExpression",
671 children: [`this.${id} = `, id],
672 js: true
673 })
674 }));
675 return;
676 }
677 const { blockPrefix } = n;
678 p.push(blockPrefix);
679 return insertRestSplices(blockPrefix, p, thisAssignments2);
680 });
681 }
682 insertRestSplices(statements, splices, thisAssignments);
683 return [splices, thisAssignments];
684}
685function arrayElementHasTrailingComma(elementNode) {
686 let ref1;
687 const lastChild = (ref1 = elementNode.children)[ref1.length - 1];
688 return lastChild && lastChild[lastChild.length - 1]?.token === ",";
689}
690
691// source/parser/ref.civet
692function makeRef(base = "ref", id = base) {
693 return {
694 type: "Ref",
695 base,
696 id
697 };
698}
699function needsRef(expression, base = "ref") {
700 if (!(expression != null && typeof expression === "object")) {
701 return;
702 }
703 if (Array.isArray(expression)) {
704 const nonempty = ((s, e) => {
705 let step = e > s ? 1 : -1;
706 return Array.from({ length: Math.abs(e - s) }, (_2, i) => s + i * step);
707 })(0, expression.length).filter((i) => !isWhitespaceOrEmpty(expression[i]));
708 if (nonempty.length === 1) {
709 let ref1;
710 if (ref1 = needsRef(expression[nonempty[0]], base)) {
711 const ref = ref1;
712 return ref;
713 }
714 return;
715 } else {
716 return makeRef(base);
717 }
718 }
719 switch (expression.type) {
720 case "Ref":
721 case "Identifier":
722 case "Literal":
723 return;
724 }
725 return makeRef(base);
726}
727function maybeRef(exp, base = "ref") {
728 return needsRef(exp, base) || exp;
729}
730function makeRefAssignment(ref, exp) {
731 const refAssignment = {
732 type: "AssignmentExpression",
733 children: [ref, " = ", exp]
734 };
735 return {
736 hoistDec: {
737 type: "Declaration",
738 children: ["let ", ref],
739 names: []
740 },
741 refAssignment,
742 refAssignmentComma: refAssignment ? [refAssignment, ","] : []
743 };
744}
745function maybeRefAssignment(exp, base = "ref") {
746 let hoistDec, refAssignment;
747 const ref = maybeRef(exp, base);
748 if (ref === exp) {
749 return { ref, refAssignmentComma: [] };
750 } else {
751 return { ref, ...makeRefAssignment(ref, exp) };
752 }
753}
754
755// source/parser/function.civet
756function isVoidType(t) {
757 return t?.type === "LiteralType" && t.t.type === "VoidType";
758}
759function isPromiseVoidType(t) {
760 return t?.type === "IdentifierType" && t.raw === "Promise" && t.args?.types?.length === 1 && isVoidType(t.args.types[0]);
761}
762function isGeneratorVoidType(t) {
763 return t?.type === "IdentifierType" && (t.raw === "Iterator" || t.raw === "Generator") && t.args?.types?.length >= 2 && isVoidType(t.args.types[1]);
764}
765function isAsyncGeneratorVoidType(t) {
766 return t?.type === "IdentifierType" && (t.raw === "AsyncIterator" || t.raw === "AsyncGenerator") && t.args?.types?.length >= 2 && isVoidType(t.args.types[1]);
767}
768function implicitFunctionBlock(f) {
769 if (f.abstract || f.block || f.signature?.optional)
770 return;
771 const { name, parent } = f;
772 if (parent?.type === "ExportDeclaration")
773 return;
774 const expressions = parent?.expressions ?? parent?.elements;
775 const currentIndex = expressions?.findIndex(([, def]) => def === f);
776 const following = currentIndex >= 0 && expressions[currentIndex + 1]?.[1];
777 if (f.type === following?.type && name && name === following.name) {
778 f.ts = true;
779 } else {
780 const block = makeEmptyBlock();
781 block.parent = f;
782 f.block = block;
783 f.children.push(block);
784 f.ts = false;
785 }
786}
787function processReturn(f, implicitReturns) {
788 let { returnType } = f.signature;
789 if (returnType && returnType.optional) {
790 convertOptionalType(returnType);
791 }
792 if (!processReturnValue(f) && implicitReturns) {
793 const { signature, block } = f;
794 const { modifier, name, returnType: returnType2 } = signature;
795 const { async, generator, set } = modifier;
796 const isMethod = f.type === "MethodDefinition";
797 const isConstructor = isMethod && name === "constructor";
798 const isVoid = isVoidType(returnType2?.t) || async && (isPromiseVoidType(returnType2?.t) || generator && isAsyncGeneratorVoidType(returnType2?.t)) || !async && generator && isGeneratorVoidType(returnType2?.t);
799 if (block?.type === "BlockStatement") {
800 if (isVoid || set || isConstructor) {
801 if (block.bare && block.implicitlyReturned) {
802 braceBlock(block);
803 }
804 } else {
805 if (!block.implicitlyReturned) {
806 insertReturn(block);
807 }
808 }
809 }
810 }
811}
812function processReturnValue(func) {
813 const { block } = func;
814 const values = gatherRecursiveWithinFunction(
815 block,
816 ({ type }) => type === "ReturnValue"
817 );
818 if (!values.length) {
819 return false;
820 }
821 const ref = makeRef("ret");
822 let declaration;
823 values.forEach((value) => {
824 value.children = [ref];
825 const { ancestor, child } = findAncestor(
826 value,
827 ({ type }) => type === "Declaration",
828 isFunction
829 );
830 if (ancestor) {
831 return declaration ??= child;
832 }
833 ;
834 return;
835 });
836 let returnType = func.returnType ?? func.signature?.returnType;
837 if (returnType) {
838 const { t } = returnType;
839 let m;
840 if (m = t.type, m === "TypePredicate") {
841 returnType = ": boolean";
842 } else if (m === "AssertsType") {
843 returnType = void 0;
844 }
845 }
846 if (declaration) {
847 if (!(declaration.suffix != null)) {
848 declaration.children[1] = declaration.suffix = returnType;
849 }
850 } else {
851 block.expressions.unshift([
852 getIndent(block.expressions[0]),
853 {
854 type: "Declaration",
855 children: ["let ", ref, returnType],
856 names: []
857 },
858 ";"
859 ]);
860 }
861 gatherRecursiveWithinFunction(
862 block,
863 (r) => r.type === "ReturnStatement" && !r.expression
864 ).forEach((r) => {
865 r.expression = ref;
866 return r.children.splice(-1, 1, " ", ref);
867 });
868 let ref1;
869 if (!((ref1 = block.children)[ref1.length - 2]?.type === "ReturnStatement")) {
870 let ref2;
871 const indent = getIndent((ref2 = block.expressions)[ref2.length - 1]) || ";";
872 block.expressions.push([
873 [indent],
874 {
875 type: "ReturnStatement",
876 expression: ref,
877 children: ["return ", ref]
878 }
879 ]);
880 }
881 return true;
882}
883function patternAsValue(pattern) {
884 switch (pattern.type) {
885 case "ArrayBindingPattern": {
886 const children = [...pattern.children];
887 const index = children.indexOf(pattern.elements);
888 if (index < 0)
889 throw new Error("failed to find elements in ArrayBindingPattern");
890 children[index] = pattern.elements.map((el) => {
891 const [ws, e, delim] = el.children;
892 return { ...el, children: [ws, patternAsValue(e), delim] };
893 });
894 return { ...pattern, children };
895 }
896 case "ObjectBindingPattern": {
897 const children = [...pattern.children];
898 const index = children.indexOf(pattern.properties);
899 if (index < 0)
900 throw new Error("failed to find properties in ArrayBindingPattern");
901 children[index] = pattern.properties.map(patternAsValue);
902 return { ...pattern, children };
903 }
904 case "Identifier":
905 case "BindingProperty": {
906 const children = [
907 // { name: value } = ... declares value, not name
908 pattern.value ?? pattern.name,
909 pattern.delim
910 ];
911 if (isWhitespaceOrEmpty(pattern.children[0])) {
912 children.unshift(pattern.children[0]);
913 }
914 return { ...pattern, children };
915 }
916 default:
917 return pattern;
918 }
919}
920function assignResults(node, collect) {
921 if (!node)
922 return;
923 switch (node.type) {
924 case "BlockStatement":
925 if (node.expressions.length) {
926 let ref3;
927 assignResults((ref3 = node.expressions)[ref3.length - 1], collect);
928 } else {
929 node.expressions.push(["", collect("void 0"), ";"]);
930 }
931 return;
932 case "CaseBlock":
933 node.clauses.forEach((clause) => {
934 return assignResults(clause, collect);
935 });
936 return;
937 case "WhenClause":
938 case "DefaultClause":
939 case "PatternClause": {
940 assignResults(node.block, collect);
941 return;
942 }
943 }
944 if (!Array.isArray(node)) {
945 return;
946 }
947 let [, exp, semi] = node;
948 if (semi?.type === "SemicolonDelimiter") {
949 return;
950 }
951 if (!exp) {
952 return;
953 }
954 if (isExit(exp)) {
955 return;
956 }
957 const outer = exp;
958 let { type } = exp;
959 if (type === "LabelledStatement") {
960 exp = exp.statement;
961 ({ type } = exp);
962 }
963 let ref4;
964 switch (exp.type) {
965 case "BreakStatement":
966 case "ContinueStatement":
967 case "DebuggerStatement":
968 case "EmptyStatement":
969 case "ReturnStatement":
970 case "ThrowStatement": {
971 return;
972 }
973 case "Declaration": {
974 let ref5;
975 if (exp.bindings?.length) {
976 ref5 = patternAsValue((ref4 = exp.bindings)[ref4.length - 1].pattern);
977 } else {
978 ref5 = "void 0";
979 }
980 ;
981 const value = ref5;
982 exp.children.push([
983 "",
984 [";", collect(value)]
985 ]);
986 return;
987 }
988 case "FunctionExpression": {
989 if (exp.id) {
990 exp.children.push([
991 "",
992 [";", collect(exp.id)]
993 ]);
994 return;
995 }
996 break;
997 }
998 case "ForStatement":
999 case "IterationStatement":
1000 case "DoStatement":
1001 case "ComptimeStatement": {
1002 wrapIterationReturningResults(exp, outer, collect);
1003 return;
1004 }
1005 case "BlockStatement": {
1006 if (node.expressions.some(isExit)) {
1007 return;
1008 }
1009 assignResults(exp.expressions[exp.expressions.length - 1], collect);
1010 return;
1011 }
1012 case "IfStatement": {
1013 assignResults(exp.then, collect);
1014 if (exp.then.bare && !exp.then.semicolon) {
1015 exp.then.children.push(exp.then.semicolon = ";");
1016 }
1017 if (exp.else) {
1018 assignResults(exp.else.block, collect);
1019 } else {
1020 exp.children.push([" else {", collect("void 0"), "}"]);
1021 }
1022 return;
1023 }
1024 case "PatternMatchingStatement": {
1025 assignResults(exp.children[0], collect);
1026 return;
1027 }
1028 case "SwitchStatement": {
1029 assignResults(exp.children[2], collect);
1030 return;
1031 }
1032 case "TryStatement": {
1033 exp.blocks.forEach((block) => assignResults(block, collect));
1034 return;
1035 }
1036 }
1037 if (node[node.length - 1]?.type === "SemicolonDelimiter") {
1038 return;
1039 }
1040 node[1] = collect(node[1]);
1041}
1042function insertReturn(node, outerNode = node) {
1043 if (!node)
1044 return;
1045 switch (node.type) {
1046 case "BlockStatement": {
1047 if (node.expressions.length) {
1048 if (node.expressions.some(([, exp2]) => isExit(exp2))) {
1049 return;
1050 }
1051 const last = node.expressions[node.expressions.length - 1];
1052 insertReturn(last);
1053 } else {
1054 if (node.parent.type === "CatchClause") {
1055 node.expressions.push(["return"]);
1056 }
1057 }
1058 return;
1059 }
1060 case "WhenClause": {
1061 if (node.break) {
1062 node.children.splice(node.children.indexOf(node.break), 1);
1063 }
1064 if (node.block.expressions.length) {
1065 insertReturn(node.block);
1066 } else {
1067 node.block.expressions.push(wrapWithReturn());
1068 }
1069 return;
1070 }
1071 case "DefaultClause": {
1072 insertReturn(node.block);
1073 return;
1074 }
1075 }
1076 if (!Array.isArray(node))
1077 return;
1078 let [, exp, semi] = node;
1079 if (semi?.type === "SemicolonDelimiter") {
1080 return;
1081 }
1082 if (!exp) {
1083 return;
1084 }
1085 if (isExit(exp)) {
1086 return;
1087 }
1088 const outer = exp;
1089 let { type } = exp;
1090 if (type === "LabelledStatement") {
1091 exp = exp.statement;
1092 ({ type } = exp);
1093 }
1094 let ref6;
1095 switch (type) {
1096 case "BreakStatement":
1097 case "ContinueStatement":
1098 case "DebuggerStatement":
1099 case "EmptyStatement":
1100 case "ReturnStatement":
1101 case "ThrowStatement": {
1102 return;
1103 }
1104 case "Declaration": {
1105 let ref7;
1106 if (exp.bindings?.length) {
1107 ref7 = [" ", patternAsValue((ref6 = exp.bindings)[ref6.length - 1].pattern)];
1108 } else {
1109 ref7 = [];
1110 }
1111 ;
1112 const value = ref7;
1113 exp.children.push(["", {
1114 type: "ReturnStatement",
1115 children: [
1116 ";return",
1117 ...value
1118 ],
1119 parent: exp
1120 }]);
1121 return;
1122 }
1123 case "FunctionExpression": {
1124 if (exp.id) {
1125 exp.children.push([
1126 "",
1127 {
1128 type: "ReturnStatement",
1129 children: [";return ", exp.id],
1130 parent: exp
1131 }
1132 ]);
1133 return;
1134 }
1135 break;
1136 }
1137 case "ForStatement":
1138 case "IterationStatement":
1139 case "DoStatement":
1140 case "ComptimeStatement": {
1141 wrapIterationReturningResults(exp, outer);
1142 return;
1143 }
1144 case "BlockStatement": {
1145 insertReturn(exp.expressions[exp.expressions.length - 1]);
1146 return;
1147 }
1148 case "IfStatement": {
1149 insertReturn(exp.then);
1150 if (exp.else)
1151 insertReturn(exp.else.block);
1152 else
1153 exp.children.push(["", {
1154 type: "ReturnStatement",
1155 // NOTE: add a prefixed semi-colon because the if block may not be braced
1156 children: [";return"],
1157 parent: exp
1158 }]);
1159 return;
1160 }
1161 case "PatternMatchingStatement": {
1162 insertReturn(exp.children[0]);
1163 return;
1164 }
1165 case "SwitchStatement": {
1166 insertSwitchReturns(exp);
1167 return;
1168 }
1169 case "TryStatement": {
1170 exp.blocks.forEach((block) => insertReturn(block));
1171 return;
1172 }
1173 }
1174 if (node[node.length - 1]?.type === "SemicolonDelimiter") {
1175 return;
1176 }
1177 const returnStatement = wrapWithReturn(node[1]);
1178 node.splice(1, 1, returnStatement);
1179}
1180function insertSwitchReturns(exp) {
1181 exp.caseBlock.clauses.forEach((clause) => {
1182 return insertReturn(clause);
1183 });
1184}
1185function wrapIterationReturningResults(statement, outer, collect) {
1186 if (statement.type === "DoStatement" || statement.type === "ComptimeStatement") {
1187 if (collect) {
1188 assignResults(statement.block, collect);
1189 } else {
1190 insertReturn(statement.block, outer);
1191 }
1192 return;
1193 }
1194 assert.equal(
1195 statement.resultsRef,
1196 void 0,
1197 "wrapIterationReturningResults should not be called twice on the same statement"
1198 );
1199 const resultsRef = statement.resultsRef = makeRef("results");
1200 const declaration = {
1201 type: "Declaration",
1202 children: ["const ", resultsRef, "=[]"]
1203 };
1204 outer.children.unshift(["", declaration, ";"]);
1205 assignResults(statement.block, (node) => {
1206 return [resultsRef, ".push(", node, ")"];
1207 });
1208 if (collect) {
1209 statement.children.push(collect(resultsRef));
1210 } else {
1211 statement.children.push(";return ", resultsRef, ";");
1212 }
1213}
1214function processParams(f) {
1215 const { type, parameters, block } = f;
1216 const isConstructor = f.name === "constructor";
1217 if (type === "ArrowFunction" && parameters && parameters.tp && parameters.tp.parameters.length === 1) {
1218 parameters.tp.parameters.push(",");
1219 }
1220 if (!block)
1221 return;
1222 const { expressions } = block;
1223 if (!expressions)
1224 return;
1225 const { blockPrefix } = parameters;
1226 let indent;
1227 if (!expressions.length) {
1228 indent = "";
1229 } else {
1230 indent = expressions[0][0];
1231 }
1232 const [splices, thisAssignments] = gatherBindingCode(parameters, {
1233 injectParamProps: isConstructor
1234 });
1235 const delimiter = {
1236 type: "SemicolonDelimiter",
1237 children: [";"]
1238 };
1239 const prefix = splices.map((s) => ["let ", s]).concat(thisAssignments).map(
1240 (s) => s.type ? {
1241 // TODO: figure out how to get JS only statement tuples
1242 ...s,
1243 children: [indent, ...s.children, delimiter]
1244 } : [indent, s, delimiter]
1245 );
1246 if (!prefix.length)
1247 return;
1248 if (isConstructor) {
1249 const superCalls = gatherNodes(
1250 expressions,
1251 (a) => typeof a === "object" && a != null && "type" in a && a.type === "CallExpression" && "children" in a && Array.isArray(a.children) && a.children.length >= 1 && typeof a.children[0] === "object" && a.children[0] != null && "token" in a.children[0] && a.children[0].token === "super"
1252 );
1253 if (superCalls.length) {
1254 const { child } = findAncestor(superCalls[0], (a1) => a1 === block);
1255 const index = findChildIndex(expressions, child);
1256 if (index < 0) {
1257 throw new Error("Could not find super call within top-level expressions");
1258 }
1259 expressions.splice(index + 1, 0, ...prefix);
1260 return;
1261 }
1262 }
1263 expressions.unshift(...prefix);
1264}
1265function processSignature(f) {
1266 const { block, signature } = f;
1267 if (hasAwait(block) && !f.async?.length) {
1268 f.async.push("async ");
1269 signature.modifier.async = true;
1270 }
1271 if (hasYield(block) && !f.generator?.length) {
1272 if (f.type === "ArrowFunction") {
1273 gatherRecursiveWithinFunction(block, ($) => $.type === "YieldExpression").forEach((y) => {
1274 const i = y.children.findIndex(($1) => $1.type === "Yield");
1275 return y.children.splice(i + 1, 0, {
1276 type: "Error",
1277 message: "Can't use yield inside of => arrow function"
1278 });
1279 });
1280 } else {
1281 f.generator.push("*");
1282 signature.modifier.generator = true;
1283 }
1284 }
1285}
1286function processFunctions(statements, config2) {
1287 gatherRecursiveAll(statements, ({ type }) => type === "FunctionExpression" || type === "ArrowFunction").forEach((f) => {
1288 if (f.type === "FunctionExpression") {
1289 implicitFunctionBlock(f);
1290 }
1291 processSignature(f);
1292 processParams(f);
1293 return processReturn(f, config2.implicitReturns);
1294 });
1295 gatherRecursiveAll(statements, ({ type }) => type === "MethodDefinition").forEach((f) => {
1296 implicitFunctionBlock(f);
1297 processParams(f);
1298 return processReturn(f, config2.implicitReturns);
1299 });
1300}
1301function expressionizeIteration(exp) {
1302 const { async, subtype, block, children, statement } = exp;
1303 const i = children.indexOf(statement);
1304 if (i < 0) {
1305 throw new Error("Could not find iteration statement in iteration expression");
1306 }
1307 if (subtype === "DoStatement" || subtype === "ComptimeStatement") {
1308 children.splice(i, 1, wrapIIFE([["", statement, void 0]], async));
1309 updateParentPointers(exp);
1310 return;
1311 }
1312 exp.resultsRef ??= makeRef("results");
1313 const { resultsRef } = exp;
1314 assignResults(block, (node) => {
1315 return [resultsRef, ".push(", node, ")"];
1316 });
1317 braceBlock(block);
1318 children.splice(
1319 i,
1320 1,
1321 wrapIIFE([
1322 ["", ["const ", resultsRef, "=[]"], ";"],
1323 ...children.map((c) => ["", c, void 0]),
1324 ["", wrapWithReturn(resultsRef)]
1325 ], async)
1326 );
1327 updateParentPointers(exp);
1328}
1329function skipImplicitArguments(args) {
1330 if (args.length === 1) {
1331 let arg0 = args[0];
1332 if (arg0.type === "StatementExpression") {
1333 arg0 = arg0.statement;
1334 }
1335 return arg0.type === "IterationExpression" && arg0.subtype !== "DoStatement" && !arg0.async && isEmptyBareBlock(arg0.block);
1336 }
1337 return false;
1338}
1339function processCoffeeDo(ws, expression) {
1340 ws = insertTrimmingSpace(ws, "");
1341 const args = [];
1342 if (typeof expression === "object" && expression != null && "type" in expression && expression.type === "ArrowFunction" || typeof expression === "object" && expression != null && "type" in expression && expression.type === "FunctionExpression") {
1343 const { parameters } = expression;
1344 const newParameters = {
1345 ...parameters,
1346 children: (() => {
1347 const results = [];
1348 for (let ref8 = parameters.children, i1 = 0, len3 = ref8.length; i1 < len3; i1++) {
1349 let parameter = ref8[i1];
1350 if (typeof parameter === "object" && parameter != null && "type" in parameter && parameter.type === "Parameter") {
1351 let ref9;
1352 if (ref9 = parameter.initializer) {
1353 const initializer = ref9;
1354 args.push(initializer.expression, parameter.delim);
1355 parameter = {
1356 ...parameter,
1357 initializer: void 0,
1358 children: parameter.children.filter((a2) => a2 !== initializer)
1359 };
1360 } else {
1361 args.push(parameter.children.filter(
1362 (a3) => a3 !== parameter.typeSuffix
1363 ));
1364 }
1365 }
1366 results.push(parameter);
1367 }
1368 return results;
1369 })()
1370 };
1371 expression = {
1372 ...expression,
1373 parameters: newParameters,
1374 children: expression.children.map(($2) => $2 === parameters ? newParameters : $2)
1375 };
1376 }
1377 return {
1378 type: "CallExpression",
1379 children: [
1380 makeLeftHandSideExpression(expression),
1381 {
1382 type: "Call",
1383 args,
1384 children: ["(", args, ")"]
1385 }
1386 ]
1387 };
1388}
1389function makeAmpersandFunction(rhs) {
1390 let { ref, typeSuffix, body } = rhs;
1391 if (!(ref != null)) {
1392 ref = makeRef("$");
1393 inplacePrepend(ref, body);
1394 }
1395 if (body?.type === "ObjectExpression") {
1396 body = makeLeftHandSideExpression(body);
1397 }
1398 const parameters = makeNode({
1399 type: "Parameters",
1400 children: typeSuffix ? ["(", ref, typeSuffix, ")"] : [ref],
1401 names: []
1402 });
1403 const expressions = [[" ", body]];
1404 const block = makeNode({
1405 type: "BlockStatement",
1406 bare: true,
1407 expressions,
1408 children: [expressions],
1409 implicitlyReturned: true
1410 });
1411 const async = [];
1412 const children = [async, parameters, " =>", block];
1413 const fn = makeNode({
1414 type: "ArrowFunction",
1415 async,
1416 signature: {
1417 modifier: {
1418 async: !!async.length
1419 }
1420 },
1421 children,
1422 ref,
1423 block,
1424 parameters,
1425 ampersandBlock: true,
1426 body
1427 });
1428 if (isStatement(body)) {
1429 braceBlock(block);
1430 fn.ampersandBlock = false;
1431 delete fn.body;
1432 }
1433 return fn;
1434}
1435
1436// source/parser/block.civet
1437function blockWithPrefix(prefixStatements, block) {
1438 if (prefixStatements && prefixStatements.length) {
1439 const expressions = [...prefixStatements, ...block.expressions];
1440 updateParentPointers(prefixStatements, block);
1441 block = {
1442 ...block,
1443 expressions,
1444 children: block.children === block.expressions ? expressions : block.children.map((c) => c === block.expressions ? expressions : c)
1445 };
1446 braceBlock(block);
1447 updateParentPointers(block);
1448 }
1449 return block;
1450}
1451function braceBlock(block) {
1452 if (block.bare && !block.root) {
1453 if (block.children === block.expressions) {
1454 block.children = [block.expressions];
1455 }
1456 block.children.unshift(" {");
1457 block.children.push("}");
1458 const { implicitlyReturned } = block;
1459 block.bare = block.implicitlyReturned = false;
1460 if (implicitlyReturned) {
1461 processReturn(block.parent, true);
1462 }
1463 }
1464}
1465function duplicateBlock(block) {
1466 const expressions = [...block.expressions];
1467 let children;
1468 if (block.children === block.expressions) {
1469 children = expressions;
1470 } else {
1471 children = [...block.children];
1472 children.splice(children.indexOf(block.expressions), 1, expressions);
1473 }
1474 return {
1475 ...block,
1476 expressions,
1477 children
1478 };
1479}
1480function makeEmptyBlock() {
1481 const expressions = [];
1482 return {
1483 type: "BlockStatement",
1484 expressions,
1485 children: ["{", expressions, "}"],
1486 bare: false,
1487 empty: true
1488 };
1489}
1490function makeBlockFragment() {
1491 const expressions = [];
1492 return {
1493 type: "BlockStatement",
1494 children: expressions,
1495 parent: void 0,
1496 expressions,
1497 bare: false,
1498 root: false
1499 };
1500}
1501function replaceBlockExpression(node, child, replacement) {
1502 let found = false;
1503 const { expressions } = node;
1504 for (let i1 = 0, len3 = expressions.length; i1 < len3; i1++) {
1505 const statement = expressions[i1];
1506 const [, s] = statement;
1507 if (s === child) {
1508 statement[1] = replacement;
1509 replacement.parent = node;
1510 found = true;
1511 break;
1512 }
1513 }
1514 if (!found) {
1515 throw new Error("Could not find child to replace");
1516 }
1517}
1518function getIndent(statement) {
1519 let indent = statement?.[0];
1520 if (Array.isArray(indent)) {
1521 indent = indent.flat(Infinity);
1522 return indent.filter((n) => n && !(n.type === "Comment")).map((n) => {
1523 if (typeof n === "string")
1524 return n;
1525 if (n.token != null)
1526 return n.token;
1527 return "";
1528 });
1529 }
1530 return indent;
1531}
1532function hoistRefDecs(statements) {
1533 gatherRecursiveAll(statements, (s) => s.hoistDec).forEach((node) => {
1534 const { hoistDec } = node;
1535 node.hoistDec = null;
1536 const { ancestor, child } = findAncestor(node, (ancestor2) => {
1537 return ancestor2.type === "BlockStatement" && (!ancestor2.bare || ancestor2.root);
1538 });
1539 if (ancestor) {
1540 insertHoistDec(ancestor, child, hoistDec);
1541 } else {
1542 throw new Error("Couldn't find block to hoist declaration into.");
1543 }
1544 return;
1545 });
1546}
1547function insertHoistDec(block, node, dec) {
1548 const { expressions } = block;
1549 const index = findChildIndex(expressions, node);
1550 if (index < 0) {
1551 throw new Error("Couldn't find expression in block for hoistable declaration.");
1552 }
1553 const statement = [expressions[index][0], dec, ";"];
1554 expressions[index][0] = "";
1555 expressions.splice(index, 0, statement);
1556 updateParentPointers(dec, block);
1557}
1558function processBlocks(statements) {
1559 insertSemicolon(statements);
1560 gatherRecursive(statements, ($) => $.type === "BlockStatement").forEach(({ expressions }) => {
1561 return processBlocks(expressions);
1562 });
1563}
1564function insertSemicolon(statements) {
1565 const l = statements.length;
1566 for (let i2 = 0, len1 = statements.length; i2 < len1; i2++) {
1567 const i = i2;
1568 const s = statements[i2];
1569 if (i < l - 1) {
1570 if (needsPrecedingSemicolon(statements[i + 1][1])) {
1571 const delim = s[2];
1572 if (!delim) {
1573 s[2] = ";";
1574 } else if (typeof delim === "string" && !delim.match(/;/)) {
1575 s[2] = `;${delim}`;
1576 }
1577 }
1578 }
1579 }
1580}
1581function needsPrecedingSemicolon(exp) {
1582 if (!exp) {
1583 return false;
1584 }
1585 if (Array.isArray(exp)) {
1586 for (let i3 = 0, len22 = exp.length; i3 < len22; i3++) {
1587 const child = exp[i3];
1588 if (!(child != null)) {
1589 continue;
1590 }
1591 return needsPrecedingSemicolon(child);
1592 }
1593 return false;
1594 }
1595 if (isToken(exp)) {
1596 exp = exp.token;
1597 }
1598 if (typeof exp === "string") {
1599 return /^\s*[\(\[\`\+\-\/]/.test(exp);
1600 }
1601 switch (exp.type) {
1602 case "ParenthesizedExpression":
1603 case "ArrayExpression":
1604 case "ArrowFunction":
1605 case "TemplateLiteral":
1606 case "RegularExpressionLiteral":
1607 case "RangeExpression":
1608 case "ComputedPropertyName": {
1609 return true;
1610 }
1611 case "AssignmentExpression": {
1612 return startsWith(exp, /^(\[|\()/);
1613 }
1614 case "Literal": {
1615 return exp.raw?.startsWith("-") || exp.raw?.startsWith("+");
1616 }
1617 case "PipelineExpression":
1618 case "UnwrappedExpression": {
1619 return needsPrecedingSemicolon(exp.children[1]);
1620 }
1621 default: {
1622 if (exp.children) {
1623 return needsPrecedingSemicolon(exp.children);
1624 }
1625 ;
1626 return;
1627 }
1628 }
1629}
1630
1631// source/parser/util.civet
1632function len(arr, length) {
1633 return arr.length === length;
1634}
1635var assert = {
1636 equal(a, b, msg) {
1637 if (a !== b) {
1638 throw new Error(`Assertion failed [${msg}]: ${a} !== ${b}`);
1639 }
1640 }
1641};
1642function addParentPointers(node, parent) {
1643 if (node == null)
1644 return;
1645 if (typeof node !== "object")
1646 return;
1647 if (Array.isArray(node)) {
1648 for (const child of node) {
1649 addParentPointers(child, parent);
1650 }
1651 return;
1652 }
1653 node = node;
1654 if (parent != null) {
1655 node.parent = parent;
1656 }
1657 if (node.children) {
1658 for (let ref = node.children, i1 = 0, len1 = ref.length; i1 < len1; i1++) {
1659 const child = ref[i1];
1660 addParentPointers(child, node);
1661 }
1662 }
1663}
1664function clone(node) {
1665 removeParentPointers(node);
1666 return deepCopy(node);
1667}
1668function removeParentPointers(node) {
1669 if (!(node != null && typeof node === "object")) {
1670 return;
1671 }
1672 if (Array.isArray(node)) {
1673 for (const child of node) {
1674 removeParentPointers(child);
1675 }
1676 return;
1677 }
1678 node.parent = null;
1679 if (node.children) {
1680 for (const child of node.children) {
1681 removeParentPointers(child);
1682 }
1683 }
1684}
1685function maybeWrap(node, parent) {
1686 if (!isASTNodeObject(node)) {
1687 updateParentPointers(node = {
1688 type: "Wrapper",
1689 children: [node],
1690 parent
1691 });
1692 }
1693 return node;
1694}
1695function maybeUnwrap(node) {
1696 if (node?.type === "Wrapper") {
1697 return node.children[0];
1698 } else {
1699 return node;
1700 }
1701}
1702function isASTNodeObject(node) {
1703 return typeof node === "object" && node != null && !Array.isArray(node);
1704}
1705function isParent(node) {
1706 return node != null && node.children != null;
1707}
1708function isToken(node) {
1709 return node != null && node.token != null;
1710}
1711function isEmptyBareBlock(node) {
1712 if (node?.type !== "BlockStatement")
1713 return false;
1714 const { bare, expressions } = node;
1715 return bare && (Array.isArray(expressions) && len(expressions, 0) || Array.isArray(expressions) && len(expressions, 1) && Array.isArray(expressions[0]) && expressions[0].length >= 2 && typeof expressions[0][1] === "object" && expressions[0][1] != null && "type" in expressions[0][1] && expressions[0][1].type === "EmptyStatement");
1716}
1717function isFunction(node) {
1718 if (node && typeof node === "object" && "type" in node) {
1719 const { type } = node;
1720 return type === "FunctionExpression" || type === "ArrowFunction" || type === "MethodDefinition";
1721 }
1722 return false;
1723}
1724var statementTypes = /* @__PURE__ */ new Set([
1725 "BlockStatement",
1726 "BreakStatement",
1727 "ComptimeStatement",
1728 "ContinueStatement",
1729 "DebuggerStatement",
1730 "Declaration",
1731 "DoStatement",
1732 "ForStatement",
1733 "IfStatement",
1734 "IterationStatement",
1735 "LabeledStatement",
1736 "ReturnStatement",
1737 "SwitchStatement",
1738 "ThrowStatement",
1739 "TryStatement"
1740]);
1741function isStatement(node) {
1742 return isASTNodeObject(node) && node.type != null && // forbid leaf
1743 statementTypes.has(node.type);
1744}
1745function isWhitespaceOrEmpty(node) {
1746 if (!node)
1747 return true;
1748 if (node.type === "Ref")
1749 return false;
1750 if (node.token)
1751 return /^\s*$/.test(node.token);
1752 if (node.children)
1753 node = node.children;
1754 if (!node.length)
1755 return true;
1756 if (typeof node === "string")
1757 return /^\s*$/.test(node);
1758 if (Array.isArray(node))
1759 return node.every(isWhitespaceOrEmpty);
1760 return false;
1761}
1762function isExit(node) {
1763 if (!(node != null)) {
1764 return false;
1765 }
1766 switch (node.type) {
1767 case "ReturnStatement":
1768 case "ThrowStatement":
1769 case "BreakStatement":
1770 case "ContinueStatement": {
1771 return true;
1772 }
1773 case "IfStatement": {
1774 return isExit(node.then) && isExit(node.else?.block);
1775 }
1776 case "BlockStatement": {
1777 return node.expressions.some((s) => isExit(s[1]));
1778 }
1779 case "IterationStatement": {
1780 return node.condition?.type === "ParenthesizedExpression" && node.condition.expression?.type === "Literal" && node.condition.expression?.raw === "true" && gatherRecursiveWithinFunction(node.block, ($) => $.type === "BreakStatement").length === 0;
1781 }
1782 default: {
1783 return false;
1784 }
1785 }
1786}
1787function isComma(node) {
1788 if (node?.token === ",") {
1789 return node;
1790 } else if (Array.isArray(node) && node[node.length - 1]?.token === ",") {
1791 return node[node.length - 1];
1792 }
1793 ;
1794 return;
1795}
1796function insertTrimmingSpace(target, c) {
1797 if (!(target != null)) {
1798 return target;
1799 }
1800 if (Array.isArray(target)) {
1801 if (target.length === 0) {
1802 return c;
1803 }
1804 return target.map((e, i) => {
1805 if (i === 0) {
1806 return insertTrimmingSpace(e, c);
1807 } else {
1808 return e;
1809 }
1810 });
1811 } else if (isParent(target)) {
1812 return {
1813 ...target,
1814 children: insertTrimmingSpace(target.children, c)
1815 };
1816 } else if (isToken(target)) {
1817 return {
1818 ...target,
1819 token: target.token.replace(/^ ?/, c)
1820 };
1821 } else if (typeof target === "string") {
1822 return target.replace(/^ ?/, c);
1823 } else {
1824 return target;
1825 }
1826}
1827function trimFirstSpace(target) {
1828 return insertTrimmingSpace(target, "");
1829}
1830function inplaceInsertTrimmingSpace(target, c) {
1831 if (!(target != null)) {
1832 return target;
1833 }
1834 if (Array.isArray(target)) {
1835 inplaceInsertTrimmingSpace(target[0], c);
1836 } else if (isParent(target)) {
1837 inplaceInsertTrimmingSpace(target.children, c);
1838 } else if (isToken(target)) {
1839 target.token = target.token.replace(/^ ?/, c);
1840 }
1841}
1842function getTrimmingSpace(target) {
1843 if (!(target != null)) {
1844 return;
1845 }
1846 if (Array.isArray(target)) {
1847 return getTrimmingSpace(target[0]);
1848 } else if (isParent(target)) {
1849 return getTrimmingSpace(target.children[0]);
1850 } else if (isToken(target)) {
1851 return target.token.match(/^ ?/)[0];
1852 }
1853 ;
1854 return;
1855}
1856function prepend(prefix, node) {
1857 if (!(prefix && prefix.length)) {
1858 return node;
1859 }
1860 if (Array.isArray(node)) {
1861 return [prefix, ...node];
1862 } else if (isParent(node)) {
1863 return {
1864 ...node,
1865 children: [prefix, ...node.children]
1866 };
1867 } else {
1868 return [prefix, node];
1869 }
1870}
1871function inplacePrepend(prefix, node) {
1872 if (!prefix) {
1873 return;
1874 }
1875 if (Array.isArray(prefix) && !prefix.length) {
1876 return;
1877 }
1878 if (Array.isArray(node)) {
1879 node.unshift(prefix);
1880 } else if (isParent(node)) {
1881 node.children.unshift(prefix);
1882 } else {
1883 throw new Error("Can't prepend to a leaf node");
1884 }
1885}
1886function literalValue(literal) {
1887 let { raw } = literal;
1888 switch (raw) {
1889 case "null":
1890 return null;
1891 case "true":
1892 return true;
1893 case "false":
1894 return false;
1895 }
1896 if (raw.startsWith('"') && raw.endsWith('"') || raw.startsWith("'") && raw.endsWith("'")) {
1897 return raw.slice(1, -1);
1898 }
1899 const numeric = literal.children.find(
1900 (child) => child.type === "NumericLiteral"
1901 );
1902 if (numeric) {
1903 raw = raw.replace(/_/g, "");
1904 const { token } = numeric;
1905 if (token.endsWith("n")) {
1906 return BigInt(raw.slice(0, -1));
1907 } else if (token.match(/[\.eE]/)) {
1908 return parseFloat(raw);
1909 } else if (token.startsWith("0")) {
1910 switch (token.charAt(1).toLowerCase()) {
1911 case "x":
1912 return parseInt(raw.replace(/0[xX]/, ""), 16);
1913 case "b":
1914 return parseInt(raw.replace(/0[bB]/, ""), 2);
1915 case "o":
1916 return parseInt(raw.replace(/0[oO]/, ""), 8);
1917 }
1918 }
1919 return parseInt(raw, 10);
1920 }
1921 throw new Error("Unrecognized literal " + JSON.stringify(literal));
1922}
1923function startsWith(target, value) {
1924 if (!target)
1925 return;
1926 if (Array.isArray(target)) {
1927 let i = 0;
1928 let l = target.length;
1929 while (i < l) {
1930 const t = target[i];
1931 if (t && (t.length || t.token || t.children)) {
1932 break;
1933 }
1934 i++;
1935 }
1936 if (i < l) {
1937 return startsWith(target[i], value);
1938 }
1939 }
1940 if (typeof target === "string")
1941 return value.test(target);
1942 if (target.children)
1943 return startsWith(target.children, value);
1944 if (target.token)
1945 return value.test(target.token);
1946 return;
1947}
1948function hasAwait(exp) {
1949 return gatherRecursiveWithinFunction(exp, ($1) => $1.type === "Await").length > 0;
1950}
1951function hasYield(exp) {
1952 return gatherRecursiveWithinFunction(exp, ($2) => $2.type === "Yield").length > 0;
1953}
1954function hasImportDeclaration(exp) {
1955 return gatherRecursiveWithinFunction(exp, ($3) => $3.type === "ImportDeclaration").length > 0;
1956}
1957function deepCopy(node) {
1958 if (node == null)
1959 return node;
1960 if (typeof node !== "object")
1961 return node;
1962 if (Array.isArray(node)) {
1963 return node.map(deepCopy);
1964 }
1965 if (node?.type === "Ref")
1966 return node;
1967 return Object.fromEntries(
1968 Object.entries(node).map(([key, value]) => {
1969 return [key, deepCopy(value)];
1970 })
1971 );
1972}
1973function removeHoistDecs(node) {
1974 if (node == null)
1975 return;
1976 if (typeof node !== "object")
1977 return;
1978 if ("hoistDec" in node) {
1979 node.hoistDec = void 0;
1980 }
1981 if (Array.isArray(node)) {
1982 for (const child of node) {
1983 removeHoistDecs(child);
1984 }
1985 return;
1986 }
1987 if (node.children) {
1988 for (const child of node.children) {
1989 removeHoistDecs(child);
1990 }
1991 }
1992}
1993var skipParens = /* @__PURE__ */ new Set([
1994 "AmpersandRef",
1995 "CallExpression",
1996 "Identifier",
1997 "JSXElement",
1998 "JSXFragment",
1999 "Literal",
2000 "MemberExpression",
2001 "NewExpression",
2002 "ParenthesizedExpression",
2003 "Ref",
2004 "Placeholder",
2005 "StatementExpression"
2006 // wrapIIFE
2007]);
2008function makeLeftHandSideExpression(expression) {
2009 if (isASTNodeObject(expression)) {
2010 if (expression.parenthesized) {
2011 return expression;
2012 }
2013 if (skipParens.has(expression.type)) {
2014 return expression;
2015 }
2016 }
2017 return makeNode({
2018 type: "ParenthesizedExpression",
2019 children: ["(", expression, ")"],
2020 expression,
2021 implicit: true
2022 });
2023}
2024function updateParentPointers(node, parent, depth = 1) {
2025 if (!(node != null)) {
2026 return;
2027 }
2028 if (!(typeof node === "object")) {
2029 return;
2030 }
2031 if (Array.isArray(node)) {
2032 for (let i2 = 0, len22 = node.length; i2 < len22; i2++) {
2033 const child = node[i2];
2034 updateParentPointers(child, parent, depth);
2035 }
2036 return;
2037 }
2038 node = node;
2039 if (parent != null) {
2040 node.parent = parent;
2041 }
2042 if (depth && isParent(node)) {
2043 for (let ref1 = node.children, i3 = 0, len3 = ref1.length; i3 < len3; i3++) {
2044 const child = ref1[i3];
2045 updateParentPointers(child, node, depth - 1);
2046 }
2047 }
2048}
2049function makeNode(node) {
2050 updateParentPointers(node);
2051 return node;
2052}
2053function skipIfOnlyWS(target) {
2054 if (!target)
2055 return target;
2056 if (Array.isArray(target)) {
2057 if (target.length === 1) {
2058 return skipIfOnlyWS(target[0]);
2059 } else if (target.every((e) => skipIfOnlyWS(e) === void 0)) {
2060 return void 0;
2061 }
2062 return target;
2063 }
2064 if (target.token != null && target.token.trim() === "") {
2065 return void 0;
2066 }
2067 return target;
2068}
2069function spliceChild(node, child, del, ...replacements) {
2070 const children = node?.children ?? node;
2071 if (!Array.isArray(children)) {
2072 throw new Error("spliceChild: non-array node has no children field");
2073 }
2074 const index = children.indexOf(child);
2075 if (index < 0) {
2076 throw new Error("spliceChild: child not found");
2077 }
2078 return children.splice(index, del, ...replacements);
2079}
2080function convertOptionalType(suffix) {
2081 if (suffix.t.type === "AssertsType") {
2082 spliceChild(suffix, suffix.optional, 1, suffix.optional = {
2083 type: "Error",
2084 message: "Can't use optional ?: syntax with asserts type"
2085 });
2086 return;
2087 }
2088 spliceChild(suffix, suffix.optional, 1, suffix.optional = void 0);
2089 const wrap = suffix.type === "ReturnTypeAnnotation";
2090 spliceChild(suffix, suffix.t, 1, suffix.t = [
2091 getTrimmingSpace(suffix.t),
2092 wrap && "(",
2093 // TODO: avoid parens if unnecessary
2094 "undefined | ",
2095 parenthesizeType(insertTrimmingSpace(suffix.t, "")),
2096 wrap && ")"
2097 ]);
2098}
2099var typeNeedsNoParens = /* @__PURE__ */ new Set([
2100 "IdentifierType",
2101 "ImportType",
2102 "LiteralType",
2103 "TupleType",
2104 "ParenthesizedType",
2105 "UnaryType"
2106]);
2107function parenthesizeType(type) {
2108 if (typeNeedsNoParens.has(type.type)) {
2109 return type;
2110 }
2111 return ["(", type, ")"];
2112}
2113function wrapIIFE(expressions, asyncFlag) {
2114 let prefix;
2115 const async = [];
2116 if (asyncFlag) {
2117 async.push("async ");
2118 } else if (hasAwait(expressions)) {
2119 async.push("async ");
2120 prefix = {
2121 type: "Await",
2122 children: ["await "]
2123 };
2124 }
2125 const block = makeNode({
2126 type: "BlockStatement",
2127 expressions,
2128 children: ["{", expressions, "}"],
2129 bare: false,
2130 root: false
2131 });
2132 const parameters = {
2133 type: "Parameters",
2134 children: ["()"],
2135 names: []
2136 };
2137 const signature = {
2138 modifier: {
2139 async: !!async.length
2140 },
2141 returnType: void 0
2142 };
2143 const fn = makeNode({
2144 type: "ArrowFunction",
2145 signature,
2146 parameters,
2147 returnType: void 0,
2148 ts: false,
2149 async,
2150 block,
2151 children: [async, parameters, "=>", block]
2152 });
2153 const exp = makeNode({
2154 type: "CallExpression",
2155 children: [makeLeftHandSideExpression(fn), "()"]
2156 });
2157 if (prefix) {
2158 return makeLeftHandSideExpression([prefix, exp]);
2159 }
2160 return exp;
2161}
2162function wrapWithReturn(expression) {
2163 const children = expression ? ["return ", expression] : ["return"];
2164 return makeNode({
2165 type: "ReturnStatement",
2166 children,
2167 expression,
2168 parent: expression?.parent
2169 });
2170}
2171function flatJoin(array, separator) {
2172 const result = [];
2173 for (let i4 = 0, len4 = array.length; i4 < len4; i4++) {
2174 const i = i4;
2175 const items = array[i4];
2176 if (i) {
2177 result.push(separator);
2178 }
2179 result.push(...items);
2180 }
2181 return result;
2182}
2183
2184// source/parser/traversal.civet
2185function gatherRecursiveWithinFunction(node, predicate) {
2186 return gatherRecursive(node, predicate, isFunction);
2187}
2188function findChildIndex(parent, child) {
2189 if (!(parent != null)) {
2190 return -1;
2191 }
2192 const children = Array.isArray(parent) ? parent : parent.children;
2193 if (!(children != null)) {
2194 return -1;
2195 }
2196 for (let i1 = 0, len3 = children.length; i1 < len3; i1++) {
2197 const i = i1;
2198 const c = children[i1];
2199 if (c === child || Array.isArray(c) && arrayRecurse(c)) {
2200 return i;
2201 }
2202 }
2203 function arrayRecurse(array) {
2204 for (let i2 = 0, len1 = array.length; i2 < len1; i2++) {
2205 const c = array[i2];
2206 if (c === child || Array.isArray(c) && arrayRecurse(c)) {
2207 return true;
2208 }
2209 }
2210 return false;
2211 }
2212 return -1;
2213}
2214function findAncestor(node, predicate, stopPredicate) {
2215 let { parent } = node;
2216 while (parent && !stopPredicate?.(parent, node)) {
2217 if (predicate(parent, node)) {
2218 return { ancestor: parent, child: node };
2219 }
2220 node = parent;
2221 ({ parent } = node);
2222 }
2223 return { ancestor: void 0, child: node };
2224}
2225function gatherNodes(node, predicate) {
2226 if (node == null || typeof node === "string") {
2227 return [];
2228 }
2229 if (Array.isArray(node)) {
2230 return node.flatMap((n) => gatherNodes(n, predicate));
2231 }
2232 if (predicate(node)) {
2233 return [node];
2234 }
2235 switch (node.type) {
2236 case "BlockStatement": {
2237 return [];
2238 }
2239 case "ForStatement": {
2240 const isDec = node.declaration?.type === "Declaration";
2241 return node.children.flatMap((n) => {
2242 if (isDec && n === node.declaration) {
2243 return [];
2244 } else {
2245 return gatherNodes(n, predicate);
2246 }
2247 });
2248 }
2249 default: {
2250 return gatherNodes(
2251 //@ts-ignore
2252 node.children,
2253 predicate
2254 );
2255 }
2256 }
2257}
2258function gatherRecursive(node, predicate, skipPredicate) {
2259 if (node == null || typeof node === "string") {
2260 return [];
2261 }
2262 if (Array.isArray(node)) {
2263 return node.flatMap(($) => gatherRecursive($, predicate, skipPredicate));
2264 }
2265 if (skipPredicate?.(node)) {
2266 return [];
2267 }
2268 if (predicate(node)) {
2269 return [node];
2270 }
2271 return gatherRecursive(
2272 //@ts-ignore
2273 node.children,
2274 predicate,
2275 skipPredicate
2276 );
2277}
2278function gatherRecursiveAll(node, predicate) {
2279 if (node == null || typeof node === "string") {
2280 return [];
2281 }
2282 if (Array.isArray(node)) {
2283 return node.flatMap((n) => gatherRecursiveAll(n, predicate));
2284 }
2285 const nodes = gatherRecursiveAll(
2286 //@ts-ignore
2287 node.children,
2288 predicate
2289 );
2290 if (predicate(node)) {
2291 nodes.push(node);
2292 }
2293 return nodes;
2294}
2295
2296// source/parser/op.civet
2297var precedenceOrder = [
2298 ["||", "??"],
2299 ["^^"],
2300 ["&&"],
2301 ["|"],
2302 ["^"],
2303 ["&"],
2304 // NOTE: Equality and inequality merged because of relational chaining
2305 [
2306 "==",
2307 "!=",
2308 "===",
2309 "!==",
2310 "<",
2311 "<=",
2312 ">",
2313 ">=",
2314 "in",
2315 "instanceof"
2316 ],
2317 // NOTE: Extra in-between level for default custom operators
2318 ["custom"],
2319 ["<<", ">>", ">>>"],
2320 ["+", "-"],
2321 ["*", "/", "%"],
2322 ["**"]
2323];
2324var precedenceMap = /* @__PURE__ */ new Map();
2325for (let i1 = 0, len3 = precedenceOrder.length; i1 < len3; i1++) {
2326 const prec = i1;
2327 const ops = precedenceOrder[i1];
2328 for (let i2 = 0, len1 = ops.length; i2 < len1; i2++) {
2329 const op = ops[i2];
2330 precedenceMap.set(op, prec);
2331 }
2332}
2333var precedenceStep = 1 / 64;
2334var precedenceRelational = precedenceMap.get("==");
2335var precedenceCustomDefault = precedenceMap.get("custom");
2336function getPrecedence(op) {
2337 if (typeof op === "string") {
2338 return precedenceMap.get(op) ?? (() => {
2339 throw new Error(`Unknown operator: ${op}`);
2340 })();
2341 } else if (op.type === "PatternTest") {
2342 return precedenceRelational;
2343 } else if (typeof op.prec === "number") {
2344 return op.prec;
2345 } else {
2346 return precedenceMap.get(op.prec ?? op.token) ?? (op.relational ? precedenceRelational : precedenceCustomDefault);
2347 }
2348}
2349function processBinaryOpExpression($0) {
2350 return recurse(expandChainedComparisons($0));
2351 function recurse(expandedOps) {
2352 let i = 2;
2353 while (i < expandedOps.length) {
2354 let op = expandedOps[i];
2355 if (op.special) {
2356 let advanceLeft2 = function(allowEqual) {
2357 while (start >= 4) {
2358 const prevPrec = getPrecedence(expandedOps[start - 2]);
2359 if (!(prevPrec > prec || allowEqual && prevPrec === prec)) {
2360 return prevPrec === prec;
2361 }
2362 start -= 4;
2363 }
2364 return false;
2365 }, advanceRight2 = function(allowEqual) {
2366 while (end + 4 < expandedOps.length) {
2367 const nextPrec = getPrecedence(expandedOps[end + 2]);
2368 if (!(nextPrec > prec || allowEqual && nextPrec === prec)) {
2369 return nextPrec === prec;
2370 }
2371 end += 4;
2372 }
2373 return false;
2374 };
2375 var advanceLeft = advanceLeft2, advanceRight = advanceRight2;
2376 let start = i - 2, end = i + 2;
2377 const prec = getPrecedence(op);
2378 let error;
2379 switch (op.assoc) {
2380 case "left":
2381 case void 0: {
2382 advanceLeft2(true);
2383 advanceRight2(false);
2384 break;
2385 }
2386 case "right": {
2387 advanceLeft2(false);
2388 advanceRight2(true);
2389 break;
2390 }
2391 case "non": {
2392 if (advanceLeft2(false) || advanceRight2(false)) {
2393 error = {
2394 type: "Error",
2395 message: `non-associative operator ${op.token} used at same precedence level without parenthesization`
2396 };
2397 }
2398 ;
2399 break;
2400 }
2401 case "arguments": {
2402 if (advanceLeft2(false)) {
2403 error = {
2404 type: "Error",
2405 message: `arguments operator ${op.token} used at same precedence level as ${expandedOps[start - 2].token} to the left`
2406 };
2407 }
2408 advanceRight2(true);
2409 break;
2410 }
2411 default: {
2412 throw new Error(`Unsupported associativity: ${op.assoc}`);
2413 }
2414 }
2415 let a = start === i - 2 ? expandedOps[start] : expandedOps.slice(start, i - 1);
2416 let wsOp = expandedOps[i - 1];
2417 let wsB = expandedOps[i + 1];
2418 let b = end === i + 2 ? expandedOps[i + 2] : expandedOps.slice(i + 2, end + 1);
2419 if (op.assoc === "arguments") {
2420 let i2 = 2;
2421 while (i2 < b.length) {
2422 if (prec === getPrecedence(b[i2])) {
2423 if (!(b[i2].token === op.token)) {
2424 error ??= {
2425 type: "Error",
2426 message: `arguments operator ${op.token} used at same precedence level as ${b[i2].token} to the right`
2427 };
2428 }
2429 b[i2] = ",";
2430 }
2431 i2 += 4;
2432 }
2433 } else {
2434 b = recurse(b);
2435 }
2436 if (op.token === "instanceof" && (typeof b === "object" && b != null && "type" in b && b.type === "Literal" && "children" in b && Array.isArray(b.children) && b.children.length >= 1 && typeof b.children[0] === "object" && b.children[0] != null && "type" in b.children[0] && b.children[0].type === "StringLiteral")) {
2437 a = ["typeof ", makeLeftHandSideExpression(a)];
2438 if (op.negated) {
2439 op = { ...op, token: "!==", negated: false };
2440 } else {
2441 op = { ...op, token: "===" };
2442 }
2443 }
2444 if (op.asConst) {
2445 a = makeAsConst(a);
2446 b = makeAsConst(b);
2447 }
2448 let children;
2449 if (op.type === "PatternTest") {
2450 children = [processPatternTest(a, b)];
2451 } else if (op.call) {
2452 wsOp = insertTrimmingSpace(wsOp, "");
2453 if (op.reversed) {
2454 wsB = insertTrimmingSpace(wsB, "");
2455 children = [wsOp, op.call, "(", wsB, b, ", ", a, ")", op.suffix];
2456 } else {
2457 children = [wsOp, op.call, "(", a, ",", wsB, b, ")", op.suffix];
2458 }
2459 } else if (op.method) {
2460 wsOp = insertTrimmingSpace(wsOp, "");
2461 wsB = insertTrimmingSpace(wsB, "");
2462 if (op.reversed) {
2463 if (end !== i + 2)
2464 b = makeLeftHandSideExpression(b);
2465 b = dotNumericLiteral(b);
2466 children = [wsB, b, wsOp, ".", op.method, "(", a, ")"];
2467 } else {
2468 if (start !== i - 2 || a.type === "NumericLiteral") {
2469 a = makeLeftHandSideExpression(a);
2470 }
2471 a = dotNumericLiteral(a);
2472 children = [a, wsOp, ".", op.method, "(", wsB, b, ")"];
2473 }
2474 } else if (op.token) {
2475 children = [a, wsOp, op, wsB, b];
2476 if (op.negated)
2477 children = ["(", ...children, ")"];
2478 } else {
2479 throw new Error("Unknown operator: " + JSON.stringify(op));
2480 }
2481 if (op.negated)
2482 children.unshift("!");
2483 if (error != null) {
2484 children.push(error);
2485 }
2486 expandedOps.splice(start, end - start + 1, {
2487 children
2488 });
2489 i = start + 2;
2490 } else {
2491 i += 4;
2492 }
2493 }
2494 return expandedOps;
2495 }
2496}
2497function dotNumericLiteral(literal) {
2498 if (literal?.type === "Literal" && /^[+-]?(?:0|[1-9](?:_[0-9]|[0-9])*)$/.test(literal.raw)) {
2499 literal.children.push(".");
2500 literal.raw += ".";
2501 }
2502 return literal;
2503}
2504var asConst = {
2505 ts: true,
2506 children: [" as const"]
2507};
2508function makeAsConst(node) {
2509 if (Array.isArray(node) && node.length === 1) {
2510 node = node[0];
2511 }
2512 if (node.type === "Literal" && node.raw !== "null" || node.type === "ArrayExpression" || node.type === "ObjectExpression") {
2513 return { ...node, children: [...node.children, asConst] };
2514 } else {
2515 return node;
2516 }
2517}
2518function isExistence(exp) {
2519 if (exp?.type === "ParenthesizedExpression" && exp.implicit) {
2520 exp = exp.expression;
2521 }
2522 if (exp?.type === "Existence") {
2523 return exp;
2524 }
2525 ;
2526 return;
2527}
2528function isRelationalOp(op) {
2529 return op.relational || getPrecedence(op) === precedenceRelational;
2530}
2531function expandChainedComparisons([first, binops]) {
2532 if (!binops.length) {
2533 return [first];
2534 }
2535 const results = [];
2536 let start = 0;
2537 const chains = [];
2538 var i = 0;
2539 for (let i3 = 0, len22 = binops.length; i3 < len22; i3++) {
2540 var i = i3;
2541 var [, op] = binops[i3];
2542 if (isRelationalOp(op)) {
2543 chains.push(i);
2544 } else if (getPrecedence(op) < precedenceRelational) {
2545 processChains();
2546 first = results.pop();
2547 }
2548 }
2549 processChains();
2550 return results;
2551 function processChains() {
2552 if (chains.length > 0) {
2553 first = expandExistence(first);
2554 for (let i4 = 0, len3 = chains.length; i4 < len3; i4++) {
2555 const k = i4;
2556 const index = chains[i4];
2557 if (k > 0) {
2558 results.push(" ", "&&", " ");
2559 }
2560 const binop = binops[index];
2561 const exp = binop[3] = expandExistence(binop[3]);
2562 results.push(first);
2563 const endIndex = chains[k + 1] ?? i + 1;
2564 results.push(...binops.slice(start, endIndex).flat());
2565 first = [exp].concat(binops.slice(index + 1, endIndex));
2566 start = endIndex;
2567 }
2568 } else {
2569 results.push(first);
2570 results.push(...binops.slice(start, i + 1).flat());
2571 start = i + 1;
2572 }
2573 chains.length = 0;
2574 }
2575 function expandExistence(exp) {
2576 let ref;
2577 if (ref = isExistence(exp)) {
2578 const existence = ref;
2579 results.push(existence, " ", "&&", " ");
2580 return existence.expression;
2581 } else {
2582 return exp;
2583 }
2584 }
2585 ;
2586}
2587
2588// source/parser/helper.civet
2589var preludeVar = "var ";
2590function ts(children) {
2591 return {
2592 ts: true,
2593 children: Array.isArray(children) ? children : [children]
2594 };
2595}
2596var asAny = ts(" as any");
2597var declareHelper = {
2598 indexOf(indexOfRef) {
2599 state.prelude.push(["", [
2600 // [indent, statement]
2601 preludeVar,
2602 indexOfRef,
2603 ts([": <T>(this: T[], searchElement: T) => number"]),
2604 " = [].indexOf",
2605 asAny
2606 ], ";\n"]);
2607 },
2608 hasProp(hasPropRef) {
2609 state.prelude.push(["", [
2610 // [indent, statement]
2611 preludeVar,
2612 hasPropRef,
2613 ts(": <T>(object: T, prop: PropertyKey) => boolean"),
2614 " = ({}.constructor",
2615 asAny,
2616 ").hasOwn;\n"
2617 ]]);
2618 },
2619 is(isRef) {
2620 state.prelude.push(["", [
2621 // [indent, statement]
2622 preludeVar,
2623 isRef,
2624 ts(": { <B, A extends B> (a: A, b: B): b is A, <A, B> (a: A, b: B): a is A & B }"),
2625 " = Object.is",
2626 asAny,
2627 ";\n"
2628 ]]);
2629 },
2630 /**
2631 * Array length check with type guard.
2632 * From tlgreg https://discord.com/channels/933472021310996512/1012166187196629113/1157386582546976873
2633 */
2634 len(lenRef) {
2635 state.prelude.push(["", [
2636 ts(["function ", lenRef, "<T extends readonly unknown[], N extends number>(arr: T, length: N): arr is T & { length: N } { return arr.length === length }"]),
2637 {
2638 js: true,
2639 children: ["function ", lenRef, "(arr, length) { return arr.length === length }"]
2640 },
2641 "\n"
2642 ]]);
2643 },
2644 modulo(moduloRef) {
2645 state.prelude.push(["", [
2646 // [indent, statement]
2647 preludeVar,
2648 moduloRef,
2649 ts(": (a: number, b: number) => number"),
2650 " = (a, b) => (a % b + b) % b;\n"
2651 ]]);
2652 },
2653 Falsy(FalsyRef) {
2654 state.prelude.push([
2655 "",
2656 // [indent, statement]
2657 ts(["type ", FalsyRef, " = false | 0 | '' | 0n | null | undefined;\n"])
2658 ]);
2659 },
2660 xor(xorRef) {
2661 const Falsy = getHelperRef("Falsy");
2662 state.prelude.push(["", [
2663 // [indent, statement]
2664 preludeVar,
2665 xorRef,
2666 ts([
2667 ": <A, B>(a: A, b: B) => A extends ",
2668 Falsy,
2669 " ? B : B extends ",
2670 Falsy,
2671 " ? A : (false | (A & ",
2672 Falsy,
2673 " extends never ? never : B) | (B & ",
2674 Falsy,
2675 " extends never ? never : A))"
2676 ]),
2677 " = (a, b) => (a ? !b && a : b)",
2678 asAny,
2679 ";\n"
2680 ]]);
2681 },
2682 xnor(xnorRef) {
2683 const Falsy = getHelperRef("Falsy");
2684 state.prelude.push(["", [
2685 // [indent, statement]
2686 preludeVar,
2687 xnorRef,
2688 ts([
2689 ": <A, B>(a: A, b: B) => A & ",
2690 Falsy,
2691 " extends never ? B : (true | (B extends ",
2692 Falsy,
2693 " ? never : A) | (A extends ",
2694 Falsy,
2695 " ? never : B))"
2696 ]),
2697 " = (a, b) => (a ? b : !b || a)",
2698 asAny,
2699 ";\n"
2700 ]]);
2701 },
2702 concatAssign(ref) {
2703 state.prelude.push(["", [
2704 // [indent, statement]
2705 preludeVar,
2706 ref,
2707 ts([
2708 ": <B, A extends {push: (this: A, b: B) => void} | (B extends unknown[] ? {push: (this: A, ...b: B) => void} : never)>(lhs: A, rhs: B) => A"
2709 ]),
2710 " = (lhs, rhs) => (((rhs",
2711 asAny,
2712 ")?.[Symbol.isConcatSpreadable] ?? Array.isArray(rhs)) ? (lhs",
2713 asAny,
2714 ").push.apply(lhs, rhs",
2715 asAny,
2716 ") : (lhs",
2717 asAny,
2718 ").push(rhs), lhs);\n"
2719 ]]);
2720 },
2721 JSX(jsxRef) {
2722 state.prelude.push([
2723 "",
2724 // [indent, statement]
2725 ts(["import type { JSX as ", jsxRef, " } from 'solid-js'"]),
2726 ";\n"
2727 ]);
2728 },
2729 IntrinsicElements(intrinsicElementsRef) {
2730 const JSX = getHelperRef("JSX");
2731 state.prelude.push([
2732 "",
2733 // [indent, statement, delim]
2734 ts([
2735 "type ",
2736 intrinsicElementsRef,
2737 "<K extends keyof ",
2738 JSX,
2739 ".IntrinsicElements> =\n",
2740 " ",
2741 JSX,
2742 ".IntrinsicElements[K] extends ",
2743 JSX,
2744 ".DOMAttributes<infer T> ? T : unknown"
2745 ]),
2746 ";\n"
2747 ]);
2748 }
2749};
2750function getHelperRef(base) {
2751 if (base in state.helperRefs) {
2752 return state.helperRefs[base];
2753 }
2754 const ref = makeRef(base);
2755 if (!(base in declareHelper)) {
2756 throw new Error(`Unknown helper function: ${base}`);
2757 }
2758 declareHelper[base](ref);
2759 return state.helperRefs[base] = ref;
2760}
2761function extractPreludeFor(node) {
2762 let helpers = new Set(Object.values(state.helperRefs));
2763 helpers = new Set(gatherRecursive(node, helpers.has.bind(helpers)));
2764 return state.prelude.filter((s) => gatherRecursive(s, helpers.has.bind(helpers)).length);
2765}
2766
2767// source/parser/pattern-matching.civet
2768function processPatternTest(lhs, patterns) {
2769 const { ref, hoistDec, refAssignmentComma } = maybeRefAssignment(lhs, "m");
2770 const conditionExpression = flatJoin(patterns.map(($) => getPatternConditions($, ref)).map(($1) => flatJoin($1, " && ")), " || ");
2771 return makeLeftHandSideExpression({
2772 type: "PatternTest",
2773 hoistDec,
2774 children: [
2775 ...refAssignmentComma,
2776 conditionExpression
2777 ]
2778 });
2779}
2780function processPatternMatching(statements) {
2781 gatherRecursiveAll(statements, ($2) => $2.type === "SwitchStatement").forEach((s) => {
2782 const { caseBlock } = s;
2783 const { clauses } = caseBlock;
2784 for (let i1 = 0, len3 = clauses.length; i1 < len3; i1++) {
2785 const c = clauses[i1];
2786 if (c.type === "WhenClause" && c.break) {
2787 if (isExit(c.block)) {
2788 c.children.splice(c.children.indexOf(c.break), 1);
2789 c.break = void 0;
2790 }
2791 }
2792 }
2793 let errors = false;
2794 let isPattern = false;
2795 if (clauses.some(($3) => $3.type === "PatternClause")) {
2796 isPattern = true;
2797 for (let i2 = 0, len1 = clauses.length; i2 < len1; i2++) {
2798 const c = clauses[i2];
2799 if (!(c.type === "PatternClause" || c.type === "DefaultClause")) {
2800 errors = true;
2801 c.children.push({
2802 type: "Error",
2803 message: "Can't mix pattern matching and non-pattern matching clauses"
2804 });
2805 }
2806 }
2807 }
2808 if (errors || !isPattern) {
2809 return;
2810 }
2811 let { condition } = s;
2812 if (condition.type === "ParenthesizedExpression") {
2813 condition = condition.expression;
2814 }
2815 let { ref, hoistDec, refAssignmentComma } = maybeRefAssignment(condition, "m");
2816 const root = [];
2817 let prev = root;
2818 let e;
2819 const l = clauses.length;
2820 for (let i3 = 0, len22 = clauses.length; i3 < len22; i3++) {
2821 const i = i3;
2822 const c = clauses[i3];
2823 if (c.type === "DefaultClause") {
2824 if (e != null) {
2825 replaceNode(e.block, c.block, e);
2826 } else {
2827 prev.push(c.block);
2828 }
2829 break;
2830 }
2831 let { patterns, block } = c;
2832 let pattern = patterns[0];
2833 const conditionExpression = flatJoin(patterns.map(($4) => getPatternConditions($4, ref)).map(($5) => flatJoin($5, " && ")), " || ");
2834 const condition2 = makeNode({
2835 type: "ParenthesizedExpression",
2836 children: ["(", ...refAssignmentComma, conditionExpression, ")"],
2837 expression: conditionExpression
2838 });
2839 braceBlock(block);
2840 block = blockWithPrefix(getPatternBlockPrefix(pattern, ref), block);
2841 if (i < l - 1) {
2842 const expressions = [];
2843 const block2 = makeNode({
2844 type: "BlockStatement",
2845 expressions,
2846 children: [expressions],
2847 bare: true
2848 });
2849 e = makeNode({
2850 type: "ElseClause",
2851 block: block2,
2852 children: ["\n", "else ", block2]
2853 });
2854 } else {
2855 e = void 0;
2856 }
2857 prev.push(["", makeNode({
2858 type: "IfStatement",
2859 children: ["if", condition2, block, e],
2860 then: block,
2861 else: e,
2862 hoistDec
2863 })]);
2864 hoistDec = void 0;
2865 refAssignmentComma = [];
2866 if (e != null) {
2867 prev = e.block.expressions;
2868 }
2869 }
2870 s.type = "PatternMatchingStatement";
2871 s.children = root;
2872 return updateParentPointers(s);
2873 });
2874}
2875function getPatternConditions(pattern, ref, conditions = []) {
2876 if (pattern.rest)
2877 return conditions;
2878 switch (pattern.type) {
2879 case "ArrayBindingPattern": {
2880 const { elements, length } = pattern, hasRest = elements.some((e) => e.rest), l = (length - +hasRest).toString(), lengthCheck = hasRest ? [ref, ".length >= ", l] : [getHelperRef("len"), "(", ref, ", ", l, ")"];
2881 conditions.push(
2882 ["Array.isArray(", ref, ")"],
2883 lengthCheck
2884 );
2885 elements.forEach(({ children: [, e] }, i) => {
2886 const subRef = [ref, "[", i.toString(), "]"];
2887 return getPatternConditions(e, subRef, conditions);
2888 });
2889 const { blockPrefix } = pattern;
2890 if (blockPrefix) {
2891 const postElements = blockPrefix.children[1], { length: postLength } = postElements;
2892 postElements.forEach(({ children: [, e] }, i) => {
2893 const subRef = [ref, "[", ref, ".length - ", (postLength + i).toString(), "]"];
2894 return getPatternConditions(e, subRef, conditions);
2895 });
2896 }
2897 break;
2898 }
2899 case "ObjectBindingPattern": {
2900 conditions.push(
2901 ["typeof ", ref, " === 'object'"],
2902 [ref, " != null"]
2903 );
2904 pattern.properties.forEach((p) => {
2905 switch (p.type) {
2906 case "PinProperty":
2907 case "BindingProperty": {
2908 const { name, value } = p;
2909 let subRef;
2910 switch (name.type) {
2911 case "ComputedPropertyName":
2912 conditions.push([name.expression, " in ", ref]);
2913 subRef = [ref, name];
2914 break;
2915 case "Literal":
2916 case "StringLiteral":
2917 case "NumericLiteral":
2918 conditions.push([name, " in ", ref]);
2919 subRef = [ref, "[", name, "]"];
2920 break;
2921 default:
2922 conditions.push(["'", name, "' in ", ref]);
2923 subRef = [ref, ".", name];
2924 }
2925 if (value) {
2926 getPatternConditions(value, subRef, conditions);
2927 }
2928 break;
2929 }
2930 }
2931 });
2932 break;
2933 }
2934 case "ConditionFragment": {
2935 let { children } = pattern;
2936 if (children.length) {
2937 let [first, ...rest] = children;
2938 let [ws, ...op] = first;
2939 ws = [" "].concat(ws);
2940 first = [ws, ...op];
2941 children = [first, ...rest];
2942 }
2943 conditions.push(
2944 processBinaryOpExpression([ref, children])
2945 );
2946 break;
2947 }
2948 case "RegularExpressionLiteral": {
2949 conditions.push(
2950 ["typeof ", ref, " === 'string'"],
2951 [pattern, ".test(", ref, ")"]
2952 );
2953 break;
2954 }
2955 case "PinPattern":
2956 conditions.push([
2957 ref,
2958 " === ",
2959 pattern.expression
2960 ]);
2961 break;
2962 case "Literal":
2963 conditions.push([
2964 ref,
2965 " === ",
2966 pattern
2967 ]);
2968 break;
2969 default:
2970 break;
2971 }
2972 return conditions;
2973}
2974function getPatternBlockPrefix(pattern, ref, decl = "const ", suffix) {
2975 switch (pattern.type) {
2976 case "ArrayBindingPattern": {
2977 if (!pattern.length) {
2978 return;
2979 }
2980 ;
2981 break;
2982 }
2983 case "ObjectBindingPattern": {
2984 if (!pattern.properties.length) {
2985 return;
2986 }
2987 ;
2988 break;
2989 }
2990 case "Literal":
2991 case "RegularExpressionLiteral":
2992 case "PinPattern":
2993 case "ConditionFragment": {
2994 return;
2995 }
2996 }
2997 let [splices, thisAssignments] = gatherBindingCode(pattern);
2998 const patternBindings = nonMatcherBindings(pattern);
2999 splices = splices.map((s) => [", ", nonMatcherBindings(s)]);
3000 thisAssignments = thisAssignments.map(($6) => ["", $6, ";"]);
3001 const duplicateDeclarations = aggregateDuplicateBindings([patternBindings, splices]);
3002 return [
3003 ["", {
3004 type: "Declaration",
3005 children: [decl, patternBindings, suffix, " = ", ref, ...splices],
3006 names: [],
3007 bindings: []
3008 // avoid implicit return of any bindings
3009 }, ";"],
3010 ...thisAssignments,
3011 ...duplicateDeclarations.map(($7) => ["", $7, ";"])
3012 ];
3013}
3014function elideMatchersFromArrayBindings(elements) {
3015 return elements.map((el) => {
3016 if (el.type === "BindingRestElement") {
3017 return ["", el, void 0];
3018 }
3019 const { children: [ws, e, delim] } = el;
3020 switch (e.type) {
3021 case "Literal":
3022 case "RegularExpressionLiteral":
3023 case "StringLiteral":
3024 case "PinPattern":
3025 return delim;
3026 default:
3027 return [ws, nonMatcherBindings(e), delim];
3028 }
3029 });
3030}
3031function elideMatchersFromPropertyBindings(properties) {
3032 return properties.map((p) => {
3033 switch (p.type) {
3034 case "BindingProperty": {
3035 const { children, name, value } = p;
3036 const [ws] = children;
3037 switch (value && value.type) {
3038 case "ArrayBindingPattern":
3039 case "ObjectBindingPattern": {
3040 const bindings = nonMatcherBindings(value);
3041 return {
3042 ...p,
3043 children: [ws, name, bindings && ": ", bindings, p.delim]
3044 };
3045 }
3046 case "Identifier": {
3047 return p;
3048 }
3049 case "Literal":
3050 case "RegularExpressionLiteral":
3051 case "StringLiteral":
3052 default:
3053 return {
3054 ...p,
3055 children: [ws, name, p.delim]
3056 };
3057 }
3058 }
3059 case "PinProperty":
3060 case "BindingRestProperty":
3061 default:
3062 return p;
3063 }
3064 });
3065}
3066function nonMatcherBindings(pattern) {
3067 switch (pattern.type) {
3068 case "ArrayBindingPattern": {
3069 const elements = elideMatchersFromArrayBindings(pattern.elements);
3070 return {
3071 ...pattern,
3072 elements,
3073 children: pattern.children.map(($8) => $8 === pattern.elements ? elements : $8)
3074 };
3075 }
3076 case "PostRestBindingElements": {
3077 const els = elideMatchersFromArrayBindings(pattern.children[1]);
3078 return {
3079 ...pattern,
3080 children: [
3081 pattern.children[0],
3082 els,
3083 ...pattern.children.slice(2)
3084 ]
3085 };
3086 }
3087 case "ObjectBindingPattern": {
3088 const properties = elideMatchersFromPropertyBindings(pattern.properties);
3089 return {
3090 ...pattern,
3091 properties,
3092 children: pattern.children.map(($9) => $9 === pattern.properties ? properties : $9)
3093 };
3094 }
3095 default: {
3096 return pattern;
3097 }
3098 }
3099}
3100function aggregateDuplicateBindings(bindings) {
3101 const props = gatherRecursiveAll(bindings, ($10) => $10.type === "BindingProperty");
3102 const arrayBindings = gatherRecursiveAll(bindings, ($11) => $11.type === "ArrayBindingPattern");
3103 arrayBindings.forEach((a) => {
3104 const { elements } = a;
3105 return elements.forEach((element) => {
3106 if (Array.isArray(element)) {
3107 const [, e] = element;
3108 if (e.type === "Identifier") {
3109 return props.push(e);
3110 } else if (e.type === "BindingRestElement") {
3111 return props.push(e);
3112 }
3113 ;
3114 return;
3115 }
3116 ;
3117 return;
3118 });
3119 });
3120 const declarations = [];
3121 const propsGroupedByName = /* @__PURE__ */ new Map();
3122 for (const p of props) {
3123 const { name, value } = p;
3124 let m;
3125 if (m = value?.type, m === "ArrayBindingPattern" || m === "ObjectBindingPattern") {
3126 continue;
3127 }
3128 const key = value?.name || name?.name || name;
3129 if (propsGroupedByName.has(key)) {
3130 propsGroupedByName.get(key).push(p);
3131 } else {
3132 propsGroupedByName.set(key, [p]);
3133 }
3134 }
3135 propsGroupedByName.forEach((shared, key) => {
3136 if (!key) {
3137 return;
3138 }
3139 if (ReservedWord({ fail() {
3140 } }, {
3141 pos: 0,
3142 input: key
3143 })) {
3144 shared.forEach((p) => {
3145 return aliasBinding(p, makeRef(`_${key}`, key));
3146 });
3147 return;
3148 }
3149 if (shared.length === 1) {
3150 return;
3151 }
3152 const refs = shared.map((p) => {
3153 const ref = makeRef(key);
3154 aliasBinding(p, ref);
3155 return ref;
3156 });
3157 return declarations.push({
3158 type: "Declaration",
3159 children: [
3160 "const ",
3161 key,
3162 " = [",
3163 ...refs.map((r, i) => i === 0 ? r : [", ", r]),
3164 "]"
3165 ],
3166 names: [],
3167 bindings: []
3168 });
3169 });
3170 return declarations;
3171}
3172function aliasBinding(p, ref) {
3173 if (p.type === "Identifier") {
3174 p.children[0] = ref;
3175 } else if (p.type === "BindingRestElement") {
3176 aliasBinding(p.binding, ref);
3177 } else if (p.value?.type === "Identifier") {
3178 aliasBinding(p.value, ref);
3179 } else {
3180 p.value = ref;
3181 const index = p.children.indexOf(p.name);
3182 p.children.splice(index + 1, 0, ": ", ref);
3183 }
3184}
3185
3186// source/parser/declaration.civet
3187function len2(arr, length) {
3188 return arr.length === length;
3189}
3190function processAssignmentDeclaration(decl, pattern, suffix, ws, assign, e) {
3191 decl = {
3192 ...decl,
3193 $loc: {
3194 pos: assign.$loc.pos - 1,
3195 length: assign.$loc.length + 1
3196 }
3197 };
3198 let [splices, assignments] = gatherBindingCode(pattern);
3199 splices = splices.map((s) => [", ", s]);
3200 const thisAssignments = assignments.map((a) => ["", a, ";"]);
3201 const initializer = makeNode({
3202 type: "Initializer",
3203 expression: e,
3204 children: [ws, assign, e]
3205 });
3206 const binding = makeNode({
3207 type: "Binding",
3208 pattern,
3209 initializer,
3210 splices,
3211 suffix,
3212 thisAssignments,
3213 children: [pattern, suffix, initializer]
3214 });
3215 const children = [decl, binding];
3216 return makeNode({
3217 type: "Declaration",
3218 names: pattern.names,
3219 decl,
3220 bindings: [binding],
3221 splices,
3222 thisAssignments,
3223 children
3224 });
3225}
3226function processDeclarations(statements) {
3227 gatherRecursiveAll(statements, ($) => $.type === "Declaration").forEach((statement) => {
3228 const { bindings } = statement;
3229 return bindings?.forEach((binding) => {
3230 const suffix = binding.suffix;
3231 if (suffix && suffix.optional && suffix.t) {
3232 convertOptionalType(suffix);
3233 }
3234 const { initializer } = binding;
3235 if (initializer) {
3236 return prependStatementExpressionBlock(initializer, statement);
3237 }
3238 ;
3239 return;
3240 });
3241 });
3242}
3243function prependStatementExpressionBlock(initializer, statement) {
3244 let { expression: exp } = initializer;
3245 let ws;
3246 if (Array.isArray(exp)) {
3247 ws = exp[0];
3248 exp = exp[1];
3249 }
3250 if (!(exp?.type === "StatementExpression")) {
3251 return;
3252 }
3253 const pre = [];
3254 const statementExp = exp.statement;
3255 const blockStatement = ["", statementExp];
3256 let ref;
3257 if (statementExp.type === "IterationExpression") {
3258 if (statementExp.async) {
3259 return;
3260 }
3261 const statement2 = statementExp.statement;
3262 blockStatement[1] = statement2;
3263 if (statement2.type === "ComptimeStatement") {
3264 return;
3265 }
3266 if (statement2.type === "DoStatement") {
3267 ref = initializer.expression = initializer.children[2] = makeRef();
3268 assignResults(blockStatement, (resultNode) => {
3269 return makeNode({
3270 type: "AssignmentExpression",
3271 children: [ref, " = ", resultNode],
3272 parent: statement2
3273 });
3274 });
3275 const refDec = {
3276 type: "Declaration",
3277 children: ["let ", ref, ";"]
3278 };
3279 pre.unshift(refDec);
3280 } else {
3281 wrapIterationReturningResults(statement2, { children: blockStatement }, function() {
3282 });
3283 ref = initializer.expression = initializer.children[2] = statement2.resultsRef;
3284 }
3285 } else {
3286 ref = initializer.expression = initializer.children[2] = makeRef();
3287 assignResults(blockStatement, (resultNode) => {
3288 return makeNode({
3289 type: "AssignmentExpression",
3290 children: [ref, " = ", resultNode],
3291 parent: statement
3292 });
3293 });
3294 const refDec = {
3295 type: "Declaration",
3296 children: ["let ", ref, ";"]
3297 };
3298 pre.unshift(refDec);
3299 if (ws) {
3300 pre.push(ws);
3301 }
3302 }
3303 statement.children.unshift(pre, blockStatement, ";");
3304 updateParentPointers(blockStatement, statement);
3305 return ref;
3306}
3307function processDeclarationCondition(condition, rootCondition, parent) {
3308 if (!(condition.type === "DeclarationCondition")) {
3309 return;
3310 }
3311 const { decl, bindings } = condition.declaration;
3312 const binding = bindings[0];
3313 let { pattern, suffix, initializer } = binding;
3314 const nullCheck = suffix?.optional && !suffix.t && !suffix.nonnull;
3315 if (!(initializer != null)) {
3316 condition.children = [
3317 {
3318 type: "Error",
3319 message: "Missing initializer in declaration condition"
3320 }
3321 ];
3322 return;
3323 }
3324 let ref = prependStatementExpressionBlock(initializer, parent);
3325 if (ref) {
3326 Object.assign(condition, {
3327 type: "AssignmentExpression",
3328 children: [ref],
3329 pattern,
3330 ref,
3331 statementDeclaration: true
3332 });
3333 } else {
3334 const { expression } = initializer;
3335 ref = maybeRef(expression);
3336 const simple = ref === expression;
3337 let children;
3338 if (simple) {
3339 ref = insertTrimmingSpace(ref, "");
3340 children = [ref];
3341 } else {
3342 children = [ref, initializer];
3343 const grandparent = condition.parent?.parent;
3344 if (pattern.type === "Identifier" && (grandparent?.type === "IfStatement" || grandparent?.type === "IterationStatement") && !nullCheck) {
3345 children.unshift("(");
3346 children.push(")");
3347 }
3348 }
3349 if (nullCheck) {
3350 children.unshift("(");
3351 children.push(") != null");
3352 suffix = void 0;
3353 }
3354 Object.assign(condition, {
3355 type: "AssignmentExpression",
3356 children,
3357 hoistDec: !simple ? {
3358 type: "Declaration",
3359 children: ["let ", ref, suffix],
3360 names: []
3361 } : void 0,
3362 pattern,
3363 ref
3364 });
3365 }
3366 updateParentPointers(condition, parent);
3367 rootCondition.blockPrefix = getPatternBlockPrefix(pattern, ref, decl, suffix);
3368}
3369function processDeclarationConditions(node) {
3370 gatherRecursiveAll(
3371 node,
3372 (n) => {
3373 return n.type === "IfStatement" || n.type === "IterationStatement" || n.type === "SwitchStatement";
3374 }
3375 ).forEach((s) => {
3376 return processDeclarationConditionStatement(s);
3377 });
3378}
3379function processDeclarationConditionStatement(s) {
3380 const { condition } = s;
3381 if (!condition?.expression) {
3382 return;
3383 }
3384 let { expression } = condition;
3385 if (expression && typeof expression === "object" && "type" in expression && expression.type === "UnaryExpression" && "children" in expression && Array.isArray(expression.children) && len2(expression.children, 2) && expression.children[0] === "!" && typeof expression.children[1] === "object" && expression.children[1] != null && "type" in expression.children[1] && expression.children[1].type === "ParenthesizedExpression" && "expression" in expression.children[1]) {
3386 const { type: type1, children: [, { type: type2, expression: expression2 }] } = expression;
3387 const type = [type1, type2];
3388 expression = expression2;
3389 }
3390 processDeclarationCondition(expression, condition.expression, s);
3391 const { ref, pattern } = expression;
3392 if (pattern) {
3393 const conditions = getPatternConditions(pattern, ref).filter((c) => {
3394 if (Array.isArray(c) && len2(c, 2) && c[0] === ref && c[1] === " != null") {
3395 const [,] = c;
3396 return false;
3397 } else {
3398 return true;
3399 }
3400 });
3401 if (conditions.length) {
3402 if (s.negated) {
3403 let m;
3404 if (!(m = condition.expression, typeof m === "object" && m != null && "type" in m && m.type === "UnaryExpression" && "children" in m && Array.isArray(m.children) && len2(m.children, 2) && m.children[0] === "!" && typeof m.children[1] === "object" && m.children[1] != null && "type" in m.children[1] && m.children[1].type === "ParenthesizedExpression")) {
3405 throw new Error("Unsupported negated condition");
3406 }
3407 const { children } = condition.expression.children[1];
3408 const close = children.pop();
3409 conditions.forEach((c) => {
3410 return children.push(" && ", c);
3411 });
3412 children.push(close);
3413 } else {
3414 condition.children.unshift("(");
3415 conditions.forEach((c) => {
3416 return condition.children.push(" && ", c);
3417 });
3418 condition.children.push(")");
3419 }
3420 }
3421 }
3422 const { blockPrefix } = condition.expression;
3423 if (s.negated && blockPrefix && (s.type === "IfStatement" && isExit(s.then) || s.type === "IterationStatement")) {
3424 const { ancestor, child } = findAncestor(
3425 s,
3426 (a) => a.type === "BlockStatement"
3427 );
3428 if (!(ancestor != null)) {
3429 throw new Error("Couldn't find block for postfix declaration");
3430 }
3431 const index = findChildIndex(ancestor.expressions, child);
3432 if (index < 0) {
3433 throw new Error("Couldn't find where in block to put postfix declaration");
3434 }
3435 ancestor.expressions.splice(index + 1, 0, ...blockPrefix);
3436 updateParentPointers(ancestor);
3437 braceBlock(ancestor);
3438 let ref1;
3439 switch (s.type) {
3440 case "IfStatement": {
3441 if (ref1 = s.else?.block) {
3442 const elseBlock = ref1;
3443 if (elseBlock.bare && !elseBlock.semicolon) {
3444 elseBlock.children.push(elseBlock.semicolon = ";");
3445 }
3446 ancestor.expressions.splice(index + 1 + blockPrefix.length, 0, ["", elseBlock]);
3447 s.children = s.children.filter((a1) => a1 !== s.else);
3448 s.else = void 0;
3449 }
3450 const block = s.then;
3451 if (block.bare && !block.semicolon) {
3452 block.children.push(block.semicolon = ";");
3453 }
3454 ;
3455 break;
3456 }
3457 }
3458 return;
3459 }
3460 switch (s.type) {
3461 case "IfStatement": {
3462 const { else: e } = s;
3463 if (s.negated) {
3464 if (e != null) {
3465 const block = blockWithPrefix(blockPrefix, e.block);
3466 e.children = e.children.map(($1) => $1 === e.block ? block : $1);
3467 e.block = block;
3468 updateParentPointers(e);
3469 }
3470 } else {
3471 const block = blockWithPrefix(blockPrefix, s.then);
3472 if (block.bare && e && !block.semicolon) {
3473 block.children.push(block.semicolon = ";");
3474 }
3475 s.children = s.children.map(($2) => $2 === s.then ? block : $2);
3476 s.then = block;
3477 updateParentPointers(s);
3478 }
3479 ;
3480 break;
3481 }
3482 case "IterationStatement": {
3483 if (!blockPrefix) {
3484 return;
3485 }
3486 const { children, block } = s;
3487 const newBlock = blockWithPrefix(blockPrefix, block);
3488 s.children = children.map(($3) => $3 === block ? newBlock : $3);
3489 updateParentPointers(s);
3490 break;
3491 }
3492 case "SwitchStatement": {
3493 const { ref: ref2, statementDeclaration } = condition.expression;
3494 if (!blockPrefix) {
3495 return;
3496 }
3497 const newCondition = {
3498 type: "ParenthesizedExpression",
3499 children: ["(", ref2, ")"],
3500 expression: ref2,
3501 parent: s
3502 };
3503 s.children = s.children.map(function(c) {
3504 if (c === s.condition) {
3505 return newCondition;
3506 } else {
3507 return c;
3508 }
3509 });
3510 s.condition = newCondition;
3511 updateParentPointers(s);
3512 if (statementDeclaration) {
3513 const block = makeEmptyBlock();
3514 replaceBlockExpression(s.parent, s, block);
3515 block.expressions.push(["", s]);
3516 s.children.splice(s.children.findIndex(($4) => $4.token === "switch"), 0, blockPrefix);
3517 s.parent = block;
3518 } else {
3519 const block = blockWithPrefix([["", [{
3520 type: "Declaration",
3521 children: ["let ", ...condition.expression.children]
3522 }], ";"], ...blockPrefix], makeEmptyBlock());
3523 updateParentPointers(block, s.parent);
3524 replaceBlockExpression(s.parent, s, block);
3525 block.expressions.push(["", s]);
3526 s.parent = block;
3527 }
3528 ;
3529 break;
3530 }
3531 }
3532}
3533function dynamizeFromClause(from) {
3534 from = from.slice(1);
3535 from = insertTrimmingSpace(from, "");
3536 if (from[from.length - 1]?.type === "ImportAssertion") {
3537 const assert2 = from.pop();
3538 from.push(", {", assert2.keyword, ":", assert2.object, "}");
3539 }
3540 return ["(", ...from, ")"];
3541}
3542function dynamizeImportDeclaration(decl) {
3543 const { imports } = decl;
3544 let { star, binding, specifiers } = imports;
3545 const justDefault = binding && !specifiers && !star;
3546 let ref2;
3547 {
3548 if (binding) {
3549 if (specifiers) {
3550 ref2 = makeRef();
3551 } else {
3552 ref2 = binding;
3553 }
3554 } else {
3555 ref2 = convertNamedImportsToObject(imports, true);
3556 }
3557 }
3558 ;
3559 const pattern = ref2;
3560 const c = "const";
3561 const expression = [
3562 justDefault ? "(" : void 0,
3563 { type: "Await", children: ["await"] },
3564 " ",
3565 decl.children[0],
3566 // import
3567 dynamizeFromClause(decl.from),
3568 justDefault ? ").default" : void 0
3569 ];
3570 const initializer = {
3571 type: "Initializer",
3572 expression,
3573 children: [" ", "= ", expression]
3574 };
3575 const bindings = [{
3576 type: "Binding",
3577 names: pattern.names,
3578 pattern,
3579 initializer,
3580 children: [pattern, initializer]
3581 }];
3582 if (binding && specifiers) {
3583 const pattern2 = binding;
3584 const exp2 = [
3585 pattern,
3586 ".default"
3587 ];
3588 const initializer2 = {
3589 type: "Initializer",
3590 expression,
3591 children: [" ", "= ", exp2]
3592 };
3593 bindings.push({
3594 type: "Binding",
3595 names: binding.names,
3596 pattern: pattern2,
3597 initializer: initializer2,
3598 children: [pattern2, initializer2]
3599 });
3600 const pattern3 = convertNamedImportsToObject(imports.children.at(-1), true);
3601 const initializer3 = {
3602 type: "Initializer",
3603 expression: pattern,
3604 children: [" ", "= ", pattern]
3605 };
3606 bindings.push({
3607 type: "Binding",
3608 names: specifiers.names,
3609 pattern: pattern3,
3610 initializer: initializer3,
3611 children: [pattern3, initializer3]
3612 });
3613 }
3614 return {
3615 type: "Declaration",
3616 names: imports.names,
3617 bindings,
3618 decl: c,
3619 children: [
3620 c,
3621 " ",
3622 bindings.flatMap((binding2, i) => i > 0 ? [", ", binding2] : [binding2])
3623 ]
3624 };
3625}
3626function dynamizeImportDeclarationExpression($0) {
3627 const [imp, ws1, named, ws2, from] = $0;
3628 const object = convertNamedImportsToObject(named);
3629 const dot = ".";
3630 return processCallMemberExpression({
3631 type: "CallExpression",
3632 children: [
3633 { type: "Await", children: "await" },
3634 " ",
3635 imp,
3636 insertTrimmingSpace(ws2, ""),
3637 dynamizeFromClause(from),
3638 {
3639 type: "PropertyGlob",
3640 dot,
3641 object,
3642 children: [ws1, dot, object],
3643 reversed: true
3644 }
3645 ]
3646 });
3647}
3648function convertWithClause(withClause, extendsClause) {
3649 let extendsToken, extendsTarget, ws;
3650 if (extendsClause) {
3651 [extendsToken, ws, extendsTarget] = extendsClause;
3652 } else {
3653 extendsToken = {
3654 type: "Extends",
3655 children: [" extends"]
3656 };
3657 ws = "";
3658 extendsTarget = "Object";
3659 }
3660 const wrapped = withClause.targets.reduce(
3661 (extendsTarget2, [wsNext, withTarget]) => {
3662 const args = [extendsTarget2];
3663 const exp = {
3664 type: "CallExpression",
3665 children: [
3666 makeLeftHandSideExpression(withTarget),
3667 {
3668 type: "Call",
3669 args,
3670 children: ["(", trimFirstSpace(ws), args, ")"]
3671 }
3672 ]
3673 };
3674 ws = wsNext;
3675 return exp;
3676 },
3677 extendsTarget
3678 );
3679 return [extendsToken, insertTrimmingSpace(ws, " "), wrapped];
3680}
3681
3682// source/parser/unary.civet
3683function processUnaryExpression(pre, exp, post) {
3684 if (!(pre.length || post))
3685 return exp;
3686 if (post?.token === "?") {
3687 post = {
3688 $loc: post.$loc,
3689 token: " != null"
3690 };
3691 if (pre.length) {
3692 const lastPre = pre[pre.length - 1];
3693 if (lastPre.token === "!") {
3694 post.token = " == null";
3695 pre = pre.slice(0, -1);
3696 } else if (lastPre.length === 2 && lastPre[0].token === "!") {
3697 post.token = " == null";
3698 pre = pre.slice(0, -1);
3699 }
3700 }
3701 const existence = {
3702 type: "Existence",
3703 expression: exp,
3704 children: [exp, post],
3705 parent: void 0
3706 };
3707 exp = makeLeftHandSideExpression(existence);
3708 if (pre.length) {
3709 return {
3710 type: "UnaryExpression",
3711 children: [...pre, exp]
3712 };
3713 }
3714 return exp;
3715 }
3716 if (exp.type === "Literal") {
3717 if (pre.length === 1) {
3718 const { token } = pre[0];
3719 if (token === "-" || token === "+") {
3720 const children = [pre[0], ...exp.children];
3721 const literal = {
3722 type: "Literal",
3723 children,
3724 raw: `${token}${exp.raw}`
3725 };
3726 if (post) {
3727 return {
3728 type: "UnaryExpression",
3729 children: [literal, post]
3730 };
3731 }
3732 return literal;
3733 }
3734 }
3735 }
3736 let ref;
3737 while (ref = pre.length) {
3738 const l = ref;
3739 const last = pre[l - 1];
3740 if (last.type === "Await") {
3741 if (last.op) {
3742 if (exp.type !== "ParenthesizedExpression") {
3743 exp = ["(", exp, ")"];
3744 }
3745 exp = {
3746 type: "CallExpression",
3747 children: [...last.children, "Promise", last.op, exp]
3748 };
3749 pre = pre.slice(0, -1);
3750 } else {
3751 exp = {
3752 type: "AwaitExpression",
3753 children: [...last.children, exp]
3754 };
3755 pre = pre.slice(0, -1);
3756 }
3757 } else {
3758 break;
3759 }
3760 }
3761 return {
3762 type: "UnaryExpression",
3763 children: [...pre, exp, post]
3764 };
3765}
3766
3767// source/parser/pipe.civet
3768function constructInvocation(fn, arg) {
3769 const fnArr = [fn.leadingComment, fn.expr, fn.trailingComment];
3770 let expr = fn.expr;
3771 while (expr.type === "ParenthesizedExpression") {
3772 expr = expr.expression;
3773 }
3774 if (expr.ampersandBlock) {
3775 const { ref, body } = expr;
3776 ref.type = "PipedExpression";
3777 ref.children = [makeLeftHandSideExpression(arg)];
3778 updateParentPointers(ref);
3779 return makeNode({
3780 type: "UnwrappedExpression",
3781 children: [skipIfOnlyWS(fn.leadingComment), body, skipIfOnlyWS(fn.trailingComment)]
3782 });
3783 }
3784 expr = fn.expr;
3785 const lhs = makeLeftHandSideExpression(expr);
3786 let comment = skipIfOnlyWS(fn.trailingComment);
3787 if (comment)
3788 lhs.children.splice(2, 0, comment);
3789 comment = skipIfOnlyWS(fn.leadingComment);
3790 if (comment)
3791 lhs.children.splice(1, 0, comment);
3792 switch (arg.type) {
3793 case "CommaExpression":
3794 arg = makeLeftHandSideExpression(arg);
3795 break;
3796 }
3797 return {
3798 type: "CallExpression",
3799 children: [lhs, "(", arg, ")"]
3800 };
3801}
3802function constructPipeStep(fn, arg, returning) {
3803 let children = [[fn.leadingComment, fn.expr, fn.trailingComment].map(skipIfOnlyWS), " ", arg];
3804 switch (fn.expr.token) {
3805 case "yield":
3806 case "await":
3807 if (fn.expr.op) {
3808 children = processUnaryExpression([fn.expr], arg, void 0);
3809 }
3810 if (returning) {
3811 return [
3812 children,
3813 returning
3814 ];
3815 }
3816 return [
3817 children,
3818 null
3819 ];
3820 case "return":
3821 return [{
3822 type: "ReturnStatement",
3823 children
3824 }, null];
3825 }
3826 if (returning) {
3827 return [
3828 constructInvocation(fn, arg),
3829 returning
3830 ];
3831 }
3832 return [constructInvocation(fn, arg), null];
3833}
3834function processPipelineExpressions(statements) {
3835 gatherRecursiveAll(statements, (n) => n.type === "PipelineExpression").forEach((s) => {
3836 const [ws, , body] = s.children;
3837 let [, arg] = s.children;
3838 let i = 0, l = body.length;
3839 const children = [ws];
3840 let usingRef = null;
3841 for (i = 0; i < l; i++) {
3842 const step = body[i];
3843 const [leadingComment, pipe, trailingComment, expr] = step;
3844 const returns = pipe.token === "||>";
3845 let ref, result, returning = returns ? arg : null;
3846 if (pipe.token === "|>=") {
3847 let initRef;
3848 if (i === 0) {
3849 outer:
3850 switch (arg.type) {
3851 case "MemberExpression":
3852 if (arg.children.length <= 2)
3853 break;
3854 case "CallExpression":
3855 const access = arg.children.pop();
3856 switch (access.type) {
3857 case "PropertyAccess":
3858 case "SliceExpression":
3859 case "Index":
3860 break;
3861 default:
3862 children.unshift({
3863 type: "Error",
3864 $loc: pipe.token.$loc,
3865 message: `Can't assign to ${access.type}`
3866 });
3867 arg.children.push(access);
3868 break outer;
3869 }
3870 usingRef = makeRef();
3871 initRef = {
3872 type: "AssignmentExpression",
3873 children: [usingRef, " = ", arg, ","]
3874 };
3875 arg = {
3876 type: "MemberExpression",
3877 children: [usingRef, access]
3878 };
3879 break;
3880 }
3881 const lhs = [[
3882 [initRef],
3883 arg,
3884 [],
3885 { token: "=", children: [" = "] }
3886 ]];
3887 Object.assign(s, {
3888 type: "AssignmentExpression",
3889 children: [lhs, children],
3890 names: null,
3891 lhs,
3892 assigned: arg,
3893 expression: children
3894 });
3895 arg = clone(arg);
3896 removeHoistDecs(arg);
3897 if (arg.children[0].type === "Ref") {
3898 arg.children[0] = usingRef;
3899 }
3900 } else {
3901 children.unshift({
3902 type: "Error",
3903 $loc: pipe.token.$loc,
3904 message: "Can't use |>= in the middle of a pipeline"
3905 });
3906 }
3907 } else {
3908 if (i === 0)
3909 s.children = children;
3910 }
3911 if (returns && (ref = needsRef(arg))) {
3912 usingRef = usingRef || ref;
3913 arg = {
3914 type: "ParenthesizedExpression",
3915 children: ["(", {
3916 type: "AssignmentExpression",
3917 children: [usingRef, " = ", arg]
3918 }, ")"]
3919 };
3920 returning = usingRef;
3921 }
3922 ;
3923 [result, returning] = constructPipeStep(
3924 {
3925 leadingComment: skipIfOnlyWS(leadingComment),
3926 trailingComment: skipIfOnlyWS(trailingComment),
3927 expr
3928 },
3929 arg,
3930 returning
3931 );
3932 if (result.type === "ReturnStatement") {
3933 if (i < l - 1) {
3934 result.children.push({
3935 type: "Error",
3936 message: "Can't continue a pipeline after returning"
3937 });
3938 }
3939 arg = result;
3940 if (children[children.length - 1] === ",") {
3941 children.pop();
3942 children.push(";");
3943 }
3944 break;
3945 }
3946 if (returning) {
3947 arg = returning;
3948 children.push(result, ",");
3949 } else {
3950 arg = result;
3951 }
3952 }
3953 if (usingRef) {
3954 s.hoistDec = {
3955 type: "Declaration",
3956 children: ["let ", usingRef],
3957 names: []
3958 };
3959 }
3960 children.push(arg);
3961 if (!children.some(($) => $?.type === "ReturnStatement") && children.some(($1) => $1 === ",")) {
3962 const { parent } = s;
3963 const parenthesizedExpression = makeLeftHandSideExpression({ ...s });
3964 Object.assign(s, parenthesizedExpression, {
3965 parent,
3966 hoistDec: void 0
3967 });
3968 }
3969 return addParentPointers(s, s.parent);
3970 });
3971}
3972
3973// source/parser/for.civet
3974function forRange(open, forDeclaration, range, stepExp, close) {
3975 const { start, end, inclusive } = range;
3976 const counterRef = makeRef("i");
3977 const infinite = end.type === "Identifier" && end.name === "Infinity";
3978 let stepRef;
3979 if (stepExp) {
3980 stepExp = insertTrimmingSpace(stepExp, "");
3981 stepRef = maybeRef(stepExp, "step");
3982 } else if (infinite) {
3983 stepExp = stepRef = "1";
3984 }
3985 let startRef = maybeRef(start, "start");
3986 let endRef = maybeRef(end, "end");
3987 const startRefDec = startRef !== start ? [startRef, " = ", start, ", "] : [];
3988 const endRefDec = endRef !== end ? [endRef, " = ", end, ", "] : [];
3989 let ascDec = [], ascRef, asc;
3990 if (stepRef) {
3991 if (!(stepRef === stepExp)) {
3992 ascDec = [", ", stepRef, " = ", stepExp];
3993 }
3994 } else if ("Literal" === start.type && start.type === end.type) {
3995 asc = literalValue(start) <= literalValue(end);
3996 if ("StringLiteral" === start.subtype && start.subtype === end.subtype) {
3997 startRef = literalValue(start).charCodeAt(0).toString();
3998 endRef = literalValue(end).charCodeAt(0).toString();
3999 }
4000 } else {
4001 ascRef = makeRef("asc");
4002 ascDec = [", ", ascRef, " = ", startRef, " <= ", endRef];
4003 }
4004 let varAssign = [], varLetAssign = varAssign, varLet = varAssign, blockPrefix;
4005 if (forDeclaration?.declare) {
4006 if (forDeclaration.declare.token === "let") {
4007 const varName = forDeclaration.children.splice(1);
4008 varAssign = [...insertTrimmingSpace(varName, ""), " = "];
4009 varLet = [",", ...varName, " = ", counterRef];
4010 } else {
4011 const value = "StringLiteral" === start.subtype ? ["String.fromCharCode(", counterRef, ")"] : counterRef;
4012 blockPrefix = [
4013 ["", [forDeclaration, " = ", value], ";"]
4014 ];
4015 }
4016 } else if (forDeclaration) {
4017 varAssign = varLetAssign = [forDeclaration, " = "];
4018 }
4019 const declaration = {
4020 type: "Declaration",
4021 children: ["let ", ...startRefDec, ...endRefDec, counterRef, " = ", ...varLetAssign, startRef, ...varLet, ...ascDec],
4022 names: forDeclaration?.names
4023 };
4024 const counterPart = inclusive ? [counterRef, " <= ", endRef, " : ", counterRef, " >= ", endRef] : [counterRef, " < ", endRef, " : ", counterRef, " > ", endRef];
4025 const condition = infinite ? [] : stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : ascRef ? [ascRef, " ? ", ...counterPart] : asc ? counterPart.slice(0, 3) : counterPart.slice(4);
4026 const increment = infinite ? [...varAssign, "++", counterRef] : stepRef ? [...varAssign, counterRef, " += ", stepRef] : ascRef ? [...varAssign, ascRef, " ? ++", counterRef, " : --", counterRef] : [...varAssign, asc ? "++" : "--", counterRef];
4027 return {
4028 declaration,
4029 children: [open, declaration, "; ", ...condition, "; ", ...increment, close],
4030 blockPrefix
4031 };
4032}
4033function processForInOf($0, getRef) {
4034 let [awaits, eachOwn, open, declaration, declaration2, ws, inOf, exp, step, close] = $0;
4035 if (exp.type === "RangeExpression" && inOf.token === "of" && !declaration2) {
4036 return forRange(open, declaration, exp, step, close);
4037 } else if (step) {
4038 throw new Error("for..of/in cannot use 'by' except with range literals");
4039 }
4040 let eachOwnError;
4041 let hoistDec, blockPrefix = [];
4042 if (eachOwn && eachOwn[0].token === "each") {
4043 if (inOf.token === "of") {
4044 const counterRef = makeRef("i");
4045 const lenRef = makeRef("len");
4046 const expRef2 = maybeRef(exp);
4047 const increment = "++";
4048 let assignmentNames = [...declaration.names];
4049 if (declaration2) {
4050 const [, , ws22, decl22] = declaration2;
4051 blockPrefix.push(["", [
4052 insertTrimmingSpace(ws22, ""),
4053 decl22,
4054 " = ",
4055 counterRef
4056 ], ";"]);
4057 assignmentNames.push(...decl22.names);
4058 }
4059 const expRefDec = expRef2 !== exp ? [insertTrimmingSpace(expRef2, " "), " = ", insertTrimmingSpace(exp, ""), ", "] : [];
4060 blockPrefix.push(["", {
4061 type: "Declaration",
4062 children: [declaration, " = ", insertTrimmingSpace(expRef2, ""), "[", counterRef, "]"],
4063 names: assignmentNames
4064 }, ";"]);
4065 declaration = {
4066 type: "Declaration",
4067 children: ["let ", ...expRefDec, counterRef, " = 0, ", lenRef, " = ", insertTrimmingSpace(expRef2, ""), ".length"],
4068 names: []
4069 };
4070 const condition = [counterRef, " < ", lenRef, "; "];
4071 const children = [open, declaration, "; ", condition, counterRef, increment, close];
4072 return { declaration, children, blockPrefix };
4073 } else {
4074 eachOwnError = {
4075 type: "Error",
4076 message: "'each' is only meaningful in for..of loops"
4077 };
4078 }
4079 }
4080 let own = eachOwn && eachOwn[0].token === "own";
4081 let expRef;
4082 if (own && inOf.token !== "in") {
4083 own = false;
4084 eachOwnError = {
4085 type: "Error",
4086 message: "'own' is only meaningful in for..in loops"
4087 };
4088 }
4089 if (!declaration2 && !own) {
4090 return {
4091 declaration,
4092 blockPrefix,
4093 children: [awaits, eachOwnError, open, declaration, ws, inOf, expRef ?? exp, step, close]
4094 // omit declaration2, replace eachOwn with eachOwnError, replace exp with expRef
4095 };
4096 }
4097 let ws2, decl2;
4098 if (declaration2)
4099 [, , ws2, decl2] = declaration2;
4100 switch (inOf.token) {
4101 case "of": {
4102 const counterRef = makeRef("i");
4103 hoistDec = {
4104 type: "Declaration",
4105 children: ["let ", counterRef, " = 0"],
4106 names: []
4107 };
4108 blockPrefix.push(["", {
4109 type: "Declaration",
4110 children: [insertTrimmingSpace(ws2, ""), decl2, " = ", counterRef, "++"],
4111 names: decl2.names
4112 }, ";"]);
4113 break;
4114 }
4115 case "in": {
4116 const expRef2 = maybeRef(exp);
4117 if (expRef2 !== exp) {
4118 hoistDec = {
4119 type: "Declaration",
4120 children: ["let ", expRef2],
4121 names: []
4122 };
4123 exp = {
4124 type: "AssignmentExpression",
4125 children: [" ", expRef2, " =", exp]
4126 };
4127 }
4128 let { binding } = declaration;
4129 if (binding?.type !== "Identifier") {
4130 const keyRef = makeRef("key");
4131 blockPrefix.push(["", [
4132 declaration,
4133 " = ",
4134 keyRef
4135 ], ";"]);
4136 declaration = {
4137 type: "ForDeclaration",
4138 binding: binding = keyRef,
4139 children: ["const ", keyRef],
4140 names: []
4141 };
4142 }
4143 if (own) {
4144 const hasPropRef = getRef("hasProp");
4145 blockPrefix.push(["", ["if (!", hasPropRef, "(", insertTrimmingSpace(expRef2, ""), ", ", insertTrimmingSpace(binding, ""), ")) continue"], ";"]);
4146 }
4147 if (decl2) {
4148 blockPrefix.push(["", {
4149 type: "Declaration",
4150 children: [insertTrimmingSpace(ws2, ""), decl2, " = ", insertTrimmingSpace(expRef2, ""), "[", insertTrimmingSpace(binding, ""), "]"],
4151 names: decl2.names
4152 }, ";"]);
4153 }
4154 break;
4155 }
4156 default:
4157 throw new Error(`for item, index must use 'of' or 'in' instead of '${inOf.token}'`);
4158 }
4159 return {
4160 declaration,
4161 children: [awaits, eachOwnError, open, declaration, ws, inOf, exp, step, close],
4162 // omit declaration2, replace each with eachOwnError
4163 blockPrefix,
4164 hoistDec
4165 };
4166}
4167
4168// source/parser/auto-dec.civet
4169function findDecs(statements) {
4170 const predicate = ($) => $.type === "Declaration";
4171 const declarations = gatherNodes(statements, predicate);
4172 const declarationNames = declarations.flatMap((d) => d.names);
4173 return new Set(declarationNames);
4174}
4175function createConstLetDecs(statements, scopes, letOrConst) {
4176 function findVarDecs(statements2, decs) {
4177 const declarationNames = gatherRecursive(statements2, (node) => {
4178 return node.type === "Declaration" && node.children && node.children.length > 0 && node.children[0].token && node.children[0].token.startsWith("var") || node.type === "FunctionExpression";
4179 }).filter((node) => node.type === "Declaration").flatMap((node) => node.names);
4180 return new Set(declarationNames);
4181 }
4182 let declaredIdentifiers = findVarDecs(statements);
4183 function hasDec(name) {
4184 return declaredIdentifiers.has(name) || scopes.some((s) => s.has(name));
4185 }
4186 function gatherBlockOrOther(statement) {
4187 return gatherNodes(statement, (s) => s.type === "BlockStatement" || s.type === "AssignmentExpression" || s.type === "Declaration").flatMap((node) => {
4188 if (node.type == "BlockStatement") {
4189 return node.bare ? gatherBlockOrOther(node.expressions) : node;
4190 } else if (node.children && node.children.length) {
4191 return [...gatherBlockOrOther(node.children), node];
4192 } else {
4193 return [];
4194 }
4195 });
4196 }
4197 let currentScope = /* @__PURE__ */ new Set();
4198 scopes.push(currentScope);
4199 const fnNodes = gatherNodes(statements, isFunction);
4200 const forNodes = gatherNodes(statements, (s) => s.type === "ForStatement");
4201 let targetStatements = [];
4202 for (const statement of statements) {
4203 const nodes = gatherBlockOrOther(statement);
4204 let undeclaredIdentifiers = [];
4205 for (const node of nodes) {
4206 if (node.type == "BlockStatement") {
4207 let block = node;
4208 let fnNode = fnNodes.find((fnNode2) => fnNode2.block === block);
4209 let forNode = forNodes.find((forNode2) => forNode2.block === block);
4210 if (fnNode != null) {
4211 scopes.push(new Set(fnNode.parameters.names));
4212 createConstLetDecs(block.expressions, scopes, letOrConst);
4213 scopes.pop();
4214 } else if (forNode != null) {
4215 scopes.push(new Set(forNode.declaration.names));
4216 createConstLetDecs(block.expressions, scopes, letOrConst);
4217 scopes.pop();
4218 } else {
4219 createConstLetDecs(block.expressions, scopes, letOrConst);
4220 }
4221 continue;
4222 }
4223 if (node.names == null)
4224 continue;
4225 let names = node.names.filter((name) => !hasDec(name));
4226 if (node.type == "AssignmentExpression") {
4227 undeclaredIdentifiers.push(...names);
4228 }
4229 names.forEach((name) => currentScope.add(name));
4230 }
4231 if (undeclaredIdentifiers.length > 0) {
4232 let indent = statement[0];
4233 let firstIdentifier = gatherNodes(statement[1], (node) => node.type == "Identifier")[0];
4234 if (undeclaredIdentifiers.length == 1 && statement[1].type == "AssignmentExpression" && statement[1].names.length == 1 && statement[1].names[0] == undeclaredIdentifiers[0] && firstIdentifier && firstIdentifier.names == undeclaredIdentifiers[0] && gatherNodes(statement[1], (node) => node.type === "ObjectBindingPattern").length == 0) {
4235 statement[1].children.unshift([`${letOrConst} `]);
4236 } else {
4237 let tail = "\n";
4238 if (gatherNodes(indent, (node) => node.token && node.token.endsWith("\n")).length > 0) {
4239 tail = void 0;
4240 }
4241 targetStatements.push([indent, {
4242 type: "Declaration",
4243 children: ["let ", ...undeclaredIdentifiers.join(", ")],
4244 names: undeclaredIdentifiers
4245 }, tail]);
4246 }
4247 }
4248 targetStatements.push(statement);
4249 }
4250 scopes.pop();
4251 statements.splice(0, statements.length, ...targetStatements);
4252}
4253function createVarDecs(block, scopes, pushVar) {
4254 function hasDec(name) {
4255 return scopes.some((s) => s.has(name));
4256 }
4257 function findAssignments(statements2, decs2) {
4258 let assignmentStatements2 = gatherNodes(statements2, (node) => {
4259 return node.type === "AssignmentExpression";
4260 });
4261 if (assignmentStatements2.length) {
4262 assignmentStatements2 = assignmentStatements2.concat(findAssignments(assignmentStatements2.map((s) => s.children), decs2));
4263 }
4264 return assignmentStatements2;
4265 }
4266 if (!pushVar) {
4267 pushVar = function(name) {
4268 varIds.push(name);
4269 return decs.add(name);
4270 };
4271 }
4272 const { expressions: statements } = block;
4273 const decs = findDecs(statements);
4274 scopes.push(decs);
4275 const varIds = [];
4276 const assignmentStatements = findAssignments(statements, scopes);
4277 const undeclaredIdentifiers = assignmentStatements.flatMap(($1) => $1?.names || []);
4278 undeclaredIdentifiers.filter((x, i, a) => {
4279 if (!hasDec(x))
4280 return a.indexOf(x) === i;
4281 return;
4282 }).forEach(pushVar);
4283 const fnNodes = gatherNodes(statements, isFunction);
4284 const forNodes = gatherNodes(statements, (s) => s.type === "ForStatement");
4285 const blockNodes = new Set(gatherNodes(statements, (s) => s.type === "BlockStatement"));
4286 fnNodes.forEach(({ block: block2 }) => blockNodes.delete(block2));
4287 forNodes.forEach(({ block: block2 }) => blockNodes.delete(block2));
4288 blockNodes.forEach((block2) => {
4289 return createVarDecs(block2, scopes, pushVar);
4290 });
4291 forNodes.forEach(({ block: block2, declaration }) => {
4292 scopes.push(new Set(declaration.names));
4293 createVarDecs(block2, scopes, pushVar);
4294 return scopes.pop();
4295 });
4296 fnNodes.forEach(({ block: block2, parameters }) => {
4297 scopes.push(new Set(parameters.names));
4298 createVarDecs(block2, scopes);
4299 return scopes.pop();
4300 });
4301 if (varIds.length) {
4302 const indent = getIndent(statements[0]);
4303 let delimiter = ";";
4304 if (statements[0][1]?.parent?.root) {
4305 delimiter = ";\n";
4306 }
4307 braceBlock(block);
4308 statements.unshift([indent, {
4309 type: "Declaration",
4310 children: ["var ", varIds.join(", ")]
4311 }, delimiter]);
4312 }
4313 scopes.pop();
4314}
4315
4316// source/parser/comptime.civet
4317var import_node_path = {};
4318var import_node_module = {};
4319var import_node_vm = {};
4320
4321// source/generate.civet
4322function stringify(node) {
4323 try {
4324 return JSON.stringify(removeParentPointers(node));
4325 } catch (e) {
4326 return `${node}`;
4327 }
4328}
4329function gen(root, options) {
4330 const updateSourceMap = options?.sourceMap?.updateSourceMap;
4331 return recurse(root);
4332 function recurse(node) {
4333 if (!(node != null)) {
4334 return "";
4335 }
4336 if (typeof node === "string") {
4337 updateSourceMap?.(node);
4338 return node;
4339 }
4340 if (Array.isArray(node)) {
4341 return node.map(recurse).join("");
4342 }
4343 if (typeof node === "object") {
4344 if (options.js && node.ts) {
4345 return "";
4346 }
4347 if (!options.js && node.js) {
4348 return "";
4349 }
4350 if (node.type === "Error") {
4351 const filename2 = options?.filename ?? "unknown";
4352 let line = "?";
4353 let column = "?";
4354 let offset;
4355 if (options && typeof options === "object" && "sourceMap" in options) {
4356 const { sourceMap } = options;
4357 line = sourceMap.data.srcLine + 1;
4358 column = sourceMap.data.srcColumn + 1;
4359 offset = sourceMap.data.srcOffset;
4360 }
4361 options.errors ??= [];
4362 options.errors.push(new import_lib3.ParseError(
4363 node.message,
4364 void 0,
4365 // body
4366 filename2,
4367 line,
4368 column,
4369 offset
4370 ));
4371 return "";
4372 }
4373 if (node.$loc != null) {
4374 const { token, $loc } = node;
4375 updateSourceMap?.(token, $loc.pos);
4376 return token;
4377 }
4378 if (!node.children) {
4379 switch (node.type) {
4380 case "Ref": {
4381 throw new Error(`Unpopulated ref ${stringify(node)}`);
4382 }
4383 }
4384 throw new Error(`Unknown node ${stringify(node)}`);
4385 }
4386 return recurse(node.children);
4387 }
4388 throw new Error(`Unknown node ${stringify(node)}`);
4389 }
4390}
4391var generate_default = gen;
4392function prune(node) {
4393 if (!(node != null)) {
4394 return;
4395 }
4396 if (typeof node === "string" && node.length === 0) {
4397 return;
4398 }
4399 if (node.parent != null) {
4400 delete node.parent;
4401 }
4402 if (Array.isArray(node)) {
4403 const a = node.map(prune).filter(($) => $);
4404 if (a.length > 1) {
4405 return a;
4406 }
4407 if (a.length === 1) {
4408 return a[0];
4409 }
4410 return;
4411 }
4412 if (node.children != null) {
4413 node.children = prune(node.children) || [];
4414 return node;
4415 }
4416 return node;
4417}
4418
4419// source/parser/comptime.civet
4420function processComptime(statements) {
4421 if (!getInitialConfig()?.comptime) {
4422 return;
4423 }
4424 const promises = runComptime(statements);
4425 if (getSync()) {
4426 return;
4427 } else {
4428 return (async () => {
4429 {
4430 await Promise.all(promises);
4431 }
4432 })();
4433 }
4434}
4435function runComptime(statements) {
4436 const sync2 = getSync();
4437 return gatherRecursive(
4438 statements,
4439 (node) => {
4440 return node.type === "ComptimeStatement" || node.type === "ComptimeExpression";
4441 }
4442 ).map((exp) => {
4443 let content = exp.type === "ComptimeStatement" ? exp.block : exp.expression;
4444 content = [
4445 ...extractPreludeFor(content),
4446 content
4447 ];
4448 const options = { js: true };
4449 let js = generate_default(prune(content), options);
4450 js = `"use strict";${js}`;
4451 if (options.errors != null) {
4452 return;
4453 }
4454 let output, context, contextGlobal;
4455 try {
4456 context = import_node_vm.default.createContext?.() ?? globalThis;
4457 const filename2 = context.__filename = (0, import_node_path.resolve)(getFilename() ?? "");
4458 context.__dirname = (0, import_node_path.dirname)(filename2);
4459 context.require = (0, import_node_module.createRequire)(filename2);
4460 if (import_node_vm.default.runInContext != null) {
4461 contextGlobal = import_node_vm.default.runInContext("globalThis", context);
4462 const builtins = new Set(Object.getOwnPropertyNames(contextGlobal));
4463 for (const name of Object.getOwnPropertyNames(globalThis)) {
4464 if (builtins.has(name)) {
4465 continue;
4466 }
4467 Object.defineProperty(contextGlobal, name, {
4468 __proto__: null,
4469 ...Object.getOwnPropertyDescriptor(globalThis, name)
4470 });
4471 }
4472 output = import_node_vm.default.runInContext(js, context, {
4473 filename: filename2,
4474 importModuleDynamically: import_node_vm.default.constants?.USE_MAIN_CONTEXT_DEFAULT_LOADER
4475 });
4476 } else {
4477 output = eval?.(js);
4478 }
4479 } catch (e) {
4480 exp.children = [
4481 {
4482 type: "Error",
4483 message: `comptime block failed to execute: ${e}
4484${js}`
4485 }
4486 ];
4487 return;
4488 }
4489 let promise;
4490 if (exp.type === "ComptimeExpression") {
4491 const finish = () => {
4492 let string;
4493 try {
4494 string = serialize(output, contextGlobal);
4495 } catch (e) {
4496 exp.children = [
4497 {
4498 type: "Error",
4499 message: `comptime result ${output} not serializable: ${e}`
4500 }
4501 ];
4502 return;
4503 }
4504 return exp.children = [string];
4505 };
4506 if (sync2) {
4507 finish();
4508 } else {
4509 promise = (async () => {
4510 {
4511 output = await output;
4512 return finish();
4513 }
4514 })();
4515 }
4516 } else {
4517 promise = output;
4518 exp.children = [];
4519 }
4520 return promise;
4521 });
4522}
4523function serialize(value, context) {
4524 const stack = /* @__PURE__ */ new Set();
4525 function recurse(val) {
4526 if (typeof val === "string") {
4527 return JSON.stringify(val);
4528 } else if (typeof val === "number") {
4529 if (Object.is(-0, val))
4530 return "-0";
4531 else
4532 return val.toString();
4533 } else if (typeof val === "boolean" || val == null) {
4534 return String(val);
4535 } else if (typeof val === "bigint") {
4536 return `${val}n`;
4537 } else if (typeof val === "function") {
4538 let string = Function.prototype.toString.call(val);
4539 if (/\{\s+\[native code]\s+\}$/.test(string)) {
4540 throw new TypeError("cannot serialize native function");
4541 }
4542 if (/^class[\s{]/u.test(string)) {
4543 return string;
4544 }
4545 if (stack.has(val)) {
4546 throw new Error("circular reference detected");
4547 }
4548 stack.add(val);
4549 if (/^(?:async\s*)?(?:\*\s*|[gs]et\s+)?\[/.test(string)) {
4550 throw new Error("cannot serialize method with computed name");
4551 }
4552 const protoHasProps = !(val.prototype === void 0 || Object.prototype === Object.getPrototypeOf(val.prototype) && Object.getOwnPropertyNames(val.prototype).length <= 1 && // constructor
4553 Object.getOwnPropertySymbols(val.prototype).length === 0 && [val, void 0].includes(val.prototype.constructor));
4554 const isGenerator = /^(?:async\s*)?(?:function\s*)?\*/u.test(string);
4555 if (protoHasProps && !isGenerator) {
4556 throw new TypeError("cannot serialize function with modified prototype");
4557 }
4558 if (!/^(?:async\s+)?(?:(function|class)(?!\p{ID_Continue})|\(|(?:\p{ID_Start}|[_$])(?:\p{ID_Continue}|[\u200C\u200D$])*\s*=>)/u.test(string)) {
4559 string = string.replace(/^(async\s+)?(?:[gs]et\s+(?=\p{ID_Start}))?/u, (_2, maybeAsync = "") => maybeAsync + "function ");
4560 }
4561 const defaultProps = ["length", "name", "arguments", "caller", "prototype"];
4562 const hasProps = !(Object.getOwnPropertyNames(val).every(($) => defaultProps.includes($)) && Object.getOwnPropertySymbols(val).length === 0);
4563 if (hasProps) {
4564 const props = Object.getOwnPropertyDescriptors(val);
4565 for (const prop of defaultProps) {
4566 delete props[prop];
4567 }
4568 string = `Object.defineProperties(${string},${recurse(props)})`;
4569 }
4570 stack.delete(val);
4571 return string;
4572 } else if (typeof val === "symbol") {
4573 let ref;
4574 if ((ref = Symbol.keyFor(val)) != null) {
4575 const key = ref;
4576 return `Symbol.for(${JSON.stringify(key)})`;
4577 }
4578 for (const name of Object.getOwnPropertyNames(Symbol)) {
4579 const sym = Symbol[name];
4580 if (val === sym) {
4581 return `Symbol.${name}`;
4582 }
4583 }
4584 throw new TypeError("cannot serialize unique symbol");
4585 } else if (typeof val === "object") {
4586 if (stack.has(val)) {
4587 throw new Error("circular reference detected");
4588 }
4589 stack.add(val);
4590 let ref1;
4591 switch (Object.getPrototypeOf(val)) {
4592 case RegExp.prototype:
4593 case context?.RegExp.prototype: {
4594 const re = val;
4595 ref1 = `/${re.source}/${re.flags}`;
4596 break;
4597 }
4598 case Date.prototype:
4599 case context?.Date.prototype: {
4600 ref1 = `new Date(${val.getTime()})`;
4601 break;
4602 }
4603 case Set.prototype:
4604 case context?.Set.prototype: {
4605 ref1 = "new Set([" + (() => {
4606 const results = [];
4607 for (const item of val) {
4608 results.push(recurse(item));
4609 }
4610 return results;
4611 })().join(",") + "])";
4612 break;
4613 }
4614 case Map.prototype:
4615 case context?.Map.prototype: {
4616 ref1 = "new Map([" + (() => {
4617 const results1 = [];
4618 for (const [key, value2] of val) {
4619 results1.push(`[${recurse(key)},${recurse(value2)}]`);
4620 }
4621 return results1;
4622 })().join(",") + "])";
4623 break;
4624 }
4625 case Object.prototype:
4626 case context?.Object.prototype: {
4627 let objStr = "{";
4628 let descStr = "";
4629 for (let ref2 = Object.getOwnPropertyNames(val).concat(Object.getOwnPropertySymbols(val)), i = 0, len3 = ref2.length; i < len3; i++) {
4630 const prop = ref2[i];
4631 const desc = Object.getOwnPropertyDescriptor(val, prop);
4632 if (desc.enumerable && desc.configurable && desc.writable) {
4633 if (typeof prop === "symbol") {
4634 objStr += `[${recurse(prop)}]`;
4635 } else {
4636 objStr += JSON.stringify(prop);
4637 }
4638 objStr += `:${recurse(desc.value)},`;
4639 } else {
4640 if (typeof prop === "symbol") {
4641 descStr += `[${recurse(prop)}]`;
4642 } else {
4643 descStr += JSON.stringify(prop);
4644 }
4645 descStr += `:${recurse(desc)},`;
4646 }
4647 }
4648 if (objStr.length > 1) {
4649 objStr = objStr.slice(0, -1);
4650 }
4651 objStr += "}";
4652 if (descStr !== "") {
4653 objStr = `Object.defineProperties(${objStr},{${descStr.slice(0, -1)}})`;
4654 }
4655 if (!Object.isExtensible(val)) {
4656 objStr = `Object.preventExtensions(${objStr})`;
4657 }
4658 ref1 = objStr;
4659 break;
4660 }
4661 case URL.prototype:
4662 case context?.URL.prototype: {
4663 ref1 = `new URL(${JSON.stringify(val.href)})`;
4664 break;
4665 }
4666 case null: {
4667 ref1 = `Object.create(null,${recurse(Object.getOwnPropertyDescriptors(val))})`;
4668 break;
4669 }
4670 case Int8Array.prototype:
4671 case Uint8Array.prototype:
4672 case Int16Array.prototype:
4673 case Uint16Array.prototype:
4674 case Int32Array.prototype:
4675 case Uint32Array.prototype:
4676 case Float32Array.prototype:
4677 case Float64Array.prototype:
4678 case Uint8ClampedArray.prototype:
4679 case context?.Int8Array.prototype:
4680 case context?.Uint8Array.prototype:
4681 case context?.Int16Array.prototype:
4682 case context?.Uint16Array.prototype:
4683 case context?.Int32Array.prototype:
4684 case context?.Uint32Array.prototype:
4685 case context?.Float32Array.prototype:
4686 case context?.Float64Array.prototype:
4687 case context?.Uint8ClampedArray.prototype: {
4688 ref1 = `new ${val.constructor.name}([${val.join(",")}])`;
4689 break;
4690 }
4691 case BigInt64Array.prototype:
4692 case BigUint64Array.prototype:
4693 case context?.BigInt64Array.prototype:
4694 case context?.BigUint64Array.prototype: {
4695 ref1 = `new ${val.constructor.name}([${Array.from(val, ($1) => `${$1}n`).join(",")}])`;
4696 break;
4697 }
4698 case globalThis.Buffer?.prototype:
4699 case context?.Buffer?.prototype: {
4700 ref1 = `Buffer.from([${val.join(",")}])`;
4701 break;
4702 }
4703 default: {
4704 if (Array.isArray(val)) {
4705 ref1 = `[${val.map(recurse).join(",")}]`;
4706 } else {
4707 throw new TypeError(`cannot serialize object with prototype ${val.constructor?.name ?? Object.getPrototypeOf(val)}`);
4708 }
4709 }
4710 }
4711 ;
4712 const str = ref1;
4713 stack.delete(val);
4714 return str;
4715 } else {
4716 throw new TypeError(`cannot serialize ${typeof val} value`);
4717 }
4718 }
4719 return recurse(value);
4720}
4721
4722// source/parser/string.civet
4723function getIndentLevel(str, tab) {
4724 if (tab != null && tab != 1) {
4725 const tabs = str.match(/\t/g);
4726 const numTabs = tabs ? tabs.length : 0;
4727 return numTabs * tab + /*spaces*/
4728 (str.length - numTabs);
4729 } else {
4730 return str.length;
4731 }
4732}
4733function reduceIndentLevel(str, dedent, tab) {
4734 if (tab != null && tab != 1) {
4735 for (let i1 = 0, len3 = str.length; i1 < len3; i1++) {
4736 const i = i1;
4737 const char = str[i1];
4738 if (!dedent) {
4739 return str.slice(i);
4740 }
4741 if (char == " ") {
4742 dedent -= tab;
4743 if (dedent < 0) {
4744 return "".padStart(-dedent, " ") + str.slice(i + 1);
4745 }
4746 } else {
4747 dedent--;
4748 }
4749 }
4750 return "";
4751 } else {
4752 return str.slice(dedent);
4753 }
4754}
4755var indentRe = /\n([ \t]*)(?![ \t]|\r?\n|$)/g;
4756function getIndentOfBlockString(str, tab) {
4757 let minLevel = Infinity;
4758 let ref;
4759 while (ref = indentRe.exec(str)) {
4760 const match = ref;
4761 const level = getIndentLevel(match[1], tab);
4762 if (level < minLevel) {
4763 minLevel = level;
4764 }
4765 }
4766 if (minLevel === Infinity) {
4767 minLevel = 0;
4768 }
4769 return minLevel;
4770}
4771function dedentBlockString({ $loc, token: str }, tab, dedent, trimStart = true, trimEnd = true) {
4772 if (dedent == null && /^[ \t]*\r?\n/.test(str)) {
4773 dedent = getIndentOfBlockString(str, tab);
4774 }
4775 if (dedent) {
4776 str = str.replace(/(\n)([ \t]*)/g, (_2, newline, indent) => {
4777 return newline + reduceIndentLevel(indent, dedent, tab);
4778 });
4779 }
4780 if (trimStart) {
4781 str = str.replace(/^[ \t]*\r?\n/, "");
4782 }
4783 if (trimEnd) {
4784 str = str.replace(/(\r?\n|\n)[ \t]*$/, "");
4785 }
4786 str = str.replace(/(\\.|`|\$\{)/g, (s) => {
4787 if (s[0] === "\\") {
4788 return s;
4789 } else {
4790 return `\\${s}`;
4791 }
4792 });
4793 return { $loc, token: str };
4794}
4795function dedentBlockSubstitutions($0, tab) {
4796 const [s, strWithSubstitutions, e] = $0;
4797 if (!strWithSubstitutions.length) {
4798 return $0;
4799 }
4800 const stringPart = (() => {
4801 const results1 = [];
4802 for (let i2 = 0, len1 = strWithSubstitutions.length; i2 < len1; i2++) {
4803 const part = strWithSubstitutions[i2];
4804 results1.push(part.token ?? "s");
4805 }
4806 return results1;
4807 })().join("");
4808 let ref1;
4809 if (/^[ \t]*\r?\n/.test(stringPart)) {
4810 ref1 = getIndentOfBlockString(stringPart, tab);
4811 } else {
4812 ref1 = void 0;
4813 }
4814 ;
4815 const dedent = ref1;
4816 let results = [s];
4817 for (let i3 = 0, len22 = strWithSubstitutions.length; i3 < len22; i3++) {
4818 const i = i3;
4819 let part = strWithSubstitutions[i3];
4820 if (part.token != null) {
4821 part = dedentBlockString(
4822 part,
4823 tab,
4824 dedent,
4825 i === 0,
4826 i === strWithSubstitutions.length - 1
4827 );
4828 }
4829 results.push(part);
4830 }
4831 results.push(e);
4832 return {
4833 type: "TemplateLiteral",
4834 children: results
4835 };
4836}
4837function processCoffeeInterpolation(s, parts, e, $loc) {
4838 if (parts.length === 0) {
4839 return {
4840 type: "StringLiteral",
4841 token: '""',
4842 $loc
4843 };
4844 }
4845 if (parts.length === 1) {
4846 let ref2;
4847 if ((ref2 = parts[0]) && typeof ref2 === "object" && "token" in ref2) {
4848 const { token } = ref2;
4849 return {
4850 type: "StringLiteral",
4851 token: `"${modifyString(token)}"`,
4852 $loc
4853 };
4854 }
4855 }
4856 const results2 = [];
4857 for (let i4 = 0, len3 = parts.length; i4 < len3; i4++) {
4858 const part = parts[i4];
4859 if ("token" in part) {
4860 const token = modifyString(part.token.replace(/(`|\$\{)/g, "\\$1"));
4861 results2.push({
4862 ...part,
4863 token
4864 });
4865 } else {
4866 results2.push(part);
4867 }
4868 }
4869 ;
4870 parts = results2;
4871 s.token = e.token = "`";
4872 return {
4873 type: "TemplateLiteral",
4874 children: [s, parts, e]
4875 };
4876}
4877function modifyString(str) {
4878 return str.replace(/((?:\\.|[^\r\n])*)(\r\n|\n|\r)?/gsu, function(_2, chars, nl) {
4879 if (nl) {
4880 return chars + "\\n";
4881 } else {
4882 return chars;
4883 }
4884 });
4885}
4886function quoteString(str) {
4887 return JSON.stringify(str);
4888}
4889
4890// source/parser/lib.civet
4891var xor = (a, b) => a ? !b && a : b;
4892function addPostfixStatement(statement, ws, post) {
4893 const expressions = [
4894 ...post.blockPrefix || [],
4895 ["", statement]
4896 ];
4897 const block = makeNode({
4898 type: "BlockStatement",
4899 children: [" { ", expressions, " }"],
4900 expressions
4901 });
4902 const children = [...post.children, block];
4903 if (!isWhitespaceOrEmpty(ws))
4904 children.push(ws);
4905 post = makeNode({ ...post, children, block });
4906 if (post.type === "IfStatement") {
4907 post.then = block;
4908 }
4909 return post;
4910}
4911function adjustIndexAccess(dot) {
4912 if (dot.optional) {
4913 return {
4914 ...dot,
4915 children: [...dot.children, "["]
4916 };
4917 } else {
4918 dot = replaceNodes(
4919 deepCopy(dot),
4920 (node) => node.token === ".",
4921 (node) => ({ ...node, token: "[" })
4922 );
4923 }
4924 return dot;
4925}
4926function negateCondition(condition) {
4927 let { expression } = condition;
4928 const children = condition.children.slice();
4929 const i = children.indexOf(expression);
4930 if (i < 0) {
4931 throw new Error(`Could not find expression in condition`);
4932 }
4933 children[i] = expression = {
4934 type: "UnaryExpression",
4935 children: [
4936 "!",
4937 makeLeftHandSideExpression(expression)
4938 ]
4939 };
4940 return { ...condition, expression, children };
4941}
4942function isExpression(node) {
4943 if (Array.isArray(node)) {
4944 return node.every(isExpression);
4945 }
4946 if (typeof node === "string") {
4947 return true;
4948 }
4949 switch (node?.type) {
4950 case "BlockStatement":
4951 case "DebuggerStatement":
4952 case "Declaration":
4953 case "ForStatement":
4954 case "IfStatement":
4955 case "IterationStatement":
4956 case "ReturnStatement":
4957 case "SwitchStatement":
4958 case "ThrowStatement":
4959 case "TryStatement":
4960 return false;
4961 }
4962 return true;
4963}
4964function expressionizeBlock(blockOrExpression) {
4965 if (blockOrExpression && typeof blockOrExpression === "object" && "expressions" in blockOrExpression) {
4966 const { expressions } = blockOrExpression;
4967 const l = expressions.length;
4968 const results = [];
4969 let i1 = 0;
4970 for (const [ws, s, _delim] of expressions) {
4971 const i = i1++;
4972 if (!isExpression(s))
4973 return;
4974 const wrapped = makeLeftHandSideExpression(s);
4975 if (i === l - 1) {
4976 results.push([ws, wrapped]);
4977 } else {
4978 results.push([ws, wrapped, ","]);
4979 }
4980 }
4981 if (results.length > 1) {
4982 return makeLeftHandSideExpression(results);
4983 } else if (results.length) {
4984 return results;
4985 } else {
4986 return ["void 0"];
4987 }
4988 } else {
4989 return blockOrExpression;
4990 }
4991}
4992function expressionizeIfStatement(statement) {
4993 const { condition, then: b, else: e } = statement;
4994 const [...condRest] = condition.children, [closeParen] = condRest.splice(-1);
4995 const expressionizedBlock = expressionizeBlock(b);
4996 if (!expressionizedBlock) {
4997 return wrapIIFE([["", statement]]);
4998 }
4999 const children = [
5000 ...condRest,
5001 "?",
5002 expressionizedBlock
5003 ];
5004 if (e) {
5005 const e2 = expressionizeBlock(e.block);
5006 if (!e2) {
5007 return wrapIIFE([["", statement]]);
5008 }
5009 children.push(e.children[0], ":", e2, ...e.children.slice(3));
5010 } else {
5011 children.push(":void 0");
5012 }
5013 children.push(closeParen);
5014 return makeNode({
5015 type: "IfExpression",
5016 children
5017 });
5018}
5019function expressionizeTypeIf([ws, ifOp, condition, t, e]) {
5020 const children = [
5021 ws,
5022 "(",
5023 insertTrimmingSpace(condition, ""),
5024 "?"
5025 ];
5026 if (!xor(ifOp.negated, condition.negated)) {
5027 children.push(t);
5028 if (e) {
5029 children.push(e[0], ":", ...e.slice(2));
5030 } else {
5031 children.push(":never");
5032 }
5033 } else {
5034 if (e) {
5035 children.push(...e.slice(2), e[0], ":");
5036 } else {
5037 children.push("never:");
5038 }
5039 children.push(t);
5040 }
5041 children.push(")");
5042 return children;
5043}
5044function handleThisPrivateShorthands(value) {
5045 if (value.privateShorthand) {
5046 value = value.children[1].children[1];
5047 return [value, false];
5048 }
5049 if (value.type === "MemberExpression" || value.type === "CallExpression") {
5050 let suppressPrefix = value.thisShorthand;
5051 value = {
5052 ...value,
5053 children: value.children.map((c, i) => {
5054 if (i === 0) {
5055 let s;
5056 [c, s] = handleThisPrivateShorthands(c);
5057 suppressPrefix ||= s;
5058 }
5059 return c;
5060 })
5061 };
5062 return [value, suppressPrefix];
5063 }
5064 return [value, value.thisShorthand];
5065}
5066function processTryBlock($0) {
5067 let [t, , b, c, e, f] = $0;
5068 if (!c && (e || !f)) {
5069 const emptyCatchBlock = makeEmptyBlock();
5070 c = {
5071 type: "CatchClause",
5072 children: [" ", "catch(e) ", emptyCatchBlock],
5073 block: emptyCatchBlock
5074 };
5075 }
5076 let hoistDec;
5077 if (e) {
5078 c = c;
5079 const ok = makeRef("ok");
5080 hoistDec = {
5081 type: "Declaration",
5082 children: ["let ", ok, " = true"],
5083 names: []
5084 };
5085 replaceNode(
5086 c.block,
5087 blockWithPrefix([["", "ok = false"]], c.block),
5088 c
5089 );
5090 const condition = {
5091 type: "ParenthesizedExpression",
5092 children: ["(", ok, ")"],
5093 expression: ok
5094 };
5095 const i = makeNode({
5096 type: "IfStatement",
5097 children: ["if", condition, e.block],
5098 condition,
5099 then: e.block,
5100 else: void 0
5101 });
5102 if (!f) {
5103 const emptyFinallyBlock = makeEmptyBlock();
5104 f = {
5105 type: "FinallyClause",
5106 children: [" ", "finally ", emptyFinallyBlock],
5107 block: emptyFinallyBlock
5108 };
5109 }
5110 replaceNode(
5111 f.block,
5112 blockWithPrefix([["", i]], f.block),
5113 f
5114 );
5115 }
5116 const blocks = [b];
5117 if (c) {
5118 blocks.push(c.block);
5119 }
5120 return {
5121 type: "TryStatement",
5122 blocks,
5123 children: [t, b, c, f],
5124 hoistDec
5125 };
5126}
5127function processCallMemberExpression(node) {
5128 const { children } = node;
5129 if (Array.isArray(children) && children.length >= 2 && typeof children[0] === "object" && children[0] != null && "parenthesizedOp" in children[0] && typeof children[0].parenthesizedOp === "object" && children[0].parenthesizedOp != null && "token" in children[0].parenthesizedOp && typeof children[1] === "object" && children[1] != null && "type" in children[1] && children[1].type === "Call") {
5130 const op = children[0].parenthesizedOp;
5131 let call = children[1];
5132 const args = [...call.args];
5133 call = {
5134 ...call,
5135 args,
5136 children: call.children.map((x) => x === call.args ? args : x)
5137 };
5138 if (isComma(args[args.length - 1])) {
5139 args[args.length - 1] = deepCopy(args[args.length - 1]);
5140 isComma(args[args.length - 1]).token = "";
5141 }
5142 let commaCount = 0;
5143 for (let i2 = 0, len1 = args.length; i2 < len1; i2++) {
5144 const i = i2;
5145 let arg = args[i2];
5146 if (isComma(arg)) {
5147 arg = args[i] = deepCopy(arg);
5148 isComma(arg).token = `)${op.token}(`;
5149 commaCount++;
5150 }
5151 }
5152 if (args.length) {
5153 children.splice(
5154 0,
5155 2,
5156 commaCount ? {
5157 type: "ParenthesizedExpression",
5158 children: ["(", ...call.children, ")"]
5159 } : { ...call, type: "ParenthesizedExpression" }
5160 );
5161 }
5162 }
5163 for (let i = 0; i < children.length; i++) {
5164 const glob = children[i];
5165 if (glob?.type === "PropertyGlob") {
5166 let prefix = children.slice(0, i);
5167 const parts = [];
5168 let hoistDec, refAssignmentComma;
5169 if (prefix.length > 1) {
5170 const ref = makeRef();
5171 ({ hoistDec, refAssignmentComma } = makeRefAssignment(ref, prefix));
5172 prefix = [ref];
5173 }
5174 prefix = prefix.concat(glob.dot);
5175 for (const part of glob.object.properties) {
5176 if (part.type === "Error") {
5177 parts.push(part);
5178 continue;
5179 }
5180 if (part.type === "MethodDefinition") {
5181 parts.push({
5182 type: "Error",
5183 message: "Glob pattern cannot have method definition"
5184 });
5185 continue;
5186 }
5187 if (part.value && !["CallExpression", "MemberExpression", "Identifier"].includes(part.value.type)) {
5188 parts.push({
5189 type: "Error",
5190 message: `Glob pattern must have call or member expression value, found ${JSON.stringify(part.value)}`
5191 });
5192 continue;
5193 }
5194 let suppressPrefix = false;
5195 let name = part.name;
5196 let value = part.value ?? name;
5197 const wValue = getTrimmingSpace(part.value);
5198 [value, suppressPrefix] = handleThisPrivateShorthands(value);
5199 if (glob.reversed) {
5200 [name, value] = [value, name];
5201 }
5202 if (!suppressPrefix) {
5203 value = prefix.concat(insertTrimmingSpace(value, ""));
5204 }
5205 if (wValue)
5206 value.unshift(wValue);
5207 if (part.type === "SpreadProperty") {
5208 parts.push({
5209 type: part.type,
5210 value,
5211 dots: part.dots,
5212 delim: part.delim,
5213 names: part.names,
5214 children: part.children.slice(0, 2).concat(value, part.delim)
5215 });
5216 } else {
5217 parts.push({
5218 type: part.type === "Identifier" ? "Property" : part.type,
5219 name,
5220 value,
5221 delim: part.delim,
5222 names: part.names,
5223 children: [
5224 isWhitespaceOrEmpty(part.children[0]) && part.children[0],
5225 name,
5226 isWhitespaceOrEmpty(part.children[2]) && part.children[2],
5227 part.children[3]?.token === ":" ? part.children[3] : ":",
5228 value,
5229 part.delim
5230 // comma delimiter
5231 ]
5232 });
5233 }
5234 }
5235 let ref1;
5236 let object = {
5237 type: "ObjectExpression",
5238 children: [
5239 glob.object.children[0],
5240 // {
5241 ...parts,
5242 (ref1 = glob.object.children)[ref1.length - 1]
5243 // whitespace and }
5244 ],
5245 properties: parts,
5246 hoistDec
5247 };
5248 if (refAssignmentComma) {
5249 object = {
5250 type: "ParenthesizedExpression",
5251 children: ["(", ...refAssignmentComma, object, ")"],
5252 expression: object
5253 };
5254 }
5255 if (i === children.length - 1)
5256 return object;
5257 return processCallMemberExpression({
5258 // in case there are more
5259 ...node,
5260 children: [object, ...children.slice(i + 1)]
5261 });
5262 } else if (glob?.type === "PropertyBind") {
5263 const prefix = children.slice(0, i);
5264 return processCallMemberExpression({
5265 // in case there are more
5266 ...node,
5267 children: [
5268 prefix,
5269 {
5270 ...glob,
5271 type: "PropertyAccess",
5272 children: [
5273 ...glob.children,
5274 ".bind(",
5275 prefix,
5276 ...glob.args.length > 0 ? [", "] : [],
5277 ...glob.args,
5278 ")"
5279 ]
5280 },
5281 ...children.slice(i + 1)
5282 ]
5283 });
5284 }
5285 }
5286 return node;
5287}
5288function replaceNode(node, newNode, parent) {
5289 parent ??= node.parent;
5290 if (!(parent != null)) {
5291 throw new Error("replaceNode failed: node has no parent");
5292 }
5293 function recurse(children) {
5294 for (let i3 = 0, len22 = children.length; i3 < len22; i3++) {
5295 const i = i3;
5296 const child = children[i3];
5297 if (child === node) {
5298 children[i] = newNode;
5299 return true;
5300 } else if (Array.isArray(child)) {
5301 if (recurse(child)) {
5302 return true;
5303 }
5304 }
5305 }
5306 return false;
5307 }
5308 if (!recurse(parent.children)) {
5309 throw new Error("replaceNode failed: didn't find child node in parent");
5310 }
5311 for (const key in parent) {
5312 const value = parent[key];
5313 if (value === node) {
5314 parent[key] = newNode;
5315 }
5316 }
5317 if (isASTNodeObject(newNode)) {
5318 newNode.parent = parent;
5319 }
5320}
5321function makeExpressionStatement(expression) {
5322 if (Array.isArray(expression) && expression[1]?.[0]?.[0]?.[1]?.token === ",") {
5323 return [
5324 makeExpressionStatement(expression[0]),
5325 expression[1].map(([comma, exp]) => {
5326 return [comma, makeExpressionStatement(exp)];
5327 })
5328 ];
5329 } else if (expression?.type === "ObjectExpression" || expression?.type === "FunctionExpression" && !expression.id) {
5330 return makeLeftHandSideExpression(expression);
5331 } else {
5332 return expression;
5333 }
5334}
5335function lastAccessInCallExpression(exp) {
5336 if (exp.type === "Identifier") {
5337 return exp;
5338 }
5339 let children, i;
5340 do {
5341 if (!(exp.children != null)) {
5342 return;
5343 }
5344 ;
5345 ({ children } = exp);
5346 i = children.length - 1;
5347 while (i >= 0 && (children[i].type === "Call" || children[i].type === "NonNullAssertion" || children[i].type === "Optional"))
5348 i--;
5349 if (i < 0)
5350 return;
5351 } while (children[i].type === "MemberExpression" && (exp = children[i]));
5352 return children[i];
5353}
5354function convertMethodToFunction(method) {
5355 const { signature, block } = method;
5356 let { modifier, optional } = signature;
5357 if (optional)
5358 return;
5359 if (modifier) {
5360 if (modifier.get || modifier.set) {
5361 return;
5362 } else if (modifier.async) {
5363 modifier = [modifier.children[0][0], " function ", ...modifier.children.slice(1)];
5364 } else {
5365 modifier = ["function ", ...modifier.children || []];
5366 }
5367 } else {
5368 modifier = "function ";
5369 }
5370 return {
5371 ...signature,
5372 id: signature.name,
5373 signature,
5374 type: "FunctionExpression",
5375 children: [
5376 [modifier, ...signature.children.slice(1)],
5377 block
5378 ],
5379 block
5380 };
5381}
5382function convertNamedImportsToObject(node, pattern) {
5383 const properties = node.specifiers.map((specifier) => {
5384 if (specifier.ts) {
5385 return { type: "Error", message: "cannot use `type` in dynamic import" };
5386 } else {
5387 const { source, binding } = specifier;
5388 let ref2;
5389 const delim = (ref2 = specifier.children)[ref2.length - 1];
5390 return {
5391 type: pattern ? "BindingProperty" : "Property",
5392 name: source,
5393 value: !(source === binding) ? binding : void 0,
5394 delim,
5395 children: source === binding ? [source, delim] : [source, ":", binding, delim]
5396 };
5397 }
5398 });
5399 let ref3;
5400 return {
5401 type: pattern ? "ObjectBindingPattern" : "ObjectExpression",
5402 names: node.names,
5403 properties,
5404 children: [
5405 node.children[0],
5406 // {
5407 properties,
5408 (ref3 = node.children)[ref3.length - 1]
5409 // }
5410 ]
5411 };
5412}
5413function convertObjectToJSXAttributes(obj) {
5414 const { properties } = obj;
5415 const parts = [];
5416 const rest = [];
5417 for (let i = 0; i < properties.length; i++) {
5418 if (i > 0)
5419 parts.push(" ");
5420 const part = properties[i];
5421 switch (part.type) {
5422 case "Identifier":
5423 parts.push([part.name, "={", part.name, "}"]);
5424 break;
5425 case "Property":
5426 if (part.name.type === "ComputedPropertyName") {
5427 rest.push(part);
5428 } else {
5429 parts.push([part.name, "={", insertTrimmingSpace(part.value, ""), "}"]);
5430 }
5431 break;
5432 case "SpreadProperty":
5433 parts.push(["{", part.dots, part.value, "}"]);
5434 break;
5435 case "MethodDefinition":
5436 const func = convertMethodToFunction(part);
5437 if (func) {
5438 parts.push([part.name, "={", convertMethodToFunction(part), "}"]);
5439 } else {
5440 rest.push(part);
5441 }
5442 break;
5443 default:
5444 throw new Error(`invalid object literal type in JSX attribute: ${part.type}`);
5445 }
5446 }
5447 if (rest.length) {
5448 parts.push(["{...{", ...rest, "}}"]);
5449 }
5450 return parts;
5451}
5452function makeGetterMethod(name, ws, value, returnType, block, kind = { token: "get" }, autoReturn = true) {
5453 const { token } = kind;
5454 ws = insertTrimmingSpace(ws, "");
5455 let setVal;
5456 const parameters = token === "get" ? {
5457 type: "Parameters",
5458 children: ["()"],
5459 names: [],
5460 implicit: true
5461 } : {
5462 type: "Parameters",
5463 children: ["(", setVal = makeRef("value"), ")"],
5464 names: [],
5465 implicit: false
5466 };
5467 let expressions;
5468 if (block) {
5469 block = duplicateBlock(block);
5470 expressions = block.expressions;
5471 } else {
5472 expressions = [];
5473 block = {
5474 type: "BlockStatement",
5475 expressions,
5476 children: ["{ ", expressions, " }"]
5477 };
5478 }
5479 if (autoReturn) {
5480 const finalStatement = token === "get" ? [[expressions[0]?.[0] || "", ws], wrapWithReturn(value)] : [[expressions[0]?.[0] || "", ws], [value, " = ", setVal]];
5481 expressions.push(finalStatement);
5482 }
5483 const children = [kind, " ", name, parameters, returnType, block];
5484 return {
5485 type: "MethodDefinition",
5486 children,
5487 name,
5488 signature: {
5489 type: "MethodSignature",
5490 modifier: {
5491 get: token === "get",
5492 set: token === "set",
5493 async: false
5494 },
5495 name,
5496 returnType
5497 },
5498 block,
5499 parameters
5500 };
5501}
5502function processBindingPatternLHS(lhs, tail) {
5503 adjustAtBindings(lhs, true);
5504 const [splices, thisAssignments] = gatherBindingCode(lhs);
5505 tail.push(...splices.map((s) => [", ", s]), ...thisAssignments.map((a) => [", ", a]));
5506}
5507function processAssignments(statements) {
5508 gatherRecursiveAll(statements, (n) => n.type === "AssignmentExpression" || n.type === "UpdateExpression").forEach((exp) => {
5509 function extractAssignment(lhs) {
5510 let expr = lhs;
5511 while (expr.type === "ParenthesizedExpression") {
5512 expr = expr.expression;
5513 }
5514 let m;
5515 if (m = expr.type, m === "AssignmentExpression" || m === "UpdateExpression") {
5516 if (expr.type === "UpdateExpression" && expr.children[0] === expr.assigned) {
5517 pre.push("(");
5518 post.push([", ", lhs, ")"]);
5519 } else {
5520 pre.push(["(", lhs, ", "]);
5521 post.push(")");
5522 }
5523 return expr.assigned;
5524 }
5525 ;
5526 return;
5527 }
5528 const pre = [], post = [];
5529 let ref4;
5530 switch (exp.type) {
5531 case "AssignmentExpression": {
5532 if (!exp.lhs)
5533 return;
5534 exp.lhs.forEach((lhsPart, i) => {
5535 let ref5;
5536 if (ref5 = extractAssignment(lhsPart[1])) {
5537 const newLhs = ref5;
5538 return lhsPart[1] = newLhs;
5539 }
5540 ;
5541 return;
5542 });
5543 break;
5544 }
5545 case "UpdateExpression": {
5546 if (ref4 = extractAssignment(exp.assigned)) {
5547 const newLhs = ref4;
5548 const i = exp.children.indexOf(exp.assigned);
5549 exp.assigned = exp.children[i] = newLhs;
5550 }
5551 ;
5552 break;
5553 }
5554 }
5555 if (pre.length)
5556 exp.children.unshift(...pre);
5557 if (post.length)
5558 exp.children.push(...post);
5559 if (exp.type === "UpdateExpression") {
5560 const { assigned } = exp;
5561 const ref = makeRef();
5562 const newMemberExp = unchainOptionalMemberExpression(assigned, ref, (children) => {
5563 return exp.children.map(($) => $ === assigned ? children : $);
5564 });
5565 if (newMemberExp !== assigned) {
5566 if (newMemberExp.usesRef) {
5567 newMemberExp.hoistDec = {
5568 type: "Declaration",
5569 children: ["let ", ref],
5570 names: []
5571 };
5572 }
5573 return replaceNode(exp, newMemberExp);
5574 }
5575 ;
5576 return;
5577 }
5578 ;
5579 return;
5580 });
5581 replaceNodesRecursive(
5582 statements,
5583 (n) => n.type === "AssignmentExpression" && n.names === null,
5584 (exp) => {
5585 let { lhs: $1, expression: $2 } = exp, tail = [], len3 = $1.length;
5586 let block;
5587 let ref6;
5588 if (exp.parent?.type === "BlockStatement" && !(ref6 = $1[$1.length - 1])?.[ref6.length - 1]?.special) {
5589 block = makeBlockFragment();
5590 let ref7;
5591 if (ref7 = prependStatementExpressionBlock(
5592 { type: "Initializer", expression: $2, children: [void 0, void 0, $2] },
5593 block
5594 )) {
5595 const ref = ref7;
5596 exp.children = exp.children.map(($3) => $3 === $2 ? ref : $3);
5597 $2 = ref;
5598 } else {
5599 block = void 0;
5600 }
5601 }
5602 let ref8;
5603 if ($1.some(($4) => (ref8 = $4)[ref8.length - 1].special)) {
5604 if ($1.length !== 1)
5605 throw new Error("Only one assignment with id= is allowed");
5606 const [, lhs, , op] = $1[0];
5607 const { call, omitLhs } = op;
5608 const index = exp.children.indexOf($2);
5609 if (index < 0)
5610 throw new Error("Assertion error: exp not in AssignmentExpression");
5611 exp.children.splice(
5612 index,
5613 1,
5614 exp.expression = $2 = [call, "(", lhs, ", ", $2, ")"]
5615 );
5616 if (omitLhs) {
5617 return $2;
5618 }
5619 }
5620 let wrapped = false;
5621 let i = 0;
5622 while (i < len3) {
5623 const lastAssignment = $1[i++];
5624 const [, lhs, , op] = lastAssignment;
5625 if (!(op.token === "=")) {
5626 continue;
5627 }
5628 let m1;
5629 if (m1 = lhs.type, m1 === "ObjectExpression" || m1 === "ObjectBindingPattern") {
5630 if (!wrapped) {
5631 wrapped = true;
5632 lhs.children.splice(0, 0, "(");
5633 tail.push(")");
5634 }
5635 }
5636 }
5637 const refsToDeclare = /* @__PURE__ */ new Set();
5638 i = len3 - 1;
5639 while (i >= 0) {
5640 const lastAssignment = $1[i];
5641 if (lastAssignment[3].token === "=") {
5642 const lhs = lastAssignment[1];
5643 let m2;
5644 if (lhs.type === "MemberExpression") {
5645 const members = lhs.children;
5646 const lastMember = members[members.length - 1];
5647 if (lastMember.type === "SliceExpression") {
5648 const { start, end, children: c } = lastMember;
5649 c[0].token = ".splice(";
5650 c[1] = start;
5651 c[2] = ", ";
5652 if (end) {
5653 c[3] = [end, " - ", start];
5654 } else {
5655 c[3] = ["1/0"];
5656 }
5657 c[4] = [", ...", $2];
5658 c[5] = ")";
5659 lastAssignment.pop();
5660 if (isWhitespaceOrEmpty(lastAssignment[2]))
5661 lastAssignment.pop();
5662 if ($1.length > 1) {
5663 throw new Error("Not implemented yet! TODO: Handle multiple splice assignments");
5664 }
5665 exp.children = [$1];
5666 exp.names = [];
5667 break;
5668 }
5669 } else if (m2 = lhs.type, m2 === "ObjectBindingPattern" || m2 === "ArrayBindingPattern") {
5670 processBindingPatternLHS(lhs, tail);
5671 gatherRecursiveAll(lhs, ($5) => $5.type === "Ref").forEach(refsToDeclare.add.bind(refsToDeclare));
5672 }
5673 }
5674 i--;
5675 }
5676 i = len3 - 1;
5677 const optionalChainRef = makeRef();
5678 while (i >= 0) {
5679 const assignment = $1[i];
5680 const [ws1, lhs, ws2, op] = assignment;
5681 if (lhs.type === "MemberExpression" || lhs.type === "CallExpression") {
5682 const newMemberExp = unchainOptionalMemberExpression(lhs, optionalChainRef, (children) => {
5683 const assigns = $1.splice(i + 1, len3 - 1 - i);
5684 $1.pop();
5685 return [ws1, ...children, ws2, op, ...assigns, $2];
5686 });
5687 if (newMemberExp !== lhs) {
5688 if (newMemberExp.usesRef) {
5689 exp.hoistDec = {
5690 type: "Declaration",
5691 children: ["let ", optionalChainRef],
5692 names: []
5693 };
5694 }
5695 replaceNode($2, newMemberExp);
5696 newMemberExp.parent = exp;
5697 $2 = newMemberExp;
5698 }
5699 }
5700 i--;
5701 }
5702 if (refsToDeclare.size) {
5703 if (exp.hoistDec) {
5704 exp.hoistDec.children.push([...refsToDeclare].map(($6) => [",", $6]));
5705 } else {
5706 exp.hoistDec = {
5707 type: "Declaration",
5708 children: ["let ", [...refsToDeclare].map((r, i2) => i2 ? [",", r] : r)],
5709 names: []
5710 };
5711 }
5712 }
5713 exp.names = $1.flatMap(([, l]) => l.names || []);
5714 if (tail.length) {
5715 const index = exp.children.indexOf($2);
5716 if (index < 0)
5717 throw new Error("Assertion error: exp not in AssignmentExpression");
5718 exp.children.splice(index + 1, 0, ...tail);
5719 }
5720 if (block) {
5721 block.parent = exp.parent;
5722 block.expressions.push(["", exp]);
5723 exp.parent = block;
5724 return block;
5725 }
5726 return exp;
5727 }
5728 );
5729}
5730function unchainOptionalMemberExpression(exp, ref, innerExp) {
5731 let j = 0;
5732 const { children } = exp;
5733 let usesRef = false;
5734 const conditions = [];
5735 while (j < children.length) {
5736 const child = children[j];
5737 const type = child?.type;
5738 let hasOptional = false;
5739 switch (type) {
5740 case "PropertyAccess": {
5741 if (child.dot?.optional) {
5742 hasOptional = true;
5743 child.dot.children.shift();
5744 child.dot.optional = false;
5745 }
5746 ;
5747 break;
5748 }
5749 case "Call":
5750 case "Index": {
5751 if (child.optional) {
5752 hasOptional = true;
5753 child.children.shift();
5754 child.optional = void 0;
5755 }
5756 ;
5757 break;
5758 }
5759 }
5760 if (hasOptional) {
5761 let base;
5762 if (j > 1 || needsRef(children[0])) {
5763 usesRef = true;
5764 base = makeLeftHandSideExpression({
5765 type: "AssignmentExpression",
5766 children: [ref, " = ", children.splice(0, j)]
5767 });
5768 base.parent = child;
5769 children.unshift(ref);
5770 j = 0;
5771 } else {
5772 base = children[0];
5773 }
5774 conditions.push([base, " != null"]);
5775 }
5776 j++;
5777 }
5778 let ref9;
5779 if (ref9 = conditions.length) {
5780 const l = ref9;
5781 const cs = flatJoin(conditions, " && ");
5782 return {
5783 ...exp,
5784 children: [...cs, " ? ", innerExp(children), " : void 0"],
5785 usesRef
5786 };
5787 } else {
5788 return exp;
5789 }
5790}
5791function attachPostfixStatementAsExpression(exp, post) {
5792 const postfixStatement = post[1];
5793 switch (postfixStatement.type) {
5794 case "ForStatement":
5795 case "IterationStatement":
5796 case "DoStatement": {
5797 const statement = addPostfixStatement(exp, ...post);
5798 return {
5799 type: "IterationExpression",
5800 children: [statement],
5801 block: statement.block,
5802 statement
5803 };
5804 }
5805 case "IfStatement": {
5806 return expressionizeIfStatement({ ...postfixStatement, then: exp });
5807 }
5808 default: {
5809 throw new Error("Unknown postfix statement");
5810 }
5811 }
5812}
5813function processTypes(node) {
5814 return gatherRecursiveAll(node, (n) => n.type === "UnaryType").forEach((unary) => {
5815 let last;
5816 let count = 0;
5817 let ref10;
5818 while (unary.suffix.length && (ref10 = unary.suffix)[ref10.length - 1]?.token === "?") {
5819 last = unary.suffix.pop();
5820 count++;
5821 }
5822 if (!count) {
5823 return;
5824 }
5825 if (unary.parent?.type === "TypeTuple") {
5826 if (count === 1) {
5827 unary.suffix.push(last);
5828 return;
5829 }
5830 replaceNode(unary, [
5831 getTrimmingSpace(unary),
5832 "(",
5833 parenthesizeType(insertTrimmingSpace(unary, "")),
5834 " | null)",
5835 last
5836 ]);
5837 } else {
5838 replaceNode(unary, [
5839 getTrimmingSpace(unary),
5840 "(",
5841 parenthesizeType(insertTrimmingSpace(unary, "")),
5842 count === 1 ? " | undefined" : " | undefined | null",
5843 ")"
5844 ]);
5845 }
5846 });
5847}
5848function processStatementExpressions(statements) {
5849 gatherRecursiveAll(statements, ($7) => $7.type === "StatementExpression").forEach((_exp) => {
5850 const exp = _exp;
5851 const { statement } = exp;
5852 let ref11;
5853 switch (statement.type) {
5854 case "IfStatement": {
5855 if (ref11 = expressionizeIfStatement(statement)) {
5856 const expression = ref11;
5857 return replaceNode(statement, expression, exp);
5858 } else {
5859 return replaceNode(statement, wrapIIFE([["", statement]]), exp);
5860 }
5861 }
5862 case "IterationExpression": {
5863 if (statement.subtype === "ComptimeStatement") {
5864 const { expressions } = statement.statement.block;
5865 const expression = wrapIIFE(expressions, hasAwait(expressions));
5866 return replaceNode(statement, makeNode({
5867 type: "ComptimeExpression",
5868 expression,
5869 children: [expression]
5870 }), exp);
5871 }
5872 ;
5873 return;
5874 }
5875 default: {
5876 return replaceNode(statement, wrapIIFE([["", statement]]), exp);
5877 }
5878 }
5879 });
5880}
5881function processNegativeIndexAccess(statements) {
5882 gatherRecursiveAll(statements, (n) => n.type === "NegativeIndex").forEach((exp) => {
5883 const { children } = exp.parent;
5884 let start = 0;
5885 while (start < children.length && isWhitespaceOrEmpty(children[start])) {
5886 start++;
5887 }
5888 const index = children.indexOf(exp);
5889 let ref, subexp;
5890 if (index === start + 1) {
5891 const child = children[start];
5892 ref = maybeRef(child);
5893 if (ref !== child) {
5894 subexp = children.splice(start, 1);
5895 }
5896 } else if (index > start + 1) {
5897 ref = makeRef();
5898 subexp = children.splice(start, index - start);
5899 } else {
5900 throw new Error("Invalid parse tree for negative index access");
5901 }
5902 if (subexp) {
5903 const { hoistDec, refAssignment } = makeRefAssignment(ref, subexp);
5904 exp.hoistDec = hoistDec;
5905 children.splice(start, 0, makeLeftHandSideExpression(refAssignment));
5906 }
5907 exp.len.children = [
5908 ref,
5909 ".length"
5910 ];
5911 });
5912}
5913function processProgram(root) {
5914 const state2 = getState();
5915 const config2 = getConfig();
5916 assert.equal(state2.forbidBracedApplication.length, 1, "forbidBracedApplication");
5917 assert.equal(state2.forbidClassImplicitCall.length, 1, "forbidClassImplicitCall");
5918 assert.equal(state2.forbidIndentedApplication.length, 1, "forbidIndentedApplication");
5919 assert.equal(state2.forbidNewlineBinaryOp.length, 1, "forbidNewlineBinaryOp");
5920 assert.equal(state2.forbidTrailingMemberProperty.length, 1, "forbidTrailingMemberProperty");
5921 assert.equal(state2.JSXTagStack.length, 1, "JSXTagStack");
5922 addParentPointers(root);
5923 const { expressions: statements } = root;
5924 processPlaceholders(statements);
5925 processNegativeIndexAccess(statements);
5926 processTypes(statements);
5927 processDeclarationConditions(statements);
5928 processPipelineExpressions(statements);
5929 processDeclarations(statements);
5930 processAssignments(statements);
5931 processStatementExpressions(statements);
5932 processPatternMatching(statements);
5933 gatherRecursiveAll(statements, (n) => n.type === "IterationExpression").forEach((e) => expressionizeIteration(e));
5934 hoistRefDecs(statements);
5935 processFunctions(statements, config2);
5936 statements.unshift(...state2.prelude);
5937 if (config2.autoLet) {
5938 createConstLetDecs(statements, [], "let");
5939 } else if (config2.autoConst) {
5940 createConstLetDecs(statements, [], "const");
5941 } else if (config2.autoVar) {
5942 createVarDecs(root, []);
5943 }
5944 processBlocks(statements);
5945 populateRefs(statements);
5946 adjustAtBindings(statements);
5947 if (getSync()) {
5948 processComptime(statements);
5949 }
5950}
5951async function processProgramAsync(root) {
5952 const { expressions: statements } = root;
5953 await processComptime(statements);
5954}
5955function populateRefs(statements) {
5956 const refNodes = gatherRecursive(statements, ({ type }) => type === "Ref");
5957 if (refNodes.length) {
5958 const ids = gatherRecursive(statements, (s) => s.type === "Identifier");
5959 const names = new Set(ids.flatMap(({ names: names2 }) => names2 || []));
5960 refNodes.forEach((ref) => {
5961 const { type, base } = ref;
5962 if (type !== "Ref")
5963 return;
5964 ref.type = "Identifier";
5965 let n = 0;
5966 let name = base;
5967 while (names.has(name)) {
5968 n++;
5969 name = `${base}${n}`;
5970 }
5971 names.add(name);
5972 return ref.children = ref.names = [name];
5973 });
5974 }
5975}
5976function processPlaceholders(statements) {
5977 const placeholderMap = /* @__PURE__ */ new Map();
5978 const liftedIfs = /* @__PURE__ */ new Set();
5979 gatherRecursiveAll(statements, ($8) => $8.type === "Placeholder").forEach((_exp) => {
5980 const exp = _exp;
5981 let ancestor;
5982 if (exp.subtype === ".") {
5983 ({ ancestor } = findAncestor(exp, ($9) => $9.type === "Call"));
5984 ancestor = ancestor?.parent;
5985 while (ancestor?.parent?.type === "UnaryExpression" || ancestor?.parent?.type === "NewExpression") {
5986 ancestor = ancestor.parent;
5987 }
5988 if (!ancestor) {
5989 replaceNode(exp, {
5990 type: "Error",
5991 message: "Partial placeholder . outside of call expression"
5992 });
5993 return;
5994 }
5995 } else {
5996 let child;
5997 ({ ancestor, child } = findAncestor(exp, (ancestor2, child2) => {
5998 const { type } = ancestor2;
5999 if (type === "IfStatement") {
6000 liftedIfs.add(ancestor2);
6001 }
6002 let m3;
6003 let m4;
6004 return type === "Call" || // Block, except for if/else blocks when condition already lifted
6005 type === "BlockStatement" && !((m3 = ancestor2.parent, typeof m3 === "object" && m3 != null && "type" in m3 && m3.type === "IfStatement") && liftedIfs.has(ancestor2.parent)) && !((m4 = ancestor2.parent, typeof m4 === "object" && m4 != null && "type" in m4 && m4.type === "ElseClause" && "parent" in m4 && typeof m4.parent === "object" && m4.parent != null && "type" in m4.parent && m4.parent.type === "IfStatement") && liftedIfs.has(ancestor2.parent.parent)) || type === "PipelineExpression" || // Declaration
6006 type === "Initializer" || // Right-hand side of assignment
6007 type === "AssignmentExpression" && findChildIndex(ancestor2, child2) === ancestor2.children.indexOf(ancestor2.expression) || type === "ReturnStatement" || type === "YieldExpression";
6008 }));
6009 switch (ancestor?.type) {
6010 case "Call": {
6011 const i = findChildIndex(ancestor.args, child);
6012 if (i >= 0) {
6013 ancestor.args[i] = maybeWrap(ancestor.args[i], ancestor);
6014 ancestor = ancestor.args[i];
6015 } else {
6016 ancestor = void 0;
6017 }
6018 ;
6019 break;
6020 }
6021 case "BlockStatement": {
6022 const i = findChildIndex(ancestor.expressions, child);
6023 if (i >= 0) {
6024 ancestor.expressions[i][1] = maybeWrap(ancestor.expressions[i][1], ancestor);
6025 ancestor = ancestor.expressions[i][1];
6026 } else {
6027 ancestor = void 0;
6028 }
6029 ;
6030 break;
6031 }
6032 case "PipelineExpression": {
6033 const i = findChildIndex(ancestor, child);
6034 if (i === 1) {
6035 ancestor = ancestor;
6036 } else if (i === 2) {
6037 const j = findChildIndex(ancestor.children[i], child);
6038 ancestor.children[i][j][3] = maybeWrap(ancestor.children[i][j][3], ancestor);
6039 ancestor = ancestor.children[i][j][3];
6040 } else {
6041 ancestor = void 0;
6042 }
6043 ;
6044 break;
6045 }
6046 case "AssignmentExpression":
6047 case "Initializer":
6048 case "ReturnStatement":
6049 case "YieldExpression": {
6050 const i = findChildIndex(ancestor, child);
6051 if (i >= 0 && ancestor.expression === ancestor.children[i]) {
6052 ancestor.expression = ancestor.children[i] = maybeWrap(ancestor.expression, ancestor);
6053 ancestor = ancestor.expression;
6054 } else {
6055 ancestor = void 0;
6056 }
6057 ;
6058 break;
6059 }
6060 }
6061 if (!ancestor) {
6062 replaceNode(exp, {
6063 type: "Error",
6064 message: "Ampersand placeholder & outside of block"
6065 });
6066 }
6067 }
6068 if (ancestor != null) {
6069 if (placeholderMap.has(ancestor)) {
6070 return placeholderMap.get(ancestor).push(exp);
6071 } else {
6072 return placeholderMap.set(ancestor, [exp]);
6073 }
6074 }
6075 ;
6076 return;
6077 });
6078 for (const [ancestor, placeholders] of placeholderMap) {
6079 let ref = makeRef("$");
6080 let typeSuffix;
6081 for (let i4 = 0, len3 = placeholders.length; i4 < len3; i4++) {
6082 const placeholder = placeholders[i4];
6083 typeSuffix ??= placeholder.typeSuffix;
6084 let ref12;
6085 replaceNode((ref12 = placeholder.children)[ref12.length - 1], ref);
6086 }
6087 const { parent } = ancestor;
6088 const body = maybeUnwrap(ancestor);
6089 let fnExp = makeAmpersandFunction({ ref, typeSuffix, body });
6090 let outer;
6091 switch (parent?.type) {
6092 case "Call": {
6093 outer = ancestor === parent.args[findChildIndex(parent.args, ancestor)];
6094 break;
6095 }
6096 case "BlockStatement": {
6097 outer = ancestor === parent.expressions[findChildIndex(parent.expressions, ancestor)][1];
6098 break;
6099 }
6100 case "PipelineExpression": {
6101 outer = ancestor === parent.children[2][findChildIndex(parent.children[2], ancestor)][3];
6102 break;
6103 }
6104 case "AssignmentExpression":
6105 case "Initializer":
6106 case "ReturnStatement":
6107 case "YieldExpression": {
6108 outer = ancestor === parent.expression;
6109 break;
6110 }
6111 }
6112 if (!outer) {
6113 fnExp = makeLeftHandSideExpression(fnExp);
6114 }
6115 replaceNode(ancestor, fnExp, parent);
6116 let ref13;
6117 if (ref13 = getTrimmingSpace(body)) {
6118 const ws = ref13;
6119 inplaceInsertTrimmingSpace(body, "");
6120 inplacePrepend(ws, fnExp);
6121 }
6122 }
6123 return;
6124}
6125function reorderBindingRestProperty(props) {
6126 const names = props.flatMap((p) => p.names);
6127 let restIndex = -1;
6128 let restCount = 0;
6129 props.forEach(({ type }, i) => {
6130 if (type === "BindingRestProperty") {
6131 if (restIndex < 0)
6132 restIndex = i;
6133 return restCount++;
6134 }
6135 ;
6136 return;
6137 });
6138 if (restCount === 0) {
6139 return {
6140 children: props,
6141 names
6142 };
6143 }
6144 let after = props.slice(restIndex + 1);
6145 let rest = props[restIndex];
6146 props = props.slice(0, restIndex);
6147 if (after.length) {
6148 const { delim: restDelim } = rest, lastAfterProp = after[after.length - 1], { delim: lastDelim, children: lastAfterChildren } = lastAfterProp;
6149 rest = {
6150 ...rest,
6151 delim: lastDelim,
6152 children: [...rest.children.slice(0, -1), lastDelim]
6153 };
6154 after = [
6155 ...after.slice(0, -1),
6156 {
6157 ...lastAfterProp,
6158 delim: restDelim,
6159 children: [...lastAfterChildren.slice(0, -1), restDelim]
6160 }
6161 ];
6162 }
6163 let ref14;
6164 if (Array.isArray(rest.delim) && (ref14 = rest.delim)[ref14.length - 1]?.token === ",") {
6165 rest.delim = rest.delim.slice(0, -1);
6166 rest.children = [...rest.children.slice(0, -1), rest.delim];
6167 }
6168 const children = [...props, ...after, rest];
6169 if (restCount > 1) {
6170 children.push({
6171 type: "Error",
6172 message: "Multiple rest properties in object pattern"
6173 });
6174 }
6175 return { children, names };
6176}
6177function replaceNodes(root, predicate, replacer) {
6178 if (!(root != null)) {
6179 return root;
6180 }
6181 const array = Array.isArray(root) ? root : root.children;
6182 if (!array) {
6183 if (predicate(root)) {
6184 return replacer(root, root);
6185 } else {
6186 return root;
6187 }
6188 }
6189 for (let i5 = 0, len4 = array.length; i5 < len4; i5++) {
6190 const i = i5;
6191 const node = array[i5];
6192 if (!(node != null)) {
6193 return;
6194 }
6195 if (predicate(node)) {
6196 array[i] = replacer(node, root);
6197 } else {
6198 replaceNodes(node, predicate, replacer);
6199 }
6200 }
6201 return root;
6202}
6203function replaceNodesRecursive(root, predicate, replacer) {
6204 if (!(root != null)) {
6205 return root;
6206 }
6207 const array = Array.isArray(root) ? root : root.children;
6208 if (!array) {
6209 if (predicate(root)) {
6210 return replacer(root, root);
6211 } else {
6212 return root;
6213 }
6214 }
6215 for (let i6 = 0, len5 = array.length; i6 < len5; i6++) {
6216 const i = i6;
6217 const node = array[i6];
6218 if (!(node != null)) {
6219 continue;
6220 }
6221 if (predicate(node)) {
6222 const ret = replacer(node, root);
6223 replaceNodesRecursive(ret, predicate, replacer);
6224 array[i] = ret;
6225 } else {
6226 replaceNodesRecursive(node, predicate, replacer);
6227 }
6228 }
6229 return root;
6230}
6231function typeOfJSX(node, config2) {
6232 switch (node.type) {
6233 case "JSXElement":
6234 return typeOfJSXElement(node, config2);
6235 case "JSXFragment":
6236 return typeOfJSXFragment(node, config2);
6237 }
6238}
6239function typeOfJSXElement(node, config2) {
6240 if (config2.solid) {
6241 if (config2.server && !config2.client) {
6242 return ["string"];
6243 }
6244 let { tag } = node;
6245 const clientType = tag[0] === tag[0].toLowerCase() ? [getHelperRef("IntrinsicElements"), '<"', tag, '">'] : ["ReturnType<typeof ", tag, ">"];
6246 if (config2.server) {
6247 return ["string", " | ", clientType];
6248 } else {
6249 return clientType;
6250 }
6251 }
6252 ;
6253 return;
6254}
6255function typeOfJSXFragment(node, config2) {
6256 if (config2.solid) {
6257 let type = [];
6258 let lastType;
6259 for (let child of node.jsxChildren) {
6260 switch (child.type) {
6261 case "JSXText":
6262 if (lastType !== "JSXText") {
6263 type.push("string");
6264 }
6265 break;
6266 case "JSXElement":
6267 type.push(typeOfJSXElement(child, config2));
6268 break;
6269 case "JSXFragment":
6270 type.push(...typeOfJSXFragment(child, config2));
6271 break;
6272 case "JSXChildExpression":
6273 if (child.expression) {
6274 type.push(["typeof ", child.expression]);
6275 }
6276 break;
6277 default:
6278 throw new Error(`unknown child in JSXFragment: ${JSON.stringify(child)}`);
6279 }
6280 lastType = child.type;
6281 }
6282 if (type.length === 1) {
6283 return type[0];
6284 } else {
6285 type = type.flatMap((t) => [t, ", "]);
6286 type.pop();
6287 return ["[", type, "]"];
6288 }
6289 }
6290 ;
6291 return;
6292}
6293
6294// source/parser.hera
6295var grammar = {
6296 Program,
6297 TopLevelStatements,
6298 NestedTopLevelStatements,
6299 TopLevelSingleLineStatements,
6300 TopLevelStatement,
6301 ExtendedCommaExpression,
6302 ExtendedExpression,
6303 SingleLineExtendedExpression,
6304 NonPipelineExtendedExpression,
6305 NonAssignmentExtendedExpression,
6306 NestedNonAssignmentExtendedExpression,
6307 ExpressionizedStatementWithTrailingCallExpressions,
6308 ExpressionizedStatement,
6309 StatementExpression,
6310 CommaExpression,
6311 Arguments,
6312 ImplicitArguments,
6313 ExplicitArguments,
6314 ApplicationStart,
6315 ForbiddenImplicitCalls,
6316 ReservedBinary,
6317 ArgumentsWithTrailingMemberExpressions,
6318 TrailingMemberExpressions,
6319 AllowedTrailingMemberExpressions,
6320 TrailingCallExpressions,
6321 AllowedTrailingCallExpressions,
6322 CommaDelimiter,
6323 ArgumentList,
6324 NonPipelineArgumentList,
6325 NestedArgumentList,
6326 NestedArgument,
6327 SingleLineArgumentExpressions,
6328 ArgumentPart,
6329 NonPipelineArgumentPart,
6330 BinaryOpExpression,
6331 BinaryOpRHS,
6332 IsLike,
6333 WRHS,
6334 SingleLineBinaryOpRHS,
6335 RHS,
6336 UnaryExpression,
6337 UnaryWithoutParenthesizedAssignment,
6338 UnaryBody,
6339 UnaryWithoutParenthesizedAssignmentBody,
6340 ParenthesizedAssignment,
6341 UnaryPostfix,
6342 TypePostfix,
6343 Tuple,
6344 NWTypePostfix,
6345 UpdateExpression,
6346 UpdateExpressionSymbol,
6347 AssignmentExpression,
6348 NonPipelineAssignmentExpression,
6349 SingleLineAssignmentExpression,
6350 NonPipelineSingleLineAssignmentExpression,
6351 AssignmentExpressionTail,
6352 NonPipelineAssignmentExpressionTail,
6353 ActualAssignment,
6354 NonPipelineActualAssignment,
6355 YieldExpression,
6356 ArrowFunction,
6357 FatArrow,
6358 FatArrowToken,
6359 TrailingDeclaration,
6360 TrailingPipe,
6361 FatArrowBody,
6362 ConditionalExpression,
6363 TernaryRest,
6364 NestedTernaryRest,
6365 ShortCircuitExpression,
6366 PipelineExpression,
6367 PipelineHeadItem,
6368 PipelineTailItem,
6369 PrimaryExpression,
6370 ParenthesizedExpression,
6371 Placeholder,
6372 PlaceholderTypeSuffix,
6373 ClassDeclaration,
6374 ClassExpression,
6375 ClassBinding,
6376 ClassHeritage,
6377 ExtendsClause,
6378 WithClause,
6379 ExtendsToken,
6380 ExtendsShorthand,
6381 NotExtendsToken,
6382 OmittedNegation,
6383 ExtendsTarget,
6384 ImplementsClause,
6385 ImplementsToken,
6386 ImplementsShorthand,
6387 ImplementsTarget,
6388 ClassBody,
6389 NestedClassElements,
6390 NestedClassElement,
6391 ClassElement,
6392 ClassElementDefinition,
6393 ClassSignature,
6394 ClassSignatureBody,
6395 NestedClassSignatureElements,
6396 NestedClassSignatureElement,
6397 ClassSignatureElement,
6398 AccessModifier,
6399 FieldDefinition,
6400 ThisLiteral,
6401 HashThis,
6402 LengthShorthand,
6403 AtThis,
6404 LeftHandSideExpression,
6405 CallExpression,
6406 CallExpressionRest,
6407 OptionalShorthand,
6408 OptionalDot,
6409 NonNullAssertion,
6410 MemberExpression,
6411 ActualMemberExpression,
6412 MemberBase,
6413 MemberExpressionRest,
6414 MemberExpressionRestBody,
6415 MemberBracketContent,
6416 SliceParameters,
6417 AccessStart,
6418 ImplicitAccessStart,
6419 PropertyAccessModifier,
6420 PropertyAccess,
6421 PropertyGlob,
6422 PropertyBind,
6423 SuperProperty,
6424 MetaProperty,
6425 ReturnValue,
6426 AfterReturnShorthand,
6427 Parameters,
6428 ShortArrowParameters,
6429 ArrowParameters,
6430 NonEmptyParameters,
6431 ParameterList,
6432 NestedParameterList,
6433 NestedParameter,
6434 Parameter,
6435 FunctionRestParameter,
6436 ParameterElement,
6437 ParameterElementDelimiter,
6438 BindingIdentifier,
6439 NWBindingIdentifier,
6440 AtIdentifierRef,
6441 PinPattern,
6442 BindingPattern,
6443 ObjectBindingPattern,
6444 ObjectBindingPatternContent,
6445 BindingPropertyList,
6446 ArrayBindingPattern,
6447 ArrayBindingPatternContent,
6448 BindingElementList,
6449 NestedBindingElementList,
6450 Elision,
6451 NestedBindingProperties,
6452 NestedBindingPropertyList,
6453 BindingProperty,
6454 BindingRestProperty,
6455 NestedBindingElements,
6456 BindingElement,
6457 BindingRestElement,
6458 EmptyBindingPattern,
6459 FunctionDeclaration,
6460 FunctionSignature,
6461 FunctionExpression,
6462 OperatorDeclaration,
6463 OperatorSignature,
6464 OperatorBehavior,
6465 OperatorPrecedence,
6466 OperatorAssociativity,
6467 ThinArrowFunction,
6468 Arrow,
6469 ExplicitBlock,
6470 ImplicitNestedBlock,
6471 Block,
6472 BareNestedBlock,
6473 BareBlock,
6474 ThenClause,
6475 BracedThenClause,
6476 BracedOrEmptyBlock,
6477 NoCommaBracedOrEmptyBlock,
6478 NoPostfixBracedOrEmptyBlock,
6479 EmptyBlock,
6480 BlockOrEmptyStatement,
6481 BlockOrEmpty,
6482 EmptyStatementBareBlock,
6483 EmptyBareBlock,
6484 NoBlock,
6485 BracedBlock,
6486 NoPostfixBracedBlock,
6487 NoCommaBracedBlock,
6488 NonSingleBracedBlock,
6489 DeclarationOrStatement,
6490 SingleLineStatements,
6491 PostfixedSingleLineStatements,
6492 PostfixedSingleLineNoCommaStatements,
6493 BracedContent,
6494 NestedBlockStatements,
6495 NestedBlockStatement,
6496 BlockStatementPart,
6497 Literal,
6498 LiteralContent,
6499 NullLiteral,
6500 BooleanLiteral,
6501 _BooleanLiteral,
6502 CoffeeScriptBooleanLiteral,
6503 Identifier,
6504 IdentifierName,
6505 IdentifierReference,
6506 UpcomingAssignment,
6507 ArrayLiteral,
6508 _ArrayLiteral,
6509 RangeExpression,
6510 ArrayLiteralContent,
6511 NestedElementList,
6512 NestedElement,
6513 ArrayElementDelimiter,
6514 ElementListWithIndentedApplicationForbidden,
6515 ElementList,
6516 ElementListRest,
6517 ArrayElementExpression,
6518 ObjectLiteral,
6519 BracedObjectLiteral,
6520 BracedObjectLiteralContent,
6521 NestedImplicitObjectLiteral,
6522 NestedImplicitPropertyDefinitions,
6523 NestedImplicitPropertyDefinition,
6524 NestedPropertyDefinitions,
6525 NestedPropertyDefinition,
6526 ImplicitObjectLiteral,
6527 ImplicitObjectPropertyDelimiter,
6528 InlineObjectLiteral,
6529 InlineObjectPropertyDelimiter,
6530 ObjectPropertyDelimiter,
6531 PropertyDefinition,
6532 NamedProperty,
6533 SnugNamedProperty,
6534 PropertyName,
6535 ComputedPropertyName,
6536 Decorator,
6537 Decorators,
6538 MethodDefinition,
6539 MethodModifier,
6540 MethodSignature,
6541 ClassElementName,
6542 PrivateIdentifier,
6543 WAssignmentOp,
6544 AssignmentOp,
6545 OperatorAssignmentOp,
6546 AssignmentOpSymbol,
6547 CoffeeWordAssignmentOp,
6548 NotDedentedBinaryOp,
6549 IdentifierBinaryOp,
6550 BinaryOp,
6551 _BinaryOp,
6552 BinaryOpSymbol,
6553 ActualIn,
6554 CoffeeOfOp,
6555 NotOp,
6556 Xor,
6557 Xnor,
6558 UnaryOp,
6559 AwaitOp,
6560 ModuleItem,
6561 StatementListItem,
6562 PostfixedStatement,
6563 NoCommaStatementListItem,
6564 PostfixedNoCommaStatement,
6565 PostfixedExpression,
6566 PostfixedCommaExpression,
6567 NonPipelinePostfixedExpression,
6568 PostfixStatement,
6569 _PostfixStatement,
6570 Statement,
6571 NoCommaStatement,
6572 EmptyStatement,
6573 InsertEmptyStatement,
6574 BlockStatement,
6575 LabelledStatement,
6576 Label,
6577 LabelledItem,
6578 IfStatement,
6579 ElseClause,
6580 IfClause,
6581 IterationStatement,
6582 _IterationStatement,
6583 IterationExpression,
6584 LoopStatement,
6585 LoopClause,
6586 DoWhileStatement,
6587 DoStatement,
6588 ComptimeStatement,
6589 WhileStatement,
6590 WhileClause,
6591 ForStatement,
6592 ForClause,
6593 ForStatementControl,
6594 WhenCondition,
6595 CoffeeForStatementParameters,
6596 CoffeeForIndex,
6597 CoffeeForDeclaration,
6598 ForStatementParameters,
6599 ForRangeParameters,
6600 ForInOfDeclaration,
6601 ForDeclaration,
6602 ForBinding,
6603 SwitchStatement,
6604 EmptyCondition,
6605 CaseBlock,
6606 NestedCaseClauses,
6607 NestedCaseClause,
6608 CaseClause,
6609 PatternExpressionList,
6610 PatternExpression,
6611 CaseExpressionList,
6612 CaseExpression,
6613 ImpliedColon,
6614 IgnoreColon,
6615 TryStatement,
6616 CatchClause,
6617 CatchBind,
6618 FinallyClause,
6619 CatchParameter,
6620 Condition,
6621 DeclarationCondition,
6622 ExpressionWithIndentedApplicationForbidden,
6623 SingleLineExpressionWithIndentedApplicationForbidden,
6624 ExpressionWithObjectApplicationForbidden,
6625 LeftHandSideExpressionWithObjectApplicationForbidden,
6626 ForbidClassImplicitCall,
6627 AllowClassImplicitCall,
6628 RestoreClassImplicitCall,
6629 ClassImplicitCallForbidden,
6630 ForbidBracedApplication,
6631 AllowBracedApplication,
6632 RestoreBracedApplication,
6633 BracedApplicationAllowed,
6634 ForbidIndentedApplication,
6635 AllowIndentedApplication,
6636 RestoreIndentedApplication,
6637 IndentedApplicationAllowed,
6638 ForbidTrailingMemberProperty,
6639 AllowTrailingMemberProperty,
6640 RestoreTrailingMemberProperty,
6641 TrailingMemberPropertyAllowed,
6642 AllowNewlineBinaryOp,
6643 ForbidNewlineBinaryOp,
6644 RestoreNewlineBinaryOp,
6645 NewlineBinaryOpAllowed,
6646 AllowAll,
6647 RestoreAll,
6648 CommaExpressionStatement,
6649 ExpressionStatement,
6650 KeywordStatement,
6651 DebuggerStatement,
6652 ThrowStatement,
6653 Break,
6654 Continue,
6655 Debugger,
6656 MaybeNestedNonPipelineExtendedExpression,
6657 MaybeNestedPostfixedExpression,
6658 MaybeNestedExtendedExpression,
6659 MaybeParenNestedExtendedExpression,
6660 ImportDeclaration,
6661 ImpliedImport,
6662 ImportClause,
6663 NameSpaceImport,
6664 NamedImports,
6665 FromClause,
6666 ImportAssertion,
6667 TypeAndImportSpecifier,
6668 ImportSpecifier,
6669 OperatorImportSpecifier,
6670 ImportAsToken,
6671 ModuleExportName,
6672 ModuleSpecifier,
6673 UnprocessedModuleSpecifier,
6674 UnquotedSpecifier,
6675 ImportedBinding,
6676 ExportDeclaration,
6677 ExportVarDec,
6678 ExportFromClause,
6679 TypeAndNamedExports,
6680 NamedExports,
6681 ExportSpecifier,
6682 ImplicitExportSpecifier,
6683 Declaration,
6684 HoistableDeclaration,
6685 LexicalDeclaration,
6686 ConstAssignment,
6687 LetAssignment,
6688 TypeAssignment,
6689 LexicalBinding,
6690 Initializer,
6691 VariableStatement,
6692 VariableDeclarationList,
6693 NumericLiteral,
6694 NumericLiteralKind,
6695 DecimalBigIntegerLiteral,
6696 DecimalLiteral,
6697 ExponentPart,
6698 BinaryIntegerLiteral,
6699 OctalIntegerLiteral,
6700 HexIntegerLiteral,
6701 IntegerLiteral,
6702 IntegerLiteralKind,
6703 DecimalIntegerLiteral,
6704 StringLiteral,
6705 DoubleStringCharacters,
6706 SingleStringCharacters,
6707 TripleDoubleStringCharacters,
6708 TripleSingleStringCharacters,
6709 CoffeeStringSubstitution,
6710 CoffeeInterpolatedDoubleQuotedString,
6711 CoffeeDoubleQuotedStringCharacters,
6712 RegularExpressionLiteral,
6713 RegularExpressionClass,
6714 RegularExpressionClassCharacters,
6715 HeregexLiteral,
6716 HeregexBody,
6717 HeregexPart,
6718 HeregexComment,
6719 RegularExpressionBody,
6720 RegExpPart,
6721 RegExpCharacter,
6722 RegularExpressionFlags,
6723 TemplateLiteral,
6724 _TemplateLiteral,
6725 TemplateSubstitution,
6726 TemplateCharacters,
6727 TemplateBlockCharacters,
6728 ReservedWord,
6729 Comment,
6730 _Comment,
6731 SingleLineComment,
6732 JSSingleLineComment,
6733 MultiLineComment,
6734 JSMultiLineComment,
6735 CoffeeSingleLineComment,
6736 CoffeeMultiLineComment,
6737 CoffeeHereCommentStart,
6738 InlineComment,
6739 RestOfLine,
6740 TrailingComment,
6741 _,
6742 NonNewlineWhitespace,
6743 Trimmed_,
6744 __,
6745 Whitespace,
6746 ExpressionDelimiter,
6747 SimpleStatementDelimiter,
6748 StatementDelimiter,
6749 SemicolonDelimiter,
6750 NonIdContinue,
6751 Loc,
6752 Abstract,
6753 Ampersand,
6754 As,
6755 At,
6756 AtAt,
6757 Async,
6758 Await,
6759 Backtick,
6760 By,
6761 Caret,
6762 Case,
6763 Catch,
6764 Class,
6765 CloseAngleBracket,
6766 CloseBrace,
6767 CloseBracket,
6768 CloseParen,
6769 CoffeeSubstitutionStart,
6770 Colon,
6771 Comma,
6772 Comptime,
6773 ConstructorShorthand,
6774 Declare,
6775 Default,
6776 Delete,
6777 Do,
6778 Dot,
6779 DotDot,
6780 DotDotDot,
6781 DoubleColon,
6782 DoubleQuote,
6783 Each,
6784 Else,
6785 Equals,
6786 ExclamationPoint,
6787 Export,
6788 Extends,
6789 Finally,
6790 For,
6791 From,
6792 Function: Function2,
6793 GetOrSet,
6794 Hash,
6795 If,
6796 Import,
6797 In,
6798 Infer,
6799 LetOrConst,
6800 Const,
6801 Is,
6802 LetOrConstOrVar,
6803 Like,
6804 Loop,
6805 New,
6806 Not,
6807 Of,
6808 OpenAngleBracket,
6809 OpenBrace,
6810 OpenBracket,
6811 OpenParen,
6812 Operator,
6813 Override,
6814 Own,
6815 Public,
6816 Private,
6817 Protected,
6818 Pipe,
6819 QuestionMark,
6820 Readonly,
6821 Return,
6822 Satisfies,
6823 Semicolon,
6824 SingleQuote,
6825 Star,
6826 Static,
6827 SubstitutionStart,
6828 Super,
6829 Switch,
6830 Target,
6831 Then,
6832 This,
6833 Throw,
6834 TripleDoubleQuote,
6835 TripleSingleQuote,
6836 TripleSlash,
6837 TripleTick,
6838 Try,
6839 Typeof,
6840 Undefined,
6841 Unless,
6842 Until,
6843 Using,
6844 Var,
6845 Void,
6846 When,
6847 While,
6848 With,
6849 Yield,
6850 JSXImplicitFragment,
6851 JSXTag,
6852 _JSXTag,
6853 JSXElement,
6854 JSXSelfClosingElement,
6855 PushJSXOpeningElement,
6856 PopJSXStack,
6857 JSXOpeningElement,
6858 JSXOptionalClosingElement,
6859 JSXClosingElement,
6860 JSXFragment,
6861 PushJSXOpeningFragment,
6862 JSXOptionalClosingFragment,
6863 JSXClosingFragment,
6864 JSXElementName,
6865 JSXIdentifierName,
6866 JSXAttributes,
6867 JSXAttribute,
6868 JSXAttributeSpace,
6869 JSXShorthandString,
6870 JSXAttributeName,
6871 JSXAttributeInitializer,
6872 JSXAttributeValue,
6873 InlineJSXAttributeValue,
6874 InlineJSXBinaryOpRHS,
6875 InlineJSXUnaryExpression,
6876 InlineJSXUnaryOp,
6877 InlineJSXUnaryPostfix,
6878 InlineJSXUpdateExpression,
6879 InlineJSXCallExpression,
6880 InlineJSXCallExpressionRest,
6881 InlineJSXMemberExpression,
6882 InlineJSXMemberExpressionRest,
6883 InlineJSXPrimaryExpression,
6884 JSXMixedChildren,
6885 JSXChildren,
6886 JSXNestedChildren,
6887 JSXEOS,
6888 JSXNested,
6889 JSXChild,
6890 JSXComment,
6891 JSXCommentContent,
6892 JSXText,
6893 JSXChildExpression,
6894 IndentedJSXChildExpression,
6895 NestedJSXChildExpression,
6896 UsingDeclaration,
6897 UsingBinding,
6898 UsingJSModeError,
6899 TypeDeclaration,
6900 TypeDeclarationRest,
6901 TypeAliasDeclaration,
6902 InterfaceDeclaration,
6903 NamespaceDeclaration,
6904 OptionalEquals,
6905 TypeLexicalDeclaration,
6906 TypeDeclarationBinding,
6907 InterfaceExtendsClause,
6908 InterfaceExtendsTarget,
6909 TypeKeyword,
6910 Enum,
6911 Interface,
6912 Global,
6913 Module,
6914 Namespace,
6915 InterfaceBlock,
6916 NestedInterfaceBlock,
6917 NestedInterfaceProperties,
6918 NestedInterfaceProperty,
6919 InterfaceProperty,
6920 BasicInterfaceProperty,
6921 InterfacePropertyDelimiter,
6922 ModuleBlock,
6923 NestedModuleItems,
6924 NestedModuleItem,
6925 DeclareBlock,
6926 NestedDeclareElements,
6927 NestedDeclareElement,
6928 DeclareElement,
6929 EnumDeclaration,
6930 EnumBlock,
6931 NestedEnumProperties,
6932 NestedEnumPropertyLine,
6933 EnumProperty,
6934 TypeProperty,
6935 TypeIndexSignature,
6936 TypeIndex,
6937 TypeSuffix,
6938 MaybeNestedType,
6939 ReturnTypeSuffix,
6940 ReturnType,
6941 TypePredicate,
6942 Type,
6943 TypeBinary,
6944 TypeUnary,
6945 TypeUnarySuffix,
6946 TypeUnaryOp,
6947 TypeIndexedAccess,
6948 UnknownAlias,
6949 TypePrimary,
6950 ImportType,
6951 TypeTuple,
6952 TypeList,
6953 TypeElement,
6954 NestedTypeList,
6955 NestedType,
6956 TypeConditional,
6957 TypeCondition,
6958 TypeIfThenElse,
6959 TypeElse,
6960 TypeBlock,
6961 TypeTemplateSubstitution,
6962 TypeTemplateLiteral,
6963 CoffeeStringTypeSubstitution,
6964 CoffeeInterpolatedDoubleQuotedTypeLiteral,
6965 TypeLiteral,
6966 InlineInterfaceLiteral,
6967 InlineBasicInterfaceProperty,
6968 InlineInterfacePropertyDelimiter,
6969 TypeBinaryOp,
6970 TypeFunction,
6971 TypeArrowFunction,
6972 TypeArguments,
6973 TypeArgument,
6974 TypeArgumentDelimiter,
6975 TypeParameters,
6976 TypeParameter,
6977 TypeConstraint,
6978 TypeInitializer,
6979 TypeParameterDelimiter,
6980 ThisType,
6981 Shebang,
6982 CivetPrologue,
6983 CivetPrologueContent,
6984 CivetOption,
6985 UnknownPrologue,
6986 TripleSlashDirective,
6987 DirectivePrologue,
6988 PrologueString,
6989 EOS,
6990 EOL,
6991 DebugHere,
6992 InsertColon,
6993 InsertSemicolon,
6994 InsertOpenParen,
6995 InsertCloseParen,
6996 InsertOpenBrace,
6997 InsertInlineOpenBrace,
6998 InsertCloseBrace,
6999 InsertOpenBracket,
7000 InsertCloseBracket,
7001 InsertComma,
7002 InsertSpaceEquals,
7003 InsertConst,
7004 InsertLet,
7005 InsertReadonly,
7006 InsertNewline,
7007 InsertIndent,
7008 InsertSpace,
7009 InsertDot,
7010 InsertBreak,
7011 InsertVar,
7012 InsertType,
7013 CoffeeBinaryExistentialEnabled,
7014 CoffeeBooleansEnabled,
7015 CoffeeClassesEnabled,
7016 CoffeeCommentEnabled,
7017 CoffeeDoEnabled,
7018 CoffeeForLoopsEnabled,
7019 CoffeeInterpolationEnabled,
7020 CoffeeIsntEnabled,
7021 CoffeeJSXEnabled,
7022 CoffeeLineContinuationEnabled,
7023 CoffeeNotEnabled,
7024 CoffeeOfEnabled,
7025 CoffeePrototypeEnabled,
7026 ObjectIsEnabled,
7027 Reset,
7028 Init,
7029 Prologue,
7030 ProloguePrefix,
7031 Indent,
7032 TrackIndented,
7033 PushIndent,
7034 PopIndent,
7035 Nested,
7036 IndentedFurther,
7037 IndentedAtLeast,
7038 NotDedented,
7039 Dedented
7040};
7041var $L0 = (0, import_lib3.$L)("");
7042var $L1 = (0, import_lib3.$L)("{");
7043var $L2 = (0, import_lib3.$L)("/ ");
7044var $L3 = (0, import_lib3.$L)("=");
7045var $L4 = (0, import_lib3.$L)("(");
7046var $L5 = (0, import_lib3.$L)("... ");
7047var $L6 = (0, import_lib3.$L)("?");
7048var $L7 = (0, import_lib3.$L)(".");
7049var $L8 = (0, import_lib3.$L)("tuple");
7050var $L9 = (0, import_lib3.$L)("++");
7051var $L10 = (0, import_lib3.$L)("--");
7052var $L11 = (0, import_lib3.$L)("\u29FA");
7053var $L12 = (0, import_lib3.$L)("\u2014");
7054var $L13 = (0, import_lib3.$L)("=>");
7055var $L14 = (0, import_lib3.$L)("\u21D2");
7056var $L15 = (0, import_lib3.$L)("import");
7057var $L16 = (0, import_lib3.$L)(":");
7058var $L17 = (0, import_lib3.$L)(",");
7059var $L18 = (0, import_lib3.$L)(" ");
7060var $L19 = (0, import_lib3.$L)("<");
7061var $L20 = (0, import_lib3.$L)("implements");
7062var $L21 = (0, import_lib3.$L)("<:");
7063var $L22 = (0, import_lib3.$L)("^");
7064var $L23 = (0, import_lib3.$L)("-");
7065var $L24 = (0, import_lib3.$L)("import.meta");
7066var $L25 = (0, import_lib3.$L)("return.value");
7067var $L26 = (0, import_lib3.$L)("tighter");
7068var $L27 = (0, import_lib3.$L)("looser");
7069var $L28 = (0, import_lib3.$L)("same");
7070var $L29 = (0, import_lib3.$L)("left");
7071var $L30 = (0, import_lib3.$L)("right");
7072var $L31 = (0, import_lib3.$L)("non");
7073var $L32 = (0, import_lib3.$L)("relational");
7074var $L33 = (0, import_lib3.$L)("arguments");
7075var $L34 = (0, import_lib3.$L)("->");
7076var $L35 = (0, import_lib3.$L)("\u2192");
7077var $L36 = (0, import_lib3.$L)("}");
7078var $L37 = (0, import_lib3.$L)("null");
7079var $L38 = (0, import_lib3.$L)("true");
7080var $L39 = (0, import_lib3.$L)("false");
7081var $L40 = (0, import_lib3.$L)("yes");
7082var $L41 = (0, import_lib3.$L)("on");
7083var $L42 = (0, import_lib3.$L)("no");
7084var $L43 = (0, import_lib3.$L)("off");
7085var $L44 = (0, import_lib3.$L)(">");
7086var $L45 = (0, import_lib3.$L)("]");
7087var $L46 = (0, import_lib3.$L)("**=");
7088var $L47 = (0, import_lib3.$L)("*=");
7089var $L48 = (0, import_lib3.$L)("/=");
7090var $L49 = (0, import_lib3.$L)("%=");
7091var $L50 = (0, import_lib3.$L)("+=");
7092var $L51 = (0, import_lib3.$L)("-=");
7093var $L52 = (0, import_lib3.$L)("<<=");
7094var $L53 = (0, import_lib3.$L)(">>>=");
7095var $L54 = (0, import_lib3.$L)(">>=");
7096var $L55 = (0, import_lib3.$L)("&&=");
7097var $L56 = (0, import_lib3.$L)("&=");
7098var $L57 = (0, import_lib3.$L)("^=");
7099var $L58 = (0, import_lib3.$L)("||=");
7100var $L59 = (0, import_lib3.$L)("|=");
7101var $L60 = (0, import_lib3.$L)("??=");
7102var $L61 = (0, import_lib3.$L)("?=");
7103var $L62 = (0, import_lib3.$L)("and=");
7104var $L63 = (0, import_lib3.$L)("or=");
7105var $L64 = (0, import_lib3.$L)("*");
7106var $L65 = (0, import_lib3.$L)("**");
7107var $L66 = (0, import_lib3.$L)("/");
7108var $L67 = (0, import_lib3.$L)("%%");
7109var $L68 = (0, import_lib3.$L)("%");
7110var $L69 = (0, import_lib3.$L)("+");
7111var $L70 = (0, import_lib3.$L)("<=");
7112var $L71 = (0, import_lib3.$L)("\u2264");
7113var $L72 = (0, import_lib3.$L)(">=");
7114var $L73 = (0, import_lib3.$L)("\u2265");
7115var $L74 = (0, import_lib3.$L)("<?");
7116var $L75 = (0, import_lib3.$L)("!<?");
7117var $L76 = (0, import_lib3.$L)("<<");
7118var $L77 = (0, import_lib3.$L)("\xAB");
7119var $L78 = (0, import_lib3.$L)(">>>");
7120var $L79 = (0, import_lib3.$L)("\u22D9");
7121var $L80 = (0, import_lib3.$L)(">>");
7122var $L81 = (0, import_lib3.$L)("\xBB");
7123var $L82 = (0, import_lib3.$L)("!==");
7124var $L83 = (0, import_lib3.$L)("\u2262");
7125var $L84 = (0, import_lib3.$L)("!=");
7126var $L85 = (0, import_lib3.$L)("\u2260");
7127var $L86 = (0, import_lib3.$L)("isnt");
7128var $L87 = (0, import_lib3.$L)("===");
7129var $L88 = (0, import_lib3.$L)("\u2263");
7130var $L89 = (0, import_lib3.$L)("\u2A76");
7131var $L90 = (0, import_lib3.$L)("==");
7132var $L91 = (0, import_lib3.$L)("\u2261");
7133var $L92 = (0, import_lib3.$L)("\u2A75");
7134var $L93 = (0, import_lib3.$L)("and");
7135var $L94 = (0, import_lib3.$L)("&&");
7136var $L95 = (0, import_lib3.$L)("or");
7137var $L96 = (0, import_lib3.$L)("||");
7138var $L97 = (0, import_lib3.$L)("\u2016");
7139var $L98 = (0, import_lib3.$L)("^^");
7140var $L99 = (0, import_lib3.$L)("xor");
7141var $L100 = (0, import_lib3.$L)("xnor");
7142var $L101 = (0, import_lib3.$L)("??");
7143var $L102 = (0, import_lib3.$L)("\u2047");
7144var $L103 = (0, import_lib3.$L)("instanceof");
7145var $L104 = (0, import_lib3.$L)("\u2208");
7146var $L105 = (0, import_lib3.$L)("\u220B");
7147var $L106 = (0, import_lib3.$L)("\u220C");
7148var $L107 = (0, import_lib3.$L)("\u2209");
7149var $L108 = (0, import_lib3.$L)("&");
7150var $L109 = (0, import_lib3.$L)("|");
7151var $L110 = (0, import_lib3.$L)("$:");
7152var $L111 = (0, import_lib3.$L)(";");
7153var $L112 = (0, import_lib3.$L)("break");
7154var $L113 = (0, import_lib3.$L)("continue");
7155var $L114 = (0, import_lib3.$L)("debugger");
7156var $L115 = (0, import_lib3.$L)("require");
7157var $L116 = (0, import_lib3.$L)("with");
7158var $L117 = (0, import_lib3.$L)("assert");
7159var $L118 = (0, import_lib3.$L)(":=");
7160var $L119 = (0, import_lib3.$L)("\u2254");
7161var $L120 = (0, import_lib3.$L)(".=");
7162var $L121 = (0, import_lib3.$L)("::=");
7163var $L122 = (0, import_lib3.$L)("/*");
7164var $L123 = (0, import_lib3.$L)("*/");
7165var $L124 = (0, import_lib3.$L)("\\");
7166var $L125 = (0, import_lib3.$L)(")");
7167var $L126 = (0, import_lib3.$L)("abstract");
7168var $L127 = (0, import_lib3.$L)("as");
7169var $L128 = (0, import_lib3.$L)("@");
7170var $L129 = (0, import_lib3.$L)("@@");
7171var $L130 = (0, import_lib3.$L)("async");
7172var $L131 = (0, import_lib3.$L)("await");
7173var $L132 = (0, import_lib3.$L)("`");
7174var $L133 = (0, import_lib3.$L)("by");
7175var $L134 = (0, import_lib3.$L)("case");
7176var $L135 = (0, import_lib3.$L)("catch");
7177var $L136 = (0, import_lib3.$L)("class");
7178var $L137 = (0, import_lib3.$L)("\#{");
7179var $L138 = (0, import_lib3.$L)("comptime");
7180var $L139 = (0, import_lib3.$L)("declare");
7181var $L140 = (0, import_lib3.$L)("default");
7182var $L141 = (0, import_lib3.$L)("delete");
7183var $L142 = (0, import_lib3.$L)("do");
7184var $L143 = (0, import_lib3.$L)("..");
7185var $L144 = (0, import_lib3.$L)("\\u2025");
7186var $L145 = (0, import_lib3.$L)("...");
7187var $L146 = (0, import_lib3.$L)("\\u2026");
7188var $L147 = (0, import_lib3.$L)("::");
7189var $L148 = (0, import_lib3.$L)('\"');
7190var $L149 = (0, import_lib3.$L)("each");
7191var $L150 = (0, import_lib3.$L)("else");
7192var $L151 = (0, import_lib3.$L)("!");
7193var $L152 = (0, import_lib3.$L)("export");
7194var $L153 = (0, import_lib3.$L)("extends");
7195var $L154 = (0, import_lib3.$L)("finally");
7196var $L155 = (0, import_lib3.$L)("for");
7197var $L156 = (0, import_lib3.$L)("from");
7198var $L157 = (0, import_lib3.$L)("function");
7199var $L158 = (0, import_lib3.$L)("get");
7200var $L159 = (0, import_lib3.$L)("set");
7201var $L160 = (0, import_lib3.$L)("\#");
7202var $L161 = (0, import_lib3.$L)("if");
7203var $L162 = (0, import_lib3.$L)("in");
7204var $L163 = (0, import_lib3.$L)("infer");
7205var $L164 = (0, import_lib3.$L)("let");
7206var $L165 = (0, import_lib3.$L)("const");
7207var $L166 = (0, import_lib3.$L)("is");
7208var $L167 = (0, import_lib3.$L)("like");
7209var $L168 = (0, import_lib3.$L)("loop");
7210var $L169 = (0, import_lib3.$L)("new");
7211var $L170 = (0, import_lib3.$L)("not");
7212var $L171 = (0, import_lib3.$L)("of");
7213var $L172 = (0, import_lib3.$L)("[");
7214var $L173 = (0, import_lib3.$L)("operator");
7215var $L174 = (0, import_lib3.$L)("override");
7216var $L175 = (0, import_lib3.$L)("own");
7217var $L176 = (0, import_lib3.$L)("public");
7218var $L177 = (0, import_lib3.$L)("private");
7219var $L178 = (0, import_lib3.$L)("protected");
7220var $L179 = (0, import_lib3.$L)("||>");
7221var $L180 = (0, import_lib3.$L)("|\u25B7");
7222var $L181 = (0, import_lib3.$L)("|>=");
7223var $L182 = (0, import_lib3.$L)("\u25B7=");
7224var $L183 = (0, import_lib3.$L)("|>");
7225var $L184 = (0, import_lib3.$L)("\u25B7");
7226var $L185 = (0, import_lib3.$L)("readonly");
7227var $L186 = (0, import_lib3.$L)("return");
7228var $L187 = (0, import_lib3.$L)("satisfies");
7229var $L188 = (0, import_lib3.$L)("'");
7230var $L189 = (0, import_lib3.$L)("static");
7231var $L190 = (0, import_lib3.$L)("${");
7232var $L191 = (0, import_lib3.$L)("super");
7233var $L192 = (0, import_lib3.$L)("switch");
7234var $L193 = (0, import_lib3.$L)("target");
7235var $L194 = (0, import_lib3.$L)("then");
7236var $L195 = (0, import_lib3.$L)("this");
7237var $L196 = (0, import_lib3.$L)("throw");
7238var $L197 = (0, import_lib3.$L)('"""');
7239var $L198 = (0, import_lib3.$L)("'''");
7240var $L199 = (0, import_lib3.$L)("///");
7241var $L200 = (0, import_lib3.$L)("```");
7242var $L201 = (0, import_lib3.$L)("try");
7243var $L202 = (0, import_lib3.$L)("typeof");
7244var $L203 = (0, import_lib3.$L)("undefined");
7245var $L204 = (0, import_lib3.$L)("unless");
7246var $L205 = (0, import_lib3.$L)("until");
7247var $L206 = (0, import_lib3.$L)("using");
7248var $L207 = (0, import_lib3.$L)("var");
7249var $L208 = (0, import_lib3.$L)("void");
7250var $L209 = (0, import_lib3.$L)("when");
7251var $L210 = (0, import_lib3.$L)("while");
7252var $L211 = (0, import_lib3.$L)("yield");
7253var $L212 = (0, import_lib3.$L)("/>");
7254var $L213 = (0, import_lib3.$L)("</");
7255var $L214 = (0, import_lib3.$L)("<>");
7256var $L215 = (0, import_lib3.$L)("</>");
7257var $L216 = (0, import_lib3.$L)("<!--");
7258var $L217 = (0, import_lib3.$L)("-->");
7259var $L218 = (0, import_lib3.$L)("type");
7260var $L219 = (0, import_lib3.$L)("enum");
7261var $L220 = (0, import_lib3.$L)("interface");
7262var $L221 = (0, import_lib3.$L)("global");
7263var $L222 = (0, import_lib3.$L)("module");
7264var $L223 = (0, import_lib3.$L)("namespace");
7265var $L224 = (0, import_lib3.$L)("asserts");
7266var $L225 = (0, import_lib3.$L)("keyof");
7267var $L226 = (0, import_lib3.$L)("???");
7268var $L227 = (0, import_lib3.$L)("unique");
7269var $L228 = (0, import_lib3.$L)("symbol");
7270var $L229 = (0, import_lib3.$L)("[]");
7271var $L230 = (0, import_lib3.$L)("civet");
7272var $R0 = (0, import_lib3.$R)(new RegExp("(?=async|debugger|if|unless|comptime|do|for|loop|until|while|switch|throw|try)", "suy"));
7273var $R1 = (0, import_lib3.$R)(new RegExp("&(?=\\s)", "suy"));
7274var $R2 = (0, import_lib3.$R)(new RegExp("(as|of|satisfies|then|when|implements|xor|xnor)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
7275var $R3 = (0, import_lib3.$R)(new RegExp("[0-9]", "suy"));
7276var $R4 = (0, import_lib3.$R)(new RegExp("(?!\\p{ID_Start}|[_$0-9(\\[{])", "suy"));
7277var $R5 = (0, import_lib3.$R)(new RegExp("[ \\t]", "suy"));
7278var $R6 = (0, import_lib3.$R)(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$.#])", "suy"));
7279var $R7 = (0, import_lib3.$R)(new RegExp("[&=]", "suy"));
7280var $R8 = (0, import_lib3.$R)(new RegExp("(?=['\"`])", "suy"));
7281var $R9 = (0, import_lib3.$R)(new RegExp("(?=[\\/?])", "suy"));
7282var $R10 = (0, import_lib3.$R)(new RegExp("(?=[\\/\\[{?.!@#'\u2019:])", "suy"));
7283var $R11 = (0, import_lib3.$R)(new RegExp("[)}]", "suy"));
7284var $R12 = (0, import_lib3.$R)(new RegExp("[+-]", "suy"));
7285var $R13 = (0, import_lib3.$R)(new RegExp("\\+\\+|--|[\\+\\-&]\\S", "suy"));
7286var $R14 = (0, import_lib3.$R)(new RegExp(`(?=[0-9.'"tfyno])`, "suy"));
7287var $R15 = (0, import_lib3.$R)(new RegExp("(?=true|false|yes|no|on|off)", "suy"));
7288var $R16 = (0, import_lib3.$R)(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
7289var $R17 = (0, import_lib3.$R)(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
7290var $R18 = (0, import_lib3.$R)(new RegExp("(?=\\[)", "suy"));
7291var $R19 = (0, import_lib3.$R)(new RegExp("[!+-]?", "suy"));
7292var $R20 = (0, import_lib3.$R)(new RegExp("(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2A76\u2A75\u2016\u2047&|*\\/!?%<>\u29FA+-])", "suy"));
7293var $R21 = (0, import_lib3.$R)(new RegExp("!\\^\\^?", "suy"));
7294var $R22 = (0, import_lib3.$R)(new RegExp("(?!\\+\\+|--)[!~+-](?!\\s)", "suy"));
7295var $R23 = (0, import_lib3.$R)(new RegExp("[:.]", "suy"));
7296var $R24 = (0, import_lib3.$R)(new RegExp("(?=for|if|loop|unless|until|while)", "suy"));
7297var $R25 = (0, import_lib3.$R)(new RegExp("(?=loop|comptime|do|for|until|while)", "suy"));
7298var $R26 = (0, import_lib3.$R)(new RegExp("(?=[\\s\\),])", "suy"));
7299var $R27 = (0, import_lib3.$R)(new RegExp('[^;"\\s]+', "suy"));
7300var $R28 = (0, import_lib3.$R)(new RegExp("(?=[0-9.])", "suy"));
7301var $R29 = (0, import_lib3.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
7302var $R30 = (0, import_lib3.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))", "suy"));
7303var $R31 = (0, import_lib3.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?", "suy"));
7304var $R32 = (0, import_lib3.$R)(new RegExp("(?:\\.[0-9](?:_[0-9]|[0-9])*)", "suy"));
7305var $R33 = (0, import_lib3.$R)(new RegExp("(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)", "suy"));
7306var $R34 = (0, import_lib3.$R)(new RegExp("0[bB][01](?:[01]|_[01])*n?", "suy"));
7307var $R35 = (0, import_lib3.$R)(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*n?", "suy"));
7308var $R36 = (0, import_lib3.$R)(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?", "suy"));
7309var $R37 = (0, import_lib3.$R)(new RegExp("(?=[0-9])", "suy"));
7310var $R38 = (0, import_lib3.$R)(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)", "suy"));
7311var $R39 = (0, import_lib3.$R)(new RegExp('(?:\\\\.|[^"])*', "suy"));
7312var $R40 = (0, import_lib3.$R)(new RegExp("(?:\\\\.|[^'])*", "suy"));
7313var $R41 = (0, import_lib3.$R)(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
7314var $R42 = (0, import_lib3.$R)(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
7315var $R43 = (0, import_lib3.$R)(new RegExp('(?:\\\\.|#(?!\\{)|[^"\#])+', "suy"));
7316var $R44 = (0, import_lib3.$R)(new RegExp("(?:\\\\.|[^\\]])*", "suy"));
7317var $R45 = (0, import_lib3.$R)(new RegExp("(?:\\\\.)", "suy"));
7318var $R46 = (0, import_lib3.$R)(new RegExp("[\\s]+", "suy"));
7319var $R47 = (0, import_lib3.$R)(new RegExp("\\/(?!\\/\\/)", "suy"));
7320var $R48 = (0, import_lib3.$R)(new RegExp("[^[\\/\\s#\\\\]+", "suy"));
7321var $R49 = (0, import_lib3.$R)(new RegExp("[*\\/\\r\\n]", "suy"));
7322var $R50 = (0, import_lib3.$R)(new RegExp("(?:\\\\.|[^[\\/\\r\\n])+", "suy"));
7323var $R51 = (0, import_lib3.$R)(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
7324var $R52 = (0, import_lib3.$R)(new RegExp("(?=[`'\"])", "suy"));
7325var $R53 = (0, import_lib3.$R)(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
7326var $R54 = (0, import_lib3.$R)(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
7327var $R55 = (0, import_lib3.$R)(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
7328var $R56 = (0, import_lib3.$R)(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
7329var $R57 = (0, import_lib3.$R)(new RegExp("(?:by)(?!\\p{ID_Continue})", "suy"));
7330var $R58 = (0, import_lib3.$R)(new RegExp("(?:of)(?!\\p{ID_Continue})", "suy"));
7331var $R59 = (0, import_lib3.$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"));
7332var $R60 = (0, import_lib3.$R)(new RegExp("(?=\\/|#)", "suy"));
7333var $R61 = (0, import_lib3.$R)(new RegExp("\\/\\/(?!\\/)[^\\r\\n]*", "suy"));
7334var $R62 = (0, import_lib3.$R)(new RegExp(".", "suy"));
7335var $R63 = (0, import_lib3.$R)(new RegExp("\#(?!##(?!#))([^\\r\\n]*)", "suy"));
7336var $R64 = (0, import_lib3.$R)(new RegExp("[^]*?###", "suy"));
7337var $R65 = (0, import_lib3.$R)(new RegExp("\###(?!#)", "suy"));
7338var $R66 = (0, import_lib3.$R)(new RegExp("\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\/", "suy"));
7339var $R67 = (0, import_lib3.$R)(new RegExp("(?=[ \\t\\/\\\\])", "suy"));
7340var $R68 = (0, import_lib3.$R)(new RegExp("[ \\t]+", "suy"));
7341var $R69 = (0, import_lib3.$R)(new RegExp("(?=\\s|\\/|#)", "suy"));
7342var $R70 = (0, import_lib3.$R)(new RegExp("(?!\\p{ID_Continue})", "suy"));
7343var $R71 = (0, import_lib3.$R)(new RegExp("[=:]", "suy"));
7344var $R72 = (0, import_lib3.$R)(new RegExp("['\u2019]s", "suy"));
7345var $R73 = (0, import_lib3.$R)(new RegExp("\\s", "suy"));
7346var $R74 = (0, import_lib3.$R)(new RegExp("(?=[<])", "suy"));
7347var $R75 = (0, import_lib3.$R)(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
7348var $R76 = (0, import_lib3.$R)(new RegExp("[!+-]", "suy"));
7349var $R77 = (0, import_lib3.$R)(new RegExp("[\\s>]|\\/>", "suy"));
7350var $R78 = (0, import_lib3.$R)(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
7351var $R79 = (0, import_lib3.$R)(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
7352var $R80 = (0, import_lib3.$R)(new RegExp("[<>]", "suy"));
7353var $R81 = (0, import_lib3.$R)(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
7354var $R82 = (0, import_lib3.$R)(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
7355var $R83 = (0, import_lib3.$R)(new RegExp("[^{}<>\\r\\n]+", "suy"));
7356var $R84 = (0, import_lib3.$R)(new RegExp("[+-]?", "suy"));
7357var $R85 = (0, import_lib3.$R)(new RegExp("(?=if|unless)", "suy"));
7358var $R86 = (0, import_lib3.$R)(new RegExp("\#![^\\r\\n]*", "suy"));
7359var $R87 = (0, import_lib3.$R)(new RegExp("[\\t ]*", "suy"));
7360var $R88 = (0, import_lib3.$R)(new RegExp("[ \\t]*", "suy"));
7361var $R89 = (0, import_lib3.$R)(new RegExp("[\\s]*", "suy"));
7362var $R90 = (0, import_lib3.$R)(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
7363var $R91 = (0, import_lib3.$R)(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
7364var $R92 = (0, import_lib3.$R)(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
7365var $R93 = (0, import_lib3.$R)(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
7366var $R94 = (0, import_lib3.$R)(new RegExp("[^]*", "suy"));
7367var Program$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Reset, Init, (0, import_lib3.$E)(EOS), TopLevelStatements, __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
7368 var reset = $1;
7369 var init = $2;
7370 var ws1 = $3;
7371 var statements = $4;
7372 var ws2 = $5;
7373 const program = {
7374 type: "BlockStatement",
7375 expressions: statements,
7376 children: [reset, init, ws1, statements, ws2],
7377 bare: true,
7378 root: true
7379 };
7380 processProgram(program);
7381 return program;
7382});
7383function Program(ctx, state2) {
7384 return (0, import_lib3.$EVENT)(ctx, state2, "Program", Program$0);
7385}
7386var TopLevelStatements$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(TrackIndented, TopLevelSingleLineStatements, (0, import_lib3.$Q)(NestedTopLevelStatements), PopIndent), function($skip, $loc, $0, $1, $2, $3, $4) {
7387 var indent = $1;
7388 var first = $2;
7389 var rest = $3;
7390 return [
7391 [indent, ...first[0]],
7392 ...first.slice(1).map((s) => ["", ...s]),
7393 ...rest.flat()
7394 ];
7395});
7396var TopLevelStatements$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(TopLevelSingleLineStatements, (0, import_lib3.$Q)(NestedTopLevelStatements)), function($skip, $loc, $0, $1, $2) {
7397 var first = $1;
7398 var rest = $2;
7399 return [
7400 ...first.map((s) => ["", ...s]),
7401 ...rest.flat()
7402 ];
7403});
7404var TopLevelStatements$2 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L0, 'TopLevelStatements ""'), function(value) {
7405 return [];
7406});
7407var TopLevelStatements$$ = [TopLevelStatements$0, TopLevelStatements$1, TopLevelStatements$2];
7408function TopLevelStatements(ctx, state2) {
7409 return (0, import_lib3.$EVENT_C)(ctx, state2, "TopLevelStatements", TopLevelStatements$$);
7410}
7411var NestedTopLevelStatements$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, TopLevelSingleLineStatements), function($skip, $loc, $0, $1, $2) {
7412 var nested = $1;
7413 var statements = $2;
7414 return [
7415 [nested, ...statements[0]],
7416 ...statements.slice(1).map((s) => ["", ...s])
7417 ];
7418});
7419function NestedTopLevelStatements(ctx, state2) {
7420 return (0, import_lib3.$EVENT)(ctx, state2, "NestedTopLevelStatements", NestedTopLevelStatements$0);
7421}
7422var TopLevelSingleLineStatements$0 = (0, import_lib3.$P)(TopLevelStatement);
7423function TopLevelSingleLineStatements(ctx, state2) {
7424 return (0, import_lib3.$EVENT)(ctx, state2, "TopLevelSingleLineStatements", TopLevelSingleLineStatements$0);
7425}
7426var TopLevelStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), (0, import_lib3.$E)(_), ModuleItem, StatementDelimiter), function($skip, $loc, $0, $1, $2, $3, $4) {
7427 var ws = $2;
7428 var statement = $3;
7429 var delimiter = $4;
7430 statement = prepend(ws, statement);
7431 return [statement, delimiter];
7432});
7433function TopLevelStatement(ctx, state2) {
7434 return (0, import_lib3.$EVENT)(ctx, state2, "TopLevelStatement", TopLevelStatement$0);
7435}
7436var ExtendedCommaExpression$0 = NonAssignmentExtendedExpression;
7437var ExtendedCommaExpression$1 = CommaExpression;
7438var ExtendedCommaExpression$$ = [ExtendedCommaExpression$0, ExtendedCommaExpression$1];
7439function ExtendedCommaExpression(ctx, state2) {
7440 return (0, import_lib3.$EVENT_C)(ctx, state2, "ExtendedCommaExpression", ExtendedCommaExpression$$);
7441}
7442var ExtendedExpression$0 = NonAssignmentExtendedExpression;
7443var ExtendedExpression$1 = AssignmentExpression;
7444var ExtendedExpression$$ = [ExtendedExpression$0, ExtendedExpression$1];
7445function ExtendedExpression(ctx, state2) {
7446 return (0, import_lib3.$EVENT_C)(ctx, state2, "ExtendedExpression", ExtendedExpression$$);
7447}
7448var SingleLineExtendedExpression$0 = NonAssignmentExtendedExpression;
7449var SingleLineExtendedExpression$1 = SingleLineAssignmentExpression;
7450var SingleLineExtendedExpression$$ = [SingleLineExtendedExpression$0, SingleLineExtendedExpression$1];
7451function SingleLineExtendedExpression(ctx, state2) {
7452 return (0, import_lib3.$EVENT_C)(ctx, state2, "SingleLineExtendedExpression", SingleLineExtendedExpression$$);
7453}
7454var NonPipelineExtendedExpression$0 = NonAssignmentExtendedExpression;
7455var NonPipelineExtendedExpression$1 = NonPipelineAssignmentExpression;
7456var NonPipelineExtendedExpression$$ = [NonPipelineExtendedExpression$0, NonPipelineExtendedExpression$1];
7457function NonPipelineExtendedExpression(ctx, state2) {
7458 return (0, import_lib3.$EVENT_C)(ctx, state2, "NonPipelineExtendedExpression", NonPipelineExtendedExpression$$);
7459}
7460var NonAssignmentExtendedExpression$0 = NestedNonAssignmentExtendedExpression;
7461var NonAssignmentExtendedExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), ExpressionizedStatementWithTrailingCallExpressions), function($skip, $loc, $0, $1, $2) {
7462 return prepend($1, $2);
7463});
7464var NonAssignmentExtendedExpression$$ = [NonAssignmentExtendedExpression$0, NonAssignmentExtendedExpression$1];
7465function NonAssignmentExtendedExpression(ctx, state2) {
7466 return (0, import_lib3.$EVENT_C)(ctx, state2, "NonAssignmentExtendedExpression", NonAssignmentExtendedExpression$$);
7467}
7468var NestedNonAssignmentExtendedExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Y)(EOS), PushIndent, (0, import_lib3.$E)((0, import_lib3.$S)(Nested, ExpressionizedStatementWithTrailingCallExpressions)), PopIndent, (0, import_lib3.$E)(AllowedTrailingCallExpressions)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
7469 var expression = $3;
7470 var trailing = $5;
7471 if (!expression)
7472 return $skip;
7473 if (!trailing)
7474 return expression;
7475 return {
7476 type: "CallExpression",
7477 children: [expression, ...trailing.flat()]
7478 };
7479});
7480function NestedNonAssignmentExtendedExpression(ctx, state2) {
7481 return (0, import_lib3.$EVENT)(ctx, state2, "NestedNonAssignmentExtendedExpression", NestedNonAssignmentExtendedExpression$0);
7482}
7483var ExpressionizedStatementWithTrailingCallExpressions$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ExpressionizedStatement, (0, import_lib3.$E)(AllowedTrailingCallExpressions)), function($skip, $loc, $0, $1, $2) {
7484 if (!$2)
7485 return $1;
7486 return {
7487 type: "CallExpression",
7488 children: [
7489 makeLeftHandSideExpression($1),
7490 $2
7491 ]
7492 };
7493});
7494function ExpressionizedStatementWithTrailingCallExpressions(ctx, state2) {
7495 return (0, import_lib3.$EVENT)(ctx, state2, "ExpressionizedStatementWithTrailingCallExpressions", ExpressionizedStatementWithTrailingCallExpressions$0);
7496}
7497var ExpressionizedStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R0, "ExpressionizedStatement /(?=async|debugger|if|unless|comptime|do|for|loop|until|while|switch|throw|try)/"), StatementExpression), function($skip, $loc, $0, $1, $2) {
7498 var statement = $2;
7499 return {
7500 type: "StatementExpression",
7501 statement,
7502 children: [statement]
7503 };
7504});
7505function ExpressionizedStatement(ctx, state2) {
7506 return (0, import_lib3.$EVENT)(ctx, state2, "ExpressionizedStatement", ExpressionizedStatement$0);
7507}
7508var StatementExpression$0 = DebuggerStatement;
7509var StatementExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(IfStatement), function($skip, $loc, $0, $1) {
7510 if (!$1.else && $1.then.implicit)
7511 return $skip;
7512 return $1;
7513});
7514var StatementExpression$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(IterationExpression), function($skip, $loc, $0, $1) {
7515 if ($1.block.implicit && $1.subtype !== "DoStatement" && $1.subtype !== "ComptimeStatement") {
7516 return $skip;
7517 }
7518 return $1;
7519});
7520var StatementExpression$3 = SwitchStatement;
7521var StatementExpression$4 = ThrowStatement;
7522var StatementExpression$5 = TryStatement;
7523var StatementExpression$$ = [StatementExpression$0, StatementExpression$1, StatementExpression$2, StatementExpression$3, StatementExpression$4, StatementExpression$5];
7524function StatementExpression(ctx, state2) {
7525 return (0, import_lib3.$EVENT_C)(ctx, state2, "StatementExpression", StatementExpression$$);
7526}
7527var CommaExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(AssignmentExpression, (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, AssignmentExpression))), function($skip, $loc, $0, $1, $2) {
7528 if ($2.length == 0)
7529 return $1;
7530 return $0;
7531});
7532function CommaExpression(ctx, state2) {
7533 return (0, import_lib3.$EVENT)(ctx, state2, "CommaExpression", CommaExpression$0);
7534}
7535var Arguments$0 = ExplicitArguments;
7536var Arguments$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForbidTrailingMemberProperty, (0, import_lib3.$E)(ImplicitArguments), RestoreTrailingMemberProperty), function($skip, $loc, $0, $1, $2, $3) {
7537 var args = $2;
7538 if (args)
7539 return args;
7540 return $skip;
7541});
7542var Arguments$$ = [Arguments$0, Arguments$1];
7543function Arguments(ctx, state2) {
7544 return (0, import_lib3.$EVENT_C)(ctx, state2, "Arguments", Arguments$$);
7545}
7546var ImplicitArguments$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ApplicationStart, InsertOpenParen, (0, import_lib3.$E)(Trimmed_), NonPipelineArgumentList, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
7547 var open = $2;
7548 var ws = $3;
7549 var args = $4;
7550 var close = $5;
7551 if (skipImplicitArguments(args))
7552 return $skip;
7553 return {
7554 type: "Call",
7555 args,
7556 children: [open, ws, args, close]
7557 };
7558});
7559function ImplicitArguments(ctx, state2) {
7560 return (0, import_lib3.$EVENT)(ctx, state2, "ImplicitArguments", ImplicitArguments$0);
7561}
7562var ExplicitArguments$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenParen, (0, import_lib3.$E)((0, import_lib3.$S)(ArgumentList, (0, import_lib3.$E)((0, import_lib3.$S)(__, Comma)))), __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4) {
7563 var open = $1;
7564 var args = $2;
7565 var ws = $3;
7566 var close = $4;
7567 if (args) {
7568 if (args[1]) {
7569 args = [...args[0], args[1]];
7570 } else {
7571 args = args[0];
7572 }
7573 } else {
7574 args = [];
7575 }
7576 return {
7577 type: "Call",
7578 args,
7579 children: [open, args, ws, close]
7580 };
7581});
7582function ExplicitArguments(ctx, state2) {
7583 return (0, import_lib3.$EVENT)(ctx, state2, "ExplicitArguments", ExplicitArguments$0);
7584}
7585var ApplicationStart$0 = (0, import_lib3.$S)(IndentedApplicationAllowed, (0, import_lib3.$Y)((0, import_lib3.$S)(IndentedFurther, (0, import_lib3.$N)(IdentifierBinaryOp), (0, import_lib3.$N)(AccessStart))));
7586var ApplicationStart$1 = (0, import_lib3.$S)((0, import_lib3.$N)(EOS), (0, import_lib3.$Y)((0, import_lib3.$S)(_, (0, import_lib3.$C)(BracedApplicationAllowed, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($L1, 'ApplicationStart "{"'))), (0, import_lib3.$N)(ForbiddenImplicitCalls))));
7587var ApplicationStart$$ = [ApplicationStart$0, ApplicationStart$1];
7588function ApplicationStart(ctx, state2) {
7589 return (0, import_lib3.$EVENT_C)(ctx, state2, "ApplicationStart", ApplicationStart$$);
7590}
7591var ForbiddenImplicitCalls$0 = ReservedBinary;
7592var ForbiddenImplicitCalls$1 = (0, import_lib3.$EXPECT)($L2, 'ForbiddenImplicitCalls "/ "');
7593var ForbiddenImplicitCalls$2 = (0, import_lib3.$S)((0, import_lib3.$Y)((0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R1, "ForbiddenImplicitCalls /&(?=\\s)/")), (0, import_lib3.$N)((0, import_lib3.$S)(NotDedented, (0, import_lib3.$C)(Ampersand, ReservedBinary))), (0, import_lib3.$C)(IndentedFurther, (0, import_lib3.$N)(EOS)))), BinaryOpRHS);
7594var ForbiddenImplicitCalls$3 = (0, import_lib3.$S)(ClassImplicitCallForbidden, (0, import_lib3.$C)(Class, AtAt));
7595var ForbiddenImplicitCalls$4 = (0, import_lib3.$S)(Identifier, (0, import_lib3.$EXPECT)($L3, 'ForbiddenImplicitCalls "="'), Whitespace);
7596var ForbiddenImplicitCalls$5 = (0, import_lib3.$TS)((0, import_lib3.$S)(Identifier, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($L4, 'ForbiddenImplicitCalls "("'))), function($skip, $loc, $0, $1, $2) {
7597 var id = $1;
7598 if (state.operators.has(id.name))
7599 return $0;
7600 return $skip;
7601});
7602var ForbiddenImplicitCalls$6 = (0, import_lib3.$TS)((0, import_lib3.$S)(OmittedNegation, (0, import_lib3.$E)(_), Identifier), function($skip, $loc, $0, $1, $2, $3) {
7603 var id = $3;
7604 if (state.operators.has(id.name))
7605 return $0;
7606 return $skip;
7607});
7608var ForbiddenImplicitCalls$7 = (0, import_lib3.$S)(PostfixStatement, NoBlock);
7609var ForbiddenImplicitCalls$8 = (0, import_lib3.$EXPECT)($L5, 'ForbiddenImplicitCalls "... "');
7610var ForbiddenImplicitCalls$$ = [ForbiddenImplicitCalls$0, ForbiddenImplicitCalls$1, ForbiddenImplicitCalls$2, ForbiddenImplicitCalls$3, ForbiddenImplicitCalls$4, ForbiddenImplicitCalls$5, ForbiddenImplicitCalls$6, ForbiddenImplicitCalls$7, ForbiddenImplicitCalls$8];
7611function ForbiddenImplicitCalls(ctx, state2) {
7612 return (0, import_lib3.$EVENT_C)(ctx, state2, "ForbiddenImplicitCalls", ForbiddenImplicitCalls$$);
7613}
7614var ReservedBinary$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R2, "ReservedBinary /(as|of|satisfies|then|when|implements|xor|xnor)(?!\\p{ID_Continue}|[\\u200C\\u200D$])/"));
7615function ReservedBinary(ctx, state2) {
7616 return (0, import_lib3.$EVENT)(ctx, state2, "ReservedBinary", ReservedBinary$0);
7617}
7618var ArgumentsWithTrailingMemberExpressions$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Arguments, AllowedTrailingMemberExpressions), function($skip, $loc, $0, $1, $2) {
7619 var args = $1;
7620 var trailing = $2;
7621 return [args, ...trailing];
7622});
7623function ArgumentsWithTrailingMemberExpressions(ctx, state2) {
7624 return (0, import_lib3.$EVENT)(ctx, state2, "ArgumentsWithTrailingMemberExpressions", ArgumentsWithTrailingMemberExpressions$0);
7625}
7626var TrailingMemberExpressions$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)(MemberExpressionRest), (0, import_lib3.$Q)((0, import_lib3.$S)(IndentedAtLeast, (0, import_lib3.$Y)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$EXPECT)($L6, 'TrailingMemberExpressions "?"')), (0, import_lib3.$EXPECT)($L7, 'TrailingMemberExpressions "."'), (0, import_lib3.$N)((0, import_lib3.$EXPECT)($R3, "TrailingMemberExpressions /[0-9]/")))), MemberExpressionRest))), function($skip, $loc, $0, $1, $2) {
7627 return $1.concat($2.map(([ws, , memberExpressionRest]) => {
7628 if (Array.isArray(memberExpressionRest)) {
7629 return [ws, ...memberExpressionRest];
7630 }
7631 return {
7632 ...memberExpressionRest,
7633 children: [ws, ...memberExpressionRest.children]
7634 };
7635 }));
7636});
7637function TrailingMemberExpressions(ctx, state2) {
7638 return (0, import_lib3.$EVENT)(ctx, state2, "TrailingMemberExpressions", TrailingMemberExpressions$0);
7639}
7640var AllowedTrailingMemberExpressions$0 = (0, import_lib3.$T)((0, import_lib3.$S)(TrailingMemberPropertyAllowed, TrailingMemberExpressions), function(value) {
7641 return value[1];
7642});
7643var AllowedTrailingMemberExpressions$1 = (0, import_lib3.$Q)(MemberExpressionRest);
7644var AllowedTrailingMemberExpressions$$ = [AllowedTrailingMemberExpressions$0, AllowedTrailingMemberExpressions$1];
7645function AllowedTrailingMemberExpressions(ctx, state2) {
7646 return (0, import_lib3.$EVENT_C)(ctx, state2, "AllowedTrailingMemberExpressions", AllowedTrailingMemberExpressions$$);
7647}
7648var TrailingCallExpressions$0 = (0, import_lib3.$P)((0, import_lib3.$S)(IndentedAtLeast, (0, import_lib3.$Y)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$EXPECT)($L6, 'TrailingCallExpressions "?"')), (0, import_lib3.$EXPECT)($L7, 'TrailingCallExpressions "."'), (0, import_lib3.$N)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R3, "TrailingCallExpressions /[0-9]/"))))), (0, import_lib3.$P)(CallExpressionRest)));
7649function TrailingCallExpressions(ctx, state2) {
7650 return (0, import_lib3.$EVENT)(ctx, state2, "TrailingCallExpressions", TrailingCallExpressions$0);
7651}
7652var AllowedTrailingCallExpressions$0 = (0, import_lib3.$T)((0, import_lib3.$S)(TrailingMemberPropertyAllowed, TrailingCallExpressions), function(value) {
7653 return value[1];
7654});
7655function AllowedTrailingCallExpressions(ctx, state2) {
7656 return (0, import_lib3.$EVENT)(ctx, state2, "AllowedTrailingCallExpressions", AllowedTrailingCallExpressions$0);
7657}
7658var CommaDelimiter$0 = (0, import_lib3.$S)(NotDedented, Comma);
7659function CommaDelimiter(ctx, state2) {
7660 return (0, import_lib3.$EVENT)(ctx, state2, "CommaDelimiter", CommaDelimiter$0);
7661}
7662var ArgumentList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ArgumentPart, (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$N)(EOS), (0, import_lib3.$E)(_), ArgumentPart)), (0, import_lib3.$P)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$C)(NestedImplicitObjectLiteral, NestedArgumentList)))), function($skip, $loc, $0, $1, $2, $3) {
7663 return [
7664 $1,
7665 ...$2.flatMap(([comma, eos, ws, arg]) => [comma, prepend(ws, arg)]),
7666 ...$3.flatMap(
7667 ([comma, args]) => Array.isArray(args) ? [comma, ...args] : [comma, args]
7668 )
7669 ];
7670});
7671var ArgumentList$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(NestedImplicitObjectLiteral), function($skip, $loc, $0, $1) {
7672 return [insertTrimmingSpace($1, "")];
7673});
7674var ArgumentList$2 = NestedArgumentList;
7675var ArgumentList$3 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), ArgumentPart, (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$E)(_), ArgumentPart))), function($skip, $loc, $0, $1, $2, $3) {
7676 return [
7677 prepend($1, $2),
7678 ...$3.flatMap(([comma, ws, arg]) => [comma, prepend(ws, arg)])
7679 ];
7680});
7681var ArgumentList$$ = [ArgumentList$0, ArgumentList$1, ArgumentList$2, ArgumentList$3];
7682function ArgumentList(ctx, state2) {
7683 return (0, import_lib3.$EVENT_C)(ctx, state2, "ArgumentList", ArgumentList$$);
7684}
7685var NonPipelineArgumentList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), NonPipelineArgumentPart, (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$N)(EOS), (0, import_lib3.$E)(_), NonPipelineArgumentPart)), (0, import_lib3.$P)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$C)(NestedImplicitObjectLiteral, NestedArgumentList)))), function($skip, $loc, $0, $1, $2, $3, $4) {
7686 return [
7687 $2,
7688 ...$3.flatMap(([comma, eos, ws, arg]) => [comma, prepend(ws, arg)]),
7689 ...$4.flatMap(
7690 ([comma, args]) => Array.isArray(args) ? [comma, ...args] : [comma, args]
7691 )
7692 ];
7693});
7694var NonPipelineArgumentList$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(NestedImplicitObjectLiteral, (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$C)(NestedImplicitObjectLiteral, NestedArgumentList)))), function($skip, $loc, $0, $1, $2) {
7695 return [
7696 insertTrimmingSpace($1, ""),
7697 ...$2.flatMap(
7698 ([comma, args]) => Array.isArray(args) ? [comma, ...args] : [comma, args]
7699 )
7700 ];
7701});
7702var NonPipelineArgumentList$2 = NestedArgumentList;
7703var NonPipelineArgumentList$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(NonPipelineArgumentPart, (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$E)(_), NonPipelineArgumentPart))), function($skip, $loc, $0, $1, $2) {
7704 return [
7705 $1,
7706 ...$2.flatMap(([comma, ws, arg]) => [comma, prepend(ws, arg)])
7707 ];
7708});
7709var NonPipelineArgumentList$$ = [NonPipelineArgumentList$0, NonPipelineArgumentList$1, NonPipelineArgumentList$2, NonPipelineArgumentList$3];
7710function NonPipelineArgumentList(ctx, state2) {
7711 return (0, import_lib3.$EVENT_C)(ctx, state2, "NonPipelineArgumentList", NonPipelineArgumentList$$);
7712}
7713var NestedArgumentList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedArgument), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
7714 var args = $2;
7715 if (!args.length)
7716 return $skip;
7717 return args.flat();
7718});
7719function NestedArgumentList(ctx, state2) {
7720 return (0, import_lib3.$EVENT)(ctx, state2, "NestedArgumentList", NestedArgumentList$0);
7721}
7722var NestedArgument$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, SingleLineArgumentExpressions, ParameterElementDelimiter), function($skip, $loc, $0, $1, $2, $3) {
7723 var indent = $1;
7724 var args = $2;
7725 var comma = $3;
7726 let [arg0, ...rest] = args;
7727 arg0 = [indent, ...arg0];
7728 return [arg0, ...rest, comma];
7729});
7730function NestedArgument(ctx, state2) {
7731 return (0, import_lib3.$EVENT)(ctx, state2, "NestedArgument", NestedArgument$0);
7732}
7733var SingleLineArgumentExpressions$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), ArgumentPart), (0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), Comma), (0, import_lib3.$S)((0, import_lib3.$E)(_), ArgumentPart)))), function($skip, $loc, $0, $1, $2) {
7734 return [$1, ...$2.flat()];
7735});
7736function SingleLineArgumentExpressions(ctx, state2) {
7737 return (0, import_lib3.$EVENT)(ctx, state2, "SingleLineArgumentExpressions", SingleLineArgumentExpressions$0);
7738}
7739var ArgumentPart$0 = (0, import_lib3.$S)(DotDotDot, ExtendedExpression);
7740var ArgumentPart$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(ExtendedExpression, (0, import_lib3.$E)(DotDotDot)), function($skip, $loc, $0, $1, $2) {
7741 if ($2) {
7742 return [$2, $1];
7743 }
7744 return $1;
7745});
7746var ArgumentPart$$ = [ArgumentPart$0, ArgumentPart$1];
7747function ArgumentPart(ctx, state2) {
7748 return (0, import_lib3.$EVENT_C)(ctx, state2, "ArgumentPart", ArgumentPart$$);
7749}
7750var NonPipelineArgumentPart$0 = (0, import_lib3.$S)(DotDotDot, NonPipelineExtendedExpression);
7751var NonPipelineArgumentPart$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(NonPipelineExtendedExpression, (0, import_lib3.$E)(DotDotDot)), function($skip, $loc, $0, $1, $2) {
7752 if ($2) {
7753 return [$2, $1];
7754 }
7755 return $1;
7756});
7757var NonPipelineArgumentPart$$ = [NonPipelineArgumentPart$0, NonPipelineArgumentPart$1];
7758function NonPipelineArgumentPart(ctx, state2) {
7759 return (0, import_lib3.$EVENT_C)(ctx, state2, "NonPipelineArgumentPart", NonPipelineArgumentPart$$);
7760}
7761var BinaryOpExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(UnaryExpression, (0, import_lib3.$Q)(BinaryOpRHS)), function($skip, $loc, $0, $1, $2) {
7762 if (!$2.length)
7763 return $1;
7764 return processBinaryOpExpression($0);
7765});
7766function BinaryOpExpression(ctx, state2) {
7767 return (0, import_lib3.$EVENT)(ctx, state2, "BinaryOpExpression", BinaryOpExpression$0);
7768}
7769var BinaryOpRHS$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(NotDedented, IsLike, (0, import_lib3.$E)(_), PatternExpressionList), function($skip, $loc, $0, $1, $2, $3, $4) {
7770 var ws1 = $1;
7771 var op = $2;
7772 var ws2 = $3;
7773 var patterns = $4;
7774 return [ws1, op, ws2, patterns];
7775});
7776var BinaryOpRHS$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(BinaryOp, RHS), function($skip, $loc, $0, $1, $2) {
7777 var op = $1;
7778 var rhs = $2;
7779 return [[], op, [], rhs];
7780});
7781var BinaryOpRHS$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(NewlineBinaryOpAllowed, NotDedentedBinaryOp, WRHS), function($skip, $loc, $0, $1, $2, $3) {
7782 var op = $2;
7783 var rhs = $3;
7784 return [...op, ...rhs];
7785});
7786var BinaryOpRHS$3 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(NewlineBinaryOpAllowed), SingleLineBinaryOpRHS), function(value) {
7787 return value[1];
7788});
7789var BinaryOpRHS$$ = [BinaryOpRHS$0, BinaryOpRHS$1, BinaryOpRHS$2, BinaryOpRHS$3];
7790function BinaryOpRHS(ctx, state2) {
7791 return (0, import_lib3.$EVENT_C)(ctx, state2, "BinaryOpRHS", BinaryOpRHS$$);
7792}
7793var IsLike$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Is, (0, import_lib3.$E)(_), (0, import_lib3.$E)((0, import_lib3.$S)(OmittedNegation, (0, import_lib3.$E)(_))), Like), function($skip, $loc, $0, $1, $2, $3, $4) {
7794 var not = $3;
7795 return {
7796 type: "PatternTest",
7797 children: $0,
7798 special: true,
7799 negated: !!not
7800 };
7801});
7802function IsLike(ctx, state2) {
7803 return (0, import_lib3.$EVENT)(ctx, state2, "IsLike", IsLike$0);
7804}
7805var WRHS$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$S)(Nested, (0, import_lib3.$E)(_)), RHS)), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
7806 var wrhs = $2;
7807 if (!wrhs)
7808 return $skip;
7809 return wrhs;
7810});
7811var WRHS$1 = (0, import_lib3.$S)((0, import_lib3.$C)((0, import_lib3.$S)(EOS, __), _), RHS);
7812var WRHS$$ = [WRHS$0, WRHS$1];
7813function WRHS(ctx, state2) {
7814 return (0, import_lib3.$EVENT_C)(ctx, state2, "WRHS", WRHS$$);
7815}
7816var SingleLineBinaryOpRHS$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), BinaryOp, (0, import_lib3.$C)((0, import_lib3.$S)(EOS, __), _), RHS), function($skip, $loc, $0, $1, $2, $3, $4) {
7817 var ws1 = $1;
7818 var op = $2;
7819 var ws2 = $3;
7820 var rhs = $4;
7821 return [ws1 || [], op, ws2, rhs];
7822});
7823function SingleLineBinaryOpRHS(ctx, state2) {
7824 return (0, import_lib3.$EVENT)(ctx, state2, "SingleLineBinaryOpRHS", SingleLineBinaryOpRHS$0);
7825}
7826var RHS$0 = ExpressionizedStatementWithTrailingCallExpressions;
7827var RHS$1 = UnaryExpression;
7828var RHS$$ = [RHS$0, RHS$1];
7829function RHS(ctx, state2) {
7830 return (0, import_lib3.$EVENT_C)(ctx, state2, "RHS", RHS$$);
7831}
7832var UnaryExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)(UnaryOp), UnaryBody, (0, import_lib3.$E)(UnaryPostfix)), function($skip, $loc, $0, $1, $2, $3) {
7833 var pre = $1;
7834 var exp = $2;
7835 var post = $3;
7836 return processUnaryExpression(pre, exp, post);
7837});
7838var UnaryExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(CoffeeDoEnabled, Do, __, (0, import_lib3.$C)(ArrowFunction, (0, import_lib3.$S)(LeftHandSideExpression, (0, import_lib3.$N)((0, import_lib3.$S)(__, AssignmentOpSymbol))), ExtendedExpression)), function($skip, $loc, $0, $1, $2, $3, $4) {
7839 var ws = $3;
7840 var exp = $4;
7841 return processCoffeeDo(ws, exp);
7842});
7843var UnaryExpression$$ = [UnaryExpression$0, UnaryExpression$1];
7844function UnaryExpression(ctx, state2) {
7845 return (0, import_lib3.$EVENT_C)(ctx, state2, "UnaryExpression", UnaryExpression$$);
7846}
7847var UnaryWithoutParenthesizedAssignment$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)(UnaryOp), UnaryWithoutParenthesizedAssignmentBody, (0, import_lib3.$E)(UnaryPostfix)), function($skip, $loc, $0, $1, $2, $3) {
7848 var pre = $1;
7849 var exp = $2;
7850 var post = $3;
7851 return processUnaryExpression(pre, exp, post);
7852});
7853function UnaryWithoutParenthesizedAssignment(ctx, state2) {
7854 return (0, import_lib3.$EVENT)(ctx, state2, "UnaryWithoutParenthesizedAssignment", UnaryWithoutParenthesizedAssignment$0);
7855}
7856var UnaryBody$0 = ParenthesizedAssignment;
7857var UnaryBody$1 = UpdateExpression;
7858var UnaryBody$2 = ExpressionizedStatementWithTrailingCallExpressions;
7859var UnaryBody$3 = NestedNonAssignmentExtendedExpression;
7860var UnaryBody$$ = [UnaryBody$0, UnaryBody$1, UnaryBody$2, UnaryBody$3];
7861function UnaryBody(ctx, state2) {
7862 return (0, import_lib3.$EVENT_C)(ctx, state2, "UnaryBody", UnaryBody$$);
7863}
7864var UnaryWithoutParenthesizedAssignmentBody$0 = UpdateExpression;
7865var UnaryWithoutParenthesizedAssignmentBody$1 = ExpressionizedStatementWithTrailingCallExpressions;
7866var UnaryWithoutParenthesizedAssignmentBody$2 = NestedNonAssignmentExtendedExpression;
7867var UnaryWithoutParenthesizedAssignmentBody$$ = [UnaryWithoutParenthesizedAssignmentBody$0, UnaryWithoutParenthesizedAssignmentBody$1, UnaryWithoutParenthesizedAssignmentBody$2];
7868function UnaryWithoutParenthesizedAssignmentBody(ctx, state2) {
7869 return (0, import_lib3.$EVENT_C)(ctx, state2, "UnaryWithoutParenthesizedAssignmentBody", UnaryWithoutParenthesizedAssignmentBody$$);
7870}
7871var ParenthesizedAssignment$0 = (0, import_lib3.$S)(InsertOpenParen, (0, import_lib3.$C)(ActualAssignment, ArrowFunction), InsertCloseParen);
7872function ParenthesizedAssignment(ctx, state2) {
7873 return (0, import_lib3.$EVENT)(ctx, state2, "ParenthesizedAssignment", ParenthesizedAssignment$0);
7874}
7875var UnaryPostfix$0 = QuestionMark;
7876var UnaryPostfix$1 = (0, import_lib3.$P)(TypePostfix);
7877var UnaryPostfix$$ = [UnaryPostfix$0, UnaryPostfix$1];
7878function UnaryPostfix(ctx, state2) {
7879 return (0, import_lib3.$EVENT_C)(ctx, state2, "UnaryPostfix", UnaryPostfix$$);
7880}
7881var TypePostfix$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(_, NWTypePostfix), function($skip, $loc, $0, $1, $2) {
7882 var ws = $1;
7883 var postfix = $2;
7884 return prepend(ws, postfix);
7885});
7886function TypePostfix(ctx, state2) {
7887 return (0, import_lib3.$EVENT)(ctx, state2, "TypePostfix", TypePostfix$0);
7888}
7889var Tuple$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L8, 'Tuple "tuple"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
7890 return {
7891 $loc,
7892 token: "readonly unknown[] | []"
7893 };
7894});
7895function Tuple(ctx, state2) {
7896 return (0, import_lib3.$EVENT)(ctx, state2, "Tuple", Tuple$0);
7897}
7898var NWTypePostfix$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(As, _, Tuple), function($skip, $loc, $0, $1, $2, $3) {
7899 return {
7900 ts: true,
7901 children: [{ $loc: $1.$loc, token: "satisfies" }, $2, $3]
7902 };
7903});
7904var NWTypePostfix$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(As, (0, import_lib3.$E)(ExclamationPoint), Type), function($skip, $loc, $0, $1, $2, $3) {
7905 var as = $1;
7906 var ex = $2;
7907 var type = $3;
7908 let children;
7909 if (ex) {
7910 children = [{ $loc: ex.$loc, token: "as unknown " }, as, type];
7911 } else {
7912 children = [as, type];
7913 }
7914 return { ts: true, children };
7915});
7916var NWTypePostfix$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(Satisfies, Type), function($skip, $loc, $0, $1, $2) {
7917 return { ts: true, children: $0 };
7918});
7919var NWTypePostfix$$ = [NWTypePostfix$0, NWTypePostfix$1, NWTypePostfix$2];
7920function NWTypePostfix(ctx, state2) {
7921 return (0, import_lib3.$EVENT_C)(ctx, state2, "NWTypePostfix", NWTypePostfix$$);
7922}
7923var UpdateExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(UpdateExpressionSymbol, UnaryWithoutParenthesizedAssignment), function($skip, $loc, $0, $1, $2) {
7924 return {
7925 type: "UpdateExpression",
7926 assigned: $2,
7927 children: $0
7928 };
7929});
7930var UpdateExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(LeftHandSideExpression, (0, import_lib3.$E)((0, import_lib3.$S)(UpdateExpressionSymbol, (0, import_lib3.$EXPECT)($R4, "UpdateExpression /(?!\\p{ID_Start}|[_$0-9(\\[{])/")))), function($skip, $loc, $0, $1, $2) {
7931 if (!$2)
7932 return $1;
7933 return {
7934 type: "UpdateExpression",
7935 assigned: $1,
7936 children: [$1, $2[0]]
7937 };
7938});
7939var UpdateExpression$$ = [UpdateExpression$0, UpdateExpression$1];
7940function UpdateExpression(ctx, state2) {
7941 return (0, import_lib3.$EVENT_C)(ctx, state2, "UpdateExpression", UpdateExpression$$);
7942}
7943var UpdateExpressionSymbol$0 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L9, 'UpdateExpressionSymbol "++"'), (0, import_lib3.$EXPECT)($L10, 'UpdateExpressionSymbol "--"')), function($skip, $loc, $0, $1) {
7944 return { $loc, token: $1 };
7945});
7946var UpdateExpressionSymbol$1 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L11, 'UpdateExpressionSymbol "\u29FA"'), function($skip, $loc, $0, $1) {
7947 return { $loc, token: "++" };
7948});
7949var UpdateExpressionSymbol$2 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L12, 'UpdateExpressionSymbol "\u2014"'), function($skip, $loc, $0, $1) {
7950 return { $loc, token: "--" };
7951});
7952var UpdateExpressionSymbol$$ = [UpdateExpressionSymbol$0, UpdateExpressionSymbol$1, UpdateExpressionSymbol$2];
7953function UpdateExpressionSymbol(ctx, state2) {
7954 return (0, import_lib3.$EVENT_C)(ctx, state2, "UpdateExpressionSymbol", UpdateExpressionSymbol$$);
7955}
7956var AssignmentExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), ActualAssignment), function($skip, $loc, $0, $1, $2) {
7957 var ws = $1;
7958 var assign = $2;
7959 return prepend(ws, assign);
7960});
7961var AssignmentExpression$1 = PipelineExpression;
7962var AssignmentExpression$2 = SingleLineAssignmentExpression;
7963var AssignmentExpression$3 = (0, import_lib3.$S)((0, import_lib3.$S)(EOS, (0, import_lib3.$E)(_)), AssignmentExpressionTail);
7964var AssignmentExpression$$ = [AssignmentExpression$0, AssignmentExpression$1, AssignmentExpression$2, AssignmentExpression$3];
7965function AssignmentExpression(ctx, state2) {
7966 return (0, import_lib3.$EVENT_C)(ctx, state2, "AssignmentExpression", AssignmentExpression$$);
7967}
7968var NonPipelineAssignmentExpression$0 = NonPipelineSingleLineAssignmentExpression;
7969var NonPipelineAssignmentExpression$1 = (0, import_lib3.$S)((0, import_lib3.$S)(EOS, (0, import_lib3.$E)(_)), NonPipelineAssignmentExpressionTail);
7970var NonPipelineAssignmentExpression$$ = [NonPipelineAssignmentExpression$0, NonPipelineAssignmentExpression$1];
7971function NonPipelineAssignmentExpression(ctx, state2) {
7972 return (0, import_lib3.$EVENT_C)(ctx, state2, "NonPipelineAssignmentExpression", NonPipelineAssignmentExpression$$);
7973}
7974var SingleLineAssignmentExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), AssignmentExpressionTail), function($skip, $loc, $0, $1, $2) {
7975 var ws = $1;
7976 var tail = $2;
7977 return prepend(ws, tail);
7978});
7979function SingleLineAssignmentExpression(ctx, state2) {
7980 return (0, import_lib3.$EVENT)(ctx, state2, "SingleLineAssignmentExpression", SingleLineAssignmentExpression$0);
7981}
7982var NonPipelineSingleLineAssignmentExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), NonPipelineAssignmentExpressionTail), function($skip, $loc, $0, $1, $2) {
7983 var ws = $1;
7984 var tail = $2;
7985 return prepend(ws, tail);
7986});
7987function NonPipelineSingleLineAssignmentExpression(ctx, state2) {
7988 return (0, import_lib3.$EVENT)(ctx, state2, "NonPipelineSingleLineAssignmentExpression", NonPipelineSingleLineAssignmentExpression$0);
7989}
7990var AssignmentExpressionTail$0 = YieldExpression;
7991var AssignmentExpressionTail$1 = ArrowFunction;
7992var AssignmentExpressionTail$2 = ActualAssignment;
7993var AssignmentExpressionTail$3 = ConditionalExpression;
7994var AssignmentExpressionTail$$ = [AssignmentExpressionTail$0, AssignmentExpressionTail$1, AssignmentExpressionTail$2, AssignmentExpressionTail$3];
7995function AssignmentExpressionTail(ctx, state2) {
7996 return (0, import_lib3.$EVENT_C)(ctx, state2, "AssignmentExpressionTail", AssignmentExpressionTail$$);
7997}
7998var NonPipelineAssignmentExpressionTail$0 = YieldExpression;
7999var NonPipelineAssignmentExpressionTail$1 = ArrowFunction;
8000var NonPipelineAssignmentExpressionTail$2 = NonPipelineActualAssignment;
8001var NonPipelineAssignmentExpressionTail$3 = ConditionalExpression;
8002var NonPipelineAssignmentExpressionTail$$ = [NonPipelineAssignmentExpressionTail$0, NonPipelineAssignmentExpressionTail$1, NonPipelineAssignmentExpressionTail$2, NonPipelineAssignmentExpressionTail$3];
8003function NonPipelineAssignmentExpressionTail(ctx, state2) {
8004 return (0, import_lib3.$EVENT_C)(ctx, state2, "NonPipelineAssignmentExpressionTail", NonPipelineAssignmentExpressionTail$$);
8005}
8006var ActualAssignment$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$P)((0, import_lib3.$S)(NotDedented, UpdateExpression, WAssignmentOp)), MaybeNestedExtendedExpression), function($skip, $loc, $0, $1, $2) {
8007 $1 = $1.map((x) => [x[0], x[1], ...x[2]]);
8008 $0 = [$1, $2];
8009 return {
8010 type: "AssignmentExpression",
8011 children: $0,
8012 // NOTE: This null marks the assignment for later processing to distinguish it
8013 // from fake assignments that only add a name to a scope
8014 names: null,
8015 lhs: $1,
8016 assigned: $1[0][1],
8017 expression: $2
8018 };
8019});
8020function ActualAssignment(ctx, state2) {
8021 return (0, import_lib3.$EVENT)(ctx, state2, "ActualAssignment", ActualAssignment$0);
8022}
8023var NonPipelineActualAssignment$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$P)((0, import_lib3.$S)(NotDedented, UpdateExpression, WAssignmentOp)), MaybeNestedNonPipelineExtendedExpression), function($skip, $loc, $0, $1, $2) {
8024 $1 = $1.map((x) => [x[0], x[1], ...x[2]]);
8025 $0 = [$1, $2];
8026 return {
8027 type: "AssignmentExpression",
8028 children: $0,
8029 // NOTE: This null marks the assignment for later processing to distinguish it
8030 // from fake assignments that only add a name to a scope
8031 names: null,
8032 lhs: $1,
8033 assigned: $1[0][1],
8034 expression: $2
8035 };
8036});
8037function NonPipelineActualAssignment(ctx, state2) {
8038 return (0, import_lib3.$EVENT)(ctx, state2, "NonPipelineActualAssignment", NonPipelineActualAssignment$0);
8039}
8040var YieldExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Yield, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), Star)), MaybeParenNestedExtendedExpression))), function($skip, $loc, $0, $1, $2) {
8041 if ($2) {
8042 const [star, expression] = $2;
8043 return {
8044 type: "YieldExpression",
8045 star,
8046 expression,
8047 children: [$1, star, expression]
8048 };
8049 }
8050 return {
8051 type: "YieldExpression",
8052 children: [$1]
8053 };
8054});
8055function YieldExpression(ctx, state2) {
8056 return (0, import_lib3.$EVENT)(ctx, state2, "YieldExpression", YieldExpression$0);
8057}
8058var ArrowFunction$0 = ThinArrowFunction;
8059var ArrowFunction$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Async, _)), ArrowParameters, (0, import_lib3.$E)(ReturnTypeSuffix), FatArrow, FatArrowBody), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8060 var async = $1;
8061 var parameters = $2;
8062 var suffix = $3;
8063 var arrow = $4;
8064 var expOrBlock = $5;
8065 if (!async)
8066 async = [];
8067 return {
8068 type: "ArrowFunction",
8069 signature: {
8070 modifier: {
8071 async: !!async.length
8072 },
8073 returnType: suffix
8074 },
8075 parameters,
8076 returnType: suffix,
8077 async,
8078 block: expOrBlock,
8079 children: [async, parameters, suffix, arrow, expOrBlock]
8080 };
8081});
8082var ArrowFunction$$ = [ArrowFunction$0, ArrowFunction$1];
8083function ArrowFunction(ctx, state2) {
8084 return (0, import_lib3.$EVENT_C)(ctx, state2, "ArrowFunction", ArrowFunction$$);
8085}
8086var FatArrow$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), FatArrowToken), function($skip, $loc, $0, $1, $2) {
8087 var ws = $1;
8088 var arrow = $2;
8089 if (!ws)
8090 ws = " ";
8091 return [ws, arrow];
8092});
8093function FatArrow(ctx, state2) {
8094 return (0, import_lib3.$EVENT)(ctx, state2, "FatArrow", FatArrow$0);
8095}
8096var FatArrowToken$0 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L13, 'FatArrowToken "=>"'), (0, import_lib3.$EXPECT)($L14, 'FatArrowToken "\u21D2"')), function($skip, $loc, $0, $1) {
8097 return { $loc, token: "=>" };
8098});
8099function FatArrowToken(ctx, state2) {
8100 return (0, import_lib3.$EVENT)(ctx, state2, "FatArrowToken", FatArrowToken$0);
8101}
8102var TrailingDeclaration$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)(ConstAssignment, LetAssignment));
8103function TrailingDeclaration(ctx, state2) {
8104 return (0, import_lib3.$EVENT)(ctx, state2, "TrailingDeclaration", TrailingDeclaration$0);
8105}
8106var TrailingPipe$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), Pipe);
8107function TrailingPipe(ctx, state2) {
8108 return (0, import_lib3.$EVENT)(ctx, state2, "TrailingPipe", TrailingPipe$0);
8109}
8110var FatArrowBody$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), (0, import_lib3.$N)((0, import_lib3.$S)((0, import_lib3.$E)(_), ExpressionizedStatement)), NonPipelinePostfixedExpression, (0, import_lib3.$N)(TrailingDeclaration), (0, import_lib3.$N)(TrailingPipe), (0, import_lib3.$N)(SemicolonDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
8111 var exp = $3;
8112 if (exp.type === "ObjectExpression") {
8113 exp = makeLeftHandSideExpression(exp);
8114 }
8115 const expressions = [["", exp]];
8116 return {
8117 type: "BlockStatement",
8118 bare: true,
8119 expressions,
8120 children: [expressions],
8121 implicitlyReturned: true
8122 };
8123});
8124var FatArrowBody$1 = NoCommaBracedOrEmptyBlock;
8125var FatArrowBody$$ = [FatArrowBody$0, FatArrowBody$1];
8126function FatArrowBody(ctx, state2) {
8127 return (0, import_lib3.$EVENT_C)(ctx, state2, "FatArrowBody", FatArrowBody$$);
8128}
8129var ConditionalExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ShortCircuitExpression, (0, import_lib3.$E)(TernaryRest)), function($skip, $loc, $0, $1, $2) {
8130 if ($2) {
8131 return [$1, ...$2];
8132 }
8133 return $1;
8134});
8135function ConditionalExpression(ctx, state2) {
8136 return (0, import_lib3.$EVENT)(ctx, state2, "ConditionalExpression", ConditionalExpression$0);
8137}
8138var TernaryRest$0 = NestedTernaryRest;
8139var TernaryRest$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(CoffeeBinaryExistentialEnabled), (0, import_lib3.$Y)((0, import_lib3.$EXPECT)($R5, "TernaryRest /[ \\t]/")), _, QuestionMark, MaybeNestedExtendedExpression, __, Colon, MaybeNestedExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
8140 return $0.slice(2);
8141});
8142var TernaryRest$$ = [TernaryRest$0, TernaryRest$1];
8143function TernaryRest(ctx, state2) {
8144 return (0, import_lib3.$EVENT_C)(ctx, state2, "TernaryRest", TernaryRest$$);
8145}
8146var NestedTernaryRest$0 = (0, import_lib3.$S)(Nested, QuestionMark, MaybeNestedExtendedExpression, Nested, Colon, MaybeNestedExtendedExpression);
8147var NestedTernaryRest$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$E)((0, import_lib3.$S)(Nested, QuestionMark, MaybeNestedExtendedExpression, Nested, Colon, MaybeNestedExtendedExpression)), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
8148 if ($2)
8149 return $2;
8150 return $skip;
8151});
8152var NestedTernaryRest$$ = [NestedTernaryRest$0, NestedTernaryRest$1];
8153function NestedTernaryRest(ctx, state2) {
8154 return (0, import_lib3.$EVENT_C)(ctx, state2, "NestedTernaryRest", NestedTernaryRest$$);
8155}
8156var ShortCircuitExpression$0 = BinaryOpExpression;
8157function ShortCircuitExpression(ctx, state2) {
8158 return (0, import_lib3.$EVENT)(ctx, state2, "ShortCircuitExpression", ShortCircuitExpression$0);
8159}
8160var PipelineExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), PipelineHeadItem, (0, import_lib3.$P)((0, import_lib3.$S)(NotDedented, Pipe, __, PipelineTailItem))), function($skip, $loc, $0, $1, $2, $3) {
8161 var ws = $1;
8162 var head = $2;
8163 var body = $3;
8164 if (head.type === "ArrowFunction" && head.ampersandBlock) {
8165 const expressions = [{
8166 type: "PipelineExpression",
8167 children: [ws, head.block.expressions[0], body]
8168 }];
8169 const block = { ...head.block, expressions, children: [expressions] };
8170 return {
8171 ...head,
8172 block,
8173 body: expressions,
8174 children: [...head.children.slice(0, -1), block]
8175 };
8176 }
8177 return {
8178 type: "PipelineExpression",
8179 children: [ws, head, body]
8180 };
8181});
8182function PipelineExpression(ctx, state2) {
8183 return (0, import_lib3.$EVENT)(ctx, state2, "PipelineExpression", PipelineExpression$0);
8184}
8185var PipelineHeadItem$0 = NonPipelineExtendedExpression;
8186var PipelineHeadItem$1 = ParenthesizedExpression;
8187var PipelineHeadItem$$ = [PipelineHeadItem$0, PipelineHeadItem$1];
8188function PipelineHeadItem(ctx, state2) {
8189 return (0, import_lib3.$EVENT_C)(ctx, state2, "PipelineHeadItem", PipelineHeadItem$$);
8190}
8191var PipelineTailItem$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$C)(AwaitOp, Yield, Return), (0, import_lib3.$N)(AccessStart)), function(value) {
8192 return value[0];
8193});
8194var PipelineTailItem$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L15, 'PipelineTailItem "import"'), (0, import_lib3.$N)(AccessStart)), function($skip, $loc, $0, $1, $2) {
8195 return {
8196 type: "Identifier",
8197 children: [$1]
8198 };
8199});
8200var PipelineTailItem$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(NWTypePostfix, (0, import_lib3.$Q)(TypePostfix)), function($skip, $loc, $0, $1, $2) {
8201 return makeAmpersandFunction({
8202 body: [" ", $1, ...$2]
8203 });
8204});
8205var PipelineTailItem$3 = (0, import_lib3.$T)((0, import_lib3.$S)(PipelineHeadItem), function(value) {
8206 return value[0];
8207});
8208var PipelineTailItem$$ = [PipelineTailItem$0, PipelineTailItem$1, PipelineTailItem$2, PipelineTailItem$3];
8209function PipelineTailItem(ctx, state2) {
8210 return (0, import_lib3.$EVENT_C)(ctx, state2, "PipelineTailItem", PipelineTailItem$$);
8211}
8212var PrimaryExpression$0 = ObjectLiteral;
8213var PrimaryExpression$1 = ThisLiteral;
8214var PrimaryExpression$2 = TemplateLiteral;
8215var PrimaryExpression$3 = Literal;
8216var PrimaryExpression$4 = ArrayLiteral;
8217var PrimaryExpression$5 = FunctionExpression;
8218var PrimaryExpression$6 = IdentifierReference;
8219var PrimaryExpression$7 = ClassExpression;
8220var PrimaryExpression$8 = RegularExpressionLiteral;
8221var PrimaryExpression$9 = ParenthesizedExpression;
8222var PrimaryExpression$10 = Placeholder;
8223var PrimaryExpression$11 = JSXImplicitFragment;
8224var 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];
8225function PrimaryExpression(ctx, state2) {
8226 return (0, import_lib3.$EVENT_C)(ctx, state2, "PrimaryExpression", PrimaryExpression$$);
8227}
8228var ParenthesizedExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenParen, AllowAll, (0, import_lib3.$E)((0, import_lib3.$S)(PostfixedCommaExpression, __, CloseParen)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
8229 var open = $1;
8230 if (!$3)
8231 return $skip;
8232 const [exp, ws, close] = $3;
8233 switch (exp.type) {
8234 case "StatementExpression":
8235 if (exp.statement.type !== "IterationExpression")
8236 break;
8237 case "IterationExpression":
8238 return exp;
8239 case "ParenthesizedExpression":
8240 if (exp.implicit) {
8241 return {
8242 ...exp,
8243 children: [open, exp.expression, ws, close],
8244 implicit: false
8245 };
8246 }
8247 break;
8248 }
8249 return {
8250 type: "ParenthesizedExpression",
8251 children: [open, exp, ws, close],
8252 expression: exp
8253 };
8254});
8255function ParenthesizedExpression(ctx, state2) {
8256 return (0, import_lib3.$EVENT)(ctx, state2, "ParenthesizedExpression", ParenthesizedExpression$0);
8257}
8258var Placeholder$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Dot, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($R6, "Placeholder /(?:\\p{ID_Continue}|[\\u200C\\u200D$.#])/")), (0, import_lib3.$E)(PlaceholderTypeSuffix)), function($skip, $loc, $0, $1, $2, $3) {
8259 var dot = $1;
8260 var typeSuffix = $3;
8261 return {
8262 type: "Placeholder",
8263 subtype: ".",
8264 typeSuffix,
8265 children: [dot]
8266 };
8267});
8268var Placeholder$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Ampersand, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($R7, "Placeholder /[&=]/")), (0, import_lib3.$E)(PlaceholderTypeSuffix)), function($skip, $loc, $0, $1, $2, $3) {
8269 var amp = $1;
8270 var typeSuffix = $3;
8271 return {
8272 type: "Placeholder",
8273 subtype: "&",
8274 typeSuffix,
8275 children: [amp]
8276 };
8277});
8278var Placeholder$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Y)(AccessStart), (0, import_lib3.$Y)(PropertyAccess), (0, import_lib3.$N)(NumericLiteral)), function($skip, $loc, $0, $1, $2, $3) {
8279 return {
8280 type: "Placeholder",
8281 subtype: "&",
8282 children: [{ token: "&" }]
8283 };
8284});
8285var Placeholder$$ = [Placeholder$0, Placeholder$1, Placeholder$2];
8286function Placeholder(ctx, state2) {
8287 return (0, import_lib3.$EVENT_C)(ctx, state2, "Placeholder", Placeholder$$);
8288}
8289var PlaceholderTypeSuffix$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$Y)((0, import_lib3.$S)((0, import_lib3.$E)(QuestionMark), Colon)), TypeSuffix), function(value) {
8290 return value[1];
8291});
8292function PlaceholderTypeSuffix(ctx, state2) {
8293 return (0, import_lib3.$EVENT)(ctx, state2, "PlaceholderTypeSuffix", PlaceholderTypeSuffix$0);
8294}
8295var ClassDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ClassExpression), function($skip, $loc, $0, $1) {
8296 if ($1.id)
8297 return $1;
8298 return makeLeftHandSideExpression($1);
8299});
8300function ClassDeclaration(ctx, state2) {
8301 return (0, import_lib3.$EVENT)(ctx, state2, "ClassDeclaration", ClassDeclaration$0);
8302}
8303var ClassExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(Decorators), (0, import_lib3.$E)((0, import_lib3.$S)(Abstract, __)), Class, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($L16, 'ClassExpression ":"')), (0, import_lib3.$E)(ClassBinding), (0, import_lib3.$E)(ClassHeritage), ClassBody), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
8304 var decorators = $1;
8305 var abstract = $2;
8306 var binding = $5;
8307 var heritage = $6;
8308 var body = $7;
8309 return {
8310 decorators,
8311 abstract,
8312 binding,
8313 id: binding?.[0],
8314 heritage,
8315 body,
8316 children: $0
8317 };
8318});
8319function ClassExpression(ctx, state2) {
8320 return (0, import_lib3.$EVENT)(ctx, state2, "ClassExpression", ClassExpression$0);
8321}
8322var ClassBinding$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), BindingIdentifier, (0, import_lib3.$E)(TypeParameters)), function(value) {
8323 return [value[1], value[2]];
8324});
8325function ClassBinding(ctx, state2) {
8326 return (0, import_lib3.$EVENT)(ctx, state2, "ClassBinding", ClassBinding$0);
8327}
8328var ClassHeritage$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ExtendsClause, (0, import_lib3.$E)(WithClause), (0, import_lib3.$E)(ImplementsClause)), function($skip, $loc, $0, $1, $2, $3) {
8329 var extendsClause = $1;
8330 var withClause = $2;
8331 var implementsClause = $3;
8332 if (withClause) {
8333 extendsClause = convertWithClause(withClause, extendsClause);
8334 }
8335 return [extendsClause, implementsClause];
8336});
8337var ClassHeritage$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(WithClause), (0, import_lib3.$E)(ImplementsClause)), function($skip, $loc, $0, $1, $2) {
8338 var withClause = $1;
8339 var implementsClause = $2;
8340 if (withClause)
8341 return [convertWithClause(withClause), implementsClause];
8342 if (implementsClause)
8343 return implementsClause;
8344 return $skip;
8345});
8346var ClassHeritage$$ = [ClassHeritage$0, ClassHeritage$1];
8347function ClassHeritage(ctx, state2) {
8348 return (0, import_lib3.$EVENT_C)(ctx, state2, "ClassHeritage", ClassHeritage$$);
8349}
8350var ExtendsClause$0 = (0, import_lib3.$S)(ExtendsToken, __, ExtendsTarget);
8351function ExtendsClause(ctx, state2) {
8352 return (0, import_lib3.$EVENT)(ctx, state2, "ExtendsClause", ExtendsClause$0);
8353}
8354var WithClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, With, __, ExtendsTarget, (0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L17, 'WithClause ","'), __, ExtendsTarget))), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8355 var ws = $3;
8356 var t = $4;
8357 var rest = $5;
8358 return {
8359 type: "WithClause",
8360 children: $0,
8361 targets: [[ws, t], ...rest.map(([_comma, ws2, target]) => [ws2, target])]
8362 };
8363});
8364function WithClause(ctx, state2) {
8365 return (0, import_lib3.$EVENT)(ctx, state2, "WithClause", WithClause$0);
8366}
8367var ExtendsToken$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Loc, (0, import_lib3.$E)(_), ExtendsShorthand, (0, import_lib3.$E)((0, import_lib3.$EXPECT)($L18, 'ExtendsToken " "'))), function($skip, $loc, $0, $1, $2, $3, $4) {
8368 var l = $1;
8369 var ws = $2;
8370 var t = $3;
8371 return {
8372 type: "Extends",
8373 children: [
8374 ws || { $loc: l.$loc, token: " " },
8375 t
8376 ]
8377 };
8378});
8379var ExtendsToken$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), Extends), function($skip, $loc, $0, $1, $2) {
8380 return {
8381 type: "Extends",
8382 children: $0
8383 };
8384});
8385var ExtendsToken$$ = [ExtendsToken$0, ExtendsToken$1];
8386function ExtendsToken(ctx, state2) {
8387 return (0, import_lib3.$EVENT_C)(ctx, state2, "ExtendsToken", ExtendsToken$$);
8388}
8389var ExtendsShorthand$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L19, 'ExtendsShorthand "<"'), function($skip, $loc, $0, $1) {
8390 return { $loc, token: "extends " };
8391});
8392function ExtendsShorthand(ctx, state2) {
8393 return (0, import_lib3.$EVENT)(ctx, state2, "ExtendsShorthand", ExtendsShorthand$0);
8394}
8395var NotExtendsToken$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Loc, (0, import_lib3.$E)(_), OmittedNegation, ExtendsShorthand, (0, import_lib3.$E)((0, import_lib3.$EXPECT)($L18, 'NotExtendsToken " "'))), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8396 var l = $1;
8397 var ws1 = $2;
8398 var ws2 = $3;
8399 var t = $4;
8400 const ws = ws1 && ws2 ? [ws1, ws2] : ws1 || ws2 || { $loc: l.$loc, token: " " };
8401 return {
8402 type: "Extends",
8403 negated: true,
8404 children: [ws, t]
8405 };
8406});
8407var NotExtendsToken$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), OmittedNegation, Extends), function($skip, $loc, $0, $1, $2, $3) {
8408 return {
8409 type: "Extends",
8410 negated: true,
8411 children: $0
8412 };
8413});
8414var NotExtendsToken$$ = [NotExtendsToken$0, NotExtendsToken$1];
8415function NotExtendsToken(ctx, state2) {
8416 return (0, import_lib3.$EVENT_C)(ctx, state2, "NotExtendsToken", NotExtendsToken$$);
8417}
8418var OmittedNegation$0 = (0, import_lib3.$T)((0, import_lib3.$S)(ExclamationPoint), function(value) {
8419 return "";
8420});
8421var OmittedNegation$1 = (0, import_lib3.$T)((0, import_lib3.$S)(Not, (0, import_lib3.$E)((0, import_lib3.$EXPECT)($L18, 'OmittedNegation " "')), (0, import_lib3.$E)(_)), function(value) {
8422 return value[2];
8423});
8424var OmittedNegation$$ = [OmittedNegation$0, OmittedNegation$1];
8425function OmittedNegation(ctx, state2) {
8426 return (0, import_lib3.$EVENT_C)(ctx, state2, "OmittedNegation", OmittedNegation$$);
8427}
8428var ExtendsTarget$0 = (0, import_lib3.$TV)(LeftHandSideExpressionWithObjectApplicationForbidden, function($skip, $loc, $0, $1) {
8429 var exp = $0;
8430 return makeLeftHandSideExpression(exp);
8431});
8432function ExtendsTarget(ctx, state2) {
8433 return (0, import_lib3.$EVENT)(ctx, state2, "ExtendsTarget", ExtendsTarget$0);
8434}
8435var ImplementsClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ImplementsToken, ImplementsTarget, (0, import_lib3.$Q)((0, import_lib3.$S)(Comma, ImplementsTarget))), function($skip, $loc, $0, $1, $2, $3) {
8436 return {
8437 ts: true,
8438 children: $0
8439 };
8440});
8441function ImplementsClause(ctx, state2) {
8442 return (0, import_lib3.$EVENT)(ctx, state2, "ImplementsClause", ImplementsClause$0);
8443}
8444var ImplementsToken$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Loc, __, ImplementsShorthand, (0, import_lib3.$E)((0, import_lib3.$EXPECT)($L18, 'ImplementsToken " "'))), function($skip, $loc, $0, $1, $2, $3, $4) {
8445 var l = $1;
8446 var ws = $2;
8447 var token = $3;
8448 const children = [...ws, token];
8449 if (!ws.length) {
8450 children.unshift({ $loc: l.$loc, token: " " });
8451 }
8452 return { children };
8453});
8454var ImplementsToken$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L20, 'ImplementsToken "implements"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
8455 $2 = { $loc, token: $2 };
8456 return [$1, $2];
8457});
8458var ImplementsToken$$ = [ImplementsToken$0, ImplementsToken$1];
8459function ImplementsToken(ctx, state2) {
8460 return (0, import_lib3.$EVENT_C)(ctx, state2, "ImplementsToken", ImplementsToken$$);
8461}
8462var ImplementsShorthand$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L21, 'ImplementsShorthand "<:"'), function($skip, $loc, $0, $1) {
8463 return { $loc, token: "implements " };
8464});
8465function ImplementsShorthand(ctx, state2) {
8466 return (0, import_lib3.$EVENT)(ctx, state2, "ImplementsShorthand", ImplementsShorthand$0);
8467}
8468var ImplementsTarget$0 = (0, import_lib3.$S)(__, IdentifierName, (0, import_lib3.$Q)((0, import_lib3.$S)(Dot, IdentifierName)), (0, import_lib3.$E)(TypeArguments));
8469function ImplementsTarget(ctx, state2) {
8470 return (0, import_lib3.$EVENT)(ctx, state2, "ImplementsTarget", ImplementsTarget$0);
8471}
8472var ClassBody$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, OpenBrace, (0, import_lib3.$E)(NestedClassElements), __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8473 var expressions = $3;
8474 if (!expressions)
8475 expressions = $0[2] = [];
8476 return {
8477 type: "BlockStatement",
8478 subtype: "ClassBody",
8479 children: $0,
8480 expressions
8481 };
8482});
8483var ClassBody$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBrace, (0, import_lib3.$E)(NestedClassElements), InsertNewline, InsertIndent, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8484 var expressions = $2;
8485 if (!expressions)
8486 expressions = $0[1] = [];
8487 return {
8488 type: "BlockStatement",
8489 subtype: "ClassBody",
8490 children: $0,
8491 expressions
8492 };
8493});
8494var ClassBody$$ = [ClassBody$0, ClassBody$1];
8495function ClassBody(ctx, state2) {
8496 return (0, import_lib3.$EVENT_C)(ctx, state2, "ClassBody", ClassBody$$);
8497}
8498var NestedClassElements$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedClassElement), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
8499 var elements = $2;
8500 if (!elements.length)
8501 return $skip;
8502 return elements;
8503});
8504function NestedClassElements(ctx, state2) {
8505 return (0, import_lib3.$EVENT)(ctx, state2, "NestedClassElements", NestedClassElements$0);
8506}
8507var NestedClassElement$0 = (0, import_lib3.$S)(Nested, ClassElement, StatementDelimiter);
8508function NestedClassElement(ctx, state2) {
8509 return (0, import_lib3.$EVENT)(ctx, state2, "NestedClassElement", NestedClassElement$0);
8510}
8511var ClassElement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(Decorators), (0, import_lib3.$E)(AccessModifier), (0, import_lib3.$E)((0, import_lib3.$S)(Static, (0, import_lib3.$E)(_))), (0, import_lib3.$E)((0, import_lib3.$S)(Override, (0, import_lib3.$E)(_))), ClassElementDefinition), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8512 var decorators = $1;
8513 var definition = $5;
8514 if (definition.type === "MultiMethodDefinition") {
8515 return {
8516 ...definition,
8517 children: definition.children.map((c) => {
8518 return {
8519 ...c,
8520 children: [decorators, ...c.children]
8521 };
8522 })
8523 };
8524 }
8525 return {
8526 ...definition,
8527 children: [decorators, $2, $3, $4, ...definition.children]
8528 };
8529});
8530var ClassElement$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Static, BracedBlock), function($skip, $loc, $0, $1, $2) {
8531 return {
8532 type: "ClassStaticBlock",
8533 children: $0
8534 };
8535});
8536var ClassElement$2 = EmptyStatement;
8537var ClassElement$$ = [ClassElement$0, ClassElement$1, ClassElement$2];
8538function ClassElement(ctx, state2) {
8539 return (0, import_lib3.$EVENT_C)(ctx, state2, "ClassElement", ClassElement$$);
8540}
8541var ClassElementDefinition$0 = MethodDefinition;
8542var ClassElementDefinition$1 = FieldDefinition;
8543var ClassElementDefinition$$ = [ClassElementDefinition$0, ClassElementDefinition$1];
8544function ClassElementDefinition(ctx, state2) {
8545 return (0, import_lib3.$EVENT_C)(ctx, state2, "ClassElementDefinition", ClassElementDefinition$$);
8546}
8547var ClassSignature$0 = (0, import_lib3.$S)((0, import_lib3.$E)(Decorators), (0, import_lib3.$E)((0, import_lib3.$S)(Abstract, __)), Class, (0, import_lib3.$E)(ClassBinding), (0, import_lib3.$E)(ClassHeritage), ClassSignatureBody);
8548function ClassSignature(ctx, state2) {
8549 return (0, import_lib3.$EVENT)(ctx, state2, "ClassSignature", ClassSignature$0);
8550}
8551var ClassSignatureBody$0 = (0, import_lib3.$S)(__, OpenBrace, (0, import_lib3.$E)(NestedClassSignatureElements), __, CloseBrace);
8552var ClassSignatureBody$1 = (0, import_lib3.$S)(InsertOpenBrace, (0, import_lib3.$E)(NestedClassSignatureElements), InsertNewline, InsertIndent, InsertCloseBrace);
8553var ClassSignatureBody$$ = [ClassSignatureBody$0, ClassSignatureBody$1];
8554function ClassSignatureBody(ctx, state2) {
8555 return (0, import_lib3.$EVENT_C)(ctx, state2, "ClassSignatureBody", ClassSignatureBody$$);
8556}
8557var NestedClassSignatureElements$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedClassSignatureElement), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
8558 var elements = $2;
8559 if (!elements.length)
8560 return $skip;
8561 return elements;
8562});
8563function NestedClassSignatureElements(ctx, state2) {
8564 return (0, import_lib3.$EVENT)(ctx, state2, "NestedClassSignatureElements", NestedClassSignatureElements$0);
8565}
8566var NestedClassSignatureElement$0 = (0, import_lib3.$S)(Nested, ClassSignatureElement, StatementDelimiter);
8567function NestedClassSignatureElement(ctx, state2) {
8568 return (0, import_lib3.$EVENT)(ctx, state2, "NestedClassSignatureElement", NestedClassSignatureElement$0);
8569}
8570var ClassSignatureElement$0 = (0, import_lib3.$S)((0, import_lib3.$E)(Decorators), (0, import_lib3.$E)(AccessModifier), (0, import_lib3.$E)((0, import_lib3.$S)(Static, (0, import_lib3.$E)(_))), (0, import_lib3.$E)((0, import_lib3.$S)(Override, (0, import_lib3.$E)(_))), (0, import_lib3.$C)(MethodSignature, FieldDefinition));
8571var ClassSignatureElement$1 = (0, import_lib3.$S)(Static, ClassSignatureBody);
8572var ClassSignatureElement$$ = [ClassSignatureElement$0, ClassSignatureElement$1];
8573function ClassSignatureElement(ctx, state2) {
8574 return (0, import_lib3.$EVENT_C)(ctx, state2, "ClassSignatureElement", ClassSignatureElement$$);
8575}
8576var AccessModifier$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$C)(Public, Private, Protected), NotDedented)), (0, import_lib3.$E)((0, import_lib3.$S)(Readonly, NotDedented))), function($skip, $loc, $0, $1, $2) {
8577 if (!($1 || $2))
8578 return $skip;
8579 return {
8580 ts: true,
8581 children: $0
8582 };
8583});
8584function AccessModifier(ctx, state2) {
8585 return (0, import_lib3.$EVENT)(ctx, state2, "AccessModifier", AccessModifier$0);
8586}
8587var FieldDefinition$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(CoffeeClassesEnabled, ClassElementName, (0, import_lib3.$E)(_), Colon, __, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
8588 var id = $2;
8589 var exp = $6;
8590 switch (exp.type) {
8591 case "FunctionExpression":
8592 const fnTokenIndex = exp.children.findIndex((c) => c?.token?.startsWith("function"));
8593 const children = exp.children.slice();
8594 if (exp.generator) {
8595 children.splice(fnTokenIndex, 2, children[fnTokenIndex + 1], id);
8596 } else {
8597 children.splice(fnTokenIndex, 1, id);
8598 }
8599 return {
8600 ...exp,
8601 children
8602 };
8603 default:
8604 return {
8605 type: "FieldDefinition",
8606 children: [id, " = ", exp]
8607 };
8608 }
8609});
8610var FieldDefinition$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertReadonly, ClassElementName, (0, import_lib3.$E)(TypeSuffix), __, ConstAssignment, MaybeNestedExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
8611 var r = $1;
8612 var ca = $5;
8613 r.children[0].$loc = {
8614 pos: ca.$loc.pos - 1,
8615 length: ca.$loc.length + 1
8616 };
8617 return {
8618 type: "FieldDefinition",
8619 children: $0
8620 };
8621});
8622var FieldDefinition$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Abstract, (0, import_lib3.$E)(_))), (0, import_lib3.$E)((0, import_lib3.$S)(Readonly, (0, import_lib3.$E)(_))), ClassElementName, (0, import_lib3.$E)(TypeSuffix), (0, import_lib3.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8623 if ($1)
8624 return { children: $0, ts: true };
8625 return {
8626 type: "FieldDefinition",
8627 children: $0
8628 };
8629});
8630var FieldDefinition$$ = [FieldDefinition$0, FieldDefinition$1, FieldDefinition$2];
8631function FieldDefinition(ctx, state2) {
8632 return (0, import_lib3.$EVENT_C)(ctx, state2, "FieldDefinition", FieldDefinition$$);
8633}
8634var ThisLiteral$0 = This;
8635var ThisLiteral$1 = HashThis;
8636var ThisLiteral$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(AtThis, (0, import_lib3.$TEXT)((0, import_lib3.$S)((0, import_lib3.$E)(Hash), IdentifierName))), function($skip, $loc, $0, $1, $2) {
8637 var at = $1;
8638 var id = $2;
8639 return {
8640 type: "MemberExpression",
8641 children: [at, {
8642 type: "PropertyAccess",
8643 name: id,
8644 children: [".", {
8645 $loc: {
8646 pos: $loc.pos + 1,
8647 length: $loc.length - 1
8648 },
8649 token: id
8650 }]
8651 }],
8652 thisShorthand: true
8653 };
8654});
8655var ThisLiteral$3 = AtThis;
8656var ThisLiteral$$ = [ThisLiteral$0, ThisLiteral$1, ThisLiteral$2, ThisLiteral$3];
8657function ThisLiteral(ctx, state2) {
8658 return (0, import_lib3.$EVENT_C)(ctx, state2, "ThisLiteral", ThisLiteral$$);
8659}
8660var HashThis$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(AtThis), LengthShorthand, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$Y)((0, import_lib3.$S)(_, (0, import_lib3.$E)((0, import_lib3.$S)(Not, __)), ActualIn)), (0, import_lib3.$EXPECT)($L0, 'HashThis ""')))), function($skip, $loc, $0, $1, $2, $3) {
8661 var at = $1;
8662 var id = $2;
8663 var beforeIn = $3;
8664 if (beforeIn != null && at == null)
8665 return ['"', id.name, '"'];
8666 return {
8667 type: "MemberExpression",
8668 children: [at ?? "this", {
8669 type: "PropertyAccess",
8670 name: id.name,
8671 children: [".", id]
8672 }],
8673 thisShorthand: true
8674 };
8675});
8676var HashThis$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(PrivateIdentifier, (0, import_lib3.$Y)((0, import_lib3.$S)(_, (0, import_lib3.$E)((0, import_lib3.$S)(Not, __)), ActualIn))), function($skip, $loc, $0, $1, $2) {
8677 var id = $1;
8678 return id;
8679});
8680var HashThis$2 = (0, import_lib3.$TV)(PrivateIdentifier, function($skip, $loc, $0, $1) {
8681 var id = $0;
8682 return {
8683 type: "MemberExpression",
8684 children: ["this", {
8685 type: "PropertyAccess",
8686 name: id.name,
8687 children: [".", id]
8688 }],
8689 privateShorthand: true,
8690 privateId: id
8691 };
8692});
8693var HashThis$$ = [HashThis$0, HashThis$1, HashThis$2];
8694function HashThis(ctx, state2) {
8695 return (0, import_lib3.$EVENT_C)(ctx, state2, "HashThis", HashThis$$);
8696}
8697var LengthShorthand$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Hash, NonIdContinue), function($skip, $loc, $0, $1, $2) {
8698 const id = "length";
8699 return {
8700 type: "Identifier",
8701 name: id,
8702 names: [id],
8703 children: [{
8704 $loc,
8705 token: id
8706 }]
8707 };
8708});
8709function LengthShorthand(ctx, state2) {
8710 return (0, import_lib3.$EVENT)(ctx, state2, "LengthShorthand", LengthShorthand$0);
8711}
8712var AtThis$0 = (0, import_lib3.$TV)(At, function($skip, $loc, $0, $1) {
8713 var at = $0;
8714 return { ...at, token: "this" };
8715});
8716function AtThis(ctx, state2) {
8717 return (0, import_lib3.$EVENT)(ctx, state2, "AtThis", AtThis$0);
8718}
8719var LeftHandSideExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$P)((0, import_lib3.$S)(New, (0, import_lib3.$N)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L7, 'LeftHandSideExpression "."'), (0, import_lib3.$EXPECT)($L16, 'LeftHandSideExpression ":"'))), __)), CallExpression), function($skip, $loc, $0, $1, $2) {
8720 var expression = $2;
8721 return {
8722 type: "NewExpression",
8723 children: $0,
8724 expression
8725 };
8726});
8727var LeftHandSideExpression$1 = CallExpression;
8728var LeftHandSideExpression$$ = [LeftHandSideExpression$0, LeftHandSideExpression$1];
8729function LeftHandSideExpression(ctx, state2) {
8730 return (0, import_lib3.$EVENT_C)(ctx, state2, "LeftHandSideExpression", LeftHandSideExpression$$);
8731}
8732var CallExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Super, ArgumentsWithTrailingMemberExpressions, (0, import_lib3.$Q)(CallExpressionRest)), function($skip, $loc, $0, $1, $2, $3) {
8733 var rest = $3;
8734 return processCallMemberExpression({
8735 type: "CallExpression",
8736 children: [$1, ...$2, ...rest.flat()]
8737 });
8738});
8739var CallExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Import, _, NamedImports, __, FromClause), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8740 return dynamizeImportDeclarationExpression($0);
8741});
8742var CallExpression$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L15, 'CallExpression "import"'), ArgumentsWithTrailingMemberExpressions, (0, import_lib3.$Q)(CallExpressionRest)), function($skip, $loc, $0, $1, $2, $3) {
8743 var rest = $3;
8744 return processCallMemberExpression({
8745 type: "CallExpression",
8746 children: [$1, ...$2, ...rest.flat()]
8747 });
8748});
8749var CallExpression$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(MemberExpression, AllowedTrailingMemberExpressions, (0, import_lib3.$Q)(CallExpressionRest)), function($skip, $loc, $0, $1, $2, $3) {
8750 var member = $1;
8751 var trailing = $2;
8752 var rest = $3;
8753 if (rest.length || trailing.length) {
8754 rest = rest.flat();
8755 return processCallMemberExpression({
8756 type: "CallExpression",
8757 children: [member, ...trailing, ...rest]
8758 });
8759 }
8760 return member;
8761});
8762var CallExpression$$ = [CallExpression$0, CallExpression$1, CallExpression$2, CallExpression$3];
8763function CallExpression(ctx, state2) {
8764 return (0, import_lib3.$EVENT_C)(ctx, state2, "CallExpression", CallExpression$$);
8765}
8766var CallExpressionRest$0 = MemberExpressionRest;
8767var CallExpressionRest$1 = (0, import_lib3.$T)((0, import_lib3.$S)(TypeArguments, (0, import_lib3.$N)((0, import_lib3.$C)(IdentifierName, NumericLiteral))), function(value) {
8768 return value[0];
8769});
8770var CallExpressionRest$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R8, "CallExpressionRest /(?=['\"`])/"), (0, import_lib3.$C)(TemplateLiteral, StringLiteral)), function($skip, $loc, $0, $1, $2) {
8771 var literal = $2;
8772 if (literal.type === "StringLiteral") {
8773 literal = "`" + literal.token.slice(1, -1).replace(/(`|\$\{)/g, "\\$1") + "`";
8774 }
8775 return literal;
8776});
8777var CallExpressionRest$3 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(OptionalShorthand), ArgumentsWithTrailingMemberExpressions), function($skip, $loc, $0, $1, $2) {
8778 var optional = $1;
8779 var argsWithTrailing = $2;
8780 if (!optional)
8781 return argsWithTrailing;
8782 const call = argsWithTrailing[0];
8783 return [{
8784 ...call,
8785 children: [optional, ...call.children],
8786 optional
8787 }, ...argsWithTrailing.slice(1)];
8788});
8789var CallExpressionRest$$ = [CallExpressionRest$0, CallExpressionRest$1, CallExpressionRest$2, CallExpressionRest$3];
8790function CallExpressionRest(ctx, state2) {
8791 return (0, import_lib3.$EVENT_C)(ctx, state2, "CallExpressionRest", CallExpressionRest$$);
8792}
8793var OptionalShorthand$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R9, "OptionalShorthand /(?=[\\/?])/"), (0, import_lib3.$Q)(InlineComment), QuestionMark, OptionalDot), function($skip, $loc, $0, $1, $2, $3, $4) {
8794 var comments = $2;
8795 var q = $3;
8796 var d = $4;
8797 return {
8798 type: "Optional",
8799 children: [...comments, q, d]
8800 };
8801});
8802function OptionalShorthand(ctx, state2) {
8803 return (0, import_lib3.$EVENT)(ctx, state2, "OptionalShorthand", OptionalShorthand$0);
8804}
8805var OptionalDot$0 = (0, import_lib3.$S)((0, import_lib3.$Q)(InlineComment), Dot);
8806var OptionalDot$1 = InsertDot;
8807var OptionalDot$$ = [OptionalDot$0, OptionalDot$1];
8808function OptionalDot(ctx, state2) {
8809 return (0, import_lib3.$EVENT_C)(ctx, state2, "OptionalDot", OptionalDot$$);
8810}
8811var NonNullAssertion$0 = (0, import_lib3.$T)((0, import_lib3.$S)(ExclamationPoint, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($L22, 'NonNullAssertion "^"'))), function(value) {
8812 return { "type": "NonNullAssertion", "ts": true, "children": [value[0]] };
8813});
8814function NonNullAssertion(ctx, state2) {
8815 return (0, import_lib3.$EVENT)(ctx, state2, "NonNullAssertion", NonNullAssertion$0);
8816}
8817var MemberExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(MemberBase, (0, import_lib3.$Q)(MemberExpressionRest)), function($skip, $loc, $0, $1, $2) {
8818 var rest = $2;
8819 if (rest.length || Array.isArray($1)) {
8820 return processCallMemberExpression({
8821 type: "MemberExpression",
8822 children: [$1, ...rest].flat()
8823 });
8824 }
8825 return $1;
8826});
8827function MemberExpression(ctx, state2) {
8828 return (0, import_lib3.$EVENT)(ctx, state2, "MemberExpression", MemberExpression$0);
8829}
8830var ActualMemberExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(MemberBase, (0, import_lib3.$P)(MemberExpressionRest)), function($skip, $loc, $0, $1, $2) {
8831 var rest = $2;
8832 return processCallMemberExpression({
8833 type: "MemberExpression",
8834 children: [$1, ...rest].flat()
8835 });
8836});
8837function ActualMemberExpression(ctx, state2) {
8838 return (0, import_lib3.$EVENT)(ctx, state2, "ActualMemberExpression", ActualMemberExpression$0);
8839}
8840var MemberBase$0 = PrimaryExpression;
8841var MemberBase$1 = SuperProperty;
8842var MemberBase$2 = MetaProperty;
8843var MemberBase$$ = [MemberBase$0, MemberBase$1, MemberBase$2];
8844function MemberBase(ctx, state2) {
8845 return (0, import_lib3.$EVENT_C)(ctx, state2, "MemberBase", MemberBase$$);
8846}
8847var MemberExpressionRest$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R10, "MemberExpressionRest /(?=[\\/\\[{?.!@#'\u2019:])/"), (0, import_lib3.$Q)(InlineComment), MemberExpressionRestBody), function($skip, $loc, $0, $1, $2, $3) {
8848 var comments = $2;
8849 var body = $3;
8850 if (Array.isArray(body))
8851 return [...comments, ...body];
8852 return {
8853 ...body,
8854 children: [...comments, ...body.children]
8855 };
8856});
8857function MemberExpressionRest(ctx, state2) {
8858 return (0, import_lib3.$EVENT)(ctx, state2, "MemberExpressionRest", MemberExpressionRest$0);
8859}
8860var MemberExpressionRestBody$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(OptionalShorthand), (0, import_lib3.$Q)(InlineComment), MemberBracketContent), function($skip, $loc, $0, $1, $2, $3) {
8861 var dot = $1;
8862 var comments = $2;
8863 var content = $3;
8864 if (!dot && !comments.length)
8865 return content;
8866 if (dot) {
8867 if (dot.type === "Optional" && content.type === "SliceExpression") {
8868 return [...dot.children.slice(0, -1), ...comments, content];
8869 }
8870 return {
8871 ...content,
8872 children: [dot, ...comments, ...content.children],
8873 optional: dot
8874 };
8875 }
8876 return [...comments, content];
8877});
8878var MemberExpressionRestBody$1 = PropertyAccess;
8879var MemberExpressionRestBody$2 = PropertyGlob;
8880var MemberExpressionRestBody$3 = PropertyBind;
8881var MemberExpressionRestBody$4 = NonNullAssertion;
8882var MemberExpressionRestBody$$ = [MemberExpressionRestBody$0, MemberExpressionRestBody$1, MemberExpressionRestBody$2, MemberExpressionRestBody$3, MemberExpressionRestBody$4];
8883function MemberExpressionRestBody(ctx, state2) {
8884 return (0, import_lib3.$EVENT_C)(ctx, state2, "MemberExpressionRestBody", MemberExpressionRestBody$$);
8885}
8886var MemberBracketContent$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBracket, (0, import_lib3.$C)(SliceParameters, PostfixedExpression), __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
8887 var open = $1;
8888 var expression = $2;
8889 var ws = $3;
8890 var close = $4;
8891 if (expression.type === "SliceParameters") {
8892 const { start, end, children } = expression;
8893 return {
8894 type: "SliceExpression",
8895 start,
8896 end,
8897 children: [
8898 { ...open, token: ".slice(" },
8899 ...children,
8900 [...ws, { ...close, token: ")" }]
8901 ]
8902 };
8903 }
8904 return {
8905 type: "Index",
8906 children: $0,
8907 expression
8908 };
8909});
8910function MemberBracketContent(ctx, state2) {
8911 return (0, import_lib3.$EVENT)(ctx, state2, "MemberBracketContent", MemberBracketContent$0);
8912}
8913var SliceParameters$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ExtendedExpression, __, (0, import_lib3.$C)(DotDotDot, DotDot), (0, import_lib3.$E)(ExtendedExpression)), function($skip, $loc, $0, $1, $2, $3, $4) {
8914 var start = $1;
8915 var ws = $2;
8916 var sep = $3;
8917 var end = $4;
8918 const inclusive = sep.token === "..";
8919 let children;
8920 if (end) {
8921 const inc = [];
8922 if (inclusive) {
8923 end = ["1 + ", end];
8924 inc.push(" || 1/0");
8925 }
8926 children = [start, [...ws, { ...sep, token: ", " }], [end, ...inc]];
8927 } else {
8928 children = [start, ws];
8929 }
8930 return {
8931 type: "SliceParameters",
8932 start,
8933 end,
8934 children
8935 };
8936});
8937var SliceParameters$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Loc, __, (0, import_lib3.$C)(DotDotDot, DotDot), ExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4) {
8938 var l = $1;
8939 var ws = $2;
8940 var sep = $3;
8941 var end = $4;
8942 const inclusive = sep.token === "..";
8943 const inc = [];
8944 if (inclusive) {
8945 end = ["1 + ", end];
8946 inc.push(" || 1/0");
8947 }
8948 const start = {
8949 $loc: l.$loc,
8950 token: "0"
8951 };
8952 return {
8953 type: "SliceParameters",
8954 start,
8955 end,
8956 children: [start, [...ws, { ...sep, token: ", " }], [end, ...inc]]
8957 };
8958});
8959var SliceParameters$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(Loc, __, (0, import_lib3.$C)(DotDot, DotDotDot), (0, import_lib3.$Y)((0, import_lib3.$S)(__, CloseBracket))), function($skip, $loc, $0, $1, $2, $3, $4) {
8960 var l = $1;
8961 var ws = $2;
8962 const start = {
8963 $loc: l.$loc,
8964 token: "0"
8965 };
8966 return {
8967 type: "SliceParameters",
8968 start,
8969 end: void 0,
8970 children: [start, ws]
8971 };
8972});
8973var SliceParameters$$ = [SliceParameters$0, SliceParameters$1, SliceParameters$2];
8974function SliceParameters(ctx, state2) {
8975 return (0, import_lib3.$EVENT_C)(ctx, state2, "SliceParameters", SliceParameters$$);
8976}
8977var AccessStart$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(PropertyAccessModifier), Dot, (0, import_lib3.$N)(Dot)), function($skip, $loc, $0, $1, $2, $3) {
8978 var modifier = $1;
8979 var dot = $2;
8980 return {
8981 type: "AccessStart",
8982 children: modifier ? [modifier, dot] : [dot],
8983 optional: modifier?.token === "?"
8984 };
8985});
8986function AccessStart(ctx, state2) {
8987 return (0, import_lib3.$EVENT)(ctx, state2, "AccessStart", AccessStart$0);
8988}
8989var ImplicitAccessStart$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(PropertyAccessModifier), InsertDot, (0, import_lib3.$N)(Dot)), function($skip, $loc, $0, $1, $2, $3) {
8990 var modifier = $1;
8991 var dot = $2;
8992 return {
8993 type: "AccessStart",
8994 children: modifier ? [modifier, dot] : [dot],
8995 optional: modifier?.token === "?"
8996 };
8997});
8998function ImplicitAccessStart(ctx, state2) {
8999 return (0, import_lib3.$EVENT)(ctx, state2, "ImplicitAccessStart", ImplicitAccessStart$0);
9000}
9001var PropertyAccessModifier$0 = QuestionMark;
9002var PropertyAccessModifier$1 = NonNullAssertion;
9003var PropertyAccessModifier$$ = [PropertyAccessModifier$0, PropertyAccessModifier$1];
9004function PropertyAccessModifier(ctx, state2) {
9005 return (0, import_lib3.$EVENT_C)(ctx, state2, "PropertyAccessModifier", PropertyAccessModifier$$);
9006}
9007var PropertyAccess$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(AccessStart, (0, import_lib3.$C)(TemplateLiteral, StringLiteral, IntegerLiteral)), function($skip, $loc, $0, $1, $2) {
9008 var dot = $1;
9009 var literal = $2;
9010 return {
9011 type: "Index",
9012 children: [
9013 adjustIndexAccess(dot),
9014 literal,
9015 "]"
9016 ]
9017 };
9018});
9019var PropertyAccess$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(AccessStart, (0, import_lib3.$EXPECT)($L23, 'PropertyAccess "-"'), IntegerLiteral), function($skip, $loc, $0, $1, $2, $3) {
9020 var dot = $1;
9021 var neg = $2;
9022 var num = $3;
9023 const len3 = {
9024 children: []
9025 }, children = [
9026 adjustIndexAccess(dot),
9027 len3,
9028 neg,
9029 num,
9030 "]"
9031 ];
9032 return {
9033 type: "NegativeIndex",
9034 children,
9035 len: len3
9036 };
9037});
9038var PropertyAccess$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(AccessStart, (0, import_lib3.$Q)(InlineComment), (0, import_lib3.$C)(IdentifierName, PrivateIdentifier, LengthShorthand)), function($skip, $loc, $0, $1, $2, $3) {
9039 var dot = $1;
9040 var comments = $2;
9041 var id = $3;
9042 return {
9043 type: "PropertyAccess",
9044 name: id.name,
9045 dot,
9046 children: [dot, ...comments, ...id.children]
9047 };
9048});
9049var PropertyAccess$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(ImplicitAccessStart, (0, import_lib3.$C)(PrivateIdentifier, LengthShorthand)), function($skip, $loc, $0, $1, $2) {
9050 var dot = $1;
9051 var id = $2;
9052 return {
9053 type: "PropertyAccess",
9054 name: id.name,
9055 dot,
9056 children: [dot, ...id.children]
9057 };
9058});
9059var PropertyAccess$4 = (0, import_lib3.$TS)((0, import_lib3.$S)(CoffeePrototypeEnabled, (0, import_lib3.$E)(PropertyAccessModifier), DoubleColon, (0, import_lib3.$E)(IdentifierName)), function($skip, $loc, $0, $1, $2, $3, $4) {
9060 var modifier = $2;
9061 var p = $3;
9062 var id = $4;
9063 const dot = { token: ".", $loc: p.$loc };
9064 const start = {
9065 type: "AccessStart",
9066 children: modifier ? [modifier, dot] : [dot],
9067 optional: modifier?.token === "?"
9068 };
9069 if (id) {
9070 return {
9071 type: "PropertyAccess",
9072 name: id.name,
9073 dot: start,
9074 children: [start, "prototype.", id]
9075 };
9076 } else {
9077 return {
9078 type: "PropertyAccess",
9079 name: "prototype",
9080 dot: start,
9081 children: [start, "prototype"]
9082 };
9083 }
9084});
9085var PropertyAccess$$ = [PropertyAccess$0, PropertyAccess$1, PropertyAccess$2, PropertyAccess$3, PropertyAccess$4];
9086function PropertyAccess(ctx, state2) {
9087 return (0, import_lib3.$EVENT_C)(ctx, state2, "PropertyAccess", PropertyAccess$$);
9088}
9089var PropertyGlob$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(PropertyAccessModifier), OptionalDot), (0, import_lib3.$Q)(InlineComment), BracedObjectLiteral), function($skip, $loc, $0, $1, $2, $3) {
9090 var dot = $1;
9091 var object = $3;
9092 return {
9093 type: "PropertyGlob",
9094 dot,
9095 object,
9096 children: $0
9097 };
9098});
9099function PropertyGlob(ctx, state2) {
9100 return (0, import_lib3.$EVENT)(ctx, state2, "PropertyGlob", PropertyGlob$0);
9101}
9102var PropertyBind$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(PropertyAccessModifier), At, OptionalDot, (0, import_lib3.$C)(IdentifierName, PrivateIdentifier), (0, import_lib3.$E)(Arguments)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
9103 var modifier = $1;
9104 var dot = $3;
9105 var id = $4;
9106 var args = $5;
9107 return {
9108 type: "PropertyBind",
9109 name: id.name,
9110 children: [modifier, dot, id],
9111 // omit `@` from children
9112 args: args?.children.slice(1, -1) ?? []
9113 // remove the parens from the arg list, or give an empty list
9114 };
9115});
9116function PropertyBind(ctx, state2) {
9117 return (0, import_lib3.$EVENT)(ctx, state2, "PropertyBind", PropertyBind$0);
9118}
9119var SuperProperty$0 = (0, import_lib3.$S)(Super, MemberBracketContent);
9120var SuperProperty$1 = (0, import_lib3.$S)(Super, (0, import_lib3.$N)(PropertyAccessModifier), PropertyAccess);
9121var SuperProperty$$ = [SuperProperty$0, SuperProperty$1];
9122function SuperProperty(ctx, state2) {
9123 return (0, import_lib3.$EVENT_C)(ctx, state2, "SuperProperty", SuperProperty$$);
9124}
9125var MetaProperty$0 = (0, import_lib3.$S)(New, Dot, Target);
9126var MetaProperty$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L24, 'MetaProperty "import.meta"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
9127 return { $loc, token: $1 };
9128});
9129var MetaProperty$2 = ReturnValue;
9130var MetaProperty$$ = [MetaProperty$0, MetaProperty$1, MetaProperty$2];
9131function MetaProperty(ctx, state2) {
9132 return (0, import_lib3.$EVENT_C)(ctx, state2, "MetaProperty", MetaProperty$$);
9133}
9134var ReturnValue$0 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L25, 'ReturnValue "return.value"'), NonIdContinue), (0, import_lib3.$S)(Return, (0, import_lib3.$Y)(AfterReturnShorthand))), function($skip, $loc, $0, $1) {
9135 return { type: "ReturnValue", children: [$1[0]] };
9136});
9137function ReturnValue(ctx, state2) {
9138 return (0, import_lib3.$EVENT)(ctx, state2, "ReturnValue", ReturnValue$0);
9139}
9140var AfterReturnShorthand$0 = WAssignmentOp;
9141var AfterReturnShorthand$1 = UpdateExpressionSymbol;
9142var AfterReturnShorthand$2 = TypeSuffix;
9143var AfterReturnShorthand$3 = (0, import_lib3.$S)(__, LetAssignment);
9144var AfterReturnShorthand$4 = (0, import_lib3.$S)(__, ConstAssignment);
9145var AfterReturnShorthand$$ = [AfterReturnShorthand$0, AfterReturnShorthand$1, AfterReturnShorthand$2, AfterReturnShorthand$3, AfterReturnShorthand$4];
9146function AfterReturnShorthand(ctx, state2) {
9147 return (0, import_lib3.$EVENT_C)(ctx, state2, "AfterReturnShorthand", AfterReturnShorthand$$);
9148}
9149var Parameters$0 = NonEmptyParameters;
9150var Parameters$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(TypeParameters), Loc), function($skip, $loc, $0, $1, $2) {
9151 var tp = $1;
9152 var p = $2;
9153 return {
9154 type: "Parameters",
9155 children: [tp, { $loc: p.$loc, token: "()" }],
9156 tp,
9157 names: [],
9158 implicit: true
9159 };
9160});
9161var Parameters$$ = [Parameters$0, Parameters$1];
9162function Parameters(ctx, state2) {
9163 return (0, import_lib3.$EVENT_C)(ctx, state2, "Parameters", Parameters$$);
9164}
9165var ShortArrowParameters$0 = ObjectBindingPattern;
9166var ShortArrowParameters$1 = ArrayBindingPattern;
9167var ShortArrowParameters$$ = [ShortArrowParameters$0, ShortArrowParameters$1];
9168function ShortArrowParameters(ctx, state2) {
9169 return (0, import_lib3.$EVENT_C)(ctx, state2, "ShortArrowParameters", ShortArrowParameters$$);
9170}
9171var ArrowParameters$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ShortArrowParameters), function($skip, $loc, $0, $1) {
9172 return {
9173 type: "Parameters",
9174 children: ["(", $0, ")"],
9175 names: $0.names
9176 };
9177});
9178var ArrowParameters$1 = Parameters;
9179var ArrowParameters$$ = [ArrowParameters$0, ArrowParameters$1];
9180function ArrowParameters(ctx, state2) {
9181 return (0, import_lib3.$EVENT_C)(ctx, state2, "ArrowParameters", ArrowParameters$$);
9182}
9183var NonEmptyParameters$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(TypeParameters), OpenParen, ParameterList, (0, import_lib3.$S)(__, CloseParen)), function($skip, $loc, $0, $1, $2, $3, $4) {
9184 var tp = $1;
9185 var open = $2;
9186 var params = $3;
9187 var close = $4;
9188 let tt, before = [], rest, after = [], errors = [];
9189 function append(p) {
9190 (rest ? after : before).push(p);
9191 }
9192 for (const param of params) {
9193 switch (param.type) {
9194 case "ThisType":
9195 if (tt) {
9196 append({
9197 type: "Error",
9198 message: "Only one typed this parameter is allowed"
9199 });
9200 append(param);
9201 } else {
9202 tt = insertTrimmingSpace(param, "");
9203 if (before.length || rest) {
9204 let delim = tt.children.at(-1);
9205 if (Array.isArray(delim))
9206 delim = delim.at(-1);
9207 if (delim?.token !== ",") {
9208 tt = {
9209 ...tt,
9210 children: [...tt.children, ", "]
9211 };
9212 }
9213 }
9214 }
9215 break;
9216 case "FunctionRestParameter":
9217 if (rest) {
9218 append({
9219 type: "Error",
9220 message: "Only one rest parameter is allowed"
9221 });
9222 append(param);
9223 } else {
9224 rest = param;
9225 }
9226 break;
9227 default:
9228 append(param);
9229 }
9230 }
9231 const names = before.flatMap((p) => p.names);
9232 if (rest) {
9233 const restIdentifier = rest.binding.ref || rest.binding;
9234 names.push(...rest.names || []);
9235 let blockPrefix;
9236 if (after.length) {
9237 blockPrefix = {
9238 children: ["[", insertTrimmingSpace(after, ""), "] = ", restIdentifier, ".splice(-", after.length.toString(), ")"],
9239 names: after.flatMap((p) => p.names)
9240 };
9241 }
9242 return {
9243 type: "Parameters",
9244 children: [
9245 tp,
9246 open,
9247 tt,
9248 ...before,
9249 // Remove delimiter
9250 { ...rest, children: rest.children.slice(0, -1) },
9251 close
9252 ],
9253 tp,
9254 names,
9255 blockPrefix
9256 };
9257 }
9258 return {
9259 type: "Parameters",
9260 children: [tp, open, tt, ...before, close],
9261 names,
9262 tp
9263 };
9264});
9265function NonEmptyParameters(ctx, state2) {
9266 return (0, import_lib3.$EVENT)(ctx, state2, "NonEmptyParameters", NonEmptyParameters$0);
9267}
9268var ParameterList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)(Parameter), NestedParameterList), function($skip, $loc, $0, $1, $2) {
9269 return [...$1, ...$2];
9270});
9271var ParameterList$1 = (0, import_lib3.$TV)((0, import_lib3.$Q)((0, import_lib3.$S)(__, Parameter)), function($skip, $loc, $0, $1) {
9272 return $1.map(([eos, p]) => ({
9273 ...p,
9274 children: [eos, ...p.children]
9275 }));
9276});
9277var ParameterList$$ = [ParameterList$0, ParameterList$1];
9278function ParameterList(ctx, state2) {
9279 return (0, import_lib3.$EVENT_C)(ctx, state2, "ParameterList", ParameterList$$);
9280}
9281var NestedParameterList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedParameter), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
9282 var params = $2;
9283 if (!params.length)
9284 return $skip;
9285 return params;
9286});
9287function NestedParameterList(ctx, state2) {
9288 return (0, import_lib3.$EVENT)(ctx, state2, "NestedParameterList", NestedParameterList$0);
9289}
9290var NestedParameter$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, (0, import_lib3.$P)(Parameter)), function($skip, $loc, $0, $1, $2) {
9291 var ws = $1;
9292 var params = $2;
9293 params = [...params];
9294 params[0] = prepend(ws, params[0]);
9295 return params;
9296});
9297function NestedParameter(ctx, state2) {
9298 return (0, import_lib3.$EVENT)(ctx, state2, "NestedParameter", NestedParameter$0);
9299}
9300var Parameter$0 = ThisType;
9301var Parameter$1 = ParameterElement;
9302var Parameter$2 = FunctionRestParameter;
9303var Parameter$$ = [Parameter$0, Parameter$1, Parameter$2];
9304function Parameter(ctx, state2) {
9305 return (0, import_lib3.$EVENT_C)(ctx, state2, "Parameter", Parameter$$);
9306}
9307var FunctionRestParameter$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), BindingRestElement, (0, import_lib3.$E)(TypeSuffix), ParameterElementDelimiter), function($skip, $loc, $0, $1, $2, $3, $4) {
9308 var id = $2;
9309 return {
9310 type: "FunctionRestParameter",
9311 children: $0.slice(1),
9312 names: id.names,
9313 binding: id.binding
9314 };
9315});
9316function FunctionRestParameter(ctx, state2) {
9317 return (0, import_lib3.$EVENT)(ctx, state2, "FunctionRestParameter", FunctionRestParameter$0);
9318}
9319var ParameterElement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$E)(AccessModifier), (0, import_lib3.$E)(_), (0, import_lib3.$C)(NWBindingIdentifier, BindingPattern), (0, import_lib3.$E)(TypeSuffix), (0, import_lib3.$E)(Initializer), ParameterElementDelimiter), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
9320 var accessModifier = $2;
9321 var binding = $4;
9322 var typeSuffix = $5;
9323 var initializer = $6;
9324 var delim = $7;
9325 return {
9326 type: "Parameter",
9327 children: $0,
9328 names: binding.names,
9329 typeSuffix,
9330 accessModifier,
9331 initializer,
9332 delim
9333 };
9334});
9335function ParameterElement(ctx, state2) {
9336 return (0, import_lib3.$EVENT)(ctx, state2, "ParameterElement", ParameterElement$0);
9337}
9338var ParameterElementDelimiter$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), Comma);
9339var ParameterElementDelimiter$1 = (0, import_lib3.$Y)((0, import_lib3.$S)(__, (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R11, "ParameterElementDelimiter /[)}]/"))));
9340var ParameterElementDelimiter$2 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$Y)(EOS), InsertComma), function(value) {
9341 return value[1];
9342});
9343var ParameterElementDelimiter$$ = [ParameterElementDelimiter$0, ParameterElementDelimiter$1, ParameterElementDelimiter$2];
9344function ParameterElementDelimiter(ctx, state2) {
9345 return (0, import_lib3.$EVENT_C)(ctx, state2, "ParameterElementDelimiter", ParameterElementDelimiter$$);
9346}
9347var BindingIdentifier$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, NWBindingIdentifier), function($skip, $loc, $0, $1, $2) {
9348 var ws = $1;
9349 var identifier = $2;
9350 return prepend(ws, identifier);
9351});
9352function BindingIdentifier(ctx, state2) {
9353 return (0, import_lib3.$EVENT)(ctx, state2, "BindingIdentifier", BindingIdentifier$0);
9354}
9355var NWBindingIdentifier$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(At, AtIdentifierRef), function($skip, $loc, $0, $1, $2) {
9356 var ref = $2;
9357 return {
9358 type: "AtBinding",
9359 children: [ref],
9360 ref
9361 };
9362});
9363var NWBindingIdentifier$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Hash, AtIdentifierRef), function($skip, $loc, $0, $1, $2) {
9364 var ref = $2;
9365 ref = { ...ref, id: `#${ref.id}` };
9366 return {
9367 type: "AtBinding",
9368 children: [ref],
9369 ref
9370 };
9371});
9372var NWBindingIdentifier$2 = Identifier;
9373var NWBindingIdentifier$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(ReturnValue), function($skip, $loc, $0, $1) {
9374 return { children: [$1], names: [] };
9375});
9376var NWBindingIdentifier$$ = [NWBindingIdentifier$0, NWBindingIdentifier$1, NWBindingIdentifier$2, NWBindingIdentifier$3];
9377function NWBindingIdentifier(ctx, state2) {
9378 return (0, import_lib3.$EVENT_C)(ctx, state2, "NWBindingIdentifier", NWBindingIdentifier$$);
9379}
9380var AtIdentifierRef$0 = (0, import_lib3.$TV)(ReservedWord, function($skip, $loc, $0, $1) {
9381 var r = $0;
9382 return makeRef(`_${r}`, r);
9383});
9384var AtIdentifierRef$1 = (0, import_lib3.$TV)(IdentifierName, function($skip, $loc, $0, $1) {
9385 var id = $0;
9386 return makeRef(id.name);
9387});
9388var AtIdentifierRef$$ = [AtIdentifierRef$0, AtIdentifierRef$1];
9389function AtIdentifierRef(ctx, state2) {
9390 return (0, import_lib3.$EVENT_C)(ctx, state2, "AtIdentifierRef", AtIdentifierRef$$);
9391}
9392var PinPattern$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Caret, SingleLineExpressionWithIndentedApplicationForbidden), function($skip, $loc, $0, $1, $2) {
9393 var expression = $2;
9394 return {
9395 type: "PinPattern",
9396 children: $0,
9397 expression
9398 };
9399});
9400var PinPattern$1 = (0, import_lib3.$TV)(ActualMemberExpression, function($skip, $loc, $0, $1) {
9401 var expression = $0;
9402 return {
9403 type: "PinPattern",
9404 children: [expression],
9405 expression
9406 };
9407});
9408var PinPattern$2 = (0, import_lib3.$TV)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R12, "PinPattern /[+-]/"), NumericLiteral), function($skip, $loc, $0, $1) {
9409 var expression = $0;
9410 return {
9411 type: "PinPattern",
9412 children: [expression],
9413 expression
9414 };
9415});
9416var PinPattern$3 = (0, import_lib3.$TV)(Undefined, function($skip, $loc, $0, $1) {
9417 var expression = $0;
9418 return {
9419 type: "PinPattern",
9420 children: [expression],
9421 expression
9422 };
9423});
9424var PinPattern$$ = [PinPattern$0, PinPattern$1, PinPattern$2, PinPattern$3];
9425function PinPattern(ctx, state2) {
9426 return (0, import_lib3.$EVENT_C)(ctx, state2, "PinPattern", PinPattern$$);
9427}
9428var BindingPattern$0 = ObjectBindingPattern;
9429var BindingPattern$1 = ArrayBindingPattern;
9430var BindingPattern$2 = PinPattern;
9431var BindingPattern$3 = Literal;
9432var BindingPattern$4 = RegularExpressionLiteral;
9433var BindingPattern$$ = [BindingPattern$0, BindingPattern$1, BindingPattern$2, BindingPattern$3, BindingPattern$4];
9434function BindingPattern(ctx, state2) {
9435 return (0, import_lib3.$EVENT_C)(ctx, state2, "BindingPattern", BindingPattern$$);
9436}
9437var ObjectBindingPattern$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), OpenBrace, ObjectBindingPatternContent, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
9438 var ws1 = $1;
9439 var open = $2;
9440 var c = $3;
9441 var ws2 = $4;
9442 var close = $5;
9443 return {
9444 type: "ObjectBindingPattern",
9445 children: [ws1, open, c.children, ws2, close],
9446 names: c.names,
9447 properties: c.children
9448 };
9449});
9450function ObjectBindingPattern(ctx, state2) {
9451 return (0, import_lib3.$EVENT)(ctx, state2, "ObjectBindingPattern", ObjectBindingPattern$0);
9452}
9453var ObjectBindingPatternContent$0 = NestedBindingProperties;
9454var ObjectBindingPatternContent$1 = (0, import_lib3.$TV)((0, import_lib3.$E)(BindingPropertyList), function($skip, $loc, $0, $1) {
9455 var props = $0;
9456 if (!props)
9457 return { children: [], names: [] };
9458 return reorderBindingRestProperty(props);
9459});
9460var ObjectBindingPatternContent$$ = [ObjectBindingPatternContent$0, ObjectBindingPatternContent$1];
9461function ObjectBindingPatternContent(ctx, state2) {
9462 return (0, import_lib3.$EVENT_C)(ctx, state2, "ObjectBindingPatternContent", ObjectBindingPatternContent$$);
9463}
9464var BindingPropertyList$0 = (0, import_lib3.$TV)((0, import_lib3.$P)((0, import_lib3.$S)(BindingProperty, ObjectPropertyDelimiter)), function($skip, $loc, $0, $1) {
9465 var props = $0;
9466 return props.map(([prop, delim]) => {
9467 return {
9468 ...prop,
9469 delim,
9470 children: [...prop.children, delim]
9471 };
9472 });
9473});
9474function BindingPropertyList(ctx, state2) {
9475 return (0, import_lib3.$EVENT)(ctx, state2, "BindingPropertyList", BindingPropertyList$0);
9476}
9477var ArrayBindingPattern$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), OpenBracket, ArrayBindingPatternContent, __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
9478 var ws1 = $1;
9479 var open = $2;
9480 var c = $3;
9481 var ws2 = $4;
9482 var close = $5;
9483 return {
9484 ...c,
9485 // names, blockPrefix, length
9486 type: "ArrayBindingPattern",
9487 elements: c.children,
9488 children: [ws1, open, c.children, ws2, close]
9489 };
9490});
9491function ArrayBindingPattern(ctx, state2) {
9492 return (0, import_lib3.$EVENT)(ctx, state2, "ArrayBindingPattern", ArrayBindingPattern$0);
9493}
9494var ArrayBindingPatternContent$0 = NestedBindingElements;
9495var ArrayBindingPatternContent$1 = (0, import_lib3.$TV)((0, import_lib3.$E)(BindingElementList), function($skip, $loc, $0, $1) {
9496 var elements = $0;
9497 if (!elements)
9498 return { children: [], names: [], length: 0 };
9499 return adjustBindingElements(elements);
9500});
9501var ArrayBindingPatternContent$$ = [ArrayBindingPatternContent$0, ArrayBindingPatternContent$1];
9502function ArrayBindingPatternContent(ctx, state2) {
9503 return (0, import_lib3.$EVENT_C)(ctx, state2, "ArrayBindingPatternContent", ArrayBindingPatternContent$$);
9504}
9505var BindingElementList$0 = (0, import_lib3.$TV)((0, import_lib3.$P)((0, import_lib3.$S)(BindingElement, ArrayElementDelimiter)), function($skip, $loc, $0, $1) {
9506 var elements = $0;
9507 return elements.map(([element, delim]) => {
9508 return {
9509 ...element,
9510 // BindingElement.children is a tuple of the form [ws, element]
9511 children: [...element.children, delim]
9512 };
9513 });
9514});
9515function BindingElementList(ctx, state2) {
9516 return (0, import_lib3.$EVENT)(ctx, state2, "BindingElementList", BindingElementList$0);
9517}
9518var NestedBindingElementList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, BindingElementList), function($skip, $loc, $0, $1, $2) {
9519 var indent = $1;
9520 var elements = $2;
9521 return elements.map((element, i) => {
9522 if (i > 0)
9523 return element;
9524 return {
9525 ...element,
9526 children: [indent, ...element.children.slice(1)]
9527 // replace ws wth indent
9528 };
9529 });
9530});
9531function NestedBindingElementList(ctx, state2) {
9532 return (0, import_lib3.$EVENT)(ctx, state2, "NestedBindingElementList", NestedBindingElementList$0);
9533}
9534var Elision$0 = (0, import_lib3.$S)(__, Comma);
9535function Elision(ctx, state2) {
9536 return (0, import_lib3.$EVENT)(ctx, state2, "Elision", Elision$0);
9537}
9538var NestedBindingProperties$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedBindingPropertyList), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
9539 var props = $2;
9540 if (!props.length)
9541 return $skip;
9542 return reorderBindingRestProperty(props.flat());
9543});
9544function NestedBindingProperties(ctx, state2) {
9545 return (0, import_lib3.$EVENT)(ctx, state2, "NestedBindingProperties", NestedBindingProperties$0);
9546}
9547var NestedBindingPropertyList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, BindingPropertyList), function($skip, $loc, $0, $1, $2) {
9548 var ws = $1;
9549 var props = $2;
9550 return props.map((prop, i) => {
9551 if (i > 0)
9552 return prop;
9553 return prepend(ws, prop);
9554 });
9555});
9556function NestedBindingPropertyList(ctx, state2) {
9557 return (0, import_lib3.$EVENT)(ctx, state2, "NestedBindingPropertyList", NestedBindingPropertyList$0);
9558}
9559var BindingProperty$0 = BindingRestProperty;
9560var BindingProperty$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), PropertyName, (0, import_lib3.$E)(_), Colon, (0, import_lib3.$E)(_), (0, import_lib3.$C)(BindingIdentifier, BindingPattern), (0, import_lib3.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
9561 var name = $2;
9562 var value = $6;
9563 var initializer = $7;
9564 return {
9565 type: "BindingProperty",
9566 children: $0,
9567 name,
9568 value,
9569 initializer,
9570 names: value.names
9571 };
9572});
9573var BindingProperty$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$E)(Caret), BindingIdentifier, (0, import_lib3.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3, $4) {
9574 var ws = $1;
9575 var pin = $2;
9576 var binding = $3;
9577 var initializer = $4;
9578 if (binding.type === "AtBinding") {
9579 return {
9580 type: "AtBindingProperty",
9581 children: $0,
9582 binding,
9583 ref: binding.ref,
9584 initializer,
9585 names: []
9586 };
9587 }
9588 if (pin) {
9589 return {
9590 type: "PinProperty",
9591 children: [ws, binding],
9592 name: binding,
9593 value: {
9594 type: "PinPattern",
9595 expression: binding
9596 }
9597 };
9598 }
9599 return {
9600 type: "BindingProperty",
9601 children: $0,
9602 name: binding,
9603 value: void 0,
9604 initializer,
9605 names: binding.names,
9606 identifier: binding
9607 };
9608});
9609var BindingProperty$$ = [BindingProperty$0, BindingProperty$1, BindingProperty$2];
9610function BindingProperty(ctx, state2) {
9611 return (0, import_lib3.$EVENT_C)(ctx, state2, "BindingProperty", BindingProperty$$);
9612}
9613var BindingRestProperty$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), DotDotDot, BindingIdentifier), function($skip, $loc, $0, $1, $2, $3) {
9614 var ws = $1;
9615 var dots = $2;
9616 var id = $3;
9617 return {
9618 ...id,
9619 type: "BindingRestProperty",
9620 children: [...ws || [], dots, ...id.children]
9621 };
9622});
9623var BindingRestProperty$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), BindingIdentifier, DotDotDot), function($skip, $loc, $0, $1, $2, $3) {
9624 var ws = $1;
9625 var id = $2;
9626 var dots = $3;
9627 return {
9628 ...id,
9629 type: "BindingRestProperty",
9630 children: [...ws || [], dots, ...id.children]
9631 };
9632});
9633var BindingRestProperty$$ = [BindingRestProperty$0, BindingRestProperty$1];
9634function BindingRestProperty(ctx, state2) {
9635 return (0, import_lib3.$EVENT_C)(ctx, state2, "BindingRestProperty", BindingRestProperty$$);
9636}
9637var NestedBindingElements$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedBindingElementList), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
9638 var elements = $2;
9639 if (!elements.length)
9640 return $skip;
9641 return adjustBindingElements(elements.flat());
9642});
9643function NestedBindingElements(ctx, state2) {
9644 return (0, import_lib3.$EVENT)(ctx, state2, "NestedBindingElements", NestedBindingElements$0);
9645}
9646var BindingElement$0 = BindingRestElement;
9647var BindingElement$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)(BindingIdentifier, BindingPattern), (0, import_lib3.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3) {
9648 var ws = $1;
9649 var binding = $2;
9650 var initializer = $3;
9651 if (binding.children) {
9652 binding = {
9653 ...binding,
9654 initializer,
9655 children: [...binding.children, initializer]
9656 };
9657 }
9658 return {
9659 names: binding.names,
9660 children: [ws, binding]
9661 };
9662});
9663var BindingElement$2 = (0, import_lib3.$TV)((0, import_lib3.$Y)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$EXPECT)($L17, 'BindingElement ","'))), function($skip, $loc, $0, $1) {
9664 return {
9665 children: [{
9666 type: "ElisionElement",
9667 children: [""]
9668 }],
9669 names: []
9670 };
9671});
9672var BindingElement$$ = [BindingElement$0, BindingElement$1, BindingElement$2];
9673function BindingElement(ctx, state2) {
9674 return (0, import_lib3.$EVENT_C)(ctx, state2, "BindingElement", BindingElement$$);
9675}
9676var BindingRestElement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), DotDotDot, (0, import_lib3.$C)(BindingIdentifier, BindingPattern, EmptyBindingPattern)), function($skip, $loc, $0, $1, $2, $3) {
9677 var ws = $1;
9678 var dots = $2;
9679 var binding = $3;
9680 return {
9681 type: "BindingRestElement",
9682 children: [ws, [dots, binding]],
9683 binding,
9684 name: binding.name,
9685 names: binding.names,
9686 rest: true
9687 };
9688});
9689var BindingRestElement$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)(BindingIdentifier, BindingPattern), DotDotDot), function($skip, $loc, $0, $1, $2, $3) {
9690 var ws = $1;
9691 var binding = $2;
9692 var dots = $3;
9693 return {
9694 type: "BindingRestElement",
9695 children: [...ws || [], dots, binding],
9696 binding,
9697 name: binding.name,
9698 names: binding.names,
9699 rest: true
9700 };
9701});
9702var BindingRestElement$$ = [BindingRestElement$0, BindingRestElement$1];
9703function BindingRestElement(ctx, state2) {
9704 return (0, import_lib3.$EVENT_C)(ctx, state2, "BindingRestElement", BindingRestElement$$);
9705}
9706var EmptyBindingPattern$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'EmptyBindingPattern ""'), function($skip, $loc, $0, $1) {
9707 const ref = makeRef();
9708 return {
9709 type: "EmptyBinding",
9710 children: [ref],
9711 names: [],
9712 ref
9713 };
9714});
9715function EmptyBindingPattern(ctx, state2) {
9716 return (0, import_lib3.$EVENT)(ctx, state2, "EmptyBindingPattern", EmptyBindingPattern$0);
9717}
9718var FunctionDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(FunctionExpression), function($skip, $loc, $0, $1) {
9719 if ($1.type !== "FunctionExpression")
9720 return $skip;
9721 if ($1.id)
9722 return $1;
9723 return makeLeftHandSideExpression($1);
9724});
9725function FunctionDeclaration(ctx, state2) {
9726 return (0, import_lib3.$EVENT)(ctx, state2, "FunctionDeclaration", FunctionDeclaration$0);
9727}
9728var FunctionSignature$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Async, _)), Function2, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), Star)), (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), NWBindingIdentifier)), (0, import_lib3.$E)(_), Parameters, (0, import_lib3.$E)(ReturnTypeSuffix)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
9729 var async = $1;
9730 var func = $2;
9731 var generator = $3;
9732 var wid = $4;
9733 var w = $5;
9734 var parameters = $6;
9735 var suffix = $7;
9736 if (!async)
9737 async = [];
9738 if (!generator)
9739 generator = [];
9740 const id = wid?.[1];
9741 return {
9742 type: "FunctionSignature",
9743 id,
9744 name: id?.name,
9745 parameters,
9746 returnType: suffix,
9747 async,
9748 generator,
9749 modifier: {
9750 async: !!async.length,
9751 generator: !!generator.length
9752 },
9753 block: null,
9754 children: !parameters.implicit ? [async, func, generator, wid, w, parameters, suffix] : [async, func, generator, wid, parameters, w, suffix]
9755 // move whitespace w to after implicit () in parameters
9756 };
9757});
9758function FunctionSignature(ctx, state2) {
9759 return (0, import_lib3.$EVENT)(ctx, state2, "FunctionSignature", FunctionSignature$0);
9760}
9761var FunctionExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(FunctionSignature, (0, import_lib3.$E)(BracedBlock)), function($skip, $loc, $0, $1, $2) {
9762 var signature = $1;
9763 var block = $2;
9764 if (!block) {
9765 return {
9766 ...signature,
9767 type: "FunctionExpression",
9768 signature,
9769 ts: true
9770 };
9771 }
9772 return {
9773 ...signature,
9774 type: "FunctionExpression",
9775 signature,
9776 children: [...signature.children, block],
9777 block
9778 };
9779});
9780var FunctionExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(ArrowFunction), OpenParen, BinaryOp, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4) {
9781 var open = $2;
9782 var op = $3;
9783 var close = $4;
9784 if (op.special && op.call && !op.negated)
9785 return op.call;
9786 const refA = makeRef("a"), refB = makeRef("b"), body = processBinaryOpExpression([refA, [
9787 [[], op, [], refB]
9788 // BinaryOpRHS
9789 ]]);
9790 const parameters = {
9791 type: "Parameters",
9792 children: ["(", refA, ",", refB, ")"],
9793 names: []
9794 };
9795 const block = {
9796 expressions: [body]
9797 };
9798 return {
9799 type: "ArrowFunction",
9800 signature: {
9801 modifier: {}
9802 },
9803 children: [open, parameters, " => ", body, close],
9804 body,
9805 parenthesized: true,
9806 parenthesizedOp: op,
9807 block,
9808 parameters
9809 };
9810});
9811var FunctionExpression$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenParen, NonPipelineAssignmentExpression, __, BinaryOp, __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
9812 var open = $1;
9813 var lhs = $2;
9814 var ws1 = $3;
9815 var op = $4;
9816 var ws2 = $5;
9817 var close = $6;
9818 const refB = makeRef("b");
9819 const fn = makeAmpersandFunction({
9820 ref: refB,
9821 body: processBinaryOpExpression([lhs, [
9822 [ws1, op, ws2, refB]
9823 // BinaryOpRHS
9824 ]])
9825 });
9826 return {
9827 type: "ParenthesizedExpression",
9828 children: [open, fn, close],
9829 expression: fn
9830 };
9831});
9832var FunctionExpression$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenParen, (0, import_lib3.$P)((0, import_lib3.$S)(NotDedented, UpdateExpression, WAssignmentOp)), __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4) {
9833 var open = $1;
9834 var lhs = $2;
9835 var ws2 = $3;
9836 var close = $4;
9837 lhs = lhs.map((x) => [x[0], x[1], ...x[2]]);
9838 const refB = makeRef("b");
9839 const fn = makeAmpersandFunction({
9840 ref: refB,
9841 body: {
9842 type: "AssignmentExpression",
9843 children: [lhs, ws2, refB],
9844 names: null,
9845 lhs,
9846 assigned: lhs[0][1],
9847 expression: refB
9848 }
9849 });
9850 return {
9851 type: "ParenthesizedExpression",
9852 children: [open, fn, close],
9853 expression: fn
9854 };
9855});
9856var FunctionExpression$4 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenParen, __, IsLike, __, PatternExpressionList, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
9857 var open = $1;
9858 var ws1 = $2;
9859 var op = $3;
9860 var ws2 = $4;
9861 var rhs = $5;
9862 var close = $6;
9863 const refA = makeRef("a");
9864 const fn = makeAmpersandFunction({
9865 ref: refA,
9866 body: processBinaryOpExpression([refA, [
9867 [ws1, op, ws2, rhs]
9868 // BinaryOpRHS
9869 ]])
9870 });
9871 return {
9872 type: "ParenthesizedExpression",
9873 children: [open, fn, close],
9874 expression: fn
9875 };
9876});
9877var FunctionExpression$5 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenParen, __, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($R13, "FunctionExpression /\\+\\+|--|[\\+\\-&]\\S/")), BinaryOp, __, NonPipelineAssignmentExpression, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
9878 var open = $1;
9879 var ws1 = $2;
9880 var op = $4;
9881 var ws2 = $5;
9882 var rhs = $6;
9883 var close = $7;
9884 const refA = makeRef("a");
9885 const fn = makeAmpersandFunction({
9886 ref: refA,
9887 body: processBinaryOpExpression([refA, [
9888 [ws1, op, ws2, rhs]
9889 // BinaryOpRHS
9890 ]])
9891 });
9892 return {
9893 type: "ParenthesizedExpression",
9894 children: [open, fn, close],
9895 expression: fn
9896 };
9897});
9898var FunctionExpression$$ = [FunctionExpression$0, FunctionExpression$1, FunctionExpression$2, FunctionExpression$3, FunctionExpression$4, FunctionExpression$5];
9899function FunctionExpression(ctx, state2) {
9900 return (0, import_lib3.$EVENT_C)(ctx, state2, "FunctionExpression", FunctionExpression$$);
9901}
9902var OperatorDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Operator, (0, import_lib3.$E)(OperatorBehavior), _, LexicalDeclaration), function($skip, $loc, $0, $1, $2, $3, $4) {
9903 var op = $1;
9904 var behavior = $2;
9905 var w = $3;
9906 var decl = $4;
9907 decl.names.forEach((name) => state.operators.set(name, behavior));
9908 return {
9909 ...decl,
9910 children: [insertTrimmingSpace(w, ""), ...decl.children]
9911 };
9912});
9913var OperatorDeclaration$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(OperatorSignature, BracedBlock), function($skip, $loc, $0, $1, $2) {
9914 var signature = $1;
9915 var block = $2;
9916 state.operators.set(signature.id.name, signature.behavior);
9917 return {
9918 ...signature,
9919 type: "FunctionExpression",
9920 signature,
9921 children: [...signature.children, block],
9922 block,
9923 operator: true
9924 };
9925});
9926var OperatorDeclaration$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(Operator, _, Identifier, (0, import_lib3.$E)(OperatorBehavior), (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, (0, import_lib3.$E)(_), Identifier, (0, import_lib3.$E)(OperatorBehavior)))), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
9927 var op = $1;
9928 var w1 = $2;
9929 var id = $3;
9930 var behavior = $4;
9931 var ids = $5;
9932 state.operators.set(id.name, behavior);
9933 ids.forEach(([, , id2, behavior2]) => state.operators.set(id2.name, behavior2));
9934 return {
9935 id,
9936 children: []
9937 };
9938});
9939var OperatorDeclaration$$ = [OperatorDeclaration$0, OperatorDeclaration$1, OperatorDeclaration$2];
9940function OperatorDeclaration(ctx, state2) {
9941 return (0, import_lib3.$EVENT_C)(ctx, state2, "OperatorDeclaration", OperatorDeclaration$$);
9942}
9943var OperatorSignature$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Async, _)), Operator, (0, import_lib3.$E)((0, import_lib3.$S)(_, Function2)), (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), Star)), _, Identifier, (0, import_lib3.$E)(OperatorBehavior), (0, import_lib3.$E)(_), NonEmptyParameters, (0, import_lib3.$E)(ReturnTypeSuffix)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
9944 var async = $1;
9945 var op = $2;
9946 var func = $3;
9947 var generator = $4;
9948 var w1 = $5;
9949 var id = $6;
9950 var behavior = $7;
9951 var w2 = $8;
9952 var parameters = $9;
9953 var suffix = $10;
9954 if (!async)
9955 async = [];
9956 if (!generator)
9957 generator = [];
9958 if (!func) {
9959 func = { $loc: op.$loc, token: "function" };
9960 } else {
9961 func = [insertTrimmingSpace(func[0], ""), func[1]];
9962 }
9963 return {
9964 type: "FunctionSignature",
9965 id,
9966 name: id.name,
9967 parameters,
9968 returnType: suffix,
9969 async,
9970 generator,
9971 modifier: {
9972 async: !!async.length,
9973 generator: !!generator.length
9974 },
9975 block: null,
9976 children: [async, func, generator, w1, id, w2, parameters, suffix],
9977 behavior
9978 };
9979});
9980function OperatorSignature(ctx, state2) {
9981 return (0, import_lib3.$EVENT)(ctx, state2, "OperatorSignature", OperatorSignature$0);
9982}
9983var OperatorBehavior$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OperatorPrecedence, (0, import_lib3.$E)(OperatorAssociativity)), function($skip, $loc, $0, $1, $2) {
9984 return { ...$1, ...$2 };
9985});
9986var OperatorBehavior$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(OperatorAssociativity, (0, import_lib3.$E)(OperatorPrecedence)), function($skip, $loc, $0, $1, $2) {
9987 return { ...$1, ...$2 };
9988});
9989var OperatorBehavior$$ = [OperatorBehavior$0, OperatorBehavior$1];
9990function OperatorBehavior(ctx, state2) {
9991 return (0, import_lib3.$EVENT_C)(ctx, state2, "OperatorBehavior", OperatorBehavior$$);
9992}
9993var OperatorPrecedence$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)((0, import_lib3.$EXPECT)($L26, 'OperatorPrecedence "tighter"'), (0, import_lib3.$EXPECT)($L27, 'OperatorPrecedence "looser"'), (0, import_lib3.$EXPECT)($L28, 'OperatorPrecedence "same"')), NonIdContinue, (0, import_lib3.$E)(_), (0, import_lib3.$C)(Identifier, (0, import_lib3.$S)(OpenParen, BinaryOp, CloseParen))), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
9994 var mod = $2;
9995 var op = $5;
9996 let prec = op.type === "Identifier" ? state.operators.get(op.name).prec : getPrecedence(op[1]);
9997 switch (mod) {
9998 case "tighter":
9999 prec += 1 / 64;
10000 break;
10001 case "looser":
10002 prec -= 1 / 64;
10003 break;
10004 }
10005 return { prec };
10006});
10007function OperatorPrecedence(ctx, state2) {
10008 return (0, import_lib3.$EVENT)(ctx, state2, "OperatorPrecedence", OperatorPrecedence$0);
10009}
10010var OperatorAssociativity$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)((0, import_lib3.$EXPECT)($L29, 'OperatorAssociativity "left"'), (0, import_lib3.$EXPECT)($L30, 'OperatorAssociativity "right"'), (0, import_lib3.$EXPECT)($L31, 'OperatorAssociativity "non"'), (0, import_lib3.$EXPECT)($L32, 'OperatorAssociativity "relational"'), (0, import_lib3.$EXPECT)($L33, 'OperatorAssociativity "arguments"')), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
10011 var assoc = $2;
10012 if (assoc === "relational") {
10013 return { relational: true, assoc: "non" };
10014 }
10015 return { assoc };
10016});
10017function OperatorAssociativity(ctx, state2) {
10018 return (0, import_lib3.$EVENT)(ctx, state2, "OperatorAssociativity", OperatorAssociativity$0);
10019}
10020var ThinArrowFunction$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Async, _)), ArrowParameters, (0, import_lib3.$E)(ReturnTypeSuffix), (0, import_lib3.$E)(_), Arrow, NoCommaBracedOrEmptyBlock), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
10021 var async = $1;
10022 var parameters = $2;
10023 var suffix = $3;
10024 var arrow = $5;
10025 var block = $6;
10026 if (!async)
10027 async = [];
10028 const generator = [];
10029 return {
10030 type: "FunctionExpression",
10031 id: void 0,
10032 parameters,
10033 returnType: suffix,
10034 async,
10035 generator,
10036 block,
10037 signature: {
10038 name: void 0,
10039 async,
10040 generator,
10041 modifier: {
10042 async: !!async.length,
10043 generator: !!generator.length
10044 },
10045 returnType: suffix
10046 },
10047 children: [
10048 async,
10049 { $loc: arrow.$loc, token: "function" },
10050 generator,
10051 parameters,
10052 suffix,
10053 block
10054 ]
10055 };
10056});
10057function ThinArrowFunction(ctx, state2) {
10058 return (0, import_lib3.$EVENT)(ctx, state2, "ThinArrowFunction", ThinArrowFunction$0);
10059}
10060var Arrow$0 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L34, 'Arrow "->"'), (0, import_lib3.$EXPECT)($L35, 'Arrow "\u2192"')), function($skip, $loc, $0, $1) {
10061 return { $loc, token: "->" };
10062});
10063function Arrow(ctx, state2) {
10064 return (0, import_lib3.$EVENT)(ctx, state2, "Arrow", Arrow$0);
10065}
10066var ExplicitBlock$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, OpenBrace, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
10067 const expressions = [];
10068 return {
10069 type: "BlockStatement",
10070 expressions,
10071 children: [$1, $2, expressions, $3, $4],
10072 bare: false,
10073 empty: true
10074 };
10075});
10076var ExplicitBlock$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, OpenBrace, NestedBlockStatements, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
10077 var block = $3;
10078 return {
10079 ...block,
10080 children: [$1, $2, ...block.children, $4, $5],
10081 bare: false
10082 };
10083});
10084var ExplicitBlock$$ = [ExplicitBlock$0, ExplicitBlock$1];
10085function ExplicitBlock(ctx, state2) {
10086 return (0, import_lib3.$EVENT_C)(ctx, state2, "ExplicitBlock", ExplicitBlock$$);
10087}
10088var ImplicitNestedBlock$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Y)(EOS), InsertOpenBrace, AllowAll, (0, import_lib3.$E)((0, import_lib3.$S)(NestedBlockStatements, InsertNewline, InsertIndent, InsertCloseBrace)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
10089 var open = $2;
10090 if (!$4)
10091 return $skip;
10092 const [block, ...tail] = $4;
10093 return {
10094 ...block,
10095 children: [open, ...block.children, ...tail],
10096 bare: false
10097 };
10098});
10099function ImplicitNestedBlock(ctx, state2) {
10100 return (0, import_lib3.$EVENT)(ctx, state2, "ImplicitNestedBlock", ImplicitNestedBlock$0);
10101}
10102var Block$0 = ImplicitNestedBlock;
10103var Block$1 = ExplicitBlock;
10104var Block$2 = ThenClause;
10105var Block$3 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$N)(EOS), Statement), function($skip, $loc, $0, $1, $2, $3) {
10106 var ws = $1;
10107 var s = $3;
10108 const expressions = [[ws, s]];
10109 return {
10110 type: "BlockStatement",
10111 expressions,
10112 children: [expressions],
10113 bare: true
10114 };
10115});
10116var Block$$ = [Block$0, Block$1, Block$2, Block$3];
10117function Block(ctx, state2) {
10118 return (0, import_lib3.$EVENT_C)(ctx, state2, "Block", Block$$);
10119}
10120var BareNestedBlock$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Y)(EOS), AllowAll, (0, import_lib3.$E)(NestedBlockStatements), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
10121 if (!$3)
10122 return $skip;
10123 return $3;
10124});
10125function BareNestedBlock(ctx, state2) {
10126 return (0, import_lib3.$EVENT)(ctx, state2, "BareNestedBlock", BareNestedBlock$0);
10127}
10128var BareBlock$0 = BareNestedBlock;
10129var BareBlock$1 = ExplicitBlock;
10130var BareBlock$2 = ThenClause;
10131var BareBlock$3 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$N)(EOS), Statement), function($skip, $loc, $0, $1, $2, $3) {
10132 var ws = $1;
10133 var s = $3;
10134 const expressions = [[ws, s]];
10135 return {
10136 type: "BlockStatement",
10137 expressions,
10138 children: [expressions],
10139 bare: true
10140 };
10141});
10142var BareBlock$4 = EmptyBareBlock;
10143var BareBlock$$ = [BareBlock$0, BareBlock$1, BareBlock$2, BareBlock$3, BareBlock$4];
10144function BareBlock(ctx, state2) {
10145 return (0, import_lib3.$EVENT_C)(ctx, state2, "BareBlock", BareBlock$$);
10146}
10147var ThenClause$0 = (0, import_lib3.$T)((0, import_lib3.$S)(Then, SingleLineStatements), function(value) {
10148 return value[1];
10149});
10150function ThenClause(ctx, state2) {
10151 return (0, import_lib3.$EVENT)(ctx, state2, "ThenClause", ThenClause$0);
10152}
10153var BracedThenClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Y)(Then), InsertOpenBrace, ThenClause, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
10154 var open = $2;
10155 var exp = $3;
10156 var close = $4;
10157 const expressions = [exp];
10158 return {
10159 type: "BlockStatement",
10160 expressions,
10161 children: [open, expressions, " ", close],
10162 bare: false
10163 };
10164});
10165function BracedThenClause(ctx, state2) {
10166 return (0, import_lib3.$EVENT)(ctx, state2, "BracedThenClause", BracedThenClause$0);
10167}
10168var BracedOrEmptyBlock$0 = BracedBlock;
10169var BracedOrEmptyBlock$1 = EmptyBlock;
10170var BracedOrEmptyBlock$$ = [BracedOrEmptyBlock$0, BracedOrEmptyBlock$1];
10171function BracedOrEmptyBlock(ctx, state2) {
10172 return (0, import_lib3.$EVENT_C)(ctx, state2, "BracedOrEmptyBlock", BracedOrEmptyBlock$$);
10173}
10174var NoCommaBracedOrEmptyBlock$0 = NoCommaBracedBlock;
10175var NoCommaBracedOrEmptyBlock$1 = EmptyBlock;
10176var NoCommaBracedOrEmptyBlock$$ = [NoCommaBracedOrEmptyBlock$0, NoCommaBracedOrEmptyBlock$1];
10177function NoCommaBracedOrEmptyBlock(ctx, state2) {
10178 return (0, import_lib3.$EVENT_C)(ctx, state2, "NoCommaBracedOrEmptyBlock", NoCommaBracedOrEmptyBlock$$);
10179}
10180var NoPostfixBracedOrEmptyBlock$0 = NoPostfixBracedBlock;
10181var NoPostfixBracedOrEmptyBlock$1 = EmptyBlock;
10182var NoPostfixBracedOrEmptyBlock$$ = [NoPostfixBracedOrEmptyBlock$0, NoPostfixBracedOrEmptyBlock$1];
10183function NoPostfixBracedOrEmptyBlock(ctx, state2) {
10184 return (0, import_lib3.$EVENT_C)(ctx, state2, "NoPostfixBracedOrEmptyBlock", NoPostfixBracedOrEmptyBlock$$);
10185}
10186var EmptyBlock$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBrace, InsertCloseBrace), function($skip, $loc, $0, $1, $2) {
10187 const expressions = [];
10188 return {
10189 type: "BlockStatement",
10190 expressions,
10191 children: [$1, expressions, $2],
10192 bare: false,
10193 empty: true,
10194 implicit: true
10195 };
10196});
10197function EmptyBlock(ctx, state2) {
10198 return (0, import_lib3.$EVENT)(ctx, state2, "EmptyBlock", EmptyBlock$0);
10199}
10200var BlockOrEmptyStatement$0 = Block;
10201var BlockOrEmptyStatement$1 = (0, import_lib3.$T)((0, import_lib3.$S)(NoBlock, EmptyStatementBareBlock), function(value) {
10202 return value[1];
10203});
10204var BlockOrEmptyStatement$$ = [BlockOrEmptyStatement$0, BlockOrEmptyStatement$1];
10205function BlockOrEmptyStatement(ctx, state2) {
10206 return (0, import_lib3.$EVENT_C)(ctx, state2, "BlockOrEmptyStatement", BlockOrEmptyStatement$$);
10207}
10208var BlockOrEmpty$0 = Block;
10209var BlockOrEmpty$1 = (0, import_lib3.$T)((0, import_lib3.$S)(NoBlock, EmptyBlock), function(value) {
10210 return value[1];
10211});
10212var BlockOrEmpty$$ = [BlockOrEmpty$0, BlockOrEmpty$1];
10213function BlockOrEmpty(ctx, state2) {
10214 return (0, import_lib3.$EVENT_C)(ctx, state2, "BlockOrEmpty", BlockOrEmpty$$);
10215}
10216var EmptyStatementBareBlock$0 = (0, import_lib3.$TV)(InsertEmptyStatement, function($skip, $loc, $0, $1) {
10217 var s = $0;
10218 const expressions = [["", s]];
10219 return {
10220 type: "BlockStatement",
10221 expressions,
10222 children: [expressions],
10223 bare: true,
10224 empty: true,
10225 implicit: true,
10226 semicolon: s.children[0]
10227 };
10228});
10229function EmptyStatementBareBlock(ctx, state2) {
10230 return (0, import_lib3.$EVENT)(ctx, state2, "EmptyStatementBareBlock", EmptyStatementBareBlock$0);
10231}
10232var EmptyBareBlock$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'EmptyBareBlock ""'), function($skip, $loc, $0, $1) {
10233 const expressions = [];
10234 return {
10235 type: "BlockStatement",
10236 expressions,
10237 children: [expressions],
10238 bare: true,
10239 empty: true,
10240 implicit: true
10241 };
10242});
10243function EmptyBareBlock(ctx, state2) {
10244 return (0, import_lib3.$EVENT)(ctx, state2, "EmptyBareBlock", EmptyBareBlock$0);
10245}
10246var NoBlock$0 = (0, import_lib3.$S)((0, import_lib3.$Y)(EOS), (0, import_lib3.$N)(IndentedFurther));
10247function NoBlock(ctx, state2) {
10248 return (0, import_lib3.$EVENT)(ctx, state2, "NoBlock", NoBlock$0);
10249}
10250var BracedBlock$0 = NonSingleBracedBlock;
10251var BracedBlock$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBrace, (0, import_lib3.$N)(EOS), PostfixedSingleLineStatements, InsertSpace, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
10252 var o = $1;
10253 var s = $3;
10254 var ws = $4;
10255 var c = $5;
10256 if (!s.children.length)
10257 return $skip;
10258 return {
10259 type: "BlockStatement",
10260 expressions: s.expressions,
10261 // Remove !EOS assertion
10262 children: [o, s.children, ws, c]
10263 };
10264});
10265var BracedBlock$$ = [BracedBlock$0, BracedBlock$1];
10266function BracedBlock(ctx, state2) {
10267 return (0, import_lib3.$EVENT_C)(ctx, state2, "BracedBlock", BracedBlock$$);
10268}
10269var NoPostfixBracedBlock$0 = NonSingleBracedBlock;
10270var NoPostfixBracedBlock$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBrace, (0, import_lib3.$N)(EOS), SingleLineStatements, InsertSpace, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
10271 var o = $1;
10272 var s = $3;
10273 var ws = $4;
10274 var c = $5;
10275 if (!s.expressions.length)
10276 return $skip;
10277 return {
10278 type: "BlockStatement",
10279 expressions: s.expressions,
10280 // Remove !EOS assertion
10281 children: [o, s.children, ws, c]
10282 };
10283});
10284var NoPostfixBracedBlock$$ = [NoPostfixBracedBlock$0, NoPostfixBracedBlock$1];
10285function NoPostfixBracedBlock(ctx, state2) {
10286 return (0, import_lib3.$EVENT_C)(ctx, state2, "NoPostfixBracedBlock", NoPostfixBracedBlock$$);
10287}
10288var NoCommaBracedBlock$0 = NonSingleBracedBlock;
10289var NoCommaBracedBlock$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBrace, (0, import_lib3.$N)(EOS), PostfixedSingleLineNoCommaStatements, InsertSpace, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
10290 var o = $1;
10291 var s = $3;
10292 var ws = $4;
10293 var c = $5;
10294 if (!s.children.length)
10295 return $skip;
10296 return {
10297 type: "BlockStatement",
10298 expressions: s.expressions,
10299 // Remove !EOS assertion
10300 children: [o, s.children, ws, c]
10301 };
10302});
10303var NoCommaBracedBlock$$ = [NoCommaBracedBlock$0, NoCommaBracedBlock$1];
10304function NoCommaBracedBlock(ctx, state2) {
10305 return (0, import_lib3.$EVENT_C)(ctx, state2, "NoCommaBracedBlock", NoCommaBracedBlock$$);
10306}
10307var NonSingleBracedBlock$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), OpenBrace, AllowAll, (0, import_lib3.$E)((0, import_lib3.$S)(BracedContent, __, CloseBrace)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
10308 var ws1 = $1;
10309 var open = $2;
10310 if (!$4)
10311 return $skip;
10312 const [block, ws2, close] = $4;
10313 return {
10314 type: "BlockStatement",
10315 expressions: block.expressions,
10316 children: [ws1, open, ...block.children, ws2, close],
10317 bare: false
10318 };
10319 return block;
10320});
10321var NonSingleBracedBlock$1 = ImplicitNestedBlock;
10322var NonSingleBracedBlock$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBrace, NestedImplicitObjectLiteral, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3) {
10323 var o = $1;
10324 var s = $2;
10325 var c = $3;
10326 const expressions = [s];
10327 return {
10328 type: "BlockStatement",
10329 expressions,
10330 children: [o, expressions, c]
10331 };
10332});
10333var NonSingleBracedBlock$$ = [NonSingleBracedBlock$0, NonSingleBracedBlock$1, NonSingleBracedBlock$2];
10334function NonSingleBracedBlock(ctx, state2) {
10335 return (0, import_lib3.$EVENT_C)(ctx, state2, "NonSingleBracedBlock", NonSingleBracedBlock$$);
10336}
10337var DeclarationOrStatement$0 = Declaration;
10338var DeclarationOrStatement$1 = Statement;
10339var DeclarationOrStatement$$ = [DeclarationOrStatement$0, DeclarationOrStatement$1];
10340function DeclarationOrStatement(ctx, state2) {
10341 return (0, import_lib3.$EVENT_C)(ctx, state2, "DeclarationOrStatement", DeclarationOrStatement$$);
10342}
10343var SingleLineStatements$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForbidNewlineBinaryOp, (0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$N)(EOS)), DeclarationOrStatement, SemicolonDelimiter)), (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$N)(EOS)), DeclarationOrStatement, (0, import_lib3.$E)(SemicolonDelimiter))), RestoreNewlineBinaryOp), function($skip, $loc, $0, $1, $2, $3, $4) {
10344 var stmts = $2;
10345 var last = $3;
10346 const expressions = [...stmts];
10347 if (last)
10348 expressions.push(last);
10349 const maybeComment = expressions.at(-1)?.[2]?.children?.[2]?.at(-1);
10350 let hasTrailingComment = false;
10351 if (maybeComment?.type === "Comment" && maybeComment.token.startsWith("//")) {
10352 hasTrailingComment = true;
10353 }
10354 const children = [expressions];
10355 if (hasTrailingComment) {
10356 children.push("\n");
10357 }
10358 return {
10359 type: "BlockStatement",
10360 expressions,
10361 children,
10362 bare: true
10363 };
10364});
10365function SingleLineStatements(ctx, state2) {
10366 return (0, import_lib3.$EVENT)(ctx, state2, "SingleLineStatements", SingleLineStatements$0);
10367}
10368var PostfixedSingleLineStatements$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$N)(EOS)), StatementListItem, SemicolonDelimiter)), (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$N)(EOS)), StatementListItem, (0, import_lib3.$E)(SemicolonDelimiter)))), function($skip, $loc, $0, $1, $2) {
10369 var stmts = $1;
10370 var last = $2;
10371 const children = [...stmts];
10372 if (last)
10373 children.push(last);
10374 return {
10375 type: "BlockStatement",
10376 expressions: children,
10377 children,
10378 bare: true
10379 };
10380});
10381function PostfixedSingleLineStatements(ctx, state2) {
10382 return (0, import_lib3.$EVENT)(ctx, state2, "PostfixedSingleLineStatements", PostfixedSingleLineStatements$0);
10383}
10384var PostfixedSingleLineNoCommaStatements$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$N)(EOS)), NoCommaStatementListItem, SemicolonDelimiter)), (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$N)(EOS)), NoCommaStatementListItem, (0, import_lib3.$E)(SemicolonDelimiter)))), function($skip, $loc, $0, $1, $2) {
10385 var stmts = $1;
10386 var last = $2;
10387 const children = [...stmts];
10388 if (last)
10389 children.push(last);
10390 return {
10391 type: "BlockStatement",
10392 expressions: children,
10393 children,
10394 bare: true
10395 };
10396});
10397function PostfixedSingleLineNoCommaStatements(ctx, state2) {
10398 return (0, import_lib3.$EVENT)(ctx, state2, "PostfixedSingleLineNoCommaStatements", PostfixedSingleLineNoCommaStatements$0);
10399}
10400var BracedContent$0 = NestedBlockStatements;
10401var BracedContent$1 = SingleLineStatements;
10402var BracedContent$2 = (0, import_lib3.$TV)((0, import_lib3.$Y)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L36, 'BracedContent "}"'))), function($skip, $loc, $0, $1) {
10403 const expressions = [];
10404 return {
10405 type: "BlockStatement",
10406 expressions,
10407 children: [expressions]
10408 };
10409});
10410var BracedContent$$ = [BracedContent$0, BracedContent$1, BracedContent$2];
10411function BracedContent(ctx, state2) {
10412 return (0, import_lib3.$EVENT_C)(ctx, state2, "BracedContent", BracedContent$$);
10413}
10414var NestedBlockStatements$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedBlockStatement), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
10415 var statements = $2;
10416 if (!statements.length)
10417 return $skip;
10418 statements = statements.flat();
10419 return {
10420 type: "BlockStatement",
10421 expressions: statements,
10422 children: [statements],
10423 bare: true
10424 };
10425});
10426function NestedBlockStatements(ctx, state2) {
10427 return (0, import_lib3.$EVENT)(ctx, state2, "NestedBlockStatements", NestedBlockStatements$0);
10428}
10429var NestedBlockStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, (0, import_lib3.$P)(BlockStatementPart)), function($skip, $loc, $0, $1, $2) {
10430 var nested = $1;
10431 var statements = $2;
10432 return [
10433 [nested, ...statements[0]],
10434 ...statements.slice(1).map((s) => ["", ...s])
10435 ];
10436});
10437function NestedBlockStatement(ctx, state2) {
10438 return (0, import_lib3.$EVENT)(ctx, state2, "NestedBlockStatement", NestedBlockStatement$0);
10439}
10440var BlockStatementPart$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), (0, import_lib3.$E)(_), StatementListItem, StatementDelimiter), function($skip, $loc, $0, $1, $2, $3, $4) {
10441 var ws = $2;
10442 var statement = $3;
10443 var delimiter = $4;
10444 if (ws)
10445 statement = prepend(ws, statement);
10446 return [statement, delimiter];
10447});
10448function BlockStatementPart(ctx, state2) {
10449 return (0, import_lib3.$EVENT)(ctx, state2, "BlockStatementPart", BlockStatementPart$0);
10450}
10451var Literal$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R14, `Literal /(?=[0-9.'"tfyno])/`), LiteralContent), function($skip, $loc, $0, $1, $2) {
10452 var literal = $2;
10453 return {
10454 type: "Literal",
10455 subtype: literal.type,
10456 children: [literal],
10457 raw: literal.token
10458 };
10459});
10460function Literal(ctx, state2) {
10461 return (0, import_lib3.$EVENT)(ctx, state2, "Literal", Literal$0);
10462}
10463var LiteralContent$0 = NullLiteral;
10464var LiteralContent$1 = BooleanLiteral;
10465var LiteralContent$2 = NumericLiteral;
10466var LiteralContent$3 = StringLiteral;
10467var LiteralContent$$ = [LiteralContent$0, LiteralContent$1, LiteralContent$2, LiteralContent$3];
10468function LiteralContent(ctx, state2) {
10469 return (0, import_lib3.$EVENT_C)(ctx, state2, "LiteralContent", LiteralContent$$);
10470}
10471var NullLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L37, 'NullLiteral "null"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
10472 return { $loc, token: $1 };
10473});
10474function NullLiteral(ctx, state2) {
10475 return (0, import_lib3.$EVENT)(ctx, state2, "NullLiteral", NullLiteral$0);
10476}
10477var BooleanLiteral$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R15, "BooleanLiteral /(?=true|false|yes|no|on|off)/"), _BooleanLiteral), function(value) {
10478 return value[1];
10479});
10480function BooleanLiteral(ctx, state2) {
10481 return (0, import_lib3.$EVENT)(ctx, state2, "BooleanLiteral", BooleanLiteral$0);
10482}
10483var _BooleanLiteral$0 = (0, import_lib3.$T)((0, import_lib3.$S)(CoffeeBooleansEnabled, CoffeeScriptBooleanLiteral), function(value) {
10484 return value[1];
10485});
10486var _BooleanLiteral$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L38, '_BooleanLiteral "true"'), (0, import_lib3.$EXPECT)($L39, '_BooleanLiteral "false"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
10487 return { $loc, token: $1 };
10488});
10489var _BooleanLiteral$$ = [_BooleanLiteral$0, _BooleanLiteral$1];
10490function _BooleanLiteral(ctx, state2) {
10491 return (0, import_lib3.$EVENT_C)(ctx, state2, "_BooleanLiteral", _BooleanLiteral$$);
10492}
10493var CoffeeScriptBooleanLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L40, 'CoffeeScriptBooleanLiteral "yes"'), (0, import_lib3.$EXPECT)($L41, 'CoffeeScriptBooleanLiteral "on"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
10494 return { $loc, token: "true" };
10495});
10496var CoffeeScriptBooleanLiteral$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L42, 'CoffeeScriptBooleanLiteral "no"'), (0, import_lib3.$EXPECT)($L43, 'CoffeeScriptBooleanLiteral "off"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
10497 return { $loc, token: "false" };
10498});
10499var CoffeeScriptBooleanLiteral$$ = [CoffeeScriptBooleanLiteral$0, CoffeeScriptBooleanLiteral$1];
10500function CoffeeScriptBooleanLiteral(ctx, state2) {
10501 return (0, import_lib3.$EVENT_C)(ctx, state2, "CoffeeScriptBooleanLiteral", CoffeeScriptBooleanLiteral$$);
10502}
10503var Identifier$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R16, "Identifier /(?=\\p{ID_Start}|[_$])/"), (0, import_lib3.$N)(ReservedWord), IdentifierName), function(value) {
10504 var id = value[2];
10505 return id;
10506});
10507function Identifier(ctx, state2) {
10508 return (0, import_lib3.$EVENT)(ctx, state2, "Identifier", Identifier$0);
10509}
10510var IdentifierName$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R17, "IdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
10511 return {
10512 type: "Identifier",
10513 name: $0,
10514 names: [$0],
10515 children: [{
10516 $loc,
10517 token: $0
10518 }]
10519 };
10520});
10521function IdentifierName(ctx, state2) {
10522 return (0, import_lib3.$EVENT)(ctx, state2, "IdentifierName", IdentifierName$0);
10523}
10524var IdentifierReference$0 = Identifier;
10525function IdentifierReference(ctx, state2) {
10526 return (0, import_lib3.$EVENT)(ctx, state2, "IdentifierReference", IdentifierReference$0);
10527}
10528var UpcomingAssignment$0 = (0, import_lib3.$Y)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L3, 'UpcomingAssignment "="'), (0, import_lib3.$N)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L3, 'UpcomingAssignment "="'), (0, import_lib3.$EXPECT)($L44, 'UpcomingAssignment ">"')))));
10529function UpcomingAssignment(ctx, state2) {
10530 return (0, import_lib3.$EVENT)(ctx, state2, "UpcomingAssignment", UpcomingAssignment$0);
10531}
10532var ArrayLiteral$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R18, "ArrayLiteral /(?=\\[)/"), _ArrayLiteral), function(value) {
10533 return value[1];
10534});
10535function ArrayLiteral(ctx, state2) {
10536 return (0, import_lib3.$EVENT)(ctx, state2, "ArrayLiteral", ArrayLiteral$0);
10537}
10538var _ArrayLiteral$0 = (0, import_lib3.$T)((0, import_lib3.$S)(ArrayBindingPattern, UpcomingAssignment), function(value) {
10539 return value[0];
10540});
10541var _ArrayLiteral$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBracket, AllowAll, (0, import_lib3.$E)((0, import_lib3.$S)(ArrayLiteralContent, __, CloseBracket)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
10542 var open = $1;
10543 if (!$3)
10544 return $skip;
10545 const [content, ws, close] = $3;
10546 if (content.type === "RangeExpression") {
10547 return prepend(ws, content);
10548 }
10549 let children;
10550 if (Array.isArray(content)) {
10551 children = [open, ...content, ...ws, close];
10552 } else {
10553 children = [open, content, ...ws, close];
10554 }
10555 const names = children.flatMap((c) => c?.names || []);
10556 return {
10557 type: "ArrayExpression",
10558 children,
10559 names
10560 };
10561});
10562var _ArrayLiteral$$ = [_ArrayLiteral$0, _ArrayLiteral$1];
10563function _ArrayLiteral(ctx, state2) {
10564 return (0, import_lib3.$EVENT_C)(ctx, state2, "_ArrayLiteral", _ArrayLiteral$$);
10565}
10566var RangeExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ExtendedExpression, __, (0, import_lib3.$C)(DotDotDot, DotDot), ExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4) {
10567 var s = $1;
10568 var ws = $2;
10569 var range = $3;
10570 var e = $4;
10571 const inclusive = range.token === "..";
10572 range.token = ",";
10573 if (s.type === "Literal" && e.type === "Literal") {
10574 const start = literalValue(s);
10575 const end = literalValue(e);
10576 if (typeof start !== typeof end) {
10577 throw new Error("Range start and end must be of the same type");
10578 }
10579 if (typeof start === "string") {
10580 if (start.length !== 1 || end.length !== 1) {
10581 throw new Error("String range start and end must be a single character");
10582 }
10583 const startCode = start.charCodeAt(0);
10584 const endCode = end.charCodeAt(0);
10585 const step = startCode < endCode ? 1 : -1;
10586 const length = Math.abs(endCode - startCode) + (inclusive ? 1 : 0);
10587 if (length <= 26) {
10588 return {
10589 type: "RangeExpression",
10590 children: ["[", Array.from({ length }, (_2, i) => JSON.stringify(String.fromCharCode(startCode + i * step))).join(", "), "]"],
10591 inclusive,
10592 start: s,
10593 end: e
10594 };
10595 } else {
10596 const inclusiveAdjust2 = inclusive ? " + 1" : "";
10597 const children2 = ["((s, e) => {let step = e > s ? 1 : -1; return Array.from({length: Math.abs(e - s)", inclusiveAdjust2, "}, (_, i) => String.fromCharCode(s + i * step))})(", startCode.toString(), ws, range, endCode.toString(), ")"];
10598 return {
10599 type: "RangeExpression",
10600 children: children2,
10601 inclusive,
10602 start: s,
10603 end: e
10604 };
10605 }
10606 } else if (typeof start === "number") {
10607 const step = end > start ? 1 : -1;
10608 const length = Math.abs(end - start) + (inclusive ? 1 : 0);
10609 if (length <= 20) {
10610 return {
10611 type: "RangeExpression",
10612 children: ["[", Array.from({ length }, (_2, i) => start + i * step).join(", "), "]"],
10613 inclusive,
10614 start: s,
10615 end: e
10616 };
10617 }
10618 }
10619 }
10620 const inclusiveAdjust = inclusive ? " + 1" : "";
10621 const children = ["((s, e) => {let step = e > s ? 1 : -1; return Array.from({length: Math.abs(e - s)", inclusiveAdjust, "}, (_, i) => s + i * step)})(", s, ws, range, e, ")"];
10622 return {
10623 type: "RangeExpression",
10624 children,
10625 inclusive,
10626 start: s,
10627 end: e
10628 };
10629});
10630var RangeExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(ExtendedExpression, __, DotDot, (0, import_lib3.$Y)((0, import_lib3.$S)(__, CloseBracket))), function($skip, $loc, $0, $1, $2, $3, $4) {
10631 var s = $1;
10632 var ws = $2;
10633 return {
10634 type: "RangeExpression",
10635 children: ["[]", {
10636 type: "Error",
10637 message: "Infinite range [x..] is only valid in for loops"
10638 }],
10639 start: s,
10640 end: {
10641 type: "Identifier",
10642 name: "Infinity",
10643 children: ["Infinity"]
10644 }
10645 };
10646});
10647var RangeExpression$$ = [RangeExpression$0, RangeExpression$1];
10648function RangeExpression(ctx, state2) {
10649 return (0, import_lib3.$EVENT_C)(ctx, state2, "RangeExpression", RangeExpression$$);
10650}
10651var ArrayLiteralContent$0 = RangeExpression;
10652var ArrayLiteralContent$1 = (0, import_lib3.$S)(NestedElementList, (0, import_lib3.$Y)((0, import_lib3.$S)(__, CloseBracket)));
10653var ArrayLiteralContent$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(ElementListWithIndentedApplicationForbidden, ArrayElementDelimiter, (0, import_lib3.$E)(NestedElementList), (0, import_lib3.$Y)((0, import_lib3.$S)(__, CloseBracket))), function($skip, $loc, $0, $1, $2, $3, $4) {
10654 var list = $1;
10655 var delimiter = $2;
10656 var nested = $3;
10657 if (!nested)
10658 return list;
10659 return [...list, delimiter, ...nested];
10660});
10661var ArrayLiteralContent$3 = (0, import_lib3.$TV)((0, import_lib3.$Q)((0, import_lib3.$S)(__, ElementListWithIndentedApplicationForbidden, ArrayElementDelimiter)), function($skip, $loc, $0, $1) {
10662 return $1.flat();
10663});
10664var ArrayLiteralContent$$ = [ArrayLiteralContent$0, ArrayLiteralContent$1, ArrayLiteralContent$2, ArrayLiteralContent$3];
10665function ArrayLiteralContent(ctx, state2) {
10666 return (0, import_lib3.$EVENT_C)(ctx, state2, "ArrayLiteralContent", ArrayLiteralContent$$);
10667}
10668var NestedElementList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedElement), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
10669 var elements = $2;
10670 if (elements.length)
10671 return elements.flat();
10672 return $skip;
10673});
10674function NestedElementList(ctx, state2) {
10675 return (0, import_lib3.$EVENT)(ctx, state2, "NestedElementList", NestedElementList$0);
10676}
10677var NestedElement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, ElementList, ArrayElementDelimiter), function($skip, $loc, $0, $1, $2, $3) {
10678 var indent = $1;
10679 var list = $2;
10680 var delimiter = $3;
10681 const { length } = list;
10682 if (length) {
10683 return list.map((e, i) => {
10684 if (i === 0 && i === length - 1) {
10685 return { ...e, children: [indent, ...e.children, delimiter] };
10686 }
10687 if (i === 0) {
10688 return { ...e, children: [indent, ...e.children] };
10689 }
10690 if (i === length - 1) {
10691 return { ...e, children: [...e.children, delimiter] };
10692 }
10693 return e;
10694 });
10695 }
10696});
10697function NestedElement(ctx, state2) {
10698 return (0, import_lib3.$EVENT)(ctx, state2, "NestedElement", NestedElement$0);
10699}
10700var ArrayElementDelimiter$0 = (0, import_lib3.$S)(__, Comma);
10701var ArrayElementDelimiter$1 = (0, import_lib3.$Y)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L45, 'ArrayElementDelimiter "]"')));
10702var ArrayElementDelimiter$2 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$Y)(EOS), InsertComma), function(value) {
10703 return value[1];
10704});
10705var ArrayElementDelimiter$$ = [ArrayElementDelimiter$0, ArrayElementDelimiter$1, ArrayElementDelimiter$2];
10706function ArrayElementDelimiter(ctx, state2) {
10707 return (0, import_lib3.$EVENT_C)(ctx, state2, "ArrayElementDelimiter", ArrayElementDelimiter$$);
10708}
10709var ElementListWithIndentedApplicationForbidden$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForbidIndentedApplication, (0, import_lib3.$E)(ElementList), RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3) {
10710 if ($2)
10711 return $2;
10712 return $skip;
10713});
10714function ElementListWithIndentedApplicationForbidden(ctx, state2) {
10715 return (0, import_lib3.$EVENT)(ctx, state2, "ElementListWithIndentedApplicationForbidden", ElementListWithIndentedApplicationForbidden$0);
10716}
10717var ElementList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), ArrayElementExpression, (0, import_lib3.$Q)(ElementListRest)), function($skip, $loc, $0, $1, $2, $3) {
10718 var first = $2;
10719 var rest = $3;
10720 if (rest.length) {
10721 return [{
10722 ...first,
10723 children: [...first.children, rest[0][0]]
10724 }].concat(rest.map(([_2, e], i) => {
10725 const delim = rest[i + 1]?.[0];
10726 return {
10727 ...e,
10728 children: [...e.children, delim]
10729 };
10730 }));
10731 }
10732 return [first];
10733});
10734function ElementList(ctx, state2) {
10735 return (0, import_lib3.$EVENT)(ctx, state2, "ElementList", ElementList$0);
10736}
10737var ElementListRest$0 = (0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), Comma, (0, import_lib3.$N)(EOS)), ArrayElementExpression);
10738function ElementListRest(ctx, state2) {
10739 return (0, import_lib3.$EVENT)(ctx, state2, "ElementListRest", ElementListRest$0);
10740}
10741var ArrayElementExpression$0 = JSXTag;
10742var ArrayElementExpression$1 = (0, import_lib3.$T)((0, import_lib3.$S)(ImplicitObjectLiteral, (0, import_lib3.$Y)(ArrayElementDelimiter)), function(value) {
10743 return value[0];
10744});
10745var ArrayElementExpression$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(ExtendedExpression, (0, import_lib3.$E)(_), DotDotDot, (0, import_lib3.$Y)(ArrayElementDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
10746 var exp = $1;
10747 var ws = $2;
10748 var dots = $3;
10749 if (!exp) {
10750 exp = { ...makeRef(), names: [] };
10751 }
10752 return {
10753 type: "SpreadElement",
10754 children: [ws, dots, exp],
10755 names: exp.names
10756 };
10757});
10758var ArrayElementExpression$3 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(__, DotDotDot, __)), PostfixedExpression)), (0, import_lib3.$Y)(ArrayElementDelimiter)), function($skip, $loc, $0, $1, $2) {
10759 var expMaybeSpread = $1;
10760 if (expMaybeSpread) {
10761 const [spread, exp] = expMaybeSpread;
10762 if (!spread) {
10763 return {
10764 type: "ArrayElement",
10765 children: [exp],
10766 names: exp.names
10767 };
10768 } else {
10769 return {
10770 type: "SpreadElement",
10771 children: [...spread, exp],
10772 names: exp.names
10773 };
10774 }
10775 }
10776 return {
10777 type: "ElisionElement",
10778 children: []
10779 };
10780});
10781var ArrayElementExpression$$ = [ArrayElementExpression$0, ArrayElementExpression$1, ArrayElementExpression$2, ArrayElementExpression$3];
10782function ArrayElementExpression(ctx, state2) {
10783 return (0, import_lib3.$EVENT_C)(ctx, state2, "ArrayElementExpression", ArrayElementExpression$$);
10784}
10785var ObjectLiteral$0 = (0, import_lib3.$T)((0, import_lib3.$S)(ObjectBindingPattern, UpcomingAssignment), function(value) {
10786 return value[0];
10787});
10788var ObjectLiteral$1 = BracedObjectLiteral;
10789var ObjectLiteral$2 = NestedImplicitObjectLiteral;
10790var ObjectLiteral$3 = InlineObjectLiteral;
10791var ObjectLiteral$$ = [ObjectLiteral$0, ObjectLiteral$1, ObjectLiteral$2, ObjectLiteral$3];
10792function ObjectLiteral(ctx, state2) {
10793 return (0, import_lib3.$EVENT_C)(ctx, state2, "ObjectLiteral", ObjectLiteral$$);
10794}
10795var BracedObjectLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBrace, AllowAll, (0, import_lib3.$E)((0, import_lib3.$S)(BracedObjectLiteralContent, __, CloseBrace)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
10796 var open = $1;
10797 if (!$3)
10798 return $skip;
10799 const [properties, ...close] = $3;
10800 return {
10801 type: "ObjectExpression",
10802 children: [open, properties, close],
10803 names: properties.flatMap((c) => c.names || []),
10804 properties
10805 };
10806});
10807function BracedObjectLiteral(ctx, state2) {
10808 return (0, import_lib3.$EVENT)(ctx, state2, "BracedObjectLiteral", BracedObjectLiteral$0);
10809}
10810var BracedObjectLiteralContent$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)((0, import_lib3.$S)(PropertyDefinition, ObjectPropertyDelimiter)), (0, import_lib3.$E)(NestedPropertyDefinitions)), function($skip, $loc, $0, $1, $2) {
10811 var line = $1;
10812 var nested = $2;
10813 line = line.flatMap(([prop, delim]) => {
10814 prop = Array.isArray(prop) ? prop : [prop];
10815 let last = prop[prop.length - 1];
10816 if (!last)
10817 return [];
10818 last = {
10819 ...last,
10820 delim,
10821 children: [...last.children, delim]
10822 };
10823 return [...prop.slice(0, prop.length - 1), last];
10824 });
10825 return line.concat(nested || []);
10826});
10827var BracedObjectLiteralContent$1 = (0, import_lib3.$TV)((0, import_lib3.$P)((0, import_lib3.$S)(__, PropertyDefinition, ObjectPropertyDelimiter)), function($skip, $loc, $0, $1) {
10828 return $0.flatMap(([ws, prop, delim]) => {
10829 prop = Array.isArray(prop) ? prop : [prop];
10830 let last = prop[prop.length - 1];
10831 last = {
10832 ...last,
10833 delim,
10834 // __ will consume all whitespace that _? in PropertyDefinition could,
10835 // so replace _? (via slice) with __
10836 children: [ws, ...last.children.slice(1), delim]
10837 };
10838 return [...prop.slice(0, prop.length - 1), last];
10839 });
10840});
10841var BracedObjectLiteralContent$$ = [BracedObjectLiteralContent$0, BracedObjectLiteralContent$1];
10842function BracedObjectLiteralContent(ctx, state2) {
10843 return (0, import_lib3.$EVENT_C)(ctx, state2, "BracedObjectLiteralContent", BracedObjectLiteralContent$$);
10844}
10845var NestedImplicitObjectLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBrace, PushIndent, (0, import_lib3.$E)(NestedImplicitPropertyDefinitions), PopIndent, InsertNewline, InsertIndent, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
10846 var properties = $3;
10847 if (!properties)
10848 return $skip;
10849 return {
10850 type: "ObjectExpression",
10851 properties,
10852 children: $0
10853 };
10854});
10855function NestedImplicitObjectLiteral(ctx, state2) {
10856 return (0, import_lib3.$EVENT)(ctx, state2, "NestedImplicitObjectLiteral", NestedImplicitObjectLiteral$0);
10857}
10858var NestedImplicitPropertyDefinitions$0 = (0, import_lib3.$TV)((0, import_lib3.$P)(NestedImplicitPropertyDefinition), function($skip, $loc, $0, $1) {
10859 var defs = $0;
10860 return defs.flat();
10861});
10862function NestedImplicitPropertyDefinitions(ctx, state2) {
10863 return (0, import_lib3.$EVENT)(ctx, state2, "NestedImplicitPropertyDefinitions", NestedImplicitPropertyDefinitions$0);
10864}
10865var NestedImplicitPropertyDefinition$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, (0, import_lib3.$P)((0, import_lib3.$S)((0, import_lib3.$E)(_), NamedProperty, ObjectPropertyDelimiter))), function($skip, $loc, $0, $1, $2) {
10866 var indent = $1;
10867 var props = $2;
10868 return props.map(([ws, prop, delimiter], i) => ({
10869 ...prop,
10870 children: [
10871 ...i === 0 ? [indent, ws] : [ws],
10872 ...prop.children,
10873 delimiter
10874 ]
10875 }));
10876});
10877function NestedImplicitPropertyDefinition(ctx, state2) {
10878 return (0, import_lib3.$EVENT)(ctx, state2, "NestedImplicitPropertyDefinition", NestedImplicitPropertyDefinition$0);
10879}
10880var NestedPropertyDefinitions$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedPropertyDefinition), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
10881 var defs = $2;
10882 if (!defs.length)
10883 return $skip;
10884 return defs.flat();
10885});
10886function NestedPropertyDefinitions(ctx, state2) {
10887 return (0, import_lib3.$EVENT)(ctx, state2, "NestedPropertyDefinitions", NestedPropertyDefinitions$0);
10888}
10889var NestedPropertyDefinition$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, (0, import_lib3.$P)((0, import_lib3.$S)(PropertyDefinition, ObjectPropertyDelimiter))), function($skip, $loc, $0, $1, $2) {
10890 var ws = $1;
10891 var inlineProps = $2;
10892 return inlineProps.flatMap(([prop, delim], i) => {
10893 if (!Array.isArray(prop))
10894 prop = [prop];
10895 if (i === 0) {
10896 const [first, ...rest] = prop;
10897 prop = [prepend(ws, first), ...rest];
10898 }
10899 const last = prop[prop.length - 1];
10900 prop = [
10901 ...prop.slice(0, prop.length - 1),
10902 {
10903 ...last,
10904 delim,
10905 children: [...last.children, delim]
10906 }
10907 ];
10908 return prop;
10909 });
10910});
10911function NestedPropertyDefinition(ctx, state2) {
10912 return (0, import_lib3.$EVENT)(ctx, state2, "NestedPropertyDefinition", NestedPropertyDefinition$0);
10913}
10914var ImplicitObjectLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertInlineOpenBrace, SnugNamedProperty, (0, import_lib3.$Q)((0, import_lib3.$S)(ImplicitObjectPropertyDelimiter, NamedProperty)), (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), Comma)), InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
10915 var open = $1;
10916 var first = $2;
10917 var rest = $3;
10918 var trailing = $4;
10919 var close = $5;
10920 return {
10921 type: "ObjectExpression",
10922 children: [open, first, ...rest, trailing, close]
10923 };
10924});
10925function ImplicitObjectLiteral(ctx, state2) {
10926 return (0, import_lib3.$EVENT)(ctx, state2, "ImplicitObjectLiteral", ImplicitObjectLiteral$0);
10927}
10928var ImplicitObjectPropertyDelimiter$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), Comma, (0, import_lib3.$C)(NotDedented, (0, import_lib3.$E)(_)));
10929var ImplicitObjectPropertyDelimiter$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$Y)((0, import_lib3.$S)(Nested, NamedProperty)), InsertComma, Nested), function(value) {
10930 return [value[1], value[2]];
10931});
10932var ImplicitObjectPropertyDelimiter$$ = [ImplicitObjectPropertyDelimiter$0, ImplicitObjectPropertyDelimiter$1];
10933function ImplicitObjectPropertyDelimiter(ctx, state2) {
10934 return (0, import_lib3.$EVENT_C)(ctx, state2, "ImplicitObjectPropertyDelimiter", ImplicitObjectPropertyDelimiter$$);
10935}
10936var InlineObjectLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertInlineOpenBrace, SnugNamedProperty, (0, import_lib3.$Q)((0, import_lib3.$S)(InlineObjectPropertyDelimiter, NamedProperty)), (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), Comma, (0, import_lib3.$Y)(Dedented))), InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
10937 var open = $1;
10938 var first = $2;
10939 var rest = $3;
10940 var trailing = $4;
10941 var close = $5;
10942 return {
10943 type: "ObjectExpression",
10944 children: [open, first, ...rest, trailing, close]
10945 };
10946});
10947function InlineObjectLiteral(ctx, state2) {
10948 return (0, import_lib3.$EVENT)(ctx, state2, "InlineObjectLiteral", InlineObjectLiteral$0);
10949}
10950var InlineObjectPropertyDelimiter$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), Comma, (0, import_lib3.$C)(NotDedented, (0, import_lib3.$E)(_)));
10951function InlineObjectPropertyDelimiter(ctx, state2) {
10952 return (0, import_lib3.$EVENT)(ctx, state2, "InlineObjectPropertyDelimiter", InlineObjectPropertyDelimiter$0);
10953}
10954var ObjectPropertyDelimiter$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), Comma);
10955var ObjectPropertyDelimiter$1 = (0, import_lib3.$Y)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L36, 'ObjectPropertyDelimiter "}"')));
10956var ObjectPropertyDelimiter$2 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$Y)(EOS), InsertComma), function(value) {
10957 return value[1];
10958});
10959var ObjectPropertyDelimiter$$ = [ObjectPropertyDelimiter$0, ObjectPropertyDelimiter$1, ObjectPropertyDelimiter$2];
10960function ObjectPropertyDelimiter(ctx, state2) {
10961 return (0, import_lib3.$EVENT_C)(ctx, state2, "ObjectPropertyDelimiter", ObjectPropertyDelimiter$$);
10962}
10963var PropertyDefinition$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), NamedProperty), function($skip, $loc, $0, $1, $2) {
10964 var ws = $1;
10965 var prop = $2;
10966 return prepend(ws, prop);
10967});
10968var PropertyDefinition$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$TEXT)((0, import_lib3.$EXPECT)($R19, "PropertyDefinition /[!+-]?/")), PropertyName, (0, import_lib3.$Y)(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
10969 var ws = $1;
10970 var toggle = $2;
10971 var id = $3;
10972 if (toggle) {
10973 const value = toggle === "+" ? "true" : "false";
10974 return {
10975 type: "Property",
10976 children: [ws, id, ": ", value],
10977 name: id,
10978 names: id.names,
10979 value
10980 };
10981 }
10982 return {
10983 type: "Property",
10984 children: [ws, id],
10985 name: id,
10986 names: id.names,
10987 value: id
10988 };
10989});
10990var PropertyDefinition$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), MethodDefinition), function($skip, $loc, $0, $1, $2) {
10991 var ws = $1;
10992 var def = $2;
10993 if (def.type === "MultiMethodDefinition") {
10994 return {
10995 children: def.children.flatMap((c, i) => i ? [",", c] : [c])
10996 };
10997 }
10998 if (!def.block || def.block.empty)
10999 return $skip;
11000 return prepend(ws, def);
11001});
11002var PropertyDefinition$3 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), DotDotDot, ExtendedExpression), function($skip, $loc, $0, $1, $2, $3) {
11003 var ws = $1;
11004 var dots = $2;
11005 var exp = $3;
11006 return {
11007 type: "SpreadProperty",
11008 children: [ws, dots, exp],
11009 names: exp.names,
11010 dots,
11011 value: exp
11012 };
11013});
11014var PropertyDefinition$4 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$N)((0, import_lib3.$C)(EOS, (0, import_lib3.$EXPECT)($L7, 'PropertyDefinition "."'))), (0, import_lib3.$Q)(UnaryOp), CallExpression, (0, import_lib3.$E)(UnaryPostfix)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
11015 var ws = $1;
11016 var pre = $3;
11017 var value = $4;
11018 var post = $5;
11019 if (!pre.length && !post) {
11020 switch (value.type) {
11021 case "Identifier":
11022 return prepend(ws, value);
11023 case "ObjectExpression":
11024 let first = value.properties[0];
11025 if (first) {
11026 first = {
11027 ...first,
11028 children: [ws, ...first.children],
11029 hoistDec: value.hoistDec
11030 };
11031 }
11032 return [first, ...value.properties.slice(1)];
11033 }
11034 }
11035 const last = lastAccessInCallExpression(value);
11036 if (!last)
11037 return $skip;
11038 let name, hoistDec, ref, refAssignment;
11039 const { expression, type } = last;
11040 if (type === "Index") {
11041 ({ ref, hoistDec, refAssignment } = maybeRefAssignment(expression));
11042 if (refAssignment) {
11043 name = {
11044 type: "ComputedPropertyName",
11045 children: [last.children[0], "(", refAssignment, ",", ref, ")", ...last.children.slice(-2)]
11046 };
11047 value = {
11048 ...value,
11049 children: value.children.map((c) => {
11050 if (c === last)
11051 return {
11052 type: "Index",
11053 children: ["[", ref, "]"]
11054 };
11055 return c;
11056 })
11057 };
11058 } else {
11059 name = {
11060 type: "ComputedPropertyName",
11061 children: last.children
11062 };
11063 }
11064 } else {
11065 ({ name } = last);
11066 if (!name)
11067 return $skip;
11068 }
11069 if (name[0] === "\#")
11070 name = name.slice(1);
11071 return {
11072 type: "Property",
11073 children: [ws, name, ": ", processUnaryExpression(pre, value, post)],
11074 name,
11075 names: [],
11076 value,
11077 hoistDec
11078 };
11079});
11080var PropertyDefinition$$ = [PropertyDefinition$0, PropertyDefinition$1, PropertyDefinition$2, PropertyDefinition$3, PropertyDefinition$4];
11081function PropertyDefinition(ctx, state2) {
11082 return (0, import_lib3.$EVENT_C)(ctx, state2, "PropertyDefinition", PropertyDefinition$$);
11083}
11084var NamedProperty$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PropertyName, (0, import_lib3.$E)(_), Colon, PostfixedExpression), function($skip, $loc, $0, $1, $2, $3, $4) {
11085 var name = $1;
11086 var exp = $4;
11087 return {
11088 type: "Property",
11089 children: $0,
11090 name,
11091 names: exp.names || [],
11092 value: exp
11093 };
11094});
11095function NamedProperty(ctx, state2) {
11096 return (0, import_lib3.$EVENT)(ctx, state2, "NamedProperty", NamedProperty$0);
11097}
11098var SnugNamedProperty$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PropertyName, Colon, MaybeNestedExtendedExpression, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), PostfixStatement), (0, import_lib3.$Y)((0, import_lib3.$S)(Nested, NamedProperty))))), function($skip, $loc, $0, $1, $2, $3, $4) {
11099 var name = $1;
11100 var colon = $2;
11101 var expression = $3;
11102 var post = $4;
11103 if (post) {
11104 expression = attachPostfixStatementAsExpression(expression, post[0]);
11105 }
11106 return {
11107 type: "Property",
11108 children: [name, colon, expression],
11109 names: expression.names || []
11110 };
11111});
11112function SnugNamedProperty(ctx, state2) {
11113 return (0, import_lib3.$EVENT)(ctx, state2, "SnugNamedProperty", SnugNamedProperty$0);
11114}
11115var PropertyName$0 = NumericLiteral;
11116var PropertyName$1 = ComputedPropertyName;
11117var PropertyName$2 = StringLiteral;
11118var PropertyName$3 = IdentifierName;
11119var PropertyName$$ = [PropertyName$0, PropertyName$1, PropertyName$2, PropertyName$3];
11120function PropertyName(ctx, state2) {
11121 return (0, import_lib3.$EVENT_C)(ctx, state2, "PropertyName", PropertyName$$);
11122}
11123var ComputedPropertyName$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBracket, PostfixedExpression, __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
11124 var expression = $2;
11125 return {
11126 type: "ComputedPropertyName",
11127 children: $0,
11128 expression
11129 };
11130});
11131var ComputedPropertyName$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBracket, TemplateLiteral, InsertCloseBracket), function($skip, $loc, $0, $1, $2, $3) {
11132 var expression = $2;
11133 if ($2.type === "StringLiteral")
11134 return $2;
11135 return {
11136 type: "ComputedPropertyName",
11137 children: $0,
11138 expression,
11139 implicit: true
11140 };
11141});
11142var ComputedPropertyName$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBracket, (0, import_lib3.$EXPECT)($R12, "ComputedPropertyName /[+-]/"), NumericLiteral, InsertCloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
11143 const expression = [$2, $3];
11144 return {
11145 type: "ComputedPropertyName",
11146 expression,
11147 children: [$1, expression, $4],
11148 implicit: true
11149 };
11150});
11151var ComputedPropertyName$$ = [ComputedPropertyName$0, ComputedPropertyName$1, ComputedPropertyName$2];
11152function ComputedPropertyName(ctx, state2) {
11153 return (0, import_lib3.$EVENT_C)(ctx, state2, "ComputedPropertyName", ComputedPropertyName$$);
11154}
11155var Decorator$0 = (0, import_lib3.$S)(AtAt, CallExpression);
11156function Decorator(ctx, state2) {
11157 return (0, import_lib3.$EVENT)(ctx, state2, "Decorator", Decorator$0);
11158}
11159var Decorators$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForbidClassImplicitCall, (0, import_lib3.$Q)((0, import_lib3.$S)(__, Decorator)), __, RestoreClassImplicitCall), function($skip, $loc, $0, $1, $2, $3, $4) {
11160 var decorators = $2;
11161 if (!decorators.length)
11162 return $skip;
11163 return $0;
11164});
11165function Decorators(ctx, state2) {
11166 return (0, import_lib3.$EVENT)(ctx, state2, "Decorators", Decorators$0);
11167}
11168var MethodDefinition$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Abstract, __, MethodSignature), function($skip, $loc, $0, $1, $2, $3) {
11169 var signature = $3;
11170 return {
11171 type: "MethodDefinition",
11172 children: $0,
11173 name: signature.name,
11174 abstract: true,
11175 signature,
11176 parameters: signature.parameters,
11177 ts: true
11178 };
11179});
11180var MethodDefinition$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(MethodSignature, (0, import_lib3.$N)((0, import_lib3.$C)(PropertyAccess, UnaryPostfix, NonNullAssertion)), (0, import_lib3.$E)(BracedBlock)), function($skip, $loc, $0, $1, $2, $3) {
11181 var signature = $1;
11182 var block = $3;
11183 let children = $0;
11184 let generatorPos = 0;
11185 let { modifier } = signature;
11186 if (hasAwait(block)) {
11187 generatorPos++;
11188 children = children.slice();
11189 if (modifier?.get || modifier?.set) {
11190 children.push({
11191 type: "Error",
11192 message: "Getters and setters cannot be async"
11193 });
11194 } else if (modifier?.async) {
11195 } else {
11196 children.unshift("async ");
11197 modifier = { ...modifier, async: true };
11198 signature = { ...signature, modifier };
11199 }
11200 }
11201 if (hasYield(block)) {
11202 if (children === $0)
11203 children = children.slice();
11204 if (modifier?.get || modifier?.set) {
11205 children.push({
11206 type: "Error",
11207 message: "Getters and setters cannot be generators"
11208 });
11209 } else if (modifier?.generator) {
11210 } else {
11211 children.splice(generatorPos, 0, "*");
11212 modifier = { ...modifier, generator: true };
11213 signature = { ...signature, modifier };
11214 }
11215 }
11216 return {
11217 type: "MethodDefinition",
11218 children,
11219 name: signature.name,
11220 signature,
11221 block,
11222 parameters: signature.parameters
11223 };
11224});
11225var MethodDefinition$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(GetOrSet, (0, import_lib3.$E)(_), ForbidIndentedApplication, (0, import_lib3.$E)((0, import_lib3.$S)(MemberBase, (0, import_lib3.$Q)(CallExpressionRest), (0, import_lib3.$E)(ReturnTypeSuffix))), RestoreIndentedApplication, (0, import_lib3.$E)(BracedBlock)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
11226 var kind = $1;
11227 var ws = $2;
11228 var content = $4;
11229 var block = $6;
11230 if (!content)
11231 return $skip;
11232 const [base, rest, returnType] = content;
11233 const value = [base, rest];
11234 if (!rest.length) {
11235 let name2;
11236 if (base.type === "MemberExpression") {
11237 const lastAccess2 = lastAccessInCallExpression(base);
11238 if (lastAccess2) {
11239 ({ name: name2 } = lastAccess2);
11240 }
11241 }
11242 if (!name2)
11243 ({ name: name2 } = base);
11244 if (!name2)
11245 return $skip;
11246 if (name2[0] === "\#")
11247 name2 = name2.slice(1);
11248 const autoReturn = !block || base.type !== "Identifier";
11249 return makeGetterMethod(name2, ws, base, returnType, block, kind, autoReturn);
11250 }
11251 let last = rest[rest.length - 1];
11252 while (Array.isArray(last)) {
11253 last = last[last.length - 1];
11254 }
11255 switch (last.type) {
11256 case "Call":
11257 return $skip;
11258 case "PropertyAccess":
11259 const { name: name2 } = last;
11260 return makeGetterMethod(name2, ws, value, returnType, block, kind);
11261 case "PropertyGlob":
11262 return {
11263 type: "MultiMethodDefinition",
11264 children: last.object.properties.map((p) => {
11265 const { name: name3, type } = p;
11266 let v;
11267 switch (type) {
11268 case "Identifier":
11269 v = insertTrimmingSpace(p, "");
11270 break;
11271 case "Property":
11272 const { value: value2 } = p;
11273 if (value2.privateShorthand) {
11274 v = value2.privateId;
11275 } else {
11276 v = insertTrimmingSpace(value2, "");
11277 }
11278 break;
11279 }
11280 const exp = processCallMemberExpression({
11281 type: "CallExpression",
11282 children: [base, ...rest.slice(0, -1), {
11283 type: "PropertyAccess",
11284 children: [last.dot, {
11285 ...v,
11286 children: [v.children.slice(0, 2)]
11287 // Remove potential delimiter
11288 }]
11289 }]
11290 });
11291 return makeGetterMethod(name3, ws, exp, returnType, block, kind);
11292 })
11293 };
11294 }
11295 const lastAccess = lastAccessInCallExpression({ children: rest });
11296 const { name } = lastAccess;
11297 return makeGetterMethod(name, ws, value, returnType, block, kind);
11298});
11299var MethodDefinition$$ = [MethodDefinition$0, MethodDefinition$1, MethodDefinition$2];
11300function MethodDefinition(ctx, state2) {
11301 return (0, import_lib3.$EVENT_C)(ctx, state2, "MethodDefinition", MethodDefinition$$);
11302}
11303var MethodModifier$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(GetOrSet, (0, import_lib3.$E)(_), (0, import_lib3.$Y)(ClassElementName)), function($skip, $loc, $0, $1, $2, $3) {
11304 var kind = $1;
11305 return {
11306 type: "MethodModifier",
11307 async: false,
11308 generator: false,
11309 get: kind.token === "get",
11310 set: kind.token === "set",
11311 children: $0
11312 };
11313});
11314var MethodModifier$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$S)(Async, __), (0, import_lib3.$E)((0, import_lib3.$S)(Star, __))), function($skip, $loc, $0, $1, $2) {
11315 return {
11316 type: "MethodModifier",
11317 async: true,
11318 get: false,
11319 set: false,
11320 generator: !!$2,
11321 children: $0
11322 };
11323});
11324var MethodModifier$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(Star, __), function($skip, $loc, $0, $1, $2) {
11325 return {
11326 type: "MethodModifier",
11327 async: false,
11328 get: false,
11329 set: false,
11330 generator: true,
11331 children: $0
11332 };
11333});
11334var MethodModifier$$ = [MethodModifier$0, MethodModifier$1, MethodModifier$2];
11335function MethodModifier(ctx, state2) {
11336 return (0, import_lib3.$EVENT_C)(ctx, state2, "MethodModifier", MethodModifier$$);
11337}
11338var MethodSignature$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ConstructorShorthand, NonEmptyParameters), function($skip, $loc, $0, $1, $2) {
11339 var parameters = $2;
11340 return {
11341 type: "MethodSignature",
11342 children: $0,
11343 name: $1.token,
11344 modifier: {},
11345 returnType: void 0,
11346 parameters
11347 };
11348});
11349var MethodSignature$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(MethodModifier), ClassElementName, (0, import_lib3.$E)(_), (0, import_lib3.$E)(QuestionMark), (0, import_lib3.$E)(_), NonEmptyParameters, (0, import_lib3.$E)(ReturnTypeSuffix)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
11350 var modifier = $1;
11351 var name = $2;
11352 var optional = $4;
11353 var parameters = $6;
11354 var returnType = $7;
11355 if (name.name) {
11356 name = name.name;
11357 } else if (name.token) {
11358 name = name.token.match(/^(?:"|')/) ? name.token.slice(1, -1) : name.token;
11359 }
11360 if (optional)
11361 $0[3] = optional = { ...optional, ts: true };
11362 modifier = modifier || {};
11363 return {
11364 type: "MethodSignature",
11365 children: $0,
11366 name,
11367 optional,
11368 modifier,
11369 // get/set/async/generator
11370 returnType,
11371 parameters
11372 };
11373});
11374var MethodSignature$$ = [MethodSignature$0, MethodSignature$1];
11375function MethodSignature(ctx, state2) {
11376 return (0, import_lib3.$EVENT_C)(ctx, state2, "MethodSignature", MethodSignature$$);
11377}
11378var ClassElementName$0 = PropertyName;
11379var ClassElementName$1 = LengthShorthand;
11380var ClassElementName$2 = PrivateIdentifier;
11381var ClassElementName$$ = [ClassElementName$0, ClassElementName$1, ClassElementName$2];
11382function ClassElementName(ctx, state2) {
11383 return (0, import_lib3.$EVENT_C)(ctx, state2, "ClassElementName", ClassElementName$$);
11384}
11385var PrivateIdentifier$0 = (0, import_lib3.$TV)((0, import_lib3.$TEXT)((0, import_lib3.$S)(Hash, IdentifierName)), function($skip, $loc, $0, $1) {
11386 var id = $0;
11387 return {
11388 type: "Identifier",
11389 name: id,
11390 names: [id],
11391 children: [{
11392 $loc,
11393 token: id
11394 }]
11395 };
11396});
11397function PrivateIdentifier(ctx, state2) {
11398 return (0, import_lib3.$EVENT)(ctx, state2, "PrivateIdentifier", PrivateIdentifier$0);
11399}
11400var WAssignmentOp$0 = (0, import_lib3.$S)(__, AssignmentOp);
11401var WAssignmentOp$1 = (0, import_lib3.$S)((0, import_lib3.$E)(_), OperatorAssignmentOp);
11402var WAssignmentOp$$ = [WAssignmentOp$0, WAssignmentOp$1];
11403function WAssignmentOp(ctx, state2) {
11404 return (0, import_lib3.$EVENT_C)(ctx, state2, "WAssignmentOp", WAssignmentOp$$);
11405}
11406var AssignmentOp$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(AssignmentOpSymbol, (0, import_lib3.$E)(_)), function($skip, $loc, $0, $1, $2) {
11407 if ($2?.length) {
11408 if (typeof $1 !== "string") {
11409 return { ...$1, children: [...$1.children, $2] };
11410 }
11411 return {
11412 token: $1,
11413 children: [$1, ...$2]
11414 };
11415 }
11416 if (typeof $1 !== "string")
11417 return $1;
11418 return { $loc, token: $1 };
11419});
11420function AssignmentOp(ctx, state2) {
11421 return (0, import_lib3.$EVENT)(ctx, state2, "AssignmentOp", AssignmentOp$0);
11422}
11423var OperatorAssignmentOp$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Xor, (0, import_lib3.$EXPECT)($L3, 'OperatorAssignmentOp "="'), (0, import_lib3.$E)(_)), function($skip, $loc, $0, $1, $2, $3) {
11424 return {
11425 special: true,
11426 call: getHelperRef("xor"),
11427 children: [$2, ...$3 || []]
11428 };
11429});
11430var OperatorAssignmentOp$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Xnor, (0, import_lib3.$EXPECT)($L3, 'OperatorAssignmentOp "="'), (0, import_lib3.$E)(_)), function($skip, $loc, $0, $1, $2, $3) {
11431 return {
11432 special: true,
11433 call: getHelperRef("xnor"),
11434 children: [$2, ...$3 || []]
11435 };
11436});
11437var OperatorAssignmentOp$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(Identifier, (0, import_lib3.$EXPECT)($L3, 'OperatorAssignmentOp "="'), (0, import_lib3.$E)(_)), function($skip, $loc, $0, $1, $2, $3) {
11438 return {
11439 special: true,
11440 call: $1,
11441 children: [$2, ...$3 || []]
11442 };
11443});
11444var OperatorAssignmentOp$$ = [OperatorAssignmentOp$0, OperatorAssignmentOp$1, OperatorAssignmentOp$2];
11445function OperatorAssignmentOp(ctx, state2) {
11446 return (0, import_lib3.$EVENT_C)(ctx, state2, "OperatorAssignmentOp", OperatorAssignmentOp$$);
11447}
11448var AssignmentOpSymbol$0 = (0, import_lib3.$EXPECT)($L46, 'AssignmentOpSymbol "**="');
11449var AssignmentOpSymbol$1 = (0, import_lib3.$EXPECT)($L47, 'AssignmentOpSymbol "*="');
11450var AssignmentOpSymbol$2 = (0, import_lib3.$EXPECT)($L48, 'AssignmentOpSymbol "/="');
11451var AssignmentOpSymbol$3 = (0, import_lib3.$EXPECT)($L49, 'AssignmentOpSymbol "%="');
11452var AssignmentOpSymbol$4 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L9, 'AssignmentOpSymbol "++"'), (0, import_lib3.$EXPECT)($L11, 'AssignmentOpSymbol "\u29FA"')), Equals), function($skip, $loc, $0, $1, $2) {
11453 return {
11454 special: true,
11455 call: getHelperRef("concatAssign"),
11456 omitLhs: true,
11457 children: [$2]
11458 };
11459});
11460var AssignmentOpSymbol$5 = (0, import_lib3.$EXPECT)($L50, 'AssignmentOpSymbol "+="');
11461var AssignmentOpSymbol$6 = (0, import_lib3.$EXPECT)($L51, 'AssignmentOpSymbol "-="');
11462var AssignmentOpSymbol$7 = (0, import_lib3.$EXPECT)($L52, 'AssignmentOpSymbol "<<="');
11463var AssignmentOpSymbol$8 = (0, import_lib3.$EXPECT)($L53, 'AssignmentOpSymbol ">>>="');
11464var AssignmentOpSymbol$9 = (0, import_lib3.$EXPECT)($L54, 'AssignmentOpSymbol ">>="');
11465var AssignmentOpSymbol$10 = (0, import_lib3.$EXPECT)($L55, 'AssignmentOpSymbol "&&="');
11466var AssignmentOpSymbol$11 = (0, import_lib3.$EXPECT)($L56, 'AssignmentOpSymbol "&="');
11467var AssignmentOpSymbol$12 = (0, import_lib3.$EXPECT)($L57, 'AssignmentOpSymbol "^="');
11468var AssignmentOpSymbol$13 = (0, import_lib3.$EXPECT)($L58, 'AssignmentOpSymbol "||="');
11469var AssignmentOpSymbol$14 = (0, import_lib3.$EXPECT)($L59, 'AssignmentOpSymbol "|="');
11470var AssignmentOpSymbol$15 = (0, import_lib3.$EXPECT)($L60, 'AssignmentOpSymbol "??="');
11471var AssignmentOpSymbol$16 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L61, 'AssignmentOpSymbol "?="'), function(value) {
11472 return "??=";
11473});
11474var AssignmentOpSymbol$17 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L3, 'AssignmentOpSymbol "="'), (0, import_lib3.$N)((0, import_lib3.$EXPECT)($L3, 'AssignmentOpSymbol "="'))), function(value) {
11475 return value[0];
11476});
11477var AssignmentOpSymbol$18 = (0, import_lib3.$T)((0, import_lib3.$S)(CoffeeWordAssignmentOp), function(value) {
11478 return value[0];
11479});
11480var AssignmentOpSymbol$$ = [AssignmentOpSymbol$0, AssignmentOpSymbol$1, AssignmentOpSymbol$2, AssignmentOpSymbol$3, AssignmentOpSymbol$4, AssignmentOpSymbol$5, AssignmentOpSymbol$6, AssignmentOpSymbol$7, AssignmentOpSymbol$8, AssignmentOpSymbol$9, AssignmentOpSymbol$10, AssignmentOpSymbol$11, AssignmentOpSymbol$12, AssignmentOpSymbol$13, AssignmentOpSymbol$14, AssignmentOpSymbol$15, AssignmentOpSymbol$16, AssignmentOpSymbol$17, AssignmentOpSymbol$18];
11481function AssignmentOpSymbol(ctx, state2) {
11482 return (0, import_lib3.$EVENT_C)(ctx, state2, "AssignmentOpSymbol", AssignmentOpSymbol$$);
11483}
11484var CoffeeWordAssignmentOp$0 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L62, 'CoffeeWordAssignmentOp "and="'), function(value) {
11485 return "&&=";
11486});
11487var CoffeeWordAssignmentOp$1 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L63, 'CoffeeWordAssignmentOp "or="'), function(value) {
11488 return "||=";
11489});
11490var CoffeeWordAssignmentOp$$ = [CoffeeWordAssignmentOp$0, CoffeeWordAssignmentOp$1];
11491function CoffeeWordAssignmentOp(ctx, state2) {
11492 return (0, import_lib3.$EVENT_C)(ctx, state2, "CoffeeWordAssignmentOp", CoffeeWordAssignmentOp$$);
11493}
11494var NotDedentedBinaryOp$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(IndentedFurther), (0, import_lib3.$E)(_), BinaryOp), function($skip, $loc, $0, $1, $2, $3) {
11495 const ws = [];
11496 if ($1)
11497 ws.push(...$1);
11498 if ($2)
11499 ws.push(...$2);
11500 return [ws, $3];
11501});
11502var NotDedentedBinaryOp$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, (0, import_lib3.$E)(_), (0, import_lib3.$N)(Identifier), (0, import_lib3.$C)((0, import_lib3.$N)((0, import_lib3.$EXPECT)($L64, 'NotDedentedBinaryOp "*"')), (0, import_lib3.$N)(ImportDeclaration)), BinaryOp), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
11503 var op = $5;
11504 const ws = [...$1];
11505 if ($2)
11506 ws.push(...$2);
11507 return [ws, op];
11508});
11509var NotDedentedBinaryOp$$ = [NotDedentedBinaryOp$0, NotDedentedBinaryOp$1];
11510function NotDedentedBinaryOp(ctx, state2) {
11511 return (0, import_lib3.$EVENT_C)(ctx, state2, "NotDedentedBinaryOp", NotDedentedBinaryOp$$);
11512}
11513var IdentifierBinaryOp$0 = (0, import_lib3.$TV)(Identifier, function($skip, $loc, $0, $1) {
11514 var id = $0;
11515 if (state.operators.has(id.name))
11516 return id;
11517 return $skip;
11518});
11519function IdentifierBinaryOp(ctx, state2) {
11520 return (0, import_lib3.$EVENT)(ctx, state2, "IdentifierBinaryOp", IdentifierBinaryOp$0);
11521}
11522var BinaryOp$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R20, "BinaryOp /(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2A76\u2A75\u2016\u2047&|*\\/!?%<>\u29FA+-])/"), _BinaryOp), function(value) {
11523 var op = value[1];
11524 return op;
11525});
11526function BinaryOp(ctx, state2) {
11527 return (0, import_lib3.$EVENT)(ctx, state2, "BinaryOp", BinaryOp$0);
11528}
11529var _BinaryOp$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(BinaryOpSymbol), function($skip, $loc, $0, $1) {
11530 if (typeof $1 === "string")
11531 return { $loc, token: $1 };
11532 return $1;
11533});
11534var _BinaryOp$1 = (0, import_lib3.$TV)(Identifier, function($skip, $loc, $0, $1) {
11535 var id = $0;
11536 if (!state.operators.has(id.name))
11537 return $skip;
11538 return {
11539 token: id.name,
11540 call: id,
11541 special: true,
11542 ...state.operators.get(id.name)
11543 };
11544});
11545var _BinaryOp$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(OmittedNegation, __, Identifier), function($skip, $loc, $0, $1, $2, $3) {
11546 var id = $3;
11547 if (!state.operators.has(id.name))
11548 return $skip;
11549 return {
11550 token: id.name,
11551 call: id,
11552 special: true,
11553 negated: true,
11554 ...state.operators.get(id.name)
11555 };
11556});
11557var _BinaryOp$$ = [_BinaryOp$0, _BinaryOp$1, _BinaryOp$2];
11558function _BinaryOp(ctx, state2) {
11559 return (0, import_lib3.$EVENT_C)(ctx, state2, "_BinaryOp", _BinaryOp$$);
11560}
11561var BinaryOpSymbol$0 = (0, import_lib3.$EXPECT)($L65, 'BinaryOpSymbol "**"');
11562var BinaryOpSymbol$1 = (0, import_lib3.$EXPECT)($L64, 'BinaryOpSymbol "*"');
11563var BinaryOpSymbol$2 = (0, import_lib3.$EXPECT)($L66, 'BinaryOpSymbol "/"');
11564var BinaryOpSymbol$3 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L67, 'BinaryOpSymbol "%%"'), function($skip, $loc, $0, $1) {
11565 return {
11566 call: getHelperRef("modulo"),
11567 special: true
11568 };
11569});
11570var BinaryOpSymbol$4 = (0, import_lib3.$EXPECT)($L68, 'BinaryOpSymbol "%"');
11571var BinaryOpSymbol$5 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L9, 'BinaryOpSymbol "++"'), (0, import_lib3.$EXPECT)($L11, 'BinaryOpSymbol "\u29FA"')), function($skip, $loc, $0, $1) {
11572 return {
11573 method: "concat",
11574 special: true
11575 };
11576});
11577var BinaryOpSymbol$6 = (0, import_lib3.$EXPECT)($L69, 'BinaryOpSymbol "+"');
11578var BinaryOpSymbol$7 = (0, import_lib3.$EXPECT)($L23, 'BinaryOpSymbol "-"');
11579var BinaryOpSymbol$8 = (0, import_lib3.$EXPECT)($L70, 'BinaryOpSymbol "<="');
11580var BinaryOpSymbol$9 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L71, 'BinaryOpSymbol "\u2264"'), function(value) {
11581 return "<=";
11582});
11583var BinaryOpSymbol$10 = (0, import_lib3.$EXPECT)($L72, 'BinaryOpSymbol ">="');
11584var BinaryOpSymbol$11 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L73, 'BinaryOpSymbol "\u2265"'), function(value) {
11585 return ">=";
11586});
11587var BinaryOpSymbol$12 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L74, 'BinaryOpSymbol "<?"'), function($skip, $loc, $0, $1) {
11588 return {
11589 $loc,
11590 token: "instanceof",
11591 relational: true,
11592 special: true
11593 };
11594});
11595var BinaryOpSymbol$13 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L75, 'BinaryOpSymbol "!<?"'), function($skip, $loc, $0, $1) {
11596 return {
11597 $loc,
11598 token: "instanceof",
11599 relational: true,
11600 special: true,
11601 negated: true
11602 };
11603});
11604var BinaryOpSymbol$14 = (0, import_lib3.$EXPECT)($L76, 'BinaryOpSymbol "<<"');
11605var BinaryOpSymbol$15 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L77, 'BinaryOpSymbol "\xAB"'), function(value) {
11606 return "<<";
11607});
11608var BinaryOpSymbol$16 = (0, import_lib3.$EXPECT)($L19, 'BinaryOpSymbol "<"');
11609var BinaryOpSymbol$17 = (0, import_lib3.$EXPECT)($L78, 'BinaryOpSymbol ">>>"');
11610var BinaryOpSymbol$18 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L79, 'BinaryOpSymbol "\u22D9"'), function(value) {
11611 return ">>>";
11612});
11613var BinaryOpSymbol$19 = (0, import_lib3.$EXPECT)($L80, 'BinaryOpSymbol ">>"');
11614var BinaryOpSymbol$20 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L81, 'BinaryOpSymbol "\xBB"'), function(value) {
11615 return ">>";
11616});
11617var BinaryOpSymbol$21 = (0, import_lib3.$EXPECT)($L44, 'BinaryOpSymbol ">"');
11618var BinaryOpSymbol$22 = (0, import_lib3.$EXPECT)($L82, 'BinaryOpSymbol "!=="');
11619var BinaryOpSymbol$23 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L83, 'BinaryOpSymbol "\u2262"'), function(value) {
11620 return "!==";
11621});
11622var BinaryOpSymbol$24 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L84, 'BinaryOpSymbol "!="'), (0, import_lib3.$EXPECT)($L85, 'BinaryOpSymbol "\u2260"')), function($skip, $loc, $0, $1) {
11623 if (config.coffeeEq)
11624 return "!==";
11625 return "!=";
11626});
11627var BinaryOpSymbol$25 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L86, 'BinaryOpSymbol "isnt"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
11628 if (config.coffeeIsnt)
11629 return "!==";
11630 return $skip;
11631});
11632var BinaryOpSymbol$26 = (0, import_lib3.$EXPECT)($L87, 'BinaryOpSymbol "==="');
11633var BinaryOpSymbol$27 = (0, import_lib3.$T)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L88, 'BinaryOpSymbol "\u2263"'), (0, import_lib3.$EXPECT)($L89, 'BinaryOpSymbol "\u2A76"')), function(value) {
11634 return "===";
11635});
11636var BinaryOpSymbol$28 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L90, 'BinaryOpSymbol "=="'), (0, import_lib3.$EXPECT)($L91, 'BinaryOpSymbol "\u2261"'), (0, import_lib3.$EXPECT)($L92, 'BinaryOpSymbol "\u2A75"')), function($skip, $loc, $0, $1) {
11637 if (config.coffeeEq)
11638 return "===";
11639 return "==";
11640});
11641var BinaryOpSymbol$29 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L93, 'BinaryOpSymbol "and"'), NonIdContinue), function(value) {
11642 return "&&";
11643});
11644var BinaryOpSymbol$30 = (0, import_lib3.$EXPECT)($L94, 'BinaryOpSymbol "&&"');
11645var BinaryOpSymbol$31 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L95, 'BinaryOpSymbol "or"'), NonIdContinue), function(value) {
11646 return "||";
11647});
11648var BinaryOpSymbol$32 = (0, import_lib3.$EXPECT)($L96, 'BinaryOpSymbol "||"');
11649var BinaryOpSymbol$33 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L97, 'BinaryOpSymbol "\u2016"'), function(value) {
11650 return "||";
11651});
11652var BinaryOpSymbol$34 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L98, 'BinaryOpSymbol "^^"'), (0, import_lib3.$S)((0, import_lib3.$EXPECT)($L99, 'BinaryOpSymbol "xor"'), NonIdContinue)), function($skip, $loc, $0, $1) {
11653 return {
11654 call: getHelperRef("xor"),
11655 special: true,
11656 prec: "^^"
11657 };
11658});
11659var BinaryOpSymbol$35 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($R21, "BinaryOpSymbol /!\\^\\^?/"), (0, import_lib3.$S)((0, import_lib3.$EXPECT)($L100, 'BinaryOpSymbol "xnor"'), NonIdContinue)), function($skip, $loc, $0, $1) {
11660 return {
11661 call: getHelperRef("xnor"),
11662 special: true,
11663 prec: "^^"
11664 };
11665});
11666var BinaryOpSymbol$36 = (0, import_lib3.$EXPECT)($L101, 'BinaryOpSymbol "??"');
11667var BinaryOpSymbol$37 = (0, import_lib3.$T)((0, import_lib3.$EXPECT)($L102, 'BinaryOpSymbol "\u2047"'), function(value) {
11668 return "??";
11669});
11670var BinaryOpSymbol$38 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L6, 'BinaryOpSymbol "?"'), CoffeeBinaryExistentialEnabled), function(value) {
11671 return "??";
11672});
11673var BinaryOpSymbol$39 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L103, 'BinaryOpSymbol "instanceof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
11674 return {
11675 $loc,
11676 token: $1,
11677 relational: true,
11678 special: true
11679 // for typeof shorthand
11680 };
11681});
11682var BinaryOpSymbol$40 = (0, import_lib3.$T)((0, import_lib3.$S)(CoffeeOfEnabled, CoffeeOfOp), function(value) {
11683 var op = value[1];
11684 return op;
11685});
11686var BinaryOpSymbol$41 = (0, import_lib3.$TS)((0, import_lib3.$S)(OmittedNegation, __, NotOp), function($skip, $loc, $0, $1, $2, $3) {
11687 var op = $3;
11688 return { ...op, $loc };
11689});
11690var BinaryOpSymbol$42 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$S)(Is, __, In), (0, import_lib3.$EXPECT)($L104, 'BinaryOpSymbol "\u2208"')), function($skip, $loc, $0, $1) {
11691 return {
11692 method: "includes",
11693 relational: true,
11694 reversed: true,
11695 special: true
11696 };
11697});
11698var BinaryOpSymbol$43 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L105, 'BinaryOpSymbol "\u220B"'), function($skip, $loc, $0, $1) {
11699 return {
11700 method: "includes",
11701 relational: true,
11702 special: true
11703 };
11704});
11705var BinaryOpSymbol$44 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L106, 'BinaryOpSymbol "\u220C"'), function($skip, $loc, $0, $1) {
11706 return {
11707 method: "includes",
11708 relational: true,
11709 special: true,
11710 negated: true
11711 };
11712});
11713var BinaryOpSymbol$45 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$S)(Is, __, OmittedNegation, __, In), (0, import_lib3.$EXPECT)($L107, 'BinaryOpSymbol "\u2209"')), function($skip, $loc, $0, $1) {
11714 return {
11715 method: "includes",
11716 relational: true,
11717 reversed: true,
11718 special: true,
11719 negated: true
11720 };
11721});
11722var BinaryOpSymbol$46 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(CoffeeNotEnabled), Is, __, Not), function($skip, $loc, $0, $1, $2, $3, $4) {
11723 if (config.objectIs) {
11724 return {
11725 call: getHelperRef("is"),
11726 relational: true,
11727 special: true,
11728 asConst: true,
11729 negated: true
11730 };
11731 }
11732 return "!==";
11733});
11734var BinaryOpSymbol$47 = (0, import_lib3.$TS)((0, import_lib3.$S)(Is), function($skip, $loc, $0, $1) {
11735 if (config.objectIs) {
11736 return {
11737 call: getHelperRef("is"),
11738 relational: true,
11739 special: true,
11740 asConst: true
11741 };
11742 }
11743 return "===";
11744});
11745var BinaryOpSymbol$48 = In;
11746var BinaryOpSymbol$49 = (0, import_lib3.$EXPECT)($L108, 'BinaryOpSymbol "&"');
11747var BinaryOpSymbol$50 = (0, import_lib3.$EXPECT)($L22, 'BinaryOpSymbol "^"');
11748var BinaryOpSymbol$51 = (0, import_lib3.$EXPECT)($L109, 'BinaryOpSymbol "|"');
11749var BinaryOpSymbol$$ = [BinaryOpSymbol$0, BinaryOpSymbol$1, BinaryOpSymbol$2, BinaryOpSymbol$3, BinaryOpSymbol$4, BinaryOpSymbol$5, BinaryOpSymbol$6, BinaryOpSymbol$7, BinaryOpSymbol$8, BinaryOpSymbol$9, BinaryOpSymbol$10, BinaryOpSymbol$11, BinaryOpSymbol$12, BinaryOpSymbol$13, BinaryOpSymbol$14, BinaryOpSymbol$15, BinaryOpSymbol$16, BinaryOpSymbol$17, BinaryOpSymbol$18, BinaryOpSymbol$19, BinaryOpSymbol$20, BinaryOpSymbol$21, BinaryOpSymbol$22, BinaryOpSymbol$23, BinaryOpSymbol$24, BinaryOpSymbol$25, BinaryOpSymbol$26, BinaryOpSymbol$27, BinaryOpSymbol$28, BinaryOpSymbol$29, BinaryOpSymbol$30, BinaryOpSymbol$31, BinaryOpSymbol$32, BinaryOpSymbol$33, BinaryOpSymbol$34, BinaryOpSymbol$35, BinaryOpSymbol$36, BinaryOpSymbol$37, BinaryOpSymbol$38, BinaryOpSymbol$39, BinaryOpSymbol$40, BinaryOpSymbol$41, BinaryOpSymbol$42, BinaryOpSymbol$43, BinaryOpSymbol$44, BinaryOpSymbol$45, BinaryOpSymbol$46, BinaryOpSymbol$47, BinaryOpSymbol$48, BinaryOpSymbol$49, BinaryOpSymbol$50, BinaryOpSymbol$51];
11750function BinaryOpSymbol(ctx, state2) {
11751 return (0, import_lib3.$EVENT_C)(ctx, state2, "BinaryOpSymbol", BinaryOpSymbol$$);
11752}
11753var ActualIn$0 = (0, import_lib3.$T)((0, import_lib3.$S)(CoffeeOfEnabled, Of), function(value) {
11754 return value[1];
11755});
11756var ActualIn$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(CoffeeOfEnabled), In), function(value) {
11757 return value[1];
11758});
11759var ActualIn$$ = [ActualIn$0, ActualIn$1];
11760function ActualIn(ctx, state2) {
11761 return (0, import_lib3.$EVENT_C)(ctx, state2, "ActualIn", ActualIn$$);
11762}
11763var CoffeeOfOp$0 = (0, import_lib3.$T)((0, import_lib3.$S)(Of), function(value) {
11764 return "in";
11765});
11766var CoffeeOfOp$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(In), function($skip, $loc, $0, $1) {
11767 return {
11768 call: [getHelperRef("indexOf"), ".call"],
11769 relational: true,
11770 reversed: true,
11771 suffix: " >= 0",
11772 special: true
11773 };
11774});
11775var CoffeeOfOp$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(OmittedNegation, __, Of, NonIdContinue), function($skip, $loc, $0, $1, $2, $3, $4) {
11776 return {
11777 $loc,
11778 token: "in",
11779 special: true,
11780 negated: true
11781 };
11782});
11783var CoffeeOfOp$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(OmittedNegation, __, In), function($skip, $loc, $0, $1, $2, $3) {
11784 return {
11785 call: [getHelperRef("indexOf"), ".call"],
11786 relational: true,
11787 reversed: true,
11788 suffix: " < 0",
11789 special: true
11790 };
11791});
11792var CoffeeOfOp$$ = [CoffeeOfOp$0, CoffeeOfOp$1, CoffeeOfOp$2, CoffeeOfOp$3];
11793function CoffeeOfOp(ctx, state2) {
11794 return (0, import_lib3.$EVENT_C)(ctx, state2, "CoffeeOfOp", CoffeeOfOp$$);
11795}
11796var NotOp$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L103, 'NotOp "instanceof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
11797 return {
11798 $loc,
11799 token: "instanceof",
11800 relational: true,
11801 special: true,
11802 negated: true
11803 };
11804});
11805var NotOp$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(In), function($skip, $loc, $0, $1) {
11806 return {
11807 $loc,
11808 token: "in",
11809 special: true,
11810 negated: true
11811 };
11812});
11813var NotOp$$ = [NotOp$0, NotOp$1];
11814function NotOp(ctx, state2) {
11815 return (0, import_lib3.$EVENT_C)(ctx, state2, "NotOp", NotOp$$);
11816}
11817var Xor$0 = (0, import_lib3.$EXPECT)($L98, 'Xor "^^"');
11818var Xor$1 = (0, import_lib3.$S)((0, import_lib3.$EXPECT)($L99, 'Xor "xor"'), NonIdContinue);
11819var Xor$$ = [Xor$0, Xor$1];
11820function Xor(ctx, state2) {
11821 return (0, import_lib3.$EVENT_C)(ctx, state2, "Xor", Xor$$);
11822}
11823var Xnor$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R21, "Xnor /!\\^\\^?/"));
11824var Xnor$1 = (0, import_lib3.$EXPECT)($L100, 'Xnor "xnor"');
11825var Xnor$$ = [Xnor$0, Xnor$1];
11826function Xnor(ctx, state2) {
11827 return (0, import_lib3.$EVENT_C)(ctx, state2, "Xnor", Xnor$$);
11828}
11829var UnaryOp$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R22, "UnaryOp /(?!\\+\\+|--)[!~+-](?!\\s)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
11830 return { $loc, token: $0 };
11831});
11832var UnaryOp$1 = AwaitOp;
11833var UnaryOp$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)(Delete, Void, Typeof), (0, import_lib3.$N)((0, import_lib3.$EXPECT)($R23, "UnaryOp /[:.]/")), (0, import_lib3.$E)(_)), function($skip, $loc, $0, $1, $2, $3) {
11834 var op = $1;
11835 var ws = $3;
11836 if (!ws)
11837 return [op, [" "]];
11838 return [op, ws];
11839});
11840var UnaryOp$3 = (0, import_lib3.$T)((0, import_lib3.$S)(Not, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($R23, "UnaryOp /[:.]/")), (0, import_lib3.$E)((0, import_lib3.$EXPECT)($L18, 'UnaryOp " "')), (0, import_lib3.$E)(_)), function(value) {
11841 return [value[0], value[3]];
11842});
11843var UnaryOp$$ = [UnaryOp$0, UnaryOp$1, UnaryOp$2, UnaryOp$3];
11844function UnaryOp(ctx, state2) {
11845 return (0, import_lib3.$EVENT_C)(ctx, state2, "UnaryOp", UnaryOp$$);
11846}
11847var AwaitOp$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Await, (0, import_lib3.$E)((0, import_lib3.$S)(Dot, IdentifierName)), (0, import_lib3.$E)(_)), function($skip, $loc, $0, $1, $2, $3) {
11848 var a = $1;
11849 var op = $2;
11850 var ws = $3;
11851 return {
11852 ...a,
11853 op,
11854 children: [a, ...ws || [" "]]
11855 };
11856});
11857function AwaitOp(ctx, state2) {
11858 return (0, import_lib3.$EVENT)(ctx, state2, "AwaitOp", AwaitOp$0);
11859}
11860var ModuleItem$0 = ImportDeclaration;
11861var ModuleItem$1 = ExportDeclaration;
11862var ModuleItem$2 = StatementListItem;
11863var ModuleItem$$ = [ModuleItem$0, ModuleItem$1, ModuleItem$2];
11864function ModuleItem(ctx, state2) {
11865 return (0, import_lib3.$EVENT_C)(ctx, state2, "ModuleItem", ModuleItem$$);
11866}
11867var StatementListItem$0 = Declaration;
11868var StatementListItem$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)((0, import_lib3.$EXPECT)($L110, 'StatementListItem "$:"')), ImplicitObjectLiteral), function($skip, $loc, $0, $1, $2) {
11869 return makeLeftHandSideExpression($2);
11870});
11871var StatementListItem$2 = PostfixedStatement;
11872var StatementListItem$$ = [StatementListItem$0, StatementListItem$1, StatementListItem$2];
11873function StatementListItem(ctx, state2) {
11874 return (0, import_lib3.$EVENT_C)(ctx, state2, "StatementListItem", StatementListItem$$);
11875}
11876var PostfixedStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Statement, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), PostfixStatement))), function($skip, $loc, $0, $1, $2) {
11877 var statement = $1;
11878 var post = $2;
11879 if (post)
11880 return addPostfixStatement(statement, ...post);
11881 return statement;
11882});
11883function PostfixedStatement(ctx, state2) {
11884 return (0, import_lib3.$EVENT)(ctx, state2, "PostfixedStatement", PostfixedStatement$0);
11885}
11886var NoCommaStatementListItem$0 = Declaration;
11887var NoCommaStatementListItem$1 = PostfixedNoCommaStatement;
11888var NoCommaStatementListItem$$ = [NoCommaStatementListItem$0, NoCommaStatementListItem$1];
11889function NoCommaStatementListItem(ctx, state2) {
11890 return (0, import_lib3.$EVENT_C)(ctx, state2, "NoCommaStatementListItem", NoCommaStatementListItem$$);
11891}
11892var PostfixedNoCommaStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(NoCommaStatement, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), PostfixStatement))), function($skip, $loc, $0, $1, $2) {
11893 var statement = $1;
11894 var post = $2;
11895 if (post)
11896 return addPostfixStatement(statement, ...post);
11897 return statement;
11898});
11899function PostfixedNoCommaStatement(ctx, state2) {
11900 return (0, import_lib3.$EVENT)(ctx, state2, "PostfixedNoCommaStatement", PostfixedNoCommaStatement$0);
11901}
11902var PostfixedExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ExtendedExpression, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), PostfixStatement))), function($skip, $loc, $0, $1, $2) {
11903 var expression = $1;
11904 var post = $2;
11905 if (post)
11906 return attachPostfixStatementAsExpression(expression, post);
11907 return expression;
11908});
11909function PostfixedExpression(ctx, state2) {
11910 return (0, import_lib3.$EVENT)(ctx, state2, "PostfixedExpression", PostfixedExpression$0);
11911}
11912var PostfixedCommaExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PostfixedExpression, (0, import_lib3.$C)((0, import_lib3.$S)((0, import_lib3.$E)(_), PostfixStatement), (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, AssignmentExpression)))), function($skip, $loc, $0, $1, $2) {
11913 var expression = $1;
11914 var post = $2;
11915 if (!post.length)
11916 return $1;
11917 if (post.length === 2 && !Array.isArray(post[1])) {
11918 return attachPostfixStatementAsExpression(expression, post);
11919 }
11920 return $0;
11921});
11922function PostfixedCommaExpression(ctx, state2) {
11923 return (0, import_lib3.$EVENT)(ctx, state2, "PostfixedCommaExpression", PostfixedCommaExpression$0);
11924}
11925var NonPipelinePostfixedExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(NonPipelineExtendedExpression, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), PostfixStatement))), function($skip, $loc, $0, $1, $2) {
11926 var expression = $1;
11927 var post = $2;
11928 if (post)
11929 return attachPostfixStatementAsExpression(expression, post);
11930 return expression;
11931});
11932function NonPipelinePostfixedExpression(ctx, state2) {
11933 return (0, import_lib3.$EVENT)(ctx, state2, "NonPipelinePostfixedExpression", NonPipelinePostfixedExpression$0);
11934}
11935var PostfixStatement$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R24, "PostfixStatement /(?=for|if|loop|unless|until|while)/"), _PostfixStatement), function(value) {
11936 return value[1];
11937});
11938function PostfixStatement(ctx, state2) {
11939 return (0, import_lib3.$EVENT)(ctx, state2, "PostfixStatement", PostfixStatement$0);
11940}
11941var _PostfixStatement$0 = ForClause;
11942var _PostfixStatement$1 = IfClause;
11943var _PostfixStatement$2 = LoopClause;
11944var _PostfixStatement$3 = WhileClause;
11945var _PostfixStatement$$ = [_PostfixStatement$0, _PostfixStatement$1, _PostfixStatement$2, _PostfixStatement$3];
11946function _PostfixStatement(ctx, state2) {
11947 return (0, import_lib3.$EVENT_C)(ctx, state2, "_PostfixStatement", _PostfixStatement$$);
11948}
11949var Statement$0 = KeywordStatement;
11950var Statement$1 = VariableStatement;
11951var Statement$2 = IfStatement;
11952var Statement$3 = IterationStatement;
11953var Statement$4 = SwitchStatement;
11954var Statement$5 = TryStatement;
11955var Statement$6 = EmptyStatement;
11956var Statement$7 = LabelledStatement;
11957var Statement$8 = CommaExpressionStatement;
11958var Statement$9 = BlockStatement;
11959var Statement$$ = [Statement$0, Statement$1, Statement$2, Statement$3, Statement$4, Statement$5, Statement$6, Statement$7, Statement$8, Statement$9];
11960function Statement(ctx, state2) {
11961 return (0, import_lib3.$EVENT_C)(ctx, state2, "Statement", Statement$$);
11962}
11963var NoCommaStatement$0 = KeywordStatement;
11964var NoCommaStatement$1 = VariableStatement;
11965var NoCommaStatement$2 = IfStatement;
11966var NoCommaStatement$3 = IterationStatement;
11967var NoCommaStatement$4 = SwitchStatement;
11968var NoCommaStatement$5 = TryStatement;
11969var NoCommaStatement$6 = EmptyStatement;
11970var NoCommaStatement$7 = LabelledStatement;
11971var NoCommaStatement$8 = ExpressionStatement;
11972var NoCommaStatement$9 = BlockStatement;
11973var NoCommaStatement$$ = [NoCommaStatement$0, NoCommaStatement$1, NoCommaStatement$2, NoCommaStatement$3, NoCommaStatement$4, NoCommaStatement$5, NoCommaStatement$6, NoCommaStatement$7, NoCommaStatement$8, NoCommaStatement$9];
11974function NoCommaStatement(ctx, state2) {
11975 return (0, import_lib3.$EVENT_C)(ctx, state2, "NoCommaStatement", NoCommaStatement$$);
11976}
11977var EmptyStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$Y)((0, import_lib3.$EXPECT)($L111, 'EmptyStatement ";"'))), function($skip, $loc, $0, $1, $2) {
11978 return { type: "EmptyStatement", children: $1 || [] };
11979});
11980function EmptyStatement(ctx, state2) {
11981 return (0, import_lib3.$EVENT)(ctx, state2, "EmptyStatement", EmptyStatement$0);
11982}
11983var InsertEmptyStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertSemicolon), function($skip, $loc, $0, $1) {
11984 return { type: "EmptyStatement", children: [$1] };
11985});
11986function InsertEmptyStatement(ctx, state2) {
11987 return (0, import_lib3.$EVENT)(ctx, state2, "InsertEmptyStatement", InsertEmptyStatement$0);
11988}
11989var BlockStatement$0 = (0, import_lib3.$T)((0, import_lib3.$S)(ExplicitBlock, (0, import_lib3.$N)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L3, 'BlockStatement "="')))), function(value) {
11990 return value[0];
11991});
11992function BlockStatement(ctx, state2) {
11993 return (0, import_lib3.$EVENT)(ctx, state2, "BlockStatement", BlockStatement$0);
11994}
11995var LabelledStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Label, LabelledItem), function($skip, $loc, $0, $1, $2) {
11996 var label = $1;
11997 var statement = $2;
11998 return {
11999 type: "LabelledStatement",
12000 label,
12001 statement,
12002 children: $0
12003 };
12004});
12005function LabelledStatement(ctx, state2) {
12006 return (0, import_lib3.$EVENT)(ctx, state2, "LabelledStatement", LabelledStatement$0);
12007}
12008var Label$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Colon, Identifier, Whitespace), function($skip, $loc, $0, $1, $2, $3) {
12009 var colon = $1;
12010 var id = $2;
12011 var w = $3;
12012 return [id, colon, w];
12013});
12014var Label$1 = (0, import_lib3.$S)((0, import_lib3.$EXPECT)($L110, 'Label "$:"'), Whitespace);
12015var Label$$ = [Label$0, Label$1];
12016function Label(ctx, state2) {
12017 return (0, import_lib3.$EVENT_C)(ctx, state2, "Label", Label$$);
12018}
12019var LabelledItem$0 = Statement;
12020var LabelledItem$1 = FunctionDeclaration;
12021var LabelledItem$$ = [LabelledItem$0, LabelledItem$1];
12022function LabelledItem(ctx, state2) {
12023 return (0, import_lib3.$EVENT_C)(ctx, state2, "LabelledItem", LabelledItem$$);
12024}
12025var IfStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(IfClause, BlockOrEmpty, (0, import_lib3.$E)(ElseClause)), function($skip, $loc, $0, $1, $2, $3) {
12026 var clause = $1;
12027 var block = $2;
12028 var e = $3;
12029 return {
12030 type: "IfStatement",
12031 children: [...clause.children, block, e],
12032 condition: clause.condition,
12033 negated: clause.negated,
12034 then: block,
12035 else: e
12036 };
12037});
12038function IfStatement(ctx, state2) {
12039 return (0, import_lib3.$EVENT)(ctx, state2, "IfStatement", IfStatement$0);
12040}
12041var ElseClause$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$C)(Nested, (0, import_lib3.$E)(_)), Else, BlockOrEmpty), function(value) {
12042 var block = value[2];
12043 return { "type": "ElseClause", "children": value, "block": block };
12044});
12045function ElseClause(ctx, state2) {
12046 return (0, import_lib3.$EVENT)(ctx, state2, "ElseClause", ElseClause$0);
12047}
12048var IfClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)(If, Unless), (0, import_lib3.$E)(_), Condition), function($skip, $loc, $0, $1, $2, $3) {
12049 var kind = $1;
12050 var ws = $2;
12051 var condition = $3;
12052 if (kind.negated) {
12053 kind = { ...kind, token: "if" };
12054 condition = negateCondition(condition);
12055 }
12056 return {
12057 type: "IfStatement",
12058 children: [kind, ws, condition],
12059 condition,
12060 negated: kind.negated
12061 };
12062});
12063function IfClause(ctx, state2) {
12064 return (0, import_lib3.$EVENT)(ctx, state2, "IfClause", IfClause$0);
12065}
12066var IterationStatement$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R25, "IterationStatement /(?=loop|comptime|do|for|until|while)/"), _IterationStatement), function(value) {
12067 return value[1];
12068});
12069function IterationStatement(ctx, state2) {
12070 return (0, import_lib3.$EVENT)(ctx, state2, "IterationStatement", IterationStatement$0);
12071}
12072var _IterationStatement$0 = LoopStatement;
12073var _IterationStatement$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(CoffeeDoEnabled), DoWhileStatement), function(value) {
12074 return value[1];
12075});
12076var _IterationStatement$2 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(CoffeeDoEnabled), DoStatement), function(value) {
12077 return value[1];
12078});
12079var _IterationStatement$3 = ComptimeStatement;
12080var _IterationStatement$4 = WhileStatement;
12081var _IterationStatement$5 = ForStatement;
12082var _IterationStatement$$ = [_IterationStatement$0, _IterationStatement$1, _IterationStatement$2, _IterationStatement$3, _IterationStatement$4, _IterationStatement$5];
12083function _IterationStatement(ctx, state2) {
12084 return (0, import_lib3.$EVENT_C)(ctx, state2, "_IterationStatement", _IterationStatement$$);
12085}
12086var IterationExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Async, __)), IterationStatement), function($skip, $loc, $0, $1, $2) {
12087 var async = $1;
12088 var statement = $2;
12089 return {
12090 type: "IterationExpression",
12091 subtype: statement.type,
12092 children: [statement],
12093 block: statement.block,
12094 statement,
12095 async
12096 };
12097});
12098function IterationExpression(ctx, state2) {
12099 return (0, import_lib3.$EVENT)(ctx, state2, "IterationExpression", IterationExpression$0);
12100}
12101var LoopStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(LoopClause, BlockOrEmptyStatement), function($skip, $loc, $0, $1, $2) {
12102 var clause = $1;
12103 var block = $2;
12104 return {
12105 ...clause,
12106 type: "IterationStatement",
12107 children: [...clause.children, block],
12108 block
12109 };
12110});
12111function LoopStatement(ctx, state2) {
12112 return (0, import_lib3.$EVENT)(ctx, state2, "LoopStatement", LoopStatement$0);
12113}
12114var LoopClause$0 = (0, import_lib3.$TV)(Loop, function($skip, $loc, $0, $1) {
12115 var kind = $0;
12116 const expression = {
12117 type: "Literal",
12118 children: ["true"],
12119 raw: "true"
12120 };
12121 const condition = {
12122 type: "ParenthesizedExpression",
12123 children: ["(", expression, ")"],
12124 expression
12125 };
12126 return {
12127 type: "IterationStatement",
12128 subtype: kind.token,
12129 children: [kind, condition],
12130 condition
12131 };
12132});
12133function LoopClause(ctx, state2) {
12134 return (0, import_lib3.$EVENT)(ctx, state2, "LoopClause", LoopClause$0);
12135}
12136var DoWhileStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Do, NoPostfixBracedOrEmptyBlock, __, WhileClause), function($skip, $loc, $0, $1, $2, $3, $4) {
12137 var block = $2;
12138 var clause = $4;
12139 return {
12140 ...clause,
12141 type: "IterationStatement",
12142 subtype: "do-while",
12143 children: $0,
12144 block
12145 };
12146});
12147function DoWhileStatement(ctx, state2) {
12148 return (0, import_lib3.$EVENT)(ctx, state2, "DoWhileStatement", DoWhileStatement$0);
12149}
12150var DoStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Do, NoPostfixBracedOrEmptyBlock), function($skip, $loc, $0, $1, $2) {
12151 var block = $2;
12152 block = insertTrimmingSpace(block, "");
12153 return {
12154 type: "DoStatement",
12155 children: [block],
12156 block
12157 };
12158});
12159function DoStatement(ctx, state2) {
12160 return (0, import_lib3.$EVENT)(ctx, state2, "DoStatement", DoStatement$0);
12161}
12162var ComptimeStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Comptime, NoPostfixBracedOrEmptyBlock, (0, import_lib3.$E)(ElseClause)), function($skip, $loc, $0, $1, $2, $3) {
12163 var t = $2;
12164 var e = $3;
12165 let block = !initialConfig.comptime && e?.block || t;
12166 block = insertTrimmingSpace(block, "");
12167 return {
12168 type: "ComptimeStatement",
12169 children: [block],
12170 block,
12171 // In case we want access to the original blocks:
12172 then: t,
12173 else: e
12174 };
12175});
12176function ComptimeStatement(ctx, state2) {
12177 return (0, import_lib3.$EVENT)(ctx, state2, "ComptimeStatement", ComptimeStatement$0);
12178}
12179var WhileStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(WhileClause, BlockOrEmptyStatement), function($skip, $loc, $0, $1, $2) {
12180 var clause = $1;
12181 var block = $2;
12182 return {
12183 ...clause,
12184 children: [...clause.children, block],
12185 block
12186 };
12187});
12188function WhileStatement(ctx, state2) {
12189 return (0, import_lib3.$EVENT)(ctx, state2, "WhileStatement", WhileStatement$0);
12190}
12191var WhileClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)(While, Until), (0, import_lib3.$E)(_), Condition), function($skip, $loc, $0, $1, $2, $3) {
12192 var kind = $1;
12193 var ws = $2;
12194 var condition = $3;
12195 if (kind.negated) {
12196 kind = { ...kind, token: "while" };
12197 condition = negateCondition(condition);
12198 }
12199 return {
12200 type: "IterationStatement",
12201 subtype: kind.token,
12202 children: [kind, ws, condition],
12203 condition,
12204 negated: kind.negated
12205 };
12206});
12207function WhileClause(ctx, state2) {
12208 return (0, import_lib3.$EVENT)(ctx, state2, "WhileClause", WhileClause$0);
12209}
12210var ForStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForClause, BlockOrEmptyStatement), function($skip, $loc, $0, $1, $2) {
12211 var clause = $1;
12212 var block = $2;
12213 block = blockWithPrefix(clause.blockPrefix, block);
12214 return {
12215 ...clause,
12216 children: [...clause.children, block],
12217 block
12218 };
12219});
12220function ForStatement(ctx, state2) {
12221 return (0, import_lib3.$EVENT)(ctx, state2, "ForStatement", ForStatement$0);
12222}
12223var ForClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(For, __, ForStatementControl), function($skip, $loc, $0, $1, $2, $3) {
12224 var c = $3;
12225 const { children, declaration } = c;
12226 return {
12227 type: "ForStatement",
12228 children: [$1, ...$2, ...children],
12229 declaration,
12230 block: null,
12231 blockPrefix: c.blockPrefix,
12232 hoistDec: c.hoistDec
12233 };
12234});
12235function ForClause(ctx, state2) {
12236 return (0, import_lib3.$EVENT)(ctx, state2, "ForClause", ForClause$0);
12237}
12238var ForStatementControl$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(CoffeeForLoopsEnabled), ForStatementParameters), function(value) {
12239 return value[1];
12240});
12241var ForStatementControl$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(CoffeeForLoopsEnabled, CoffeeForStatementParameters, (0, import_lib3.$E)(WhenCondition)), function($skip, $loc, $0, $1, $2, $3) {
12242 var condition = $3;
12243 if (condition) {
12244 const block = "continue";
12245 $2 = {
12246 ...$2,
12247 blockPrefix: [
12248 ...$2.blockPrefix,
12249 ["", {
12250 type: "IfStatement",
12251 then: block,
12252 children: ["if (!(", insertTrimmingSpace(condition, ""), ")) ", block]
12253 }, ";"]
12254 ]
12255 };
12256 }
12257 return $2;
12258});
12259var ForStatementControl$$ = [ForStatementControl$0, ForStatementControl$1];
12260function ForStatementControl(ctx, state2) {
12261 return (0, import_lib3.$EVENT_C)(ctx, state2, "ForStatementControl", ForStatementControl$$);
12262}
12263var WhenCondition$0 = (0, import_lib3.$T)((0, import_lib3.$S)(__, When, ExpressionWithObjectApplicationForbidden), function(value) {
12264 var exp = value[2];
12265 return exp;
12266});
12267function WhenCondition(ctx, state2) {
12268 return (0, import_lib3.$EVENT)(ctx, state2, "WhenCondition", WhenCondition$0);
12269}
12270var CoffeeForStatementParameters$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Await, __)), InsertOpenParen, CoffeeForDeclaration, (0, import_lib3.$E)(CoffeeForIndex), __, (0, import_lib3.$C)(In, Of, From), ExpressionWithObjectApplicationForbidden, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), By, ExpressionWithObjectApplicationForbidden)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12271 var open = $2;
12272 var declaration = $3;
12273 var index = $4;
12274 var kind = $6;
12275 var exp = $7;
12276 var step = $8;
12277 var close = $9;
12278 let blockPrefix = [];
12279 exp = insertTrimmingSpace(exp, "");
12280 declaration = insertTrimmingSpace(declaration, "");
12281 if (kind.token === "from") {
12282 if (step) {
12283 throw new Error("Can't use 'by' with 'from' in CoffeeScript for loops");
12284 }
12285 kind = { ...kind, token: "of" };
12286 } else if (kind.token === "of") {
12287 if (step) {
12288 throw new Error("Can't use 'by' with 'of' in CoffeeScript for loops");
12289 }
12290 if (declaration.own) {
12291 const hasPropRef = getHelperRef("hasProp");
12292 blockPrefix.push(["", ["if (!", hasPropRef, "(", exp, ", ", declaration, ")) continue"], ";"]);
12293 }
12294 if (index) {
12295 blockPrefix.push(["", {
12296 type: "AssignmentExpression",
12297 children: [index, " = ", exp, "[", declaration, "]"],
12298 names: index.names
12299 }, ";"]);
12300 }
12301 kind.token = "in";
12302 } else if (kind.token === "in") {
12303 const counterRef = makeRef("i");
12304 const lenRef = makeRef("len");
12305 if (exp.type === "RangeExpression") {
12306 return forRange(open, declaration, exp, step?.[2], close);
12307 }
12308 const expRef = maybeRef(exp);
12309 const varRef = declaration;
12310 let increment = "++", indexAssignment, assignmentNames = [...varRef.names];
12311 if (index) {
12312 index = insertTrimmingSpace(index, "");
12313 indexAssignment = [index, "="];
12314 assignmentNames.push(...index.names);
12315 }
12316 const expRefDec = expRef !== exp ? [expRef, " = ", insertTrimmingSpace(exp, ""), ", "] : [];
12317 blockPrefix.push(["", {
12318 type: "AssignmentExpression",
12319 children: [varRef, " = ", expRef, "[", indexAssignment, counterRef, "]"],
12320 names: assignmentNames
12321 }, ";"]);
12322 declaration = {
12323 type: "Declaration",
12324 children: ["let ", ...expRefDec, counterRef, " = 0, ", lenRef, " = ", expRef, ".length"],
12325 names: []
12326 };
12327 let condition = [counterRef, " < ", lenRef, "; "];
12328 if (step) {
12329 let [stepWs, , stepExp] = step;
12330 stepWs = insertTrimmingSpace(stepWs, "");
12331 if (stepExp.type === "Literal") {
12332 increment = [" +=", ...stepWs, stepExp];
12333 if (stepExp.raw[0] === "-") {
12334 declaration = {
12335 type: "Declaration",
12336 children: ["let ", ...expRefDec, counterRef, " = ", expRef, ".length - 1"],
12337 names: []
12338 };
12339 condition = [counterRef, " >= 0; "];
12340 }
12341 } else {
12342 throw new Error("TODO: Support non-literal step in CoffeeScript for loops");
12343 }
12344 return {
12345 declaration,
12346 children: [$1, open, declaration, "; ", ...condition, counterRef, increment, close],
12347 blockPrefix
12348 };
12349 }
12350 return {
12351 declaration,
12352 children: [$1, open, declaration, "; ", ...condition, counterRef, increment, close],
12353 blockPrefix
12354 };
12355 }
12356 return {
12357 declaration,
12358 children: [$1, open, declaration, $5, kind, " ", exp, close],
12359 blockPrefix
12360 };
12361});
12362var CoffeeForStatementParameters$1 = ForRangeParameters;
12363var CoffeeForStatementParameters$$ = [CoffeeForStatementParameters$0, CoffeeForStatementParameters$1];
12364function CoffeeForStatementParameters(ctx, state2) {
12365 return (0, import_lib3.$EVENT_C)(ctx, state2, "CoffeeForStatementParameters", CoffeeForStatementParameters$$);
12366}
12367var CoffeeForIndex$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), Comma, (0, import_lib3.$E)(_), BindingIdentifier), function($skip, $loc, $0, $1, $2, $3, $4) {
12368 var ws1 = $1;
12369 var ws2 = $3;
12370 var id = $4;
12371 ws2 = insertTrimmingSpace(ws1, "");
12372 return {
12373 ...id,
12374 children: [...ws1 || [], ...ws2 || [], ...id.children]
12375 };
12376});
12377function CoffeeForIndex(ctx, state2) {
12378 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeForIndex", CoffeeForIndex$0);
12379}
12380var CoffeeForDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(__, Own)), ForBinding), function($skip, $loc, $0, $1, $2) {
12381 var own = $1;
12382 var binding = $2;
12383 return {
12384 type: "AssignmentExpression",
12385 own: Boolean(own),
12386 children: [$2],
12387 names: $2.names
12388 };
12389});
12390function CoffeeForDeclaration(ctx, state2) {
12391 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeForDeclaration", CoffeeForDeclaration$0);
12392}
12393var ForStatementParameters$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenParen, __, (0, import_lib3.$C)(LexicalDeclaration, VariableStatement, (0, import_lib3.$E)(CommaExpression)), __, Semicolon, (0, import_lib3.$E)(CommaExpression), Semicolon, (0, import_lib3.$E)(CommaExpression), __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
12394 var declaration = $3;
12395 return {
12396 declaration,
12397 children: $0
12398 };
12399});
12400var ForStatementParameters$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenParen, __, (0, import_lib3.$C)(LexicalDeclaration, VariableStatement, (0, import_lib3.$E)(CommaExpression)), __, Semicolon, (0, import_lib3.$E)(CommaExpression), Semicolon, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), ExpressionWithIndentedApplicationForbidden)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12401 var declaration = $3;
12402 return {
12403 declaration,
12404 children: $0
12405 };
12406});
12407var ForStatementParameters$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Await, __)), (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$C)(Each, Own), __)), (0, import_lib3.$S)(OpenParen, __), ForInOfDeclaration, (0, import_lib3.$E)((0, import_lib3.$S)(__, Comma, __, ForInOfDeclaration)), __, (0, import_lib3.$C)(In, Of), ExpressionWithObjectApplicationForbidden, (0, import_lib3.$E)((0, import_lib3.$S)(__, By, ExpressionWithObjectApplicationForbidden)), (0, import_lib3.$S)(__, CloseParen)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
12408 return processForInOf($0, getHelperRef);
12409});
12410var ForStatementParameters$3 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Await, __)), (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$C)(Each, Own), __)), InsertOpenParen, ForInOfDeclaration, (0, import_lib3.$E)((0, import_lib3.$S)(__, Comma, __, ForInOfDeclaration)), __, (0, import_lib3.$C)(In, Of), ExpressionWithObjectApplicationForbidden, (0, import_lib3.$E)((0, import_lib3.$S)(__, By, ExpressionWithObjectApplicationForbidden)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
12411 return processForInOf($0, getHelperRef);
12412});
12413var ForStatementParameters$4 = ForRangeParameters;
12414var ForStatementParameters$$ = [ForStatementParameters$0, ForStatementParameters$1, ForStatementParameters$2, ForStatementParameters$3, ForStatementParameters$4];
12415function ForStatementParameters(ctx, state2) {
12416 return (0, import_lib3.$EVENT_C)(ctx, state2, "ForStatementParameters", ForStatementParameters$$);
12417}
12418var ForRangeParameters$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Await, __)), OpenParen, OpenBracket, RangeExpression, CloseBracket, (0, import_lib3.$E)((0, import_lib3.$S)(__, By, ExpressionWithObjectApplicationForbidden)), CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
12419 var open = $2;
12420 var exp = $4;
12421 var step = $6;
12422 var close = $7;
12423 return forRange(open, null, exp, step, close);
12424});
12425var ForRangeParameters$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Await, __)), InsertOpenParen, OpenBracket, RangeExpression, CloseBracket, (0, import_lib3.$E)((0, import_lib3.$S)(__, By, ExpressionWithObjectApplicationForbidden)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
12426 var open = $2;
12427 var exp = $4;
12428 var step = $6;
12429 var close = $7;
12430 return forRange(open, null, exp, step, close);
12431});
12432var ForRangeParameters$$ = [ForRangeParameters$0, ForRangeParameters$1];
12433function ForRangeParameters(ctx, state2) {
12434 return (0, import_lib3.$EVENT_C)(ctx, state2, "ForRangeParameters", ForRangeParameters$$);
12435}
12436var ForInOfDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Var, ForBinding), function($skip, $loc, $0, $1, $2) {
12437 var binding = $2;
12438 return {
12439 type: "ForDeclaration",
12440 children: $0,
12441 declare: $1,
12442 binding,
12443 names: binding.names
12444 };
12445});
12446var ForInOfDeclaration$1 = ForDeclaration;
12447var ForInOfDeclaration$2 = LeftHandSideExpression;
12448var ForInOfDeclaration$$ = [ForInOfDeclaration$0, ForInOfDeclaration$1, ForInOfDeclaration$2];
12449function ForInOfDeclaration(ctx, state2) {
12450 return (0, import_lib3.$EVENT_C)(ctx, state2, "ForInOfDeclaration", ForInOfDeclaration$$);
12451}
12452var ForDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(LetOrConst, ForBinding), function($skip, $loc, $0, $1, $2) {
12453 var c = $1;
12454 var binding = $2;
12455 return {
12456 type: "ForDeclaration",
12457 children: [c, binding],
12458 declare: c,
12459 binding,
12460 names: binding.names
12461 };
12462});
12463var ForDeclaration$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertConst, ForBinding, (0, import_lib3.$EXPECT)($R26, "ForDeclaration /(?=[\\s\\),])/")), function($skip, $loc, $0, $1, $2, $3) {
12464 var c = $1;
12465 var binding = $2;
12466 return {
12467 type: "ForDeclaration",
12468 children: [c, binding],
12469 declare: c,
12470 binding,
12471 names: binding.names
12472 };
12473});
12474var ForDeclaration$$ = [ForDeclaration$0, ForDeclaration$1];
12475function ForDeclaration(ctx, state2) {
12476 return (0, import_lib3.$EVENT_C)(ctx, state2, "ForDeclaration", ForDeclaration$$);
12477}
12478var ForBinding$0 = BindingIdentifier;
12479var ForBinding$1 = BindingPattern;
12480var ForBinding$$ = [ForBinding$0, ForBinding$1];
12481function ForBinding(ctx, state2) {
12482 return (0, import_lib3.$EVENT_C)(ctx, state2, "ForBinding", ForBinding$$);
12483}
12484var SwitchStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Switch, (0, import_lib3.$C)(EmptyCondition, Condition), CaseBlock), function($skip, $loc, $0, $1, $2, $3) {
12485 var condition = $2;
12486 var caseBlock = $3;
12487 if (condition.type === "EmptyCondition") {
12488 caseBlock.clauses.forEach(({ cases }) => {
12489 if (cases) {
12490 cases.forEach((c) => {
12491 const exp = c[1];
12492 switch (exp.type) {
12493 case "Identifier":
12494 case "Literal":
12495 c.splice(1, 0, "!");
12496 break;
12497 default:
12498 c.splice(1, 1, "!(", exp, ")");
12499 }
12500 });
12501 }
12502 });
12503 }
12504 return {
12505 type: "SwitchStatement",
12506 children: $0,
12507 condition,
12508 caseBlock
12509 };
12510});
12511function SwitchStatement(ctx, state2) {
12512 return (0, import_lib3.$EVENT)(ctx, state2, "SwitchStatement", SwitchStatement$0);
12513}
12514var EmptyCondition$0 = (0, import_lib3.$TV)((0, import_lib3.$Y)(EOS), function($skip, $loc, $0, $1) {
12515 return {
12516 type: "EmptyCondition",
12517 children: [{
12518 $loc,
12519 token: " (false)"
12520 }]
12521 };
12522});
12523function EmptyCondition(ctx, state2) {
12524 return (0, import_lib3.$EVENT)(ctx, state2, "EmptyCondition", EmptyCondition$0);
12525}
12526var CaseBlock$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$C)(Nested, _)), OpenBrace, NestedCaseClauses, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
12527 var clauses = $3;
12528 return {
12529 type: "CaseBlock",
12530 clauses,
12531 children: $0
12532 };
12533});
12534var CaseBlock$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBrace, NestedCaseClauses, InsertNewline, InsertIndent, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
12535 var clauses = $2;
12536 return {
12537 type: "CaseBlock",
12538 clauses,
12539 children: $0
12540 };
12541});
12542var CaseBlock$$ = [CaseBlock$0, CaseBlock$1];
12543function CaseBlock(ctx, state2) {
12544 return (0, import_lib3.$EVENT_C)(ctx, state2, "CaseBlock", CaseBlock$$);
12545}
12546var NestedCaseClauses$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedCaseClause), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
12547 var clauses = $2;
12548 if (clauses.length)
12549 return clauses;
12550 return $skip;
12551});
12552function NestedCaseClauses(ctx, state2) {
12553 return (0, import_lib3.$EVENT)(ctx, state2, "NestedCaseClauses", NestedCaseClauses$0);
12554}
12555var NestedCaseClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Nested, CaseClause), function($skip, $loc, $0, $1, $2) {
12556 var indent = $1;
12557 var clause = $2;
12558 return {
12559 ...clause,
12560 // Bring the indent into the clause
12561 children: [indent, ...clause.children]
12562 };
12563});
12564function NestedCaseClause(ctx, state2) {
12565 return (0, import_lib3.$EVENT)(ctx, state2, "NestedCaseClause", NestedCaseClause$0);
12566}
12567var CaseClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PatternExpressionList, (0, import_lib3.$C)(ThenClause, BareBlock)), function($skip, $loc, $0, $1, $2) {
12568 var patterns = $1;
12569 var block = $2;
12570 return {
12571 type: "PatternClause",
12572 children: $0,
12573 patterns,
12574 block
12575 };
12576});
12577var CaseClause$1 = (0, import_lib3.$T)((0, import_lib3.$S)(Case, CaseExpressionList, IgnoreColon, (0, import_lib3.$C)(ThenClause, BareBlock)), function(value) {
12578 var cases = value[1];
12579 var block = value[3];
12580 return { "type": "CaseClause", "children": value, "cases": cases, "block": block };
12581});
12582var CaseClause$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(When, CaseExpressionList, IgnoreColon, InsertOpenBrace, (0, import_lib3.$C)(ThenClause, BareBlock), InsertBreak, InsertNewline, InsertIndent, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12583 var cases = $2;
12584 var block = $5;
12585 var b = $6;
12586 return {
12587 type: "WhenClause",
12588 children: $0,
12589 cases,
12590 block,
12591 break: b
12592 };
12593});
12594var CaseClause$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(Default, ImpliedColon, (0, import_lib3.$C)(ThenClause, BareBlock)), function($skip, $loc, $0, $1, $2, $3) {
12595 var block = $3;
12596 return {
12597 type: "DefaultClause",
12598 block,
12599 children: $0
12600 };
12601});
12602var CaseClause$4 = (0, import_lib3.$TS)((0, import_lib3.$S)(Else, ImpliedColon, (0, import_lib3.$C)(ThenClause, BracedBlock, EmptyBlock)), function($skip, $loc, $0, $1, $2, $3) {
12603 var block = $3;
12604 $1.token = "default";
12605 return {
12606 type: "DefaultClause",
12607 block,
12608 children: $0
12609 };
12610});
12611var CaseClause$$ = [CaseClause$0, CaseClause$1, CaseClause$2, CaseClause$3, CaseClause$4];
12612function CaseClause(ctx, state2) {
12613 return (0, import_lib3.$EVENT_C)(ctx, state2, "CaseClause", CaseClause$$);
12614}
12615var PatternExpressionList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PatternExpression, (0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$E)(_), Comma, (0, import_lib3.$E)((0, import_lib3.$C)(Nested, _)), PatternExpression))), function($skip, $loc, $0, $1, $2) {
12616 var first = $1;
12617 var rest = $2;
12618 return [first, ...rest.map(([, , , p]) => p)];
12619});
12620function PatternExpressionList(ctx, state2) {
12621 return (0, import_lib3.$EVENT)(ctx, state2, "PatternExpressionList", PatternExpressionList$0);
12622}
12623var PatternExpression$0 = BindingPattern;
12624var PatternExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForbidIndentedApplication, (0, import_lib3.$E)((0, import_lib3.$P)(SingleLineBinaryOpRHS)), RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3) {
12625 var pattern = $2;
12626 if (!pattern)
12627 return $skip;
12628 return {
12629 type: "ConditionFragment",
12630 children: pattern
12631 };
12632});
12633var PatternExpression$$ = [PatternExpression$0, PatternExpression$1];
12634function PatternExpression(ctx, state2) {
12635 return (0, import_lib3.$EVENT_C)(ctx, state2, "PatternExpression", PatternExpression$$);
12636}
12637var CaseExpressionList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$S)((0, import_lib3.$E)(_), CaseExpression, InsertColon), (0, import_lib3.$Q)((0, import_lib3.$S)(__, Comma, CaseExpression, InsertColon))), function($skip, $loc, $0, $1, $2) {
12638 var first = $1;
12639 var rest = $2;
12640 const result = rest.map(([ws, _comma, exp, col]) => {
12641 exp = insertTrimmingSpace(exp, "");
12642 if (ws.length)
12643 return [insertTrimmingSpace("case ", ws), exp, col];
12644 return ["case ", exp, col];
12645 });
12646 result.unshift(first);
12647 return result;
12648});
12649function CaseExpressionList(ctx, state2) {
12650 return (0, import_lib3.$EVENT)(ctx, state2, "CaseExpressionList", CaseExpressionList$0);
12651}
12652var CaseExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PropertyName, (0, import_lib3.$Y)((0, import_lib3.$S)((0, import_lib3.$E)(_), Colon))), function($skip, $loc, $0, $1, $2) {
12653 var value = $1;
12654 if (value.type === "ComputedPropertyName") {
12655 if (value.implicit)
12656 return value.expression;
12657 return { ...value, type: "ArrayExpression" };
12658 }
12659 return value;
12660});
12661var CaseExpression$1 = ExpressionWithObjectApplicationForbidden;
12662var CaseExpression$$ = [CaseExpression$0, CaseExpression$1];
12663function CaseExpression(ctx, state2) {
12664 return (0, import_lib3.$EVENT_C)(ctx, state2, "CaseExpression", CaseExpression$$);
12665}
12666var ImpliedColon$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), Colon);
12667var ImpliedColon$1 = InsertColon;
12668var ImpliedColon$$ = [ImpliedColon$0, ImpliedColon$1];
12669function ImpliedColon(ctx, state2) {
12670 return (0, import_lib3.$EVENT_C)(ctx, state2, "ImpliedColon", ImpliedColon$$);
12671}
12672var IgnoreColon$0 = (0, import_lib3.$TV)((0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), Colon)), function($skip, $loc, $0, $1) {
12673 if ($1)
12674 return $1[0];
12675});
12676function IgnoreColon(ctx, state2) {
12677 return (0, import_lib3.$EVENT)(ctx, state2, "IgnoreColon", IgnoreColon$0);
12678}
12679var TryStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Try, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($L16, 'TryStatement ":"')), NoPostfixBracedOrEmptyBlock, (0, import_lib3.$E)(CatchClause), (0, import_lib3.$E)(ElseClause), (0, import_lib3.$E)(FinallyClause)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
12680 return processTryBlock($0);
12681});
12682function TryStatement(ctx, state2) {
12683 return (0, import_lib3.$EVENT)(ctx, state2, "TryStatement", TryStatement$0);
12684}
12685var CatchClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)(Nested, _), Catch, (0, import_lib3.$E)(CatchBind), (0, import_lib3.$C)(BracedThenClause, BracedOrEmptyBlock)), function($skip, $loc, $0, $1, $2, $3, $4) {
12686 var block = $4;
12687 return {
12688 type: "CatchClause",
12689 children: $0,
12690 block
12691 };
12692});
12693function CatchClause(ctx, state2) {
12694 return (0, import_lib3.$EVENT)(ctx, state2, "CatchClause", CatchClause$0);
12695}
12696var CatchBind$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), OpenParen, __, CatchParameter, __, CloseParen);
12697var CatchBind$1 = (0, import_lib3.$S)(_, InsertOpenParen, (0, import_lib3.$N)(EOS), CatchParameter, InsertCloseParen);
12698var CatchBind$$ = [CatchBind$0, CatchBind$1];
12699function CatchBind(ctx, state2) {
12700 return (0, import_lib3.$EVENT_C)(ctx, state2, "CatchBind", CatchBind$$);
12701}
12702var FinallyClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)(Nested, _), Finally, (0, import_lib3.$C)(BracedThenClause, BracedOrEmptyBlock)), function($skip, $loc, $0, $1, $2, $3) {
12703 var block = $3;
12704 return {
12705 type: "FinallyClause",
12706 children: $0,
12707 block
12708 };
12709});
12710function FinallyClause(ctx, state2) {
12711 return (0, import_lib3.$EVENT)(ctx, state2, "FinallyClause", FinallyClause$0);
12712}
12713var CatchParameter$0 = (0, import_lib3.$S)(BindingIdentifier, (0, import_lib3.$E)(TypeSuffix));
12714var CatchParameter$1 = (0, import_lib3.$S)(BindingPattern, (0, import_lib3.$E)(TypeSuffix));
12715var CatchParameter$$ = [CatchParameter$0, CatchParameter$1];
12716function CatchParameter(ctx, state2) {
12717 return (0, import_lib3.$EVENT_C)(ctx, state2, "CatchParameter", CatchParameter$$);
12718}
12719var Condition$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenParen, (0, import_lib3.$E)(_), DeclarationCondition, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4) {
12720 var open = $1;
12721 var ws = $2;
12722 var expression = $3;
12723 var close = $4;
12724 return {
12725 type: "ParenthesizedExpression",
12726 children: [open, ws, expression, close],
12727 expression
12728 };
12729});
12730var Condition$1 = (0, import_lib3.$T)((0, import_lib3.$S)(ParenthesizedExpression, (0, import_lib3.$N)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)(BinaryOp, AssignmentOp, Dot, QuestionMark))), (0, import_lib3.$N)((0, import_lib3.$S)(_, OperatorAssignmentOp))), function(value) {
12731 return value[0];
12732});
12733var Condition$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenParen, DeclarationCondition, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3) {
12734 var open = $1;
12735 var expression = $2;
12736 var close = $3;
12737 return {
12738 type: "ParenthesizedExpression",
12739 children: [open, expression, close],
12740 expression
12741 };
12742});
12743var Condition$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenParen, ExpressionWithObjectApplicationForbidden, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3) {
12744 var open = $1;
12745 var expression = $2;
12746 var close = $3;
12747 if (expression.type === "ParenthesizedExpression")
12748 return expression;
12749 expression = insertTrimmingSpace(expression, "");
12750 return {
12751 type: "ParenthesizedExpression",
12752 children: [open, expression, close],
12753 expression
12754 };
12755});
12756var Condition$$ = [Condition$0, Condition$1, Condition$2, Condition$3];
12757function Condition(ctx, state2) {
12758 return (0, import_lib3.$EVENT_C)(ctx, state2, "Condition", Condition$$);
12759}
12760var DeclarationCondition$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForbidBracedApplication, ForbidIndentedApplication, ForbidNewlineBinaryOp, (0, import_lib3.$E)(LexicalDeclaration), RestoreNewlineBinaryOp, RestoreBracedApplication, RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
12761 var declaration = $4;
12762 if (!declaration)
12763 return $skip;
12764 return {
12765 type: "DeclarationCondition",
12766 declaration,
12767 children: [declaration]
12768 };
12769});
12770function DeclarationCondition(ctx, state2) {
12771 return (0, import_lib3.$EVENT)(ctx, state2, "DeclarationCondition", DeclarationCondition$0);
12772}
12773var ExpressionWithIndentedApplicationForbidden$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForbidIndentedApplication, ForbidNewlineBinaryOp, (0, import_lib3.$E)(ExtendedExpression), RestoreNewlineBinaryOp, RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
12774 var exp = $3;
12775 if (exp)
12776 return exp;
12777 return $skip;
12778});
12779function ExpressionWithIndentedApplicationForbidden(ctx, state2) {
12780 return (0, import_lib3.$EVENT)(ctx, state2, "ExpressionWithIndentedApplicationForbidden", ExpressionWithIndentedApplicationForbidden$0);
12781}
12782var SingleLineExpressionWithIndentedApplicationForbidden$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForbidIndentedApplication, ForbidNewlineBinaryOp, (0, import_lib3.$E)(SingleLineAssignmentExpression), RestoreNewlineBinaryOp, RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
12783 var exp = $3;
12784 if (exp)
12785 return exp;
12786 return $skip;
12787});
12788function SingleLineExpressionWithIndentedApplicationForbidden(ctx, state2) {
12789 return (0, import_lib3.$EVENT)(ctx, state2, "SingleLineExpressionWithIndentedApplicationForbidden", SingleLineExpressionWithIndentedApplicationForbidden$0);
12790}
12791var ExpressionWithObjectApplicationForbidden$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForbidBracedApplication, ForbidIndentedApplication, ForbidNewlineBinaryOp, (0, import_lib3.$E)(ExtendedExpression), RestoreNewlineBinaryOp, RestoreBracedApplication, RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
12792 var exp = $4;
12793 if (exp)
12794 return exp;
12795 return $skip;
12796});
12797function ExpressionWithObjectApplicationForbidden(ctx, state2) {
12798 return (0, import_lib3.$EVENT)(ctx, state2, "ExpressionWithObjectApplicationForbidden", ExpressionWithObjectApplicationForbidden$0);
12799}
12800var LeftHandSideExpressionWithObjectApplicationForbidden$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ForbidBracedApplication, ForbidIndentedApplication, ForbidNewlineBinaryOp, (0, import_lib3.$E)(LeftHandSideExpression), RestoreNewlineBinaryOp, RestoreBracedApplication, RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
12801 var exp = $4;
12802 if (exp)
12803 return exp;
12804 return $skip;
12805});
12806function LeftHandSideExpressionWithObjectApplicationForbidden(ctx, state2) {
12807 return (0, import_lib3.$EVENT)(ctx, state2, "LeftHandSideExpressionWithObjectApplicationForbidden", LeftHandSideExpressionWithObjectApplicationForbidden$0);
12808}
12809var ForbidClassImplicitCall$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'ForbidClassImplicitCall ""'), function($skip, $loc, $0, $1) {
12810 state.forbidClassImplicitCall.push(true);
12811});
12812function ForbidClassImplicitCall(ctx, state2) {
12813 return (0, import_lib3.$EVENT)(ctx, state2, "ForbidClassImplicitCall", ForbidClassImplicitCall$0);
12814}
12815var AllowClassImplicitCall$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'AllowClassImplicitCall ""'), function($skip, $loc, $0, $1) {
12816 state.forbidClassImplicitCall.push(false);
12817});
12818function AllowClassImplicitCall(ctx, state2) {
12819 return (0, import_lib3.$EVENT)(ctx, state2, "AllowClassImplicitCall", AllowClassImplicitCall$0);
12820}
12821var RestoreClassImplicitCall$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'RestoreClassImplicitCall ""'), function($skip, $loc, $0, $1) {
12822 state.forbidClassImplicitCall.pop();
12823});
12824function RestoreClassImplicitCall(ctx, state2) {
12825 return (0, import_lib3.$EVENT)(ctx, state2, "RestoreClassImplicitCall", RestoreClassImplicitCall$0);
12826}
12827var ClassImplicitCallForbidden$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'ClassImplicitCallForbidden ""'), function($skip, $loc, $0, $1) {
12828 if (!state.classImplicitCallForbidden)
12829 return $skip;
12830 return;
12831});
12832function ClassImplicitCallForbidden(ctx, state2) {
12833 return (0, import_lib3.$EVENT)(ctx, state2, "ClassImplicitCallForbidden", ClassImplicitCallForbidden$0);
12834}
12835var ForbidBracedApplication$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'ForbidBracedApplication ""'), function($skip, $loc, $0, $1) {
12836 state.forbidBracedApplication.push(true);
12837});
12838function ForbidBracedApplication(ctx, state2) {
12839 return (0, import_lib3.$EVENT)(ctx, state2, "ForbidBracedApplication", ForbidBracedApplication$0);
12840}
12841var AllowBracedApplication$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'AllowBracedApplication ""'), function($skip, $loc, $0, $1) {
12842 state.forbidBracedApplication.push(false);
12843});
12844function AllowBracedApplication(ctx, state2) {
12845 return (0, import_lib3.$EVENT)(ctx, state2, "AllowBracedApplication", AllowBracedApplication$0);
12846}
12847var RestoreBracedApplication$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'RestoreBracedApplication ""'), function($skip, $loc, $0, $1) {
12848 state.forbidBracedApplication.pop();
12849});
12850function RestoreBracedApplication(ctx, state2) {
12851 return (0, import_lib3.$EVENT)(ctx, state2, "RestoreBracedApplication", RestoreBracedApplication$0);
12852}
12853var BracedApplicationAllowed$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'BracedApplicationAllowed ""'), function($skip, $loc, $0, $1) {
12854 if (config.verbose) {
12855 console.log("forbidBracedApplication:", state.forbidBracedApplication);
12856 }
12857 if (state.bracedApplicationForbidden)
12858 return $skip;
12859 return;
12860});
12861function BracedApplicationAllowed(ctx, state2) {
12862 return (0, import_lib3.$EVENT)(ctx, state2, "BracedApplicationAllowed", BracedApplicationAllowed$0);
12863}
12864var ForbidIndentedApplication$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'ForbidIndentedApplication ""'), function($skip, $loc, $0, $1) {
12865 state.forbidIndentedApplication.push(true);
12866});
12867function ForbidIndentedApplication(ctx, state2) {
12868 return (0, import_lib3.$EVENT)(ctx, state2, "ForbidIndentedApplication", ForbidIndentedApplication$0);
12869}
12870var AllowIndentedApplication$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'AllowIndentedApplication ""'), function($skip, $loc, $0, $1) {
12871 state.forbidIndentedApplication.push(false);
12872});
12873function AllowIndentedApplication(ctx, state2) {
12874 return (0, import_lib3.$EVENT)(ctx, state2, "AllowIndentedApplication", AllowIndentedApplication$0);
12875}
12876var RestoreIndentedApplication$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'RestoreIndentedApplication ""'), function($skip, $loc, $0, $1) {
12877 state.forbidIndentedApplication.pop();
12878});
12879function RestoreIndentedApplication(ctx, state2) {
12880 return (0, import_lib3.$EVENT)(ctx, state2, "RestoreIndentedApplication", RestoreIndentedApplication$0);
12881}
12882var IndentedApplicationAllowed$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'IndentedApplicationAllowed ""'), function($skip, $loc, $0, $1) {
12883 if (config.verbose) {
12884 console.log("forbidIndentedApplication:", state.forbidIndentedApplication);
12885 }
12886 if (state.indentedApplicationForbidden)
12887 return $skip;
12888 return;
12889});
12890function IndentedApplicationAllowed(ctx, state2) {
12891 return (0, import_lib3.$EVENT)(ctx, state2, "IndentedApplicationAllowed", IndentedApplicationAllowed$0);
12892}
12893var ForbidTrailingMemberProperty$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'ForbidTrailingMemberProperty ""'), function($skip, $loc, $0, $1) {
12894 state.forbidTrailingMemberProperty.push(true);
12895});
12896function ForbidTrailingMemberProperty(ctx, state2) {
12897 return (0, import_lib3.$EVENT)(ctx, state2, "ForbidTrailingMemberProperty", ForbidTrailingMemberProperty$0);
12898}
12899var AllowTrailingMemberProperty$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'AllowTrailingMemberProperty ""'), function($skip, $loc, $0, $1) {
12900 state.forbidTrailingMemberProperty.push(false);
12901});
12902function AllowTrailingMemberProperty(ctx, state2) {
12903 return (0, import_lib3.$EVENT)(ctx, state2, "AllowTrailingMemberProperty", AllowTrailingMemberProperty$0);
12904}
12905var RestoreTrailingMemberProperty$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'RestoreTrailingMemberProperty ""'), function($skip, $loc, $0, $1) {
12906 state.forbidTrailingMemberProperty.pop();
12907});
12908function RestoreTrailingMemberProperty(ctx, state2) {
12909 return (0, import_lib3.$EVENT)(ctx, state2, "RestoreTrailingMemberProperty", RestoreTrailingMemberProperty$0);
12910}
12911var TrailingMemberPropertyAllowed$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'TrailingMemberPropertyAllowed ""'), function($skip, $loc, $0, $1) {
12912 if (config.verbose) {
12913 console.log("forbidTrailingMemberProperty:", state.forbidTrailingMemberProperty);
12914 }
12915 if (state.trailingMemberPropertyForbidden)
12916 return $skip;
12917});
12918function TrailingMemberPropertyAllowed(ctx, state2) {
12919 return (0, import_lib3.$EVENT)(ctx, state2, "TrailingMemberPropertyAllowed", TrailingMemberPropertyAllowed$0);
12920}
12921var AllowNewlineBinaryOp$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'AllowNewlineBinaryOp ""'), function($skip, $loc, $0, $1) {
12922 state.forbidNewlineBinaryOp.push(false);
12923});
12924function AllowNewlineBinaryOp(ctx, state2) {
12925 return (0, import_lib3.$EVENT)(ctx, state2, "AllowNewlineBinaryOp", AllowNewlineBinaryOp$0);
12926}
12927var ForbidNewlineBinaryOp$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'ForbidNewlineBinaryOp ""'), function($skip, $loc, $0, $1) {
12928 state.forbidNewlineBinaryOp.push(true);
12929});
12930function ForbidNewlineBinaryOp(ctx, state2) {
12931 return (0, import_lib3.$EVENT)(ctx, state2, "ForbidNewlineBinaryOp", ForbidNewlineBinaryOp$0);
12932}
12933var RestoreNewlineBinaryOp$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'RestoreNewlineBinaryOp ""'), function($skip, $loc, $0, $1) {
12934 state.forbidNewlineBinaryOp.pop();
12935});
12936function RestoreNewlineBinaryOp(ctx, state2) {
12937 return (0, import_lib3.$EVENT)(ctx, state2, "RestoreNewlineBinaryOp", RestoreNewlineBinaryOp$0);
12938}
12939var NewlineBinaryOpAllowed$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'NewlineBinaryOpAllowed ""'), function($skip, $loc, $0, $1) {
12940 if (config.verbose) {
12941 console.log("forbidNewlineBinaryOp:", state.forbidNewlineBinaryOp);
12942 }
12943 if (state.newlineBinaryOpForbidden)
12944 return $skip;
12945});
12946function NewlineBinaryOpAllowed(ctx, state2) {
12947 return (0, import_lib3.$EVENT)(ctx, state2, "NewlineBinaryOpAllowed", NewlineBinaryOpAllowed$0);
12948}
12949var AllowAll$0 = (0, import_lib3.$S)(AllowTrailingMemberProperty, AllowBracedApplication, AllowIndentedApplication, AllowClassImplicitCall, AllowNewlineBinaryOp);
12950function AllowAll(ctx, state2) {
12951 return (0, import_lib3.$EVENT)(ctx, state2, "AllowAll", AllowAll$0);
12952}
12953var RestoreAll$0 = (0, import_lib3.$S)(RestoreTrailingMemberProperty, RestoreBracedApplication, RestoreIndentedApplication, RestoreClassImplicitCall, RestoreNewlineBinaryOp);
12954function RestoreAll(ctx, state2) {
12955 return (0, import_lib3.$EVENT)(ctx, state2, "RestoreAll", RestoreAll$0);
12956}
12957var CommaExpressionStatement$0 = IterationExpression;
12958var CommaExpressionStatement$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(CommaExpression), function($skip, $loc, $0, $1) {
12959 return makeExpressionStatement($1);
12960});
12961var CommaExpressionStatement$$ = [CommaExpressionStatement$0, CommaExpressionStatement$1];
12962function CommaExpressionStatement(ctx, state2) {
12963 return (0, import_lib3.$EVENT_C)(ctx, state2, "CommaExpressionStatement", CommaExpressionStatement$$);
12964}
12965var ExpressionStatement$0 = IterationExpression;
12966var ExpressionStatement$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(AssignmentExpression), function($skip, $loc, $0, $1) {
12967 return makeExpressionStatement($1);
12968});
12969var ExpressionStatement$$ = [ExpressionStatement$0, ExpressionStatement$1];
12970function ExpressionStatement(ctx, state2) {
12971 return (0, import_lib3.$EVENT_C)(ctx, state2, "ExpressionStatement", ExpressionStatement$$);
12972}
12973var KeywordStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Break, (0, import_lib3.$E)((0, import_lib3.$S)(_, (0, import_lib3.$E)(Colon), Identifier))), function($skip, $loc, $0, $1, $2) {
12974 return {
12975 type: "BreakStatement",
12976 children: $2 ? [$1, $2[0], $2[2]] : [$1]
12977 // omit colon
12978 };
12979});
12980var KeywordStatement$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Continue, (0, import_lib3.$E)((0, import_lib3.$S)(_, (0, import_lib3.$E)(Colon), Identifier))), function($skip, $loc, $0, $1, $2) {
12981 return {
12982 type: "ContinueStatement",
12983 children: $2 ? [$1, $2[0], $2[2]] : [$1]
12984 // omit colon
12985 };
12986});
12987var KeywordStatement$2 = DebuggerStatement;
12988var KeywordStatement$3 = (0, import_lib3.$T)((0, import_lib3.$S)(Return, (0, import_lib3.$N)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L16, 'KeywordStatement ":"'), (0, import_lib3.$EXPECT)($L7, 'KeywordStatement "."'), AfterReturnShorthand)), (0, import_lib3.$E)(MaybeParenNestedExtendedExpression)), function(value) {
12989 var expression = value[2];
12990 return { "type": "ReturnStatement", "expression": expression, "children": value };
12991});
12992var KeywordStatement$4 = ThrowStatement;
12993var KeywordStatement$$ = [KeywordStatement$0, KeywordStatement$1, KeywordStatement$2, KeywordStatement$3, KeywordStatement$4];
12994function KeywordStatement(ctx, state2) {
12995 return (0, import_lib3.$EVENT_C)(ctx, state2, "KeywordStatement", KeywordStatement$$);
12996}
12997var DebuggerStatement$0 = (0, import_lib3.$T)((0, import_lib3.$S)(Debugger), function(value) {
12998 return { "type": "DebuggerStatement", "children": value };
12999});
13000function DebuggerStatement(ctx, state2) {
13001 return (0, import_lib3.$EVENT)(ctx, state2, "DebuggerStatement", DebuggerStatement$0);
13002}
13003var ThrowStatement$0 = (0, import_lib3.$T)((0, import_lib3.$S)(Throw, MaybeParenNestedExtendedExpression), function(value) {
13004 return { "type": "ThrowStatement", "children": value };
13005});
13006function ThrowStatement(ctx, state2) {
13007 return (0, import_lib3.$EVENT)(ctx, state2, "ThrowStatement", ThrowStatement$0);
13008}
13009var Break$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L112, 'Break "break"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13010 return { $loc, token: $1 };
13011});
13012function Break(ctx, state2) {
13013 return (0, import_lib3.$EVENT)(ctx, state2, "Break", Break$0);
13014}
13015var Continue$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L113, 'Continue "continue"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13016 return { $loc, token: $1 };
13017});
13018function Continue(ctx, state2) {
13019 return (0, import_lib3.$EVENT)(ctx, state2, "Continue", Continue$0);
13020}
13021var Debugger$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L114, 'Debugger "debugger"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13022 return { $loc, token: $1 };
13023});
13024function Debugger(ctx, state2) {
13025 return (0, import_lib3.$EVENT)(ctx, state2, "Debugger", Debugger$0);
13026}
13027var MaybeNestedNonPipelineExtendedExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$E)((0, import_lib3.$S)(Nested, NonPipelineExtendedExpression)), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
13028 if ($3)
13029 return $3;
13030 return $skip;
13031});
13032var MaybeNestedNonPipelineExtendedExpression$1 = NonPipelineExtendedExpression;
13033var MaybeNestedNonPipelineExtendedExpression$$ = [MaybeNestedNonPipelineExtendedExpression$0, MaybeNestedNonPipelineExtendedExpression$1];
13034function MaybeNestedNonPipelineExtendedExpression(ctx, state2) {
13035 return (0, import_lib3.$EVENT_C)(ctx, state2, "MaybeNestedNonPipelineExtendedExpression", MaybeNestedNonPipelineExtendedExpression$$);
13036}
13037var MaybeNestedPostfixedExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$E)((0, import_lib3.$S)(Nested, PostfixedExpression)), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
13038 if ($3)
13039 return $3;
13040 return $skip;
13041});
13042var MaybeNestedPostfixedExpression$1 = PostfixedExpression;
13043var MaybeNestedPostfixedExpression$$ = [MaybeNestedPostfixedExpression$0, MaybeNestedPostfixedExpression$1];
13044function MaybeNestedPostfixedExpression(ctx, state2) {
13045 return (0, import_lib3.$EVENT_C)(ctx, state2, "MaybeNestedPostfixedExpression", MaybeNestedPostfixedExpression$$);
13046}
13047var MaybeNestedExtendedExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$E)((0, import_lib3.$S)(Nested, ExtendedExpression)), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
13048 if ($3)
13049 return $3;
13050 return $skip;
13051});
13052var MaybeNestedExtendedExpression$1 = ExtendedExpression;
13053var MaybeNestedExtendedExpression$$ = [MaybeNestedExtendedExpression$0, MaybeNestedExtendedExpression$1];
13054function MaybeNestedExtendedExpression(ctx, state2) {
13055 return (0, import_lib3.$EVENT_C)(ctx, state2, "MaybeNestedExtendedExpression", MaybeNestedExtendedExpression$$);
13056}
13057var MaybeParenNestedExtendedExpression$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), ExtendedExpression), function(value) {
13058 return value[1];
13059});
13060var MaybeParenNestedExtendedExpression$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$Y)(EOS), ObjectLiteral), function(value) {
13061 return value[1];
13062});
13063var MaybeParenNestedExtendedExpression$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Y)(EOS), InsertSpace, InsertOpenParen, PushIndent, (0, import_lib3.$S)(Nested, ExtendedExpression), PopIndent, InsertNewline, InsertIndent, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13064 var exp = $5;
13065 if (!exp)
13066 return $skip;
13067 return $0.slice(1);
13068});
13069var MaybeParenNestedExtendedExpression$$ = [MaybeParenNestedExtendedExpression$0, MaybeParenNestedExtendedExpression$1, MaybeParenNestedExtendedExpression$2];
13070function MaybeParenNestedExtendedExpression(ctx, state2) {
13071 return (0, import_lib3.$EVENT_C)(ctx, state2, "MaybeParenNestedExtendedExpression", MaybeParenNestedExtendedExpression$$);
13072}
13073var ImportDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Import, _, Identifier, (0, import_lib3.$E)(_), Equals, __, (0, import_lib3.$EXPECT)($L115, 'ImportDeclaration "require"'), NonIdContinue, Arguments), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13074 const imp = [
13075 { ...$1, ts: true },
13076 { ...$1, token: "const", js: true }
13077 ];
13078 return {
13079 type: "ImportDeclaration",
13080 children: [imp, $0.slice(1)]
13081 };
13082});
13083var ImportDeclaration$1 = (0, import_lib3.$T)((0, import_lib3.$S)(Import, __, TypeKeyword, __, ImportClause, __, FromClause), function(value) {
13084 var imports = value[4];
13085 var from = value[6];
13086 return { "type": "ImportDeclaration", "ts": true, "children": value, "imports": imports, "from": from };
13087});
13088var ImportDeclaration$2 = (0, import_lib3.$T)((0, import_lib3.$S)(Import, __, ImportClause, __, FromClause), function(value) {
13089 var imports = value[2];
13090 var from = value[4];
13091 return { "type": "ImportDeclaration", "children": value, "imports": imports, "from": from };
13092});
13093var ImportDeclaration$3 = (0, import_lib3.$T)((0, import_lib3.$S)(Import, __, ModuleSpecifier), function(value) {
13094 var module2 = value[2];
13095 return { "type": "ImportDeclaration", "children": value, "module": module2 };
13096});
13097var ImportDeclaration$4 = (0, import_lib3.$TS)((0, import_lib3.$S)(ImpliedImport, (0, import_lib3.$E)((0, import_lib3.$S)(TypeKeyword, __)), ImportClause, __, FromClause), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13098 var i = $1;
13099 var t = $2;
13100 var imports = $3;
13101 var w = $4;
13102 var from = $5;
13103 i.$loc = {
13104 pos: from[0].$loc.pos - 1,
13105 length: from[0].$loc.length + 1
13106 };
13107 const children = [i, t, imports, w, from];
13108 return { type: "ImportDeclaration", ts: !!t, children, imports, from };
13109});
13110var ImportDeclaration$$ = [ImportDeclaration$0, ImportDeclaration$1, ImportDeclaration$2, ImportDeclaration$3, ImportDeclaration$4];
13111function ImportDeclaration(ctx, state2) {
13112 return (0, import_lib3.$EVENT_C)(ctx, state2, "ImportDeclaration", ImportDeclaration$$);
13113}
13114var ImpliedImport$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'ImpliedImport ""'), function($skip, $loc, $0, $1) {
13115 return { $loc, token: "import " };
13116});
13117function ImpliedImport(ctx, state2) {
13118 return (0, import_lib3.$EVENT)(ctx, state2, "ImpliedImport", ImpliedImport$0);
13119}
13120var ImportClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(ImportedBinding, (0, import_lib3.$E)((0, import_lib3.$S)(__, Comma, __, (0, import_lib3.$C)(NameSpaceImport, NamedImports)))), function($skip, $loc, $0, $1, $2) {
13121 var binding = $1;
13122 var rest = $2;
13123 if (rest) {
13124 return {
13125 type: "Declaration",
13126 children: [binding, ...rest],
13127 names: [...binding.names, ...rest[3].names],
13128 binding,
13129 specifiers: rest[3].specifiers
13130 };
13131 }
13132 return {
13133 type: "Declaration",
13134 children: [binding],
13135 names: binding.names,
13136 binding
13137 };
13138});
13139var ImportClause$1 = NameSpaceImport;
13140var ImportClause$2 = NamedImports;
13141var ImportClause$$ = [ImportClause$0, ImportClause$1, ImportClause$2];
13142function ImportClause(ctx, state2) {
13143 return (0, import_lib3.$EVENT_C)(ctx, state2, "ImportClause", ImportClause$$);
13144}
13145var NameSpaceImport$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Star, ImportAsToken, __, ImportedBinding), function($skip, $loc, $0, $1, $2, $3, $4) {
13146 var star = $1;
13147 var binding = $4;
13148 return {
13149 type: "Declaration",
13150 children: $0,
13151 names: binding.names,
13152 binding,
13153 star
13154 };
13155});
13156function NameSpaceImport(ctx, state2) {
13157 return (0, import_lib3.$EVENT)(ctx, state2, "NameSpaceImport", NameSpaceImport$0);
13158}
13159var NamedImports$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBrace, (0, import_lib3.$Q)(TypeAndImportSpecifier), (0, import_lib3.$E)((0, import_lib3.$S)(__, Comma)), __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13160 var specifiers = $2;
13161 const names = specifiers.flatMap(({ binding }) => binding.names);
13162 return {
13163 type: "Declaration",
13164 children: $0,
13165 names,
13166 specifiers
13167 };
13168});
13169function NamedImports(ctx, state2) {
13170 return (0, import_lib3.$EVENT)(ctx, state2, "NamedImports", NamedImports$0);
13171}
13172var FromClause$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(From, __, ModuleSpecifier), function($skip, $loc, $0, $1, $2, $3) {
13173 var module2 = $3;
13174 if (!Array.isArray(module2))
13175 return $0;
13176 return [$1, $2, ...module2];
13177});
13178function FromClause(ctx, state2) {
13179 return (0, import_lib3.$EVENT)(ctx, state2, "FromClause", FromClause$0);
13180}
13181var ImportAssertion$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)((0, import_lib3.$EXPECT)($L116, 'ImportAssertion "with"'), (0, import_lib3.$EXPECT)($L117, 'ImportAssertion "assert"')), NonIdContinue, (0, import_lib3.$E)(_), ObjectLiteral), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13182 var keyword = $2;
13183 var object = $5;
13184 return {
13185 type: "ImportAssertion",
13186 keyword,
13187 object,
13188 children: $0
13189 };
13190});
13191function ImportAssertion(ctx, state2) {
13192 return (0, import_lib3.$EVENT)(ctx, state2, "ImportAssertion", ImportAssertion$0);
13193}
13194var TypeAndImportSpecifier$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(__, TypeKeyword)), ImportSpecifier), function($skip, $loc, $0, $1, $2) {
13195 if (!$1)
13196 return $2;
13197 return { ts: true, children: $0, binding: $2.binding };
13198});
13199var TypeAndImportSpecifier$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, Operator, OperatorImportSpecifier), function($skip, $loc, $0, $1, $2, $3) {
13200 var ws = $1;
13201 var spec = $3;
13202 if (spec.binding.type !== "Identifier") {
13203 throw new Error("Expected identifier after `operator`");
13204 }
13205 state.operators.set(spec.binding.name, spec.behavior);
13206 return {
13207 ...spec,
13208 children: [
13209 ws,
13210 insertTrimmingSpace(spec[0], ""),
13211 spec.children.slice(1)
13212 ]
13213 };
13214});
13215var TypeAndImportSpecifier$$ = [TypeAndImportSpecifier$0, TypeAndImportSpecifier$1];
13216function TypeAndImportSpecifier(ctx, state2) {
13217 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeAndImportSpecifier", TypeAndImportSpecifier$$);
13218}
13219var ImportSpecifier$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, ModuleExportName, ImportAsToken, __, ImportedBinding, ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
13220 var source = $2;
13221 var binding = $5;
13222 return {
13223 source,
13224 binding,
13225 children: $0
13226 };
13227});
13228var ImportSpecifier$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, ImportedBinding, ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3) {
13229 var binding = $2;
13230 return {
13231 source: binding,
13232 binding,
13233 children: $0
13234 };
13235});
13236var ImportSpecifier$$ = [ImportSpecifier$0, ImportSpecifier$1];
13237function ImportSpecifier(ctx, state2) {
13238 return (0, import_lib3.$EVENT_C)(ctx, state2, "ImportSpecifier", ImportSpecifier$$);
13239}
13240var OperatorImportSpecifier$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, ModuleExportName, (0, import_lib3.$E)(OperatorBehavior), ImportAsToken, __, ImportedBinding, ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
13241 var behavior = $3;
13242 var binding = $6;
13243 return {
13244 binding,
13245 behavior,
13246 children: [$1, $2, $4, $5, $6, $7]
13247 };
13248});
13249var OperatorImportSpecifier$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, ImportedBinding, (0, import_lib3.$E)(OperatorBehavior), ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3, $4) {
13250 var binding = $2;
13251 var behavior = $3;
13252 return {
13253 binding,
13254 behavior,
13255 children: [$1, $2, $4]
13256 };
13257});
13258var OperatorImportSpecifier$$ = [OperatorImportSpecifier$0, OperatorImportSpecifier$1];
13259function OperatorImportSpecifier(ctx, state2) {
13260 return (0, import_lib3.$EVENT_C)(ctx, state2, "OperatorImportSpecifier", OperatorImportSpecifier$$);
13261}
13262var ImportAsToken$0 = (0, import_lib3.$S)(__, As);
13263var ImportAsToken$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Loc, __, Colon, (0, import_lib3.$E)((0, import_lib3.$EXPECT)($L18, 'ImportAsToken " "'))), function($skip, $loc, $0, $1, $2, $3, $4) {
13264 var l = $1;
13265 var ws = $2;
13266 var c = $3;
13267 const children = [
13268 ...ws,
13269 { ...c, token: "as " }
13270 ];
13271 if (!ws.length) {
13272 children.unshift({ $loc: l.$loc, token: " " });
13273 }
13274 return {
13275 children
13276 };
13277});
13278var ImportAsToken$$ = [ImportAsToken$0, ImportAsToken$1];
13279function ImportAsToken(ctx, state2) {
13280 return (0, import_lib3.$EVENT_C)(ctx, state2, "ImportAsToken", ImportAsToken$$);
13281}
13282var ModuleExportName$0 = StringLiteral;
13283var ModuleExportName$1 = IdentifierName;
13284var ModuleExportName$$ = [ModuleExportName$0, ModuleExportName$1];
13285function ModuleExportName(ctx, state2) {
13286 return (0, import_lib3.$EVENT_C)(ctx, state2, "ModuleExportName", ModuleExportName$$);
13287}
13288var ModuleSpecifier$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(UnprocessedModuleSpecifier, (0, import_lib3.$E)(ImportAssertion)), function($skip, $loc, $0, $1, $2) {
13289 var a = $2;
13290 let { token } = $1;
13291 if (config.rewriteTsImports) {
13292 token = token.replace(/\.([mc])?ts(['"])$/, ".$1js$2");
13293 }
13294 if (config.rewriteCivetImports) {
13295 token = token.replace(
13296 /\.civet(['"])$/,
13297 `${config.rewriteCivetImports.replace(/\$/g, "$$")}$1`
13298 );
13299 }
13300 if (a)
13301 return [{ ...$1, token }, a];
13302 return { ...$1, token };
13303});
13304function ModuleSpecifier(ctx, state2) {
13305 return (0, import_lib3.$EVENT)(ctx, state2, "ModuleSpecifier", ModuleSpecifier$0);
13306}
13307var UnprocessedModuleSpecifier$0 = StringLiteral;
13308var UnprocessedModuleSpecifier$1 = UnquotedSpecifier;
13309var UnprocessedModuleSpecifier$$ = [UnprocessedModuleSpecifier$0, UnprocessedModuleSpecifier$1];
13310function UnprocessedModuleSpecifier(ctx, state2) {
13311 return (0, import_lib3.$EVENT_C)(ctx, state2, "UnprocessedModuleSpecifier", UnprocessedModuleSpecifier$$);
13312}
13313var UnquotedSpecifier$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($R27, 'UnquotedSpecifier /[^;"\\s]+/'), function($skip, $loc, $0, $1) {
13314 var spec = $0;
13315 return { $loc, token: `"${spec}"` };
13316});
13317function UnquotedSpecifier(ctx, state2) {
13318 return (0, import_lib3.$EVENT)(ctx, state2, "UnquotedSpecifier", UnquotedSpecifier$0);
13319}
13320var ImportedBinding$0 = BindingIdentifier;
13321function ImportedBinding(ctx, state2) {
13322 return (0, import_lib3.$EVENT)(ctx, state2, "ImportedBinding", ImportedBinding$0);
13323}
13324var ExportDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Export, (0, import_lib3.$E)(_), Equals, MaybeNestedExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4) {
13325 const exp = [
13326 { ...$1, ts: true },
13327 { ...$1, token: "module.exports", js: true }
13328 ];
13329 return {
13330 type: "ExportDeclaration",
13331 children: [exp, $0.slice(1)]
13332 };
13333});
13334var ExportDeclaration$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(Decorators), Export, __, Default, __, (0, import_lib3.$N)(FunctionDeclaration), (0, import_lib3.$C)(LexicalDeclaration, VariableStatement, TypeAliasDeclaration, NamespaceDeclaration, EnumDeclaration, OperatorDeclaration)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
13335 var declaration = $7;
13336 let id, error;
13337 if (declaration.id) {
13338 id = declaration.id;
13339 } else if (declaration.names) {
13340 if (declaration.names.length !== 1) {
13341 error = {
13342 type: "Error",
13343 message: `export default with ${declaration.names.length} variable declaration (should be 1)`
13344 };
13345 }
13346 id = declaration.names[0];
13347 } else {
13348 throw new Error("Could not find name of declaration in export default");
13349 }
13350 return [
13351 declaration,
13352 { children: [";"], ts: declaration.ts },
13353 error ?? {
13354 type: "ExportDeclaration",
13355 declaration: id,
13356 ts: declaration.ts,
13357 children: [...$0.slice(0, -2), id]
13358 }
13359 ];
13360});
13361var ExportDeclaration$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(Decorators), Export, __, Default, __, (0, import_lib3.$C)(HoistableDeclaration, ClassDeclaration, InterfaceDeclaration, MaybeNestedExtendedExpression)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
13362 var declaration = $6;
13363 return { type: "ExportDeclaration", declaration, ts: declaration.ts, children: $0 };
13364});
13365var ExportDeclaration$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(Export, __, ExportFromClause, __, FromClause), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13366 return { type: "ExportDeclaration", ts: $3.ts, children: $0 };
13367});
13368var ExportDeclaration$4 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(Decorators), Export, __, (0, import_lib3.$C)(Declaration, VariableStatement, TypeAndNamedExports, ExportVarDec)), function($skip, $loc, $0, $1, $2, $3, $4) {
13369 var declaration = $4;
13370 return { type: "ExportDeclaration", declaration, ts: declaration.ts, children: $0 };
13371});
13372var ExportDeclaration$$ = [ExportDeclaration$0, ExportDeclaration$1, ExportDeclaration$2, ExportDeclaration$3, ExportDeclaration$4];
13373function ExportDeclaration(ctx, state2) {
13374 return (0, import_lib3.$EVENT_C)(ctx, state2, "ExportDeclaration", ExportDeclaration$$);
13375}
13376var ExportVarDec$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertVar, VariableDeclarationList), function($skip, $loc, $0, $1, $2) {
13377 return {
13378 ...$2,
13379 children: [$1, ...$2.children]
13380 };
13381});
13382function ExportVarDec(ctx, state2) {
13383 return (0, import_lib3.$EVENT)(ctx, state2, "ExportVarDec", ExportVarDec$0);
13384}
13385var ExportFromClause$0 = (0, import_lib3.$S)(Star, (0, import_lib3.$E)((0, import_lib3.$S)(__, As, __, ModuleExportName)));
13386var ExportFromClause$1 = TypeAndNamedExports;
13387var ExportFromClause$$ = [ExportFromClause$0, ExportFromClause$1];
13388function ExportFromClause(ctx, state2) {
13389 return (0, import_lib3.$EVENT_C)(ctx, state2, "ExportFromClause", ExportFromClause$$);
13390}
13391var TypeAndNamedExports$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(TypeKeyword, __)), NamedExports), function($skip, $loc, $0, $1, $2) {
13392 if (!$1)
13393 return $2;
13394 return { ts: true, children: $0 };
13395});
13396function TypeAndNamedExports(ctx, state2) {
13397 return (0, import_lib3.$EVENT)(ctx, state2, "TypeAndNamedExports", TypeAndNamedExports$0);
13398}
13399var NamedExports$0 = (0, import_lib3.$S)(OpenBrace, (0, import_lib3.$Q)(ExportSpecifier), (0, import_lib3.$E)((0, import_lib3.$S)(__, Comma)), __, CloseBrace);
13400var NamedExports$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertInlineOpenBrace, ImplicitExportSpecifier, (0, import_lib3.$Q)((0, import_lib3.$S)(ImplicitObjectPropertyDelimiter, ImplicitExportSpecifier)), InsertCloseBrace, (0, import_lib3.$Y)((0, import_lib3.$C)(StatementDelimiter, (0, import_lib3.$S)(__, From)))), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13401 var open = $1;
13402 var first = $2;
13403 var rest = $3;
13404 var close = $4;
13405 return [open, first, ...rest, close];
13406});
13407var NamedExports$$ = [NamedExports$0, NamedExports$1];
13408function NamedExports(ctx, state2) {
13409 return (0, import_lib3.$EVENT_C)(ctx, state2, "NamedExports", NamedExports$$);
13410}
13411var ExportSpecifier$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, (0, import_lib3.$E)((0, import_lib3.$S)(TypeKeyword, __)), ModuleExportName, (0, import_lib3.$E)((0, import_lib3.$S)(__, As, __, ModuleExportName)), ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13412 if (!$2)
13413 return $0;
13414 return { ts: true, children: $0 };
13415});
13416function ExportSpecifier(ctx, state2) {
13417 return (0, import_lib3.$EVENT)(ctx, state2, "ExportSpecifier", ExportSpecifier$0);
13418}
13419var ImplicitExportSpecifier$0 = (0, import_lib3.$S)((0, import_lib3.$N)(Default), ModuleExportName, (0, import_lib3.$E)((0, import_lib3.$S)(__, As, __, ModuleExportName)));
13420function ImplicitExportSpecifier(ctx, state2) {
13421 return (0, import_lib3.$EVENT)(ctx, state2, "ImplicitExportSpecifier", ImplicitExportSpecifier$0);
13422}
13423var Declaration$0 = (0, import_lib3.$TV)(ImportDeclaration, function($skip, $loc, $0, $1) {
13424 var decl = $0;
13425 if (decl.ts || decl.module || !decl.imports || !decl.from)
13426 return $skip;
13427 const { imports } = decl;
13428 if (!imports.binding && !imports.specifiers)
13429 return $skip;
13430 return dynamizeImportDeclaration(decl);
13431});
13432var Declaration$1 = HoistableDeclaration;
13433var Declaration$2 = ClassDeclaration;
13434var Declaration$3 = (0, import_lib3.$TV)(LexicalDeclaration, function($skip, $loc, $0, $1) {
13435 var d = $0;
13436 if (d.thisAssignments?.length)
13437 return {
13438 ...d,
13439 children: [...d.children, ...d.splices, ";", ...d.thisAssignments]
13440 };
13441 if (d.splices?.length)
13442 return {
13443 ...d,
13444 children: [...d.children, ...d.splices]
13445 };
13446 return d;
13447});
13448var Declaration$4 = TypeDeclaration;
13449var Declaration$5 = EnumDeclaration;
13450var Declaration$6 = OperatorDeclaration;
13451var Declaration$7 = UsingDeclaration;
13452var Declaration$$ = [Declaration$0, Declaration$1, Declaration$2, Declaration$3, Declaration$4, Declaration$5, Declaration$6, Declaration$7];
13453function Declaration(ctx, state2) {
13454 return (0, import_lib3.$EVENT_C)(ctx, state2, "Declaration", Declaration$$);
13455}
13456var HoistableDeclaration$0 = FunctionDeclaration;
13457function HoistableDeclaration(ctx, state2) {
13458 return (0, import_lib3.$EVENT)(ctx, state2, "HoistableDeclaration", HoistableDeclaration$0);
13459}
13460var LexicalDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(LetOrConst, LexicalBinding, (0, import_lib3.$Q)((0, import_lib3.$S)(__, Comma, __, LexicalBinding))), function($skip, $loc, $0, $1, $2, $3) {
13461 var decl = $1;
13462 var binding = $2;
13463 var tail = $3;
13464 const bindings = [binding].concat(tail.map(([, , , b]) => b));
13465 return {
13466 type: "Declaration",
13467 children: $0,
13468 names: bindings.flatMap((b) => b.names),
13469 bindings,
13470 decl,
13471 splices: bindings.flatMap((b) => b.splices),
13472 thisAssignments: bindings.flatMap((b) => b.thisAssignments)
13473 };
13474});
13475var LexicalDeclaration$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Loc, (0, import_lib3.$C)(BindingPattern, BindingIdentifier), (0, import_lib3.$E)(TypeSuffix), __, (0, import_lib3.$C)(ConstAssignment, LetAssignment), MaybeNestedPostfixedExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
13476 var loc = $1;
13477 var assign = $5;
13478 return processAssignmentDeclaration(
13479 { $loc: loc, token: assign.decl },
13480 ...$0.slice(1)
13481 );
13482});
13483var LexicalDeclaration$$ = [LexicalDeclaration$0, LexicalDeclaration$1];
13484function LexicalDeclaration(ctx, state2) {
13485 return (0, import_lib3.$EVENT_C)(ctx, state2, "LexicalDeclaration", LexicalDeclaration$$);
13486}
13487var ConstAssignment$0 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L118, 'ConstAssignment ":="'), (0, import_lib3.$EXPECT)($L119, 'ConstAssignment "\u2254"')), function($skip, $loc, $0, $1) {
13488 return { $loc, token: "=", decl: "const " };
13489});
13490function ConstAssignment(ctx, state2) {
13491 return (0, import_lib3.$EVENT)(ctx, state2, "ConstAssignment", ConstAssignment$0);
13492}
13493var LetAssignment$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L120, 'LetAssignment ".="'), function($skip, $loc, $0, $1) {
13494 return { $loc, token: "=", decl: "let " };
13495});
13496function LetAssignment(ctx, state2) {
13497 return (0, import_lib3.$EVENT)(ctx, state2, "LetAssignment", LetAssignment$0);
13498}
13499var TypeAssignment$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L121, 'TypeAssignment "::="'), function($skip, $loc, $0, $1) {
13500 return { $loc, token: "=" };
13501});
13502function TypeAssignment(ctx, state2) {
13503 return (0, import_lib3.$EVENT)(ctx, state2, "TypeAssignment", TypeAssignment$0);
13504}
13505var LexicalBinding$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(BindingPattern, (0, import_lib3.$E)(TypeSuffix), Initializer), function($skip, $loc, $0, $1, $2, $3) {
13506 var pattern = $1;
13507 var suffix = $2;
13508 var initializer = $3;
13509 const [splices, thisAssignments] = gatherBindingCode(pattern);
13510 return {
13511 type: "Binding",
13512 children: $0,
13513 names: pattern.names,
13514 pattern,
13515 suffix,
13516 initializer,
13517 splices: splices.map((s) => [",", s]),
13518 thisAssignments: thisAssignments.map((s) => ["", s, ";"])
13519 };
13520});
13521var LexicalBinding$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(BindingIdentifier, (0, import_lib3.$E)(TypeSuffix), (0, import_lib3.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3) {
13522 var pattern = $1;
13523 var suffix = $2;
13524 var initializer = $3;
13525 return {
13526 type: "Binding",
13527 children: $0,
13528 names: pattern.names,
13529 pattern,
13530 suffix,
13531 initializer,
13532 splices: [],
13533 thisAssignments: []
13534 };
13535});
13536var LexicalBinding$$ = [LexicalBinding$0, LexicalBinding$1];
13537function LexicalBinding(ctx, state2) {
13538 return (0, import_lib3.$EVENT_C)(ctx, state2, "LexicalBinding", LexicalBinding$$);
13539}
13540var Initializer$0 = (0, import_lib3.$T)((0, import_lib3.$S)(__, Equals, MaybeNestedExtendedExpression), function(value) {
13541 var expression = value[2];
13542 return { "type": "Initializer", "expression": expression, "children": value };
13543});
13544function Initializer(ctx, state2) {
13545 return (0, import_lib3.$EVENT)(ctx, state2, "Initializer", Initializer$0);
13546}
13547var VariableStatement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Var, __, VariableDeclarationList), function($skip, $loc, $0, $1, $2, $3) {
13548 return {
13549 ...$3,
13550 names: $3.names,
13551 children: [$1, ...$2, ...$3.children]
13552 };
13553});
13554function VariableStatement(ctx, state2) {
13555 return (0, import_lib3.$EVENT)(ctx, state2, "VariableStatement", VariableStatement$0);
13556}
13557var VariableDeclarationList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(LexicalBinding, (0, import_lib3.$Q)((0, import_lib3.$S)(__, Comma, __, LexicalBinding))), function($skip, $loc, $0, $1, $2) {
13558 var binding = $1;
13559 var tail = $2;
13560 const bindings = [binding].concat(tail.map(([, , , b]) => b));
13561 return {
13562 type: "Declaration",
13563 children: [binding, ...tail],
13564 bindings,
13565 names: bindings.flatMap((b) => b.names)
13566 };
13567});
13568function VariableDeclarationList(ctx, state2) {
13569 return (0, import_lib3.$EVENT)(ctx, state2, "VariableDeclarationList", VariableDeclarationList$0);
13570}
13571var NumericLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R28, "NumericLiteral /(?=[0-9.])/"), NumericLiteralKind), function($skip, $loc, $0, $1, $2) {
13572 var token = $2;
13573 return { type: "NumericLiteral", $loc, token };
13574});
13575function NumericLiteral(ctx, state2) {
13576 return (0, import_lib3.$EVENT)(ctx, state2, "NumericLiteral", NumericLiteral$0);
13577}
13578var NumericLiteralKind$0 = DecimalBigIntegerLiteral;
13579var NumericLiteralKind$1 = BinaryIntegerLiteral;
13580var NumericLiteralKind$2 = OctalIntegerLiteral;
13581var NumericLiteralKind$3 = HexIntegerLiteral;
13582var NumericLiteralKind$4 = DecimalLiteral;
13583var NumericLiteralKind$$ = [NumericLiteralKind$0, NumericLiteralKind$1, NumericLiteralKind$2, NumericLiteralKind$3, NumericLiteralKind$4];
13584function NumericLiteralKind(ctx, state2) {
13585 return (0, import_lib3.$EVENT_C)(ctx, state2, "NumericLiteralKind", NumericLiteralKind$$);
13586}
13587var DecimalBigIntegerLiteral$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R29, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
13588function DecimalBigIntegerLiteral(ctx, state2) {
13589 return (0, import_lib3.$EVENT)(ctx, state2, "DecimalBigIntegerLiteral", DecimalBigIntegerLiteral$0);
13590}
13591var DecimalLiteral$0 = (0, import_lib3.$TV)((0, import_lib3.$TEXT)((0, import_lib3.$EXPECT)($R30, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))/")), function($skip, $loc, $0, $1) {
13592 return $1 + ".";
13593});
13594var DecimalLiteral$1 = (0, import_lib3.$TEXT)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R31, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?/"), (0, import_lib3.$E)(ExponentPart)));
13595var DecimalLiteral$2 = (0, import_lib3.$TEXT)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R32, "DecimalLiteral /(?:\\.[0-9](?:_[0-9]|[0-9])*)/"), (0, import_lib3.$E)(ExponentPart)));
13596var DecimalLiteral$$ = [DecimalLiteral$0, DecimalLiteral$1, DecimalLiteral$2];
13597function DecimalLiteral(ctx, state2) {
13598 return (0, import_lib3.$EVENT_C)(ctx, state2, "DecimalLiteral", DecimalLiteral$$);
13599}
13600var ExponentPart$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R33, "ExponentPart /(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)/"));
13601function ExponentPart(ctx, state2) {
13602 return (0, import_lib3.$EVENT)(ctx, state2, "ExponentPart", ExponentPart$0);
13603}
13604var BinaryIntegerLiteral$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R34, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*n?/"));
13605function BinaryIntegerLiteral(ctx, state2) {
13606 return (0, import_lib3.$EVENT)(ctx, state2, "BinaryIntegerLiteral", BinaryIntegerLiteral$0);
13607}
13608var OctalIntegerLiteral$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R35, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*n?/"));
13609function OctalIntegerLiteral(ctx, state2) {
13610 return (0, import_lib3.$EVENT)(ctx, state2, "OctalIntegerLiteral", OctalIntegerLiteral$0);
13611}
13612var HexIntegerLiteral$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R36, "HexIntegerLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?/"));
13613function HexIntegerLiteral(ctx, state2) {
13614 return (0, import_lib3.$EVENT)(ctx, state2, "HexIntegerLiteral", HexIntegerLiteral$0);
13615}
13616var IntegerLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R37, "IntegerLiteral /(?=[0-9])/"), IntegerLiteralKind), function($skip, $loc, $0, $1, $2) {
13617 var token = $2;
13618 return { $loc, token };
13619});
13620function IntegerLiteral(ctx, state2) {
13621 return (0, import_lib3.$EVENT)(ctx, state2, "IntegerLiteral", IntegerLiteral$0);
13622}
13623var IntegerLiteralKind$0 = DecimalBigIntegerLiteral;
13624var IntegerLiteralKind$1 = BinaryIntegerLiteral;
13625var IntegerLiteralKind$2 = OctalIntegerLiteral;
13626var IntegerLiteralKind$3 = HexIntegerLiteral;
13627var IntegerLiteralKind$4 = DecimalIntegerLiteral;
13628var IntegerLiteralKind$$ = [IntegerLiteralKind$0, IntegerLiteralKind$1, IntegerLiteralKind$2, IntegerLiteralKind$3, IntegerLiteralKind$4];
13629function IntegerLiteralKind(ctx, state2) {
13630 return (0, import_lib3.$EVENT_C)(ctx, state2, "IntegerLiteralKind", IntegerLiteralKind$$);
13631}
13632var DecimalIntegerLiteral$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R38, "DecimalIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)/"));
13633function DecimalIntegerLiteral(ctx, state2) {
13634 return (0, import_lib3.$EVENT)(ctx, state2, "DecimalIntegerLiteral", DecimalIntegerLiteral$0);
13635}
13636var StringLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(DoubleQuote, DoubleStringCharacters, DoubleQuote), function($skip, $loc, $0, $1, $2, $3) {
13637 var str = $2;
13638 return {
13639 type: "StringLiteral",
13640 token: `"${modifyString(str.token)}"`,
13641 $loc
13642 };
13643});
13644var StringLiteral$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(SingleQuote, SingleStringCharacters, SingleQuote), function($skip, $loc, $0, $1, $2, $3) {
13645 var str = $2;
13646 return {
13647 type: "StringLiteral",
13648 token: `'${modifyString(str.token)}'`,
13649 $loc
13650 };
13651});
13652var StringLiteral$$ = [StringLiteral$0, StringLiteral$1];
13653function StringLiteral(ctx, state2) {
13654 return (0, import_lib3.$EVENT_C)(ctx, state2, "StringLiteral", StringLiteral$$);
13655}
13656var DoubleStringCharacters$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R39, 'DoubleStringCharacters /(?:\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13657 return { $loc, token: $0 };
13658});
13659function DoubleStringCharacters(ctx, state2) {
13660 return (0, import_lib3.$EVENT)(ctx, state2, "DoubleStringCharacters", DoubleStringCharacters$0);
13661}
13662var SingleStringCharacters$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R40, "SingleStringCharacters /(?:\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13663 return { $loc, token: $0 };
13664});
13665function SingleStringCharacters(ctx, state2) {
13666 return (0, import_lib3.$EVENT)(ctx, state2, "SingleStringCharacters", SingleStringCharacters$0);
13667}
13668var TripleDoubleStringCharacters$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R41, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13669 return { $loc, token: $0 };
13670});
13671function TripleDoubleStringCharacters(ctx, state2) {
13672 return (0, import_lib3.$EVENT)(ctx, state2, "TripleDoubleStringCharacters", TripleDoubleStringCharacters$0);
13673}
13674var TripleSingleStringCharacters$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R42, "TripleSingleStringCharacters /(?:'(?!'')|\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13675 return { $loc, token: $0 };
13676});
13677function TripleSingleStringCharacters(ctx, state2) {
13678 return (0, import_lib3.$EVENT)(ctx, state2, "TripleSingleStringCharacters", TripleSingleStringCharacters$0);
13679}
13680var CoffeeStringSubstitution$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(CoffeeSubstitutionStart, AllowAll, (0, import_lib3.$E)((0, import_lib3.$S)(PostfixedExpression, __, CloseBrace)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
13681 if (!$3)
13682 return $skip;
13683 return [$1, ...$3];
13684});
13685function CoffeeStringSubstitution(ctx, state2) {
13686 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeStringSubstitution", CoffeeStringSubstitution$0);
13687}
13688var CoffeeInterpolatedDoubleQuotedString$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(CoffeeInterpolationEnabled, DoubleQuote, (0, import_lib3.$Q)((0, import_lib3.$C)(CoffeeDoubleQuotedStringCharacters, CoffeeStringSubstitution)), DoubleQuote), function($skip, $loc, $0, $1, $2, $3, $4) {
13689 var s = $2;
13690 var parts = $3;
13691 var e = $4;
13692 return processCoffeeInterpolation(s, parts, e, $loc);
13693});
13694function CoffeeInterpolatedDoubleQuotedString(ctx, state2) {
13695 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeInterpolatedDoubleQuotedString", CoffeeInterpolatedDoubleQuotedString$0);
13696}
13697var CoffeeDoubleQuotedStringCharacters$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R43, 'CoffeeDoubleQuotedStringCharacters /(?:\\\\.|#(?!\\{)|[^"\#])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13698 return { $loc, token: $0 };
13699});
13700function CoffeeDoubleQuotedStringCharacters(ctx, state2) {
13701 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeDoubleQuotedStringCharacters", CoffeeDoubleQuotedStringCharacters$0);
13702}
13703var RegularExpressionLiteral$0 = HeregexLiteral;
13704var RegularExpressionLiteral$1 = (0, import_lib3.$TV)((0, import_lib3.$TEXT)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L66, 'RegularExpressionLiteral "/"'), RegularExpressionBody, (0, import_lib3.$EXPECT)($L66, 'RegularExpressionLiteral "/"'), RegularExpressionFlags)), function($skip, $loc, $0, $1) {
13705 return { type: "RegularExpressionLiteral", $loc, token: $1 };
13706});
13707var RegularExpressionLiteral$$ = [RegularExpressionLiteral$0, RegularExpressionLiteral$1];
13708function RegularExpressionLiteral(ctx, state2) {
13709 return (0, import_lib3.$EVENT_C)(ctx, state2, "RegularExpressionLiteral", RegularExpressionLiteral$$);
13710}
13711var RegularExpressionClass$0 = (0, import_lib3.$TV)((0, import_lib3.$TEXT)((0, import_lib3.$S)(OpenBracket, RegularExpressionClassCharacters, CloseBracket)), function($skip, $loc, $0, $1) {
13712 return { $loc, token: $1 };
13713});
13714function RegularExpressionClass(ctx, state2) {
13715 return (0, import_lib3.$EVENT)(ctx, state2, "RegularExpressionClass", RegularExpressionClass$0);
13716}
13717var RegularExpressionClassCharacters$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R44, "RegularExpressionClassCharacters /(?:\\\\.|[^\\]])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13718 return { $loc, token: $0 };
13719});
13720function RegularExpressionClassCharacters(ctx, state2) {
13721 return (0, import_lib3.$EVENT)(ctx, state2, "RegularExpressionClassCharacters", RegularExpressionClassCharacters$0);
13722}
13723var HeregexLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(TripleSlash, HeregexBody, TripleSlash, RegularExpressionFlags), function($skip, $loc, $0, $1, $2, $3, $4) {
13724 var open = $1;
13725 var body = $2;
13726 var close = $3;
13727 var flags = $4;
13728 let hasSubstitutions = body.some((part) => part.type === "Substitution");
13729 if (hasSubstitutions) {
13730 const children = [
13731 { ...open, token: "RegExp(`" },
13732 // Escape backticks, backslashes, and '$' in the body text
13733 body.map(
13734 (e) => e.type === "Substitution" ? e : {
13735 ...e,
13736 token: e.token.replace(/`|\\|\$/g, "\\$&")
13737 }
13738 ),
13739 "`"
13740 ];
13741 if (flags.length) {
13742 children.push(
13743 ", ",
13744 JSON.stringify(flags)
13745 );
13746 }
13747 children.push({ ...close, token: ")" });
13748 return {
13749 type: "RegularExpressionLiteral",
13750 children
13751 };
13752 }
13753 return {
13754 type: "RegularExpressionLiteral",
13755 children: $0
13756 };
13757});
13758function HeregexLiteral(ctx, state2) {
13759 return (0, import_lib3.$EVENT)(ctx, state2, "HeregexLiteral", HeregexLiteral$0);
13760}
13761var HeregexBody$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(TripleSlash), (0, import_lib3.$Q)(HeregexPart)), function(value) {
13762 return value[1];
13763});
13764function HeregexBody(ctx, state2) {
13765 return (0, import_lib3.$EVENT)(ctx, state2, "HeregexBody", HeregexBody$0);
13766}
13767var HeregexPart$0 = RegularExpressionClass;
13768var HeregexPart$1 = (0, import_lib3.$T)((0, import_lib3.$S)(CoffeeStringSubstitution), function(value) {
13769 return { "type": "Substitution", "children": value[0] };
13770});
13771var HeregexPart$2 = (0, import_lib3.$T)((0, import_lib3.$S)(TemplateSubstitution), function(value) {
13772 return { "type": "Substitution", "children": value[0] };
13773});
13774var HeregexPart$3 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R45, "HeregexPart /(?:\\\\.)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13775 let token = $0;
13776 switch ($0[1]) {
13777 case "\n":
13778 token = "\\n";
13779 break;
13780 case "\r":
13781 token = "\\r";
13782 break;
13783 case " ":
13784 token = " ";
13785 break;
13786 }
13787 return { $loc, token };
13788});
13789var HeregexPart$4 = (0, import_lib3.$TS)((0, import_lib3.$S)(HeregexComment), function($skip, $loc, $0, $1) {
13790 return { $loc, token: "" };
13791});
13792var HeregexPart$5 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R46, "HeregexPart /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13793 return { $loc, token: "" };
13794});
13795var HeregexPart$6 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R47, "HeregexPart /\\/(?!\\/\\/)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13796 return { $loc, token: "\\/" };
13797});
13798var HeregexPart$7 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R48, "HeregexPart /[^[\\/\\s#\\\\]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13799 return { $loc, token: $0 };
13800});
13801var HeregexPart$$ = [HeregexPart$0, HeregexPart$1, HeregexPart$2, HeregexPart$3, HeregexPart$4, HeregexPart$5, HeregexPart$6, HeregexPart$7];
13802function HeregexPart(ctx, state2) {
13803 return (0, import_lib3.$EVENT_C)(ctx, state2, "HeregexPart", HeregexPart$$);
13804}
13805var HeregexComment$0 = JSSingleLineComment;
13806var HeregexComment$1 = CoffeeSingleLineComment;
13807var HeregexComment$$ = [HeregexComment$0, HeregexComment$1];
13808function HeregexComment(ctx, state2) {
13809 return (0, import_lib3.$EVENT_C)(ctx, state2, "HeregexComment", HeregexComment$$);
13810}
13811var RegularExpressionBody$0 = (0, import_lib3.$S)((0, import_lib3.$N)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R49, "RegularExpressionBody /[*\\/\\r\\n]/"))), (0, import_lib3.$Q)(RegExpPart));
13812function RegularExpressionBody(ctx, state2) {
13813 return (0, import_lib3.$EVENT)(ctx, state2, "RegularExpressionBody", RegularExpressionBody$0);
13814}
13815var RegExpPart$0 = RegularExpressionClass;
13816var RegExpPart$1 = RegExpCharacter;
13817var RegExpPart$$ = [RegExpPart$0, RegExpPart$1];
13818function RegExpPart(ctx, state2) {
13819 return (0, import_lib3.$EVENT_C)(ctx, state2, "RegExpPart", RegExpPart$$);
13820}
13821var RegExpCharacter$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R50, "RegExpCharacter /(?:\\\\.|[^[\\/\\r\\n])+/"));
13822function RegExpCharacter(ctx, state2) {
13823 return (0, import_lib3.$EVENT)(ctx, state2, "RegExpCharacter", RegExpCharacter$0);
13824}
13825var RegularExpressionFlags$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R51, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
13826function RegularExpressionFlags(ctx, state2) {
13827 return (0, import_lib3.$EVENT)(ctx, state2, "RegularExpressionFlags", RegularExpressionFlags$0);
13828}
13829var TemplateLiteral$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R52, "TemplateLiteral /(?=[`'\"])/"), _TemplateLiteral), function(value) {
13830 return value[1];
13831});
13832function TemplateLiteral(ctx, state2) {
13833 return (0, import_lib3.$EVENT)(ctx, state2, "TemplateLiteral", TemplateLiteral$0);
13834}
13835var _TemplateLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(TripleTick, (0, import_lib3.$Q)((0, import_lib3.$C)(TemplateBlockCharacters, TemplateSubstitution)), TripleTick), function($skip, $loc, $0, $1, $2, $3) {
13836 return dedentBlockSubstitutions($0, config.tab);
13837});
13838var _TemplateLiteral$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Backtick, (0, import_lib3.$Q)((0, import_lib3.$C)(TemplateCharacters, TemplateSubstitution)), Backtick), function($skip, $loc, $0, $1, $2, $3) {
13839 return {
13840 type: "TemplateLiteral",
13841 children: $0
13842 };
13843});
13844var _TemplateLiteral$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(TripleDoubleQuote, (0, import_lib3.$Q)((0, import_lib3.$C)(TripleDoubleStringCharacters, CoffeeStringSubstitution)), TripleDoubleQuote), function($skip, $loc, $0, $1, $2, $3) {
13845 return dedentBlockSubstitutions($0, config.tab);
13846});
13847var _TemplateLiteral$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(TripleSingleQuote, TripleSingleStringCharacters, TripleSingleQuote), function($skip, $loc, $0, $1, $2, $3) {
13848 var s = $1;
13849 var str = $2;
13850 var e = $3;
13851 return {
13852 type: "TemplateLiteral",
13853 children: [s, dedentBlockString(str, config.tab), e]
13854 };
13855});
13856var _TemplateLiteral$4 = CoffeeInterpolatedDoubleQuotedString;
13857var _TemplateLiteral$$ = [_TemplateLiteral$0, _TemplateLiteral$1, _TemplateLiteral$2, _TemplateLiteral$3, _TemplateLiteral$4];
13858function _TemplateLiteral(ctx, state2) {
13859 return (0, import_lib3.$EVENT_C)(ctx, state2, "_TemplateLiteral", _TemplateLiteral$$);
13860}
13861var TemplateSubstitution$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(SubstitutionStart, AllowAll, (0, import_lib3.$E)((0, import_lib3.$S)(PostfixedExpression, __, CloseBrace)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
13862 if (!$3)
13863 return $skip;
13864 return [$1, ...$3];
13865});
13866function TemplateSubstitution(ctx, state2) {
13867 return (0, import_lib3.$EVENT)(ctx, state2, "TemplateSubstitution", TemplateSubstitution$0);
13868}
13869var TemplateCharacters$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R53, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13870 return { $loc, token: $0 };
13871});
13872function TemplateCharacters(ctx, state2) {
13873 return (0, import_lib3.$EVENT)(ctx, state2, "TemplateCharacters", TemplateCharacters$0);
13874}
13875var TemplateBlockCharacters$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R54, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13876 return { $loc, token: $0 };
13877});
13878function TemplateBlockCharacters(ctx, state2) {
13879 return (0, import_lib3.$EVENT)(ctx, state2, "TemplateBlockCharacters", TemplateBlockCharacters$0);
13880}
13881var ReservedWord$0 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R55, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")), CoffeeBooleansEnabled);
13882var ReservedWord$1 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R56, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")), CoffeeIsntEnabled);
13883var ReservedWord$2 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R57, "ReservedWord /(?:by)(?!\\p{ID_Continue})/")), CoffeeForLoopsEnabled);
13884var ReservedWord$3 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R58, "ReservedWord /(?:of)(?!\\p{ID_Continue})/")), CoffeeOfEnabled);
13885var ReservedWord$4 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R59, "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})/"));
13886var ReservedWord$$ = [ReservedWord$0, ReservedWord$1, ReservedWord$2, ReservedWord$3, ReservedWord$4];
13887function ReservedWord(ctx, state2) {
13888 return (0, import_lib3.$EVENT_C)(ctx, state2, "ReservedWord", ReservedWord$$);
13889}
13890var Comment$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R60, "Comment /(?=\\/|#)/"), _Comment), function(value) {
13891 return value[1];
13892});
13893function Comment(ctx, state2) {
13894 return (0, import_lib3.$EVENT)(ctx, state2, "Comment", Comment$0);
13895}
13896var _Comment$0 = MultiLineComment;
13897var _Comment$1 = SingleLineComment;
13898var _Comment$$ = [_Comment$0, _Comment$1];
13899function _Comment(ctx, state2) {
13900 return (0, import_lib3.$EVENT_C)(ctx, state2, "_Comment", _Comment$$);
13901}
13902var SingleLineComment$0 = JSSingleLineComment;
13903var SingleLineComment$1 = (0, import_lib3.$S)(CoffeeCommentEnabled, CoffeeSingleLineComment);
13904var SingleLineComment$$ = [SingleLineComment$0, SingleLineComment$1];
13905function SingleLineComment(ctx, state2) {
13906 return (0, import_lib3.$EVENT_C)(ctx, state2, "SingleLineComment", SingleLineComment$$);
13907}
13908var JSSingleLineComment$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R61, "JSSingleLineComment /\\/\\/(?!\\/)[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13909 return { type: "Comment", $loc, token: $0 };
13910});
13911function JSSingleLineComment(ctx, state2) {
13912 return (0, import_lib3.$EVENT)(ctx, state2, "JSSingleLineComment", JSSingleLineComment$0);
13913}
13914var MultiLineComment$0 = JSMultiLineComment;
13915var MultiLineComment$1 = CoffeeMultiLineComment;
13916var MultiLineComment$$ = [MultiLineComment$0, MultiLineComment$1];
13917function MultiLineComment(ctx, state2) {
13918 return (0, import_lib3.$EVENT_C)(ctx, state2, "MultiLineComment", MultiLineComment$$);
13919}
13920var JSMultiLineComment$0 = (0, import_lib3.$TV)((0, import_lib3.$TEXT)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L122, 'JSMultiLineComment "/*"'), (0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$N)((0, import_lib3.$EXPECT)($L123, 'JSMultiLineComment "*/"')), (0, import_lib3.$EXPECT)($R62, "JSMultiLineComment /./"))), (0, import_lib3.$EXPECT)($L123, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
13921 return { type: "Comment", $loc, token: $1 };
13922});
13923function JSMultiLineComment(ctx, state2) {
13924 return (0, import_lib3.$EVENT)(ctx, state2, "JSMultiLineComment", JSMultiLineComment$0);
13925}
13926var CoffeeSingleLineComment$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R63, "CoffeeSingleLineComment /#(?!##(?!#))([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13927 return { type: "Comment", $loc, token: `//${$1}` };
13928});
13929function CoffeeSingleLineComment(ctx, state2) {
13930 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeSingleLineComment", CoffeeSingleLineComment$0);
13931}
13932var CoffeeMultiLineComment$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(CoffeeHereCommentStart, (0, import_lib3.$TEXT)((0, import_lib3.$EXPECT)($R64, "CoffeeMultiLineComment /[^]*?###/"))), function($skip, $loc, $0, $1, $2) {
13933 $2 = $2.slice(0, $2.length - 3).replace(/\*\//g, "* /");
13934 return { type: "Comment", $loc, token: `/*${$2}*/` };
13935});
13936function CoffeeMultiLineComment(ctx, state2) {
13937 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeMultiLineComment", CoffeeMultiLineComment$0);
13938}
13939var CoffeeHereCommentStart$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R65, "CoffeeHereCommentStart /###(?!#)/"));
13940function CoffeeHereCommentStart(ctx, state2) {
13941 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeHereCommentStart", CoffeeHereCommentStart$0);
13942}
13943var InlineComment$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R66, "InlineComment /\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\//"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13944 return { $loc, token: $0 };
13945});
13946function InlineComment(ctx, state2) {
13947 return (0, import_lib3.$EVENT)(ctx, state2, "InlineComment", InlineComment$0);
13948}
13949var RestOfLine$0 = (0, import_lib3.$S)((0, import_lib3.$Q)((0, import_lib3.$C)(NonNewlineWhitespace, Comment)), EOL);
13950function RestOfLine(ctx, state2) {
13951 return (0, import_lib3.$EVENT)(ctx, state2, "RestOfLine", RestOfLine$0);
13952}
13953var TrailingComment$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$E)(SingleLineComment));
13954function TrailingComment(ctx, state2) {
13955 return (0, import_lib3.$EVENT)(ctx, state2, "TrailingComment", TrailingComment$0);
13956}
13957var _$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R67, "_ /(?=[ \\t\\/\\\\])/"), (0, import_lib3.$P)((0, import_lib3.$C)(NonNewlineWhitespace, InlineComment))), function(value) {
13958 return value[1];
13959});
13960function _(ctx, state2) {
13961 return (0, import_lib3.$EVENT)(ctx, state2, "_", _$0);
13962}
13963var NonNewlineWhitespace$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R68, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13964 return { $loc, token: $0 };
13965});
13966var NonNewlineWhitespace$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L124, 'NonNewlineWhitespace "\\\\\\\\"'), CoffeeLineContinuationEnabled, EOL), function(value) {
13967 return " ";
13968});
13969var NonNewlineWhitespace$$ = [NonNewlineWhitespace$0, NonNewlineWhitespace$1];
13970function NonNewlineWhitespace(ctx, state2) {
13971 return (0, import_lib3.$EVENT_C)(ctx, state2, "NonNewlineWhitespace", NonNewlineWhitespace$$);
13972}
13973var Trimmed_$0 = (0, import_lib3.$TV)(_, function($skip, $loc, $0, $1) {
13974 var ws = $0;
13975 return insertTrimmingSpace(ws, "");
13976});
13977function Trimmed_(ctx, state2) {
13978 return (0, import_lib3.$EVENT)(ctx, state2, "Trimmed_", Trimmed_$0);
13979}
13980var __$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R69, "__ /(?=\\s|\\/|#)/"), (0, import_lib3.$Q)((0, import_lib3.$C)(Whitespace, Comment))), function(value) {
13981 return value[1];
13982});
13983var __$1 = (0, import_lib3.$EXPECT)($L0, '__ ""');
13984var __$$ = [__$0, __$1];
13985function __(ctx, state2) {
13986 return (0, import_lib3.$EVENT_C)(ctx, state2, "__", __$$);
13987}
13988var Whitespace$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R46, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13989 return { $loc, token: $0 };
13990});
13991function Whitespace(ctx, state2) {
13992 return (0, import_lib3.$EVENT)(ctx, state2, "Whitespace", Whitespace$0);
13993}
13994var ExpressionDelimiter$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), Semicolon, InsertComma, TrailingComment), function($skip, $loc, $0, $1, $2, $3, $4) {
13995 return [$1, $3, $4];
13996});
13997var ExpressionDelimiter$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$Y)(EOS), InsertComma), function(value) {
13998 return value[1];
13999});
14000var ExpressionDelimiter$$ = [ExpressionDelimiter$0, ExpressionDelimiter$1];
14001function ExpressionDelimiter(ctx, state2) {
14002 return (0, import_lib3.$EVENT_C)(ctx, state2, "ExpressionDelimiter", ExpressionDelimiter$$);
14003}
14004var SimpleStatementDelimiter$0 = (0, import_lib3.$Y)(EOS);
14005var SimpleStatementDelimiter$1 = SemicolonDelimiter;
14006var SimpleStatementDelimiter$$ = [SimpleStatementDelimiter$0, SimpleStatementDelimiter$1];
14007function SimpleStatementDelimiter(ctx, state2) {
14008 return (0, import_lib3.$EVENT_C)(ctx, state2, "SimpleStatementDelimiter", SimpleStatementDelimiter$$);
14009}
14010var StatementDelimiter$0 = (0, import_lib3.$Y)(EOS);
14011var StatementDelimiter$1 = SemicolonDelimiter;
14012var StatementDelimiter$2 = (0, import_lib3.$Y)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)((0, import_lib3.$EXPECT)($L36, 'StatementDelimiter "}"'), (0, import_lib3.$EXPECT)($L125, 'StatementDelimiter ")"'), (0, import_lib3.$EXPECT)($L45, 'StatementDelimiter "]"'))));
14013var StatementDelimiter$$ = [StatementDelimiter$0, StatementDelimiter$1, StatementDelimiter$2];
14014function StatementDelimiter(ctx, state2) {
14015 return (0, import_lib3.$EVENT_C)(ctx, state2, "StatementDelimiter", StatementDelimiter$$);
14016}
14017var SemicolonDelimiter$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), Semicolon, TrailingComment), function($skip, $loc, $0, $1, $2, $3) {
14018 return {
14019 type: "SemicolonDelimiter",
14020 children: $0
14021 };
14022});
14023function SemicolonDelimiter(ctx, state2) {
14024 return (0, import_lib3.$EVENT)(ctx, state2, "SemicolonDelimiter", SemicolonDelimiter$0);
14025}
14026var NonIdContinue$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R70, "NonIdContinue /(?!\\p{ID_Continue})/"));
14027function NonIdContinue(ctx, state2) {
14028 return (0, import_lib3.$EVENT)(ctx, state2, "NonIdContinue", NonIdContinue$0);
14029}
14030var Loc$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'Loc ""'), function($skip, $loc, $0, $1) {
14031 return { $loc, token: "" };
14032});
14033function Loc(ctx, state2) {
14034 return (0, import_lib3.$EVENT)(ctx, state2, "Loc", Loc$0);
14035}
14036var Abstract$0 = (0, import_lib3.$TV)((0, import_lib3.$TEXT)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L126, 'Abstract "abstract"'), NonIdContinue, (0, import_lib3.$E)((0, import_lib3.$EXPECT)($L18, 'Abstract " "')))), function($skip, $loc, $0, $1) {
14037 return { $loc, token: $1, ts: true };
14038});
14039function Abstract(ctx, state2) {
14040 return (0, import_lib3.$EVENT)(ctx, state2, "Abstract", Abstract$0);
14041}
14042var Ampersand$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L108, 'Ampersand "&"'), function($skip, $loc, $0, $1) {
14043 return { $loc, token: $1 };
14044});
14045function Ampersand(ctx, state2) {
14046 return (0, import_lib3.$EVENT)(ctx, state2, "Ampersand", Ampersand$0);
14047}
14048var As$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L127, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14049 return { $loc, token: $1 };
14050});
14051function As(ctx, state2) {
14052 return (0, import_lib3.$EVENT)(ctx, state2, "As", As$0);
14053}
14054var At$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L128, 'At "@"'), function($skip, $loc, $0, $1) {
14055 return { $loc, token: $1 };
14056});
14057function At(ctx, state2) {
14058 return (0, import_lib3.$EVENT)(ctx, state2, "At", At$0);
14059}
14060var AtAt$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L129, 'AtAt "@@"'), function($skip, $loc, $0, $1) {
14061 return { $loc, token: "@" };
14062});
14063function AtAt(ctx, state2) {
14064 return (0, import_lib3.$EVENT)(ctx, state2, "AtAt", AtAt$0);
14065}
14066var Async$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L130, 'Async "async"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14067 return { $loc, token: $1, type: "Async" };
14068});
14069function Async(ctx, state2) {
14070 return (0, import_lib3.$EVENT)(ctx, state2, "Async", Async$0);
14071}
14072var Await$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L131, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14073 return { $loc, token: $1, type: "Await" };
14074});
14075function Await(ctx, state2) {
14076 return (0, import_lib3.$EVENT)(ctx, state2, "Await", Await$0);
14077}
14078var Backtick$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L132, 'Backtick "`"'), function($skip, $loc, $0, $1) {
14079 return { $loc, token: $1 };
14080});
14081function Backtick(ctx, state2) {
14082 return (0, import_lib3.$EVENT)(ctx, state2, "Backtick", Backtick$0);
14083}
14084var By$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L133, 'By "by"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14085 return { $loc, token: $1 };
14086});
14087function By(ctx, state2) {
14088 return (0, import_lib3.$EVENT)(ctx, state2, "By", By$0);
14089}
14090var Caret$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L22, 'Caret "^"'), function($skip, $loc, $0, $1) {
14091 return { $loc, token: $1 };
14092});
14093function Caret(ctx, state2) {
14094 return (0, import_lib3.$EVENT)(ctx, state2, "Caret", Caret$0);
14095}
14096var Case$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L134, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14097 return { $loc, token: $1 };
14098});
14099function Case(ctx, state2) {
14100 return (0, import_lib3.$EVENT)(ctx, state2, "Case", Case$0);
14101}
14102var Catch$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L135, 'Catch "catch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14103 return { $loc, token: $1 };
14104});
14105function Catch(ctx, state2) {
14106 return (0, import_lib3.$EVENT)(ctx, state2, "Catch", Catch$0);
14107}
14108var Class$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L136, 'Class "class"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14109 return { $loc, token: $1 };
14110});
14111function Class(ctx, state2) {
14112 return (0, import_lib3.$EVENT)(ctx, state2, "Class", Class$0);
14113}
14114var CloseAngleBracket$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L44, 'CloseAngleBracket ">"'), function($skip, $loc, $0, $1) {
14115 return { $loc, token: $1 };
14116});
14117function CloseAngleBracket(ctx, state2) {
14118 return (0, import_lib3.$EVENT)(ctx, state2, "CloseAngleBracket", CloseAngleBracket$0);
14119}
14120var CloseBrace$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L36, 'CloseBrace "}"'), function($skip, $loc, $0, $1) {
14121 return { $loc, token: $1 };
14122});
14123function CloseBrace(ctx, state2) {
14124 return (0, import_lib3.$EVENT)(ctx, state2, "CloseBrace", CloseBrace$0);
14125}
14126var CloseBracket$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L45, 'CloseBracket "]"'), function($skip, $loc, $0, $1) {
14127 return { $loc, token: $1 };
14128});
14129function CloseBracket(ctx, state2) {
14130 return (0, import_lib3.$EVENT)(ctx, state2, "CloseBracket", CloseBracket$0);
14131}
14132var CloseParen$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L125, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
14133 return { $loc, token: $1 };
14134});
14135function CloseParen(ctx, state2) {
14136 return (0, import_lib3.$EVENT)(ctx, state2, "CloseParen", CloseParen$0);
14137}
14138var CoffeeSubstitutionStart$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L137, 'CoffeeSubstitutionStart "\#{"'), function($skip, $loc, $0, $1) {
14139 return { $loc, token: "${" };
14140});
14141function CoffeeSubstitutionStart(ctx, state2) {
14142 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeSubstitutionStart", CoffeeSubstitutionStart$0);
14143}
14144var Colon$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L16, 'Colon ":"'), (0, import_lib3.$N)((0, import_lib3.$EXPECT)($R71, "Colon /[=:]/"))), function($skip, $loc, $0, $1, $2) {
14145 return { $loc, token: $1 };
14146});
14147function Colon(ctx, state2) {
14148 return (0, import_lib3.$EVENT)(ctx, state2, "Colon", Colon$0);
14149}
14150var Comma$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L17, 'Comma ","'), function($skip, $loc, $0, $1) {
14151 return { $loc, token: $1 };
14152});
14153function Comma(ctx, state2) {
14154 return (0, import_lib3.$EVENT)(ctx, state2, "Comma", Comma$0);
14155}
14156var Comptime$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L138, 'Comptime "comptime"'), NonIdContinue, (0, import_lib3.$N)((0, import_lib3.$EXPECT)($L16, 'Comptime ":"'))), function($skip, $loc, $0, $1, $2, $3) {
14157 return { $loc, token: $1 };
14158});
14159function Comptime(ctx, state2) {
14160 return (0, import_lib3.$EVENT)(ctx, state2, "Comptime", Comptime$0);
14161}
14162var ConstructorShorthand$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L128, 'ConstructorShorthand "@"'), function($skip, $loc, $0, $1) {
14163 return { $loc, token: "constructor" };
14164});
14165function ConstructorShorthand(ctx, state2) {
14166 return (0, import_lib3.$EVENT)(ctx, state2, "ConstructorShorthand", ConstructorShorthand$0);
14167}
14168var Declare$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L139, 'Declare "declare"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14169 return { $loc, token: $1 };
14170});
14171function Declare(ctx, state2) {
14172 return (0, import_lib3.$EVENT)(ctx, state2, "Declare", Declare$0);
14173}
14174var Default$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L140, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14175 return { $loc, token: $1 };
14176});
14177function Default(ctx, state2) {
14178 return (0, import_lib3.$EVENT)(ctx, state2, "Default", Default$0);
14179}
14180var Delete$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L141, 'Delete "delete"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14181 return { $loc, token: $1 };
14182});
14183function Delete(ctx, state2) {
14184 return (0, import_lib3.$EVENT)(ctx, state2, "Delete", Delete$0);
14185}
14186var Do$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L142, 'Do "do"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14187 return { $loc, token: $1 };
14188});
14189function Do(ctx, state2) {
14190 return (0, import_lib3.$EVENT)(ctx, state2, "Do", Do$0);
14191}
14192var Dot$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L7, 'Dot "."'), function($skip, $loc, $0, $1) {
14193 return { $loc, token: $1 };
14194});
14195var Dot$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R72, "Dot /['\u2019]s/"), Trimmed_), function($skip, $loc, $0, $1, $2) {
14196 var ws = $2;
14197 return [
14198 { $loc, token: "." },
14199 ws
14200 ];
14201});
14202var Dot$$ = [Dot$0, Dot$1];
14203function Dot(ctx, state2) {
14204 return (0, import_lib3.$EVENT_C)(ctx, state2, "Dot", Dot$$);
14205}
14206var DotDot$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L143, 'DotDot ".."'), (0, import_lib3.$N)((0, import_lib3.$EXPECT)($L7, 'DotDot "."'))), function($skip, $loc, $0, $1, $2) {
14207 return { $loc, token: $1 };
14208});
14209var DotDot$1 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L144, 'DotDot "\u2025"'), function($skip, $loc, $0, $1) {
14210 return { $loc, token: ".." };
14211});
14212var DotDot$$ = [DotDot$0, DotDot$1];
14213function DotDot(ctx, state2) {
14214 return (0, import_lib3.$EVENT_C)(ctx, state2, "DotDot", DotDot$$);
14215}
14216var DotDotDot$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L145, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
14217 return { $loc, token: $1 };
14218});
14219var DotDotDot$1 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L146, 'DotDotDot "\u2026"'), function($skip, $loc, $0, $1) {
14220 return { $loc, token: "..." };
14221});
14222var DotDotDot$$ = [DotDotDot$0, DotDotDot$1];
14223function DotDotDot(ctx, state2) {
14224 return (0, import_lib3.$EVENT_C)(ctx, state2, "DotDotDot", DotDotDot$$);
14225}
14226var DoubleColon$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L147, 'DoubleColon "::"'), function($skip, $loc, $0, $1) {
14227 return { $loc, token: $1 };
14228});
14229function DoubleColon(ctx, state2) {
14230 return (0, import_lib3.$EVENT)(ctx, state2, "DoubleColon", DoubleColon$0);
14231}
14232var DoubleQuote$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L148, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
14233 return { $loc, token: $1 };
14234});
14235function DoubleQuote(ctx, state2) {
14236 return (0, import_lib3.$EVENT)(ctx, state2, "DoubleQuote", DoubleQuote$0);
14237}
14238var Each$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L149, 'Each "each"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14239 return { $loc, token: $1 };
14240});
14241function Each(ctx, state2) {
14242 return (0, import_lib3.$EVENT)(ctx, state2, "Each", Each$0);
14243}
14244var Else$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L150, 'Else "else"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14245 return { $loc, token: $1 };
14246});
14247function Else(ctx, state2) {
14248 return (0, import_lib3.$EVENT)(ctx, state2, "Else", Else$0);
14249}
14250var Equals$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L3, 'Equals "="'), function($skip, $loc, $0, $1) {
14251 return { $loc, token: $1 };
14252});
14253function Equals(ctx, state2) {
14254 return (0, import_lib3.$EVENT)(ctx, state2, "Equals", Equals$0);
14255}
14256var ExclamationPoint$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L151, 'ExclamationPoint "!"'), function($skip, $loc, $0, $1) {
14257 return { $loc, token: $1 };
14258});
14259function ExclamationPoint(ctx, state2) {
14260 return (0, import_lib3.$EVENT)(ctx, state2, "ExclamationPoint", ExclamationPoint$0);
14261}
14262var Export$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L152, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14263 return { $loc, token: $1 };
14264});
14265function Export(ctx, state2) {
14266 return (0, import_lib3.$EVENT)(ctx, state2, "Export", Export$0);
14267}
14268var Extends$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L153, 'Extends "extends"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14269 return { $loc, token: $1 };
14270});
14271function Extends(ctx, state2) {
14272 return (0, import_lib3.$EVENT)(ctx, state2, "Extends", Extends$0);
14273}
14274var Finally$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L154, 'Finally "finally"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14275 return { $loc, token: $1 };
14276});
14277function Finally(ctx, state2) {
14278 return (0, import_lib3.$EVENT)(ctx, state2, "Finally", Finally$0);
14279}
14280var For$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L155, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14281 return { $loc, token: $1 };
14282});
14283function For(ctx, state2) {
14284 return (0, import_lib3.$EVENT)(ctx, state2, "For", For$0);
14285}
14286var From$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L156, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14287 return { $loc, token: $1 };
14288});
14289function From(ctx, state2) {
14290 return (0, import_lib3.$EVENT)(ctx, state2, "From", From$0);
14291}
14292var Function$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L157, 'Function "function"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14293 return { $loc, token: $1 };
14294});
14295function Function2(ctx, state2) {
14296 return (0, import_lib3.$EVENT)(ctx, state2, "Function", Function$0);
14297}
14298var GetOrSet$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L158, 'GetOrSet "get"'), (0, import_lib3.$EXPECT)($L159, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14299 return { $loc, token: $1, type: "GetOrSet" };
14300});
14301function GetOrSet(ctx, state2) {
14302 return (0, import_lib3.$EVENT)(ctx, state2, "GetOrSet", GetOrSet$0);
14303}
14304var Hash$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L160, 'Hash "\#"'), function($skip, $loc, $0, $1) {
14305 return { $loc, token: $1 };
14306});
14307function Hash(ctx, state2) {
14308 return (0, import_lib3.$EVENT)(ctx, state2, "Hash", Hash$0);
14309}
14310var If$0 = (0, import_lib3.$TV)((0, import_lib3.$TEXT)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L161, 'If "if"'), NonIdContinue, (0, import_lib3.$E)((0, import_lib3.$EXPECT)($L18, 'If " "')))), function($skip, $loc, $0, $1) {
14311 return { $loc, token: $1 };
14312});
14313function If(ctx, state2) {
14314 return (0, import_lib3.$EVENT)(ctx, state2, "If", If$0);
14315}
14316var Import$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L15, 'Import "import"'), (0, import_lib3.$Y)((0, import_lib3.$EXPECT)($R73, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
14317 return { $loc, token: $1 };
14318});
14319function Import(ctx, state2) {
14320 return (0, import_lib3.$EVENT)(ctx, state2, "Import", Import$0);
14321}
14322var In$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L162, 'In "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14323 return { $loc, token: $1 };
14324});
14325function In(ctx, state2) {
14326 return (0, import_lib3.$EVENT)(ctx, state2, "In", In$0);
14327}
14328var Infer$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L163, 'Infer "infer"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14329 return { $loc, token: $1 };
14330});
14331function Infer(ctx, state2) {
14332 return (0, import_lib3.$EVENT)(ctx, state2, "Infer", Infer$0);
14333}
14334var LetOrConst$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L164, 'LetOrConst "let"'), (0, import_lib3.$EXPECT)($L165, 'LetOrConst "const"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14335 return { $loc, token: $1 };
14336});
14337function LetOrConst(ctx, state2) {
14338 return (0, import_lib3.$EVENT)(ctx, state2, "LetOrConst", LetOrConst$0);
14339}
14340var Const$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L165, 'Const "const"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14341 return { $loc, token: $1 };
14342});
14343function Const(ctx, state2) {
14344 return (0, import_lib3.$EVENT)(ctx, state2, "Const", Const$0);
14345}
14346var Is$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L166, 'Is "is"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14347 return { $loc, token: $1 };
14348});
14349function Is(ctx, state2) {
14350 return (0, import_lib3.$EVENT)(ctx, state2, "Is", Is$0);
14351}
14352var LetOrConstOrVar$0 = LetOrConst;
14353var LetOrConstOrVar$1 = Var;
14354var LetOrConstOrVar$$ = [LetOrConstOrVar$0, LetOrConstOrVar$1];
14355function LetOrConstOrVar(ctx, state2) {
14356 return (0, import_lib3.$EVENT_C)(ctx, state2, "LetOrConstOrVar", LetOrConstOrVar$$);
14357}
14358var Like$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L167, 'Like "like"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14359 return { $loc, token: $1 };
14360});
14361function Like(ctx, state2) {
14362 return (0, import_lib3.$EVENT)(ctx, state2, "Like", Like$0);
14363}
14364var Loop$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L168, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14365 return { $loc, token: "while" };
14366});
14367function Loop(ctx, state2) {
14368 return (0, import_lib3.$EVENT)(ctx, state2, "Loop", Loop$0);
14369}
14370var New$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L169, 'New "new"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14371 return { $loc, token: $1 };
14372});
14373function New(ctx, state2) {
14374 return (0, import_lib3.$EVENT)(ctx, state2, "New", New$0);
14375}
14376var Not$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L170, 'Not "not"'), NonIdContinue, (0, import_lib3.$N)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$EXPECT)($L16, 'Not ":"')))), function($skip, $loc, $0, $1, $2, $3) {
14377 return { $loc, token: "!" };
14378});
14379function Not(ctx, state2) {
14380 return (0, import_lib3.$EVENT)(ctx, state2, "Not", Not$0);
14381}
14382var Of$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L171, 'Of "of"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14383 return { $loc, token: $1 };
14384});
14385function Of(ctx, state2) {
14386 return (0, import_lib3.$EVENT)(ctx, state2, "Of", Of$0);
14387}
14388var OpenAngleBracket$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L19, 'OpenAngleBracket "<"'), function($skip, $loc, $0, $1) {
14389 return { $loc, token: $1 };
14390});
14391function OpenAngleBracket(ctx, state2) {
14392 return (0, import_lib3.$EVENT)(ctx, state2, "OpenAngleBracket", OpenAngleBracket$0);
14393}
14394var OpenBrace$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L1, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
14395 return { $loc, token: $1 };
14396});
14397function OpenBrace(ctx, state2) {
14398 return (0, import_lib3.$EVENT)(ctx, state2, "OpenBrace", OpenBrace$0);
14399}
14400var OpenBracket$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L172, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
14401 return { $loc, token: $1 };
14402});
14403function OpenBracket(ctx, state2) {
14404 return (0, import_lib3.$EVENT)(ctx, state2, "OpenBracket", OpenBracket$0);
14405}
14406var OpenParen$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L4, 'OpenParen "("'), function($skip, $loc, $0, $1) {
14407 return { $loc, token: $1 };
14408});
14409function OpenParen(ctx, state2) {
14410 return (0, import_lib3.$EVENT)(ctx, state2, "OpenParen", OpenParen$0);
14411}
14412var Operator$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L173, 'Operator "operator"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14413 return { $loc, token: $1 };
14414});
14415function Operator(ctx, state2) {
14416 return (0, import_lib3.$EVENT)(ctx, state2, "Operator", Operator$0);
14417}
14418var Override$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L174, 'Override "override"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14419 return { $loc, token: $1, ts: true };
14420});
14421function Override(ctx, state2) {
14422 return (0, import_lib3.$EVENT)(ctx, state2, "Override", Override$0);
14423}
14424var Own$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L175, 'Own "own"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14425 return { $loc, token: $1 };
14426});
14427function Own(ctx, state2) {
14428 return (0, import_lib3.$EVENT)(ctx, state2, "Own", Own$0);
14429}
14430var Public$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L176, 'Public "public"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14431 return { $loc, token: $1 };
14432});
14433function Public(ctx, state2) {
14434 return (0, import_lib3.$EVENT)(ctx, state2, "Public", Public$0);
14435}
14436var Private$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L177, 'Private "private"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14437 return { $loc, token: $1 };
14438});
14439function Private(ctx, state2) {
14440 return (0, import_lib3.$EVENT)(ctx, state2, "Private", Private$0);
14441}
14442var Protected$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L178, 'Protected "protected"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14443 return { $loc, token: $1 };
14444});
14445function Protected(ctx, state2) {
14446 return (0, import_lib3.$EVENT)(ctx, state2, "Protected", Protected$0);
14447}
14448var Pipe$0 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L179, 'Pipe "||>"'), (0, import_lib3.$EXPECT)($L180, 'Pipe "|\u25B7"')), function($skip, $loc, $0, $1) {
14449 return { $loc, token: "||>" };
14450});
14451var Pipe$1 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L181, 'Pipe "|>="'), (0, import_lib3.$EXPECT)($L182, 'Pipe "\u25B7="')), function($skip, $loc, $0, $1) {
14452 return { $loc, token: "|>=" };
14453});
14454var Pipe$2 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L183, 'Pipe "|>"'), (0, import_lib3.$EXPECT)($L184, 'Pipe "\u25B7"')), function($skip, $loc, $0, $1) {
14455 return { $loc, token: "|>" };
14456});
14457var Pipe$$ = [Pipe$0, Pipe$1, Pipe$2];
14458function Pipe(ctx, state2) {
14459 return (0, import_lib3.$EVENT_C)(ctx, state2, "Pipe", Pipe$$);
14460}
14461var QuestionMark$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L6, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
14462 return { $loc, token: $1 };
14463});
14464function QuestionMark(ctx, state2) {
14465 return (0, import_lib3.$EVENT)(ctx, state2, "QuestionMark", QuestionMark$0);
14466}
14467var Readonly$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L185, 'Readonly "readonly"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14468 return { $loc, token: $1, ts: true };
14469});
14470function Readonly(ctx, state2) {
14471 return (0, import_lib3.$EVENT)(ctx, state2, "Readonly", Readonly$0);
14472}
14473var Return$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L186, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14474 return { $loc, token: $1 };
14475});
14476function Return(ctx, state2) {
14477 return (0, import_lib3.$EVENT)(ctx, state2, "Return", Return$0);
14478}
14479var Satisfies$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L187, 'Satisfies "satisfies"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14480 return { $loc, token: $1 };
14481});
14482function Satisfies(ctx, state2) {
14483 return (0, import_lib3.$EVENT)(ctx, state2, "Satisfies", Satisfies$0);
14484}
14485var Semicolon$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L111, 'Semicolon ";"'), function($skip, $loc, $0, $1) {
14486 return { $loc, token: $1 };
14487});
14488function Semicolon(ctx, state2) {
14489 return (0, import_lib3.$EVENT)(ctx, state2, "Semicolon", Semicolon$0);
14490}
14491var SingleQuote$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L188, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
14492 return { $loc, token: $1 };
14493});
14494function SingleQuote(ctx, state2) {
14495 return (0, import_lib3.$EVENT)(ctx, state2, "SingleQuote", SingleQuote$0);
14496}
14497var Star$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L64, 'Star "*"'), function($skip, $loc, $0, $1) {
14498 return { $loc, token: $1 };
14499});
14500function Star(ctx, state2) {
14501 return (0, import_lib3.$EVENT)(ctx, state2, "Star", Star$0);
14502}
14503var Static$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L189, 'Static "static"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14504 return { $loc, token: $1 };
14505});
14506var Static$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L128, 'Static "@"'), (0, import_lib3.$N)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L4, 'Static "("'), (0, import_lib3.$EXPECT)($L128, 'Static "@"')))), function($skip, $loc, $0, $1, $2) {
14507 return { $loc, token: "static " };
14508});
14509var Static$$ = [Static$0, Static$1];
14510function Static(ctx, state2) {
14511 return (0, import_lib3.$EVENT_C)(ctx, state2, "Static", Static$$);
14512}
14513var SubstitutionStart$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L190, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
14514 return { $loc, token: $1 };
14515});
14516function SubstitutionStart(ctx, state2) {
14517 return (0, import_lib3.$EVENT)(ctx, state2, "SubstitutionStart", SubstitutionStart$0);
14518}
14519var Super$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L191, 'Super "super"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14520 return { $loc, token: $1 };
14521});
14522function Super(ctx, state2) {
14523 return (0, import_lib3.$EVENT)(ctx, state2, "Super", Super$0);
14524}
14525var Switch$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L192, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14526 return { $loc, token: $1 };
14527});
14528function Switch(ctx, state2) {
14529 return (0, import_lib3.$EVENT)(ctx, state2, "Switch", Switch$0);
14530}
14531var Target$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L193, 'Target "target"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14532 return { $loc, token: $1 };
14533});
14534function Target(ctx, state2) {
14535 return (0, import_lib3.$EVENT)(ctx, state2, "Target", Target$0);
14536}
14537var Then$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L194, 'Then "then"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
14538 return { $loc, token: "" };
14539});
14540function Then(ctx, state2) {
14541 return (0, import_lib3.$EVENT)(ctx, state2, "Then", Then$0);
14542}
14543var This$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L195, 'This "this"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14544 return { $loc, token: $1 };
14545});
14546function This(ctx, state2) {
14547 return (0, import_lib3.$EVENT)(ctx, state2, "This", This$0);
14548}
14549var Throw$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L196, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14550 return { $loc, token: $1 };
14551});
14552function Throw(ctx, state2) {
14553 return (0, import_lib3.$EVENT)(ctx, state2, "Throw", Throw$0);
14554}
14555var TripleDoubleQuote$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L197, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
14556 return { $loc, token: "`" };
14557});
14558function TripleDoubleQuote(ctx, state2) {
14559 return (0, import_lib3.$EVENT)(ctx, state2, "TripleDoubleQuote", TripleDoubleQuote$0);
14560}
14561var TripleSingleQuote$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L198, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
14562 return { $loc, token: "`" };
14563});
14564function TripleSingleQuote(ctx, state2) {
14565 return (0, import_lib3.$EVENT)(ctx, state2, "TripleSingleQuote", TripleSingleQuote$0);
14566}
14567var TripleSlash$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L199, 'TripleSlash "///"'), function($skip, $loc, $0, $1) {
14568 return { $loc, token: "/" };
14569});
14570function TripleSlash(ctx, state2) {
14571 return (0, import_lib3.$EVENT)(ctx, state2, "TripleSlash", TripleSlash$0);
14572}
14573var TripleTick$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L200, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
14574 return { $loc, token: "`" };
14575});
14576function TripleTick(ctx, state2) {
14577 return (0, import_lib3.$EVENT)(ctx, state2, "TripleTick", TripleTick$0);
14578}
14579var Try$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L201, 'Try "try"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14580 return { $loc, token: $1 };
14581});
14582function Try(ctx, state2) {
14583 return (0, import_lib3.$EVENT)(ctx, state2, "Try", Try$0);
14584}
14585var Typeof$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L202, 'Typeof "typeof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14586 return { $loc, token: $1 };
14587});
14588function Typeof(ctx, state2) {
14589 return (0, import_lib3.$EVENT)(ctx, state2, "Typeof", Typeof$0);
14590}
14591var Undefined$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L203, 'Undefined "undefined"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14592 return { $loc, token: $1 };
14593});
14594function Undefined(ctx, state2) {
14595 return (0, import_lib3.$EVENT)(ctx, state2, "Undefined", Undefined$0);
14596}
14597var Unless$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L204, 'Unless "unless"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14598 return { $loc, token: $1, negated: true };
14599});
14600function Unless(ctx, state2) {
14601 return (0, import_lib3.$EVENT)(ctx, state2, "Unless", Unless$0);
14602}
14603var Until$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L205, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14604 return { $loc, token: $1, negated: true };
14605});
14606function Until(ctx, state2) {
14607 return (0, import_lib3.$EVENT)(ctx, state2, "Until", Until$0);
14608}
14609var Using$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L206, 'Using "using"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14610 return { $loc, token: $1 };
14611});
14612function Using(ctx, state2) {
14613 return (0, import_lib3.$EVENT)(ctx, state2, "Using", Using$0);
14614}
14615var Var$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L207, 'Var "var"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14616 return { $loc, token: $1 };
14617});
14618function Var(ctx, state2) {
14619 return (0, import_lib3.$EVENT)(ctx, state2, "Var", Var$0);
14620}
14621var Void$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L208, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14622 return { $loc, token: $1 };
14623});
14624function Void(ctx, state2) {
14625 return (0, import_lib3.$EVENT)(ctx, state2, "Void", Void$0);
14626}
14627var When$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L209, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14628 return { $loc, token: "case" };
14629});
14630function When(ctx, state2) {
14631 return (0, import_lib3.$EVENT)(ctx, state2, "When", When$0);
14632}
14633var While$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L210, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14634 return { $loc, token: $1 };
14635});
14636function While(ctx, state2) {
14637 return (0, import_lib3.$EVENT)(ctx, state2, "While", While$0);
14638}
14639var With$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L116, 'With "with"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14640 return { $loc, token: $1 };
14641});
14642function With(ctx, state2) {
14643 return (0, import_lib3.$EVENT)(ctx, state2, "With", With$0);
14644}
14645var Yield$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L211, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14646 return { $loc, token: $1, type: "Yield" };
14647});
14648function Yield(ctx, state2) {
14649 return (0, import_lib3.$EVENT)(ctx, state2, "Yield", Yield$0);
14650}
14651var JSXImplicitFragment$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(JSXTag, (0, import_lib3.$Q)((0, import_lib3.$S)(Nested, JSXTag))), function($skip, $loc, $0, $1, $2) {
14652 const jsx = $2.length === 0 ? $1 : {
14653 type: "JSXFragment",
14654 children: [
14655 "<>\n",
14656 state.currentIndent.token,
14657 ...$0,
14658 "\n",
14659 state.currentIndent.token,
14660 "</>"
14661 ],
14662 jsxChildren: [$1].concat($2.map(([, tag]) => tag))
14663 };
14664 const type = typeOfJSX(jsx, config, getHelperRef);
14665 return type ? [
14666 { ts: true, children: ["("] },
14667 jsx,
14668 { ts: true, children: [" as any as ", type, ")"] }
14669 ] : jsx;
14670});
14671function JSXImplicitFragment(ctx, state2) {
14672 return (0, import_lib3.$EVENT)(ctx, state2, "JSXImplicitFragment", JSXImplicitFragment$0);
14673}
14674var JSXTag$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R74, "JSXTag /(?=[<])/"), _JSXTag), function(value) {
14675 return value[1];
14676});
14677function JSXTag(ctx, state2) {
14678 return (0, import_lib3.$EVENT)(ctx, state2, "JSXTag", JSXTag$0);
14679}
14680var _JSXTag$0 = JSXElement;
14681var _JSXTag$1 = JSXFragment;
14682var _JSXTag$2 = JSXComment;
14683var _JSXTag$$ = [_JSXTag$0, _JSXTag$1, _JSXTag$2];
14684function _JSXTag(ctx, state2) {
14685 return (0, import_lib3.$EVENT_C)(ctx, state2, "_JSXTag", _JSXTag$$);
14686}
14687var JSXElement$0 = JSXSelfClosingElement;
14688var JSXElement$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(CoffeeJSXEnabled), PushJSXOpeningElement, (0, import_lib3.$E)(JSXMixedChildren), JSXOptionalClosingElement, PopJSXStack), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
14689 var open = $2;
14690 var children = $3;
14691 var close = $4;
14692 if (!children)
14693 return $skip;
14694 let parts;
14695 $0 = $0.slice(1);
14696 if (close) {
14697 parts = $0;
14698 } else if (children.jsxChildren.length) {
14699 parts = [
14700 ...$0,
14701 "\n",
14702 // InsertNewline
14703 state.currentIndent.token,
14704 // InsertIndent
14705 ["</", open[1], ">"]
14706 ];
14707 } else {
14708 parts = [open.slice(0, -1), " />"];
14709 }
14710 return { type: "JSXElement", children: parts, tag: open[1] };
14711});
14712var JSXElement$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(CoffeeJSXEnabled, JSXOpeningElement, (0, import_lib3.$E)(JSXChildren), (0, import_lib3.$E)(Whitespace), JSXClosingElement), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
14713 var open = $2;
14714 var close = $5;
14715 $0 = $0.slice(1);
14716 if (open[1] !== close[2])
14717 return $skip;
14718 return { type: "JSXElement", children: $0, tag: open[1] };
14719});
14720var JSXElement$$ = [JSXElement$0, JSXElement$1, JSXElement$2];
14721function JSXElement(ctx, state2) {
14722 return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXElement", JSXElement$$);
14723}
14724var JSXSelfClosingElement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L19, 'JSXSelfClosingElement "<"'), JSXElementName, (0, import_lib3.$E)(TypeArguments), (0, import_lib3.$E)(JSXAttributes), (0, import_lib3.$E)(Whitespace), (0, import_lib3.$EXPECT)($L212, 'JSXSelfClosingElement "/>"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
14725 return { type: "JSXElement", children: $0, tag: $2 };
14726});
14727function JSXSelfClosingElement(ctx, state2) {
14728 return (0, import_lib3.$EVENT)(ctx, state2, "JSXSelfClosingElement", JSXSelfClosingElement$0);
14729}
14730var PushJSXOpeningElement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(JSXOpeningElement), function($skip, $loc, $0, $1) {
14731 state.JSXTagStack.push($1[1]);
14732 return $1;
14733});
14734function PushJSXOpeningElement(ctx, state2) {
14735 return (0, import_lib3.$EVENT)(ctx, state2, "PushJSXOpeningElement", PushJSXOpeningElement$0);
14736}
14737var PopJSXStack$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'PopJSXStack ""'), function($skip, $loc, $0, $1) {
14738 state.JSXTagStack.pop();
14739});
14740function PopJSXStack(ctx, state2) {
14741 return (0, import_lib3.$EVENT)(ctx, state2, "PopJSXStack", PopJSXStack$0);
14742}
14743var JSXOpeningElement$0 = (0, import_lib3.$S)((0, import_lib3.$EXPECT)($L19, 'JSXOpeningElement "<"'), JSXElementName, (0, import_lib3.$E)(TypeArguments), (0, import_lib3.$E)(JSXAttributes), (0, import_lib3.$E)(Whitespace), (0, import_lib3.$EXPECT)($L44, 'JSXOpeningElement ">"'));
14744function JSXOpeningElement(ctx, state2) {
14745 return (0, import_lib3.$EVENT)(ctx, state2, "JSXOpeningElement", JSXOpeningElement$0);
14746}
14747var JSXOptionalClosingElement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(Whitespace), JSXClosingElement), function($skip, $loc, $0, $1, $2) {
14748 var close = $2;
14749 if (state.currentJSXTag !== close[2])
14750 return $skip;
14751 return $0;
14752});
14753var JSXOptionalClosingElement$1 = (0, import_lib3.$EXPECT)($L0, 'JSXOptionalClosingElement ""');
14754var JSXOptionalClosingElement$$ = [JSXOptionalClosingElement$0, JSXOptionalClosingElement$1];
14755function JSXOptionalClosingElement(ctx, state2) {
14756 return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXOptionalClosingElement", JSXOptionalClosingElement$$);
14757}
14758var JSXClosingElement$0 = (0, import_lib3.$S)((0, import_lib3.$EXPECT)($L213, 'JSXClosingElement "</"'), (0, import_lib3.$E)(Whitespace), JSXElementName, (0, import_lib3.$E)(Whitespace), (0, import_lib3.$EXPECT)($L44, 'JSXClosingElement ">"'));
14759function JSXClosingElement(ctx, state2) {
14760 return (0, import_lib3.$EVENT)(ctx, state2, "JSXClosingElement", JSXClosingElement$0);
14761}
14762var JSXFragment$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)(CoffeeJSXEnabled), PushJSXOpeningFragment, (0, import_lib3.$E)(JSXMixedChildren), JSXOptionalClosingFragment, PopJSXStack), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
14763 var open = $2;
14764 var children = $3;
14765 var close = $4;
14766 if (!children)
14767 return $skip;
14768 $0 = $0.slice(1);
14769 const parts = close ? $0 : [
14770 ...$0,
14771 "\n",
14772 // InsertNewline
14773 state.currentIndent.token,
14774 // InsertIndent
14775 "</>"
14776 ];
14777 return { type: "JSXFragment", children: parts, jsxChildren: children.jsxChildren };
14778});
14779var JSXFragment$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(CoffeeJSXEnabled, (0, import_lib3.$EXPECT)($L214, 'JSXFragment "<>"'), (0, import_lib3.$E)(JSXChildren), (0, import_lib3.$E)(Whitespace), JSXClosingFragment), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
14780 var children = $3;
14781 $0 = $0.slice(1);
14782 return {
14783 type: "JSXFragment",
14784 children: $0,
14785 jsxChildren: children ? children.jsxChildren : []
14786 };
14787});
14788var JSXFragment$$ = [JSXFragment$0, JSXFragment$1];
14789function JSXFragment(ctx, state2) {
14790 return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXFragment", JSXFragment$$);
14791}
14792var PushJSXOpeningFragment$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L214, 'PushJSXOpeningFragment "<>"'), function($skip, $loc, $0, $1) {
14793 state.JSXTagStack.push("");
14794 return $1;
14795});
14796function PushJSXOpeningFragment(ctx, state2) {
14797 return (0, import_lib3.$EVENT)(ctx, state2, "PushJSXOpeningFragment", PushJSXOpeningFragment$0);
14798}
14799var JSXOptionalClosingFragment$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(Whitespace), JSXClosingFragment), function($skip, $loc, $0, $1, $2) {
14800 if (state.currentJSXTag !== "")
14801 return $skip;
14802 return $0;
14803});
14804var JSXOptionalClosingFragment$1 = (0, import_lib3.$EXPECT)($L0, 'JSXOptionalClosingFragment ""');
14805var JSXOptionalClosingFragment$$ = [JSXOptionalClosingFragment$0, JSXOptionalClosingFragment$1];
14806function JSXOptionalClosingFragment(ctx, state2) {
14807 return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXOptionalClosingFragment", JSXOptionalClosingFragment$$);
14808}
14809var JSXClosingFragment$0 = (0, import_lib3.$EXPECT)($L215, 'JSXClosingFragment "</>"');
14810function JSXClosingFragment(ctx, state2) {
14811 return (0, import_lib3.$EVENT)(ctx, state2, "JSXClosingFragment", JSXClosingFragment$0);
14812}
14813var JSXElementName$0 = (0, import_lib3.$TV)((0, import_lib3.$Y)((0, import_lib3.$S)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L160, 'JSXElementName "\#"'), Dot), JSXShorthandString)), function($skip, $loc, $0, $1) {
14814 return config.defaultElement;
14815});
14816var JSXElementName$1 = (0, import_lib3.$TEXT)((0, import_lib3.$S)(JSXIdentifierName, (0, import_lib3.$C)((0, import_lib3.$S)(Colon, JSXIdentifierName), (0, import_lib3.$Q)((0, import_lib3.$S)(Dot, JSXIdentifierName)))));
14817var JSXElementName$$ = [JSXElementName$0, JSXElementName$1];
14818function JSXElementName(ctx, state2) {
14819 return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXElementName", JSXElementName$$);
14820}
14821var JSXIdentifierName$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R75, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
14822function JSXIdentifierName(ctx, state2) {
14823 return (0, import_lib3.$EVENT)(ctx, state2, "JSXIdentifierName", JSXIdentifierName$0);
14824}
14825var JSXAttributes$0 = (0, import_lib3.$TV)((0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$E)(Whitespace), JSXAttribute)), function($skip, $loc, $0, $1) {
14826 const classes = [];
14827 let attrs = $0.filter((pair) => {
14828 const [, attr] = pair;
14829 if (attr.type === "JSXClass") {
14830 classes.push(attr.class);
14831 return false;
14832 }
14833 return true;
14834 });
14835 if (classes.length) {
14836 let isBraced2 = function(c) {
14837 return c[0] === "{" || c[0]?.token === "{";
14838 }, unbrace2 = function(c) {
14839 return c.slice(1, -1);
14840 }, parseClass2 = function(c) {
14841 c = c.token || c;
14842 if (c.startsWith("'")) {
14843 c = '"' + c.slice(1, -1).replace(/\\*"/g, (m) => m.length % 2 == 0 ? m : "\\" + m) + '"';
14844 }
14845 return JSON.parse(c);
14846 };
14847 var isBraced = isBraced2, unbrace = unbrace2, parseClass = parseClass2;
14848 let className = config.react ? "className" : "class";
14849 attrs = attrs.filter((pair) => {
14850 const [, attr] = pair;
14851 if ((attr[0][0] === "class" || attr[0][0] === "className") && !attr[0][1]) {
14852 className = attr[0][0];
14853 classes.push(attr[1][attr[1].length - 1]);
14854 return false;
14855 }
14856 return true;
14857 });
14858 const strings = [], exprs = [];
14859 classes.forEach((c) => {
14860 if (isBraced2(c)) {
14861 exprs.push(unbrace2(c));
14862 exprs.push(", ");
14863 } else {
14864 strings.push(parseClass2(c));
14865 }
14866 });
14867 const stringPart = strings.filter(Boolean).join(" ");
14868 let classValue;
14869 if (exprs.length) {
14870 exprs.pop();
14871 if (stringPart) {
14872 exprs.unshift(JSON.stringify(stringPart), ", ");
14873 }
14874 if (exprs.length === 1) {
14875 let root = exprs[0];
14876 while (root.length && isWhitespaceOrEmpty(root[root.length - 1])) {
14877 root = root.slice(0, -1);
14878 }
14879 while (root?.length === 1)
14880 root = root[0];
14881 if (root?.children)
14882 root = root.children;
14883 if (root?.[0]?.token === "`") {
14884 classValue = ["{", ...exprs, "}"];
14885 } else {
14886 classValue = ["{(", ...exprs, ') || ""}'];
14887 }
14888 } else {
14889 classValue = ["{[", ...exprs, '].filter(Boolean).join(" ")}'];
14890 }
14891 } else {
14892 if (!stringPart.includes("&") && !stringPart.includes('"')) {
14893 classValue = `"${stringPart}"`;
14894 } else if (!stringPart.includes("&") && !stringPart.includes("'")) {
14895 classValue = `'${stringPart}'`;
14896 } else {
14897 classValue = `{${JSON.stringify(stringPart)}}`;
14898 }
14899 }
14900 attrs.splice(0, 0, [" ", [className, ["=", classValue]]]);
14901 }
14902 return attrs.map((pair) => {
14903 const [space, attr] = pair;
14904 if (space && attr[0] === " ") {
14905 pair = [space, attr.slice(1)];
14906 }
14907 return pair;
14908 });
14909});
14910function JSXAttributes(ctx, state2) {
14911 return (0, import_lib3.$EVENT)(ctx, state2, "JSXAttributes", JSXAttributes$0);
14912}
14913var JSXAttribute$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(BracedObjectLiteral), function($skip, $loc, $0, $1) {
14914 return convertObjectToJSXAttributes($1);
14915});
14916var JSXAttribute$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(JSXAttributeName, (0, import_lib3.$C)(JSXAttributeInitializer, (0, import_lib3.$Y)(JSXAttributeSpace))), function($skip, $loc, $0, $1, $2) {
14917 var name = $1;
14918 var value = $2;
14919 if (name.type === "ComputedPropertyName") {
14920 if (value) {
14921 value = value[value.length - 1];
14922 if (value[0]?.token === "{" && value[value.length - 1]?.token === "}") {
14923 value = value.slice(1, -1);
14924 }
14925 } else {
14926 value = "true";
14927 }
14928 return ["{...{", name, ": ", value, "}}"];
14929 } else {
14930 return $0;
14931 }
14932});
14933var JSXAttribute$2 = (0, import_lib3.$S)(InsertInlineOpenBrace, DotDotDot, InlineJSXAttributeValue, InsertCloseBrace, (0, import_lib3.$Y)(JSXAttributeSpace));
14934var JSXAttribute$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(AtThis, (0, import_lib3.$E)(Identifier), (0, import_lib3.$Q)(InlineJSXCallExpressionRest), (0, import_lib3.$Y)(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3, $4) {
14935 var at = $1;
14936 var id = $2;
14937 var rest = $3;
14938 const access = id && {
14939 type: "PropertyAccess",
14940 children: [".", id],
14941 name: id
14942 };
14943 const expr = processCallMemberExpression({
14944 type: "CallExpression",
14945 children: [at, access, ...rest.flat()]
14946 });
14947 const last = lastAccessInCallExpression(expr);
14948 if (!last)
14949 return $skip;
14950 let name;
14951 if (last.type === "Index") {
14952 return [
14953 "{...{",
14954 { ...last, type: "ComputedPropertyName" },
14955 ": ",
14956 expr,
14957 "}}"
14958 ];
14959 } else if (last.name) {
14960 return [last.name, "={", expr, "}"];
14961 }
14962 return $skip;
14963});
14964var JSXAttribute$4 = (0, import_lib3.$TS)((0, import_lib3.$S)(Identifier, (0, import_lib3.$P)(InlineJSXCallExpressionRest), (0, import_lib3.$Y)(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
14965 var id = $1;
14966 var rest = $2;
14967 const expr = processCallMemberExpression({
14968 type: "CallExpression",
14969 children: [id, ...rest.flat()]
14970 });
14971 if (expr.type === "ObjectExpression") {
14972 return convertObjectToJSXAttributes(expr);
14973 }
14974 const last = lastAccessInCallExpression(expr);
14975 if (!last)
14976 return $skip;
14977 let name;
14978 if (last.type === "Index") {
14979 return [
14980 "{...{",
14981 { ...last, type: "ComputedPropertyName" },
14982 ": ",
14983 expr,
14984 "}}"
14985 ];
14986 } else if (last.name) {
14987 return [last.name, "={", expr, "}"];
14988 }
14989 return $skip;
14990});
14991var JSXAttribute$5 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L160, 'JSXAttribute "\#"'), JSXShorthandString), function($skip, $loc, $0, $1, $2) {
14992 return [" ", "id=", $2];
14993});
14994var JSXAttribute$6 = (0, import_lib3.$TS)((0, import_lib3.$S)(Dot, JSXShorthandString), function($skip, $loc, $0, $1, $2) {
14995 return {
14996 type: "JSXClass",
14997 class: $2
14998 };
14999});
15000var JSXAttribute$7 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$TEXT)((0, import_lib3.$EXPECT)($R76, "JSXAttribute /[!+-]/")), JSXAttributeName, (0, import_lib3.$Y)(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
15001 var toggle = $1;
15002 var id = $2;
15003 const value = toggle === "+" ? "true" : "false";
15004 return [" ", id, "={", value, "}"];
15005});
15006var JSXAttribute$$ = [JSXAttribute$0, JSXAttribute$1, JSXAttribute$2, JSXAttribute$3, JSXAttribute$4, JSXAttribute$5, JSXAttribute$6, JSXAttribute$7];
15007function JSXAttribute(ctx, state2) {
15008 return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXAttribute", JSXAttribute$$);
15009}
15010var JSXAttributeSpace$0 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R77, "JSXAttributeSpace /[\\s>]|\\/>/"));
15011function JSXAttributeSpace(ctx, state2) {
15012 return (0, import_lib3.$EVENT)(ctx, state2, "JSXAttributeSpace", JSXAttributeSpace$0);
15013}
15014var JSXShorthandString$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R78, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15015 return quoteString($0);
15016});
15017var JSXShorthandString$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(TemplateLiteral), function($skip, $loc, $0, $1) {
15018 return ["{", $1, "}"];
15019});
15020var JSXShorthandString$2 = StringLiteral;
15021var JSXShorthandString$3 = (0, import_lib3.$S)(OpenBrace, PostfixedExpression, (0, import_lib3.$E)(Whitespace), CloseBrace);
15022var JSXShorthandString$$ = [JSXShorthandString$0, JSXShorthandString$1, JSXShorthandString$2, JSXShorthandString$3];
15023function JSXShorthandString(ctx, state2) {
15024 return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXShorthandString", JSXShorthandString$$);
15025}
15026var JSXAttributeName$0 = (0, import_lib3.$S)(JSXIdentifierName, (0, import_lib3.$E)((0, import_lib3.$S)(Colon, JSXIdentifierName)));
15027var JSXAttributeName$1 = ComputedPropertyName;
15028var JSXAttributeName$$ = [JSXAttributeName$0, JSXAttributeName$1];
15029function JSXAttributeName(ctx, state2) {
15030 return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXAttributeName", JSXAttributeName$$);
15031}
15032var JSXAttributeInitializer$0 = (0, import_lib3.$S)((0, import_lib3.$E)(Whitespace), Equals, (0, import_lib3.$E)(Whitespace), JSXAttributeValue);
15033function JSXAttributeInitializer(ctx, state2) {
15034 return (0, import_lib3.$EVENT)(ctx, state2, "JSXAttributeInitializer", JSXAttributeInitializer$0);
15035}
15036var JSXAttributeValue$0 = (0, import_lib3.$S)(OpenBrace, PostfixedExpression, (0, import_lib3.$E)(Whitespace), CloseBrace);
15037var JSXAttributeValue$1 = JSXElement;
15038var JSXAttributeValue$2 = JSXFragment;
15039var JSXAttributeValue$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertInlineOpenBrace, InlineJSXAttributeValue, InsertCloseBrace, (0, import_lib3.$Y)(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3, $4) {
15040 var open = $1;
15041 var value = $2;
15042 var close = $3;
15043 if (value.type === "StringLiteral") {
15044 return $skip;
15045 }
15046 return [open, value, close];
15047});
15048var JSXAttributeValue$4 = (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R79, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
15049var JSXAttributeValue$$ = [JSXAttributeValue$0, JSXAttributeValue$1, JSXAttributeValue$2, JSXAttributeValue$3, JSXAttributeValue$4];
15050function JSXAttributeValue(ctx, state2) {
15051 return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXAttributeValue", JSXAttributeValue$$);
15052}
15053var InlineJSXAttributeValue$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(InlineJSXUnaryExpression, (0, import_lib3.$Q)(InlineJSXBinaryOpRHS)), function($skip, $loc, $0, $1, $2) {
15054 if ($2.length)
15055 return processBinaryOpExpression($0);
15056 return $1;
15057});
15058function InlineJSXAttributeValue(ctx, state2) {
15059 return (0, import_lib3.$EVENT)(ctx, state2, "InlineJSXAttributeValue", InlineJSXAttributeValue$0);
15060}
15061var InlineJSXBinaryOpRHS$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$N)((0, import_lib3.$EXPECT)($R80, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
15062 var op = $2;
15063 var rhs = $3;
15064 return [[], op, [], rhs];
15065});
15066function InlineJSXBinaryOpRHS(ctx, state2) {
15067 return (0, import_lib3.$EVENT)(ctx, state2, "InlineJSXBinaryOpRHS", InlineJSXBinaryOpRHS$0);
15068}
15069var InlineJSXUnaryExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)(InlineJSXUnaryOp), InlineJSXUpdateExpression, (0, import_lib3.$E)(InlineJSXUnaryPostfix)), function($skip, $loc, $0, $1, $2, $3) {
15070 var pre = $1;
15071 var exp = $2;
15072 var post = $3;
15073 return processUnaryExpression(pre, exp, post);
15074});
15075function InlineJSXUnaryExpression(ctx, state2) {
15076 return (0, import_lib3.$EVENT)(ctx, state2, "InlineJSXUnaryExpression", InlineJSXUnaryExpression$0);
15077}
15078var InlineJSXUnaryOp$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R81, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15079 return { $loc, token: $0 };
15080});
15081function InlineJSXUnaryOp(ctx, state2) {
15082 return (0, import_lib3.$EVENT)(ctx, state2, "InlineJSXUnaryOp", InlineJSXUnaryOp$0);
15083}
15084var InlineJSXUnaryPostfix$0 = QuestionMark;
15085function InlineJSXUnaryPostfix(ctx, state2) {
15086 return (0, import_lib3.$EVENT)(ctx, state2, "InlineJSXUnaryPostfix", InlineJSXUnaryPostfix$0);
15087}
15088var InlineJSXUpdateExpression$0 = (0, import_lib3.$S)(UpdateExpressionSymbol, UnaryExpression);
15089var InlineJSXUpdateExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InlineJSXCallExpression, (0, import_lib3.$E)(UpdateExpressionSymbol)), function($skip, $loc, $0, $1, $2) {
15090 if ($2)
15091 return $0;
15092 return $1;
15093});
15094var InlineJSXUpdateExpression$$ = [InlineJSXUpdateExpression$0, InlineJSXUpdateExpression$1];
15095function InlineJSXUpdateExpression(ctx, state2) {
15096 return (0, import_lib3.$EVENT_C)(ctx, state2, "InlineJSXUpdateExpression", InlineJSXUpdateExpression$$);
15097}
15098var InlineJSXCallExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Super, ExplicitArguments, (0, import_lib3.$Q)(InlineJSXCallExpressionRest)), function($skip, $loc, $0, $1, $2, $3) {
15099 var args = $2;
15100 var rest = $3;
15101 return processCallMemberExpression({
15102 type: "CallExpression",
15103 children: [
15104 $1,
15105 args,
15106 ...rest.flat()
15107 ]
15108 });
15109});
15110var InlineJSXCallExpression$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L15, 'InlineJSXCallExpression "import"'), ExplicitArguments, (0, import_lib3.$Q)(InlineJSXCallExpressionRest)), function($skip, $loc, $0, $1, $2, $3) {
15111 var args = $2;
15112 var rest = $3;
15113 return processCallMemberExpression({
15114 type: "CallExpression",
15115 children: [
15116 $1,
15117 args,
15118 ...rest.flat()
15119 ]
15120 });
15121});
15122var InlineJSXCallExpression$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(InlineJSXMemberExpression, (0, import_lib3.$Q)(InlineJSXCallExpressionRest)), function($skip, $loc, $0, $1, $2) {
15123 var member = $1;
15124 var rest = $2;
15125 if (rest.length) {
15126 rest = rest.flat();
15127 return processCallMemberExpression({
15128 type: "CallExpression",
15129 children: [member, ...rest]
15130 });
15131 }
15132 return member;
15133});
15134var InlineJSXCallExpression$$ = [InlineJSXCallExpression$0, InlineJSXCallExpression$1, InlineJSXCallExpression$2];
15135function InlineJSXCallExpression(ctx, state2) {
15136 return (0, import_lib3.$EVENT_C)(ctx, state2, "InlineJSXCallExpression", InlineJSXCallExpression$$);
15137}
15138var InlineJSXCallExpressionRest$0 = InlineJSXMemberExpressionRest;
15139var InlineJSXCallExpressionRest$1 = (0, import_lib3.$TV)((0, import_lib3.$C)(TemplateLiteral, StringLiteral), function($skip, $loc, $0, $1) {
15140 if ($1.type === "StringLiteral") {
15141 return "`" + $1.token.slice(1, -1).replace(/(`|\$\{)/g, "\\$1") + "`";
15142 }
15143 return $1;
15144});
15145var InlineJSXCallExpressionRest$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(OptionalShorthand), ExplicitArguments), function($skip, $loc, $0, $1, $2) {
15146 var args = $2;
15147 if (!$1)
15148 return args;
15149 return [$1, args];
15150});
15151var InlineJSXCallExpressionRest$$ = [InlineJSXCallExpressionRest$0, InlineJSXCallExpressionRest$1, InlineJSXCallExpressionRest$2];
15152function InlineJSXCallExpressionRest(ctx, state2) {
15153 return (0, import_lib3.$EVENT_C)(ctx, state2, "InlineJSXCallExpressionRest", InlineJSXCallExpressionRest$$);
15154}
15155var InlineJSXMemberExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$C)(InlineJSXPrimaryExpression, SuperProperty, MetaProperty), (0, import_lib3.$Q)(InlineJSXMemberExpressionRest)), function($skip, $loc, $0, $1, $2) {
15156 var rest = $2;
15157 if (rest.length || Array.isArray($1)) {
15158 return processCallMemberExpression({
15159 type: "MemberExpression",
15160 children: [$1, ...rest].flat()
15161 });
15162 }
15163 return $1;
15164});
15165function InlineJSXMemberExpression(ctx, state2) {
15166 return (0, import_lib3.$EVENT)(ctx, state2, "InlineJSXMemberExpression", InlineJSXMemberExpression$0);
15167}
15168var InlineJSXMemberExpressionRest$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(OptionalShorthand), (0, import_lib3.$Q)(InlineComment), MemberBracketContent), function($skip, $loc, $0, $1, $2, $3) {
15169 var dot = $1;
15170 var comments = $2;
15171 var content = $3;
15172 if (!dot && !comments.length)
15173 return content;
15174 if (dot) {
15175 if (dot.type === "Optional" && content.type === "SliceExpression") {
15176 return [...dot.children.slice(0, -1), ...comments, content];
15177 }
15178 return [dot, ...comments, content];
15179 }
15180 return [...comments, content];
15181});
15182var InlineJSXMemberExpressionRest$1 = PropertyAccess;
15183var InlineJSXMemberExpressionRest$2 = PropertyGlob;
15184var InlineJSXMemberExpressionRest$3 = PropertyBind;
15185var InlineJSXMemberExpressionRest$4 = NonNullAssertion;
15186var InlineJSXMemberExpressionRest$$ = [InlineJSXMemberExpressionRest$0, InlineJSXMemberExpressionRest$1, InlineJSXMemberExpressionRest$2, InlineJSXMemberExpressionRest$3, InlineJSXMemberExpressionRest$4];
15187function InlineJSXMemberExpressionRest(ctx, state2) {
15188 return (0, import_lib3.$EVENT_C)(ctx, state2, "InlineJSXMemberExpressionRest", InlineJSXMemberExpressionRest$$);
15189}
15190var InlineJSXPrimaryExpression$0 = NullLiteral;
15191var InlineJSXPrimaryExpression$1 = BooleanLiteral;
15192var InlineJSXPrimaryExpression$2 = NumericLiteral;
15193var InlineJSXPrimaryExpression$3 = TemplateLiteral;
15194var InlineJSXPrimaryExpression$4 = ThisLiteral;
15195var InlineJSXPrimaryExpression$5 = ArrayLiteral;
15196var InlineJSXPrimaryExpression$6 = BracedObjectLiteral;
15197var InlineJSXPrimaryExpression$7 = IdentifierReference;
15198var InlineJSXPrimaryExpression$8 = RegularExpressionLiteral;
15199var InlineJSXPrimaryExpression$9 = ParenthesizedExpression;
15200var InlineJSXPrimaryExpression$$ = [InlineJSXPrimaryExpression$0, InlineJSXPrimaryExpression$1, InlineJSXPrimaryExpression$2, InlineJSXPrimaryExpression$3, InlineJSXPrimaryExpression$4, InlineJSXPrimaryExpression$5, InlineJSXPrimaryExpression$6, InlineJSXPrimaryExpression$7, InlineJSXPrimaryExpression$8, InlineJSXPrimaryExpression$9];
15201function InlineJSXPrimaryExpression(ctx, state2) {
15202 return (0, import_lib3.$EVENT_C)(ctx, state2, "InlineJSXPrimaryExpression", InlineJSXPrimaryExpression$$);
15203}
15204var JSXMixedChildren$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)(JSXChild), JSXNestedChildren), function($skip, $loc, $0, $1, $2) {
15205 var c1 = $1;
15206 var c2 = $2;
15207 return {
15208 children: c1.concat(c2),
15209 jsxChildren: c1.concat(c2.jsxChildren)
15210 };
15211});
15212function JSXMixedChildren(ctx, state2) {
15213 return (0, import_lib3.$EVENT)(ctx, state2, "JSXMixedChildren", JSXMixedChildren$0);
15214}
15215var JSXChildren$0 = (0, import_lib3.$TV)((0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$E)(NonNewlineWhitespace), EOL, (0, import_lib3.$E)(NonNewlineWhitespace))), JSXChild)), function($skip, $loc, $0, $1) {
15216 return {
15217 children: $1,
15218 jsxChildren: $1.map((children) => children[1])
15219 };
15220});
15221function JSXChildren(ctx, state2) {
15222 return (0, import_lib3.$EVENT)(ctx, state2, "JSXChildren", JSXChildren$0);
15223}
15224var JSXNestedChildren$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)((0, import_lib3.$S)(JSXNested, (0, import_lib3.$P)(JSXChild))), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
15225 if ($2.length) {
15226 return {
15227 children: $2,
15228 jsxChildren: [].concat(...$2.map((nestedChildren) => nestedChildren[1]))
15229 };
15230 }
15231 return $skip;
15232});
15233var JSXNestedChildren$1 = (0, import_lib3.$TV)((0, import_lib3.$Y)((0, import_lib3.$C)(JSXEOS, (0, import_lib3.$EXPECT)($L36, 'JSXNestedChildren "}"'), JSXClosingElement, JSXClosingFragment)), function($skip, $loc, $0, $1) {
15234 return { children: [], jsxChildren: [] };
15235});
15236var JSXNestedChildren$$ = [JSXNestedChildren$0, JSXNestedChildren$1];
15237function JSXNestedChildren(ctx, state2) {
15238 return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXNestedChildren", JSXNestedChildren$$);
15239}
15240var JSXEOS$0 = (0, import_lib3.$P)((0, import_lib3.$S)((0, import_lib3.$E)(NonNewlineWhitespace), EOL));
15241function JSXEOS(ctx, state2) {
15242 return (0, import_lib3.$EVENT)(ctx, state2, "JSXEOS", JSXEOS$0);
15243}
15244var JSXNested$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(JSXEOS, Indent), function($skip, $loc, $0, $1, $2) {
15245 var eos = $1;
15246 var indent = $2;
15247 const { level } = indent;
15248 const currentIndent = state.currentIndent;
15249 if (level !== currentIndent.level)
15250 return $skip;
15251 return $0;
15252});
15253function JSXNested(ctx, state2) {
15254 return (0, import_lib3.$EVENT)(ctx, state2, "JSXNested", JSXNested$0);
15255}
15256var JSXChild$0 = JSXElement;
15257var JSXChild$1 = JSXFragment;
15258var JSXChild$2 = JSXComment;
15259var JSXChild$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBrace, IndentedJSXChildExpression, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
15260 var expression = $2;
15261 return {
15262 type: "JSXChildExpression",
15263 children: $0,
15264 expression
15265 };
15266});
15267var JSXChild$4 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBrace, (0, import_lib3.$E)(JSXChildExpression), __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
15268 var expression = $2;
15269 return {
15270 type: "JSXChildExpression",
15271 children: $0,
15272 expression
15273 };
15274});
15275var JSXChild$5 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertInlineOpenBrace, ArrowFunction, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3) {
15276 var expression = $2;
15277 return {
15278 type: "JSXChildExpression",
15279 children: $0,
15280 expression
15281 };
15282});
15283var JSXChild$6 = JSXText;
15284var JSXChild$$ = [JSXChild$0, JSXChild$1, JSXChild$2, JSXChild$3, JSXChild$4, JSXChild$5, JSXChild$6];
15285function JSXChild(ctx, state2) {
15286 return (0, import_lib3.$EVENT_C)(ctx, state2, "JSXChild", JSXChild$$);
15287}
15288var JSXComment$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L216, 'JSXComment "<!--"'), JSXCommentContent, (0, import_lib3.$EXPECT)($L217, 'JSXComment "-->"')), function($skip, $loc, $0, $1, $2, $3) {
15289 return ["{/*", $2, "*/}"];
15290});
15291function JSXComment(ctx, state2) {
15292 return (0, import_lib3.$EVENT)(ctx, state2, "JSXComment", JSXComment$0);
15293}
15294var JSXCommentContent$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R82, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15295 return { $loc, token: $0.replace(/\*\//g, "* /") };
15296});
15297function JSXCommentContent(ctx, state2) {
15298 return (0, import_lib3.$EVENT)(ctx, state2, "JSXCommentContent", JSXCommentContent$0);
15299}
15300var JSXText$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R83, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15301 return {
15302 type: "JSXText",
15303 token: $0,
15304 $loc
15305 };
15306});
15307function JSXText(ctx, state2) {
15308 return (0, import_lib3.$EVENT)(ctx, state2, "JSXText", JSXText$0);
15309}
15310var JSXChildExpression$0 = (0, import_lib3.$S)((0, import_lib3.$E)(Whitespace), (0, import_lib3.$E)((0, import_lib3.$S)(DotDotDot, (0, import_lib3.$E)(Whitespace))), PostfixedExpression);
15311function JSXChildExpression(ctx, state2) {
15312 return (0, import_lib3.$EVENT)(ctx, state2, "JSXChildExpression", JSXChildExpression$0);
15313}
15314var IndentedJSXChildExpression$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$E)(NestedJSXChildExpression), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
15315 if (!$2)
15316 return $skip;
15317 return $2;
15318});
15319function IndentedJSXChildExpression(ctx, state2) {
15320 return (0, import_lib3.$EVENT)(ctx, state2, "IndentedJSXChildExpression", IndentedJSXChildExpression$0);
15321}
15322var NestedJSXChildExpression$0 = (0, import_lib3.$S)(JSXNested, JSXChildExpression);
15323function NestedJSXChildExpression(ctx, state2) {
15324 return (0, import_lib3.$EVENT)(ctx, state2, "NestedJSXChildExpression", NestedJSXChildExpression$0);
15325}
15326var UsingDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Using, (0, import_lib3.$E)(_), UsingBinding, (0, import_lib3.$Q)((0, import_lib3.$S)(__, Comma, __, UsingBinding)), UsingJSModeError), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
15327 var decl = $1;
15328 var binding = $3;
15329 var tail = $4;
15330 const bindings = [binding].concat(tail.map(([, , , b]) => b));
15331 return {
15332 type: "Declaration",
15333 children: $0,
15334 names: bindings.flatMap((b) => b.names),
15335 bindings,
15336 decl,
15337 splices: bindings.flatMap((b) => b.splices),
15338 thisAssignments: bindings.flatMap((b) => b.thisAssignments)
15339 };
15340});
15341function UsingDeclaration(ctx, state2) {
15342 return (0, import_lib3.$EVENT)(ctx, state2, "UsingDeclaration", UsingDeclaration$0);
15343}
15344var UsingBinding$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(BindingIdentifier, (0, import_lib3.$E)(TypeSuffix), Initializer), function($skip, $loc, $0, $1, $2, $3) {
15345 var pattern = $1;
15346 var suffix = $2;
15347 var initializer = $3;
15348 return {
15349 type: "Binding",
15350 children: $0,
15351 names: pattern.names,
15352 pattern,
15353 suffix,
15354 initializer,
15355 splices: [],
15356 thisAssignments: []
15357 };
15358});
15359function UsingBinding(ctx, state2) {
15360 return (0, import_lib3.$EVENT)(ctx, state2, "UsingBinding", UsingBinding$0);
15361}
15362var UsingJSModeError$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'UsingJSModeError ""'), function($skip, $loc, $0, $1) {
15363 return {
15364 type: "Error",
15365 js: true,
15366 message: "`using` is not currently transpiled in JS mode."
15367 };
15368});
15369function UsingJSModeError(ctx, state2) {
15370 return (0, import_lib3.$EVENT)(ctx, state2, "UsingJSModeError", UsingJSModeError$0);
15371}
15372var TypeDeclaration$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Export, (0, import_lib3.$E)(_))), (0, import_lib3.$S)(Declare, (0, import_lib3.$E)(_)), TypeLexicalDeclaration), function(value) {
15373 return { "ts": true, "children": value };
15374});
15375var TypeDeclaration$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Export, (0, import_lib3.$E)(_))), (0, import_lib3.$E)((0, import_lib3.$S)(Declare, (0, import_lib3.$E)(_))), TypeDeclarationRest), function($skip, $loc, $0, $1, $2, $3) {
15376 var export_ = $1;
15377 var declare = $2;
15378 var t = $3;
15379 return {
15380 ...t,
15381 ts: true,
15382 export: export_,
15383 declare,
15384 children: [export_, declare, ...t.children]
15385 };
15386});
15387var TypeDeclaration$$ = [TypeDeclaration$0, TypeDeclaration$1];
15388function TypeDeclaration(ctx, state2) {
15389 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeDeclaration", TypeDeclaration$$);
15390}
15391var TypeDeclarationRest$0 = TypeAliasDeclaration;
15392var TypeDeclarationRest$1 = InterfaceDeclaration;
15393var TypeDeclarationRest$2 = NamespaceDeclaration;
15394var TypeDeclarationRest$3 = FunctionSignature;
15395var TypeDeclarationRest$$ = [TypeDeclarationRest$0, TypeDeclarationRest$1, TypeDeclarationRest$2, TypeDeclarationRest$3];
15396function TypeDeclarationRest(ctx, state2) {
15397 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeDeclarationRest", TypeDeclarationRest$$);
15398}
15399var TypeAliasDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(TypeKeyword, (0, import_lib3.$E)(_), IdentifierName, (0, import_lib3.$E)(TypeParameters), OptionalEquals, (0, import_lib3.$C)(MaybeNestedType, (0, import_lib3.$S)(__, Type))), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
15400 var id = $3;
15401 return {
15402 type: "TypeDeclaration",
15403 id,
15404 children: $0,
15405 ts: true
15406 };
15407});
15408var TypeAliasDeclaration$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertType, IdentifierName, (0, import_lib3.$E)(TypeParameters), __, TypeAssignment, (0, import_lib3.$C)(MaybeNestedType, (0, import_lib3.$S)(__, Type))), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
15409 var id = $2;
15410 return {
15411 type: "TypeDeclaration",
15412 id,
15413 children: $0,
15414 ts: true
15415 };
15416});
15417var TypeAliasDeclaration$$ = [TypeAliasDeclaration$0, TypeAliasDeclaration$1];
15418function TypeAliasDeclaration(ctx, state2) {
15419 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeAliasDeclaration", TypeAliasDeclaration$$);
15420}
15421var InterfaceDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Interface, (0, import_lib3.$E)(_), IdentifierName, (0, import_lib3.$E)(TypeParameters), (0, import_lib3.$E)(InterfaceExtendsClause), InterfaceBlock), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
15422 var id = $3;
15423 return {
15424 type: "InterfaceDeclaration",
15425 id,
15426 children: $0,
15427 ts: true
15428 };
15429});
15430function InterfaceDeclaration(ctx, state2) {
15431 return (0, import_lib3.$EVENT)(ctx, state2, "InterfaceDeclaration", InterfaceDeclaration$0);
15432}
15433var NamespaceDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Namespace, (0, import_lib3.$E)(_), IdentifierName, ModuleBlock), function($skip, $loc, $0, $1, $2, $3, $4) {
15434 var id = $3;
15435 return {
15436 type: "NamespaceDeclaration",
15437 id,
15438 children: $0,
15439 ts: true
15440 };
15441});
15442function NamespaceDeclaration(ctx, state2) {
15443 return (0, import_lib3.$EVENT)(ctx, state2, "NamespaceDeclaration", NamespaceDeclaration$0);
15444}
15445var OptionalEquals$0 = (0, import_lib3.$S)(__, Equals);
15446var OptionalEquals$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$Y)(IndentedFurther), InsertSpaceEquals), function(value) {
15447 return value[1];
15448});
15449var OptionalEquals$$ = [OptionalEquals$0, OptionalEquals$1];
15450function OptionalEquals(ctx, state2) {
15451 return (0, import_lib3.$EVENT_C)(ctx, state2, "OptionalEquals", OptionalEquals$$);
15452}
15453var TypeLexicalDeclaration$0 = (0, import_lib3.$S)(__, LetOrConstOrVar, TypeDeclarationBinding, (0, import_lib3.$Q)((0, import_lib3.$S)(CommaDelimiter, __, TypeDeclarationBinding)));
15454var TypeLexicalDeclaration$1 = (0, import_lib3.$S)(__, EnumDeclaration);
15455var TypeLexicalDeclaration$2 = ClassSignature;
15456var TypeLexicalDeclaration$3 = (0, import_lib3.$S)(Namespace, (0, import_lib3.$E)(_), IdentifierName, DeclareBlock);
15457var TypeLexicalDeclaration$4 = (0, import_lib3.$S)(Module, _, StringLiteral, (0, import_lib3.$E)(DeclareBlock));
15458var TypeLexicalDeclaration$5 = (0, import_lib3.$S)(Global, (0, import_lib3.$E)(DeclareBlock));
15459var TypeLexicalDeclaration$$ = [TypeLexicalDeclaration$0, TypeLexicalDeclaration$1, TypeLexicalDeclaration$2, TypeLexicalDeclaration$3, TypeLexicalDeclaration$4, TypeLexicalDeclaration$5];
15460function TypeLexicalDeclaration(ctx, state2) {
15461 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeLexicalDeclaration", TypeLexicalDeclaration$$);
15462}
15463var TypeDeclarationBinding$0 = (0, import_lib3.$S)((0, import_lib3.$C)(BindingPattern, BindingIdentifier), (0, import_lib3.$E)(TypeSuffix));
15464function TypeDeclarationBinding(ctx, state2) {
15465 return (0, import_lib3.$EVENT)(ctx, state2, "TypeDeclarationBinding", TypeDeclarationBinding$0);
15466}
15467var InterfaceExtendsClause$0 = (0, import_lib3.$S)(ExtendsToken, InterfaceExtendsTarget, (0, import_lib3.$Q)((0, import_lib3.$S)(Comma, InterfaceExtendsTarget)));
15468function InterfaceExtendsClause(ctx, state2) {
15469 return (0, import_lib3.$EVENT)(ctx, state2, "InterfaceExtendsClause", InterfaceExtendsClause$0);
15470}
15471var InterfaceExtendsTarget$0 = ImplementsTarget;
15472function InterfaceExtendsTarget(ctx, state2) {
15473 return (0, import_lib3.$EVENT)(ctx, state2, "InterfaceExtendsTarget", InterfaceExtendsTarget$0);
15474}
15475var TypeKeyword$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L218, 'TypeKeyword "type"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
15476 return { $loc, token: $1 };
15477});
15478function TypeKeyword(ctx, state2) {
15479 return (0, import_lib3.$EVENT)(ctx, state2, "TypeKeyword", TypeKeyword$0);
15480}
15481var Enum$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L219, 'Enum "enum"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
15482 return { $loc, token: $1 };
15483});
15484function Enum(ctx, state2) {
15485 return (0, import_lib3.$EVENT)(ctx, state2, "Enum", Enum$0);
15486}
15487var Interface$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L220, 'Interface "interface"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
15488 return { $loc, token: $1 };
15489});
15490function Interface(ctx, state2) {
15491 return (0, import_lib3.$EVENT)(ctx, state2, "Interface", Interface$0);
15492}
15493var Global$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L221, 'Global "global"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
15494 return { $loc, token: $1 };
15495});
15496function Global(ctx, state2) {
15497 return (0, import_lib3.$EVENT)(ctx, state2, "Global", Global$0);
15498}
15499var Module$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L222, 'Module "module"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
15500 return { $loc, token: $1 };
15501});
15502function Module(ctx, state2) {
15503 return (0, import_lib3.$EVENT)(ctx, state2, "Module", Module$0);
15504}
15505var Namespace$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L223, 'Namespace "namespace"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
15506 return { $loc, token: $1 };
15507});
15508function Namespace(ctx, state2) {
15509 return (0, import_lib3.$EVENT)(ctx, state2, "Namespace", Namespace$0);
15510}
15511var InterfaceBlock$0 = (0, import_lib3.$S)(__, OpenBrace, NestedInterfaceProperties, __, CloseBrace);
15512var InterfaceBlock$1 = (0, import_lib3.$S)(__, OpenBrace, (0, import_lib3.$Q)((0, import_lib3.$S)(__, InterfaceProperty)), __, CloseBrace);
15513var InterfaceBlock$2 = NestedInterfaceBlock;
15514var InterfaceBlock$$ = [InterfaceBlock$0, InterfaceBlock$1, InterfaceBlock$2];
15515function InterfaceBlock(ctx, state2) {
15516 return (0, import_lib3.$EVENT_C)(ctx, state2, "InterfaceBlock", InterfaceBlock$$);
15517}
15518var NestedInterfaceBlock$0 = (0, import_lib3.$S)(InsertOpenBrace, NestedInterfaceProperties, InsertNewline, InsertIndent, InsertCloseBrace);
15519function NestedInterfaceBlock(ctx, state2) {
15520 return (0, import_lib3.$EVENT)(ctx, state2, "NestedInterfaceBlock", NestedInterfaceBlock$0);
15521}
15522var NestedInterfaceProperties$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedInterfaceProperty), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
15523 var props = $2;
15524 if (props.length)
15525 return props;
15526 return $skip;
15527});
15528function NestedInterfaceProperties(ctx, state2) {
15529 return (0, import_lib3.$EVENT)(ctx, state2, "NestedInterfaceProperties", NestedInterfaceProperties$0);
15530}
15531var NestedInterfaceProperty$0 = (0, import_lib3.$S)(Nested, InterfaceProperty);
15532function NestedInterfaceProperty(ctx, state2) {
15533 return (0, import_lib3.$EVENT)(ctx, state2, "NestedInterfaceProperty", NestedInterfaceProperty$0);
15534}
15535var InterfaceProperty$0 = BasicInterfaceProperty;
15536var InterfaceProperty$1 = (0, import_lib3.$S)(NonEmptyParameters, TypeSuffix, InterfacePropertyDelimiter);
15537var InterfaceProperty$2 = (0, import_lib3.$S)(MethodSignature, InterfacePropertyDelimiter);
15538var InterfaceProperty$$ = [InterfaceProperty$0, InterfaceProperty$1, InterfaceProperty$2];
15539function InterfaceProperty(ctx, state2) {
15540 return (0, import_lib3.$EVENT_C)(ctx, state2, "InterfaceProperty", InterfaceProperty$$);
15541}
15542var BasicInterfaceProperty$0 = (0, import_lib3.$S)((0, import_lib3.$C)(TypeIndexSignature, TypeProperty), (0, import_lib3.$E)(_), TypeSuffix, InterfacePropertyDelimiter);
15543function BasicInterfaceProperty(ctx, state2) {
15544 return (0, import_lib3.$EVENT)(ctx, state2, "BasicInterfaceProperty", BasicInterfaceProperty$0);
15545}
15546var InterfacePropertyDelimiter$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)(Semicolon, Comma));
15547var InterfacePropertyDelimiter$1 = (0, import_lib3.$Y)((0, import_lib3.$S)(__, CloseBrace));
15548var InterfacePropertyDelimiter$2 = (0, import_lib3.$Y)(EOS);
15549var InterfacePropertyDelimiter$$ = [InterfacePropertyDelimiter$0, InterfacePropertyDelimiter$1, InterfacePropertyDelimiter$2];
15550function InterfacePropertyDelimiter(ctx, state2) {
15551 return (0, import_lib3.$EVENT_C)(ctx, state2, "InterfacePropertyDelimiter", InterfacePropertyDelimiter$$);
15552}
15553var ModuleBlock$0 = (0, import_lib3.$S)(__, OpenBrace, NestedModuleItems, __, CloseBrace);
15554var ModuleBlock$1 = (0, import_lib3.$S)(InsertOpenBrace, NestedModuleItems, InsertNewline, InsertIndent, InsertCloseBrace);
15555var ModuleBlock$$ = [ModuleBlock$0, ModuleBlock$1];
15556function ModuleBlock(ctx, state2) {
15557 return (0, import_lib3.$EVENT_C)(ctx, state2, "ModuleBlock", ModuleBlock$$);
15558}
15559var NestedModuleItems$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedModuleItem), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
15560 var items = $2;
15561 if (items.length)
15562 return items;
15563 return $skip;
15564});
15565function NestedModuleItems(ctx, state2) {
15566 return (0, import_lib3.$EVENT)(ctx, state2, "NestedModuleItems", NestedModuleItems$0);
15567}
15568var NestedModuleItem$0 = (0, import_lib3.$S)(Nested, ModuleItem, StatementDelimiter);
15569function NestedModuleItem(ctx, state2) {
15570 return (0, import_lib3.$EVENT)(ctx, state2, "NestedModuleItem", NestedModuleItem$0);
15571}
15572var DeclareBlock$0 = (0, import_lib3.$S)(__, OpenBrace, NestedDeclareElements, __, CloseBrace);
15573var DeclareBlock$1 = (0, import_lib3.$S)(__, OpenBrace, (0, import_lib3.$Q)((0, import_lib3.$S)(__, DeclareElement, InterfacePropertyDelimiter)), __, CloseBrace);
15574var DeclareBlock$2 = (0, import_lib3.$S)(InsertOpenBrace, NestedDeclareElements, InsertNewline, InsertIndent, InsertCloseBrace);
15575var DeclareBlock$$ = [DeclareBlock$0, DeclareBlock$1, DeclareBlock$2];
15576function DeclareBlock(ctx, state2) {
15577 return (0, import_lib3.$EVENT_C)(ctx, state2, "DeclareBlock", DeclareBlock$$);
15578}
15579var NestedDeclareElements$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedDeclareElement), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
15580 var decs = $2;
15581 if (decs.length)
15582 return decs;
15583 return $skip;
15584});
15585function NestedDeclareElements(ctx, state2) {
15586 return (0, import_lib3.$EVENT)(ctx, state2, "NestedDeclareElements", NestedDeclareElements$0);
15587}
15588var NestedDeclareElement$0 = (0, import_lib3.$S)(Nested, DeclareElement, InterfacePropertyDelimiter);
15589function NestedDeclareElement(ctx, state2) {
15590 return (0, import_lib3.$EVENT)(ctx, state2, "NestedDeclareElement", NestedDeclareElement$0);
15591}
15592var DeclareElement$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$E)(Decorators), (0, import_lib3.$E)((0, import_lib3.$S)(Export, (0, import_lib3.$E)(_))), TypeLexicalDeclaration), function(value) {
15593 return { "ts": true, "children": value };
15594});
15595var DeclareElement$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Export, (0, import_lib3.$E)(_))), TypeDeclarationRest), function(value) {
15596 return { "ts": true, "children": value };
15597});
15598var DeclareElement$$ = [DeclareElement$0, DeclareElement$1];
15599function DeclareElement(ctx, state2) {
15600 return (0, import_lib3.$EVENT_C)(ctx, state2, "DeclareElement", DeclareElement$$);
15601}
15602var EnumDeclaration$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Const, _)), Enum, (0, import_lib3.$E)(_), IdentifierName, EnumBlock), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
15603 var isConst = $1;
15604 var id = $4;
15605 var block = $5;
15606 const ts2 = {
15607 ts: true,
15608 children: $0
15609 };
15610 const names = new Set(block.properties.map((p) => p.name.name));
15611 return {
15612 type: "EnumDeclaration",
15613 id,
15614 children: [ts2, {
15615 js: true,
15616 children: [
15617 ["let ", id, " = {};\n"],
15618 ...block.properties.map((property, i) => {
15619 let init, isString;
15620 if (property.initializer) {
15621 init = replaceNodes(
15622 deepCopy(property.initializer),
15623 (n) => n.type === "Identifier" && names.has(n.name),
15624 (n) => [id, '["', n.name, '"]']
15625 );
15626 const value = init[init.length - 1];
15627 isString = value.type === "TemplateLiteral" || value.type === "Literal" && value.subtype === "StringLiteral";
15628 } else {
15629 init = i === 0 ? " = 0" : [" = ", id, '["', block.properties[i - 1].name, '"] + 1'];
15630 }
15631 if (isString) {
15632 return [
15633 id,
15634 '["',
15635 property.name,
15636 '"]',
15637 init,
15638 ";\n"
15639 ];
15640 } else {
15641 return [
15642 id,
15643 "[",
15644 id,
15645 '["',
15646 property.name,
15647 '"]',
15648 init,
15649 '] = "',
15650 property.name,
15651 '";\n'
15652 ];
15653 }
15654 })
15655 ]
15656 }]
15657 };
15658});
15659function EnumDeclaration(ctx, state2) {
15660 return (0, import_lib3.$EVENT)(ctx, state2, "EnumDeclaration", EnumDeclaration$0);
15661}
15662var EnumBlock$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, OpenBrace, NestedEnumProperties, __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
15663 var props = $3;
15664 return {
15665 properties: props.properties,
15666 children: $0
15667 };
15668});
15669var EnumBlock$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, OpenBrace, (0, import_lib3.$Q)((0, import_lib3.$S)(__, EnumProperty)), __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
15670 var props = $3;
15671 return {
15672 properties: props.map((p) => p[1]),
15673 children: $0
15674 };
15675});
15676var EnumBlock$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(InsertOpenBrace, NestedEnumProperties, InsertNewline, InsertIndent, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
15677 var props = $2;
15678 return {
15679 properties: props.properties,
15680 children: $0
15681 };
15682});
15683var EnumBlock$$ = [EnumBlock$0, EnumBlock$1, EnumBlock$2];
15684function EnumBlock(ctx, state2) {
15685 return (0, import_lib3.$EVENT_C)(ctx, state2, "EnumBlock", EnumBlock$$);
15686}
15687var NestedEnumProperties$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedEnumPropertyLine), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
15688 var props = $2;
15689 if (!props.length)
15690 return $skip;
15691 return {
15692 properties: props.flat().map((p) => p.property),
15693 children: $0
15694 };
15695});
15696function NestedEnumProperties(ctx, state2) {
15697 return (0, import_lib3.$EVENT)(ctx, state2, "NestedEnumProperties", NestedEnumProperties$0);
15698}
15699var NestedEnumPropertyLine$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$S)(Nested, EnumProperty), (0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$E)(_), EnumProperty))), function($skip, $loc, $0, $1, $2) {
15700 return [$1, ...$2].map((pair) => ({
15701 property: pair[1],
15702 children: pair
15703 }));
15704});
15705function NestedEnumPropertyLine(ctx, state2) {
15706 return (0, import_lib3.$EVENT)(ctx, state2, "NestedEnumPropertyLine", NestedEnumPropertyLine$0);
15707}
15708var EnumProperty$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Identifier, (0, import_lib3.$E)((0, import_lib3.$S)(__, Equals, MaybeNestedExtendedExpression)), ObjectPropertyDelimiter), function($skip, $loc, $0, $1, $2, $3) {
15709 var name = $1;
15710 var initializer = $2;
15711 return {
15712 type: "EnumProperty",
15713 name,
15714 initializer,
15715 children: $0
15716 };
15717});
15718function EnumProperty(ctx, state2) {
15719 return (0, import_lib3.$EVENT)(ctx, state2, "EnumProperty", EnumProperty$0);
15720}
15721var TypeProperty$0 = (0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Readonly, NotDedented)), PropertyName);
15722function TypeProperty(ctx, state2) {
15723 return (0, import_lib3.$EVENT)(ctx, state2, "TypeProperty", TypeProperty$0);
15724}
15725var TypeIndexSignature$0 = (0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R84, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, (0, import_lib3.$E)((0, import_lib3.$S)(__, (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R12, "TypeIndexSignature /[+-]/")), (0, import_lib3.$Y)((0, import_lib3.$S)((0, import_lib3.$E)(_), QuestionMark)))));
15726function TypeIndexSignature(ctx, state2) {
15727 return (0, import_lib3.$EVENT)(ctx, state2, "TypeIndexSignature", TypeIndexSignature$0);
15728}
15729var TypeIndex$0 = (0, import_lib3.$S)(__, Identifier, TypeSuffix);
15730var TypeIndex$1 = (0, import_lib3.$S)(__, PropertyName, __, In, Type, (0, import_lib3.$E)((0, import_lib3.$S)(__, As, Type)));
15731var TypeIndex$$ = [TypeIndex$0, TypeIndex$1];
15732function TypeIndex(ctx, state2) {
15733 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeIndex", TypeIndex$$);
15734}
15735var TypeSuffix$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$E)(QuestionMark), (0, import_lib3.$E)(_), Colon, MaybeNestedType), function(value) {
15736 var optional = value[1];
15737 var t = value[4];
15738 return { "type": "TypeSuffix", "ts": true, "optional": optional, "t": t, "children": value };
15739});
15740var TypeSuffix$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$E)(_), QuestionMark, (0, import_lib3.$E)(_)), function(value) {
15741 var optional = value[1];
15742 return { "type": "TypeSuffix", "ts": true, "optional": optional, "children": value };
15743});
15744var TypeSuffix$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(NonNullAssertion, (0, import_lib3.$E)(_), (0, import_lib3.$E)((0, import_lib3.$S)(Colon, MaybeNestedType))), function($skip, $loc, $0, $1, $2, $3) {
15745 var nonnull = $1;
15746 var ct = $3;
15747 const [colon, t] = ct ?? [];
15748 return {
15749 type: "TypeSuffix",
15750 ts: true,
15751 nonnull,
15752 t,
15753 children: [$1, $2, colon, t]
15754 };
15755});
15756var TypeSuffix$$ = [TypeSuffix$0, TypeSuffix$1, TypeSuffix$2];
15757function TypeSuffix(ctx, state2) {
15758 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeSuffix", TypeSuffix$$);
15759}
15760var MaybeNestedType$0 = NestedInterfaceBlock;
15761var MaybeNestedType$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$E)((0, import_lib3.$S)(Nested, Type)), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
15762 if (!$2)
15763 return $skip;
15764 return $2;
15765});
15766var MaybeNestedType$2 = Type;
15767var MaybeNestedType$$ = [MaybeNestedType$0, MaybeNestedType$1, MaybeNestedType$2];
15768function MaybeNestedType(ctx, state2) {
15769 return (0, import_lib3.$EVENT_C)(ctx, state2, "MaybeNestedType", MaybeNestedType$$);
15770}
15771var ReturnTypeSuffix$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$E)(QuestionMark), (0, import_lib3.$E)(_), Colon, ReturnType), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
15772 var optional = $2;
15773 var t = $5;
15774 return {
15775 ...t,
15776 optional,
15777 children: [$1, optional, $3, $4, ...t.children]
15778 };
15779});
15780function ReturnTypeSuffix(ctx, state2) {
15781 return (0, import_lib3.$EVENT)(ctx, state2, "ReturnTypeSuffix", ReturnTypeSuffix$0);
15782}
15783var ReturnType$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L224, 'ReturnType "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2) {
15784 var asserts = $1;
15785 var t = $2;
15786 if (asserts) {
15787 t = {
15788 type: "AssertsType",
15789 t,
15790 children: [asserts[0], asserts[1], t],
15791 ts: true
15792 };
15793 }
15794 return {
15795 type: "ReturnTypeAnnotation",
15796 children: [t],
15797 t,
15798 ts: true
15799 };
15800});
15801function ReturnType(ctx, state2) {
15802 return (0, import_lib3.$EVENT)(ctx, state2, "ReturnType", ReturnType$0);
15803}
15804var TypePredicate$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Type, (0, import_lib3.$E)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L166, 'TypePredicate "is"'), NonIdContinue, Type))), function($skip, $loc, $0, $1, $2) {
15805 var lhs = $1;
15806 var rhs = $2;
15807 if (!rhs)
15808 return lhs;
15809 return {
15810 type: "TypePredicate",
15811 lhs,
15812 rhs: rhs[3],
15813 children: [lhs, ...rhs]
15814 };
15815});
15816function TypePredicate(ctx, state2) {
15817 return (0, import_lib3.$EVENT)(ctx, state2, "TypePredicate", TypePredicate$0);
15818}
15819var Type$0 = TypeConditional;
15820function Type(ctx, state2) {
15821 return (0, import_lib3.$EVENT)(ctx, state2, "Type", Type$0);
15822}
15823var TypeBinary$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(__, TypeBinaryOp, __)), TypeUnary, (0, import_lib3.$Q)((0, import_lib3.$S)(__, TypeBinaryOp, __, TypeUnary))), function($skip, $loc, $0, $1, $2, $3) {
15824 var optionalPrefix = $1;
15825 var t = $2;
15826 var ops = $3;
15827 if (!ops.length && !optionalPrefix)
15828 return t;
15829 if (!ops.length)
15830 return [optionalPrefix, t];
15831 if (!optionalPrefix)
15832 return [t, ...ops];
15833 return [optionalPrefix, t, ops];
15834});
15835function TypeBinary(ctx, state2) {
15836 return (0, import_lib3.$EVENT)(ctx, state2, "TypeBinary", TypeBinary$0);
15837}
15838var TypeUnary$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$Q)((0, import_lib3.$S)(__, TypeUnaryOp)), TypePrimary, (0, import_lib3.$Q)(TypeUnarySuffix)), function($skip, $loc, $0, $1, $2, $3) {
15839 var prefix = $1;
15840 var t = $2;
15841 var suffix = $3;
15842 if (!prefix.length && !suffix.length)
15843 return t;
15844 return {
15845 type: "UnaryType",
15846 prefix,
15847 suffix,
15848 t,
15849 // omit empty prefix for trimming space
15850 children: prefix.length ? $0 : [t, suffix]
15851 };
15852});
15853function TypeUnary(ctx, state2) {
15854 return (0, import_lib3.$EVENT)(ctx, state2, "TypeUnary", TypeUnary$0);
15855}
15856var TypeUnarySuffix$0 = TypeIndexedAccess;
15857var TypeUnarySuffix$1 = QuestionMark;
15858var TypeUnarySuffix$$ = [TypeUnarySuffix$0, TypeUnarySuffix$1];
15859function TypeUnarySuffix(ctx, state2) {
15860 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeUnarySuffix", TypeUnarySuffix$$);
15861}
15862var TypeUnaryOp$0 = (0, import_lib3.$S)((0, import_lib3.$EXPECT)($L225, 'TypeUnaryOp "keyof"'), NonIdContinue);
15863var TypeUnaryOp$1 = (0, import_lib3.$S)((0, import_lib3.$EXPECT)($L185, 'TypeUnaryOp "readonly"'), NonIdContinue);
15864var TypeUnaryOp$$ = [TypeUnaryOp$0, TypeUnaryOp$1];
15865function TypeUnaryOp(ctx, state2) {
15866 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeUnaryOp", TypeUnaryOp$$);
15867}
15868var TypeIndexedAccess$0 = (0, import_lib3.$S)(OpenBracket, (0, import_lib3.$E)(Type), __, CloseBracket);
15869var TypeIndexedAccess$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(Dot, (0, import_lib3.$C)(TemplateLiteral, StringLiteral, IntegerLiteral)), function($skip, $loc, $0, $1, $2) {
15870 var dot = $1;
15871 var literal = $2;
15872 const open = { ...dot, token: "[" };
15873 return [
15874 open,
15875 literal,
15876 "]"
15877 ];
15878});
15879var TypeIndexedAccess$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(CoffeePrototypeEnabled, DoubleColon, (0, import_lib3.$E)((0, import_lib3.$C)(IdentifierName, LengthShorthand))), function($skip, $loc, $0, $1, $2, $3) {
15880 var p = $2;
15881 var id = $3;
15882 const open = { ...p, token: '["' };
15883 return [
15884 open,
15885 id,
15886 '"]'
15887 ];
15888});
15889var TypeIndexedAccess$$ = [TypeIndexedAccess$0, TypeIndexedAccess$1, TypeIndexedAccess$2];
15890function TypeIndexedAccess(ctx, state2) {
15891 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeIndexedAccess", TypeIndexedAccess$$);
15892}
15893var UnknownAlias$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L226, 'UnknownAlias "???"'), function($skip, $loc, $0, $1) {
15894 return { $loc, token: "unknown" };
15895});
15896function UnknownAlias(ctx, state2) {
15897 return (0, import_lib3.$EVENT)(ctx, state2, "UnknownAlias", UnknownAlias$0);
15898}
15899var TypePrimary$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), Infer, (0, import_lib3.$E)(_), IdentifierName, (0, import_lib3.$E)((0, import_lib3.$S)(NotDedented, ExtendsToken, Type)));
15900var TypePrimary$1 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), Typeof, (0, import_lib3.$E)(_), UnaryExpression), function($skip, $loc, $0, $1, $2, $3, $4) {
15901 return {
15902 type: "TypeofType",
15903 children: $0
15904 };
15905});
15906var TypePrimary$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), TypeTuple), function($skip, $loc, $0, $1, $2) {
15907 return { ...$2, children: [$1, ...$2.children] };
15908});
15909var TypePrimary$3 = InterfaceBlock;
15910var TypePrimary$4 = (0, import_lib3.$S)((0, import_lib3.$E)(_), TypeFunction);
15911var TypePrimary$5 = (0, import_lib3.$S)((0, import_lib3.$E)(_), InlineInterfaceLiteral);
15912var TypePrimary$6 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), ImportType), function($skip, $loc, $0, $1, $2) {
15913 var t = $2;
15914 return {
15915 type: "ImportType",
15916 t,
15917 children: $0
15918 };
15919});
15920var TypePrimary$7 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), TypeLiteral), function($skip, $loc, $0, $1, $2) {
15921 var t = $2;
15922 return {
15923 type: "LiteralType",
15924 t,
15925 children: $0
15926 };
15927});
15928var TypePrimary$8 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), UnknownAlias), function($skip, $loc, $0, $1, $2) {
15929 return {
15930 type: "IdentifierType",
15931 children: $0,
15932 raw: $2.token,
15933 args: void 0
15934 };
15935});
15936var TypePrimary$9 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), IdentifierName, (0, import_lib3.$Q)((0, import_lib3.$S)(Dot, IdentifierName)), (0, import_lib3.$E)(TypeArguments)), function($skip, $loc, $0, $1, $2, $3, $4) {
15937 var args = $4;
15938 return {
15939 type: "IdentifierType",
15940 children: $0,
15941 raw: [$2.name, ...$3.map(([dot, id]) => dot.token + id.name)].join(""),
15942 args
15943 };
15944});
15945var TypePrimary$10 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), OpenParen, (0, import_lib3.$C)(Type, (0, import_lib3.$S)(EOS, Type)), __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
15946 return {
15947 type: "ParenthesizedType",
15948 children: $0
15949 };
15950});
15951var TypePrimary$$ = [TypePrimary$0, TypePrimary$1, TypePrimary$2, TypePrimary$3, TypePrimary$4, TypePrimary$5, TypePrimary$6, TypePrimary$7, TypePrimary$8, TypePrimary$9, TypePrimary$10];
15952function TypePrimary(ctx, state2) {
15953 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypePrimary", TypePrimary$$);
15954}
15955var ImportType$0 = (0, import_lib3.$S)((0, import_lib3.$EXPECT)($L15, 'ImportType "import"'), OpenParen, __, StringLiteral, __, CloseParen, (0, import_lib3.$E)((0, import_lib3.$S)(Dot, IdentifierName)), (0, import_lib3.$E)(TypeArguments));
15956var ImportType$1 = (0, import_lib3.$S)((0, import_lib3.$EXPECT)($L15, 'ImportType "import"'), InsertOpenParen, (0, import_lib3.$E)(Trimmed_), StringLiteral, InsertCloseParen);
15957var ImportType$$ = [ImportType$0, ImportType$1];
15958function ImportType(ctx, state2) {
15959 return (0, import_lib3.$EVENT_C)(ctx, state2, "ImportType", ImportType$$);
15960}
15961var TypeTuple$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenBracket, (0, import_lib3.$C)(NestedTypeList, (0, import_lib3.$E)(TypeList)), __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
15962 return {
15963 type: "TypeTuple",
15964 children: $0
15965 };
15966});
15967function TypeTuple(ctx, state2) {
15968 return (0, import_lib3.$EVENT)(ctx, state2, "TypeTuple", TypeTuple$0);
15969}
15970var TypeList$0 = (0, import_lib3.$S)(TypeElement, (0, import_lib3.$Q)((0, import_lib3.$S)(__, Comma, TypeElement)));
15971function TypeList(ctx, state2) {
15972 return (0, import_lib3.$EVENT)(ctx, state2, "TypeList", TypeList$0);
15973}
15974var TypeElement$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(__, (0, import_lib3.$E)((0, import_lib3.$S)(DotDotDot, __)), IdentifierName, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), DotDotDot)), (0, import_lib3.$S)(__, (0, import_lib3.$E)((0, import_lib3.$S)(QuestionMark, (0, import_lib3.$E)(_))), Colon, __), Type), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
15975 var ws = $1;
15976 var dots1 = $2;
15977 var name = $3;
15978 var dots2 = $4;
15979 var colon = $5;
15980 var type = $6;
15981 let dots = dots1 || dots2 && [dots2[1], dots2[0]];
15982 if (dots1 && dots2) {
15983 dots = [dots, {
15984 type: "Error",
15985 message: "... both before and after identifier"
15986 }];
15987 }
15988 return [ws, dots, name, colon, type];
15989});
15990var TypeElement$1 = (0, import_lib3.$S)(__, DotDotDot, __, Type);
15991var TypeElement$2 = (0, import_lib3.$TS)((0, import_lib3.$S)(Type, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)(_), DotDotDot))), function($skip, $loc, $0, $1, $2) {
15992 var type = $1;
15993 var spaceDots = $2;
15994 if (!spaceDots)
15995 return type;
15996 const [space, dots] = spaceDots;
15997 const ws = getTrimmingSpace(type);
15998 if (!ws)
15999 return [dots, space, type];
16000 return [ws, dots, space, insertTrimmingSpace(type, "")];
16001});
16002var TypeElement$$ = [TypeElement$0, TypeElement$1, TypeElement$2];
16003function TypeElement(ctx, state2) {
16004 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeElement", TypeElement$$);
16005}
16006var NestedTypeList$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$Q)(NestedType), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
16007 var types = $2;
16008 if (types.length)
16009 return types;
16010 return $skip;
16011});
16012function NestedTypeList(ctx, state2) {
16013 return (0, import_lib3.$EVENT)(ctx, state2, "NestedTypeList", NestedTypeList$0);
16014}
16015var NestedType$0 = (0, import_lib3.$S)(Nested, TypeElement, ArrayElementDelimiter);
16016function NestedType(ctx, state2) {
16017 return (0, import_lib3.$EVENT)(ctx, state2, "NestedType", NestedType$0);
16018}
16019var TypeConditional$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$EXPECT)($R85, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
16020 return [$1, expressionizeTypeIf($3)];
16021});
16022var TypeConditional$1 = (0, import_lib3.$TS)((0, import_lib3.$S)(TypeCondition, NotDedented, QuestionMark, __, Type, __, Colon, __, Type), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16023 if ($1.negated)
16024 return [$1, $2, $3, $4, $9, $6, $7, $8, $5];
16025 return $0;
16026});
16027var TypeConditional$2 = TypeBinary;
16028var TypeConditional$$ = [TypeConditional$0, TypeConditional$1, TypeConditional$2];
16029function TypeConditional(ctx, state2) {
16030 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeConditional", TypeConditional$$);
16031}
16032var TypeCondition$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(TypeBinary, (0, import_lib3.$E)(IndentedFurther), (0, import_lib3.$C)(ExtendsToken, NotExtendsToken), Type), function($skip, $loc, $0, $1, $2, $3, $4) {
16033 return {
16034 type: "TypeCondition",
16035 negated: $3.negated,
16036 children: $0
16037 };
16038});
16039function TypeCondition(ctx, state2) {
16040 return (0, import_lib3.$EVENT)(ctx, state2, "TypeCondition", TypeCondition$0);
16041}
16042var TypeIfThenElse$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)(If, Unless), (0, import_lib3.$S)(OpenParen, TypeCondition, CloseParen), TypeBlock, (0, import_lib3.$E)(TypeElse)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
16043 return [$1, $2, $3[1], $4, $5];
16044});
16045var TypeIfThenElse$1 = (0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)(If, Unless), TypeCondition, TypeBlock, (0, import_lib3.$E)(TypeElse));
16046var TypeIfThenElse$$ = [TypeIfThenElse$0, TypeIfThenElse$1];
16047function TypeIfThenElse(ctx, state2) {
16048 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeIfThenElse", TypeIfThenElse$$);
16049}
16050var TypeElse$0 = (0, import_lib3.$S)(NotDedented, Else, TypeBlock);
16051function TypeElse(ctx, state2) {
16052 return (0, import_lib3.$EVENT)(ctx, state2, "TypeElse", TypeElse$0);
16053}
16054var TypeBlock$0 = (0, import_lib3.$T)((0, import_lib3.$S)(Then, Type), function(value) {
16055 return value[1];
16056});
16057var TypeBlock$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(EOS), Type), function(value) {
16058 return value[1];
16059});
16060var TypeBlock$2 = NestedInterfaceBlock;
16061var TypeBlock$3 = (0, import_lib3.$TS)((0, import_lib3.$S)(PushIndent, (0, import_lib3.$E)((0, import_lib3.$S)(Nested, Type)), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
16062 if (!$2)
16063 return $skip;
16064 return $2;
16065});
16066var TypeBlock$$ = [TypeBlock$0, TypeBlock$1, TypeBlock$2, TypeBlock$3];
16067function TypeBlock(ctx, state2) {
16068 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeBlock", TypeBlock$$);
16069}
16070var TypeTemplateSubstitution$0 = (0, import_lib3.$S)(SubstitutionStart, Type, __, CloseBrace);
16071function TypeTemplateSubstitution(ctx, state2) {
16072 return (0, import_lib3.$EVENT)(ctx, state2, "TypeTemplateSubstitution", TypeTemplateSubstitution$0);
16073}
16074var TypeTemplateLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(Backtick, (0, import_lib3.$Q)((0, import_lib3.$C)(TemplateCharacters, TypeTemplateSubstitution)), Backtick), function($skip, $loc, $0, $1, $2, $3) {
16075 return {
16076 type: "TemplateLiteral",
16077 children: $0
16078 };
16079});
16080var TypeTemplateLiteral$1 = CoffeeInterpolatedDoubleQuotedTypeLiteral;
16081var TypeTemplateLiteral$$ = [TypeTemplateLiteral$0, TypeTemplateLiteral$1];
16082function TypeTemplateLiteral(ctx, state2) {
16083 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeTemplateLiteral", TypeTemplateLiteral$$);
16084}
16085var CoffeeStringTypeSubstitution$0 = (0, import_lib3.$S)(CoffeeSubstitutionStart, Type, __, CloseBrace);
16086function CoffeeStringTypeSubstitution(ctx, state2) {
16087 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeStringTypeSubstitution", CoffeeStringTypeSubstitution$0);
16088}
16089var CoffeeInterpolatedDoubleQuotedTypeLiteral$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(CoffeeInterpolationEnabled, DoubleQuote, (0, import_lib3.$Q)((0, import_lib3.$C)(CoffeeDoubleQuotedStringCharacters, CoffeeStringTypeSubstitution)), DoubleQuote), function($skip, $loc, $0, $1, $2, $3, $4) {
16090 var s = $2;
16091 var parts = $3;
16092 var e = $4;
16093 return processCoffeeInterpolation(s, parts, e, $loc);
16094});
16095function CoffeeInterpolatedDoubleQuotedTypeLiteral(ctx, state2) {
16096 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeInterpolatedDoubleQuotedTypeLiteral", CoffeeInterpolatedDoubleQuotedTypeLiteral$0);
16097}
16098var TypeLiteral$0 = TypeTemplateLiteral;
16099var TypeLiteral$1 = Literal;
16100var TypeLiteral$2 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R12, "TypeLiteral /[+-]/"), NumericLiteral), function($skip, $loc, $0, $1, $2) {
16101 var sign = $1;
16102 var num = $2;
16103 if (sign[0] === "+")
16104 return num;
16105 return $0;
16106});
16107var TypeLiteral$3 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L208, 'TypeLiteral "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
16108 return { type: "VoidType", $loc, token: $1 };
16109});
16110var TypeLiteral$4 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L227, 'TypeLiteral "unique"'), _, (0, import_lib3.$EXPECT)($L228, 'TypeLiteral "symbol"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3, $4) {
16111 return { type: "UniqueSymbolType", children: $0 };
16112});
16113var TypeLiteral$5 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L229, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
16114 return { $loc, token: "[]" };
16115});
16116var TypeLiteral$$ = [TypeLiteral$0, TypeLiteral$1, TypeLiteral$2, TypeLiteral$3, TypeLiteral$4, TypeLiteral$5];
16117function TypeLiteral(ctx, state2) {
16118 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeLiteral", TypeLiteral$$);
16119}
16120var InlineInterfaceLiteral$0 = (0, import_lib3.$S)(InsertInlineOpenBrace, InlineBasicInterfaceProperty, (0, import_lib3.$Q)((0, import_lib3.$S)((0, import_lib3.$C)(IndentedFurther, (0, import_lib3.$E)(_)), InlineBasicInterfaceProperty)), InsertCloseBrace);
16121function InlineInterfaceLiteral(ctx, state2) {
16122 return (0, import_lib3.$EVENT)(ctx, state2, "InlineInterfaceLiteral", InlineInterfaceLiteral$0);
16123}
16124var InlineBasicInterfaceProperty$0 = (0, import_lib3.$S)((0, import_lib3.$C)(TypeIndexSignature, TypeProperty), (0, import_lib3.$E)(QuestionMark), Colon, Type, InlineInterfacePropertyDelimiter);
16125function InlineBasicInterfaceProperty(ctx, state2) {
16126 return (0, import_lib3.$EVENT)(ctx, state2, "InlineBasicInterfaceProperty", InlineBasicInterfaceProperty$0);
16127}
16128var InlineInterfacePropertyDelimiter$0 = (0, import_lib3.$C)((0, import_lib3.$S)((0, import_lib3.$E)(_), Semicolon), CommaDelimiter);
16129var InlineInterfacePropertyDelimiter$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$Y)((0, import_lib3.$S)((0, import_lib3.$C)(IndentedFurther, (0, import_lib3.$E)(_)), InlineBasicInterfaceProperty)), InsertComma), function(value) {
16130 return value[1];
16131});
16132var InlineInterfacePropertyDelimiter$2 = (0, import_lib3.$Y)((0, import_lib3.$S)(__, (0, import_lib3.$C)((0, import_lib3.$EXPECT)($L16, 'InlineInterfacePropertyDelimiter ":"'), (0, import_lib3.$EXPECT)($L125, 'InlineInterfacePropertyDelimiter ")"'), (0, import_lib3.$EXPECT)($L45, 'InlineInterfacePropertyDelimiter "]"'), (0, import_lib3.$EXPECT)($L36, 'InlineInterfacePropertyDelimiter "}"'))));
16133var InlineInterfacePropertyDelimiter$3 = (0, import_lib3.$Y)(EOS);
16134var InlineInterfacePropertyDelimiter$$ = [InlineInterfacePropertyDelimiter$0, InlineInterfacePropertyDelimiter$1, InlineInterfacePropertyDelimiter$2, InlineInterfacePropertyDelimiter$3];
16135function InlineInterfacePropertyDelimiter(ctx, state2) {
16136 return (0, import_lib3.$EVENT_C)(ctx, state2, "InlineInterfacePropertyDelimiter", InlineInterfacePropertyDelimiter$$);
16137}
16138var TypeBinaryOp$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L109, 'TypeBinaryOp "|"'), function($skip, $loc, $0, $1) {
16139 return { $loc, token: "|" };
16140});
16141var TypeBinaryOp$1 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L108, 'TypeBinaryOp "&"'), function($skip, $loc, $0, $1) {
16142 return { $loc, token: "&" };
16143});
16144var TypeBinaryOp$$ = [TypeBinaryOp$0, TypeBinaryOp$1];
16145function TypeBinaryOp(ctx, state2) {
16146 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeBinaryOp", TypeBinaryOp$$);
16147}
16148var TypeFunction$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$E)((0, import_lib3.$S)(Abstract, (0, import_lib3.$E)(_))), New, (0, import_lib3.$E)(_))), Parameters, __, TypeArrowFunction, (0, import_lib3.$E)(ReturnType)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
16149 var type = $5;
16150 if (type) {
16151 return $0;
16152 }
16153 return [...$0, "void"];
16154});
16155function TypeFunction(ctx, state2) {
16156 return (0, import_lib3.$EVENT)(ctx, state2, "TypeFunction", TypeFunction$0);
16157}
16158var TypeArrowFunction$0 = (0, import_lib3.$TV)((0, import_lib3.$C)((0, import_lib3.$EXPECT)($L13, 'TypeArrowFunction "=>"'), (0, import_lib3.$EXPECT)($L14, 'TypeArrowFunction "\u21D2"'), (0, import_lib3.$EXPECT)($L34, 'TypeArrowFunction "->"'), (0, import_lib3.$EXPECT)($L35, 'TypeArrowFunction "\u2192"')), function($skip, $loc, $0, $1) {
16159 return { $loc, token: "=>" };
16160});
16161function TypeArrowFunction(ctx, state2) {
16162 return (0, import_lib3.$EVENT)(ctx, state2, "TypeArrowFunction", TypeArrowFunction$0);
16163}
16164var TypeArguments$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenAngleBracket, (0, import_lib3.$P)(TypeArgument), __, CloseAngleBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
16165 var args = $2;
16166 return {
16167 type: "TypeArguments",
16168 ts: true,
16169 types: args.map(([, t]) => t),
16170 children: $0
16171 };
16172});
16173function TypeArguments(ctx, state2) {
16174 return (0, import_lib3.$EVENT)(ctx, state2, "TypeArguments", TypeArguments$0);
16175}
16176var TypeArgument$0 = (0, import_lib3.$S)(__, Type, TypeArgumentDelimiter);
16177function TypeArgument(ctx, state2) {
16178 return (0, import_lib3.$EVENT)(ctx, state2, "TypeArgument", TypeArgument$0);
16179}
16180var TypeArgumentDelimiter$0 = TypeParameterDelimiter;
16181function TypeArgumentDelimiter(ctx, state2) {
16182 return (0, import_lib3.$EVENT)(ctx, state2, "TypeArgumentDelimiter", TypeArgumentDelimiter$0);
16183}
16184var TypeParameters$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(OpenAngleBracket, (0, import_lib3.$P)(TypeParameter), __, CloseAngleBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
16185 var parameters = $2;
16186 return {
16187 type: "TypeParameters",
16188 parameters,
16189 ts: true,
16190 children: $0
16191 };
16192});
16193function TypeParameters(ctx, state2) {
16194 return (0, import_lib3.$EVENT)(ctx, state2, "TypeParameters", TypeParameters$0);
16195}
16196var TypeParameter$0 = (0, import_lib3.$S)(__, (0, import_lib3.$E)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L165, 'TypeParameter "const"'), (0, import_lib3.$E)(_))), Identifier, (0, import_lib3.$E)(TypeConstraint), (0, import_lib3.$E)(TypeInitializer), TypeParameterDelimiter);
16197function TypeParameter(ctx, state2) {
16198 return (0, import_lib3.$EVENT)(ctx, state2, "TypeParameter", TypeParameter$0);
16199}
16200var TypeConstraint$0 = (0, import_lib3.$S)(__, ExtendsToken, Type);
16201function TypeConstraint(ctx, state2) {
16202 return (0, import_lib3.$EVENT)(ctx, state2, "TypeConstraint", TypeConstraint$0);
16203}
16204var TypeInitializer$0 = (0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L3, 'TypeInitializer "="'), Type);
16205function TypeInitializer(ctx, state2) {
16206 return (0, import_lib3.$EVENT)(ctx, state2, "TypeInitializer", TypeInitializer$0);
16207}
16208var TypeParameterDelimiter$0 = (0, import_lib3.$S)((0, import_lib3.$E)(_), Comma);
16209var TypeParameterDelimiter$1 = (0, import_lib3.$Y)((0, import_lib3.$S)(__, (0, import_lib3.$EXPECT)($L44, 'TypeParameterDelimiter ">"')));
16210var TypeParameterDelimiter$2 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$Y)(EOS), InsertComma), function(value) {
16211 return value[1];
16212});
16213var TypeParameterDelimiter$$ = [TypeParameterDelimiter$0, TypeParameterDelimiter$1, TypeParameterDelimiter$2];
16214function TypeParameterDelimiter(ctx, state2) {
16215 return (0, import_lib3.$EVENT_C)(ctx, state2, "TypeParameterDelimiter", TypeParameterDelimiter$$);
16216}
16217var ThisType$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$E)(_), (0, import_lib3.$C)(This, AtThis), Colon, Type, ParameterElementDelimiter), function(value) {
16218 return { "type": "ThisType", "ts": true, "children": value };
16219});
16220function ThisType(ctx, state2) {
16221 return (0, import_lib3.$EVENT)(ctx, state2, "ThisType", ThisType$0);
16222}
16223var Shebang$0 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R86, "Shebang /#![^\\r\\n]*/")), EOL);
16224function Shebang(ctx, state2) {
16225 return (0, import_lib3.$EVENT)(ctx, state2, "Shebang", Shebang$0);
16226}
16227var CivetPrologue$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R87, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, (0, import_lib3.$EXPECT)($R88, "CivetPrologue /[ \\t]*/"), (0, import_lib3.$C)(EOL, (0, import_lib3.$Y)(RestOfLine))), function(value) {
16228 var content = value[2];
16229 return content;
16230});
16231var CivetPrologue$1 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R87, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, (0, import_lib3.$EXPECT)($R88, "CivetPrologue /[ \\t]*/"), (0, import_lib3.$C)(EOL, (0, import_lib3.$Y)(RestOfLine))), function(value) {
16232 var content = value[2];
16233 return content;
16234});
16235var CivetPrologue$$ = [CivetPrologue$0, CivetPrologue$1];
16236function CivetPrologue(ctx, state2) {
16237 return (0, import_lib3.$EVENT_C)(ctx, state2, "CivetPrologue", CivetPrologue$$);
16238}
16239var CivetPrologueContent$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($L230, 'CivetPrologueContent "civet"'), NonIdContinue, (0, import_lib3.$Q)(CivetOption), (0, import_lib3.$EXPECT)($R89, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
16240 var options = $3;
16241 return {
16242 type: "CivetPrologue",
16243 children: [],
16244 config: Object.fromEntries(options)
16245 };
16246});
16247function CivetPrologueContent(ctx, state2) {
16248 return (0, import_lib3.$EVENT)(ctx, state2, "CivetPrologueContent", CivetPrologueContent$0);
16249}
16250var CivetOption$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R90, "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) {
16251 const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
16252 if (l)
16253 return l.toUpperCase();
16254 return "";
16255 });
16256 let value = $3 ? $4 : $1 === "-" ? false : true;
16257 if (optionName === "tab") {
16258 value = parseFloat(value);
16259 if (isNaN(value))
16260 value = 0;
16261 }
16262 return [optionName, value];
16263});
16264function CivetOption(ctx, state2) {
16265 return (0, import_lib3.$EVENT)(ctx, state2, "CivetOption", CivetOption$0);
16266}
16267var UnknownPrologue$0 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R87, "UnknownPrologue /[\\t ]*/")), StringLiteral, (0, import_lib3.$TEXT)(SimpleStatementDelimiter), EOS);
16268function UnknownPrologue(ctx, state2) {
16269 return (0, import_lib3.$EVENT)(ctx, state2, "UnknownPrologue", UnknownPrologue$0);
16270}
16271var TripleSlashDirective$0 = (0, import_lib3.$S)((0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R91, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), (0, import_lib3.$E)(EOS));
16272function TripleSlashDirective(ctx, state2) {
16273 return (0, import_lib3.$EVENT)(ctx, state2, "TripleSlashDirective", TripleSlashDirective$0);
16274}
16275var DirectivePrologue$0 = (0, import_lib3.$T)((0, import_lib3.$S)(PrologueString, (0, import_lib3.$N)((0, import_lib3.$S)(__, (0, import_lib3.$C)(AccessStart, Pipe)))), function(value) {
16276 return value[0];
16277});
16278function DirectivePrologue(ctx, state2) {
16279 return (0, import_lib3.$EVENT)(ctx, state2, "DirectivePrologue", DirectivePrologue$0);
16280}
16281var PrologueString$0 = CivetPrologue;
16282var PrologueString$1 = UnknownPrologue;
16283var PrologueString$$ = [PrologueString$0, PrologueString$1];
16284function PrologueString(ctx, state2) {
16285 return (0, import_lib3.$EVENT_C)(ctx, state2, "PrologueString", PrologueString$$);
16286}
16287var EOS$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$EXPECT)($R92, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), (0, import_lib3.$P)(RestOfLine)), function(value) {
16288 return value[1];
16289});
16290function EOS(ctx, state2) {
16291 return (0, import_lib3.$EVENT)(ctx, state2, "EOS", EOS$0);
16292}
16293var EOL$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R93, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16294 return { $loc, token: $0 };
16295});
16296function EOL(ctx, state2) {
16297 return (0, import_lib3.$EVENT)(ctx, state2, "EOL", EOL$0);
16298}
16299var DebugHere$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'DebugHere ""'), function($skip, $loc, $0, $1) {
16300
16301});
16302function DebugHere(ctx, state2) {
16303 return (0, import_lib3.$EVENT)(ctx, state2, "DebugHere", DebugHere$0);
16304}
16305var InsertColon$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertColon ""'), function($skip, $loc, $0, $1) {
16306 return { $loc, token: ":" };
16307});
16308function InsertColon(ctx, state2) {
16309 return (0, import_lib3.$EVENT)(ctx, state2, "InsertColon", InsertColon$0);
16310}
16311var InsertSemicolon$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertSemicolon ""'), function($skip, $loc, $0, $1) {
16312 return { $loc, token: ";" };
16313});
16314function InsertSemicolon(ctx, state2) {
16315 return (0, import_lib3.$EVENT)(ctx, state2, "InsertSemicolon", InsertSemicolon$0);
16316}
16317var InsertOpenParen$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertOpenParen ""'), function($skip, $loc, $0, $1) {
16318 return { $loc, token: "(" };
16319});
16320function InsertOpenParen(ctx, state2) {
16321 return (0, import_lib3.$EVENT)(ctx, state2, "InsertOpenParen", InsertOpenParen$0);
16322}
16323var InsertCloseParen$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertCloseParen ""'), function($skip, $loc, $0, $1) {
16324 return { $loc, token: ")" };
16325});
16326function InsertCloseParen(ctx, state2) {
16327 return (0, import_lib3.$EVENT)(ctx, state2, "InsertCloseParen", InsertCloseParen$0);
16328}
16329var InsertOpenBrace$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertOpenBrace ""'), function($skip, $loc, $0, $1) {
16330 return [{ $loc, token: " " }, { $loc, token: "{" }];
16331});
16332function InsertOpenBrace(ctx, state2) {
16333 return (0, import_lib3.$EVENT)(ctx, state2, "InsertOpenBrace", InsertOpenBrace$0);
16334}
16335var InsertInlineOpenBrace$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertInlineOpenBrace ""'), function($skip, $loc, $0, $1) {
16336 return { $loc, token: "{" };
16337});
16338function InsertInlineOpenBrace(ctx, state2) {
16339 return (0, import_lib3.$EVENT)(ctx, state2, "InsertInlineOpenBrace", InsertInlineOpenBrace$0);
16340}
16341var InsertCloseBrace$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertCloseBrace ""'), function($skip, $loc, $0, $1) {
16342 return { $loc, token: "}" };
16343});
16344function InsertCloseBrace(ctx, state2) {
16345 return (0, import_lib3.$EVENT)(ctx, state2, "InsertCloseBrace", InsertCloseBrace$0);
16346}
16347var InsertOpenBracket$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertOpenBracket ""'), function($skip, $loc, $0, $1) {
16348 return { $loc, token: "[" };
16349});
16350function InsertOpenBracket(ctx, state2) {
16351 return (0, import_lib3.$EVENT)(ctx, state2, "InsertOpenBracket", InsertOpenBracket$0);
16352}
16353var InsertCloseBracket$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertCloseBracket ""'), function($skip, $loc, $0, $1) {
16354 return { $loc, token: "]" };
16355});
16356function InsertCloseBracket(ctx, state2) {
16357 return (0, import_lib3.$EVENT)(ctx, state2, "InsertCloseBracket", InsertCloseBracket$0);
16358}
16359var InsertComma$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertComma ""'), function($skip, $loc, $0, $1) {
16360 return { $loc, token: "," };
16361});
16362function InsertComma(ctx, state2) {
16363 return (0, import_lib3.$EVENT)(ctx, state2, "InsertComma", InsertComma$0);
16364}
16365var InsertSpaceEquals$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertSpaceEquals ""'), function($skip, $loc, $0, $1) {
16366 return { $loc, token: " =" };
16367});
16368function InsertSpaceEquals(ctx, state2) {
16369 return (0, import_lib3.$EVENT)(ctx, state2, "InsertSpaceEquals", InsertSpaceEquals$0);
16370}
16371var InsertConst$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertConst ""'), function($skip, $loc, $0, $1) {
16372 return { $loc, token: "const " };
16373});
16374function InsertConst(ctx, state2) {
16375 return (0, import_lib3.$EVENT)(ctx, state2, "InsertConst", InsertConst$0);
16376}
16377var InsertLet$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertLet ""'), function($skip, $loc, $0, $1) {
16378 return { $loc, token: "let " };
16379});
16380function InsertLet(ctx, state2) {
16381 return (0, import_lib3.$EVENT)(ctx, state2, "InsertLet", InsertLet$0);
16382}
16383var InsertReadonly$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertReadonly ""'), function($skip, $loc, $0, $1) {
16384 return { ts: true, children: [{ $loc, token: "readonly " }] };
16385});
16386function InsertReadonly(ctx, state2) {
16387 return (0, import_lib3.$EVENT)(ctx, state2, "InsertReadonly", InsertReadonly$0);
16388}
16389var InsertNewline$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertNewline ""'), function($skip, $loc, $0, $1) {
16390 return "\n";
16391});
16392function InsertNewline(ctx, state2) {
16393 return (0, import_lib3.$EVENT)(ctx, state2, "InsertNewline", InsertNewline$0);
16394}
16395var InsertIndent$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertIndent ""'), function($skip, $loc, $0, $1) {
16396 return state.currentIndent.token;
16397});
16398function InsertIndent(ctx, state2) {
16399 return (0, import_lib3.$EVENT)(ctx, state2, "InsertIndent", InsertIndent$0);
16400}
16401var InsertSpace$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertSpace ""'), function($skip, $loc, $0, $1) {
16402 return { $loc, token: " " };
16403});
16404function InsertSpace(ctx, state2) {
16405 return (0, import_lib3.$EVENT)(ctx, state2, "InsertSpace", InsertSpace$0);
16406}
16407var InsertDot$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertDot ""'), function($skip, $loc, $0, $1) {
16408 return { $loc, token: "." };
16409});
16410function InsertDot(ctx, state2) {
16411 return (0, import_lib3.$EVENT)(ctx, state2, "InsertDot", InsertDot$0);
16412}
16413var InsertBreak$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertBreak ""'), function($skip, $loc, $0, $1) {
16414 return { $loc, token: ";break;" };
16415});
16416function InsertBreak(ctx, state2) {
16417 return (0, import_lib3.$EVENT)(ctx, state2, "InsertBreak", InsertBreak$0);
16418}
16419var InsertVar$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertVar ""'), function($skip, $loc, $0, $1) {
16420 return { $loc, token: "var " };
16421});
16422function InsertVar(ctx, state2) {
16423 return (0, import_lib3.$EVENT)(ctx, state2, "InsertVar", InsertVar$0);
16424}
16425var InsertType$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'InsertType ""'), function($skip, $loc, $0, $1) {
16426 return { $loc, token: "type " };
16427});
16428function InsertType(ctx, state2) {
16429 return (0, import_lib3.$EVENT)(ctx, state2, "InsertType", InsertType$0);
16430}
16431var CoffeeBinaryExistentialEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeBinaryExistentialEnabled ""'), function($skip, $loc, $0, $1) {
16432 if (config.coffeeBinaryExistential)
16433 return;
16434 return $skip;
16435});
16436function CoffeeBinaryExistentialEnabled(ctx, state2) {
16437 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeBinaryExistentialEnabled", CoffeeBinaryExistentialEnabled$0);
16438}
16439var CoffeeBooleansEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeBooleansEnabled ""'), function($skip, $loc, $0, $1) {
16440 if (config.coffeeBooleans)
16441 return;
16442 return $skip;
16443});
16444function CoffeeBooleansEnabled(ctx, state2) {
16445 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeBooleansEnabled", CoffeeBooleansEnabled$0);
16446}
16447var CoffeeClassesEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeClassesEnabled ""'), function($skip, $loc, $0, $1) {
16448 if (config.coffeeClasses)
16449 return;
16450 return $skip;
16451});
16452function CoffeeClassesEnabled(ctx, state2) {
16453 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeClassesEnabled", CoffeeClassesEnabled$0);
16454}
16455var CoffeeCommentEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeCommentEnabled ""'), function($skip, $loc, $0, $1) {
16456 if (config.coffeeComment)
16457 return;
16458 return $skip;
16459});
16460function CoffeeCommentEnabled(ctx, state2) {
16461 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeCommentEnabled", CoffeeCommentEnabled$0);
16462}
16463var CoffeeDoEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeDoEnabled ""'), function($skip, $loc, $0, $1) {
16464 if (config.coffeeDo)
16465 return;
16466 return $skip;
16467});
16468function CoffeeDoEnabled(ctx, state2) {
16469 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeDoEnabled", CoffeeDoEnabled$0);
16470}
16471var CoffeeForLoopsEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeForLoopsEnabled ""'), function($skip, $loc, $0, $1) {
16472 if (config.coffeeForLoops)
16473 return;
16474 return $skip;
16475});
16476function CoffeeForLoopsEnabled(ctx, state2) {
16477 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeForLoopsEnabled", CoffeeForLoopsEnabled$0);
16478}
16479var CoffeeInterpolationEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeInterpolationEnabled ""'), function($skip, $loc, $0, $1) {
16480 if (config.coffeeInterpolation)
16481 return;
16482 return $skip;
16483});
16484function CoffeeInterpolationEnabled(ctx, state2) {
16485 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeInterpolationEnabled", CoffeeInterpolationEnabled$0);
16486}
16487var CoffeeIsntEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeIsntEnabled ""'), function($skip, $loc, $0, $1) {
16488 if (config.coffeeIsnt)
16489 return;
16490 return $skip;
16491});
16492function CoffeeIsntEnabled(ctx, state2) {
16493 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeIsntEnabled", CoffeeIsntEnabled$0);
16494}
16495var CoffeeJSXEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeJSXEnabled ""'), function($skip, $loc, $0, $1) {
16496 if (config.coffeeJSX)
16497 return;
16498 return $skip;
16499});
16500function CoffeeJSXEnabled(ctx, state2) {
16501 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeJSXEnabled", CoffeeJSXEnabled$0);
16502}
16503var CoffeeLineContinuationEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeLineContinuationEnabled ""'), function($skip, $loc, $0, $1) {
16504 if (config.coffeeLineContinuation)
16505 return;
16506 return $skip;
16507});
16508function CoffeeLineContinuationEnabled(ctx, state2) {
16509 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeLineContinuationEnabled", CoffeeLineContinuationEnabled$0);
16510}
16511var CoffeeNotEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeNotEnabled ""'), function($skip, $loc, $0, $1) {
16512 if (config.coffeeNot)
16513 return;
16514 return $skip;
16515});
16516function CoffeeNotEnabled(ctx, state2) {
16517 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeNotEnabled", CoffeeNotEnabled$0);
16518}
16519var CoffeeOfEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeeOfEnabled ""'), function($skip, $loc, $0, $1) {
16520 if (config.coffeeOf)
16521 return;
16522 return $skip;
16523});
16524function CoffeeOfEnabled(ctx, state2) {
16525 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeeOfEnabled", CoffeeOfEnabled$0);
16526}
16527var CoffeePrototypeEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'CoffeePrototypeEnabled ""'), function($skip, $loc, $0, $1) {
16528 if (config.coffeePrototype)
16529 return;
16530 return $skip;
16531});
16532function CoffeePrototypeEnabled(ctx, state2) {
16533 return (0, import_lib3.$EVENT)(ctx, state2, "CoffeePrototypeEnabled", CoffeePrototypeEnabled$0);
16534}
16535var ObjectIsEnabled$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'ObjectIsEnabled ""'), function($skip, $loc, $0, $1) {
16536 if (config.objectIs)
16537 return;
16538 return $skip;
16539});
16540function ObjectIsEnabled(ctx, state2) {
16541 return (0, import_lib3.$EVENT)(ctx, state2, "ObjectIsEnabled", ObjectIsEnabled$0);
16542}
16543var Reset$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'Reset ""'), function($skip, $loc, $0, $1) {
16544 state.indentLevels = [{
16545 level: 0,
16546 token: ""
16547 }];
16548 state.forbidClassImplicitCall = [false];
16549 state.forbidIndentedApplication = [false];
16550 state.forbidBracedApplication = [false];
16551 state.forbidTrailingMemberProperty = [false];
16552 state.forbidNewlineBinaryOp = [false];
16553 state.JSXTagStack = [void 0];
16554 state.operators = /* @__PURE__ */ new Map();
16555 state.helperRefs = {};
16556 state.prelude = [];
16557 config = {
16558 autoConst: false,
16559 autoVar: false,
16560 autoLet: false,
16561 coffeeBinaryExistential: false,
16562 coffeeBooleans: false,
16563 coffeeClasses: false,
16564 coffeeComment: false,
16565 coffeeDo: false,
16566 coffeeEq: false,
16567 coffeeForLoops: false,
16568 coffeeInterpolation: false,
16569 coffeeIsnt: false,
16570 coffeeJSX: false,
16571 coffeeLineContinuation: false,
16572 coffeeNot: false,
16573 coffeeOf: false,
16574 coffeePrototype: false,
16575 defaultElement: "div",
16576 implicitReturns: true,
16577 objectIs: false,
16578 react: false,
16579 solid: false,
16580 client: false,
16581 // default behavior: client only
16582 rewriteTsImports: true,
16583 server: false,
16584 tab: void 0,
16585 // default behavior = same as space
16586 verbose: false
16587 };
16588 Object.defineProperty(config, "deno", {
16589 set(b) {
16590 config.rewriteTsImports = !b;
16591 }
16592 });
16593 config.deno = typeof Deno !== "undefined";
16594 Object.defineProperty(config, "coffeeCompat", {
16595 set(b) {
16596 for (const option of [
16597 "autoVar",
16598 "coffeeBinaryExistential",
16599 "coffeeBooleans",
16600 "coffeeClasses",
16601 "coffeeComment",
16602 "coffeeDo",
16603 "coffeeEq",
16604 "coffeeForLoops",
16605 "coffeeInterpolation",
16606 "coffeeIsnt",
16607 "coffeeJSX",
16608 "coffeeLineContinuation",
16609 "coffeeNot",
16610 "coffeeOf",
16611 "coffeePrototype"
16612 ]) {
16613 config[option] = b;
16614 }
16615 if (b) {
16616 config.objectIs = false;
16617 }
16618 }
16619 });
16620 Object.assign(config, initialConfig);
16621 return {
16622 type: "ParserMeta",
16623 children: [],
16624 getStateKey() {
16625 const stateInt = state.currentIndent.level % 256 << 8 | state.classImplicitCallForbidden << 7 | state.indentedApplicationForbidden << 6 | state.bracedApplicationForbidden << 5 | state.trailingMemberPropertyForbidden << 4 | state.newlineBinaryOpForbidden << 3 | // This is slightly different than the rest of the state,
16626 // since it is affected by the directive prologue and may be hit
16627 // by the EOL rule early in the parse. Later if we wanted to
16628 // allow block scoping of the compat directives we would need to
16629 // add them all here.
16630 config.coffeeComment << 2;
16631 return [stateInt, state.currentJSXTag];
16632 }
16633 };
16634});
16635function Reset(ctx, state2) {
16636 return (0, import_lib3.$EVENT)(ctx, state2, "Reset", Reset$0);
16637}
16638var Init$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(Shebang), Prologue), function($skip, $loc, $0, $1, $2) {
16639 var directives = $2;
16640 directives.forEach((directive) => {
16641 if (directive.type === "CivetPrologue") {
16642 Object.assign(config, directive.config);
16643 }
16644 });
16645 return $0;
16646});
16647function Init(ctx, state2) {
16648 return (0, import_lib3.$EVENT)(ctx, state2, "Init", Init$0);
16649}
16650var Prologue$0 = (0, import_lib3.$Q)((0, import_lib3.$C)(TripleSlashDirective, (0, import_lib3.$S)((0, import_lib3.$C)(JSSingleLineComment, JSMultiLineComment), EOS), DirectivePrologue));
16651function Prologue(ctx, state2) {
16652 return (0, import_lib3.$EVENT)(ctx, state2, "Prologue", Prologue$0);
16653}
16654var ProloguePrefix$0 = (0, import_lib3.$S)(Prologue, (0, import_lib3.$R$0)((0, import_lib3.$EXPECT)($R94, "ProloguePrefix /[^]*/")));
16655function ProloguePrefix(ctx, state2) {
16656 return (0, import_lib3.$EVENT)(ctx, state2, "ProloguePrefix", ProloguePrefix$0);
16657}
16658var Indent$0 = (0, import_lib3.$TR)((0, import_lib3.$EXPECT)($R88, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16659 const level = getIndentLevel($0, config.tab);
16660 return {
16661 $loc,
16662 token: $0,
16663 level
16664 };
16665});
16666function Indent(ctx, state2) {
16667 return (0, import_lib3.$EVENT)(ctx, state2, "Indent", Indent$0);
16668}
16669var TrackIndented$0 = (0, import_lib3.$TV)(Indent, function($skip, $loc, $0, $1) {
16670 var indent = $0;
16671 const { level } = indent;
16672 if (level <= state.currentIndent.level) {
16673 return $skip;
16674 }
16675 if (config.verbose) {
16676 console.log("pushing indent", indent);
16677 }
16678 state.indentLevels.push(indent);
16679 return $1;
16680});
16681function TrackIndented(ctx, state2) {
16682 return (0, import_lib3.$EVENT)(ctx, state2, "TrackIndented", TrackIndented$0);
16683}
16684var PushIndent$0 = (0, import_lib3.$Y)((0, import_lib3.$S)(EOS, TrackIndented));
16685function PushIndent(ctx, state2) {
16686 return (0, import_lib3.$EVENT)(ctx, state2, "PushIndent", PushIndent$0);
16687}
16688var PopIndent$0 = (0, import_lib3.$TV)((0, import_lib3.$EXPECT)($L0, 'PopIndent ""'), function($skip, $loc, $0, $1) {
16689 if (config.verbose) {
16690 console.log("popping indent", state.indentLevels[state.indentLevels.length - 1], "->", state.indentLevels[state.indentLevels.length - 2]);
16691 }
16692 state.indentLevels.pop();
16693});
16694function PopIndent(ctx, state2) {
16695 return (0, import_lib3.$EVENT)(ctx, state2, "PopIndent", PopIndent$0);
16696}
16697var Nested$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(EOS, Indent), function($skip, $loc, $0, $1, $2) {
16698 var indent = $2;
16699 if (indent.level === state.currentIndent.level)
16700 return $0;
16701 if (config.verbose) {
16702 console.log(`failing Nested: ${indent.level} does not match current indent level ${state.currentIndent.level}`);
16703 }
16704 return $skip;
16705});
16706function Nested(ctx, state2) {
16707 return (0, import_lib3.$EVENT)(ctx, state2, "Nested", Nested$0);
16708}
16709var IndentedFurther$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(EOS, Indent), function($skip, $loc, $0, $1, $2) {
16710 var indent = $2;
16711 if (indent.level > state.currentIndent.level)
16712 return $0;
16713 return $skip;
16714});
16715function IndentedFurther(ctx, state2) {
16716 return (0, import_lib3.$EVENT)(ctx, state2, "IndentedFurther", IndentedFurther$0);
16717}
16718var IndentedAtLeast$0 = (0, import_lib3.$TS)((0, import_lib3.$S)(EOS, Indent), function($skip, $loc, $0, $1, $2) {
16719 var indent = $2;
16720 if (indent.level >= state.currentIndent.level)
16721 return $0;
16722 return $skip;
16723});
16724function IndentedAtLeast(ctx, state2) {
16725 return (0, import_lib3.$EVENT)(ctx, state2, "IndentedAtLeast", IndentedAtLeast$0);
16726}
16727var NotDedented$0 = (0, import_lib3.$TS)((0, import_lib3.$S)((0, import_lib3.$E)(IndentedAtLeast), (0, import_lib3.$E)(_)), function($skip, $loc, $0, $1, $2) {
16728 const ws = [];
16729 if ($1)
16730 ws.push(...$1);
16731 if ($2)
16732 ws.push(...$2);
16733 return ws.flat(Infinity).filter(Boolean);
16734});
16735function NotDedented(ctx, state2) {
16736 return (0, import_lib3.$EVENT)(ctx, state2, "NotDedented", NotDedented$0);
16737}
16738var Dedented$0 = (0, import_lib3.$T)((0, import_lib3.$S)((0, import_lib3.$N)(IndentedAtLeast), EOS), function(value) {
16739 return value[1];
16740});
16741function Dedented(ctx, state2) {
16742 return (0, import_lib3.$EVENT)(ctx, state2, "Dedented", Dedented$0);
16743}
16744var parser = function() {
16745 const { fail, validate, reset } = (0, import_lib3.Validator)();
16746 let ctx = { expectation: "", fail };
16747 return {
16748 parse: (input, options = {}) => {
16749 if (typeof input !== "string")
16750 throw new Error("Input must be a string");
16751 const parser2 = options.startRule != null ? grammar[options.startRule] : Object.values(grammar)[0];
16752 if (!parser2)
16753 throw new Error(`Could not find rule with name '${options.startRule}'`);
16754 const filename2 = options.filename || "<anonymous>";
16755 reset();
16756 Object.assign(ctx, { ...options.events, tokenize: options.tokenize });
16757 return validate(input, parser2(ctx, {
16758 input,
16759 pos: 0
16760 }), {
16761 filename: filename2
16762 });
16763 }
16764 };
16765}();
16766var { parse } = parser;
16767var filename;
16768var initialConfig;
16769var config;
16770var sync;
16771var state = {};
16772var getState = () => state;
16773var getConfig = () => config;
16774var getInitialConfig = () => initialConfig;
16775var getFilename = () => filename;
16776var getSync = () => sync;
16777Object.defineProperties(state, {
16778 currentIndent: {
16779 get() {
16780 const { indentLevels: l } = state;
16781 return l[l.length - 1];
16782 }
16783 },
16784 classImplicitCallForbidden: {
16785 get() {
16786 const { forbidClassImplicitCall: s } = state;
16787 return s[s.length - 1];
16788 }
16789 },
16790 indentedApplicationForbidden: {
16791 get() {
16792 const { forbidIndentedApplication: s } = state;
16793 return s[s.length - 1];
16794 }
16795 },
16796 bracedApplicationForbidden: {
16797 get() {
16798 const { forbidBracedApplication: s } = state;
16799 return s[s.length - 1];
16800 }
16801 },
16802 trailingMemberPropertyForbidden: {
16803 get() {
16804 const { forbidTrailingMemberProperty: s } = state;
16805 return s[s.length - 1];
16806 }
16807 },
16808 newlineBinaryOpForbidden: {
16809 get() {
16810 const { forbidNewlineBinaryOp: s } = state;
16811 return s[s.length - 1];
16812 }
16813 },
16814 currentJSXTag: {
16815 get() {
16816 const { JSXTagStack: s } = state;
16817 return s[s.length - 1];
16818 }
16819 }
16820});
16821function parseProgram(input, options) {
16822 filename = options?.filename;
16823 initialConfig = options?.parseOptions;
16824 sync = options?.sync;
16825 const root = parse(input, options);
16826 if (sync) {
16827 filename = initialConfig = sync = null;
16828 return root;
16829 } else {
16830 return processProgramAsync(root).then(() => {
16831 filename = initialConfig = sync = null;
16832 return root;
16833 });
16834 }
16835}
16836
16837// source/sourcemap.civet
16838var sourcemap_exports = {};
16839__export(sourcemap_exports, {
16840 SourceMap: () => SourceMap,
16841 base64Encode: () => base64Encode,
16842 locationTable: () => locationTable,
16843 lookupLineColumn: () => lookupLineColumn
16844});
16845var locationTable = function(input) {
16846 const linesRe = /([^\r\n]*)(\r\n|\r|\n|$)/y;
16847 const lines = [];
16848 let line = 0;
16849 let pos = 0;
16850 let ref;
16851 while (ref = linesRe.exec(input)) {
16852 const result = ref;
16853 pos += result[0].length;
16854 lines[line++] = pos;
16855 if (pos === input.length) {
16856 break;
16857 }
16858 }
16859 return lines;
16860};
16861var lookupLineColumn = function(table, pos) {
16862 let l = 0;
16863 let prevEnd = 0;
16864 while (table[l] <= pos) {
16865 prevEnd = table[l++];
16866 }
16867 return [l, pos - prevEnd];
16868};
16869var SourceMap = function(sourceString) {
16870 const srcTable = locationTable(sourceString);
16871 const sm = {
16872 lines: [[]],
16873 line: 0,
16874 colOffset: 0,
16875 // relative to previous entry
16876 srcLine: 0,
16877 srcColumn: 0,
16878 srcOffset: 0,
16879 srcTable
16880 };
16881 const EOL2 = /\r?\n|\r/;
16882 return {
16883 data: sm,
16884 source: function() {
16885 return sourceString;
16886 },
16887 renderMappings: function() {
16888 let lastSourceLine = 0;
16889 let lastSourceColumn = 0;
16890 return sm.lines.map((line) => {
16891 return line.map((entry) => {
16892 if (entry.length === 4) {
16893 let [colDelta, sourceFileIndex, srcLine, srcCol] = entry;
16894 const lineDelta = srcLine - lastSourceLine;
16895 colDelta = srcCol - lastSourceColumn;
16896 lastSourceLine = srcLine;
16897 lastSourceColumn = srcCol;
16898 return `${encodeVlq(entry[0])}${encodeVlq(sourceFileIndex)}${encodeVlq(lineDelta)}${encodeVlq(colDelta)}`;
16899 } else {
16900 return encodeVlq(entry[0]);
16901 }
16902 }).join(",");
16903 }).join(";");
16904 },
16905 json: function(srcFileName, outFileName) {
16906 return {
16907 version: 3,
16908 file: outFileName,
16909 sources: [srcFileName],
16910 mappings: this.renderMappings(),
16911 names: [],
16912 sourcesContent: [sourceString],
16913 toString: function() {
16914 return JSON.stringify(this);
16915 }
16916 };
16917 },
16918 updateSourceMap: function(outputStr, inputPos, colOffset = 0) {
16919 const outLines = outputStr.split(EOL2);
16920 let srcLine, srcCol;
16921 if (inputPos != null) {
16922 [srcLine, srcCol] = lookupLineColumn(srcTable, inputPos);
16923 srcCol += colOffset;
16924 sm.srcLine = srcLine;
16925 sm.srcColumn = srcCol;
16926 sm.srcOffset = inputPos + outputStr.length;
16927 }
16928 for (let i1 = 0, len3 = outLines.length; i1 < len3; i1++) {
16929 const i = i1;
16930 const line = outLines[i1];
16931 if (i > 0) {
16932 sm.line++;
16933 sm.srcLine++;
16934 sm.colOffset = 0;
16935 sm.lines[sm.line] = [];
16936 sm.srcColumn = srcCol = colOffset;
16937 }
16938 const l = sm.colOffset;
16939 sm.colOffset = line.length;
16940 sm.srcColumn += line.length;
16941 if (inputPos != null) {
16942 sm.lines[sm.line].push([l, 0, srcLine + i, srcCol]);
16943 } else if (l != 0) {
16944 sm.lines[sm.line].push([l]);
16945 }
16946 }
16947 return;
16948 }
16949 };
16950};
16951var smRegexp = /\n\/\/# sourceMappingURL=data:application\/json;charset=utf-8;base64,([+a-zA-Z0-9\/]*=?=?)$/;
16952var remap = function(codeWithSourceMap, upstreamMap, sourcePath, targetPath) {
16953 let sourceMapText;
16954 const codeWithoutSourceMap = codeWithSourceMap.replace(smRegexp, (match, sm) => {
16955 sourceMapText = sm;
16956 return "";
16957 });
16958 if (sourceMapText) {
16959 const parsed = parseWithLines(sourceMapText);
16960 const composedLines = composeLines(upstreamMap.data.lines, parsed.lines);
16961 upstreamMap.data.lines = composedLines;
16962 }
16963 const remappedSourceMapJSON = upstreamMap.json(sourcePath, targetPath);
16964 const newSourceMap = `${"sourceMapping"}URL=data:application/json;charset=utf-8;base64,${base64Encode(JSON.stringify(remappedSourceMapJSON))}`;
16965 const remappedCodeWithSourceMap = `${codeWithoutSourceMap}
16966//# ${newSourceMap}`;
16967 return remappedCodeWithSourceMap;
16968};
16969var composeLines = function(upstreamMapping, lines) {
16970 return lines.map((line) => {
16971 return line.map((entry) => {
16972 if (entry.length === 1) {
16973 return entry;
16974 }
16975 const [colDelta, sourceFileIndex, srcLine, srcCol] = entry;
16976 const srcPos = remapPosition([srcLine, srcCol], upstreamMapping);
16977 if (!srcPos) {
16978 return [entry[0]];
16979 }
16980 const [upstreamLine, upstreamCol] = srcPos;
16981 if (entry.length === 4) {
16982 return [colDelta, sourceFileIndex, upstreamLine, upstreamCol];
16983 }
16984 return [colDelta, sourceFileIndex, upstreamLine, upstreamCol, entry[4]];
16985 });
16986 });
16987};
16988var parseWithLines = function(base64encodedJSONstr) {
16989 const json = JSON.parse(Buffer.from(base64encodedJSONstr, "base64").toString("utf8"));
16990 let sourceLine = 0;
16991 let sourceColumn = 0;
16992 const lines = json.mappings.split(";").map((line) => {
16993 if (line.length === 0) {
16994 return [];
16995 }
16996 return line.split(",").map((entry) => {
16997 const result = decodeVLQ(entry);
16998 switch (result.length) {
16999 case 1: {
17000 return [result[0]];
17001 }
17002 case 4: {
17003 return [result[0], result[1], sourceLine += result[2], sourceColumn += result[3]];
17004 }
17005 case 5: {
17006 return [result[0], result[1], sourceLine += result[2], sourceColumn += result[3], result[4]];
17007 }
17008 default: {
17009 throw new Error("Unknown source map entry", result);
17010 }
17011 }
17012 });
17013 });
17014 json.lines = lines;
17015 return json;
17016};
17017Object.assign(SourceMap, { remap, parseWithLines, composeLines });
17018var VLQ_SHIFT = 5;
17019var VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT;
17020var VLQ_VALUE_MASK = VLQ_CONTINUATION_BIT - 1;
17021var encodeVlq = function(value) {
17022 let answer = "";
17023 let ref1;
17024 if (value < 0)
17025 ref1 = 1;
17026 else
17027 ref1 = 0;
17028 const signBit = ref1;
17029 let valueToEncode = (Math.abs(value) << 1) + signBit;
17030 while (valueToEncode || !answer) {
17031 let nextChunk = valueToEncode & VLQ_VALUE_MASK;
17032 valueToEncode = valueToEncode >> VLQ_SHIFT;
17033 if (valueToEncode) {
17034 nextChunk |= VLQ_CONTINUATION_BIT;
17035 }
17036 answer += encodeBase64(nextChunk);
17037 }
17038 return answer;
17039};
17040var BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
17041var encodeBase64 = function(value) {
17042 return BASE64_CHARS[value] || (() => {
17043 throw new Error("Cannot Base64 encode value: ${value}");
17044 })();
17045};
17046var base64Encode = function(src) {
17047 return Buffer.from(src).toString("base64");
17048};
17049var vlqTable = new Uint8Array(128);
17050var vlqChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
17051{
17052 let i = 0;
17053 let l = vlqTable.length;
17054 while (i < l) {
17055 vlqTable[i] = 255;
17056 i++;
17057 }
17058 i = 0;
17059 l = vlqChars.length;
17060 while (i < l) {
17061 vlqTable[vlqChars.charCodeAt(i)] = i;
17062 i++;
17063 }
17064}
17065var decodeError = function(message) {
17066 throw new Error(message);
17067};
17068var decodeVLQ = function(mapping) {
17069 let i = 0;
17070 let l = mapping.length;
17071 let result = [];
17072 while (i < l) {
17073 let shift = 0;
17074 let vlq = 0;
17075 let v = 0;
17076 while (true) {
17077 if (i >= l) {
17078 decodeError("Unexpected early end of mapping data");
17079 }
17080 const c = mapping.charCodeAt(i);
17081 if ((c & 127) != c) {
17082 decodeError("Invalid mapping character: ${JSON.stringify(String.fromCharCode(c))}");
17083 }
17084 const index = vlqTable[c & 127];
17085 if (index === 255) {
17086 decodeError("Invalid mapping character: ${JSON.stringify(String.fromCharCode(c))}");
17087 }
17088 i++;
17089 vlq |= (index & 31) << shift;
17090 shift += 5;
17091 if ((index & 32) === 0) {
17092 break;
17093 }
17094 }
17095 if (vlq & 1) {
17096 v = -(vlq >> 1);
17097 } else {
17098 v = vlq >> 1;
17099 }
17100 result.push(v);
17101 }
17102 return result;
17103};
17104var remapPosition = function(position, sourcemapLines) {
17105 const [line, character] = position;
17106 const textLine = sourcemapLines[line];
17107 if (!textLine?.length) {
17108 return void 0;
17109 }
17110 let i = 0;
17111 let p = 0;
17112 const l = textLine.length;
17113 let lastMapping = void 0;
17114 let lastMappingPosition = 0;
17115 while (i < l) {
17116 const mapping = textLine[i];
17117 p += mapping[0];
17118 if (mapping.length === 4) {
17119 lastMapping = mapping;
17120 lastMappingPosition = p;
17121 }
17122 if (p >= character) {
17123 break;
17124 }
17125 i++;
17126 }
17127 if (character - lastMappingPosition != 0) {
17128 return void 0;
17129 }
17130 if (lastMapping) {
17131 return [lastMapping[2], lastMapping[3]];
17132 } else {
17133 return void 0;
17134 }
17135};
17136
17137// source/state-cache.civet
17138var StateCache = class {
17139 cache = /* @__PURE__ */ new Map();
17140 get(key) {
17141 return this.cache.get(key[0])?.get(key[1])?.get(key[2])?.get(key[3]);
17142 }
17143 /**
17144 * Check if this multi-layer cache has the given key.
17145 * Since the intermediate layers are always other maps we only need to check the last layer.
17146 */
17147 has(key) {
17148 return !!this.cache.get(key[0])?.get(key[1])?.get(key[2])?.has(key[3]);
17149 }
17150 set(key, value) {
17151 const cache0 = this.cache;
17152 let cache1;
17153 if (!cache0.has(key[0])) {
17154 cache1 = /* @__PURE__ */ new Map();
17155 this.cache.set(key[0], cache1);
17156 } else {
17157 cache1 = cache0.get(key[0]);
17158 }
17159 let cache2;
17160 if (!cache1?.has(key[1])) {
17161 cache2 = /* @__PURE__ */ new Map();
17162 cache1.set(key[1], cache2);
17163 } else {
17164 cache2 = cache1.get(key[1]);
17165 }
17166 let cache3;
17167 if (!cache2.has(key[2])) {
17168 cache3 = /* @__PURE__ */ new Map();
17169 cache2.set(key[2], cache3);
17170 } else {
17171 cache3 = cache2.get(key[2]);
17172 }
17173 cache3.set(key[3], value);
17174 }
17175};
17176
17177// source/main.civet
17178var { SourceMap: SourceMap2 } = sourcemap_exports;
17179var ParseErrors = class extends Error {
17180 name = "ParseErrors";
17181 errors;
17182 constructor(errors) {
17183 const message = errors.map(($) => $.message).join("\n");
17184 super(errors.map(($1) => $1.message).join("\n"));
17185 this.message = message;
17186 this.errors = errors;
17187 }
17188};
17189var uncacheable = /* @__PURE__ */ new Set([
17190 // Meta
17191 "DebugHere",
17192 "Init",
17193 "Program",
17194 "Reset",
17195 // Indentation
17196 // We need to no-cache the state modifying rules up to the point where they
17197 // balance within a parent so PushIndent needs to be marked no-cache even
17198 // though it only calls TrackIndented which does the actual work.
17199 "PushIndent",
17200 "PopIndent",
17201 "TrackIndented",
17202 // JSX
17203 "PushJSXOpeningElement",
17204 "PushJSXOpeningFragment",
17205 "PopJSXStack",
17206 // State
17207 "AllowAll",
17208 "AllowClassImplicitCall",
17209 "AllowBracedApplication",
17210 "AllowIndentedApplication",
17211 "AllowMultiLineImplicitObjectLiteral",
17212 "AllowNewlineBinaryOp",
17213 "AllowTrailingMemberProperty",
17214 "ForbidClassImplicitCall",
17215 "ForbidBracedApplication",
17216 "ForbidIndentedApplication",
17217 "ForbidMultiLineImplicitObjectLiteral",
17218 "ForbidNewlineBinaryOp",
17219 "ForbidTrailingMemberProperty",
17220 "RestoreAll",
17221 "RestoreClassImplicitCall",
17222 "RestoreMultiLineImplicitObjectLiteral",
17223 "RestoreBracedApplication",
17224 "RestoreIndentedApplication",
17225 "RestoreTrailingMemberProperty",
17226 "RestoreNewlineBinaryOp"
17227]);
17228function compile(src, options) {
17229 if (!options) {
17230 options = {};
17231 } else {
17232 options = { ...options };
17233 }
17234 options.parseOptions = { ...options.parseOptions };
17235 const filename2 = options.filename || "unknown";
17236 if (filename2.endsWith(".coffee") && !/^(#![^\r\n]*(\r\n|\n|\r))?\s*['"]civet/.test(src)) {
17237 options.parseOptions.coffeeCompat = true;
17238 }
17239 const { hits, trace, noCache } = options;
17240 let events;
17241 if (!noCache) {
17242 events = makeCache({
17243 hits: !!hits,
17244 trace: !!trace
17245 });
17246 }
17247 let ast;
17248 try {
17249 ast = parseProgram(src, {
17250 parseOptions: options.parseOptions,
17251 sync: options.sync,
17252 filename: filename2,
17253 events
17254 });
17255 } finally {}
17256 const throwOnErrors = options.errors == null;
17257 function rest(ast2) {
17258 options = options;
17259 if (!(options.ast === "raw")) {
17260 ast2 = prune(ast2);
17261 }
17262 if (options.ast) {
17263 return ast2;
17264 }
17265 function checkErrors() {
17266 if (!throwOnErrors) {
17267 return;
17268 }
17269 options = options;
17270 if (options.errors?.length) {
17271 throw new ParseErrors(options.errors);
17272 }
17273 ;
17274 return;
17275 }
17276 if (options.sourceMap || options.inlineMap) {
17277 options.sourceMap = SourceMap2(src);
17278 const code = generate_default(ast2, options);
17279 checkErrors();
17280 if (options.inlineMap) {
17281 return SourceMap2.remap(code, options.sourceMap, filename2, filename2 + ".tsx");
17282 } else {
17283 return {
17284 code,
17285 sourceMap: options.sourceMap
17286 };
17287 }
17288 }
17289 const result = generate_default(ast2, options);
17290 if (options.errors?.length) {
17291 delete options.errors;
17292 options.sourceMap = SourceMap2(src);
17293 generate_default(ast2, options);
17294 checkErrors();
17295 }
17296 return result;
17297 }
17298 if (ast.then != null) {
17299 return ast.then(rest);
17300 } else {
17301 return rest(ast);
17302 }
17303}
17304var makeCache = function({ hits, trace } = {}) {
17305 const meta = {};
17306 let hitCount;
17307 if (hits) {
17308 hitCount = /* @__PURE__ */ new Map();
17309 meta.hits = hitCount;
17310 }
17311 let logs;
17312 if (trace) {
17313 logs = [];
17314 meta.logs = logs;
17315 }
17316 const stateCache = new StateCache();
17317 let getStateKey = null;
17318 const stack = [];
17319 const events = {
17320 meta,
17321 enter: function(ruleName, state2) {
17322 if (hits) {
17323 hitCount.set(ruleName, (hitCount.get(ruleName) || 0) + 1);
17324 }
17325 if (uncacheable.has(ruleName)) {
17326 return;
17327 }
17328 const [stateKey, tagKey] = getStateKey();
17329 const key = [tagKey, stateKey, state2.pos, ruleName];
17330 if (stateCache.has(key)) {
17331 if (trace) {
17332 logs.push("".padStart(stack.length * 2, " ") + ruleName + ":" + state2.pos + "\u{1F4B0}");
17333 }
17334 const result = stateCache.get(key);
17335 return {
17336 cache: result ? { ...result } : void 0
17337 };
17338 }
17339 if (trace) {
17340 logs.push("".padStart(stack.length * 2, " ") + ruleName + ":" + state2.pos + "\u2192");
17341 stack.push(ruleName);
17342 }
17343 return;
17344 },
17345 exit: function(ruleName, state2, result) {
17346 if (ruleName === "Reset") {
17347 ({ getStateKey } = result.value);
17348 }
17349 if (!uncacheable.has(ruleName)) {
17350 const [stateKey, tagKey] = getStateKey();
17351 const key = [tagKey, stateKey, state2.pos, ruleName];
17352 stateCache.set(key, result);
17353 }
17354 if (getConfig().verbose && result) {
17355 console.log(`Parsed ${JSON.stringify(state2.input.slice(state2.pos, result.pos))} [pos ${state2.pos}-${result.pos}] as ${ruleName}`);
17356 }
17357 if (trace) {
17358 stack.pop();
17359 logs.push("".padStart(stack.length * 2, " ") + ruleName + ":" + state2.pos + " " + (result ? "\u2705" : "\u274C"));
17360 }
17361 return;
17362 }
17363 };
17364 return events;
17365};
17366var isCompileError = function(err) {
17367 return err instanceof import_lib3.ParseError || err instanceof ParseErrors;
17368};
17369var main_default = { parse, parseProgram, ParseError: import_lib3.ParseError, ParseErrors, generate: generate_default, sourcemap: sourcemap_exports, SourceMap: SourceMap2, compile, isCompileError };
17370
17371globalThis.compile = (...args) => {
17372 let compiled = compile(...args);
17373 if(typeof compiled === 'string') {
17374 return compiled;
17375 }
17376 return compiled;
17377};
17378
17379})();
17380 "#,
17381 )
17382}